
void __start()
__start: scope:[__start]  from
  [0] phi()
  to:__start::__init1
__start::__init1: scope:[__start]  from __start
  [1] sin_idx = 0
  [2] scroll_soft = 7
  [3] scroll_ptr = SCROLL_TEXT
  [4] greet_zoomx = 0
  [5] greet_idx = 0
  to:__start::@1
__start::@1: scope:[__start]  from __start::__init1
  [6] phi()
  [7] call main
  to:__start::@return
__start::@return: scope:[__start]  from __start::@1
  [8] return 
  to:@return

__interrupt(hardware_clobber) void irq()
irq: scope:[irq]  from
  [9] *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_RASLINE0) = *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_RASLINE0) | $80
  [10] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS) = IRQ_RASTER
  [11] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2) = 0
  [12] sin_idx = ++ sin_idx
  [13] irq::wobble_idx#0 = sin_idx
  to:irq::@2
irq::@2: scope:[irq]  from irq irq::@10
  [14] irq::wobble_idx#10 = phi( irq/irq::wobble_idx#0, irq::@10/irq::wobble_idx#7 )
  [14] irq::line#10 = phi( irq/0, irq::@10/irq::line#1 )
  [15] if(irq::line#10!=RASTER_LINES) goto irq::@3
  to:irq::@4
irq::@4: scope:[irq]  from irq::@2
  [16] phi()
  [17] callexecute *songPlay 
  to:irq::@1
irq::@1: scope:[irq]  from irq::@4
  [18] irq::sin_col#0 = sin_idx
  to:irq::@17
irq::@17: scope:[irq]  from irq::@1 irq::@18
  [19] irq::sin_col#2 = phi( irq::@1/irq::sin_col#0, irq::@18/irq::sin_col#1 )
  [19] irq::i#2 = phi( irq::@1/0, irq::@18/irq::i#1 )
  [20] if(irq::i#2<$28) goto irq::@18
  to:irq::@19
irq::@19: scope:[irq]  from irq::@17 irq::@20
  [21] irq::l#2 = phi( irq::@17/0, irq::@20/irq::l#1 )
  [22] if(irq::l#2!=RASTER_LINES) goto irq::@20
  to:irq::@21
irq::@21: scope:[irq]  from irq::@19
  [23] irq::sin_bar#0 = sin_idx
  to:irq::@22
irq::@22: scope:[irq]  from irq::@21 irq::@28
  [24] irq::sin_bar#2 = phi( irq::@21/irq::sin_bar#0, irq::@28/irq::sin_bar#1 )
  [24] irq::barcnt#2 = phi( irq::@21/0, irq::@28/irq::barcnt#1 )
  [25] if(irq::barcnt#2<$10) goto irq::@23
  to:irq::@29
irq::@29: scope:[irq]  from irq::@22 irq::@30
  [26] irq::i3#2 = phi( irq::@22/0, irq::@30/irq::i3#1 )
  [27] if(irq::i3#2<$13) goto irq::@30
  to:irq::@31
irq::@31: scope:[irq]  from irq::@29
  [28] irq::greet_offset#0 = greet_idx << 4
  to:irq::@32
irq::@32: scope:[irq]  from irq::@31 irq::@33
  [29] irq::greet_offset#2 = phi( irq::@31/irq::greet_offset#0, irq::@33/irq::greet_offset#1 )
  [29] irq::i4#2 = phi( irq::@31/0, irq::@33/irq::i4#1 )
  [30] if(irq::i4#2<$10) goto irq::@33
  to:irq::@34
irq::@34: scope:[irq]  from irq::@32
  [31] scroll_soft = -- scroll_soft
  [32] if(scroll_soft!=$ff) goto irq::@return
  to:irq::@35
irq::@35: scope:[irq]  from irq::@34
  [33] scroll_soft = 7
  to:irq::@36
irq::@36: scope:[irq]  from irq::@35 irq::@37
  [34] irq::i5#2 = phi( irq::@35/0, irq::@37/irq::i5#1 )
  [35] if(irq::i5#2<$27) goto irq::@37
  to:irq::@38
irq::@38: scope:[irq]  from irq::@36
  [36] irq::nxt#0 = *scroll_ptr
  [37] scroll_ptr = ++ scroll_ptr
  [38] if(irq::nxt#0!=0) goto irq::@40
  to:irq::@39
irq::@39: scope:[irq]  from irq::@38
  [39] scroll_ptr = SCROLL_TEXT
  [40] irq::nxt#1 = *scroll_ptr
  to:irq::@40
irq::@40: scope:[irq]  from irq::@38 irq::@39
  [41] irq::nxt#2 = phi( irq::@38/irq::nxt#0, irq::@39/irq::nxt#1 )
  [42] irq::$33 = irq::nxt#2 & $bf
  [43] *(DEFAULT_SCREEN+SCROLL_ROW*$28+$27) = irq::$33
  to:irq::@return
irq::@return: scope:[irq]  from irq::@34 irq::@40
  [44] return 
  to:@return
irq::@37: scope:[irq]  from irq::@36
  [45] (DEFAULT_SCREEN+SCROLL_ROW*$28)[irq::i5#2] = (DEFAULT_SCREEN+SCROLL_ROW*$28+1)[irq::i5#2]
  [46] irq::i5#1 = ++ irq::i5#2
  to:irq::@36
irq::@33: scope:[irq]  from irq::@32
  [47] irq::$29 = GREETING[irq::greet_offset#2] & $bf
  [48] (DEFAULT_SCREEN+GREET_ROW*$28+$d)[irq::i4#2] = irq::$29
  [49] irq::greet_offset#1 = ++ irq::greet_offset#2
  [50] irq::i4#1 = ++ irq::i4#2
  to:irq::@32
irq::@30: scope:[irq]  from irq::@29
  [51] irq::$26 = (rasters+SCROLL_Y)[irq::i3#2] >> 1
  [52] irq::$27 = irq::$26 & 7
  [53] (rasters+SCROLL_Y)[irq::i3#2] = irq::$27
  [54] irq::i3#1 = ++ irq::i3#2
  to:irq::@29
irq::@23: scope:[irq]  from irq::@22
  [55] irq::idx#0 = SINE[irq::sin_bar#2]
  [56] irq::barcol#0 = irq::barcnt#2 << 4
  to:irq::@24
irq::@24: scope:[irq]  from irq::@23 irq::@25
  [57] irq::idx#3 = phi( irq::@23/irq::idx#0, irq::@25/irq::idx#1 )
  [57] irq::barcol#3 = phi( irq::@23/irq::barcol#0, irq::@25/irq::barcol#1 )
  [57] irq::i1#2 = phi( irq::@23/0, irq::@25/irq::i1#1 )
  [58] if(irq::i1#2<$10) goto irq::@25
  to:irq::@26
irq::@26: scope:[irq]  from irq::@24 irq::@27
  [59] irq::idx#4 = phi( irq::@24/irq::idx#3, irq::@27/irq::idx#2 )
  [59] irq::barcol#4 = phi( irq::@24/irq::barcol#3, irq::@27/irq::barcol#2 )
  [59] irq::i2#2 = phi( irq::@24/0, irq::@27/irq::i2#1 )
  [60] if(irq::i2#2<$f) goto irq::@27
  to:irq::@28
irq::@28: scope:[irq]  from irq::@26
  [61] irq::sin_bar#1 = irq::sin_bar#2 + $a
  [62] irq::barcnt#1 = ++ irq::barcnt#2
  to:irq::@22
irq::@27: scope:[irq]  from irq::@26
  [63] irq::barcol#2 = -- irq::barcol#4
  [64] rasters[irq::idx#4] = irq::barcol#2
  [65] irq::idx#2 = ++ irq::idx#4
  [66] irq::i2#1 = ++ irq::i2#2
  to:irq::@26
irq::@25: scope:[irq]  from irq::@24
  [67] rasters[irq::idx#3] = irq::barcol#3
  [68] irq::idx#1 = ++ irq::idx#3
  [69] irq::barcol#1 = ++ irq::barcol#3
  [70] irq::i1#1 = ++ irq::i1#2
  to:irq::@24
irq::@20: scope:[irq]  from irq::@19
  [71] rasters[irq::l#2] = 0
  [72] irq::l#1 = ++ irq::l#2
  to:irq::@19
irq::@18: scope:[irq]  from irq::@17
  [73] irq::col1#0 = SINE[irq::sin_col#2] >> 2
  [74] (COLORRAM+GREET_ROW*$28)[irq::i#2] = irq::col1#0
  [75] irq::col1#1 = irq::col1#0 >> 1
  [76] (COLORRAM+LOGO_ROW*$28-1)[irq::i#2] = irq::col1#1
  [77] (COLORRAM+LOGO_ROW*$28+1*$28-2)[irq::i#2] = irq::col1#1
  [78] (COLORRAM+LOGO_ROW*$28+2*$28-3)[irq::i#2] = irq::col1#1
  [79] (COLORRAM+LOGO_ROW*$28+3*$28-4)[irq::i#2] = irq::col1#1
  [80] (COLORRAM+LOGO_ROW*$28+4*$28-5)[irq::i#2] = irq::col1#1
  [81] (COLORRAM+LOGO_ROW*$28+5*$28-6)[irq::i#2] = irq::col1#1
  [82] (COLORRAM+SCROLL_ROW*$28)[irq::i#2] = PAL_GREEN[irq::sin_col#2]
  [83] irq::sin_col#1 = ++ irq::sin_col#2
  [84] irq::i#1 = ++ irq::i#2
  to:irq::@17
irq::@3: scope:[irq]  from irq::@2
  [85] irq::col#0 = rasters[irq::line#10]
  [86] *((char *)VICIII+OFFSET_STRUCT_MOS4569_VICIII_BORDER_COLOR) = irq::col#0
  [87] *((char *)VICIII+OFFSET_STRUCT_MOS4569_VICIII_BG_COLOR) = irq::col#0
  [88] if(irq::line#10<SCROLL_Y) goto irq::@5
  to:irq::@11
irq::@11: scope:[irq]  from irq::@3
  [89] if(irq::line#10==SCROLL_Y) goto irq::@6
  to:irq::@12
irq::@12: scope:[irq]  from irq::@11
  [90] if(irq::line#10==SCROLL_Y+SCROLL_BLACKBARS) goto irq::@7
  to:irq::@13
irq::@13: scope:[irq]  from irq::@12
  [91] if(irq::line#10!=SCROLL_Y+SCROLL_BLACKBARS+1) goto irq::@8
  to:irq::@14
irq::@14: scope:[irq]  from irq::@13
  [92] irq::zoomval#0 = SINE[greet_zoomx]
  [93] greet_zoomx = ++ greet_zoomx
  [94] *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CHRXSCL) = irq::zoomval#0
  [95] irq::$10 = irq::zoomval#0 + 1
  [96] *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO) = irq::$10
  [97] if(greet_zoomx!=0) goto irq::@8
  to:irq::@15
irq::@15: scope:[irq]  from irq::@14
  [98] greet_idx = ++ greet_idx
  [99] if(greet_idx!=GREET_COUNT) goto irq::@8
  to:irq::@16
irq::@16: scope:[irq]  from irq::@15
  [100] greet_idx = 0
  to:irq::@8
irq::@8: scope:[irq]  from irq::@13 irq::@14 irq::@15 irq::@16 irq::@5 irq::@6 irq::@7
  [101] irq::wobble_idx#7 = phi( irq::@13/irq::wobble_idx#10, irq::@14/irq::wobble_idx#10, irq::@15/irq::wobble_idx#10, irq::@16/irq::wobble_idx#10, irq::@5/irq::wobble_idx#1, irq::@6/irq::wobble_idx#10, irq::@7/irq::wobble_idx#10 )
  [102] irq::raster#0 = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)
  to:irq::@9
irq::@9: scope:[irq]  from irq::@8 irq::@9
  [103] if(irq::raster#0==*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)) goto irq::@9
  to:irq::@10
irq::@10: scope:[irq]  from irq::@9
  [104] irq::line#1 = ++ irq::line#10
  to:irq::@2
irq::@7: scope:[irq]  from irq::@12
  [105] *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO) = $50
  to:irq::@8
irq::@6: scope:[irq]  from irq::@11
  [106] *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO) = $50
  [107] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2) = scroll_soft
  to:irq::@8
irq::@5: scope:[irq]  from irq::@3
  [108] *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO) = SINE[irq::wobble_idx#10]
  [109] irq::wobble_idx#1 = ++ irq::wobble_idx#10
  [110] *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CHRXSCL) = $66
  to:irq::@8

void main()
main: scope:[main]  from __start::@1
  [111] *((char *)VICIII+OFFSET_STRUCT_MOS4569_VICIII_KEY) = $47
  [112] *((char *)VICIII+OFFSET_STRUCT_MOS4569_VICIII_KEY) = $53
  [113] *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) = *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | $40
  [114] *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) = *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | $40
  asm { lda#0  }
  [116] callexecute *songInit 
  to:main::@1
main::@1: scope:[main]  from main
  [117] phi()
  [118] call memset
  to:main::@2
main::@2: scope:[main]  from main::@1 main::@3
  [119] main::i1#2 = phi( main::@1/0, main::@3/main::i1#1 )
  [120] if(main::i1#2<$bc*SIZEOF_CHAR) goto main::@3
  to:main::@4
main::@4: scope:[main]  from main::@2 main::@5
  [121] main::i2#2 = phi( main::@2/0, main::@5/main::i2#1 )
  [122] if(main::i2#2<$28) goto main::@5
  to:main::@6
main::@6: scope:[main]  from main::@4 main::@6
  [123] main::i#2 = phi( main::@4/0, main::@6/main::i#1 )
  [124] PALETTE_RED[main::i#2] = PAL_RED[main::i#2]
  [125] PALETTE_GREEN[main::i#2] = PAL_GREEN[main::i#2]
  [126] PALETTE_BLUE[main::i#2] = PAL_BLUE[main::i#2]
  [127] main::i#1 = ++ main::i#2
  [128] if(main::i#1!=0) goto main::@6
  to:main::@7
main::@7: scope:[main]  from main::@6
  asm { sei  }
  [130] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR
  [131] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) = IRQ_Y
  [132] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & $7f
  [133] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) = IRQ_RASTER
  [134] *HARDWARE_IRQ = &irq
  [135] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
  [136] *PROCPORT = PROCPORT_RAM_IO
  [137] *((char *)VICIV+OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) = 1
  asm { cli  }
  to:main::@8
main::@8: scope:[main]  from main::@7 main::@8
  [139] phi()
  to:main::@8
main::@5: scope:[main]  from main::@4
  [140] (DEFAULT_SCREEN+GREET_ROW*$28)[main::i2#2] = '*'
  [141] main::i2#1 = ++ main::i2#2
  to:main::@4
main::@3: scope:[main]  from main::@2
  [142] (DEFAULT_SCREEN+LOGO_ROW*$28)[main::i1#2] = MEGA_LOGO[main::i1#2]
  [143] main::i1#1 = ++ main::i1#2
  to:main::@2

void * memset(void *str , char c , unsigned int num)
memset: scope:[memset]  from main::@1
  [144] phi()
  to:memset::@1
memset::@1: scope:[memset]  from memset memset::@2
  [145] memset::dst#2 = phi( memset/(char *)memset::str#0, memset::@2/memset::dst#1 )
  [146] if(memset::dst#2!=memset::end#0) goto memset::@2
  to:memset::@return
memset::@return: scope:[memset]  from memset::@1
  [147] return 
  to:@return
memset::@2: scope:[memset]  from memset::@1
  [148] *memset::dst#2 = memset::c#0
  [149] memset::dst#1 = ++ memset::dst#2
  to:memset::@1
