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