@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] (byte) render_screen_showing#0 ← (byte) 0
  [2] (dword) score_bcd#0 ← (byte) 0
  kickasm(location (const byte*) PLAYFIELD_CHARSET#0) {{ .fill 8,$00 // Place a filled char at the start of the charset
    .import binary "playfield-screen.imap"
 }}
  kickasm(location (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0) {{ // Load chars for the screen
  .var screen = LoadBinary("playfield-screen.iscr")
   // Load extended colors for the screen
  .var extended = LoadBinary("playfield-extended.col")
  // screen.get(i)+1 because the charset is loaded into PLAYFIELD_CHARSET+8
  // extended.get(i)-1 because the extended colors are 1-based (1/2/3/4)
  // <<6 to move extended colors to the upper 2 bits
  .fill screen.getSize(), ( (screen.get(i)+1) | (extended.get(i)-1)<<6 )
 }}
  kickasm(location (const byte*) PLAYFIELD_COLORS_ORIGINAL#0) {{ .import binary "playfield-screen.col"
 }}
  to:@2
@2: scope:[]  from @1
  kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
	// Put the sprites into memory 
	.for(var sy=0;sy<10;sy++) {
	    .var sprite_gfx_y = sy*20
		.for(var sx=0;sx<3;sx++) {
	    	.for (var y=0;y<21; y++) {
	    	    .var gfx_y =  sprite_gfx_y + mod(2100+y-sprite_gfx_y,21)
		    	.for (var c=0; c<3; c++) {
	            	.byte sprites.getSinglecolorByte(sx*3+c,gfx_y)
	            }
	        }
	    	.byte 0
	  	}
	}
 }}
  to:@3
@3: scope:[]  from @2
  [7] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0
  [8] (byte) irq_sprite_ypos#0 ← (const byte) SPRITES_FIRST_YPOS#0+(byte) $15
  to:toSpritePtr1
toSpritePtr1: scope:[]  from @3
  [9] phi()
  to:@5
@5: scope:[]  from toSpritePtr1
  [10] (byte) irq_sprite_ptr#0 ← (const byte) toSpritePtr1_return#0+(byte) 3
  [11] (byte) irq_cnt#0 ← (byte) 0
  to:@4
@4: scope:[]  from @5
  [12] phi()
  [13] call main 
  to:@end
@end: scope:[]  from @4
  [14] phi()
main: scope:[main]  from @4
  [15] phi()
  [16] call sid_rnd_init 
  to:main::@8
main::@8: scope:[main]  from main
  asm { sei  }
  [18] call render_init 
  to:main::@9
main::@9: scope:[main]  from main::@8
  [19] phi()
  [20] call sprites_init 
  to:main::@10
main::@10: scope:[main]  from main::@9
  [21] phi()
  [22] call sprites_irq_init 
  to:main::@11
main::@11: scope:[main]  from main::@10
  [23] phi()
  [24] call play_init 
  to:main::@12
main::@12: scope:[main]  from main::@11
  [25] phi()
  [26] call play_spawn_current 
  to:main::@13
main::@13: scope:[main]  from main::@12
  [27] phi()
  [28] call play_spawn_current 
  to:main::@14
main::@14: scope:[main]  from main::@13
  [29] phi()
  [30] call render_playfield 
  to:main::@15
main::@15: scope:[main]  from main::@14
  [31] (byte~) current_ypos#98 ← (byte) current_ypos#6
  [32] (byte~) current_xpos#119 ← (byte) current_xpos#100
  [33] (byte*~) current_piece_gfx#112 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7)
  [34] (byte~) current_piece_char#100 ← (byte) current_piece_char#5
  [35] call render_moving 
  to:main::@16
main::@16: scope:[main]  from main::@15
  [36] (byte~) next_piece_idx#77 ← (byte) play_spawn_current::piece_idx#2
  [37] call render_next 
  to:main::@17
main::@17: scope:[main]  from main::@16
  [38] (byte*~) current_piece#102 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7)
  [39] (byte*~) current_piece_gfx#124 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7)
  to:main::@1
main::@1: scope:[main]  from main::@17 main::@25 main::@6
  [40] (byte) level_bcd#11 ← phi( main::@6/(byte) level_bcd#17 main::@17/(byte) 0 main::@25/(byte) level_bcd#17 )
  [40] (byte) level#10 ← phi( main::@6/(byte) level#17 main::@17/(byte) 0 main::@25/(byte) level#17 )
  [40] (dword) score_bcd#18 ← phi( main::@6/(dword) score_bcd#14 main::@17/(dword) score_bcd#0 main::@25/(dword) score_bcd#14 )
  [40] (word) lines_bcd#19 ← phi( main::@6/(word) lines_bcd#15 main::@17/(byte) 0 main::@25/(word) lines_bcd#15 )
  [40] (byte) current_movedown_counter#16 ← phi( main::@6/(byte) current_movedown_counter#14 main::@17/(byte) 0 main::@25/(byte) current_movedown_counter#14 )
  [40] (byte) keyboard_events_size#19 ← phi( main::@6/(byte) keyboard_events_size#16 main::@17/(byte) 0 main::@25/(byte) keyboard_events_size#16 )
  [40] (byte) render_screen_showing#13 ← phi( main::@6/(byte) render_screen_showing#1 main::@17/(byte) render_screen_showing#0 main::@25/(byte) render_screen_showing#1 )
  [40] (byte) next_piece_idx#10 ← phi( main::@6/(byte) next_piece_idx#16 main::@17/(byte) play_spawn_current::piece_idx#2 main::@25/(byte) next_piece_idx#16 )
  [40] (byte) game_over#10 ← phi( main::@6/(byte) game_over#15 main::@17/(byte) game_over#52 main::@25/(byte) game_over#15 )
  [40] (byte) current_ypos#11 ← phi( main::@6/(byte) current_ypos#19 main::@17/(byte) current_ypos#6 main::@25/(byte) current_ypos#19 )
  [40] (byte) current_xpos#14 ← phi( main::@6/(byte) current_xpos#19 main::@17/(byte) current_xpos#100 main::@25/(byte) current_xpos#19 )
  [40] (byte*) current_piece_gfx#13 ← phi( main::@6/(byte*) current_piece_gfx#18 main::@17/(byte*~) current_piece_gfx#124 main::@25/(byte*) current_piece_gfx#18 )
  [40] (byte) current_orientation#13 ← phi( main::@6/(byte) current_orientation#17 main::@17/(byte) 0 main::@25/(byte) current_orientation#17 )
  [40] (byte) current_piece_char#10 ← phi( main::@6/(byte) current_piece_char#16 main::@17/(byte) current_piece_char#5 main::@25/(byte) current_piece_char#16 )
  [40] (byte*) current_piece#10 ← phi( main::@6/(byte*) current_piece#15 main::@17/(byte*~) current_piece#102 main::@25/(byte*) current_piece#15 )
  [40] (byte) current_movedown_slow#14 ← phi( main::@6/(byte) current_movedown_slow#21 main::@17/(byte) current_movedown_slow#1 main::@25/(byte) current_movedown_slow#21 )
  [40] (byte) render_screen_render#18 ← phi( main::@17/(byte) $20 main::@25/(byte) render_screen_render#11 )
  [40] (byte) render_screen_show#16 ← phi( main::@17/(byte) 0 main::@25/(byte) render_screen_show#13 )
  to:main::@2
main::@2: scope:[main]  from main::@1 main::@2
  [41] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@2
  [42] phi()
  [43] call render_show 
  to:main::@18
main::@18: scope:[main]  from main::@3
  [44] phi()
  [45] call keyboard_event_scan 
  to:main::@19
main::@19: scope:[main]  from main::@18
  [46] phi()
  [47] call keyboard_event_get 
  [48] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2
  to:main::@20
main::@20: scope:[main]  from main::@19
  [49] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3
  [50] if((byte) game_over#10==(byte) 0) goto main::@4
  to:main::@5
main::@5: scope:[main]  from main::@20 main::@5
  [51] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0)
  to:main::@5
main::@4: scope:[main]  from main::@20
  [52] (byte) play_movement::key_event#0 ← (byte) main::key_event#0
  [53] call play_movement 
  [54] (byte) play_movement::return#3 ← (byte) play_movement::return#2
  to:main::@21
main::@21: scope:[main]  from main::@4
  [55] (byte) main::render#1 ← (byte) play_movement::return#3
  to:main::@6
main::@6: scope:[main]  from main::@21
  [56] if((byte) main::render#1==(byte) 0) goto main::@1
  to:main::@7
main::@7: scope:[main]  from main::@6
  [57] (byte~) render_screen_render#64 ← (byte) render_screen_render#18
  [58] call render_playfield 
  to:main::@22
main::@22: scope:[main]  from main::@7
  [59] (byte~) current_ypos#99 ← (byte) current_ypos#19
  [60] (byte~) render_screen_render#65 ← (byte) render_screen_render#18
  [61] (byte~) current_xpos#120 ← (byte) current_xpos#19
  [62] (byte*~) current_piece_gfx#113 ← (byte*) current_piece_gfx#18
  [63] (byte~) current_piece_char#101 ← (byte) current_piece_char#16
  [64] call render_moving 
  to:main::@23
main::@23: scope:[main]  from main::@22
  [65] (byte~) render_screen_render#66 ← (byte) render_screen_render#18
  [66] (byte~) next_piece_idx#78 ← (byte) next_piece_idx#16
  [67] call render_next 
  to:main::@24
main::@24: scope:[main]  from main::@23
  [68] phi()
  [69] call render_score 
  to:main::@25
main::@25: scope:[main]  from main::@24
  [70] phi()
  [71] call render_screen_swap 
  to:main::@1
render_screen_swap: scope:[render_screen_swap]  from main::@25
  [72] (byte) render_screen_render#11 ← (byte) render_screen_render#18 ^ (byte) $20
  [73] (byte) render_screen_show#13 ← (byte) render_screen_show#16 ^ (byte) $20
  to:render_screen_swap::@return
render_screen_swap::@return: scope:[render_screen_swap]  from render_screen_swap
  [74] return 
  to:@return
render_score: scope:[render_score]  from main::@24
  [75] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1
  to:render_score::@2
render_score::@1: scope:[render_score]  from render_score
  [76] phi()
  to:render_score::@2
render_score::@2: scope:[render_score]  from render_score render_score::@1
  [77] (byte*) render_score::screen#3 ← phi( render_score::@1/(const byte*) PLAYFIELD_SCREEN_1#0 render_score/(const byte*) PLAYFIELD_SCREEN_2#0 )
  [78] (byte*) render_bcd::screen#0 ← (byte*) render_score::screen#3
  [79] (byte) render_bcd::bcd#0 ← *((const byte*) render_score::score_bytes#0+(byte) 2)
  [80] call render_bcd 
  to:render_score::@3
render_score::@3: scope:[render_score]  from render_score::@2
  [81] (byte*) render_bcd::screen#1 ← (byte*) render_score::screen#3
  [82] (byte) render_bcd::bcd#1 ← *((const byte*) render_score::score_bytes#0+(byte) 1)
  [83] call render_bcd 
  to:render_score::@4
render_score::@4: scope:[render_score]  from render_score::@3
  [84] (byte*) render_bcd::screen#2 ← (byte*) render_score::screen#3
  [85] (byte) render_bcd::bcd#2 ← *((const byte*) render_score::score_bytes#0)
  [86] call render_bcd 
  to:render_score::@5
render_score::@5: scope:[render_score]  from render_score::@4
  [87] (byte) render_bcd::bcd#3 ← > (word) lines_bcd#15
  [88] (byte*) render_bcd::screen#3 ← (byte*) render_score::screen#3
  [89] call render_bcd 
  to:render_score::@6
render_score::@6: scope:[render_score]  from render_score::@5
  [90] (byte) render_bcd::bcd#4 ← < (word) lines_bcd#15
  [91] (byte*) render_bcd::screen#4 ← (byte*) render_score::screen#3
  [92] call render_bcd 
  to:render_score::@7
render_score::@7: scope:[render_score]  from render_score::@6
  [93] (byte*) render_bcd::screen#5 ← (byte*) render_score::screen#3
  [94] (byte) render_bcd::bcd#5 ← (byte) level_bcd#17
  [95] call render_bcd 
  to:render_score::@return
render_score::@return: scope:[render_score]  from render_score::@7
  [96] return 
  to:@return
render_bcd: scope:[render_bcd]  from render_score::@2 render_score::@3 render_score::@4 render_score::@5 render_score::@6 render_score::@7
  [97] (byte) render_bcd::bcd#6 ← phi( render_score::@2/(byte) render_bcd::bcd#0 render_score::@3/(byte) render_bcd::bcd#1 render_score::@4/(byte) render_bcd::bcd#2 render_score::@5/(byte) render_bcd::bcd#3 render_score::@6/(byte) render_bcd::bcd#4 render_score::@7/(byte) render_bcd::bcd#5 )
  [97] (byte) render_bcd::only_low#6 ← phi( render_score::@2/(byte) 0 render_score::@3/(byte) 0 render_score::@4/(byte) 0 render_score::@5/(byte) 1 render_score::@6/(byte) 0 render_score::@7/(byte) 0 )
  [97] (word) render_bcd::offset#6 ← phi( render_score::@2/(const word) render_score::score_offset#0 render_score::@3/(const word) render_score::score_offset#0+(byte) 2 render_score::@4/(const word) render_score::score_offset#0+(byte) 4 render_score::@5/(const word) render_score::lines_offset#0 render_score::@6/(const word) render_score::lines_offset#0+(byte) 1 render_score::@7/(const word) render_score::level_offset#0 )
  [97] (byte*) render_bcd::screen#6 ← phi( render_score::@2/(byte*) render_bcd::screen#0 render_score::@3/(byte*) render_bcd::screen#1 render_score::@4/(byte*) render_bcd::screen#2 render_score::@5/(byte*) render_bcd::screen#3 render_score::@6/(byte*) render_bcd::screen#4 render_score::@7/(byte*) render_bcd::screen#5 )
  [98] (byte*) render_bcd::screen_pos#0 ← (byte*) render_bcd::screen#6 + (word) render_bcd::offset#6
  [99] if((byte) render_bcd::only_low#6!=(byte) 0) goto render_bcd::@1
  to:render_bcd::@2
render_bcd::@2: scope:[render_bcd]  from render_bcd
  [100] (byte~) render_bcd::$5 ← (byte) render_bcd::bcd#6 >> (byte) 4
  [101] (byte~) render_bcd::$6 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$5
  [102] *((byte*) render_bcd::screen_pos#0) ← (byte~) render_bcd::$6
  [103] (byte*) render_bcd::screen_pos#2 ← ++ (byte*) render_bcd::screen_pos#0
  to:render_bcd::@1
render_bcd::@1: scope:[render_bcd]  from render_bcd render_bcd::@2
  [104] (byte*) render_bcd::screen_pos#3 ← phi( render_bcd/(byte*) render_bcd::screen_pos#0 render_bcd::@2/(byte*) render_bcd::screen_pos#2 )
  [105] (byte~) render_bcd::$3 ← (byte) render_bcd::bcd#6 & (byte) $f
  [106] (byte~) render_bcd::$4 ← (const byte) render_bcd::ZERO_CHAR#0 + (byte~) render_bcd::$3
  [107] *((byte*) render_bcd::screen_pos#3) ← (byte~) render_bcd::$4
  to:render_bcd::@return
render_bcd::@return: scope:[render_bcd]  from render_bcd::@1
  [108] return 
  to:@return
render_next: scope:[render_next]  from main::@16 main::@23
  [109] (byte) next_piece_idx#12 ← phi( main::@16/(byte~) next_piece_idx#77 main::@23/(byte~) next_piece_idx#78 )
  [109] (byte) render_screen_render#15 ← phi( main::@16/(byte) $20 main::@23/(byte~) render_screen_render#66 )
  [110] if((byte) render_screen_render#15==(byte) 0) goto render_next::@1
  to:render_next::@2
render_next::@1: scope:[render_next]  from render_next
  [111] phi()
  to:render_next::@2
render_next::@2: scope:[render_next]  from render_next render_next::@1
  [112] (byte*) render_next::screen_next_area#11 ← phi( render_next::@1/(const byte*) PLAYFIELD_SCREEN_1#0+(const word) render_next::next_area_offset#0 render_next/(const byte*) PLAYFIELD_SCREEN_2#0+(const word) render_next::next_area_offset#0 )
  [113] (byte~) render_next::$6 ← (byte) next_piece_idx#12 << (byte) 1
  [114] (byte) render_next::next_piece_char#0 ← *((const byte[]) PIECES_NEXT_CHARS#0 + (byte) next_piece_idx#12)
  [115] (byte*~) render_next::next_piece_gfx#9 ← (byte*)*((const word[]) PIECES#0 + (byte~) render_next::$6)
  to:render_next::@3
render_next::@3: scope:[render_next]  from render_next::@2 render_next::@8
  [116] (byte) render_next::l#7 ← phi( render_next::@8/(byte) render_next::l#1 render_next::@2/(byte) 0 )
  [116] (byte*) render_next::screen_next_area#10 ← phi( render_next::@8/(byte*) render_next::screen_next_area#4 render_next::@2/(byte*) render_next::screen_next_area#11 )
  [116] (byte*) render_next::next_piece_gfx#3 ← phi( render_next::@8/(byte*) render_next::next_piece_gfx#1 render_next::@2/(byte*~) render_next::next_piece_gfx#9 )
  to:render_next::@4
render_next::@4: scope:[render_next]  from render_next::@3 render_next::@6
  [117] (byte) render_next::c#2 ← phi( render_next::@3/(byte) 0 render_next::@6/(byte) render_next::c#1 )
  [117] (byte*) render_next::screen_next_area#5 ← phi( render_next::@3/(byte*) render_next::screen_next_area#10 render_next::@6/(byte*) render_next::screen_next_area#3 )
  [117] (byte*) render_next::next_piece_gfx#2 ← phi( render_next::@3/(byte*) render_next::next_piece_gfx#3 render_next::@6/(byte*) render_next::next_piece_gfx#1 )
  [118] (byte) render_next::cell#0 ← *((byte*) render_next::next_piece_gfx#2)
  [119] (byte*) render_next::next_piece_gfx#1 ← ++ (byte*) render_next::next_piece_gfx#2
  [120] if((byte) render_next::cell#0!=(byte) 0) goto render_next::@5
  to:render_next::@7
render_next::@7: scope:[render_next]  from render_next::@4
  [121] *((byte*) render_next::screen_next_area#5) ← (byte) 0
  to:render_next::@6
render_next::@6: scope:[render_next]  from render_next::@5 render_next::@7
  [122] (byte*) render_next::screen_next_area#3 ← ++ (byte*) render_next::screen_next_area#5
  [123] (byte) render_next::c#1 ← ++ (byte) render_next::c#2
  [124] if((byte) render_next::c#1!=(byte) 4) goto render_next::@4
  to:render_next::@8
render_next::@8: scope:[render_next]  from render_next::@6
  [125] (byte*) render_next::screen_next_area#4 ← (byte*) render_next::screen_next_area#3 + (byte) $24
  [126] (byte) render_next::l#1 ← ++ (byte) render_next::l#7
  [127] if((byte) render_next::l#1!=(byte) 4) goto render_next::@3
  to:render_next::@return
render_next::@return: scope:[render_next]  from render_next::@8
  [128] return 
  to:@return
render_next::@5: scope:[render_next]  from render_next::@4
  [129] *((byte*) render_next::screen_next_area#5) ← (byte) render_next::next_piece_char#0
  to:render_next::@6
render_moving: scope:[render_moving]  from main::@15 main::@22
  [130] (byte) current_piece_char#68 ← phi( main::@15/(byte~) current_piece_char#100 main::@22/(byte~) current_piece_char#101 )
  [130] (byte*) current_piece_gfx#64 ← phi( main::@15/(byte*~) current_piece_gfx#112 main::@22/(byte*~) current_piece_gfx#113 )
  [130] (byte) current_xpos#59 ← phi( main::@15/(byte~) current_xpos#119 main::@22/(byte~) current_xpos#120 )
  [130] (byte) render_screen_render#33 ← phi( main::@15/(byte) $20 main::@22/(byte~) render_screen_render#65 )
  [130] (byte) current_ypos#13 ← phi( main::@15/(byte~) current_ypos#98 main::@22/(byte~) current_ypos#99 )
  [131] (byte) render_moving::ypos#0 ← (byte) current_ypos#13
  to:render_moving::@1
render_moving::@1: scope:[render_moving]  from render_moving render_moving::@3
  [132] (byte) render_moving::l#4 ← phi( render_moving/(byte) 0 render_moving::@3/(byte) render_moving::l#1 )
  [132] (byte) render_moving::i#3 ← phi( render_moving/(byte) 0 render_moving::@3/(byte) render_moving::i#8 )
  [132] (byte) render_moving::ypos#2 ← phi( render_moving/(byte) render_moving::ypos#0 render_moving::@3/(byte) render_moving::ypos#1 )
  [133] if((byte) render_moving::ypos#2>=(byte) 1+(byte) 1) goto render_moving::@2
  to:render_moving::@7
render_moving::@7: scope:[render_moving]  from render_moving::@1
  [134] (byte) render_moving::i#1 ← (byte) render_moving::i#3 + (byte) 4
  to:render_moving::@3
render_moving::@3: scope:[render_moving]  from render_moving::@5 render_moving::@7
  [135] (byte) render_moving::i#8 ← phi( render_moving::@5/(byte) render_moving::i#2 render_moving::@7/(byte) render_moving::i#1 )
  [136] (byte) render_moving::ypos#1 ← ++ (byte) render_moving::ypos#2
  [137] (byte) render_moving::l#1 ← ++ (byte) render_moving::l#4
  [138] if((byte) render_moving::l#1!=(byte) 4) goto render_moving::@1
  to:render_moving::@return
render_moving::@return: scope:[render_moving]  from render_moving::@3
  [139] return 
  to:@return
render_moving::@2: scope:[render_moving]  from render_moving::@1
  [140] (byte~) render_moving::$1 ← (byte) render_screen_render#33 + (byte) render_moving::ypos#2
  [141] (byte~) render_moving::$6 ← (byte~) render_moving::$1 << (byte) 1
  [142] (byte*) render_moving::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_moving::$6)
  [143] (byte) render_moving::xpos#0 ← (byte) current_xpos#59
  to:render_moving::@4
render_moving::@4: scope:[render_moving]  from render_moving::@2 render_moving::@5
  [144] (byte) render_moving::c#2 ← phi( render_moving::@2/(byte) 0 render_moving::@5/(byte) render_moving::c#1 )
  [144] (byte) render_moving::xpos#2 ← phi( render_moving::@2/(byte) render_moving::xpos#0 render_moving::@5/(byte) render_moving::xpos#1 )
  [144] (byte) render_moving::i#4 ← phi( render_moving::@2/(byte) render_moving::i#3 render_moving::@5/(byte) render_moving::i#2 )
  [145] (byte) render_moving::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_moving::i#4)
  [146] (byte) render_moving::i#2 ← ++ (byte) render_moving::i#4
  [147] if((byte) render_moving::current_cell#0==(byte) 0) goto render_moving::@5
  to:render_moving::@6
render_moving::@6: scope:[render_moving]  from render_moving::@4
  [148] *((byte*) render_moving::screen_line#0 + (byte) render_moving::xpos#2) ← (byte) current_piece_char#68
  to:render_moving::@5
render_moving::@5: scope:[render_moving]  from render_moving::@4 render_moving::@6
  [149] (byte) render_moving::xpos#1 ← ++ (byte) render_moving::xpos#2
  [150] (byte) render_moving::c#1 ← ++ (byte) render_moving::c#2
  [151] if((byte) render_moving::c#1!=(byte) 4) goto render_moving::@4
  to:render_moving::@3
render_playfield: scope:[render_playfield]  from main::@14 main::@7
  [152] (byte) render_screen_render#22 ← phi( main::@7/(byte~) render_screen_render#64 main::@14/(byte) $20 )
  to:render_playfield::@1
render_playfield::@1: scope:[render_playfield]  from render_playfield render_playfield::@3
  [153] (byte) render_playfield::i#3 ← phi( render_playfield/(const byte) PLAYFIELD_COLS#0*(byte) 2 render_playfield::@3/(byte) render_playfield::i#1 )
  [153] (byte) render_playfield::l#2 ← phi( render_playfield/(byte) 2 render_playfield::@3/(byte) render_playfield::l#1 )
  [154] (byte~) render_playfield::$2 ← (byte) render_screen_render#22 + (byte) render_playfield::l#2
  [155] (byte~) render_playfield::$6 ← (byte~) render_playfield::$2 << (byte) 1
  [156] (byte*) render_playfield::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_playfield::$6)
  to:render_playfield::@2
render_playfield::@2: scope:[render_playfield]  from render_playfield::@1 render_playfield::@2
  [157] (byte) render_playfield::c#2 ← phi( render_playfield::@1/(byte) 0 render_playfield::@2/(byte) render_playfield::c#1 )
  [157] (byte*) render_playfield::screen_line#2 ← phi( render_playfield::@1/(byte*) render_playfield::screen_line#0 render_playfield::@2/(byte*) render_playfield::screen_line#1 )
  [157] (byte) render_playfield::i#2 ← phi( render_playfield::@1/(byte) render_playfield::i#3 render_playfield::@2/(byte) render_playfield::i#1 )
  [158] *((byte*) render_playfield::screen_line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2)
  [159] (byte*) render_playfield::screen_line#1 ← ++ (byte*) render_playfield::screen_line#2
  [160] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2
  [161] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2
  [162] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto render_playfield::@2
  to:render_playfield::@3
render_playfield::@3: scope:[render_playfield]  from render_playfield::@2
  [163] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2
  [164] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_playfield::@1
  to:render_playfield::@return
render_playfield::@return: scope:[render_playfield]  from render_playfield::@3
  [165] return 
  to:@return
play_movement: scope:[play_movement]  from main::@4
  [166] (byte) play_move_down::key_event#0 ← (byte) play_movement::key_event#0
  [167] call play_move_down 
  [168] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3
  to:play_movement::@2
play_movement::@2: scope:[play_movement]  from play_movement
  [169] (byte) play_movement::render#1 ← (byte) play_move_down::return#0
  [170] if((byte) game_over#15==(byte) 0) goto play_movement::@1
  to:play_movement::@return
play_movement::@return: scope:[play_movement]  from play_movement::@2 play_movement::@4
  [171] (byte) current_xpos#19 ← phi( play_movement::@2/(byte) current_xpos#22 play_movement::@4/(byte) current_xpos#26 )
  [171] (byte*) current_piece_gfx#18 ← phi( play_movement::@2/(byte*) current_piece_gfx#20 play_movement::@4/(byte*) current_piece_gfx#21 )
  [171] (byte) current_orientation#17 ← phi( play_movement::@2/(byte) current_orientation#20 play_movement::@4/(byte) current_orientation#25 )
  [171] (byte) play_movement::return#2 ← phi( play_movement::@2/(byte) play_movement::render#1 play_movement::@4/(byte) play_movement::return#0 )
  [172] return 
  to:@return
play_movement::@1: scope:[play_movement]  from play_movement::@2
  [173] (byte) play_move_leftright::key_event#0 ← (byte) play_movement::key_event#0
  [174] call play_move_leftright 
  [175] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2
  to:play_movement::@3
play_movement::@3: scope:[play_movement]  from play_movement::@1
  [176] (byte~) play_movement::$3 ← (byte) play_move_leftright::return#0
  [177] (byte) play_movement::render#2 ← (byte) play_movement::render#1 + (byte~) play_movement::$3
  [178] (byte) play_move_rotate::key_event#0 ← (byte) play_movement::key_event#0
  [179] call play_move_rotate 
  [180] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2
  to:play_movement::@4
play_movement::@4: scope:[play_movement]  from play_movement::@3
  [181] (byte~) play_movement::$4 ← (byte) play_move_rotate::return#0
  [182] (byte) play_movement::return#0 ← (byte) play_movement::render#2 + (byte~) play_movement::$4
  to:play_movement::@return
play_move_rotate: scope:[play_move_rotate]  from play_movement::@3
  [183] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1
  to:play_move_rotate::@4
play_move_rotate::@4: scope:[play_move_rotate]  from play_move_rotate
  [184] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2
  to:play_move_rotate::@return
play_move_rotate::@return: scope:[play_move_rotate]  from play_move_rotate::@4 play_move_rotate::@5 play_move_rotate::@6
  [185] (byte*) current_piece_gfx#21 ← phi( play_move_rotate::@5/(byte*) current_piece_gfx#7 play_move_rotate::@6/(byte*) current_piece_gfx#20 play_move_rotate::@4/(byte*) current_piece_gfx#20 )
  [185] (byte) current_orientation#25 ← phi( play_move_rotate::@5/(byte) current_orientation#7 play_move_rotate::@6/(byte) current_orientation#20 play_move_rotate::@4/(byte) current_orientation#20 )
  [185] (byte) play_move_rotate::return#2 ← phi( play_move_rotate::@5/(byte) 1 play_move_rotate::@6/(byte) 0 play_move_rotate::@4/(byte) 0 )
  [186] return 
  to:@return
play_move_rotate::@2: scope:[play_move_rotate]  from play_move_rotate::@4
  [187] (byte~) play_move_rotate::$5 ← (byte) current_orientation#20 + (byte) $10
  [188] (byte) play_move_rotate::orientation#2 ← (byte~) play_move_rotate::$5 & (byte) $3f
  to:play_move_rotate::@3
play_move_rotate::@3: scope:[play_move_rotate]  from play_move_rotate::@1 play_move_rotate::@2
  [189] (byte) play_move_rotate::orientation#3 ← phi( play_move_rotate::@1/(byte) play_move_rotate::orientation#1 play_move_rotate::@2/(byte) play_move_rotate::orientation#2 )
  [190] (byte) play_collision::xpos#3 ← (byte) current_xpos#26
  [191] (byte) play_collision::ypos#3 ← (byte) current_ypos#19
  [192] (byte) play_collision::orientation#3 ← (byte) play_move_rotate::orientation#3
  [193] (byte*~) current_piece#99 ← (byte*) current_piece#15
  [194] call play_collision 
  [195] (byte) play_collision::return#14 ← (byte) play_collision::return#15
  to:play_move_rotate::@6
play_move_rotate::@6: scope:[play_move_rotate]  from play_move_rotate::@3
  [196] (byte~) play_move_rotate::$2 ← (byte) play_collision::return#14
  [197] if((byte~) play_move_rotate::$2!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return
  to:play_move_rotate::@5
play_move_rotate::@5: scope:[play_move_rotate]  from play_move_rotate::@6
  [198] (byte) current_orientation#7 ← (byte) play_move_rotate::orientation#3
  [199] (byte*) current_piece_gfx#7 ← (byte*) current_piece#15 + (byte) current_orientation#7
  to:play_move_rotate::@return
play_move_rotate::@1: scope:[play_move_rotate]  from play_move_rotate
  [200] (byte~) play_move_rotate::$7 ← (byte) current_orientation#20 - (byte) $10
  [201] (byte) play_move_rotate::orientation#1 ← (byte~) play_move_rotate::$7 & (byte) $3f
  to:play_move_rotate::@3
play_collision: scope:[play_collision]  from play_move_down::@8 play_move_leftright::@1 play_move_leftright::@3 play_move_rotate::@3 play_spawn_current
  [202] (byte) play_collision::xpos#6 ← phi( play_move_down::@8/(byte) play_collision::xpos#0 play_move_leftright::@1/(byte) play_collision::xpos#1 play_move_leftright::@3/(byte) play_collision::xpos#2 play_move_rotate::@3/(byte) play_collision::xpos#3 play_spawn_current/(byte) play_collision::xpos#4 )
  [202] (byte) play_collision::yp#0 ← phi( play_move_down::@8/(byte) play_collision::ypos#0 play_move_leftright::@1/(byte) play_collision::ypos#1 play_move_leftright::@3/(byte) play_collision::ypos#2 play_move_rotate::@3/(byte) play_collision::ypos#3 play_spawn_current/(byte) play_collision::ypos#4 )
  [202] (byte) play_collision::orientation#5 ← phi( play_move_down::@8/(byte) play_collision::orientation#0 play_move_leftright::@1/(byte) play_collision::orientation#1 play_move_leftright::@3/(byte) play_collision::orientation#2 play_move_rotate::@3/(byte) play_collision::orientation#3 play_spawn_current/(byte) 0 )
  [202] (byte*) current_piece#17 ← phi( play_move_down::@8/(byte*~) current_piece#96 play_move_leftright::@1/(byte*~) current_piece#97 play_move_leftright::@3/(byte*~) current_piece#98 play_move_rotate::@3/(byte*~) current_piece#99 play_spawn_current/(byte*~) current_piece#100 )
  [203] (byte*) play_collision::piece_gfx#0 ← (byte*) current_piece#17 + (byte) play_collision::orientation#5
  to:play_collision::@1
play_collision::@1: scope:[play_collision]  from play_collision play_collision::@9
  [204] (byte) play_collision::l#6 ← phi( play_collision/(byte) 0 play_collision::@9/(byte) play_collision::l#1 )
  [204] (byte) play_collision::i#3 ← phi( play_collision/(byte) 0 play_collision::@9/(byte~) play_collision::i#10 )
  [204] (byte) play_collision::yp#2 ← phi( play_collision/(byte) play_collision::yp#0 play_collision::@9/(byte) play_collision::yp#1 )
  [205] (byte~) play_collision::$14 ← (byte) play_collision::yp#2 << (byte) 1
  [206] (byte*) play_collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_collision::$14)
  [207] (byte~) play_collision::xp#8 ← (byte) play_collision::xpos#6
  to:play_collision::@2
play_collision::@2: scope:[play_collision]  from play_collision::@1 play_collision::@10
  [208] (byte) play_collision::c#2 ← phi( play_collision::@1/(byte) 0 play_collision::@10/(byte) play_collision::c#1 )
  [208] (byte) play_collision::xp#2 ← phi( play_collision::@1/(byte~) play_collision::xp#8 play_collision::@10/(byte) play_collision::xp#1 )
  [208] (byte) play_collision::i#2 ← phi( play_collision::@1/(byte) play_collision::i#3 play_collision::@10/(byte~) play_collision::i#12 )
  [209] (byte) play_collision::i#1 ← ++ (byte) play_collision::i#2
  [210] if(*((byte*) play_collision::piece_gfx#0 + (byte) play_collision::i#2)==(byte) 0) goto play_collision::@3
  to:play_collision::@7
play_collision::@7: scope:[play_collision]  from play_collision::@2
  [211] if((byte) play_collision::yp#2<(const byte) PLAYFIELD_LINES#0) goto play_collision::@4
  to:play_collision::@return
play_collision::@4: scope:[play_collision]  from play_collision::@7
  [212] (byte~) play_collision::$5 ← (byte) play_collision::xp#2 & (byte) $80
  [213] if((byte~) play_collision::$5==(byte) 0) goto play_collision::@5
  to:play_collision::@return
play_collision::@5: scope:[play_collision]  from play_collision::@4
  [214] if((byte) play_collision::xp#2<(const byte) PLAYFIELD_COLS#0) goto play_collision::@6
  to:play_collision::@return
play_collision::@6: scope:[play_collision]  from play_collision::@5
  [215] if(*((byte*) play_collision::playfield_line#0 + (byte) play_collision::xp#2)==(byte) 0) goto play_collision::@3
  to:play_collision::@return
play_collision::@return: scope:[play_collision]  from play_collision::@4 play_collision::@5 play_collision::@6 play_collision::@7 play_collision::@8
  [216] (byte) play_collision::return#15 ← phi( play_collision::@5/(const byte) COLLISION_RIGHT#0 play_collision::@6/(const byte) COLLISION_PLAYFIELD#0 play_collision::@7/(const byte) COLLISION_BOTTOM#0 play_collision::@8/(const byte) COLLISION_NONE#0 play_collision::@4/(const byte) COLLISION_LEFT#0 )
  [217] return 
  to:@return
play_collision::@3: scope:[play_collision]  from play_collision::@2 play_collision::@6
  [218] (byte) play_collision::xp#1 ← ++ (byte) play_collision::xp#2
  [219] (byte) play_collision::c#1 ← ++ (byte) play_collision::c#2
  [220] if((byte) play_collision::c#1!=(byte) 4) goto play_collision::@10
  to:play_collision::@8
play_collision::@8: scope:[play_collision]  from play_collision::@3
  [221] (byte) play_collision::yp#1 ← ++ (byte) play_collision::yp#2
  [222] (byte) play_collision::l#1 ← ++ (byte) play_collision::l#6
  [223] if((byte) play_collision::l#1!=(byte) 4) goto play_collision::@9
  to:play_collision::@return
play_collision::@9: scope:[play_collision]  from play_collision::@8
  [224] (byte~) play_collision::i#10 ← (byte) play_collision::i#1
  to:play_collision::@1
play_collision::@10: scope:[play_collision]  from play_collision::@3
  [225] (byte~) play_collision::i#12 ← (byte) play_collision::i#1
  to:play_collision::@2
play_move_leftright: scope:[play_move_leftright]  from play_movement::@1
  [226] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1
  to:play_move_leftright::@2
play_move_leftright::@2: scope:[play_move_leftright]  from play_move_leftright
  [227] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return
  to:play_move_leftright::@3
play_move_leftright::@3: scope:[play_move_leftright]  from play_move_leftright::@2
  [228] (byte) play_collision::xpos#2 ← (byte) current_xpos#22 + (byte) 1
  [229] (byte) play_collision::ypos#2 ← (byte) current_ypos#19
  [230] (byte) play_collision::orientation#2 ← (byte) current_orientation#20
  [231] (byte*~) current_piece#98 ← (byte*) current_piece#15
  [232] call play_collision 
  [233] (byte) play_collision::return#13 ← (byte) play_collision::return#15
  to:play_move_leftright::@7
play_move_leftright::@7: scope:[play_move_leftright]  from play_move_leftright::@3
  [234] (byte~) play_move_leftright::$4 ← (byte) play_collision::return#13
  [235] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return
  to:play_move_leftright::@4
play_move_leftright::@4: scope:[play_move_leftright]  from play_move_leftright::@7
  [236] (byte) current_xpos#6 ← ++ (byte) current_xpos#22
  to:play_move_leftright::@return
play_move_leftright::@return: scope:[play_move_leftright]  from play_move_leftright::@2 play_move_leftright::@4 play_move_leftright::@5 play_move_leftright::@6 play_move_leftright::@7
  [237] (byte) current_xpos#26 ← phi( play_move_leftright::@6/(byte) current_xpos#22 play_move_leftright::@4/(byte) current_xpos#6 play_move_leftright::@5/(byte) current_xpos#8 play_move_leftright::@7/(byte) current_xpos#22 play_move_leftright::@2/(byte) current_xpos#22 )
  [237] (byte) play_move_leftright::return#2 ← phi( play_move_leftright::@6/(byte) 0 play_move_leftright::@4/(byte) 1 play_move_leftright::@5/(byte) 1 play_move_leftright::@7/(byte) 0 play_move_leftright::@2/(byte) 0 )
  [238] return 
  to:@return
play_move_leftright::@1: scope:[play_move_leftright]  from play_move_leftright
  [239] (byte) play_collision::xpos#1 ← (byte) current_xpos#22 - (byte) 1
  [240] (byte) play_collision::ypos#1 ← (byte) current_ypos#19
  [241] (byte) play_collision::orientation#1 ← (byte) current_orientation#20
  [242] (byte*~) current_piece#97 ← (byte*) current_piece#15
  [243] call play_collision 
  [244] (byte) play_collision::return#1 ← (byte) play_collision::return#15
  to:play_move_leftright::@6
play_move_leftright::@6: scope:[play_move_leftright]  from play_move_leftright::@1
  [245] (byte~) play_move_leftright::$8 ← (byte) play_collision::return#1
  [246] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return
  to:play_move_leftright::@5
play_move_leftright::@5: scope:[play_move_leftright]  from play_move_leftright::@6
  [247] (byte) current_xpos#8 ← -- (byte) current_xpos#22
  to:play_move_leftright::@return
play_move_down: scope:[play_move_down]  from play_movement
  [248] (byte) current_movedown_counter#12 ← ++ (byte) current_movedown_counter#16
  [249] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1
  to:play_move_down::@4
play_move_down::@4: scope:[play_move_down]  from play_move_down
  [250] phi()
  to:play_move_down::@1
play_move_down::@1: scope:[play_move_down]  from play_move_down play_move_down::@4
  [251] (byte) play_move_down::movedown#10 ← phi( play_move_down/(byte) 0 play_move_down::@4/(byte) 1 )
  [252] call keyboard_event_pressed 
  [253] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11
  to:play_move_down::@12
play_move_down::@12: scope:[play_move_down]  from play_move_down::@1
  [254] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12
  [255] if((byte~) play_move_down::$2==(byte) 0) goto play_move_down::@2
  to:play_move_down::@5
play_move_down::@5: scope:[play_move_down]  from play_move_down::@12
  [256] if((byte) current_movedown_counter#12<(const byte) current_movedown_fast#0) goto play_move_down::@2
  to:play_move_down::@6
play_move_down::@6: scope:[play_move_down]  from play_move_down::@5
  [257] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10
  to:play_move_down::@2
play_move_down::@2: scope:[play_move_down]  from play_move_down::@12 play_move_down::@5 play_move_down::@6
  [258] (byte) play_move_down::movedown#7 ← phi( play_move_down::@12/(byte) play_move_down::movedown#10 play_move_down::@5/(byte) play_move_down::movedown#10 play_move_down::@6/(byte) play_move_down::movedown#2 )
  [259] if((byte) current_movedown_counter#12<(byte) current_movedown_slow#14) goto play_move_down::@3
  to:play_move_down::@7
play_move_down::@7: scope:[play_move_down]  from play_move_down::@2
  [260] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7
  to:play_move_down::@3
play_move_down::@3: scope:[play_move_down]  from play_move_down::@2 play_move_down::@7
  [261] (byte) play_move_down::movedown#6 ← phi( play_move_down::@2/(byte) play_move_down::movedown#7 play_move_down::@7/(byte) play_move_down::movedown#3 )
  [262] if((byte) play_move_down::movedown#6==(byte) 0) goto play_move_down::@return
  to:play_move_down::@8
play_move_down::@8: scope:[play_move_down]  from play_move_down::@3
  [263] (byte) play_collision::ypos#0 ← (byte) current_ypos#11 + (byte) 1
  [264] (byte) play_collision::xpos#0 ← (byte) current_xpos#14
  [265] (byte) play_collision::orientation#0 ← (byte) current_orientation#13
  [266] (byte*~) current_piece#96 ← (byte*) current_piece#10
  [267] call play_collision 
  [268] (byte) play_collision::return#0 ← (byte) play_collision::return#15
  to:play_move_down::@13
play_move_down::@13: scope:[play_move_down]  from play_move_down::@8
  [269] (byte~) play_move_down::$12 ← (byte) play_collision::return#0
  [270] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@10
  to:play_move_down::@9
play_move_down::@9: scope:[play_move_down]  from play_move_down::@13
  [271] phi()
  [272] call play_lock_current 
  to:play_move_down::@14
play_move_down::@14: scope:[play_move_down]  from play_move_down::@9
  [273] phi()
  [274] call play_remove_lines 
  [275] (byte) play_remove_lines::return#0 ← (byte) play_remove_lines::removed#8
  to:play_move_down::@15
play_move_down::@15: scope:[play_move_down]  from play_move_down::@14
  [276] (byte) play_move_down::removed#0 ← (byte) play_remove_lines::return#0
  [277] (byte) play_update_score::removed#0 ← (byte) play_move_down::removed#0
  [278] call play_update_score 
  to:play_move_down::@16
play_move_down::@16: scope:[play_move_down]  from play_move_down::@15
  [279] phi()
  [280] call play_spawn_current 
  to:play_move_down::@17
play_move_down::@17: scope:[play_move_down]  from play_move_down::@16
  [281] (byte*~) current_piece#93 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7)
  [282] (byte*~) current_piece_gfx#117 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7)
  to:play_move_down::@11
play_move_down::@11: scope:[play_move_down]  from play_move_down::@10 play_move_down::@17
  [283] (byte) next_piece_idx#30 ← phi( play_move_down::@10/(byte) next_piece_idx#10 play_move_down::@17/(byte) play_spawn_current::piece_idx#2 )
  [283] (byte) game_over#27 ← phi( play_move_down::@10/(byte) game_over#10 play_move_down::@17/(byte) game_over#52 )
  [283] (byte) current_xpos#43 ← phi( play_move_down::@10/(byte) current_xpos#14 play_move_down::@17/(byte) current_xpos#100 )
  [283] (byte*) current_piece_gfx#35 ← phi( play_move_down::@10/(byte*) current_piece_gfx#13 play_move_down::@17/(byte*~) current_piece_gfx#117 )
  [283] (byte) current_orientation#37 ← phi( play_move_down::@10/(byte) current_orientation#13 play_move_down::@17/(byte) 0 )
  [283] (byte) current_piece_char#29 ← phi( play_move_down::@10/(byte) current_piece_char#10 play_move_down::@17/(byte) current_piece_char#5 )
  [283] (byte*) current_piece#28 ← phi( play_move_down::@10/(byte*) current_piece#10 play_move_down::@17/(byte*~) current_piece#93 )
  [283] (byte) level_bcd#31 ← phi( play_move_down::@10/(byte) level_bcd#11 play_move_down::@17/(byte) level_bcd#19 )
  [283] (byte) current_movedown_slow#37 ← phi( play_move_down::@10/(byte) current_movedown_slow#14 play_move_down::@17/(byte) current_movedown_slow#23 )
  [283] (byte) level#33 ← phi( play_move_down::@10/(byte) level#10 play_move_down::@17/(byte) level#19 )
  [283] (dword) score_bcd#26 ← phi( play_move_down::@10/(dword) score_bcd#18 play_move_down::@17/(dword) score_bcd#16 )
  [283] (word) lines_bcd#26 ← phi( play_move_down::@10/(word) lines_bcd#19 play_move_down::@17/(word) lines_bcd#17 )
  [283] (byte) current_ypos#38 ← phi( play_move_down::@10/(byte) current_ypos#3 play_move_down::@17/(byte) current_ypos#6 )
  to:play_move_down::@return
play_move_down::@return: scope:[play_move_down]  from play_move_down::@11 play_move_down::@3
  [284] (byte) next_piece_idx#16 ← phi( play_move_down::@11/(byte) next_piece_idx#30 play_move_down::@3/(byte) next_piece_idx#10 )
  [284] (byte) game_over#15 ← phi( play_move_down::@11/(byte) game_over#27 play_move_down::@3/(byte) game_over#10 )
  [284] (byte) current_xpos#22 ← phi( play_move_down::@11/(byte) current_xpos#43 play_move_down::@3/(byte) current_xpos#14 )
  [284] (byte*) current_piece_gfx#20 ← phi( play_move_down::@11/(byte*) current_piece_gfx#35 play_move_down::@3/(byte*) current_piece_gfx#13 )
  [284] (byte) current_orientation#20 ← phi( play_move_down::@11/(byte) current_orientation#37 play_move_down::@3/(byte) current_orientation#13 )
  [284] (byte) current_piece_char#16 ← phi( play_move_down::@11/(byte) current_piece_char#29 play_move_down::@3/(byte) current_piece_char#10 )
  [284] (byte*) current_piece#15 ← phi( play_move_down::@11/(byte*) current_piece#28 play_move_down::@3/(byte*) current_piece#10 )
  [284] (byte) level_bcd#17 ← phi( play_move_down::@11/(byte) level_bcd#31 play_move_down::@3/(byte) level_bcd#11 )
  [284] (byte) current_movedown_slow#21 ← phi( play_move_down::@11/(byte) current_movedown_slow#37 play_move_down::@3/(byte) current_movedown_slow#14 )
  [284] (byte) level#17 ← phi( play_move_down::@11/(byte) level#33 play_move_down::@3/(byte) level#10 )
  [284] (dword) score_bcd#14 ← phi( play_move_down::@11/(dword) score_bcd#26 play_move_down::@3/(dword) score_bcd#18 )
  [284] (word) lines_bcd#15 ← phi( play_move_down::@11/(word) lines_bcd#26 play_move_down::@3/(word) lines_bcd#19 )
  [284] (byte) current_ypos#19 ← phi( play_move_down::@11/(byte) current_ypos#38 play_move_down::@3/(byte) current_ypos#11 )
  [284] (byte) current_movedown_counter#14 ← phi( play_move_down::@11/(byte) 0 play_move_down::@3/(byte) current_movedown_counter#12 )
  [284] (byte) play_move_down::return#3 ← phi( play_move_down::@11/(byte) 1 play_move_down::@3/(byte) 0 )
  [285] return 
  to:@return
play_move_down::@10: scope:[play_move_down]  from play_move_down::@13
  [286] (byte) current_ypos#3 ← ++ (byte) current_ypos#11
  to:play_move_down::@11
play_spawn_current: scope:[play_spawn_current]  from main::@12 main::@13 play_move_down::@16
  [287] (byte) game_over#65 ← phi( main::@12/(byte) 0 main::@13/(byte) game_over#52 play_move_down::@16/(byte) game_over#10 )
  [287] (byte) next_piece_idx#17 ← phi( main::@12/(byte) 0 main::@13/(byte) play_spawn_current::piece_idx#2 play_move_down::@16/(byte) next_piece_idx#10 )
  [288] (byte) play_spawn_current::current_piece_idx#0 ← (byte) next_piece_idx#17
  [289] (byte~) play_spawn_current::$7 ← (byte) play_spawn_current::current_piece_idx#0 << (byte) 1
  [290] (byte) current_piece_char#5 ← *((const byte[]) PIECES_CHARS#0 + (byte) play_spawn_current::current_piece_idx#0)
  [291] (byte) current_xpos#100 ← *((const byte[]) PIECES_START_X#0 + (byte) play_spawn_current::current_piece_idx#0)
  [292] (byte) current_ypos#6 ← *((const byte[]) PIECES_START_Y#0 + (byte) play_spawn_current::current_piece_idx#0)
  [293] (byte) play_collision::xpos#4 ← (byte) current_xpos#100
  [294] (byte) play_collision::ypos#4 ← (byte) current_ypos#6
  [295] (byte*~) current_piece#100 ← (byte*)*((const word[]) PIECES#0 + (byte~) play_spawn_current::$7)
  [296] call play_collision 
  [297] (byte) play_collision::return#10 ← (byte) play_collision::return#15
  to:play_spawn_current::@4
play_spawn_current::@4: scope:[play_spawn_current]  from play_spawn_current
  [298] (byte~) play_spawn_current::$1 ← (byte) play_collision::return#10
  [299] if((byte~) play_spawn_current::$1!=(const byte) COLLISION_PLAYFIELD#0) goto play_spawn_current::@5
  to:play_spawn_current::@1
play_spawn_current::@5: scope:[play_spawn_current]  from play_spawn_current::@4
  [300] phi()
  to:play_spawn_current::@1
play_spawn_current::@1: scope:[play_spawn_current]  from play_spawn_current::@4 play_spawn_current::@5
  [301] (byte) game_over#52 ← phi( play_spawn_current::@5/(byte) game_over#65 play_spawn_current::@4/(byte) 1 )
  to:play_spawn_current::@2
play_spawn_current::@2: scope:[play_spawn_current]  from play_spawn_current::@1 play_spawn_current::@3
  [302] (byte) play_spawn_current::piece_idx#2 ← phi( play_spawn_current::@1/(byte) 7 play_spawn_current::@3/(byte) play_spawn_current::piece_idx#1 )
  [303] if((byte) play_spawn_current::piece_idx#2==(byte) 7) goto play_spawn_current::sid_rnd1
  to:play_spawn_current::@return
play_spawn_current::@return: scope:[play_spawn_current]  from play_spawn_current::@2
  [304] return 
  to:@return
play_spawn_current::sid_rnd1: scope:[play_spawn_current]  from play_spawn_current::@2
  [305] (byte) play_spawn_current::sid_rnd1_return#0 ← *((const byte*) SID_VOICE3_OSC#0)
  to:play_spawn_current::@3
play_spawn_current::@3: scope:[play_spawn_current]  from play_spawn_current::sid_rnd1
  [306] (byte) play_spawn_current::piece_idx#1 ← (byte) play_spawn_current::sid_rnd1_return#0 & (byte) 7
  to:play_spawn_current::@2
play_update_score: scope:[play_update_score]  from play_move_down::@15
  [307] if((byte) play_update_score::removed#0==(byte) 0) goto play_update_score::@return
  to:play_update_score::@1
play_update_score::@1: scope:[play_update_score]  from play_update_score
  [308] (byte~) play_update_score::$2 ← < (word) lines_bcd#19
  [309] (byte) play_update_score::lines_before#0 ← (byte~) play_update_score::$2 & (byte) $f0
  [310] (byte~) play_update_score::$9 ← (byte) play_update_score::removed#0 << (byte) 2
  [311] (dword) play_update_score::add_bcd#0 ← *((const dword[5]) score_add_bcd#0 + (byte~) play_update_score::$9)
  asm { sed  }
  [313] (word) lines_bcd#29 ← (word) lines_bcd#19 + (byte) play_update_score::removed#0
  [314] (dword) score_bcd#29 ← (dword) score_bcd#18 + (dword) play_update_score::add_bcd#0
  asm { cld  }
  [316] (byte~) play_update_score::$4 ← < (word) lines_bcd#29
  [317] (byte) play_update_score::lines_after#0 ← (byte~) play_update_score::$4 & (byte) $f0
  [318] if((byte) play_update_score::lines_before#0==(byte) play_update_score::lines_after#0) goto play_update_score::@return
  to:play_update_score::@2
play_update_score::@2: scope:[play_update_score]  from play_update_score::@1
  [319] phi()
  [320] call play_increase_level 
  to:play_update_score::@return
play_update_score::@return: scope:[play_update_score]  from play_update_score play_update_score::@1 play_update_score::@2
  [321] (byte) level_bcd#19 ← phi( play_update_score/(byte) level_bcd#11 play_update_score::@1/(byte) level_bcd#11 play_update_score::@2/(byte) level_bcd#62 )
  [321] (byte) current_movedown_slow#23 ← phi( play_update_score/(byte) current_movedown_slow#14 play_update_score::@1/(byte) current_movedown_slow#14 play_update_score::@2/(byte) current_movedown_slow#66 )
  [321] (byte) level#19 ← phi( play_update_score/(byte) level#10 play_update_score::@1/(byte) level#10 play_update_score::@2/(byte) level#21 )
  [321] (dword) score_bcd#16 ← phi( play_update_score/(dword) score_bcd#18 play_update_score::@1/(dword) score_bcd#29 play_update_score::@2/(dword) score_bcd#29 )
  [321] (word) lines_bcd#17 ← phi( play_update_score/(word) lines_bcd#19 play_update_score::@1/(word) lines_bcd#29 play_update_score::@2/(word) lines_bcd#29 )
  [322] return 
  to:@return
play_increase_level: scope:[play_increase_level]  from play_update_score::@2
  [323] (byte) level#21 ← ++ (byte) level#10
  [324] if((byte) level#21>=(byte) $1d+(byte) 1) goto play_increase_level::@1
  to:play_increase_level::@3
play_increase_level::@3: scope:[play_increase_level]  from play_increase_level
  [325] (byte) current_movedown_slow#10 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0 + (byte) level#21)
  to:play_increase_level::@1
play_increase_level::@1: scope:[play_increase_level]  from play_increase_level play_increase_level::@3
  [326] (byte) current_movedown_slow#66 ← phi( play_increase_level/(byte) 1 play_increase_level::@3/(byte) current_movedown_slow#10 )
  [327] (byte) level_bcd#21 ← ++ (byte) level_bcd#11
  [328] (byte~) play_increase_level::$1 ← (byte) level_bcd#21 & (byte) $f
  [329] if((byte~) play_increase_level::$1!=(byte) $a) goto play_increase_level::@2
  to:play_increase_level::@4
play_increase_level::@4: scope:[play_increase_level]  from play_increase_level::@1
  [330] (byte) level_bcd#8 ← (byte) level_bcd#21 + (byte) 6
  to:play_increase_level::@2
play_increase_level::@2: scope:[play_increase_level]  from play_increase_level::@1 play_increase_level::@4
  [331] (byte) level_bcd#62 ← phi( play_increase_level::@1/(byte) level_bcd#21 play_increase_level::@4/(byte) level_bcd#8 )
  asm { sed  }
  to:play_increase_level::@5
play_increase_level::@5: scope:[play_increase_level]  from play_increase_level::@2 play_increase_level::@5
  [333] (byte) play_increase_level::b#2 ← phi( play_increase_level::@2/(byte) 0 play_increase_level::@5/(byte) play_increase_level::b#1 )
  [334] (byte~) play_increase_level::$5 ← (byte) play_increase_level::b#2 << (byte) 2
  [335] *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) ← *((const dword[5]) score_add_bcd#0 + (byte~) play_increase_level::$5) + *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_increase_level::$5)
  [336] (byte) play_increase_level::b#1 ← ++ (byte) play_increase_level::b#2
  [337] if((byte) play_increase_level::b#1!=(byte) 5) goto play_increase_level::@5
  to:play_increase_level::@6
play_increase_level::@6: scope:[play_increase_level]  from play_increase_level::@5
  asm { cld  }
  to:play_increase_level::@return
play_increase_level::@return: scope:[play_increase_level]  from play_increase_level::@6
  [339] return 
  to:@return
play_remove_lines: scope:[play_remove_lines]  from play_move_down::@14
  [340] phi()
  to:play_remove_lines::@1
play_remove_lines::@1: scope:[play_remove_lines]  from play_remove_lines play_remove_lines::@6
  [341] (byte) play_remove_lines::removed#11 ← phi( play_remove_lines/(byte) 0 play_remove_lines::@6/(byte) play_remove_lines::removed#8 )
  [341] (byte) play_remove_lines::y#8 ← phi( play_remove_lines/(byte) 0 play_remove_lines::@6/(byte) play_remove_lines::y#1 )
  [341] (byte) play_remove_lines::w#12 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 play_remove_lines::@6/(byte) play_remove_lines::w#11 )
  [341] (byte) play_remove_lines::r#3 ← phi( play_remove_lines/(const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte) 1 play_remove_lines::@6/(byte) play_remove_lines::r#1 )
  to:play_remove_lines::@2
play_remove_lines::@2: scope:[play_remove_lines]  from play_remove_lines::@1 play_remove_lines::@3
  [342] (byte) play_remove_lines::full#4 ← phi( play_remove_lines::@1/(byte) 1 play_remove_lines::@3/(byte) play_remove_lines::full#2 )
  [342] (byte) play_remove_lines::x#2 ← phi( play_remove_lines::@1/(byte) 0 play_remove_lines::@3/(byte) play_remove_lines::x#1 )
  [342] (byte) play_remove_lines::w#4 ← phi( play_remove_lines::@1/(byte) play_remove_lines::w#12 play_remove_lines::@3/(byte) play_remove_lines::w#1 )
  [342] (byte) play_remove_lines::r#2 ← phi( play_remove_lines::@1/(byte) play_remove_lines::r#3 play_remove_lines::@3/(byte) play_remove_lines::r#1 )
  [343] (byte) play_remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::r#2)
  [344] (byte) play_remove_lines::r#1 ← -- (byte) play_remove_lines::r#2
  [345] if((byte) play_remove_lines::c#0!=(byte) 0) goto play_remove_lines::@9
  to:play_remove_lines::@3
play_remove_lines::@9: scope:[play_remove_lines]  from play_remove_lines::@2
  [346] phi()
  to:play_remove_lines::@3
play_remove_lines::@3: scope:[play_remove_lines]  from play_remove_lines::@2 play_remove_lines::@9
  [347] (byte) play_remove_lines::full#2 ← phi( play_remove_lines::@9/(byte) play_remove_lines::full#4 play_remove_lines::@2/(byte) 0 )
  [348] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#4) ← (byte) play_remove_lines::c#0
  [349] (byte) play_remove_lines::w#1 ← -- (byte) play_remove_lines::w#4
  [350] (byte) play_remove_lines::x#1 ← ++ (byte) play_remove_lines::x#2
  [351] if((byte) play_remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte) 1+(byte) 1) goto play_remove_lines::@2
  to:play_remove_lines::@4
play_remove_lines::@4: scope:[play_remove_lines]  from play_remove_lines::@3
  [352] if((byte) play_remove_lines::full#2!=(byte) 1) goto play_remove_lines::@6
  to:play_remove_lines::@5
play_remove_lines::@5: scope:[play_remove_lines]  from play_remove_lines::@4
  [353] (byte) play_remove_lines::w#2 ← (byte) play_remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0
  [354] (byte) play_remove_lines::removed#1 ← ++ (byte) play_remove_lines::removed#11
  to:play_remove_lines::@6
play_remove_lines::@6: scope:[play_remove_lines]  from play_remove_lines::@4 play_remove_lines::@5
  [355] (byte) play_remove_lines::removed#8 ← phi( play_remove_lines::@4/(byte) play_remove_lines::removed#11 play_remove_lines::@5/(byte) play_remove_lines::removed#1 )
  [355] (byte) play_remove_lines::w#11 ← phi( play_remove_lines::@4/(byte) play_remove_lines::w#1 play_remove_lines::@5/(byte) play_remove_lines::w#2 )
  [356] (byte) play_remove_lines::y#1 ← ++ (byte) play_remove_lines::y#8
  [357] if((byte) play_remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_remove_lines::@1
  to:play_remove_lines::@7
play_remove_lines::@7: scope:[play_remove_lines]  from play_remove_lines::@6 play_remove_lines::@8
  [358] (byte) play_remove_lines::w#6 ← phi( play_remove_lines::@8/(byte) play_remove_lines::w#3 play_remove_lines::@6/(byte) play_remove_lines::w#11 )
  [359] if((byte) play_remove_lines::w#6!=(byte) $ff) goto play_remove_lines::@8
  to:play_remove_lines::@return
play_remove_lines::@return: scope:[play_remove_lines]  from play_remove_lines::@7
  [360] return 
  to:@return
play_remove_lines::@8: scope:[play_remove_lines]  from play_remove_lines::@7
  [361] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) play_remove_lines::w#6) ← (byte) 0
  [362] (byte) play_remove_lines::w#3 ← -- (byte) play_remove_lines::w#6
  to:play_remove_lines::@7
play_lock_current: scope:[play_lock_current]  from play_move_down::@9
  [363] (byte) play_lock_current::yp#0 ← (byte) current_ypos#11
  to:play_lock_current::@1
play_lock_current::@1: scope:[play_lock_current]  from play_lock_current play_lock_current::@6
  [364] (byte) play_lock_current::l#6 ← phi( play_lock_current/(byte) 0 play_lock_current::@6/(byte) play_lock_current::l#1 )
  [364] (byte) play_lock_current::i#3 ← phi( play_lock_current/(byte) 0 play_lock_current::@6/(byte~) play_lock_current::i#7 )
  [364] (byte) play_lock_current::yp#2 ← phi( play_lock_current/(byte) play_lock_current::yp#0 play_lock_current::@6/(byte) play_lock_current::yp#1 )
  [365] (byte~) play_lock_current::$4 ← (byte) play_lock_current::yp#2 << (byte) 1
  [366] (byte*) play_lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_lock_current::$4)
  [367] (byte) play_lock_current::xp#0 ← (byte) current_xpos#14
  to:play_lock_current::@2
play_lock_current::@2: scope:[play_lock_current]  from play_lock_current::@1 play_lock_current::@7
  [368] (byte) play_lock_current::c#2 ← phi( play_lock_current::@1/(byte) 0 play_lock_current::@7/(byte) play_lock_current::c#1 )
  [368] (byte) play_lock_current::xp#2 ← phi( play_lock_current::@1/(byte) play_lock_current::xp#0 play_lock_current::@7/(byte) play_lock_current::xp#1 )
  [368] (byte) play_lock_current::i#2 ← phi( play_lock_current::@1/(byte) play_lock_current::i#3 play_lock_current::@7/(byte~) play_lock_current::i#9 )
  [369] (byte) play_lock_current::i#1 ← ++ (byte) play_lock_current::i#2
  [370] if(*((byte*) current_piece_gfx#13 + (byte) play_lock_current::i#2)==(byte) 0) goto play_lock_current::@3
  to:play_lock_current::@4
play_lock_current::@4: scope:[play_lock_current]  from play_lock_current::@2
  [371] *((byte*) play_lock_current::playfield_line#0 + (byte) play_lock_current::xp#2) ← (byte) current_piece_char#10
  to:play_lock_current::@3
play_lock_current::@3: scope:[play_lock_current]  from play_lock_current::@2 play_lock_current::@4
  [372] (byte) play_lock_current::xp#1 ← ++ (byte) play_lock_current::xp#2
  [373] (byte) play_lock_current::c#1 ← ++ (byte) play_lock_current::c#2
  [374] if((byte) play_lock_current::c#1!=(byte) 4) goto play_lock_current::@7
  to:play_lock_current::@5
play_lock_current::@5: scope:[play_lock_current]  from play_lock_current::@3
  [375] (byte) play_lock_current::yp#1 ← ++ (byte) play_lock_current::yp#2
  [376] (byte) play_lock_current::l#1 ← ++ (byte) play_lock_current::l#6
  [377] if((byte) play_lock_current::l#1!=(byte) 4) goto play_lock_current::@6
  to:play_lock_current::@return
play_lock_current::@return: scope:[play_lock_current]  from play_lock_current::@5
  [378] return 
  to:@return
play_lock_current::@6: scope:[play_lock_current]  from play_lock_current::@5
  [379] (byte~) play_lock_current::i#7 ← (byte) play_lock_current::i#1
  to:play_lock_current::@1
play_lock_current::@7: scope:[play_lock_current]  from play_lock_current::@3
  [380] (byte~) play_lock_current::i#9 ← (byte) play_lock_current::i#1
  to:play_lock_current::@2
keyboard_event_pressed: scope:[keyboard_event_pressed]  from keyboard_event_scan::@1 keyboard_event_scan::@17 keyboard_event_scan::@2 keyboard_event_scan::@3 play_move_down::@1
  [381] (byte) keyboard_event_pressed::keycode#5 ← phi( keyboard_event_scan::@1/(const byte) KEY_RSHIFT#0 keyboard_event_scan::@2/(const byte) KEY_CTRL#0 keyboard_event_scan::@17/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@3/(const byte) KEY_COMMODORE#0 play_move_down::@1/(const byte) KEY_SPACE#0 )
  [382] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte) 3
  [383] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0)
  [384] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte) 7
  [385] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1)
  to:keyboard_event_pressed::@return
keyboard_event_pressed::@return: scope:[keyboard_event_pressed]  from keyboard_event_pressed
  [386] return 
  to:@return
keyboard_event_get: scope:[keyboard_event_get]  from main::@19
  [387] if((byte) keyboard_events_size#13==(byte) 0) goto keyboard_event_get::@return
  to:keyboard_event_get::@1
keyboard_event_get::@1: scope:[keyboard_event_get]  from keyboard_event_get
  [388] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13
  [389] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4)
  to:keyboard_event_get::@return
keyboard_event_get::@return: scope:[keyboard_event_get]  from keyboard_event_get keyboard_event_get::@1
  [390] (byte) keyboard_events_size#16 ← phi( keyboard_event_get/(byte) keyboard_events_size#13 keyboard_event_get::@1/(byte) keyboard_events_size#4 )
  [390] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get/(byte) $ff keyboard_event_get::@1/(byte) keyboard_event_get::return#1 )
  [391] return 
  to:@return
keyboard_event_scan: scope:[keyboard_event_scan]  from main::@18
  [392] phi()
  to:keyboard_event_scan::@7
keyboard_event_scan::@7: scope:[keyboard_event_scan]  from keyboard_event_scan keyboard_event_scan::@8
  [393] (byte) keyboard_events_size#30 ← phi( keyboard_event_scan/(byte) keyboard_events_size#19 keyboard_event_scan::@8/(byte) keyboard_events_size#13 )
  [393] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::keycode#13 )
  [393] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::row#1 )
  [394] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2
  [395] call keyboard_matrix_read 
  [396] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0
  to:keyboard_event_scan::@19
keyboard_event_scan::@19: scope:[keyboard_event_scan]  from keyboard_event_scan::@7
  [397] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2
  [398] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@9
  to:keyboard_event_scan::@16
keyboard_event_scan::@16: scope:[keyboard_event_scan]  from keyboard_event_scan::@19
  [399] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte) 8
  to:keyboard_event_scan::@8
keyboard_event_scan::@8: scope:[keyboard_event_scan]  from keyboard_event_scan::@15 keyboard_event_scan::@16
  [400] (byte) keyboard_events_size#13 ← phi( keyboard_event_scan::@15/(byte) keyboard_events_size#29 keyboard_event_scan::@16/(byte) keyboard_events_size#30 )
  [400] (byte) keyboard_event_scan::keycode#13 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::keycode#14 keyboard_event_scan::@16/(byte) keyboard_event_scan::keycode#1 )
  [401] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2
  [402] if((byte) keyboard_event_scan::row#1!=(byte) 8) goto keyboard_event_scan::@7
  to:keyboard_event_scan::@17
keyboard_event_scan::@17: scope:[keyboard_event_scan]  from keyboard_event_scan::@8
  [403] phi()
  [404] call keyboard_event_pressed 
  [405] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11
  to:keyboard_event_scan::@20
keyboard_event_scan::@20: scope:[keyboard_event_scan]  from keyboard_event_scan::@17
  [406] (byte~) keyboard_event_scan::$0 ← (byte) keyboard_event_pressed::return#0
  [407] if((byte~) keyboard_event_scan::$0==(byte) 0) goto keyboard_event_scan::@1
  to:keyboard_event_scan::@18
keyboard_event_scan::@18: scope:[keyboard_event_scan]  from keyboard_event_scan::@20
  [408] phi()
  to:keyboard_event_scan::@1
keyboard_event_scan::@1: scope:[keyboard_event_scan]  from keyboard_event_scan::@18 keyboard_event_scan::@20
  [409] phi()
  [410] call keyboard_event_pressed 
  [411] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11
  to:keyboard_event_scan::@21
keyboard_event_scan::@21: scope:[keyboard_event_scan]  from keyboard_event_scan::@1
  [412] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_pressed::return#1
  [413] if((byte~) keyboard_event_scan::$3==(byte) 0) goto keyboard_event_scan::@2
  to:keyboard_event_scan::@4
keyboard_event_scan::@4: scope:[keyboard_event_scan]  from keyboard_event_scan::@21
  [414] phi()
  to:keyboard_event_scan::@2
keyboard_event_scan::@2: scope:[keyboard_event_scan]  from keyboard_event_scan::@21 keyboard_event_scan::@4
  [415] phi()
  [416] call keyboard_event_pressed 
  [417] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11
  to:keyboard_event_scan::@22
keyboard_event_scan::@22: scope:[keyboard_event_scan]  from keyboard_event_scan::@2
  [418] (byte~) keyboard_event_scan::$6 ← (byte) keyboard_event_pressed::return#2
  [419] if((byte~) keyboard_event_scan::$6==(byte) 0) goto keyboard_event_scan::@3
  to:keyboard_event_scan::@5
keyboard_event_scan::@5: scope:[keyboard_event_scan]  from keyboard_event_scan::@22
  [420] phi()
  to:keyboard_event_scan::@3
keyboard_event_scan::@3: scope:[keyboard_event_scan]  from keyboard_event_scan::@22 keyboard_event_scan::@5
  [421] phi()
  [422] call keyboard_event_pressed 
  [423] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11
  to:keyboard_event_scan::@23
keyboard_event_scan::@23: scope:[keyboard_event_scan]  from keyboard_event_scan::@3
  [424] (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_pressed::return#10
  [425] if((byte~) keyboard_event_scan::$9==(byte) 0) goto keyboard_event_scan::@return
  to:keyboard_event_scan::@6
keyboard_event_scan::@6: scope:[keyboard_event_scan]  from keyboard_event_scan::@23
  [426] phi()
  to:keyboard_event_scan::@return
keyboard_event_scan::@return: scope:[keyboard_event_scan]  from keyboard_event_scan::@23 keyboard_event_scan::@6
  [427] return 
  to:@return
keyboard_event_scan::@9: scope:[keyboard_event_scan]  from keyboard_event_scan::@10 keyboard_event_scan::@19
  [428] (byte) keyboard_events_size#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#29 keyboard_event_scan::@19/(byte) keyboard_events_size#30 )
  [428] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::keycode#14 keyboard_event_scan::@19/(byte) keyboard_event_scan::keycode#11 )
  [428] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_scan::col#1 keyboard_event_scan::@19/(byte) 0 )
  [429] (byte~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)
  [430] (byte~) keyboard_event_scan::$16 ← (byte~) keyboard_event_scan::$15 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2)
  [431] if((byte~) keyboard_event_scan::$16==(byte) 0) goto keyboard_event_scan::@10
  to:keyboard_event_scan::@12
keyboard_event_scan::@12: scope:[keyboard_event_scan]  from keyboard_event_scan::@9
  [432] if((byte) keyboard_events_size#10==(byte) 8) goto keyboard_event_scan::@10
  to:keyboard_event_scan::@13
keyboard_event_scan::@13: scope:[keyboard_event_scan]  from keyboard_event_scan::@12
  [433] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2)
  [434] if((byte) keyboard_event_scan::event_type#0==(byte) 0) goto keyboard_event_scan::@11
  to:keyboard_event_scan::@14
keyboard_event_scan::@14: scope:[keyboard_event_scan]  from keyboard_event_scan::@13
  [435] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10
  [436] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10
  to:keyboard_event_scan::@10
keyboard_event_scan::@10: scope:[keyboard_event_scan]  from keyboard_event_scan::@11 keyboard_event_scan::@12 keyboard_event_scan::@14 keyboard_event_scan::@9
  [437] (byte) keyboard_events_size#29 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#10 keyboard_event_scan::@11/(byte) keyboard_events_size#1 keyboard_event_scan::@12/(byte) keyboard_events_size#10 keyboard_event_scan::@14/(byte) keyboard_events_size#2 )
  [438] (byte) keyboard_event_scan::keycode#14 ← ++ (byte) keyboard_event_scan::keycode#10
  [439] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2
  [440] if((byte) keyboard_event_scan::col#1!=(byte) 8) goto keyboard_event_scan::@9
  to:keyboard_event_scan::@15
keyboard_event_scan::@15: scope:[keyboard_event_scan]  from keyboard_event_scan::@10
  [441] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0
  to:keyboard_event_scan::@8
keyboard_event_scan::@11: scope:[keyboard_event_scan]  from keyboard_event_scan::@13
  [442] (byte~) keyboard_event_scan::$23 ← (byte) keyboard_event_scan::keycode#10 | (byte) $40
  [443] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte~) keyboard_event_scan::$23
  [444] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10
  to:keyboard_event_scan::@10
keyboard_matrix_read: scope:[keyboard_matrix_read]  from keyboard_event_scan::@7
  [445] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0)
  [446] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0)
  to:keyboard_matrix_read::@return
keyboard_matrix_read::@return: scope:[keyboard_matrix_read]  from keyboard_matrix_read
  [447] return 
  to:@return
render_show: scope:[render_show]  from main::@3
  [448] if((byte) render_screen_show#16==(byte) 0) goto render_show::toD0181
  to:render_show::toD0182
render_show::toD0182: scope:[render_show]  from render_show
  [449] phi()
  to:render_show::@1
render_show::@1: scope:[render_show]  from render_show::toD0181 render_show::toD0182
  [450] (byte) render_show::d018val#3 ← phi( render_show::toD0181/(const byte) render_show::toD0181_return#0 render_show::toD0182/(const byte) render_show::toD0182_return#0 )
  [451] *((const byte*) D018#0) ← (byte) render_show::d018val#3
  [452] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0 + (byte) level#10)
  [453] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0 + (byte) level#10)
  [454] (byte) render_screen_showing#1 ← (byte) render_screen_show#16
  to:render_show::@return
render_show::@return: scope:[render_show]  from render_show::@1
  [455] return 
  to:@return
render_show::toD0181: scope:[render_show]  from render_show
  [456] phi()
  to:render_show::@1
play_init: scope:[play_init]  from main::@11
  [457] phi()
  to:play_init::@1
play_init::@1: scope:[play_init]  from play_init play_init::@1
  [458] (byte) play_init::idx#2 ← phi( play_init/(byte) 0 play_init::@1/(byte) play_init::idx#1 )
  [458] (byte*) play_init::pli#2 ← phi( play_init/(const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 play_init::@1/(byte*) play_init::pli#1 )
  [458] (byte) play_init::j#2 ← phi( play_init/(byte) 0 play_init::@1/(byte) play_init::j#1 )
  [459] (byte~) play_init::$4 ← (byte) play_init::j#2 << (byte) 1
  [460] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) play_init::$4) ← (byte*) play_init::pli#2
  [461] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) play_init::j#2) ← (byte) play_init::idx#2
  [462] (byte*) play_init::pli#1 ← (byte*) play_init::pli#2 + (const byte) PLAYFIELD_COLS#0
  [463] (byte) play_init::idx#1 ← (byte) play_init::idx#2 + (const byte) PLAYFIELD_COLS#0
  [464] (byte) play_init::j#1 ← ++ (byte) play_init::j#2
  [465] if((byte) play_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto play_init::@1
  to:play_init::@2
play_init::@2: scope:[play_init]  from play_init::@1
  [466] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0
  [467] (byte) current_movedown_slow#1 ← *((const byte[]) MOVEDOWN_SLOW_SPEEDS#0)
  to:play_init::@3
play_init::@3: scope:[play_init]  from play_init::@2 play_init::@3
  [468] (byte) play_init::b#2 ← phi( play_init::@2/(byte) 0 play_init::@3/(byte) play_init::b#1 )
  [469] (byte~) play_init::$5 ← (byte) play_init::b#2 << (byte) 2
  [470] *((const dword[5]) score_add_bcd#0 + (byte~) play_init::$5) ← *((const dword[]) SCORE_BASE_BCD#0 + (byte~) play_init::$5)
  [471] (byte) play_init::b#1 ← ++ (byte) play_init::b#2
  [472] if((byte) play_init::b#1!=(byte) 5) goto play_init::@3
  to:play_init::@return
play_init::@return: scope:[play_init]  from play_init::@3
  [473] return 
  to:@return
sprites_irq_init: scope:[sprites_irq_init]  from main::@10
  asm { sei  }
  [475] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
  asm { ldaCIA1_INTERRUPT  }
  [477] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
  [478] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
  [479] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0
  [480] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f
  [481] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0
  [482] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0
  [483] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) sprites_irq()
  asm { cli  }
  to:sprites_irq_init::@return
sprites_irq_init::@return: scope:[sprites_irq_init]  from sprites_irq_init
  [485] return 
  to:@return
sprites_init: scope:[sprites_init]  from main::@9
  [486] *((const byte*) SPRITES_ENABLE#0) ← (byte) $f
  [487] *((const byte*) SPRITES_MC#0) ← (byte) 0
  [488] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0)
  [489] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0)
  to:sprites_init::@1
sprites_init::@1: scope:[sprites_init]  from sprites_init sprites_init::@1
  [490] (byte) sprites_init::xpos#2 ← phi( sprites_init/(byte)(number) $18+(number) $f*(number) 8 sprites_init::@1/(byte) sprites_init::xpos#1 )
  [490] (byte) sprites_init::s#2 ← phi( sprites_init/(byte) 0 sprites_init::@1/(byte) sprites_init::s#1 )
  [491] (byte) sprites_init::s2#0 ← (byte) sprites_init::s#2 << (byte) 1
  [492] *((const byte*) SPRITES_XPOS#0 + (byte) sprites_init::s2#0) ← (byte) sprites_init::xpos#2
  [493] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::s#2) ← (const byte) BLACK#0
  [494] (byte) sprites_init::xpos#1 ← (byte) sprites_init::xpos#2 + (byte) $18
  [495] (byte) sprites_init::s#1 ← ++ (byte) sprites_init::s#2
  [496] if((byte) sprites_init::s#1!=(byte) 4) goto sprites_init::@1
  to:sprites_init::@return
sprites_init::@return: scope:[sprites_init]  from sprites_init::@1
  [497] return 
  to:@return
render_init: scope:[render_init]  from main::@8
  [498] phi()
  to:render_init::vicSelectGfxBank1
render_init::vicSelectGfxBank1: scope:[render_init]  from render_init
  [499] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3
  to:render_init::vicSelectGfxBank1_toDd001
render_init::vicSelectGfxBank1_toDd001: scope:[render_init]  from render_init::vicSelectGfxBank1
  [500] phi()
  to:render_init::vicSelectGfxBank1_@1
render_init::vicSelectGfxBank1_@1: scope:[render_init]  from render_init::vicSelectGfxBank1_toDd001
  [501] *((const byte*) CIA2_PORT_A#0) ← (const byte) render_init::vicSelectGfxBank1_toDd001_return#0
  to:render_init::@2
render_init::@2: scope:[render_init]  from render_init::vicSelectGfxBank1_@1
  [502] *((const byte*) D011#0) ← (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3
  [503] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0
  [504] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0
  [505] *((const byte*) BGCOL2#0) ← *((const byte[]) PIECES_COLORS_1#0)
  [506] *((const byte*) BGCOL3#0) ← *((const byte[]) PIECES_COLORS_2#0)
  [507] *((const byte*) BGCOL4#0) ← (const byte) GREY#0
  [508] call render_screen_original 
  to:render_init::@3
render_init::@3: scope:[render_init]  from render_init::@2
  [509] phi()
  [510] call render_screen_original 
  to:render_init::@1
render_init::@1: scope:[render_init]  from render_init::@1 render_init::@3
  [511] (byte*) render_init::li_2#2 ← phi( render_init::@1/(byte*) render_init::li_2#1 render_init::@3/(const byte*) PLAYFIELD_SCREEN_2#0+(byte)(number) 2*(number) $28+(byte) $10 )
  [511] (byte*) render_init::li_1#2 ← phi( render_init::@1/(byte*) render_init::li_1#1 render_init::@3/(const byte*) PLAYFIELD_SCREEN_1#0+(byte)(number) 2*(number) $28+(byte) $10 )
  [511] (byte) render_init::i#2 ← phi( render_init::@1/(byte) render_init::i#1 render_init::@3/(byte) 0 )
  [512] (byte~) render_init::$13 ← (byte) render_init::i#2 << (byte) 1
  [513] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_1#0 + (byte~) render_init::$13) ← (byte*) render_init::li_1#2
  [514] *((const byte*[PLAYFIELD_LINES#0]) screen_lines_2#0 + (byte~) render_init::$13) ← (byte*) render_init::li_2#2
  [515] (byte*) render_init::li_1#1 ← (byte*) render_init::li_1#2 + (byte) $28
  [516] (byte*) render_init::li_2#1 ← (byte*) render_init::li_2#2 + (byte) $28
  [517] (byte) render_init::i#1 ← ++ (byte) render_init::i#2
  [518] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0-(byte) 1+(byte) 1) goto render_init::@1
  to:render_init::@return
render_init::@return: scope:[render_init]  from render_init::@1
  [519] return 
  to:@return
render_screen_original: scope:[render_screen_original]  from render_init::@2 render_init::@3
  [520] (byte*) render_screen_original::screen#9 ← phi( render_init::@2/(const byte*) PLAYFIELD_SCREEN_1#0 render_init::@3/(const byte*) PLAYFIELD_SCREEN_2#0 )
  to:render_screen_original::@1
render_screen_original::@1: scope:[render_screen_original]  from render_screen_original render_screen_original::@5
  [521] (byte) render_screen_original::y#6 ← phi( render_screen_original/(byte) 0 render_screen_original::@5/(byte) render_screen_original::y#1 )
  [521] (byte*) render_screen_original::ocols#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_COLORS_ORIGINAL#0+(byte)(number) $20*(number) 2 render_screen_original::@5/(byte*) render_screen_original::ocols#1 )
  [521] (byte*) render_screen_original::oscr#4 ← phi( render_screen_original/(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0+(byte)(number) $20*(number) 2 render_screen_original::@5/(byte*) render_screen_original::oscr#1 )
  [521] (byte*) render_screen_original::cols#7 ← phi( render_screen_original/(const byte*) COLS#0 render_screen_original::@5/(byte*) render_screen_original::cols#3 )
  [521] (byte*) render_screen_original::screen#8 ← phi( render_screen_original/(byte*) render_screen_original::screen#9 render_screen_original::@5/(byte*) render_screen_original::screen#10 )
  to:render_screen_original::@2
render_screen_original::@2: scope:[render_screen_original]  from render_screen_original::@1 render_screen_original::@2
  [522] (byte) render_screen_original::x#4 ← phi( render_screen_original::@1/(byte) 0 render_screen_original::@2/(byte) render_screen_original::x#1 )
  [522] (byte*) render_screen_original::cols#4 ← phi( render_screen_original::@1/(byte*) render_screen_original::cols#7 render_screen_original::@2/(byte*) render_screen_original::cols#1 )
  [522] (byte*) render_screen_original::screen#5 ← phi( render_screen_original::@1/(byte*) render_screen_original::screen#8 render_screen_original::@2/(byte*) render_screen_original::screen#2 )
  [523] *((byte*) render_screen_original::screen#5) ← (const byte) render_screen_original::SPACE#0
  [524] (byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5
  [525] *((byte*) render_screen_original::cols#4) ← (const byte) BLACK#0
  [526] (byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4
  [527] (byte) render_screen_original::x#1 ← ++ (byte) render_screen_original::x#4
  [528] if((byte) render_screen_original::x#1!=(byte) 4) goto render_screen_original::@2
  to:render_screen_original::@3
render_screen_original::@3: scope:[render_screen_original]  from render_screen_original::@2 render_screen_original::@3
  [529] (byte) render_screen_original::x#5 ← phi( render_screen_original::@2/(byte) render_screen_original::x#1 render_screen_original::@3/(byte) render_screen_original::x#2 )
  [529] (byte*) render_screen_original::cols#5 ← phi( render_screen_original::@2/(byte*) render_screen_original::cols#1 render_screen_original::@3/(byte*) render_screen_original::cols#2 )
  [529] (byte*) render_screen_original::ocols#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::ocols#4 render_screen_original::@3/(byte*) render_screen_original::ocols#1 )
  [529] (byte*) render_screen_original::screen#6 ← phi( render_screen_original::@2/(byte*) render_screen_original::screen#2 render_screen_original::@3/(byte*) render_screen_original::screen#3 )
  [529] (byte*) render_screen_original::oscr#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::oscr#4 render_screen_original::@3/(byte*) render_screen_original::oscr#1 )
  [530] *((byte*) render_screen_original::screen#6) ← *((byte*) render_screen_original::oscr#2)
  [531] (byte*) render_screen_original::screen#3 ← ++ (byte*) render_screen_original::screen#6
  [532] (byte*) render_screen_original::oscr#1 ← ++ (byte*) render_screen_original::oscr#2
  [533] *((byte*) render_screen_original::cols#5) ← *((byte*) render_screen_original::ocols#2)
  [534] (byte*) render_screen_original::cols#2 ← ++ (byte*) render_screen_original::cols#5
  [535] (byte*) render_screen_original::ocols#1 ← ++ (byte*) render_screen_original::ocols#2
  [536] (byte) render_screen_original::x#2 ← ++ (byte) render_screen_original::x#5
  [537] if((byte) render_screen_original::x#2!=(byte) $24) goto render_screen_original::@3
  to:render_screen_original::@4
render_screen_original::@4: scope:[render_screen_original]  from render_screen_original::@3 render_screen_original::@4
  [538] (byte) render_screen_original::x#6 ← phi( render_screen_original::@3/(byte) render_screen_original::x#2 render_screen_original::@4/(byte) render_screen_original::x#3 )
  [538] (byte*) render_screen_original::cols#6 ← phi( render_screen_original::@3/(byte*) render_screen_original::cols#2 render_screen_original::@4/(byte*) render_screen_original::cols#3 )
  [538] (byte*) render_screen_original::screen#7 ← phi( render_screen_original::@3/(byte*) render_screen_original::screen#3 render_screen_original::@4/(byte*) render_screen_original::screen#10 )
  [539] *((byte*) render_screen_original::screen#7) ← (const byte) render_screen_original::SPACE#0
  [540] (byte*) render_screen_original::screen#10 ← ++ (byte*) render_screen_original::screen#7
  [541] *((byte*) render_screen_original::cols#6) ← (const byte) BLACK#0
  [542] (byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6
  [543] (byte) render_screen_original::x#3 ← ++ (byte) render_screen_original::x#6
  [544] if((byte) render_screen_original::x#3!=(byte) $28) goto render_screen_original::@4
  to:render_screen_original::@5
render_screen_original::@5: scope:[render_screen_original]  from render_screen_original::@4
  [545] (byte) render_screen_original::y#1 ← ++ (byte) render_screen_original::y#6
  [546] if((byte) render_screen_original::y#1!=(byte) $19) goto render_screen_original::@1
  to:render_screen_original::@return
render_screen_original::@return: scope:[render_screen_original]  from render_screen_original::@5
  [547] return 
  to:@return
sid_rnd_init: scope:[sid_rnd_init]  from main
  [548] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff
  [549] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0
  to:sid_rnd_init::@return
sid_rnd_init::@return: scope:[sid_rnd_init]  from sid_rnd_init
  [550] return 
  to:@return
sprites_irq: scope:[sprites_irq]  from
  asm { cld  }
  [552] (byte) sprites_irq::ypos#0 ← (byte) irq_sprite_ypos#0
  [553] *((const byte*) SPRITES_YPOS#0) ← (byte) sprites_irq::ypos#0
  [554] *((const byte*) SPRITES_YPOS#0+(byte) 2) ← (byte) sprites_irq::ypos#0
  [555] *((const byte*) SPRITES_YPOS#0+(byte) 4) ← (byte) sprites_irq::ypos#0
  [556] *((const byte*) SPRITES_YPOS#0+(byte) 6) ← (byte) sprites_irq::ypos#0
  [557] (byte~) sprites_irq::$0 ← (byte) irq_raster_next#0 + (byte) 1
  [558] (byte) sprites_irq::raster_sprite_gfx_modify#0 ← (byte~) sprites_irq::$0
  to:sprites_irq::@8
sprites_irq::@8: scope:[sprites_irq]  from sprites_irq sprites_irq::@8
  [559] if(*((const byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@8
  to:sprites_irq::@9
sprites_irq::@9: scope:[sprites_irq]  from sprites_irq::@8
  [560] (byte) sprites_irq::ptr#0 ← (byte) irq_sprite_ptr#0
  [561] if((byte) render_screen_showing#0==(byte) 0) goto sprites_irq::@1
  to:sprites_irq::@10
sprites_irq::@10: scope:[sprites_irq]  from sprites_irq::@9
  [562] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0) ← (byte) sprites_irq::ptr#0
  [563] (byte) sprites_irq::ptr#3 ← ++ (byte) sprites_irq::ptr#0
  [564] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 1) ← (byte) sprites_irq::ptr#3
  [565] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 2) ← (byte) sprites_irq::ptr#3
  [566] (byte) sprites_irq::ptr#4 ← ++ (byte) sprites_irq::ptr#3
  [567] *((const byte*) PLAYFIELD_SPRITE_PTRS_2#0+(byte) 3) ← (byte) sprites_irq::ptr#4
  to:sprites_irq::@2
sprites_irq::@2: scope:[sprites_irq]  from sprites_irq::@1 sprites_irq::@10
  [568] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0
  [569] if((byte) irq_cnt#1==(byte) 9) goto sprites_irq::@3
  to:sprites_irq::@6
sprites_irq::@6: scope:[sprites_irq]  from sprites_irq::@2
  [570] if((byte) irq_cnt#1==(byte) $a) goto sprites_irq::@4
  to:sprites_irq::@7
sprites_irq::@7: scope:[sprites_irq]  from sprites_irq::@6
  [571] (byte) irq_raster_next#3 ← (byte) irq_raster_next#0 + (byte) $14
  [572] (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#0 + (byte) $15
  [573] (byte) irq_sprite_ptr#3 ← (byte) irq_sprite_ptr#0 + (byte) 3
  to:sprites_irq::@5
sprites_irq::@5: scope:[sprites_irq]  from sprites_irq::@11 sprites_irq::@4 sprites_irq::@7
  [574] (byte) irq_sprite_ptr#11 ← phi( sprites_irq::@11/(byte) irq_sprite_ptr#1 sprites_irq::@4/(byte) irq_sprite_ptr#2 sprites_irq::@7/(byte) irq_sprite_ptr#3 )
  [574] (byte) irq_sprite_ypos#11 ← phi( sprites_irq::@11/(byte) irq_sprite_ypos#1 sprites_irq::@4/(byte) irq_sprite_ypos#2 sprites_irq::@7/(byte) irq_sprite_ypos#3 )
  [574] (byte) irq_cnt#3 ← phi( sprites_irq::@11/(byte) irq_cnt#1 sprites_irq::@4/(byte) irq_cnt#2 sprites_irq::@7/(byte) irq_cnt#1 )
  [574] (byte) irq_raster_next#4 ← phi( sprites_irq::@11/(byte) irq_raster_next#1 sprites_irq::@4/(byte) irq_raster_next#2 sprites_irq::@7/(byte) irq_raster_next#3 )
  [575] *((const byte*) RASTER#0) ← (byte) irq_raster_next#4
  [576] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
  to:sprites_irq::@return
sprites_irq::@return: scope:[sprites_irq]  from sprites_irq::@5
  [577] return 
  to:@return
sprites_irq::@4: scope:[sprites_irq]  from sprites_irq::@6
  [578] (byte) irq_cnt#2 ← (byte) 0
  [579] (byte) irq_raster_next#2 ← (const byte) IRQ_RASTER_FIRST#0
  [580] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte) $15
  [581] (byte) irq_sprite_ptr#2 ← (byte) irq_sprite_ptr#0 + (byte) 3
  to:sprites_irq::@5
sprites_irq::@3: scope:[sprites_irq]  from sprites_irq::@2
  [582] (byte) irq_raster_next#1 ← (byte) irq_raster_next#0 + (byte) $15
  [583] (byte) irq_sprite_ypos#1 ← (const byte) SPRITES_FIRST_YPOS#0
  to:sprites_irq::toSpritePtr2
sprites_irq::toSpritePtr2: scope:[sprites_irq]  from sprites_irq::@3
  [584] phi()
  to:sprites_irq::@11
sprites_irq::@11: scope:[sprites_irq]  from sprites_irq::toSpritePtr2
  [585] (byte) irq_sprite_ptr#1 ← (const byte) sprites_irq::toSpritePtr2_return#0
  to:sprites_irq::@5
sprites_irq::@1: scope:[sprites_irq]  from sprites_irq::@9
  [586] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0) ← (byte) sprites_irq::ptr#0
  [587] (byte) sprites_irq::ptr#1 ← ++ (byte) sprites_irq::ptr#0
  [588] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 1) ← (byte) sprites_irq::ptr#1
  [589] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 2) ← (byte) sprites_irq::ptr#1
  [590] (byte) sprites_irq::ptr#2 ← ++ (byte) sprites_irq::ptr#1
  [591] *((const byte*) PLAYFIELD_SPRITE_PTRS_1#0+(byte) 3) ← (byte) sprites_irq::ptr#2
  to:sprites_irq::@2
