@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] phi()
  [2] call main 
  to:@end
@end: scope:[]  from @1
  [3] phi()
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 byte) $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 byte) 0 main::@2/(signed word) ypos#11 )
  [6] (signed word) xpos#12 ← phi( main::@1/(signed word) xpos#12 main/(signed byte) 0 main::@2/(signed word) xpos#10 )
  [6] (signed word) yvel#12 ← phi( main::@1/(signed word) yvel#12 main/(signed byte) $64 main::@2/(signed word) yvel#10 )
  [7] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@1
  to:main::@2
main::@2: scope:[main]  from main::@1
  [8] phi()
  [9] call anim 
  to:main::@1
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 signed word) g#0
  [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] (byte~) anim::$9 ← (byte)(signed word) anim::sprite_x#0
  [26] *((const byte*) SPRITES_XPOS#0) ← (byte~) anim::$9
  [27] (byte~) anim::$10 ← (byte)(signed word) anim::sprite_y#0
  [28] *((const byte*) SPRITES_YPOS#0) ← (byte~) anim::$10
  [29] (byte~) anim::$11 ← > (signed word) anim::sprite_x#0
  [30] *((const byte*) SPRITES_XMSB#0) ← (byte~) anim::$11
  to:anim::@return
anim::@return: scope:[anim]  from anim::@1
  [31] return 
  to:@return
init: scope:[init]  from main
  [32] *((const byte*) SPRITES_ENABLE#0) ← (byte) 1
  [33] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0
  [34] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0
  [35] *((const byte*) SPRITES_XPOS#0) ← (byte) $64
  [36] *((const byte*) SPRITES_YPOS#0) ← (byte) $64
  [37] *((const byte*) SPRITES_COLS#0) ← (const byte) WHITE#0
  [38] *((const byte*) SPRITES_PTR#0) ← (byte)(const byte*) SPRITE#0/(byte) $40
  to:init::@2
init::@2: scope:[init]  from init init::@1
  [39] (byte*) init::sc#4 ← phi( init::@1/(byte*) init::sc#1 init/(const byte*) SCREEN#0 )
  [40] *((byte*) init::sc#4) ← (byte) ' '
  [41] (byte*) init::sc#1 ← ++ (byte*) init::sc#4
  to:init::@1
init::@1: scope:[init]  from init::@2
  [42] if((byte*) init::sc#1!=(const byte*) SCREEN#0+(word) $3e8) goto init::@2
  to:init::@3
init::@3: scope:[init]  from init::@1 init::@3
  [43] (byte) init::i#2 ← phi( init::@1/(byte) 0 init::@3/(byte) init::i#1 )
  [44] *((const byte*) SPRITE#0 + (byte) init::i#2) ← (byte) $ff
  [45] (byte) init::i#1 ← ++ (byte) init::i#2
  [46] if((byte) init::i#1!=(byte) $40) goto init::@3
  to:init::@return
init::@return: scope:[init]  from init::@3
  [47] return 
  to:@return
