@begin: scope:[] from [0] phi() to:@1 @1: scope:[] from @begin [1] phi() [2] call main to:@end @end: scope:[] from @1 [3] phi() (void()) main() main: scope:[main] from @1 [4] phi() [5] call init to:main::@1 main::@1: scope:[main] from main main::@1 main::@2 [6] (signed word) yvel_init#13 ← phi( main::@1/(signed word) yvel_init#13 main/(signed word) $64 main::@2/(signed word) yvel_init#11 ) [6] (signed word) xvel#12 ← phi( main::@1/(signed word) xvel#12 main/(signed word) $c8 main::@2/(signed word) xvel#10 ) [6] (signed word) ypos#13 ← phi( main::@1/(signed word) ypos#13 main/(signed word) 0 main::@2/(signed word) ypos#11 ) [6] (signed word) xpos#12 ← phi( main::@1/(signed word) xpos#12 main/(signed word) 0 main::@2/(signed word) xpos#10 ) [6] (signed word) yvel#12 ← phi( main::@1/(signed word) yvel#12 main/(signed word) $64 main::@2/(signed word) yvel#10 ) [7] if(*((const nomodify byte*) RASTER)!=(byte) $ff) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 [8] phi() [9] call anim to:main::@1 (void()) anim() anim: scope:[anim] from main::@2 [10] if((signed word) ypos#13>=(signed byte) 0) goto anim::@1 to:anim::@2 anim::@2: scope:[anim] from anim [11] (signed word) xvel#14 ← - (signed word) xvel#12 [12] (signed word) yvel_init#3 ← (signed word) yvel_init#13 - (signed byte) $a [13] if((signed word) yvel_init#3>=(signed word) -$c8) goto anim::@4 to:anim::@3 anim::@4: scope:[anim] from anim::@2 [14] phi() to:anim::@3 anim::@3: scope:[anim] from anim::@2 anim::@4 [15] (signed word) yvel#4 ← phi( anim::@4/(signed word) yvel_init#3 anim::@2/(signed word) $c8 ) [16] (signed word) yvel#21 ← (signed word) yvel#4 to:anim::@1 anim::@1: scope:[anim] from anim anim::@3 [17] (signed word) yvel_init#11 ← phi( anim/(signed word) yvel_init#13 anim::@3/(signed word) yvel#4 ) [17] (signed word) ypos#10 ← phi( anim/(signed word) ypos#13 anim::@3/(signed byte) 0 ) [17] (signed word) xvel#10 ← phi( anim/(signed word) xvel#12 anim::@3/(signed word) xvel#14 ) [17] (signed word) xpos#9 ← phi( anim/(signed word) xpos#12 anim::@3/(signed byte) 0 ) [17] (signed word) yvel#9 ← phi( anim/(signed word) yvel#12 anim::@3/(signed word) yvel#21 ) [18] (signed word) yvel#10 ← (signed word) yvel#9 + (const nomodify signed word) g [19] (signed word) xpos#10 ← (signed word) xpos#9 + (signed word) xvel#10 [20] (signed word) ypos#11 ← (signed word) ypos#10 + (signed word) yvel#10 [21] (signed word~) anim::$5 ← (signed word) xpos#10 >> (signed byte) 7 [22] (signed word) anim::sprite_x#0 ← (signed word~) anim::$5 + (signed word) $a0 [23] (signed word~) anim::$7 ← (signed word) ypos#11 >> (signed byte) 5 [24] (signed word) anim::sprite_y#0 ← (signed word) $e6 - (signed word~) anim::$7 [25] *((const nomodify byte*) SPRITES_XPOS) ← (byte)(signed word) anim::sprite_x#0 [26] *((const nomodify byte*) SPRITES_YPOS) ← (byte)(signed word) anim::sprite_y#0 [27] (byte~) anim::$9 ← > (signed word) anim::sprite_x#0 [28] *((const nomodify byte*) SPRITES_XMSB) ← (byte~) anim::$9 to:anim::@return anim::@return: scope:[anim] from anim::@1 [29] return to:@return (void()) init() init: scope:[init] from main [30] *((const nomodify byte*) SPRITES_ENABLE) ← (byte) 1 [31] *((const nomodify byte*) SPRITES_EXPAND_X) ← (byte) 0 [32] *((const nomodify byte*) SPRITES_EXPAND_Y) ← (byte) 0 [33] *((const nomodify byte*) SPRITES_XPOS) ← (byte) $64 [34] *((const nomodify byte*) SPRITES_YPOS) ← (byte) $64 [35] *((const nomodify byte*) SPRITES_COLOR) ← (const nomodify byte) WHITE [36] *((const nomodify byte*) SPRITES_PTR) ← (byte)(const nomodify byte*) SPRITE/(byte) $40 to:init::@1 init::@1: scope:[init] from init init::@2 [37] (byte*) init::sc#2 ← phi( init/(const nomodify byte*) SCREEN init::@2/(byte*) init::sc#1 ) [38] if((byte*) init::sc#2!=(const nomodify byte*) SCREEN+(word) $3e8) goto init::@2 to:init::@3 init::@3: scope:[init] from init::@1 init::@3 [39] (byte) init::i#2 ← phi( init::@1/(byte) 0 init::@3/(byte) init::i#1 ) [40] *((const nomodify byte*) SPRITE + (byte) init::i#2) ← (byte) $ff [41] (byte) init::i#1 ← ++ (byte) init::i#2 [42] if((byte) init::i#1!=(byte) $40) goto init::@3 to:init::@return init::@return: scope:[init] from init::@3 [43] return to:@return init::@2: scope:[init] from init::@1 [44] *((byte*) init::sc#2) ← (byte) ' ' [45] (byte*) init::sc#1 ← ++ (byte*) init::sc#2 to:init::@1