@begin: scope:[]  from
  [0] phi()
  to:@13
@13: scope:[]  from @begin
  kickasm(location (const byte*) COS#0) {{ {
    .var min = -$7fff
    .var max = $7fff
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte >round(min+(ampl/2)+(ampl/2)*cos(rad))
    }
    }
 }}
  to:@16
@16: scope:[]  from @13
  kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))
    .for (var y=0; y<21; y++)
        .for (var x=0;x<3; x++)
            .byte pic.getSinglecolorByte(x,y)
 }}
  [3] call main 
  to:@end
@end: scope:[]  from @16
  [4] phi()
main: scope:[main]  from @16
  asm { sei  }
  [6] call init 
  to:main::@1
main::@1: scope:[main]  from main
  [7] phi()
  [8] call anim 
  to:main::@return
main::@return: scope:[main]  from main::@1
  [9] return 
  to:@return
anim: scope:[anim]  from main::@1
  [10] phi()
  to:anim::@1
anim::@1: scope:[anim]  from anim anim::@15
  [11] (byte) anim::angle#10 ← phi( anim/(byte/signed byte/word/signed word/dword/signed dword) 0 anim::@15/(byte) anim::angle#1 )
  to:anim::@4
anim::@4: scope:[anim]  from anim::@1 anim::@4
  [12] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4
  to:anim::@6
anim::@6: scope:[anim]  from anim::@4
  [13] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0)
  to:anim::@7
anim::@7: scope:[anim]  from anim::@6 anim::@8
  [14] (byte) anim::sprite_msb#10 ← phi( anim::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 anim::@8/(byte) anim::sprite_msb#5 )
  [14] (byte) anim::i#10 ← phi( anim::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 anim::@8/(byte) anim::i#1 )
  [15] (signed byte) anim::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#10)
  [16] (signed byte) anim::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#10)
  to:anim::mulf8s_prepare1
anim::mulf8s_prepare1: scope:[anim]  from anim::@7
  [17] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte)*((const byte*) COS#0 + (byte) anim::angle#10)
  [18] call mulf8u_prepare 
  to:anim::@17
anim::@17: scope:[anim]  from anim::mulf8s_prepare1
  [19] (signed byte) mulf8s_prepared::b#0 ← (signed byte) anim::x#0
  [20] call mulf8s_prepared 
  [21] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4
  to:anim::@20
anim::@20: scope:[anim]  from anim::@17
  [22] (signed word~) anim::$4 ← (signed word) mulf8s_prepared::return#2
  [23] (signed word) anim::xr#0 ← (signed word~) anim::$4 << (byte/signed byte/word/signed word/dword/signed dword) 1
  [24] (signed byte) mulf8s_prepared::b#1 ← (signed byte) anim::y#0
  [25] call mulf8s_prepared 
  [26] (signed word) mulf8s_prepared::return#3 ← (signed word)(word) mulf8s_prepared::m#4
  to:anim::@21
anim::@21: scope:[anim]  from anim::@20
  [27] (signed word~) anim::$6 ← (signed word) mulf8s_prepared::return#3
  [28] (signed word) anim::yr#0 ← (signed word~) anim::$6 << (byte/signed byte/word/signed word/dword/signed dword) 1
  to:anim::mulf8s_prepare2
anim::mulf8s_prepare2: scope:[anim]  from anim::@21
  [29] (byte~) mulf8u_prepare::a#4 ← (byte)(signed byte)*((const byte*) SIN#0 + (byte) anim::angle#10)
  [30] call mulf8u_prepare 
  to:anim::@18
anim::@18: scope:[anim]  from anim::mulf8s_prepare2
  [31] (signed byte) mulf8s_prepared::b#2 ← (signed byte) anim::y#0
  [32] call mulf8s_prepared 
  [33] (signed word) mulf8s_prepared::return#4 ← (signed word)(word) mulf8s_prepared::m#4
  to:anim::@23
anim::@23: scope:[anim]  from anim::@18
  [34] (signed word~) anim::$9 ← (signed word) mulf8s_prepared::return#4
  [35] (signed word~) anim::$10 ← (signed word~) anim::$9 << (byte/signed byte/word/signed word/dword/signed dword) 1
  [36] (signed word) anim::xr#1 ← (signed word) anim::xr#0 - (signed word~) anim::$10
  [37] (signed byte) mulf8s_prepared::b#3 ← (signed byte) anim::x#0
  [38] call mulf8s_prepared 
  [39] (signed word) mulf8s_prepared::return#10 ← (signed word)(word) mulf8s_prepared::m#4
  to:anim::@24
anim::@24: scope:[anim]  from anim::@23
  [40] (signed word~) anim::$11 ← (signed word) mulf8s_prepared::return#10
  [41] (signed word~) anim::$12 ← (signed word~) anim::$11 << (byte/signed byte/word/signed word/dword/signed dword) 1
  [42] (signed word) anim::yr#1 ← (signed word) anim::yr#0 + (signed word~) anim::$12
  [43] (byte~) anim::$13 ← > (signed word) anim::xr#1
  [44] (signed byte~) anim::$15 ← (signed byte)(byte~) anim::$13
  [45] (signed word) anim::xpos#0 ← (signed byte~) anim::$15 + (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/word/signed word/dword/signed dword) 149
  [46] (byte) anim::sprite_msb#1 ← (byte) anim::sprite_msb#10 >> (byte/signed byte/word/signed word/dword/signed dword) 1
  [47] (byte~) anim::$18 ← > (signed word) anim::xpos#0
  [48] if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8
  to:anim::@14
anim::@14: scope:[anim]  from anim::@24
  [49] (byte) anim::sprite_msb#2 ← (byte) anim::sprite_msb#1 | (byte/word/signed word/dword/signed dword) 128
  to:anim::@8
anim::@8: scope:[anim]  from anim::@14 anim::@24
  [50] (byte) anim::sprite_msb#5 ← phi( anim::@14/(byte) anim::sprite_msb#2 anim::@24/(byte) anim::sprite_msb#1 )
  [51] (byte~) anim::$22 ← > (signed word) anim::yr#1
  [52] (byte) anim::ypos#0 ← (byte~) anim::$22 + (byte/signed byte/word/signed word/dword/signed dword) 89+(byte/signed byte/word/signed word/dword/signed dword) 51
  [53] (byte) anim::i2#0 ← (byte) anim::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1
  [54] (byte~) anim::$25 ← < (signed word) anim::xpos#0
  [55] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$25
  [56] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte) anim::ypos#0
  [57] (byte) anim::i#1 ← ++ (byte) anim::i#10
  [58] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@7
  to:anim::@15
anim::@15: scope:[anim]  from anim::@8
  [59] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::sprite_msb#5
  [60] (byte) anim::angle#1 ← ++ (byte) anim::angle#10
  [61] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0
  to:anim::@1
mulf8s_prepared: scope:[mulf8s_prepared]  from anim::@17 anim::@18 anim::@20 anim::@23
  [62] (signed byte) mulf8s_prepared::b#4 ← phi( anim::@17/(signed byte) mulf8s_prepared::b#0 anim::@18/(signed byte) mulf8s_prepared::b#2 anim::@20/(signed byte) mulf8s_prepared::b#1 anim::@23/(signed byte) mulf8s_prepared::b#3 )
  [63] call mulf8u_prepared 
  [64] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0
  to:mulf8s_prepared::@6
mulf8s_prepared::@6: scope:[mulf8s_prepared]  from mulf8s_prepared
  [65] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2
  [66] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1
  to:mulf8s_prepared::@3
mulf8s_prepared::@3: scope:[mulf8s_prepared]  from mulf8s_prepared::@6
  [67] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0
  [68] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4
  [69] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15
  to:mulf8s_prepared::@1
mulf8s_prepared::@1: scope:[mulf8s_prepared]  from mulf8s_prepared::@3 mulf8s_prepared::@6
  [70] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 )
  [71] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2
  to:mulf8s_prepared::@4
mulf8s_prepared::@4: scope:[mulf8s_prepared]  from mulf8s_prepared::@1
  [72] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5
  [73] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0)
  [74] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16
  to:mulf8s_prepared::@2
mulf8s_prepared::@2: scope:[mulf8s_prepared]  from mulf8s_prepared::@1 mulf8s_prepared::@4
  [75] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 )
  to:mulf8s_prepared::@return
mulf8s_prepared::@return: scope:[mulf8s_prepared]  from mulf8s_prepared::@2
  [76] return 
  to:@return
mulf8u_prepared: scope:[mulf8u_prepared]  from mulf8s_prepared
  [77] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4
  asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB  }
  [79] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0)
  to:mulf8u_prepared::@return
mulf8u_prepared::@return: scope:[mulf8u_prepared]  from mulf8u_prepared
  [80] return 
  to:@return
mulf8u_prepare: scope:[mulf8u_prepare]  from anim::mulf8s_prepare1 anim::mulf8s_prepare2
  [81] (byte) mulf8u_prepare::a#2 ← phi( anim::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 anim::mulf8s_prepare2/(byte~) mulf8u_prepare::a#4 )
  [82] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2
  asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1  }
  to:mulf8u_prepare::@return
mulf8u_prepare::@return: scope:[mulf8u_prepare]  from mulf8u_prepare
  [84] return 
  to:@return
init: scope:[init]  from main
  [85] phi()
  [86] call mulf_init 
  to:init::@3
init::@3: scope:[init]  from init
  [87] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255
  to:init::@1
init::@1: scope:[init]  from init::@1 init::@3
  [88] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 )
  [89] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64
  [90] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0
  [91] (byte) init::i#1 ← ++ (byte) init::i#2
  [92] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1
  to:init::@return
init::@return: scope:[init]  from init::@1
  [93] return 
  to:@return
mulf_init: scope:[mulf_init]  from init
  [94] phi()
  to:mulf_init::@1
mulf_init::@1: scope:[mulf_init]  from mulf_init mulf_init::@2
  [95] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 )
  [95] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 )
  [95] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 )
  [95] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 )
  [95] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 )
  [96] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
  [97] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1
  [98] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2
  to:mulf_init::@5
mulf_init::@5: scope:[mulf_init]  from mulf_init::@1
  [99] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
  [100] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
  to:mulf_init::@2
mulf_init::@2: scope:[mulf_init]  from mulf_init::@1 mulf_init::@5
  [101] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 )
  [101] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 )
  [102] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3
  [103] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5
  [104] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3
  [105] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6
  [106] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
  [107] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
  [108] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
  [109] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1
  to:mulf_init::@3
mulf_init::@3: scope:[mulf_init]  from mulf_init::@2 mulf_init::@4
  [110] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 )
  [110] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 )
  [110] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 )
  [110] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 )
  [111] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2)
  [112] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2)
  [113] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
  [114] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
  [115] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12
  to:mulf_init::@4
mulf_init::@4: scope:[mulf_init]  from mulf_init::@12 mulf_init::@3
  [116] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 )
  [117] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
  [118] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3
  to:mulf_init::@8
mulf_init::@8: scope:[mulf_init]  from mulf_init::@4
  [119] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256)
  [120] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256)
  to:mulf_init::@return
mulf_init::@return: scope:[mulf_init]  from mulf_init::@8
  [121] return 
  to:@return
mulf_init::@12: scope:[mulf_init]  from mulf_init::@3
  [122] phi()
  to:mulf_init::@4
