@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  kickasm(location (const byte*) SPRITE) {{ .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)
 }}
  [2] call main 
  to:@end
@end: scope:[]  from @1
  [3] phi()

(void()) main()
main: scope:[main]  from @1
  asm { sei  }
  [5] call sprites_init 
  to:main::@1
main::@1: scope:[main]  from main
  [6] *((const word*) psp1) ← (word)(const byte*) mulf_sqr1
  [7] *((const word*) psp2) ← (word)(const byte*) mulf_sqr2
  [8] call debug_print_init 
  to:main::@2
main::@2: scope:[main]  from main::@1
  [9] phi()
  [10] call anim 
  to:main::@return
main::@return: scope:[main]  from main::@2
  [11] return 
  to:@return

(void()) anim()
anim: scope:[anim]  from main::@2
  [12] phi()
  to:anim::@1
anim::@1: scope:[anim]  from anim anim::@10
  [13] (signed byte) sy#10 ← phi( anim/(signed byte) 0 anim::@10/(signed byte) sy#3 )
  [13] (signed byte) sx#10 ← phi( anim/(signed byte) 0 anim::@10/(signed byte) sx#3 )
  to:anim::@2
anim::@2: scope:[anim]  from anim::@1 anim::@2
  [14] if(*((const byte*) RASTER)!=(byte) $ff) goto anim::@2
  to:anim::@3
anim::@3: scope:[anim]  from anim::@2 anim::@3
  [15] if(*((const byte*) RASTER)!=(byte) $fe) goto anim::@3
  to:anim::@4
anim::@4: scope:[anim]  from anim::@3 anim::@4
  [16] if(*((const byte*) RASTER)!=(byte) $fd) goto anim::@4
  to:anim::@5
anim::@5: scope:[anim]  from anim::@4
  [17] *((const byte*) BORDERCOL) ← ++ *((const byte*) BORDERCOL)
  [18] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10
  [19] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10
  [20] call calculate_matrix 
  to:anim::@8
anim::@8: scope:[anim]  from anim::@5
  [21] phi()
  [22] call store_matrix 
  to:anim::@6
anim::@6: scope:[anim]  from anim::@8 anim::@9
  [23] (byte) anim::i#2 ← phi( anim::@8/(byte) 0 anim::@9/(byte) anim::i#1 )
  [24] *((const byte*) BORDERCOL) ← ++ *((const byte*) BORDERCOL)
  [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte*) xs + (byte) anim::i#2)
  [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte*) ys + (byte) anim::i#2)
  [27] (signed byte) rotate_matrix::z#0 ← *((const signed byte*) zs + (byte) anim::i#2)
  [28] call rotate_matrix 
  to:anim::@9
anim::@9: scope:[anim]  from anim::@6
  [29] *((const signed byte*) xrs + (byte) anim::i#2) ← *((const signed byte*) xr)
  [30] *((const signed byte*) yrs + (byte) anim::i#2) ← *((const signed byte*) yr)
  [31] *((const signed byte*) zrs + (byte) anim::i#2) ← *((const signed byte*) zr)
  [32] *((const signed byte*) pps + (byte) anim::i#2) ← *((const signed byte*) pp)
  [33] *((const signed byte*) xps + (byte) anim::i#2) ← *((const signed byte*) xp)
  [34] *((const signed byte*) yps + (byte) anim::i#2) ← *((const signed byte*) yp)
  [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1
  [36] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) xp)
  [37] *((const byte*) SPRITES_XPOS + (byte) anim::i2#0) ← (byte~) anim::$10
  [38] (byte~) anim::$12 ← (byte) $80 + (byte)*((const signed byte*) yp)
  [39] *((const byte*) SPRITES_YPOS + (byte) anim::i2#0) ← (byte~) anim::$12
  [40] (byte) anim::i#1 ← ++ (byte) anim::i#2
  [41] if((byte) anim::i#1!=(byte) 8) goto anim::@6
  to:anim::@7
anim::@7: scope:[anim]  from anim::@9
  [42] *((const byte*) BORDERCOL) ← (const byte) LIGHT_GREY
  [43] call debug_print 
  to:anim::@10
anim::@10: scope:[anim]  from anim::@7
  [44] *((const byte*) BORDERCOL) ← (const byte) LIGHT_BLUE
  [45] (signed byte) sx#3 ← (signed byte) sx#10 + (signed byte) 2
  [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3
  to:anim::@1

(void()) debug_print()
debug_print: scope:[debug_print]  from anim::@7
  [47] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10
  to:debug_print::print_sbyte_pos1
debug_print::print_sbyte_pos1: scope:[debug_print]  from debug_print
  [48] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0
  [49] call print_sbyte_at 
  to:debug_print::@2
debug_print::@2: scope:[debug_print]  from debug_print::print_sbyte_pos1
  [50] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10
  to:debug_print::print_sbyte_pos2
debug_print::print_sbyte_pos2: scope:[debug_print]  from debug_print::@2
  [51] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0
  [52] call print_sbyte_at 
  to:debug_print::print_sbyte_pos3
debug_print::print_sbyte_pos3: scope:[debug_print]  from debug_print::print_sbyte_pos2
  [53] phi()
  [54] call print_sbyte_at 
  to:debug_print::@3
debug_print::@3: scope:[debug_print]  from debug_print::print_sbyte_pos3
  [55] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte*) rotation_matrix)
  to:debug_print::print_sbyte_pos4
debug_print::print_sbyte_pos4: scope:[debug_print]  from debug_print::@3
  [56] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0
  [57] call print_sbyte_at 
  to:debug_print::@4
debug_print::@4: scope:[debug_print]  from debug_print::print_sbyte_pos4
  [58] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 1)
  to:debug_print::print_sbyte_pos5
debug_print::print_sbyte_pos5: scope:[debug_print]  from debug_print::@4
  [59] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0
  [60] call print_sbyte_at 
  to:debug_print::@5
debug_print::@5: scope:[debug_print]  from debug_print::print_sbyte_pos5
  [61] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 2)
  to:debug_print::print_sbyte_pos6
debug_print::print_sbyte_pos6: scope:[debug_print]  from debug_print::@5
  [62] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0
  [63] call print_sbyte_at 
  to:debug_print::@6
debug_print::@6: scope:[debug_print]  from debug_print::print_sbyte_pos6
  [64] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 3)
  to:debug_print::print_sbyte_pos7
debug_print::print_sbyte_pos7: scope:[debug_print]  from debug_print::@6
  [65] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0
  [66] call print_sbyte_at 
  to:debug_print::@7
debug_print::@7: scope:[debug_print]  from debug_print::print_sbyte_pos7
  [67] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 4)
  to:debug_print::print_sbyte_pos8
debug_print::print_sbyte_pos8: scope:[debug_print]  from debug_print::@7
  [68] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0
  [69] call print_sbyte_at 
  to:debug_print::@8
debug_print::@8: scope:[debug_print]  from debug_print::print_sbyte_pos8
  [70] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 5)
  to:debug_print::print_sbyte_pos9
debug_print::print_sbyte_pos9: scope:[debug_print]  from debug_print::@8
  [71] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0
  [72] call print_sbyte_at 
  to:debug_print::@9
debug_print::@9: scope:[debug_print]  from debug_print::print_sbyte_pos9
  [73] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 6)
  to:debug_print::print_sbyte_pos10
debug_print::print_sbyte_pos10: scope:[debug_print]  from debug_print::@9
  [74] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0
  [75] call print_sbyte_at 
  to:debug_print::@10
debug_print::@10: scope:[debug_print]  from debug_print::print_sbyte_pos10
  [76] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 7)
  to:debug_print::print_sbyte_pos11
debug_print::print_sbyte_pos11: scope:[debug_print]  from debug_print::@10
  [77] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0
  [78] call print_sbyte_at 
  to:debug_print::@11
debug_print::@11: scope:[debug_print]  from debug_print::print_sbyte_pos11
  [79] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte*) rotation_matrix+(byte) 8)
  to:debug_print::print_sbyte_pos12
debug_print::print_sbyte_pos12: scope:[debug_print]  from debug_print::@11
  [80] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0
  [81] call print_sbyte_at 
  to:debug_print::@1
debug_print::@1: scope:[debug_print]  from debug_print::@17 debug_print::print_sbyte_pos12
  [82] (byte) debug_print::i#2 ← phi( debug_print::print_sbyte_pos12/(byte) 0 debug_print::@17/(byte) debug_print::i#1 )
  [82] (byte) debug_print::c#2 ← phi( debug_print::print_sbyte_pos12/(byte) 4 debug_print::@17/(byte) debug_print::c#1 )
  [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2
  [84] (signed byte) print_sbyte_at::b#16 ← *((const signed byte*) xrs + (byte) debug_print::i#2)
  [85] call print_sbyte_at 
  to:debug_print::@12
debug_print::@12: scope:[debug_print]  from debug_print::@1
  [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2
  [87] (signed byte) print_sbyte_at::b#17 ← *((const signed byte*) yrs + (byte) debug_print::i#2)
  [88] call print_sbyte_at 
  to:debug_print::@13
debug_print::@13: scope:[debug_print]  from debug_print::@12
  [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2
  [90] (signed byte) print_sbyte_at::b#18 ← *((const signed byte*) zrs + (byte) debug_print::i#2)
  [91] call print_sbyte_at 
  to:debug_print::@14
debug_print::@14: scope:[debug_print]  from debug_print::@13
  [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2
  [93] (signed byte) print_sbyte_at::b#19 ← *((const signed byte*) pps + (byte) debug_print::i#2)
  [94] call print_sbyte_at 
  to:debug_print::@15
debug_print::@15: scope:[debug_print]  from debug_print::@14
  [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2
  [96] (signed byte) print_sbyte_at::b#20 ← *((const signed byte*) xps + (byte) debug_print::i#2)
  [97] call print_sbyte_at 
  to:debug_print::@16
debug_print::@16: scope:[debug_print]  from debug_print::@15
  [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2
  [99] (signed byte) print_sbyte_at::b#21 ← *((const signed byte*) yps + (byte) debug_print::i#2)
  [100] call print_sbyte_at 
  to:debug_print::@17
debug_print::@17: scope:[debug_print]  from debug_print::@16
  [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4
  [102] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2
  [103] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1
  to:debug_print::@return
debug_print::@return: scope:[debug_print]  from debug_print::@17
  [104] return 
  to:@return

(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
print_sbyte_at: scope:[print_sbyte_at]  from debug_print::@1 debug_print::@12 debug_print::@13 debug_print::@14 debug_print::@15 debug_print::@16 debug_print::print_sbyte_pos1 debug_print::print_sbyte_pos10 debug_print::print_sbyte_pos11 debug_print::print_sbyte_pos12 debug_print::print_sbyte_pos2 debug_print::print_sbyte_pos3 debug_print::print_sbyte_pos4 debug_print::print_sbyte_pos5 debug_print::print_sbyte_pos6 debug_print::print_sbyte_pos7 debug_print::print_sbyte_pos8 debug_print::print_sbyte_pos9 debug_print_init::@1 debug_print_init::@16 debug_print_init::@17
  [105] (byte*) print_sbyte_at::at#21 ← phi( debug_print::@1/(byte*) print_sbyte_at::at#15 debug_print::@12/(byte*) print_sbyte_at::at#16 debug_print::@13/(byte*) print_sbyte_at::at#17 debug_print::@14/(byte*) print_sbyte_at::at#18 debug_print::@15/(byte*) print_sbyte_at::at#19 debug_print::@16/(byte*) print_sbyte_at::at#20 debug_print::print_sbyte_pos1/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_col#0 debug_print::print_sbyte_pos10/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos10_col#0 debug_print::print_sbyte_pos11/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos11_col#0 debug_print::print_sbyte_pos12/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos12_col#0 debug_print::print_sbyte_pos2/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos2_col#0 debug_print::print_sbyte_pos3/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos3_col#0 debug_print::print_sbyte_pos4/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos4_col#0 debug_print::print_sbyte_pos5/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos5_col#0 debug_print::print_sbyte_pos6/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos6_col#0 debug_print::print_sbyte_pos7/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos7_col#0 debug_print::print_sbyte_pos8/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos8_col#0 debug_print::print_sbyte_pos9/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte) $28+(const byte) debug_print::print_sbyte_pos9_col#0 debug_print_init::@1/(byte*) print_sbyte_at::at#0 debug_print_init::@16/(byte*) print_sbyte_at::at#1 debug_print_init::@17/(byte*) print_sbyte_at::at#2 )
  [105] (signed byte) print_sbyte_at::b#22 ← phi( debug_print::@1/(signed byte) print_sbyte_at::b#16 debug_print::@12/(signed byte) print_sbyte_at::b#17 debug_print::@13/(signed byte) print_sbyte_at::b#18 debug_print::@14/(signed byte) print_sbyte_at::b#19 debug_print::@15/(signed byte) print_sbyte_at::b#20 debug_print::@16/(signed byte) print_sbyte_at::b#21 debug_print::print_sbyte_pos1/(signed byte) print_sbyte_at::b#4 debug_print::print_sbyte_pos10/(signed byte) print_sbyte_at::b#13 debug_print::print_sbyte_pos11/(signed byte) print_sbyte_at::b#14 debug_print::print_sbyte_pos12/(signed byte) print_sbyte_at::b#15 debug_print::print_sbyte_pos2/(signed byte) print_sbyte_at::b#5 debug_print::print_sbyte_pos3/(const signed byte) sz debug_print::print_sbyte_pos4/(signed byte) print_sbyte_at::b#7 debug_print::print_sbyte_pos5/(signed byte) print_sbyte_at::b#8 debug_print::print_sbyte_pos6/(signed byte) print_sbyte_at::b#9 debug_print::print_sbyte_pos7/(signed byte) print_sbyte_at::b#10 debug_print::print_sbyte_pos8/(signed byte) print_sbyte_at::b#11 debug_print::print_sbyte_pos9/(signed byte) print_sbyte_at::b#12 debug_print_init::@1/(signed byte) print_sbyte_at::b#1 debug_print_init::@16/(signed byte) print_sbyte_at::b#2 debug_print_init::@17/(signed byte) print_sbyte_at::b#3 )
  [106] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1
  to:print_sbyte_at::@3
print_sbyte_at::@3: scope:[print_sbyte_at]  from print_sbyte_at
  [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21
  [108] call print_char_at 
  to:print_sbyte_at::@2
print_sbyte_at::@2: scope:[print_sbyte_at]  from print_sbyte_at::@3 print_sbyte_at::@4
  [109] (signed byte) print_sbyte_at::b#24 ← phi( print_sbyte_at::@4/(signed byte) print_sbyte_at::b#0 print_sbyte_at::@3/(signed byte) print_sbyte_at::b#22 )
  [110] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#24
  [111] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1
  [112] call print_byte_at 
  to:print_sbyte_at::@return
print_sbyte_at::@return: scope:[print_sbyte_at]  from print_sbyte_at::@2
  [113] return 
  to:@return
print_sbyte_at::@1: scope:[print_sbyte_at]  from print_sbyte_at
  [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21
  [115] call print_char_at 
  to:print_sbyte_at::@4
print_sbyte_at::@4: scope:[print_sbyte_at]  from print_sbyte_at::@1
  [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22
  to:print_sbyte_at::@2

(void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at)
print_char_at: scope:[print_char_at]  from print_byte_at print_byte_at::@1 print_sbyte_at::@1 print_sbyte_at::@3
  [117] (byte*) print_char_at::at#4 ← phi( print_byte_at/(byte*) print_char_at::at#2 print_byte_at::@1/(byte*) print_char_at::at#3 print_sbyte_at::@1/(byte*) print_char_at::at#0 print_sbyte_at::@3/(byte*) print_char_at::at#1 )
  [117] (byte) print_char_at::ch#4 ← phi( print_byte_at/(byte) print_char_at::ch#2 print_byte_at::@1/(byte) print_char_at::ch#3 print_sbyte_at::@1/(byte) '-' print_sbyte_at::@3/(byte) ' ' )
  [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4
  to:print_char_at::@return
print_char_at::@return: scope:[print_char_at]  from print_char_at
  [119] return 
  to:@return

(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at)
print_byte_at: scope:[print_byte_at]  from print_sbyte_at::@2
  [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4
  [121] (byte) print_char_at::ch#2 ← *((const byte*) print_hextab + (byte~) print_byte_at::$0)
  [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0
  [123] call print_char_at 
  to:print_byte_at::@1
print_byte_at::@1: scope:[print_byte_at]  from print_byte_at
  [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f
  [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1
  [126] (byte) print_char_at::ch#3 ← *((const byte*) print_hextab + (byte~) print_byte_at::$2)
  [127] call print_char_at 
  to:print_byte_at::@return
print_byte_at::@return: scope:[print_byte_at]  from print_byte_at::@1
  [128] return 
  to:@return

(void()) rotate_matrix((signed byte) rotate_matrix::x , (signed byte) rotate_matrix::y , (signed byte) rotate_matrix::z)
rotate_matrix: scope:[rotate_matrix]  from anim::@6
  [129] *((const signed byte*) xr) ← (signed byte) rotate_matrix::x#0
  [130] *((const signed byte*) yr) ← (signed byte) rotate_matrix::y#0
  [131] *((const signed byte*) zr) ← (signed byte) rotate_matrix::z#0
  asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp  }
  to:rotate_matrix::@return
rotate_matrix::@return: scope:[rotate_matrix]  from rotate_matrix
  [133] return 
  to:@return

(void()) store_matrix()
store_matrix: scope:[store_matrix]  from anim::@8
  asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1  }
  to:store_matrix::@return
store_matrix::@return: scope:[store_matrix]  from store_matrix
  [135] return 
  to:@return

(void()) calculate_matrix((signed byte) calculate_matrix::sx , (signed byte) calculate_matrix::sy , (signed byte) calculate_matrix::sz)
calculate_matrix: scope:[calculate_matrix]  from anim::@5
  [136] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0
  [137] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0
  [138] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0
  [139] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0
  [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0
  [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0
  [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0
  [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0
  [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0
  [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0
  [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t2#0)
  [147] *((const signed byte*) rotation_matrix) ← (signed byte~) calculate_matrix::$10
  [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t2#0)
  [149] *((const signed byte*) rotation_matrix+(byte) 1) ← (signed byte~) calculate_matrix::$11
  [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH + (signed byte) calculate_matrix::sy#0)
  [151] *((const signed byte*) rotation_matrix+(byte) 2) ← (signed byte~) calculate_matrix::$12
  [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t4#0)
  [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t6#0)
  [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t5#0)
  [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t8#0)
  [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t7#0)
  [157] *((const signed byte*) rotation_matrix+(byte) 3) ← (signed byte~) calculate_matrix::$17
  [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t4#0)
  [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ + (signed byte) calculate_matrix::t5#0)
  [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t6#0)
  [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t7#0)
  [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t8#0)
  [163] *((const signed byte*) rotation_matrix+(byte) 4) ← (signed byte~) calculate_matrix::$22
  [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t10#0)
  [165] *((const signed byte*) rotation_matrix+(byte) 5) ← (signed byte~) calculate_matrix::$23
  [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH + (signed byte) calculate_matrix::t3#0)
  [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ + (signed byte) calculate_matrix::t6#0)
  [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t5#0)
  [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t8#0)
  [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t7#0)
  [171] *((const signed byte*) rotation_matrix+(byte) 6) ← (signed byte~) calculate_matrix::$28
  [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH + (signed byte) calculate_matrix::t4#0)
  [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t6#0)
  [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t5#0)
  [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t7#0)
  [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t8#0)
  [177] *((const signed byte*) rotation_matrix+(byte) 7) ← (signed byte~) calculate_matrix::$33
  [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t10#0)
  [179] *((const signed byte*) rotation_matrix+(byte) 8) ← (signed byte~) calculate_matrix::$34
  to:calculate_matrix::@return
calculate_matrix::@return: scope:[calculate_matrix]  from calculate_matrix
  [180] return 
  to:@return

(void()) debug_print_init()
debug_print_init: scope:[debug_print_init]  from main::@1
  [181] phi()
  [182] call print_cls 
  to:debug_print_init::@4
debug_print_init::@4: scope:[debug_print_init]  from debug_print_init
  [183] phi()
  [184] call print_str_at 
  to:debug_print_init::@5
debug_print_init::@5: scope:[debug_print_init]  from debug_print_init::@4
  [185] phi()
  [186] call print_str_at 
  to:debug_print_init::@6
debug_print_init::@6: scope:[debug_print_init]  from debug_print_init::@5
  [187] phi()
  [188] call print_str_at 
  to:debug_print_init::@7
debug_print_init::@7: scope:[debug_print_init]  from debug_print_init::@6
  [189] phi()
  [190] call print_str_at 
  to:debug_print_init::@8
debug_print_init::@8: scope:[debug_print_init]  from debug_print_init::@7
  [191] phi()
  [192] call print_str_at 
  to:debug_print_init::@9
debug_print_init::@9: scope:[debug_print_init]  from debug_print_init::@8
  [193] phi()
  [194] call print_str_at 
  to:debug_print_init::@10
debug_print_init::@10: scope:[debug_print_init]  from debug_print_init::@9
  [195] phi()
  [196] call print_str_at 
  to:debug_print_init::@11
debug_print_init::@11: scope:[debug_print_init]  from debug_print_init::@10
  [197] phi()
  [198] call print_str_at 
  to:debug_print_init::@12
debug_print_init::@12: scope:[debug_print_init]  from debug_print_init::@11
  [199] phi()
  [200] call print_str_at 
  to:debug_print_init::@13
debug_print_init::@13: scope:[debug_print_init]  from debug_print_init::@12
  [201] phi()
  [202] call print_str_at 
  to:debug_print_init::@14
debug_print_init::@14: scope:[debug_print_init]  from debug_print_init::@13
  [203] phi()
  [204] call print_str_at 
  to:debug_print_init::@15
debug_print_init::@15: scope:[debug_print_init]  from debug_print_init::@14
  [205] phi()
  [206] call print_str_at 
  to:debug_print_init::@1
debug_print_init::@1: scope:[debug_print_init]  from debug_print_init::@15 debug_print_init::@3
  [207] (byte) debug_print_init::i#2 ← phi( debug_print_init::@15/(byte) 0 debug_print_init::@3/(byte) debug_print_init::i#1 )
  [207] (byte) debug_print_init::c#2 ← phi( debug_print_init::@15/(byte) 4 debug_print_init::@3/(byte) debug_print_init::c#1 )
  [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2
  [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte*) xs + (byte) debug_print_init::i#2)
  [210] call print_sbyte_at 
  to:debug_print_init::@16
debug_print_init::@16: scope:[debug_print_init]  from debug_print_init::@1
  [211] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2
  [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte*) ys + (byte) debug_print_init::i#2)
  [213] call print_sbyte_at 
  to:debug_print_init::@17
debug_print_init::@17: scope:[debug_print_init]  from debug_print_init::@16
  [214] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2
  [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte*) zs + (byte) debug_print_init::i#2)
  [216] call print_sbyte_at 
  to:debug_print_init::@2
debug_print_init::@2: scope:[debug_print_init]  from debug_print_init::@17 debug_print_init::@2
  [217] (byte) debug_print_init::j#2 ← phi( debug_print_init::@2/(byte) debug_print_init::j#1 debug_print_init::@17/(byte) 0 )
  [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2
  [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2
  [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0
  [221] (byte*~) debug_print_init::$44 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1 + (byte) debug_print_init::c#2
  [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0
  [223] (byte*~) debug_print_init::$47 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2 + (byte) debug_print_init::c#2
  [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0
  [225] (byte*~) debug_print_init::$50 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3 + (byte) debug_print_init::c#2
  [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0
  [227] (byte*~) debug_print_init::$53 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4 + (byte) debug_print_init::c#2
  [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0
  [229] (byte*~) debug_print_init::$56 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5 + (byte) debug_print_init::c#2
  [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0
  [231] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6 + (byte) debug_print_init::c#2
  [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0
  [233] (byte*~) debug_print_init::$62 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7 + (byte) debug_print_init::c#2
  [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0
  [235] (byte*~) debug_print_init::$65 ← (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8 + (byte) debug_print_init::c#2
  [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0
  [237] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2
  [238] if((byte) debug_print_init::j#1!=(byte) 4) goto debug_print_init::@2
  to:debug_print_init::@3
debug_print_init::@3: scope:[debug_print_init]  from debug_print_init::@2
  [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4
  [240] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2
  [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1
  to:debug_print_init::@return
debug_print_init::@return: scope:[debug_print_init]  from debug_print_init::@3
  [242] return 
  to:@return

(void()) print_str_at((byte*) print_str_at::str , (byte*) print_str_at::at)
print_str_at: scope:[print_str_at]  from debug_print_init::@10 debug_print_init::@11 debug_print_init::@12 debug_print_init::@13 debug_print_init::@14 debug_print_init::@15 debug_print_init::@4 debug_print_init::@5 debug_print_init::@6 debug_print_init::@7 debug_print_init::@8 debug_print_init::@9
  [243] (byte*) print_str_at::at#15 ← phi( debug_print_init::@9/(const byte*) SCREEN+(word)(number) $28*(number) $12 debug_print_init::@10/(const byte*) SCREEN+(word)(number) $28*(number) $13 debug_print_init::@11/(const byte*) SCREEN+(word)(number) $28*(number) $14 debug_print_init::@12/(const byte*) SCREEN+(word)(number) $28*(number) $15 debug_print_init::@13/(const byte*) SCREEN+(word)(number) $28*(number) $16 debug_print_init::@14/(const byte*) SCREEN+(word)(number) $28*(number) $17 debug_print_init::@15/(const byte*) SCREEN+(word)(number) $28*(number) $18 debug_print_init::@4/(const byte*) SCREEN+(byte) $22 debug_print_init::@5/(const byte*) SCREEN+(byte)(number) $28*(number) 1+(byte) $22 debug_print_init::@6/(const byte*) SCREEN+(byte)(number) $28*(number) 2+(byte) $22 debug_print_init::@7/(const byte*) SCREEN+(word)(number) $28*(number) $10 debug_print_init::@8/(const byte*) SCREEN+(word)(number) $28*(number) $11 )
  [243] (byte*) print_str_at::str#15 ← phi( debug_print_init::@9/(const string) debug_print_init::str5 debug_print_init::@10/(const string) debug_print_init::str6 debug_print_init::@11/(const string) debug_print_init::str7 debug_print_init::@12/(const string) debug_print_init::str8 debug_print_init::@13/(const string) debug_print_init::str9 debug_print_init::@14/(const string) debug_print_init::str10 debug_print_init::@15/(const string) debug_print_init::str11 debug_print_init::@4/(const string) debug_print_init::str debug_print_init::@5/(const string) debug_print_init::str1 debug_print_init::@6/(const string) debug_print_init::str2 debug_print_init::@7/(const string) debug_print_init::str3 debug_print_init::@8/(const string) debug_print_init::str4 )
  to:print_str_at::@1
print_str_at::@1: scope:[print_str_at]  from print_str_at print_str_at::@2
  [244] (byte*) print_str_at::at#13 ← phi( print_str_at/(byte*) print_str_at::at#15 print_str_at::@2/(byte*) print_str_at::at#0 )
  [244] (byte*) print_str_at::str#13 ← phi( print_str_at/(byte*) print_str_at::str#15 print_str_at::@2/(byte*) print_str_at::str#0 )
  [245] if((byte) 0!=*((byte*) print_str_at::str#13)) goto print_str_at::@2
  to:print_str_at::@return
print_str_at::@return: scope:[print_str_at]  from print_str_at::@1
  [246] return 
  to:@return
print_str_at::@2: scope:[print_str_at]  from print_str_at::@1
  [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13)
  [248] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13
  [249] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13
  to:print_str_at::@1

(void()) print_cls()
print_cls: scope:[print_cls]  from debug_print_init
  [250] phi()
  [251] call memset 
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls
  [252] return 
  to:@return

(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset]  from print_cls
  [253] phi()
  to:memset::@1
memset::@1: scope:[memset]  from memset memset::@2
  [254] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 )
  [255] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2
  to:memset::@return
memset::@return: scope:[memset]  from memset::@1
  [256] return 
  to:@return
memset::@2: scope:[memset]  from memset::@1
  [257] *((byte*) memset::dst#2) ← (const byte) memset::c#0
  [258] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
  to:memset::@1

(void()) sprites_init()
sprites_init: scope:[sprites_init]  from main
  [259] *((const byte*) SPRITES_ENABLE) ← (byte) $ff
  to:sprites_init::@1
sprites_init::@1: scope:[sprites_init]  from sprites_init sprites_init::@1
  [260] (byte) sprites_init::i#2 ← phi( sprites_init/(byte) 0 sprites_init::@1/(byte) sprites_init::i#1 )
  [261] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE/(byte) $40
  [262] *((const byte*) SPRITES_COLS + (byte) sprites_init::i#2) ← (const byte) GREEN
  [263] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2
  [264] if((byte) sprites_init::i#1!=(byte) 8) goto sprites_init::@1
  to:sprites_init::@return
sprites_init::@return: scope:[sprites_init]  from sprites_init::@1
  [265] return 
  to:@return
