Resolved forward reference mulf_sqr1 to (byte[$200]) mulf_sqr1
Resolved forward reference mulf_sqr2 to (byte[$200]) mulf_sqr2
Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix
Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix
Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix
Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix
Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix
Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix
Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix
Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix
Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix
Resolved forward reference SPRITE to (byte*) SPRITE
Resolved forward reference COSH to (signed byte*) COSH
Resolved forward reference COSH to (signed byte*) COSH
Resolved forward reference SINH to (signed byte[$140]) SINH
Resolved forward reference SINH to (signed byte[$140]) SINH
Resolved forward reference SINH to (signed byte[$140]) SINH
Resolved forward reference SINH to (signed byte[$140]) SINH
Resolved forward reference SINH to (signed byte[$140]) SINH
Resolved forward reference SINH to (signed byte[$140]) SINH
Resolved forward reference COSQ to (signed byte*) COSQ
Resolved forward reference COSQ to (signed byte*) COSQ
Resolved forward reference COSQ to (signed byte*) COSQ
Resolved forward reference COSQ to (signed byte*) COSQ
Resolved forward reference COSH to (signed byte*) COSH
Resolved forward reference COSH to (signed byte*) COSH
Resolved forward reference SINQ to (signed byte[$140]) SINQ
Resolved forward reference SINQ to (signed byte[$140]) SINQ
Resolved forward reference SINQ to (signed byte[$140]) SINQ
Resolved forward reference SINQ to (signed byte[$140]) SINQ
Resolved forward reference SINH to (signed byte[$140]) SINH
Resolved forward reference SINH to (signed byte[$140]) SINH
Resolved forward reference COSH to (signed byte*) COSH
Resolved forward reference COSH to (signed byte*) COSH
Resolved forward reference SINQ to (signed byte[$140]) SINQ
Resolved forward reference SINQ to (signed byte[$140]) SINQ
Resolved forward reference SINQ to (signed byte[$140]) SINQ
Resolved forward reference SINQ to (signed byte[$140]) SINQ
Resolved forward reference SINH to (signed byte[$140]) SINH
Resolved forward reference SINH to (signed byte[$140]) SINH
Resolved forward reference COSQ to (signed byte*) COSQ
Resolved forward reference COSQ to (signed byte*) COSQ
Resolved forward reference COSQ to (signed byte*) COSQ
Resolved forward reference COSQ to (signed byte*) COSQ
Resolved forward reference COSH to (signed byte*) COSH
Resolved forward reference COSH to (signed byte*) COSH
Resolved forward reference COSH_HI to (byte*) COSH_HI
Resolved forward reference COSH_LO to (byte*) COSH_LO
Resolved forward reference COSH_HI to (byte*) COSH_HI
Resolved forward reference COSH_LO to (byte*) COSH_LO
Resolved forward reference SINH_HI to (byte[$140]) SINH_HI
Resolved forward reference SINH_LO to (byte[$140]) SINH_LO
Resolved forward reference SINH_HI to (byte[$140]) SINH_HI
Resolved forward reference SINH_LO to (byte[$140]) SINH_LO
Resolved forward reference SINH_HI to (byte[$140]) SINH_HI
Resolved forward reference SINH_LO to (byte[$140]) SINH_LO
Resolved forward reference SINH_HI to (byte[$140]) SINH_HI
Resolved forward reference SINH_LO to (byte[$140]) SINH_LO
Resolved forward reference SINH_HI to (byte[$140]) SINH_HI
Resolved forward reference SINH_LO to (byte[$140]) SINH_LO
Resolved forward reference COSQ_HI to (byte*) COSQ_HI
Resolved forward reference COSH_LO to (byte*) COSH_LO
Resolved forward reference COSQ_HI to (byte*) COSQ_HI
Resolved forward reference COSH_LO to (byte*) COSH_LO
Resolved forward reference COSQ_HI to (byte*) COSQ_HI
Resolved forward reference COSH_LO to (byte*) COSH_LO
Resolved forward reference COSQ_HI to (byte*) COSQ_HI
Resolved forward reference COSH_LO to (byte*) COSH_LO
Resolved forward reference COSH_HI to (byte*) COSH_HI
Resolved forward reference COSH_LO to (byte*) COSH_LO
Resolved forward reference COSH_HI to (byte*) COSH_HI
Resolved forward reference COSH_LO to (byte*) COSH_LO
Resolved forward reference SINQ_HI to (byte[$140]) SINQ_HI
Resolved forward reference SINH_LO to (byte[$140]) SINH_LO
Resolved forward reference SINQ_HI to (byte[$140]) SINQ_HI
Resolved forward reference SINH_LO to (byte[$140]) SINH_LO
Resolved forward reference SINQ_HI to (byte[$140]) SINQ_HI
Resolved forward reference SINH_LO to (byte[$140]) SINH_LO
Resolved forward reference SINQ_HI to (byte[$140]) SINQ_HI
Resolved forward reference SINH_LO to (byte[$140]) SINH_LO
Resolved forward reference SINH_HI to (byte[$140]) SINH_HI
Resolved forward reference SINH_LO to (byte[$140]) SINH_LO
Resolved forward reference SINH_HI to (byte[$140]) SINH_HI
Resolved forward reference SINH_LO to (byte[$140]) SINH_LO
Resolved forward reference COSH_HI to (byte*) COSH_HI
Resolved forward reference COSH_LO to (byte*) COSH_LO
Resolved forward reference COSH_HI to (byte*) COSH_HI
Resolved forward reference COSH_LO to (byte*) COSH_LO
Resolved forward reference mulf_sqr1 to (byte[$200]) mulf_sqr1
Resolved forward reference mulf_sqr2 to (byte[$200]) mulf_sqr2
Resolved forward reference PERSP_Z to (signed byte[$100]) PERSP_Z
Fixing pointer addition (word*~) bsearch16u::$7 ← (word*) bsearch16u::items + (byte~) bsearch16u::$6
Fixing pointer addition (word*~) bsearch16u::$15 ← (word*) bsearch16u::pivot + (number) 1
Fixing pointer addition (word*~) bsearch16u::$1 ← (word*) bsearch16u::items - (number) 1
Fixing pointer array-indexing *((word*) utoa::digit_values + (byte) utoa::digit)
Fixing pointer array-indexing *((dword*) ultoa::digit_values + (byte) ultoa::digit)
Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src)
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_lines::str)
Warning! Adding boolean cast to non-boolean condition (byte) print_str_lines::ch
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str::str)
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_at::str)
Warning! Adding boolean cast to non-boolean sub-expression (byte) print_str_lines::ch
Identified constant variable (byte*) HEAP_TOP
Identified constant variable (signed byte*) xr
Identified constant variable (signed byte*) yr
Identified constant variable (signed byte*) zr
Identified constant variable (signed byte*) pp
Identified constant variable (signed byte*) xp
Identified constant variable (signed byte*) yp
Identified constant variable (word*) psp1
Identified constant variable (word*) psp2
Identified constant variable (byte*) SCREEN
Identified constant variable (signed byte) sz
Identified constant variable (byte*) debug_print_init::COLS
Identified constant variable (byte*) sprites_init::SCREEN
Identified constant variable (byte*) SPRITE
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx 
Inlined call call print_sbyte_pos (signed byte) sx (number) 0 (number) $25 
Inlined call call print_sbyte_pos (signed byte) sy (number) 1 (number) $25 
Inlined call call print_sbyte_pos (signed byte) sz (number) 2 (number) $25 
Inlined call call print_sbyte_pos *((signed byte[9]) rotation_matrix + (number) 0) (number) 4 (number) $1d 
Inlined call call print_sbyte_pos *((signed byte[9]) rotation_matrix + (number) 1) (number) 4 (number) $21 
Inlined call call print_sbyte_pos *((signed byte[9]) rotation_matrix + (number) 2) (number) 4 (number) $25 
Inlined call call print_sbyte_pos *((signed byte[9]) rotation_matrix + (number) 3) (number) 5 (number) $1d 
Inlined call call print_sbyte_pos *((signed byte[9]) rotation_matrix + (number) 4) (number) 5 (number) $21 
Inlined call call print_sbyte_pos *((signed byte[9]) rotation_matrix + (number) 5) (number) 5 (number) $25 
Inlined call call print_sbyte_pos *((signed byte[9]) rotation_matrix + (number) 6) (number) 6 (number) $1d 
Inlined call call print_sbyte_pos *((signed byte[9]) rotation_matrix + (number) 7) (number) 6 (number) $21 
Inlined call call print_sbyte_pos *((signed byte[9]) rotation_matrix + (number) 8) (number) 6 (number) $25 
Culled Empty Block (label) @1
Culled Empty Block (label) @2
Culled Empty Block (label) @3
Culled Empty Block (label) @4
Culled Empty Block (label) @5
Culled Empty Block (label) @6
Culled Empty Block (label) memset::@7
Culled Empty Block (label) memset::@6
Culled Empty Block (label) memset::@8
Culled Empty Block (label) memset::@9
Culled Empty Block (label) memset::@3
Culled Empty Block (label) @7
Culled Empty Block (label) @8
Culled Empty Block (label) @9
Culled Empty Block (label) @10
Culled Empty Block (label) @11
Culled Empty Block (label) @12
Culled Empty Block (label) @13
Culled Empty Block (label) @14
Culled Empty Block (label) @15
Culled Empty Block (label) @17
Culled Empty Block (label) @18
Culled Empty Block (label) @19
Culled Empty Block (label) print_str_at::@4
Culled Empty Block (label) print_str_at::@3
Culled Empty Block (label) print_str_at::@5
Culled Empty Block (label) print_str_at::@6
Culled Empty Block (label) @20
Culled Empty Block (label) @21
Culled Empty Block (label) @22
Culled Empty Block (label) @23
Culled Empty Block (label) @24
Culled Empty Block (label) print_sbyte_at::@4
Culled Empty Block (label) @25
Culled Empty Block (label) @26
Culled Empty Block (label) @27
Culled Empty Block (label) @28
Culled Empty Block (label) @29
Culled Empty Block (label) @30
Culled Empty Block (label) @31
Culled Empty Block (label) @32
Culled Empty Block (label) @34
Culled Empty Block (label) @35
Culled Empty Block (label) @36
Culled Empty Block (label) @37
Culled Empty Block (label) @38
Culled Empty Block (label) @39
Culled Empty Block (label) anim::@2
Culled Empty Block (label) anim::@25
Culled Empty Block (label) anim::@3
Culled Empty Block (label) anim::@26
Culled Empty Block (label) anim::@5
Culled Empty Block (label) anim::@7
Culled Empty Block (label) anim::@6
Culled Empty Block (label) anim::@8
Culled Empty Block (label) anim::@9
Culled Empty Block (label) anim::@11
Culled Empty Block (label) anim::@13
Culled Empty Block (label) anim::@12
Culled Empty Block (label) anim::@14
Culled Empty Block (label) anim::@15
Culled Empty Block (label) anim::@17
Culled Empty Block (label) anim::@19
Culled Empty Block (label) anim::@20
Culled Empty Block (label) anim::@21
Culled Empty Block (label) anim::@24
Culled Empty Block (label) @42
Culled Empty Block (label) debug_print_init::@4
Culled Empty Block (label) @43
Culled Empty Block (label) debug_print::print_sbyte_pos1_@return
Culled Empty Block (label) debug_print::print_sbyte_pos2_@return
Culled Empty Block (label) debug_print::print_sbyte_pos3_@return
Culled Empty Block (label) debug_print::print_sbyte_pos4_@return
Culled Empty Block (label) debug_print::print_sbyte_pos5_@return
Culled Empty Block (label) debug_print::print_sbyte_pos6_@return
Culled Empty Block (label) debug_print::print_sbyte_pos7_@return
Culled Empty Block (label) debug_print::print_sbyte_pos8_@return
Culled Empty Block (label) debug_print::print_sbyte_pos9_@return
Culled Empty Block (label) debug_print::print_sbyte_pos10_@return
Culled Empty Block (label) debug_print::print_sbyte_pos11_@return
Culled Empty Block (label) debug_print::print_sbyte_pos12_@return
Culled Empty Block (label) debug_print::@2
Culled Empty Block (label) @44
Culled Empty Block (label) sprites_init::@2
Culled Empty Block (label) @46
Culled Empty Block (label) @47
Culled Empty Block (label) @48
Culled Empty Block (label) @49

CONTROL FLOW GRAPH SSA
@begin: scope:[]  from
  (byte*) SPRITES_XPOS#0 ← ((byte*)) (number) $d000
  (byte*) SPRITES_YPOS#0 ← ((byte*)) (number) $d001
  (byte*) RASTER#0 ← ((byte*)) (number) $d012
  (byte*) SPRITES_ENABLE#0 ← ((byte*)) (number) $d015
  (byte*) BORDERCOL#0 ← ((byte*)) (number) $d020
  (byte*) SPRITES_COLS#0 ← ((byte*)) (number) $d027
  (byte) GREEN#0 ← (number) 5
  (byte) LIGHT_BLUE#0 ← (number) $e
  (byte) LIGHT_GREY#0 ← (number) $f
  to:@16
memset: scope:[memset]  from print_cls
  (byte) memset::c#4 ← phi( print_cls/(byte) memset::c#0 )
  (void*) memset::str#3 ← phi( print_cls/(void*) memset::str#0 )
  (word) memset::num#1 ← phi( print_cls/(word) memset::num#0 )
  (bool~) memset::$0 ← (word) memset::num#1 > (number) 0
  (bool~) memset::$1 ← ! (bool~) memset::$0
  if((bool~) memset::$1) goto memset::@1
  to:memset::@2
memset::@1: scope:[memset]  from memset memset::@4
  (void*) memset::str#1 ← phi( memset/(void*) memset::str#3 memset::@4/(void*) memset::str#4 )
  (void*) memset::return#0 ← (void*) memset::str#1
  to:memset::@return
memset::@2: scope:[memset]  from memset
  (byte) memset::c#3 ← phi( memset/(byte) memset::c#4 )
  (word) memset::num#2 ← phi( memset/(word) memset::num#1 )
  (void*) memset::str#2 ← phi( memset/(void*) memset::str#3 )
  (byte*~) memset::$2 ← ((byte*)) (void*) memset::str#2
  (byte*~) memset::$3 ← (byte*~) memset::$2 + (word) memset::num#2
  (byte*) memset::end#0 ← (byte*~) memset::$3
  (byte*) memset::dst#0 ← ((byte*)) (void*) memset::str#2
  to:memset::@4
memset::@4: scope:[memset]  from memset::@2 memset::@5
  (byte) memset::c#2 ← phi( memset::@2/(byte) memset::c#3 memset::@5/(byte) memset::c#1 )
  (void*) memset::str#4 ← phi( memset::@2/(void*) memset::str#2 memset::@5/(void*) memset::str#5 )
  (byte*) memset::end#1 ← phi( memset::@2/(byte*) memset::end#0 memset::@5/(byte*) memset::end#2 )
  (byte*) memset::dst#2 ← phi( memset::@2/(byte*) memset::dst#0 memset::@5/(byte*) memset::dst#1 )
  (bool~) memset::$4 ← (byte*) memset::dst#2 != (byte*) memset::end#1
  if((bool~) memset::$4) goto memset::@5
  to:memset::@1
memset::@5: scope:[memset]  from memset::@4
  (void*) memset::str#5 ← phi( memset::@4/(void*) memset::str#4 )
  (byte*) memset::end#2 ← phi( memset::@4/(byte*) memset::end#1 )
  (byte*) memset::dst#3 ← phi( memset::@4/(byte*) memset::dst#2 )
  (byte) memset::c#1 ← phi( memset::@4/(byte) memset::c#2 )
  *((byte*) memset::dst#3) ← (byte) memset::c#1
  (byte*) memset::dst#1 ← ++ (byte*) memset::dst#3
  to:memset::@4
memset::@return: scope:[memset]  from memset::@1
  (void*) memset::return#3 ← phi( memset::@1/(void*) memset::return#0 )
  (void*) memset::return#1 ← (void*) memset::return#3
  return 
  to:@return
@16: scope:[]  from @begin
  (byte*) print_screen#0 ← ((byte*)) (number) $400
  to:@33
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::@16 debug_print_init::@5 debug_print_init::@6 debug_print_init::@7 debug_print_init::@8 debug_print_init::@9
  (byte*) print_str_at::at#15 ← phi( debug_print_init::@10/(byte*) print_str_at::at#6 debug_print_init::@11/(byte*) print_str_at::at#7 debug_print_init::@12/(byte*) print_str_at::at#8 debug_print_init::@13/(byte*) print_str_at::at#9 debug_print_init::@14/(byte*) print_str_at::at#10 debug_print_init::@15/(byte*) print_str_at::at#11 debug_print_init::@16/(byte*) print_str_at::at#12 debug_print_init::@5/(byte*) print_str_at::at#1 debug_print_init::@6/(byte*) print_str_at::at#2 debug_print_init::@7/(byte*) print_str_at::at#3 debug_print_init::@8/(byte*) print_str_at::at#4 debug_print_init::@9/(byte*) print_str_at::at#5 )
  (byte*) print_str_at::str#15 ← phi( debug_print_init::@10/(byte*) print_str_at::str#6 debug_print_init::@11/(byte*) print_str_at::str#7 debug_print_init::@12/(byte*) print_str_at::str#8 debug_print_init::@13/(byte*) print_str_at::str#9 debug_print_init::@14/(byte*) print_str_at::str#10 debug_print_init::@15/(byte*) print_str_at::str#11 debug_print_init::@16/(byte*) print_str_at::str#12 debug_print_init::@5/(byte*) print_str_at::str#1 debug_print_init::@6/(byte*) print_str_at::str#2 debug_print_init::@7/(byte*) print_str_at::str#3 debug_print_init::@8/(byte*) print_str_at::str#4 debug_print_init::@9/(byte*) print_str_at::str#5 )
  to:print_str_at::@1
print_str_at::@1: scope:[print_str_at]  from print_str_at print_str_at::@2
  (byte*) print_str_at::at#14 ← phi( print_str_at/(byte*) print_str_at::at#15 print_str_at::@2/(byte*) print_str_at::at#0 )
  (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 )
  (bool~) print_str_at::$0 ← (number) 0 != *((byte*) print_str_at::str#13)
  if((bool~) print_str_at::$0) goto print_str_at::@2
  to:print_str_at::@return
print_str_at::@2: scope:[print_str_at]  from print_str_at::@1
  (byte*) print_str_at::at#13 ← phi( print_str_at::@1/(byte*) print_str_at::at#14 )
  (byte*) print_str_at::str#14 ← phi( print_str_at::@1/(byte*) print_str_at::str#13 )
  *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#14)
  (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13
  (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#14
  to:print_str_at::@1
print_str_at::@return: scope:[print_str_at]  from print_str_at::@1
  return 
  to:@return
print_sbyte_at: scope:[print_sbyte_at]  from debug_print::@1 debug_print::@27 debug_print::@28 debug_print::@29 debug_print::@30 debug_print::@31 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::@18 debug_print_init::@19
  (byte*) print_sbyte_at::at#24 ← phi( debug_print::@1/(byte*) print_sbyte_at::at#15 debug_print::@27/(byte*) print_sbyte_at::at#16 debug_print::@28/(byte*) print_sbyte_at::at#17 debug_print::@29/(byte*) print_sbyte_at::at#18 debug_print::@30/(byte*) print_sbyte_at::at#19 debug_print::@31/(byte*) print_sbyte_at::at#20 debug_print::print_sbyte_pos1/(byte*) print_sbyte_at::at#3 debug_print::print_sbyte_pos10/(byte*) print_sbyte_at::at#12 debug_print::print_sbyte_pos11/(byte*) print_sbyte_at::at#13 debug_print::print_sbyte_pos12/(byte*) print_sbyte_at::at#14 debug_print::print_sbyte_pos2/(byte*) print_sbyte_at::at#4 debug_print::print_sbyte_pos3/(byte*) print_sbyte_at::at#5 debug_print::print_sbyte_pos4/(byte*) print_sbyte_at::at#6 debug_print::print_sbyte_pos5/(byte*) print_sbyte_at::at#7 debug_print::print_sbyte_pos6/(byte*) print_sbyte_at::at#8 debug_print::print_sbyte_pos7/(byte*) print_sbyte_at::at#9 debug_print::print_sbyte_pos8/(byte*) print_sbyte_at::at#10 debug_print::print_sbyte_pos9/(byte*) print_sbyte_at::at#11 debug_print_init::@1/(byte*) print_sbyte_at::at#0 debug_print_init::@18/(byte*) print_sbyte_at::at#1 debug_print_init::@19/(byte*) print_sbyte_at::at#2 )
  (signed byte) print_sbyte_at::b#22 ← phi( debug_print::@1/(signed byte) print_sbyte_at::b#16 debug_print::@27/(signed byte) print_sbyte_at::b#17 debug_print::@28/(signed byte) print_sbyte_at::b#18 debug_print::@29/(signed byte) print_sbyte_at::b#19 debug_print::@30/(signed byte) print_sbyte_at::b#20 debug_print::@31/(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/(signed byte) print_sbyte_at::b#6 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::@18/(signed byte) print_sbyte_at::b#2 debug_print_init::@19/(signed byte) print_sbyte_at::b#3 )
  (bool~) print_sbyte_at::$0 ← (signed byte) print_sbyte_at::b#22 < (number) 0
  if((bool~) print_sbyte_at::$0) goto print_sbyte_at::@1
  to:print_sbyte_at::@3
print_sbyte_at::@1: scope:[print_sbyte_at]  from print_sbyte_at
  (signed byte) print_sbyte_at::b#25 ← phi( print_sbyte_at/(signed byte) print_sbyte_at::b#22 )
  (byte*) print_sbyte_at::at#21 ← phi( print_sbyte_at/(byte*) print_sbyte_at::at#24 )
  (byte) print_char_at::ch#0 ← (byte) '-'
  (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21
  call print_char_at 
  to:print_sbyte_at::@5
print_sbyte_at::@5: scope:[print_sbyte_at]  from print_sbyte_at::@1
  (byte*) print_sbyte_at::at#25 ← phi( print_sbyte_at::@1/(byte*) print_sbyte_at::at#21 )
  (signed byte) print_sbyte_at::b#23 ← phi( print_sbyte_at::@1/(signed byte) print_sbyte_at::b#25 )
  (signed byte~) print_sbyte_at::$6 ← - (signed byte) print_sbyte_at::b#23
  (signed byte) print_sbyte_at::b#0 ← (signed byte~) print_sbyte_at::$6
  to:print_sbyte_at::@2
print_sbyte_at::@3: scope:[print_sbyte_at]  from print_sbyte_at
  (signed byte) print_sbyte_at::b#27 ← phi( print_sbyte_at/(signed byte) print_sbyte_at::b#22 )
  (byte*) print_sbyte_at::at#22 ← phi( print_sbyte_at/(byte*) print_sbyte_at::at#24 )
  (byte) print_char_at::ch#1 ← (byte) ' '
  (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#22
  call print_char_at 
  to:print_sbyte_at::@6
print_sbyte_at::@6: scope:[print_sbyte_at]  from print_sbyte_at::@3
  (byte*) print_sbyte_at::at#26 ← phi( print_sbyte_at::@3/(byte*) print_sbyte_at::at#22 )
  (signed byte) print_sbyte_at::b#26 ← phi( print_sbyte_at::@3/(signed byte) print_sbyte_at::b#27 )
  to:print_sbyte_at::@2
print_sbyte_at::@2: scope:[print_sbyte_at]  from print_sbyte_at::@5 print_sbyte_at::@6
  (byte*) print_sbyte_at::at#23 ← phi( print_sbyte_at::@5/(byte*) print_sbyte_at::at#25 print_sbyte_at::@6/(byte*) print_sbyte_at::at#26 )
  (signed byte) print_sbyte_at::b#24 ← phi( print_sbyte_at::@5/(signed byte) print_sbyte_at::b#0 print_sbyte_at::@6/(signed byte) print_sbyte_at::b#26 )
  (byte~) print_sbyte_at::$1 ← ((byte)) (signed byte) print_sbyte_at::b#24
  (byte*~) print_sbyte_at::$2 ← (byte*) print_sbyte_at::at#23 + (number) 1
  (byte) print_byte_at::b#0 ← (byte~) print_sbyte_at::$1
  (byte*) print_byte_at::at#0 ← (byte*~) print_sbyte_at::$2
  call print_byte_at 
  to:print_sbyte_at::@7
print_sbyte_at::@7: scope:[print_sbyte_at]  from print_sbyte_at::@2
  to:print_sbyte_at::@return
print_sbyte_at::@return: scope:[print_sbyte_at]  from print_sbyte_at::@7
  return 
  to:@return
@33: scope:[]  from @16
  (byte*) print_screen#50 ← phi( @16/(byte*) print_screen#0 )
  (byte[]) print_hextab#0 ← (const string) $6
  to:@40
print_byte_at: scope:[print_byte_at]  from print_sbyte_at::@2
  (byte*) print_byte_at::at#1 ← phi( print_sbyte_at::@2/(byte*) print_byte_at::at#0 )
  (byte) print_byte_at::b#1 ← phi( print_sbyte_at::@2/(byte) print_byte_at::b#0 )
  (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#1 >> (number) 4
  (byte) print_char_at::ch#2 ← *((byte[]) print_hextab#0 + (byte~) print_byte_at::$0)
  (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#1
  call print_char_at 
  to:print_byte_at::@1
print_byte_at::@1: scope:[print_byte_at]  from print_byte_at
  (byte*) print_byte_at::at#2 ← phi( print_byte_at/(byte*) print_byte_at::at#1 )
  (byte) print_byte_at::b#2 ← phi( print_byte_at/(byte) print_byte_at::b#1 )
  (number~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (number) $f
  (byte*~) print_byte_at::$3 ← (byte*) print_byte_at::at#2 + (number) 1
  (byte) print_char_at::ch#3 ← *((byte[]) print_hextab#0 + (number~) print_byte_at::$2)
  (byte*) print_char_at::at#3 ← (byte*~) print_byte_at::$3
  call print_char_at 
  to:print_byte_at::@2
print_byte_at::@2: scope:[print_byte_at]  from print_byte_at::@1
  to:print_byte_at::@return
print_byte_at::@return: scope:[print_byte_at]  from print_byte_at::@2
  return 
  to:@return
print_char_at: scope:[print_char_at]  from print_byte_at print_byte_at::@1 print_sbyte_at::@1 print_sbyte_at::@3
  (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 )
  (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_char_at::ch#0 print_sbyte_at::@3/(byte) print_char_at::ch#1 )
  *((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
  return 
  to:@return
print_cls: scope:[print_cls]  from debug_print_init
  (byte*) print_screen#1 ← phi( debug_print_init/(byte*) print_screen#14 )
  (void*) memset::str#0 ← (void*)(byte*) print_screen#1
  (byte) memset::c#0 ← (byte) ' '
  (word) memset::num#0 ← (number) $3e8
  call memset 
  (void*) memset::return#2 ← (void*) memset::return#1
  to:print_cls::@1
print_cls::@1: scope:[print_cls]  from print_cls
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls::@1
  return 
  to:@return
@40: scope:[]  from @33
  (byte*) print_screen#48 ← phi( @33/(byte*) print_screen#50 )
  (signed byte*) xr#0 ← ((signed byte*)) (number) $f0
  (signed byte*) yr#0 ← ((signed byte*)) (number) $f1
  (signed byte*) zr#0 ← ((signed byte*)) (number) $f2
  (signed byte*) pp#0 ← ((signed byte*)) (number) $f3
  (signed byte*) xp#0 ← ((signed byte*)) (number) $f4
  (signed byte*) yp#0 ← ((signed byte*)) (number) $f5
  (word*) psp1#0 ← ((word*)) (number) $f6
  (word*) psp2#0 ← ((word*)) (number) $f8
  (byte*) SCREEN#0 ← ((byte*)) (number) $400
  to:@41
main: scope:[main]  from @50
  (signed byte*) COSQ#13 ← phi( @50/(signed byte*) COSQ#0 )
  (signed byte*) COSH#13 ← phi( @50/(signed byte*) COSH#0 )
  (byte*) print_screen#40 ← phi( @50/(byte*) print_screen#42 )
  (signed byte) sy#25 ← phi( @50/(signed byte) sy#18 )
  (signed byte) sx#23 ← phi( @50/(signed byte) sx#17 )
  asm { sei  }
  call sprites_init 
  to:main::@1
main::@1: scope:[main]  from main
  (signed byte*) COSQ#11 ← phi( main/(signed byte*) COSQ#13 )
  (signed byte*) COSH#11 ← phi( main/(signed byte*) COSH#13 )
  (byte*) print_screen#27 ← phi( main/(byte*) print_screen#40 )
  (signed byte) sy#19 ← phi( main/(signed byte) sy#25 )
  (signed byte) sx#18 ← phi( main/(signed byte) sx#23 )
  (word~) main::$1 ← ((word)) (byte[$200]) mulf_sqr1#0
  *((word*) psp1#0) ← (word~) main::$1
  (word~) main::$2 ← ((word)) (byte[$200]) mulf_sqr2#0
  *((word*) psp2#0) ← (word~) main::$2
  call debug_print_init 
  to:main::@2
main::@2: scope:[main]  from main::@1
  (byte*) print_screen#57 ← phi( main::@1/(byte*) print_screen#27 )
  (signed byte*) COSQ#9 ← phi( main::@1/(signed byte*) COSQ#11 )
  (signed byte*) COSH#9 ← phi( main::@1/(signed byte*) COSH#11 )
  (signed byte) sy#13 ← phi( main::@1/(signed byte) sy#19 )
  (signed byte) sx#13 ← phi( main::@1/(signed byte) sx#18 )
  call anim 
  to:main::@3
main::@3: scope:[main]  from main::@2
  (signed byte) sy#6 ← phi( main::@2/(signed byte) sy#4 )
  (signed byte) sx#6 ← phi( main::@2/(signed byte) sx#4 )
  (signed byte) sx#0 ← (signed byte) sx#6
  (signed byte) sy#0 ← (signed byte) sy#6
  to:main::@return
main::@return: scope:[main]  from main::@3
  (signed byte) sy#7 ← phi( main::@3/(signed byte) sy#0 )
  (signed byte) sx#7 ← phi( main::@3/(signed byte) sx#0 )
  (signed byte) sx#1 ← (signed byte) sx#7
  (signed byte) sy#1 ← (signed byte) sy#7
  return 
  to:@return
@41: scope:[]  from @40
  (byte*) print_screen#47 ← phi( @40/(byte*) print_screen#48 )
  (signed byte[8]) xs#0 ← { (number) -$34, (number) -$34, (number) -$34, (number) 0, (number) 0, (number) $34, (number) $34, (number) $34 }
  (signed byte[8]) ys#0 ← { (number) -$34, (number) 0, (number) $34, (number) -$34, (number) $34, (number) -$34, (number) 0, (number) $34 }
  (signed byte[8]) zs#0 ← { (number) $34, (number) $34, (number) $34, (number) $34, (number) $34, (number) $34, (number) $34, (number) $34 }
  (signed byte[8]) xrs#0 ← { fill( 8, 0) }
  (signed byte[8]) yrs#0 ← { fill( 8, 0) }
  (signed byte[8]) zrs#0 ← { fill( 8, 0) }
  (signed byte[8]) pps#0 ← { fill( 8, 0) }
  (signed byte[8]) xps#0 ← { fill( 8, 0) }
  (signed byte[8]) yps#0 ← { fill( 8, 0) }
  (signed byte) sx#2 ← (number) 0
  (signed byte) sy#2 ← (number) 0
  (signed byte) sz#0 ← (number) 0
  to:@45
anim: scope:[anim]  from main::@2
  (byte*) print_screen#55 ← phi( main::@2/(byte*) print_screen#57 )
  (signed byte*) COSQ#7 ← phi( main::@2/(signed byte*) COSQ#9 )
  (signed byte*) COSH#7 ← phi( main::@2/(signed byte*) COSH#9 )
  (signed byte) sy#20 ← phi( main::@2/(signed byte) sy#13 )
  (signed byte) sx#19 ← phi( main::@2/(signed byte) sx#13 )
  to:anim::@1
anim::@1: scope:[anim]  from anim anim::@30
  (byte*) print_screen#54 ← phi( anim/(byte*) print_screen#55 anim::@30/(byte*) print_screen#56 )
  (signed byte*) COSQ#6 ← phi( anim/(signed byte*) COSQ#7 anim::@30/(signed byte*) COSQ#8 )
  (signed byte*) COSH#6 ← phi( anim/(signed byte*) COSH#7 anim::@30/(signed byte*) COSH#8 )
  (signed byte) sy#16 ← phi( anim/(signed byte) sy#20 anim::@30/(signed byte) sy#3 )
  (signed byte) sx#16 ← phi( anim/(signed byte) sx#19 anim::@30/(signed byte) sx#3 )
  if(true) goto anim::@4
  to:anim::@return
anim::@4: scope:[anim]  from anim::@1 anim::@4
  (byte*) print_screen#53 ← phi( anim::@1/(byte*) print_screen#54 anim::@4/(byte*) print_screen#53 )
  (signed byte*) COSQ#5 ← phi( anim::@1/(signed byte*) COSQ#6 anim::@4/(signed byte*) COSQ#5 )
  (signed byte*) COSH#5 ← phi( anim::@1/(signed byte*) COSH#6 anim::@4/(signed byte*) COSH#5 )
  (signed byte) sy#26 ← phi( anim::@1/(signed byte) sy#16 anim::@4/(signed byte) sy#26 )
  (signed byte) sx#24 ← phi( anim::@1/(signed byte) sx#16 anim::@4/(signed byte) sx#24 )
  (bool~) anim::$0 ← *((byte*) RASTER#0) != (number) $ff
  if((bool~) anim::$0) goto anim::@4
  to:anim::@10
anim::@10: scope:[anim]  from anim::@10 anim::@4
  (byte*) print_screen#52 ← phi( anim::@10/(byte*) print_screen#52 anim::@4/(byte*) print_screen#53 )
  (signed byte*) COSQ#4 ← phi( anim::@10/(signed byte*) COSQ#4 anim::@4/(signed byte*) COSQ#5 )
  (signed byte*) COSH#4 ← phi( anim::@10/(signed byte*) COSH#4 anim::@4/(signed byte*) COSH#5 )
  (signed byte) sy#21 ← phi( anim::@10/(signed byte) sy#21 anim::@4/(signed byte) sy#26 )
  (signed byte) sx#20 ← phi( anim::@10/(signed byte) sx#20 anim::@4/(signed byte) sx#24 )
  (bool~) anim::$1 ← *((byte*) RASTER#0) != (number) $fe
  if((bool~) anim::$1) goto anim::@10
  to:anim::@16
anim::@16: scope:[anim]  from anim::@10 anim::@16
  (byte*) print_screen#51 ← phi( anim::@10/(byte*) print_screen#52 anim::@16/(byte*) print_screen#51 )
  (signed byte*) COSQ#3 ← phi( anim::@10/(signed byte*) COSQ#4 anim::@16/(signed byte*) COSQ#3 )
  (signed byte*) COSH#3 ← phi( anim::@10/(signed byte*) COSH#4 anim::@16/(signed byte*) COSH#3 )
  (signed byte) sy#14 ← phi( anim::@10/(signed byte) sy#21 anim::@16/(signed byte) sy#14 )
  (signed byte) sx#14 ← phi( anim::@10/(signed byte) sx#20 anim::@16/(signed byte) sx#14 )
  (bool~) anim::$2 ← *((byte*) RASTER#0) != (number) $fd
  if((bool~) anim::$2) goto anim::@16
  to:anim::@18
anim::@18: scope:[anim]  from anim::@16
  (byte*) print_screen#49 ← phi( anim::@16/(byte*) print_screen#51 )
  (signed byte*) COSQ#2 ← phi( anim::@16/(signed byte*) COSQ#3 )
  (signed byte*) COSH#2 ← phi( anim::@16/(signed byte*) COSH#3 )
  (signed byte) sy#8 ← phi( anim::@16/(signed byte) sy#14 )
  (signed byte) sx#8 ← phi( anim::@16/(signed byte) sx#14 )
  *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0)
  (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#8
  (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#8
  (signed byte) calculate_matrix::sz#0 ← (signed byte) sz#0
  call calculate_matrix 
  to:anim::@27
anim::@27: scope:[anim]  from anim::@18
  (signed byte*) COSQ#16 ← phi( anim::@18/(signed byte*) COSQ#2 )
  (signed byte*) COSH#16 ← phi( anim::@18/(signed byte*) COSH#2 )
  (byte*) print_screen#46 ← phi( anim::@18/(byte*) print_screen#49 )
  (signed byte) sy#30 ← phi( anim::@18/(signed byte) sy#8 )
  (signed byte) sx#27 ← phi( anim::@18/(signed byte) sx#8 )
  call store_matrix 
  to:anim::@28
anim::@28: scope:[anim]  from anim::@27
  (signed byte*) COSQ#15 ← phi( anim::@27/(signed byte*) COSQ#16 )
  (signed byte*) COSH#15 ← phi( anim::@27/(signed byte*) COSH#16 )
  (byte*) print_screen#44 ← phi( anim::@27/(byte*) print_screen#46 )
  (signed byte) sy#29 ← phi( anim::@27/(signed byte) sy#30 )
  (signed byte) sx#26 ← phi( anim::@27/(signed byte) sx#27 )
  (byte) anim::i#0 ← (byte) 0
  to:anim::@22
anim::@22: scope:[anim]  from anim::@28 anim::@29
  (signed byte*) COSQ#14 ← phi( anim::@28/(signed byte*) COSQ#15 anim::@29/(signed byte*) COSQ#12 )
  (signed byte*) COSH#14 ← phi( anim::@28/(signed byte*) COSH#15 anim::@29/(signed byte*) COSH#12 )
  (byte*) print_screen#43 ← phi( anim::@28/(byte*) print_screen#44 anim::@29/(byte*) print_screen#41 )
  (signed byte) sy#27 ← phi( anim::@28/(signed byte) sy#29 anim::@29/(signed byte) sy#22 )
  (signed byte) sx#25 ← phi( anim::@28/(signed byte) sx#26 anim::@29/(signed byte) sx#21 )
  (byte) anim::i#2 ← phi( anim::@28/(byte) anim::i#0 anim::@29/(byte) anim::i#1 )
  *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0)
  (signed byte) rotate_matrix::x#0 ← *((signed byte[8]) xs#0 + (byte) anim::i#2)
  (signed byte) rotate_matrix::y#0 ← *((signed byte[8]) ys#0 + (byte) anim::i#2)
  (signed byte) rotate_matrix::z#0 ← *((signed byte[8]) zs#0 + (byte) anim::i#2)
  call rotate_matrix 
  to:anim::@29
anim::@29: scope:[anim]  from anim::@22
  (signed byte*) COSQ#12 ← phi( anim::@22/(signed byte*) COSQ#14 )
  (signed byte*) COSH#12 ← phi( anim::@22/(signed byte*) COSH#14 )
  (byte*) print_screen#41 ← phi( anim::@22/(byte*) print_screen#43 )
  (signed byte) sy#22 ← phi( anim::@22/(signed byte) sy#27 )
  (signed byte) sx#21 ← phi( anim::@22/(signed byte) sx#25 )
  (byte) anim::i#3 ← phi( anim::@22/(byte) anim::i#2 )
  *((signed byte[8]) xrs#0 + (byte) anim::i#3) ← *((signed byte*) xr#0)
  *((signed byte[8]) yrs#0 + (byte) anim::i#3) ← *((signed byte*) yr#0)
  *((signed byte[8]) zrs#0 + (byte) anim::i#3) ← *((signed byte*) zr#0)
  *((signed byte[8]) pps#0 + (byte) anim::i#3) ← *((signed byte*) pp#0)
  *((signed byte[8]) xps#0 + (byte) anim::i#3) ← *((signed byte*) xp#0)
  *((signed byte[8]) yps#0 + (byte) anim::i#3) ← *((signed byte*) yp#0)
  (number~) anim::$6 ← (byte) anim::i#3 * (number) 2
  (byte) anim::i2#0 ← (number~) anim::$6
  (byte~) anim::$7 ← ((byte)) *((signed byte*) xp#0)
  (number~) anim::$8 ← (number) $80 + (byte~) anim::$7
  *((byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (number~) anim::$8
  (byte~) anim::$9 ← ((byte)) *((signed byte*) yp#0)
  (number~) anim::$10 ← (number) $80 + (byte~) anim::$9
  *((byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (number~) anim::$10
  (byte) anim::i#1 ← (byte) anim::i#3 + rangenext(0,7)
  (bool~) anim::$11 ← (byte) anim::i#1 != rangelast(0,7)
  if((bool~) anim::$11) goto anim::@22
  to:anim::@23
anim::@23: scope:[anim]  from anim::@29
  (signed byte*) COSQ#10 ← phi( anim::@29/(signed byte*) COSQ#12 )
  (signed byte*) COSH#10 ← phi( anim::@29/(signed byte*) COSH#12 )
  (byte*) print_screen#28 ← phi( anim::@29/(byte*) print_screen#41 )
  (signed byte) sy#15 ← phi( anim::@29/(signed byte) sy#22 )
  (signed byte) sx#15 ← phi( anim::@29/(signed byte) sx#21 )
  *((byte*) BORDERCOL#0) ← (byte) LIGHT_GREY#0
  call debug_print 
  to:anim::@30
anim::@30: scope:[anim]  from anim::@23
  (byte*) print_screen#56 ← phi( anim::@23/(byte*) print_screen#28 )
  (signed byte*) COSQ#8 ← phi( anim::@23/(signed byte*) COSQ#10 )
  (signed byte*) COSH#8 ← phi( anim::@23/(signed byte*) COSH#10 )
  (signed byte) sy#9 ← phi( anim::@23/(signed byte) sy#15 )
  (signed byte) sx#9 ← phi( anim::@23/(signed byte) sx#15 )
  *((byte*) BORDERCOL#0) ← (byte) LIGHT_BLUE#0
  (signed byte) sx#3 ← (signed byte) sx#9 + (number) 2
  (signed byte) sy#3 ← (signed byte) sy#9 - (number) 3
  to:anim::@1
anim::@return: scope:[anim]  from anim::@1
  (signed byte) sy#10 ← phi( anim::@1/(signed byte) sy#16 )
  (signed byte) sx#10 ← phi( anim::@1/(signed byte) sx#16 )
  (signed byte) sx#4 ← (signed byte) sx#10
  (signed byte) sy#4 ← (signed byte) sy#10
  return 
  to:@return
debug_print_init: scope:[debug_print_init]  from main::@1
  (byte*) print_screen#14 ← phi( main::@1/(byte*) print_screen#27 )
  call print_cls 
  to:debug_print_init::@5
debug_print_init::@5: scope:[debug_print_init]  from debug_print_init
  (byte*~) debug_print_init::$1 ← (byte*) SCREEN#0 + (number) $28*(number) 0
  (byte*~) debug_print_init::$2 ← (byte*~) debug_print_init::$1 + (number) $22
  (byte*) print_str_at::str#1 ← (const string) debug_print_init::str
  (byte*) print_str_at::at#1 ← (byte*~) debug_print_init::$2
  call print_str_at 
  to:debug_print_init::@6
debug_print_init::@6: scope:[debug_print_init]  from debug_print_init::@5
  (byte*~) debug_print_init::$4 ← (byte*) SCREEN#0 + (number) $28*(number) 1
  (byte*~) debug_print_init::$5 ← (byte*~) debug_print_init::$4 + (number) $22
  (byte*) print_str_at::str#2 ← (const string) debug_print_init::str1
  (byte*) print_str_at::at#2 ← (byte*~) debug_print_init::$5
  call print_str_at 
  to:debug_print_init::@7
debug_print_init::@7: scope:[debug_print_init]  from debug_print_init::@6
  (byte*~) debug_print_init::$7 ← (byte*) SCREEN#0 + (number) $28*(number) 2
  (byte*~) debug_print_init::$8 ← (byte*~) debug_print_init::$7 + (number) $22
  (byte*) print_str_at::str#3 ← (const string) debug_print_init::str2
  (byte*) print_str_at::at#3 ← (byte*~) debug_print_init::$8
  call print_str_at 
  to:debug_print_init::@8
debug_print_init::@8: scope:[debug_print_init]  from debug_print_init::@7
  (byte*~) debug_print_init::$10 ← (byte*) SCREEN#0 + (number) $28*(number) $10
  (byte*) print_str_at::str#4 ← (const string) debug_print_init::str3
  (byte*) print_str_at::at#4 ← (byte*~) debug_print_init::$10
  call print_str_at 
  to:debug_print_init::@9
debug_print_init::@9: scope:[debug_print_init]  from debug_print_init::@8
  (byte*~) debug_print_init::$12 ← (byte*) SCREEN#0 + (number) $28*(number) $11
  (byte*) print_str_at::str#5 ← (const string) debug_print_init::str4
  (byte*) print_str_at::at#5 ← (byte*~) debug_print_init::$12
  call print_str_at 
  to:debug_print_init::@10
debug_print_init::@10: scope:[debug_print_init]  from debug_print_init::@9
  (byte*~) debug_print_init::$14 ← (byte*) SCREEN#0 + (number) $28*(number) $12
  (byte*) print_str_at::str#6 ← (const string) debug_print_init::str5
  (byte*) print_str_at::at#6 ← (byte*~) debug_print_init::$14
  call print_str_at 
  to:debug_print_init::@11
debug_print_init::@11: scope:[debug_print_init]  from debug_print_init::@10
  (byte*~) debug_print_init::$16 ← (byte*) SCREEN#0 + (number) $28*(number) $13
  (byte*) print_str_at::str#7 ← (const string) debug_print_init::str6
  (byte*) print_str_at::at#7 ← (byte*~) debug_print_init::$16
  call print_str_at 
  to:debug_print_init::@12
debug_print_init::@12: scope:[debug_print_init]  from debug_print_init::@11
  (byte*~) debug_print_init::$18 ← (byte*) SCREEN#0 + (number) $28*(number) $14
  (byte*) print_str_at::str#8 ← (const string) debug_print_init::str7
  (byte*) print_str_at::at#8 ← (byte*~) debug_print_init::$18
  call print_str_at 
  to:debug_print_init::@13
debug_print_init::@13: scope:[debug_print_init]  from debug_print_init::@12
  (byte*~) debug_print_init::$20 ← (byte*) SCREEN#0 + (number) $28*(number) $15
  (byte*) print_str_at::str#9 ← (const string) debug_print_init::str8
  (byte*) print_str_at::at#9 ← (byte*~) debug_print_init::$20
  call print_str_at 
  to:debug_print_init::@14
debug_print_init::@14: scope:[debug_print_init]  from debug_print_init::@13
  (byte*~) debug_print_init::$22 ← (byte*) SCREEN#0 + (number) $28*(number) $16
  (byte*) print_str_at::str#10 ← (const string) debug_print_init::str9
  (byte*) print_str_at::at#10 ← (byte*~) debug_print_init::$22
  call print_str_at 
  to:debug_print_init::@15
debug_print_init::@15: scope:[debug_print_init]  from debug_print_init::@14
  (byte*~) debug_print_init::$24 ← (byte*) SCREEN#0 + (number) $28*(number) $17
  (byte*) print_str_at::str#11 ← (const string) debug_print_init::str10
  (byte*) print_str_at::at#11 ← (byte*~) debug_print_init::$24
  call print_str_at 
  to:debug_print_init::@16
debug_print_init::@16: scope:[debug_print_init]  from debug_print_init::@15
  (byte*~) debug_print_init::$26 ← (byte*) SCREEN#0 + (number) $28*(number) $18
  (byte*) print_str_at::str#12 ← (const string) debug_print_init::str11
  (byte*) print_str_at::at#12 ← (byte*~) debug_print_init::$26
  call print_str_at 
  to:debug_print_init::@17
debug_print_init::@17: scope:[debug_print_init]  from debug_print_init::@16
  (byte*~) debug_print_init::$28 ← (byte*) SCREEN#0 + (number) $10*(number) $28
  (byte*) debug_print_init::at_line#0 ← (byte*~) debug_print_init::$28
  (byte) debug_print_init::c#0 ← (number) 4
  (byte*) debug_print_init::COLS#0 ← ((byte*)) (number) $d800
  (byte*~) debug_print_init::$29 ← (byte*) debug_print_init::COLS#0 + (number) $10*(number) $28
  (byte*) debug_print_init::at_cols#0 ← (byte*~) debug_print_init::$29
  (byte) debug_print_init::i#0 ← (byte) 0
  to:debug_print_init::@1
debug_print_init::@1: scope:[debug_print_init]  from debug_print_init::@17 debug_print_init::@3
  (byte*) debug_print_init::at_cols#5 ← phi( debug_print_init::@17/(byte*) debug_print_init::at_cols#0 debug_print_init::@3/(byte*) debug_print_init::at_cols#6 )
  (byte) debug_print_init::i#2 ← phi( debug_print_init::@17/(byte) debug_print_init::i#0 debug_print_init::@3/(byte) debug_print_init::i#1 )
  (byte) debug_print_init::c#2 ← phi( debug_print_init::@17/(byte) debug_print_init::c#0 debug_print_init::@3/(byte) debug_print_init::c#1 )
  (byte*) debug_print_init::at_line#1 ← phi( debug_print_init::@17/(byte*) debug_print_init::at_line#0 debug_print_init::@3/(byte*) debug_print_init::at_line#4 )
  (byte*~) debug_print_init::$30 ← (byte*) debug_print_init::at_line#1 + (number) $28*(number) 0
  (byte*~) debug_print_init::$31 ← (byte*~) debug_print_init::$30 + (byte) debug_print_init::c#2
  (signed byte) print_sbyte_at::b#1 ← *((signed byte[8]) xs#0 + (byte) debug_print_init::i#2)
  (byte*) print_sbyte_at::at#0 ← (byte*~) debug_print_init::$31
  call print_sbyte_at 
  to:debug_print_init::@18
debug_print_init::@18: scope:[debug_print_init]  from debug_print_init::@1
  (byte*) debug_print_init::at_cols#4 ← phi( debug_print_init::@1/(byte*) debug_print_init::at_cols#5 )
  (byte) debug_print_init::i#3 ← phi( debug_print_init::@1/(byte) debug_print_init::i#2 )
  (byte) debug_print_init::c#3 ← phi( debug_print_init::@1/(byte) debug_print_init::c#2 )
  (byte*) debug_print_init::at_line#2 ← phi( debug_print_init::@1/(byte*) debug_print_init::at_line#1 )
  (byte*~) debug_print_init::$33 ← (byte*) debug_print_init::at_line#2 + (number) $28*(number) 1
  (byte*~) debug_print_init::$34 ← (byte*~) debug_print_init::$33 + (byte) debug_print_init::c#3
  (signed byte) print_sbyte_at::b#2 ← *((signed byte[8]) ys#0 + (byte) debug_print_init::i#3)
  (byte*) print_sbyte_at::at#1 ← (byte*~) debug_print_init::$34
  call print_sbyte_at 
  to:debug_print_init::@19
debug_print_init::@19: scope:[debug_print_init]  from debug_print_init::@18
  (byte*) debug_print_init::at_cols#3 ← phi( debug_print_init::@18/(byte*) debug_print_init::at_cols#4 )
  (byte) debug_print_init::i#4 ← phi( debug_print_init::@18/(byte) debug_print_init::i#3 )
  (byte) debug_print_init::c#4 ← phi( debug_print_init::@18/(byte) debug_print_init::c#3 )
  (byte*) debug_print_init::at_line#3 ← phi( debug_print_init::@18/(byte*) debug_print_init::at_line#2 )
  (byte*~) debug_print_init::$36 ← (byte*) debug_print_init::at_line#3 + (number) $28*(number) 2
  (byte*~) debug_print_init::$37 ← (byte*~) debug_print_init::$36 + (byte) debug_print_init::c#4
  (signed byte) print_sbyte_at::b#3 ← *((signed byte[8]) zs#0 + (byte) debug_print_init::i#4)
  (byte*) print_sbyte_at::at#2 ← (byte*~) debug_print_init::$37
  call print_sbyte_at 
  to:debug_print_init::@20
debug_print_init::@20: scope:[debug_print_init]  from debug_print_init::@19
  (byte*) debug_print_init::at_line#6 ← phi( debug_print_init::@19/(byte*) debug_print_init::at_line#3 )
  (byte) debug_print_init::c#7 ← phi( debug_print_init::@19/(byte) debug_print_init::c#4 )
  (byte*) debug_print_init::at_cols#2 ← phi( debug_print_init::@19/(byte*) debug_print_init::at_cols#3 )
  (byte) debug_print_init::i#7 ← phi( debug_print_init::@19/(byte) debug_print_init::i#4 )
  (byte) debug_print_init::j#0 ← (byte) 0
  to:debug_print_init::@2
debug_print_init::@2: scope:[debug_print_init]  from debug_print_init::@2 debug_print_init::@20
  (byte*) debug_print_init::at_line#5 ← phi( debug_print_init::@2/(byte*) debug_print_init::at_line#5 debug_print_init::@20/(byte*) debug_print_init::at_line#6 )
  (byte) debug_print_init::j#2 ← phi( debug_print_init::@2/(byte) debug_print_init::j#1 debug_print_init::@20/(byte) debug_print_init::j#0 )
  (byte) debug_print_init::c#5 ← phi( debug_print_init::@2/(byte) debug_print_init::c#5 debug_print_init::@20/(byte) debug_print_init::c#7 )
  (byte*) debug_print_init::at_cols#1 ← phi( debug_print_init::@2/(byte*) debug_print_init::at_cols#1 debug_print_init::@20/(byte*) debug_print_init::at_cols#2 )
  (byte) debug_print_init::i#5 ← phi( debug_print_init::@2/(byte) debug_print_init::i#5 debug_print_init::@20/(byte) debug_print_init::i#7 )
  (number~) debug_print_init::$39 ← (number) 8 + (byte) debug_print_init::i#5
  (byte) debug_print_init::col#0 ← (number~) debug_print_init::$39
  (byte*~) debug_print_init::$40 ← (byte*) debug_print_init::at_cols#1 + (number) $28*(number) 0
  (byte*~) debug_print_init::$41 ← (byte*~) debug_print_init::$40 + (byte) debug_print_init::c#5
  (byte*~) debug_print_init::$42 ← (byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2
  *((byte*~) debug_print_init::$42) ← (byte) debug_print_init::col#0
  (byte*~) debug_print_init::$43 ← (byte*) debug_print_init::at_cols#1 + (number) $28*(number) 1
  (byte*~) debug_print_init::$44 ← (byte*~) debug_print_init::$43 + (byte) debug_print_init::c#5
  (byte*~) debug_print_init::$45 ← (byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2
  *((byte*~) debug_print_init::$45) ← (byte) debug_print_init::col#0
  (byte*~) debug_print_init::$46 ← (byte*) debug_print_init::at_cols#1 + (number) $28*(number) 2
  (byte*~) debug_print_init::$47 ← (byte*~) debug_print_init::$46 + (byte) debug_print_init::c#5
  (byte*~) debug_print_init::$48 ← (byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2
  *((byte*~) debug_print_init::$48) ← (byte) debug_print_init::col#0
  (byte*~) debug_print_init::$49 ← (byte*) debug_print_init::at_cols#1 + (number) $28*(number) 3
  (byte*~) debug_print_init::$50 ← (byte*~) debug_print_init::$49 + (byte) debug_print_init::c#5
  (byte*~) debug_print_init::$51 ← (byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2
  *((byte*~) debug_print_init::$51) ← (byte) debug_print_init::col#0
  (byte*~) debug_print_init::$52 ← (byte*) debug_print_init::at_cols#1 + (number) $28*(number) 4
  (byte*~) debug_print_init::$53 ← (byte*~) debug_print_init::$52 + (byte) debug_print_init::c#5
  (byte*~) debug_print_init::$54 ← (byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2
  *((byte*~) debug_print_init::$54) ← (byte) debug_print_init::col#0
  (byte*~) debug_print_init::$55 ← (byte*) debug_print_init::at_cols#1 + (number) $28*(number) 5
  (byte*~) debug_print_init::$56 ← (byte*~) debug_print_init::$55 + (byte) debug_print_init::c#5
  (byte*~) debug_print_init::$57 ← (byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2
  *((byte*~) debug_print_init::$57) ← (byte) debug_print_init::col#0
  (byte*~) debug_print_init::$58 ← (byte*) debug_print_init::at_cols#1 + (number) $28*(number) 6
  (byte*~) debug_print_init::$59 ← (byte*~) debug_print_init::$58 + (byte) debug_print_init::c#5
  (byte*~) debug_print_init::$60 ← (byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2
  *((byte*~) debug_print_init::$60) ← (byte) debug_print_init::col#0
  (byte*~) debug_print_init::$61 ← (byte*) debug_print_init::at_cols#1 + (number) $28*(number) 7
  (byte*~) debug_print_init::$62 ← (byte*~) debug_print_init::$61 + (byte) debug_print_init::c#5
  (byte*~) debug_print_init::$63 ← (byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2
  *((byte*~) debug_print_init::$63) ← (byte) debug_print_init::col#0
  (byte*~) debug_print_init::$64 ← (byte*) debug_print_init::at_cols#1 + (number) $28*(number) 8
  (byte*~) debug_print_init::$65 ← (byte*~) debug_print_init::$64 + (byte) debug_print_init::c#5
  (byte*~) debug_print_init::$66 ← (byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2
  *((byte*~) debug_print_init::$66) ← (byte) debug_print_init::col#0
  (byte) debug_print_init::j#1 ← (byte) debug_print_init::j#2 + rangenext(0,3)
  (bool~) debug_print_init::$67 ← (byte) debug_print_init::j#1 != rangelast(0,3)
  if((bool~) debug_print_init::$67) goto debug_print_init::@2
  to:debug_print_init::@3
debug_print_init::@3: scope:[debug_print_init]  from debug_print_init::@2
  (byte*) debug_print_init::at_cols#6 ← phi( debug_print_init::@2/(byte*) debug_print_init::at_cols#1 )
  (byte*) debug_print_init::at_line#4 ← phi( debug_print_init::@2/(byte*) debug_print_init::at_line#5 )
  (byte) debug_print_init::i#6 ← phi( debug_print_init::@2/(byte) debug_print_init::i#5 )
  (byte) debug_print_init::c#6 ← phi( debug_print_init::@2/(byte) debug_print_init::c#5 )
  (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#6 + (number) 4
  (byte) debug_print_init::i#1 ← (byte) debug_print_init::i#6 + rangenext(0,7)
  (bool~) debug_print_init::$68 ← (byte) debug_print_init::i#1 != rangelast(0,7)
  if((bool~) debug_print_init::$68) goto debug_print_init::@1
  to:debug_print_init::@return
debug_print_init::@return: scope:[debug_print_init]  from debug_print_init::@3
  return 
  to:@return
debug_print: scope:[debug_print]  from anim::@23
  (signed byte) sy#28 ← phi( anim::@23/(signed byte) sy#15 )
  (byte*) print_screen#15 ← phi( anim::@23/(byte*) print_screen#28 )
  (signed byte) sx#11 ← phi( anim::@23/(signed byte) sx#15 )
  (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#11
  (byte) debug_print::print_sbyte_pos1_row#0 ← (number) 0
  (byte) debug_print::print_sbyte_pos1_col#0 ← (number) $25
  to:debug_print::print_sbyte_pos1
debug_print::print_sbyte_pos1: scope:[debug_print]  from debug_print
  (signed byte) sy#23 ← phi( debug_print/(signed byte) sy#28 )
  (signed byte) debug_print::print_sbyte_pos1_sb#1 ← phi( debug_print/(signed byte) debug_print::print_sbyte_pos1_sb#0 )
  (byte) debug_print::print_sbyte_pos1_col#1 ← phi( debug_print/(byte) debug_print::print_sbyte_pos1_col#0 )
  (byte*) print_screen#2 ← phi( debug_print/(byte*) print_screen#15 )
  (byte) debug_print::print_sbyte_pos1_row#1 ← phi( debug_print/(byte) debug_print::print_sbyte_pos1_row#0 )
  (number~) debug_print::print_sbyte_pos1_$0#0 ← (byte) debug_print::print_sbyte_pos1_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos1_$1#0 ← (byte*) print_screen#2 + (number~) debug_print::print_sbyte_pos1_$0#0
  (byte*~) debug_print::print_sbyte_pos1_$2#0 ← (byte*~) debug_print::print_sbyte_pos1_$1#0 + (byte) debug_print::print_sbyte_pos1_col#1
  (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#1
  (byte*) print_sbyte_at::at#3 ← (byte*~) debug_print::print_sbyte_pos1_$2#0
  call print_sbyte_at 
  to:debug_print::@15
debug_print::@15: scope:[debug_print]  from debug_print::print_sbyte_pos1
  (byte*) print_screen#29 ← phi( debug_print::print_sbyte_pos1/(byte*) print_screen#2 )
  (signed byte) sy#17 ← phi( debug_print::print_sbyte_pos1/(signed byte) sy#23 )
  to:debug_print::@3
debug_print::@3: scope:[debug_print]  from debug_print::@15
  (byte*) print_screen#16 ← phi( debug_print::@15/(byte*) print_screen#29 )
  (signed byte) sy#11 ← phi( debug_print::@15/(signed byte) sy#17 )
  (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#11
  (byte) debug_print::print_sbyte_pos2_row#0 ← (number) 1
  (byte) debug_print::print_sbyte_pos2_col#0 ← (number) $25
  to:debug_print::print_sbyte_pos2
debug_print::print_sbyte_pos2: scope:[debug_print]  from debug_print::@3
  (signed byte) debug_print::print_sbyte_pos2_sb#1 ← phi( debug_print::@3/(signed byte) debug_print::print_sbyte_pos2_sb#0 )
  (byte) debug_print::print_sbyte_pos2_col#1 ← phi( debug_print::@3/(byte) debug_print::print_sbyte_pos2_col#0 )
  (byte*) print_screen#3 ← phi( debug_print::@3/(byte*) print_screen#16 )
  (byte) debug_print::print_sbyte_pos2_row#1 ← phi( debug_print::@3/(byte) debug_print::print_sbyte_pos2_row#0 )
  (number~) debug_print::print_sbyte_pos2_$0#0 ← (byte) debug_print::print_sbyte_pos2_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos2_$1#0 ← (byte*) print_screen#3 + (number~) debug_print::print_sbyte_pos2_$0#0
  (byte*~) debug_print::print_sbyte_pos2_$2#0 ← (byte*~) debug_print::print_sbyte_pos2_$1#0 + (byte) debug_print::print_sbyte_pos2_col#1
  (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#1
  (byte*) print_sbyte_at::at#4 ← (byte*~) debug_print::print_sbyte_pos2_$2#0
  call print_sbyte_at 
  to:debug_print::@16
debug_print::@16: scope:[debug_print]  from debug_print::print_sbyte_pos2
  (byte*) print_screen#30 ← phi( debug_print::print_sbyte_pos2/(byte*) print_screen#3 )
  to:debug_print::@4
debug_print::@4: scope:[debug_print]  from debug_print::@16
  (byte*) print_screen#17 ← phi( debug_print::@16/(byte*) print_screen#30 )
  (signed byte) debug_print::print_sbyte_pos3_sb#0 ← (signed byte) sz#0
  (byte) debug_print::print_sbyte_pos3_row#0 ← (number) 2
  (byte) debug_print::print_sbyte_pos3_col#0 ← (number) $25
  to:debug_print::print_sbyte_pos3
debug_print::print_sbyte_pos3: scope:[debug_print]  from debug_print::@4
  (signed byte) debug_print::print_sbyte_pos3_sb#1 ← phi( debug_print::@4/(signed byte) debug_print::print_sbyte_pos3_sb#0 )
  (byte) debug_print::print_sbyte_pos3_col#1 ← phi( debug_print::@4/(byte) debug_print::print_sbyte_pos3_col#0 )
  (byte*) print_screen#4 ← phi( debug_print::@4/(byte*) print_screen#17 )
  (byte) debug_print::print_sbyte_pos3_row#1 ← phi( debug_print::@4/(byte) debug_print::print_sbyte_pos3_row#0 )
  (number~) debug_print::print_sbyte_pos3_$0#0 ← (byte) debug_print::print_sbyte_pos3_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos3_$1#0 ← (byte*) print_screen#4 + (number~) debug_print::print_sbyte_pos3_$0#0
  (byte*~) debug_print::print_sbyte_pos3_$2#0 ← (byte*~) debug_print::print_sbyte_pos3_$1#0 + (byte) debug_print::print_sbyte_pos3_col#1
  (signed byte) print_sbyte_at::b#6 ← (signed byte) debug_print::print_sbyte_pos3_sb#1
  (byte*) print_sbyte_at::at#5 ← (byte*~) debug_print::print_sbyte_pos3_$2#0
  call print_sbyte_at 
  to:debug_print::@17
debug_print::@17: scope:[debug_print]  from debug_print::print_sbyte_pos3
  (byte*) print_screen#31 ← phi( debug_print::print_sbyte_pos3/(byte*) print_screen#4 )
  to:debug_print::@5
debug_print::@5: scope:[debug_print]  from debug_print::@17
  (byte*) print_screen#18 ← phi( debug_print::@17/(byte*) print_screen#31 )
  (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (number) 0)
  (byte) debug_print::print_sbyte_pos4_row#0 ← (number) 4
  (byte) debug_print::print_sbyte_pos4_col#0 ← (number) $1d
  to:debug_print::print_sbyte_pos4
debug_print::print_sbyte_pos4: scope:[debug_print]  from debug_print::@5
  (signed byte) debug_print::print_sbyte_pos4_sb#1 ← phi( debug_print::@5/(signed byte) debug_print::print_sbyte_pos4_sb#0 )
  (byte) debug_print::print_sbyte_pos4_col#1 ← phi( debug_print::@5/(byte) debug_print::print_sbyte_pos4_col#0 )
  (byte*) print_screen#5 ← phi( debug_print::@5/(byte*) print_screen#18 )
  (byte) debug_print::print_sbyte_pos4_row#1 ← phi( debug_print::@5/(byte) debug_print::print_sbyte_pos4_row#0 )
  (number~) debug_print::print_sbyte_pos4_$0#0 ← (byte) debug_print::print_sbyte_pos4_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos4_$1#0 ← (byte*) print_screen#5 + (number~) debug_print::print_sbyte_pos4_$0#0
  (byte*~) debug_print::print_sbyte_pos4_$2#0 ← (byte*~) debug_print::print_sbyte_pos4_$1#0 + (byte) debug_print::print_sbyte_pos4_col#1
  (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#1
  (byte*) print_sbyte_at::at#6 ← (byte*~) debug_print::print_sbyte_pos4_$2#0
  call print_sbyte_at 
  to:debug_print::@18
debug_print::@18: scope:[debug_print]  from debug_print::print_sbyte_pos4
  (byte*) print_screen#32 ← phi( debug_print::print_sbyte_pos4/(byte*) print_screen#5 )
  to:debug_print::@6
debug_print::@6: scope:[debug_print]  from debug_print::@18
  (byte*) print_screen#19 ← phi( debug_print::@18/(byte*) print_screen#32 )
  (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (number) 1)
  (byte) debug_print::print_sbyte_pos5_row#0 ← (number) 4
  (byte) debug_print::print_sbyte_pos5_col#0 ← (number) $21
  to:debug_print::print_sbyte_pos5
debug_print::print_sbyte_pos5: scope:[debug_print]  from debug_print::@6
  (signed byte) debug_print::print_sbyte_pos5_sb#1 ← phi( debug_print::@6/(signed byte) debug_print::print_sbyte_pos5_sb#0 )
  (byte) debug_print::print_sbyte_pos5_col#1 ← phi( debug_print::@6/(byte) debug_print::print_sbyte_pos5_col#0 )
  (byte*) print_screen#6 ← phi( debug_print::@6/(byte*) print_screen#19 )
  (byte) debug_print::print_sbyte_pos5_row#1 ← phi( debug_print::@6/(byte) debug_print::print_sbyte_pos5_row#0 )
  (number~) debug_print::print_sbyte_pos5_$0#0 ← (byte) debug_print::print_sbyte_pos5_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos5_$1#0 ← (byte*) print_screen#6 + (number~) debug_print::print_sbyte_pos5_$0#0
  (byte*~) debug_print::print_sbyte_pos5_$2#0 ← (byte*~) debug_print::print_sbyte_pos5_$1#0 + (byte) debug_print::print_sbyte_pos5_col#1
  (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#1
  (byte*) print_sbyte_at::at#7 ← (byte*~) debug_print::print_sbyte_pos5_$2#0
  call print_sbyte_at 
  to:debug_print::@19
debug_print::@19: scope:[debug_print]  from debug_print::print_sbyte_pos5
  (byte*) print_screen#33 ← phi( debug_print::print_sbyte_pos5/(byte*) print_screen#6 )
  to:debug_print::@7
debug_print::@7: scope:[debug_print]  from debug_print::@19
  (byte*) print_screen#20 ← phi( debug_print::@19/(byte*) print_screen#33 )
  (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (number) 2)
  (byte) debug_print::print_sbyte_pos6_row#0 ← (number) 4
  (byte) debug_print::print_sbyte_pos6_col#0 ← (number) $25
  to:debug_print::print_sbyte_pos6
debug_print::print_sbyte_pos6: scope:[debug_print]  from debug_print::@7
  (signed byte) debug_print::print_sbyte_pos6_sb#1 ← phi( debug_print::@7/(signed byte) debug_print::print_sbyte_pos6_sb#0 )
  (byte) debug_print::print_sbyte_pos6_col#1 ← phi( debug_print::@7/(byte) debug_print::print_sbyte_pos6_col#0 )
  (byte*) print_screen#7 ← phi( debug_print::@7/(byte*) print_screen#20 )
  (byte) debug_print::print_sbyte_pos6_row#1 ← phi( debug_print::@7/(byte) debug_print::print_sbyte_pos6_row#0 )
  (number~) debug_print::print_sbyte_pos6_$0#0 ← (byte) debug_print::print_sbyte_pos6_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos6_$1#0 ← (byte*) print_screen#7 + (number~) debug_print::print_sbyte_pos6_$0#0
  (byte*~) debug_print::print_sbyte_pos6_$2#0 ← (byte*~) debug_print::print_sbyte_pos6_$1#0 + (byte) debug_print::print_sbyte_pos6_col#1
  (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#1
  (byte*) print_sbyte_at::at#8 ← (byte*~) debug_print::print_sbyte_pos6_$2#0
  call print_sbyte_at 
  to:debug_print::@20
debug_print::@20: scope:[debug_print]  from debug_print::print_sbyte_pos6
  (byte*) print_screen#34 ← phi( debug_print::print_sbyte_pos6/(byte*) print_screen#7 )
  to:debug_print::@8
debug_print::@8: scope:[debug_print]  from debug_print::@20
  (byte*) print_screen#21 ← phi( debug_print::@20/(byte*) print_screen#34 )
  (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (number) 3)
  (byte) debug_print::print_sbyte_pos7_row#0 ← (number) 5
  (byte) debug_print::print_sbyte_pos7_col#0 ← (number) $1d
  to:debug_print::print_sbyte_pos7
debug_print::print_sbyte_pos7: scope:[debug_print]  from debug_print::@8
  (signed byte) debug_print::print_sbyte_pos7_sb#1 ← phi( debug_print::@8/(signed byte) debug_print::print_sbyte_pos7_sb#0 )
  (byte) debug_print::print_sbyte_pos7_col#1 ← phi( debug_print::@8/(byte) debug_print::print_sbyte_pos7_col#0 )
  (byte*) print_screen#8 ← phi( debug_print::@8/(byte*) print_screen#21 )
  (byte) debug_print::print_sbyte_pos7_row#1 ← phi( debug_print::@8/(byte) debug_print::print_sbyte_pos7_row#0 )
  (number~) debug_print::print_sbyte_pos7_$0#0 ← (byte) debug_print::print_sbyte_pos7_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos7_$1#0 ← (byte*) print_screen#8 + (number~) debug_print::print_sbyte_pos7_$0#0
  (byte*~) debug_print::print_sbyte_pos7_$2#0 ← (byte*~) debug_print::print_sbyte_pos7_$1#0 + (byte) debug_print::print_sbyte_pos7_col#1
  (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#1
  (byte*) print_sbyte_at::at#9 ← (byte*~) debug_print::print_sbyte_pos7_$2#0
  call print_sbyte_at 
  to:debug_print::@21
debug_print::@21: scope:[debug_print]  from debug_print::print_sbyte_pos7
  (byte*) print_screen#35 ← phi( debug_print::print_sbyte_pos7/(byte*) print_screen#8 )
  to:debug_print::@9
debug_print::@9: scope:[debug_print]  from debug_print::@21
  (byte*) print_screen#22 ← phi( debug_print::@21/(byte*) print_screen#35 )
  (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (number) 4)
  (byte) debug_print::print_sbyte_pos8_row#0 ← (number) 5
  (byte) debug_print::print_sbyte_pos8_col#0 ← (number) $21
  to:debug_print::print_sbyte_pos8
debug_print::print_sbyte_pos8: scope:[debug_print]  from debug_print::@9
  (signed byte) debug_print::print_sbyte_pos8_sb#1 ← phi( debug_print::@9/(signed byte) debug_print::print_sbyte_pos8_sb#0 )
  (byte) debug_print::print_sbyte_pos8_col#1 ← phi( debug_print::@9/(byte) debug_print::print_sbyte_pos8_col#0 )
  (byte*) print_screen#9 ← phi( debug_print::@9/(byte*) print_screen#22 )
  (byte) debug_print::print_sbyte_pos8_row#1 ← phi( debug_print::@9/(byte) debug_print::print_sbyte_pos8_row#0 )
  (number~) debug_print::print_sbyte_pos8_$0#0 ← (byte) debug_print::print_sbyte_pos8_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos8_$1#0 ← (byte*) print_screen#9 + (number~) debug_print::print_sbyte_pos8_$0#0
  (byte*~) debug_print::print_sbyte_pos8_$2#0 ← (byte*~) debug_print::print_sbyte_pos8_$1#0 + (byte) debug_print::print_sbyte_pos8_col#1
  (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#1
  (byte*) print_sbyte_at::at#10 ← (byte*~) debug_print::print_sbyte_pos8_$2#0
  call print_sbyte_at 
  to:debug_print::@22
debug_print::@22: scope:[debug_print]  from debug_print::print_sbyte_pos8
  (byte*) print_screen#36 ← phi( debug_print::print_sbyte_pos8/(byte*) print_screen#9 )
  to:debug_print::@10
debug_print::@10: scope:[debug_print]  from debug_print::@22
  (byte*) print_screen#23 ← phi( debug_print::@22/(byte*) print_screen#36 )
  (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (number) 5)
  (byte) debug_print::print_sbyte_pos9_row#0 ← (number) 5
  (byte) debug_print::print_sbyte_pos9_col#0 ← (number) $25
  to:debug_print::print_sbyte_pos9
debug_print::print_sbyte_pos9: scope:[debug_print]  from debug_print::@10
  (signed byte) debug_print::print_sbyte_pos9_sb#1 ← phi( debug_print::@10/(signed byte) debug_print::print_sbyte_pos9_sb#0 )
  (byte) debug_print::print_sbyte_pos9_col#1 ← phi( debug_print::@10/(byte) debug_print::print_sbyte_pos9_col#0 )
  (byte*) print_screen#10 ← phi( debug_print::@10/(byte*) print_screen#23 )
  (byte) debug_print::print_sbyte_pos9_row#1 ← phi( debug_print::@10/(byte) debug_print::print_sbyte_pos9_row#0 )
  (number~) debug_print::print_sbyte_pos9_$0#0 ← (byte) debug_print::print_sbyte_pos9_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos9_$1#0 ← (byte*) print_screen#10 + (number~) debug_print::print_sbyte_pos9_$0#0
  (byte*~) debug_print::print_sbyte_pos9_$2#0 ← (byte*~) debug_print::print_sbyte_pos9_$1#0 + (byte) debug_print::print_sbyte_pos9_col#1
  (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#1
  (byte*) print_sbyte_at::at#11 ← (byte*~) debug_print::print_sbyte_pos9_$2#0
  call print_sbyte_at 
  to:debug_print::@23
debug_print::@23: scope:[debug_print]  from debug_print::print_sbyte_pos9
  (byte*) print_screen#37 ← phi( debug_print::print_sbyte_pos9/(byte*) print_screen#10 )
  to:debug_print::@11
debug_print::@11: scope:[debug_print]  from debug_print::@23
  (byte*) print_screen#24 ← phi( debug_print::@23/(byte*) print_screen#37 )
  (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (number) 6)
  (byte) debug_print::print_sbyte_pos10_row#0 ← (number) 6
  (byte) debug_print::print_sbyte_pos10_col#0 ← (number) $1d
  to:debug_print::print_sbyte_pos10
debug_print::print_sbyte_pos10: scope:[debug_print]  from debug_print::@11
  (signed byte) debug_print::print_sbyte_pos10_sb#1 ← phi( debug_print::@11/(signed byte) debug_print::print_sbyte_pos10_sb#0 )
  (byte) debug_print::print_sbyte_pos10_col#1 ← phi( debug_print::@11/(byte) debug_print::print_sbyte_pos10_col#0 )
  (byte*) print_screen#11 ← phi( debug_print::@11/(byte*) print_screen#24 )
  (byte) debug_print::print_sbyte_pos10_row#1 ← phi( debug_print::@11/(byte) debug_print::print_sbyte_pos10_row#0 )
  (number~) debug_print::print_sbyte_pos10_$0#0 ← (byte) debug_print::print_sbyte_pos10_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos10_$1#0 ← (byte*) print_screen#11 + (number~) debug_print::print_sbyte_pos10_$0#0
  (byte*~) debug_print::print_sbyte_pos10_$2#0 ← (byte*~) debug_print::print_sbyte_pos10_$1#0 + (byte) debug_print::print_sbyte_pos10_col#1
  (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#1
  (byte*) print_sbyte_at::at#12 ← (byte*~) debug_print::print_sbyte_pos10_$2#0
  call print_sbyte_at 
  to:debug_print::@24
debug_print::@24: scope:[debug_print]  from debug_print::print_sbyte_pos10
  (byte*) print_screen#38 ← phi( debug_print::print_sbyte_pos10/(byte*) print_screen#11 )
  to:debug_print::@12
debug_print::@12: scope:[debug_print]  from debug_print::@24
  (byte*) print_screen#25 ← phi( debug_print::@24/(byte*) print_screen#38 )
  (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (number) 7)
  (byte) debug_print::print_sbyte_pos11_row#0 ← (number) 6
  (byte) debug_print::print_sbyte_pos11_col#0 ← (number) $21
  to:debug_print::print_sbyte_pos11
debug_print::print_sbyte_pos11: scope:[debug_print]  from debug_print::@12
  (signed byte) debug_print::print_sbyte_pos11_sb#1 ← phi( debug_print::@12/(signed byte) debug_print::print_sbyte_pos11_sb#0 )
  (byte) debug_print::print_sbyte_pos11_col#1 ← phi( debug_print::@12/(byte) debug_print::print_sbyte_pos11_col#0 )
  (byte*) print_screen#12 ← phi( debug_print::@12/(byte*) print_screen#25 )
  (byte) debug_print::print_sbyte_pos11_row#1 ← phi( debug_print::@12/(byte) debug_print::print_sbyte_pos11_row#0 )
  (number~) debug_print::print_sbyte_pos11_$0#0 ← (byte) debug_print::print_sbyte_pos11_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos11_$1#0 ← (byte*) print_screen#12 + (number~) debug_print::print_sbyte_pos11_$0#0
  (byte*~) debug_print::print_sbyte_pos11_$2#0 ← (byte*~) debug_print::print_sbyte_pos11_$1#0 + (byte) debug_print::print_sbyte_pos11_col#1
  (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#1
  (byte*) print_sbyte_at::at#13 ← (byte*~) debug_print::print_sbyte_pos11_$2#0
  call print_sbyte_at 
  to:debug_print::@25
debug_print::@25: scope:[debug_print]  from debug_print::print_sbyte_pos11
  (byte*) print_screen#39 ← phi( debug_print::print_sbyte_pos11/(byte*) print_screen#12 )
  to:debug_print::@13
debug_print::@13: scope:[debug_print]  from debug_print::@25
  (byte*) print_screen#26 ← phi( debug_print::@25/(byte*) print_screen#39 )
  (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (number) 8)
  (byte) debug_print::print_sbyte_pos12_row#0 ← (number) 6
  (byte) debug_print::print_sbyte_pos12_col#0 ← (number) $25
  to:debug_print::print_sbyte_pos12
debug_print::print_sbyte_pos12: scope:[debug_print]  from debug_print::@13
  (signed byte) debug_print::print_sbyte_pos12_sb#1 ← phi( debug_print::@13/(signed byte) debug_print::print_sbyte_pos12_sb#0 )
  (byte) debug_print::print_sbyte_pos12_col#1 ← phi( debug_print::@13/(byte) debug_print::print_sbyte_pos12_col#0 )
  (byte*) print_screen#13 ← phi( debug_print::@13/(byte*) print_screen#26 )
  (byte) debug_print::print_sbyte_pos12_row#1 ← phi( debug_print::@13/(byte) debug_print::print_sbyte_pos12_row#0 )
  (number~) debug_print::print_sbyte_pos12_$0#0 ← (byte) debug_print::print_sbyte_pos12_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos12_$1#0 ← (byte*) print_screen#13 + (number~) debug_print::print_sbyte_pos12_$0#0
  (byte*~) debug_print::print_sbyte_pos12_$2#0 ← (byte*~) debug_print::print_sbyte_pos12_$1#0 + (byte) debug_print::print_sbyte_pos12_col#1
  (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#1
  (byte*) print_sbyte_at::at#14 ← (byte*~) debug_print::print_sbyte_pos12_$2#0
  call print_sbyte_at 
  to:debug_print::@26
debug_print::@26: scope:[debug_print]  from debug_print::print_sbyte_pos12
  to:debug_print::@14
debug_print::@14: scope:[debug_print]  from debug_print::@26
  (byte*~) debug_print::$12 ← (byte*) SCREEN#0 + (number) $13*(number) $28
  (byte*) debug_print::at_line#0 ← (byte*~) debug_print::$12
  (byte) debug_print::c#0 ← (number) 4
  (byte) debug_print::i#0 ← (byte) 0
  to:debug_print::@1
debug_print::@1: scope:[debug_print]  from debug_print::@14 debug_print::@32
  (byte) debug_print::i#2 ← phi( debug_print::@14/(byte) debug_print::i#0 debug_print::@32/(byte) debug_print::i#1 )
  (byte) debug_print::c#2 ← phi( debug_print::@14/(byte) debug_print::c#0 debug_print::@32/(byte) debug_print::c#1 )
  (byte*) debug_print::at_line#1 ← phi( debug_print::@14/(byte*) debug_print::at_line#0 debug_print::@32/(byte*) debug_print::at_line#7 )
  (byte*~) debug_print::$13 ← (byte*) debug_print::at_line#1 + (number) $28*(number) 0
  (byte*~) debug_print::$14 ← (byte*~) debug_print::$13 + (byte) debug_print::c#2
  (signed byte) print_sbyte_at::b#16 ← *((signed byte[8]) xrs#0 + (byte) debug_print::i#2)
  (byte*) print_sbyte_at::at#15 ← (byte*~) debug_print::$14
  call print_sbyte_at 
  to:debug_print::@27
debug_print::@27: scope:[debug_print]  from debug_print::@1
  (byte) debug_print::i#3 ← phi( debug_print::@1/(byte) debug_print::i#2 )
  (byte) debug_print::c#3 ← phi( debug_print::@1/(byte) debug_print::c#2 )
  (byte*) debug_print::at_line#2 ← phi( debug_print::@1/(byte*) debug_print::at_line#1 )
  (byte*~) debug_print::$16 ← (byte*) debug_print::at_line#2 + (number) $28*(number) 1
  (byte*~) debug_print::$17 ← (byte*~) debug_print::$16 + (byte) debug_print::c#3
  (signed byte) print_sbyte_at::b#17 ← *((signed byte[8]) yrs#0 + (byte) debug_print::i#3)
  (byte*) print_sbyte_at::at#16 ← (byte*~) debug_print::$17
  call print_sbyte_at 
  to:debug_print::@28
debug_print::@28: scope:[debug_print]  from debug_print::@27
  (byte) debug_print::i#4 ← phi( debug_print::@27/(byte) debug_print::i#3 )
  (byte) debug_print::c#4 ← phi( debug_print::@27/(byte) debug_print::c#3 )
  (byte*) debug_print::at_line#3 ← phi( debug_print::@27/(byte*) debug_print::at_line#2 )
  (byte*~) debug_print::$19 ← (byte*) debug_print::at_line#3 + (number) $28*(number) 2
  (byte*~) debug_print::$20 ← (byte*~) debug_print::$19 + (byte) debug_print::c#4
  (signed byte) print_sbyte_at::b#18 ← *((signed byte[8]) zrs#0 + (byte) debug_print::i#4)
  (byte*) print_sbyte_at::at#17 ← (byte*~) debug_print::$20
  call print_sbyte_at 
  to:debug_print::@29
debug_print::@29: scope:[debug_print]  from debug_print::@28
  (byte) debug_print::i#5 ← phi( debug_print::@28/(byte) debug_print::i#4 )
  (byte) debug_print::c#5 ← phi( debug_print::@28/(byte) debug_print::c#4 )
  (byte*) debug_print::at_line#4 ← phi( debug_print::@28/(byte*) debug_print::at_line#3 )
  (byte*~) debug_print::$22 ← (byte*) debug_print::at_line#4 + (number) $28*(number) 3
  (byte*~) debug_print::$23 ← (byte*~) debug_print::$22 + (byte) debug_print::c#5
  (signed byte) print_sbyte_at::b#19 ← *((signed byte[8]) pps#0 + (byte) debug_print::i#5)
  (byte*) print_sbyte_at::at#18 ← (byte*~) debug_print::$23
  call print_sbyte_at 
  to:debug_print::@30
debug_print::@30: scope:[debug_print]  from debug_print::@29
  (byte) debug_print::i#6 ← phi( debug_print::@29/(byte) debug_print::i#5 )
  (byte) debug_print::c#6 ← phi( debug_print::@29/(byte) debug_print::c#5 )
  (byte*) debug_print::at_line#5 ← phi( debug_print::@29/(byte*) debug_print::at_line#4 )
  (byte*~) debug_print::$25 ← (byte*) debug_print::at_line#5 + (number) $28*(number) 4
  (byte*~) debug_print::$26 ← (byte*~) debug_print::$25 + (byte) debug_print::c#6
  (signed byte) print_sbyte_at::b#20 ← *((signed byte[8]) xps#0 + (byte) debug_print::i#6)
  (byte*) print_sbyte_at::at#19 ← (byte*~) debug_print::$26
  call print_sbyte_at 
  to:debug_print::@31
debug_print::@31: scope:[debug_print]  from debug_print::@30
  (byte) debug_print::i#7 ← phi( debug_print::@30/(byte) debug_print::i#6 )
  (byte) debug_print::c#7 ← phi( debug_print::@30/(byte) debug_print::c#6 )
  (byte*) debug_print::at_line#6 ← phi( debug_print::@30/(byte*) debug_print::at_line#5 )
  (byte*~) debug_print::$28 ← (byte*) debug_print::at_line#6 + (number) $28*(number) 5
  (byte*~) debug_print::$29 ← (byte*~) debug_print::$28 + (byte) debug_print::c#7
  (signed byte) print_sbyte_at::b#21 ← *((signed byte[8]) yps#0 + (byte) debug_print::i#7)
  (byte*) print_sbyte_at::at#20 ← (byte*~) debug_print::$29
  call print_sbyte_at 
  to:debug_print::@32
debug_print::@32: scope:[debug_print]  from debug_print::@31
  (byte*) debug_print::at_line#7 ← phi( debug_print::@31/(byte*) debug_print::at_line#6 )
  (byte) debug_print::i#8 ← phi( debug_print::@31/(byte) debug_print::i#7 )
  (byte) debug_print::c#8 ← phi( debug_print::@31/(byte) debug_print::c#7 )
  (byte) debug_print::c#1 ← (byte) debug_print::c#8 + (number) 4
  (byte) debug_print::i#1 ← (byte) debug_print::i#8 + rangenext(0,7)
  (bool~) debug_print::$31 ← (byte) debug_print::i#1 != rangelast(0,7)
  if((bool~) debug_print::$31) goto debug_print::@1
  to:debug_print::@return
debug_print::@return: scope:[debug_print]  from debug_print::@32
  return 
  to:@return
sprites_init: scope:[sprites_init]  from main
  (byte*) sprites_init::SCREEN#0 ← ((byte*)) (number) $400
  *((byte*) SPRITES_ENABLE#0) ← (number) $ff
  (byte*~) sprites_init::$0 ← (byte*) sprites_init::SCREEN#0 + (number) $3f8
  (byte*) sprites_init::sprites_ptr#0 ← (byte*~) sprites_init::$0
  (byte) sprites_init::i#0 ← (byte) 0
  to:sprites_init::@1
sprites_init::@1: scope:[sprites_init]  from sprites_init sprites_init::@1
  (byte) sprites_init::i#2 ← phi( sprites_init/(byte) sprites_init::i#0 sprites_init::@1/(byte) sprites_init::i#1 )
  (byte*) sprites_init::sprites_ptr#1 ← phi( sprites_init/(byte*) sprites_init::sprites_ptr#0 sprites_init::@1/(byte*) sprites_init::sprites_ptr#1 )
  (byte*~) sprites_init::$1 ← (byte*) SPRITE#0 / (number) $40
  (byte~) sprites_init::$2 ← ((byte)) (byte*~) sprites_init::$1
  *((byte*) sprites_init::sprites_ptr#1 + (byte) sprites_init::i#2) ← (byte~) sprites_init::$2
  *((byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (byte) GREEN#0
  (byte) sprites_init::i#1 ← (byte) sprites_init::i#2 + rangenext(0,7)
  (bool~) sprites_init::$3 ← (byte) sprites_init::i#1 != rangelast(0,7)
  if((bool~) sprites_init::$3) goto sprites_init::@1
  to:sprites_init::@return
sprites_init::@return: scope:[sprites_init]  from sprites_init::@1
  return 
  to:@return
@45: scope:[]  from @41
  (byte*) print_screen#45 ← phi( @41/(byte*) print_screen#47 )
  (signed byte) sy#24 ← phi( @41/(signed byte) sy#2 )
  (signed byte) sx#22 ← phi( @41/(signed byte) sx#2 )
  (signed byte[9]) rotation_matrix#0 ← { fill( 9, 0) }
  to:@50
calculate_matrix: scope:[calculate_matrix]  from anim::@18
  (signed byte*) COSQ#1 ← phi( anim::@18/(signed byte*) COSQ#2 )
  (signed byte*) COSH#1 ← phi( anim::@18/(signed byte*) COSH#2 )
  (signed byte) calculate_matrix::sx#1 ← phi( anim::@18/(signed byte) calculate_matrix::sx#0 )
  (signed byte) calculate_matrix::sz#1 ← phi( anim::@18/(signed byte) calculate_matrix::sz#0 )
  (signed byte) calculate_matrix::sy#1 ← phi( anim::@18/(signed byte) calculate_matrix::sy#0 )
  (signed byte~) calculate_matrix::$0 ← (signed byte) calculate_matrix::sy#1 - (signed byte) calculate_matrix::sz#1
  (signed byte) calculate_matrix::t1#0 ← (signed byte~) calculate_matrix::$0
  (signed byte~) calculate_matrix::$1 ← (signed byte) calculate_matrix::sy#1 + (signed byte) calculate_matrix::sz#1
  (signed byte) calculate_matrix::t2#0 ← (signed byte~) calculate_matrix::$1
  (signed byte~) calculate_matrix::$2 ← (signed byte) calculate_matrix::sx#1 + (signed byte) calculate_matrix::sz#1
  (signed byte) calculate_matrix::t3#0 ← (signed byte~) calculate_matrix::$2
  (signed byte~) calculate_matrix::$3 ← (signed byte) calculate_matrix::sx#1 - (signed byte) calculate_matrix::sz#1
  (signed byte) calculate_matrix::t4#0 ← (signed byte~) calculate_matrix::$3
  (signed byte~) calculate_matrix::$4 ← (signed byte) calculate_matrix::sx#1 + (signed byte) calculate_matrix::t2#0
  (signed byte) calculate_matrix::t5#0 ← (signed byte~) calculate_matrix::$4
  (signed byte~) calculate_matrix::$5 ← (signed byte) calculate_matrix::sx#1 - (signed byte) calculate_matrix::t1#0
  (signed byte) calculate_matrix::t6#0 ← (signed byte~) calculate_matrix::$5
  (signed byte~) calculate_matrix::$6 ← (signed byte) calculate_matrix::sx#1 + (signed byte) calculate_matrix::t1#0
  (signed byte) calculate_matrix::t7#0 ← (signed byte~) calculate_matrix::$6
  (signed byte~) calculate_matrix::$7 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#1
  (signed byte) calculate_matrix::t8#0 ← (signed byte~) calculate_matrix::$7
  (signed byte~) calculate_matrix::$8 ← (signed byte) calculate_matrix::sy#1 - (signed byte) calculate_matrix::sx#1
  (signed byte) calculate_matrix::t9#0 ← (signed byte~) calculate_matrix::$8
  (signed byte~) calculate_matrix::$9 ← (signed byte) calculate_matrix::sy#1 + (signed byte) calculate_matrix::sx#1
  (signed byte) calculate_matrix::t10#0 ← (signed byte~) calculate_matrix::$9
  (signed byte~) calculate_matrix::$10 ← *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t1#0) + *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t2#0)
  *((signed byte[9]) rotation_matrix#0 + (number) 0) ← (signed byte~) calculate_matrix::$10
  (signed byte~) calculate_matrix::$11 ← *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t2#0)
  *((signed byte[9]) rotation_matrix#0 + (number) 1) ← (signed byte~) calculate_matrix::$11
  (signed byte~) calculate_matrix::$12 ← *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#1) + *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#1)
  *((signed byte[9]) rotation_matrix#0 + (number) 2) ← (signed byte~) calculate_matrix::$12
  (signed byte~) calculate_matrix::$13 ← *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0)
  (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t6#0)
  (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t5#0)
  (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t8#0)
  (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t7#0)
  *((signed byte[9]) rotation_matrix#0 + (number) 3) ← (signed byte~) calculate_matrix::$17
  (signed byte~) calculate_matrix::$18 ← *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t3#0) + *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t4#0)
  (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0)
  (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0)
  (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0)
  (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0)
  *((signed byte[9]) rotation_matrix#0 + (number) 4) ← (signed byte~) calculate_matrix::$22
  (signed byte~) calculate_matrix::$23 ← *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t10#0)
  *((signed byte[9]) rotation_matrix#0 + (number) 5) ← (signed byte~) calculate_matrix::$23
  (signed byte~) calculate_matrix::$24 ← *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t4#0) - *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t3#0)
  (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0)
  (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0)
  (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0)
  (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0)
  *((signed byte[9]) rotation_matrix#0 + (number) 6) ← (signed byte~) calculate_matrix::$28
  (signed byte~) calculate_matrix::$29 ← *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0)
  (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t6#0)
  (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t5#0)
  (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t7#0)
  (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t8#0)
  *((signed byte[9]) rotation_matrix#0 + (number) 7) ← (signed byte~) calculate_matrix::$33
  (signed byte~) calculate_matrix::$34 ← *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t9#0) + *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t10#0)
  *((signed byte[9]) rotation_matrix#0 + (number) 8) ← (signed byte~) calculate_matrix::$34
  to:calculate_matrix::@return
calculate_matrix::@return: scope:[calculate_matrix]  from calculate_matrix
  return 
  to:@return
store_matrix: scope:[store_matrix]  from anim::@27
  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
  return 
  to:@return
rotate_matrix: scope:[rotate_matrix]  from anim::@22
  (signed byte) rotate_matrix::z#1 ← phi( anim::@22/(signed byte) rotate_matrix::z#0 )
  (signed byte) rotate_matrix::y#1 ← phi( anim::@22/(signed byte) rotate_matrix::y#0 )
  (signed byte) rotate_matrix::x#1 ← phi( anim::@22/(signed byte) rotate_matrix::x#0 )
  *((signed byte*) xr#0) ← (signed byte) rotate_matrix::x#1
  *((signed byte*) yr#0) ← (signed byte) rotate_matrix::y#1
  *((signed byte*) zr#0) ← (signed byte) rotate_matrix::z#1
  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
  return 
  to:@return
@50: scope:[]  from @45
  (byte*) print_screen#42 ← phi( @45/(byte*) print_screen#45 )
  (signed byte) sy#18 ← phi( @45/(signed byte) sy#24 )
  (signed byte) sx#17 ← phi( @45/(signed byte) sx#22 )
  (byte[$200]) mulf_sqr1#0 ← kickasm {{ .for(var i=0;i<$200;i++) {
    	.if(i<=159) { .byte round((i*i)/256) }
    	.if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) }
    	.if(i>351) { .byte round(((512-i)*(512-i))/256) }
    }
 }}
  (byte[$200]) mulf_sqr2#0 ← kickasm {{ .for(var i=0;i<$200;i++) {
    	.if(i<=159) { .byte round((-i-1)*(-i-1)/256) }
    	.if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) }
    	.if(i>351) { .byte round(((i-511)*(i-511))/256) }  
    }
 }}
  (byte*) SPRITE#0 ← ((byte*)) (number) $3000
  kickasm(location (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)
 }}
  (signed byte[$100]) PERSP_Z#0 ← kickasm {{ {
    .var d = 256.0	
    .var z0 = 6.0	
    // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f)
    .for(var z=0;z<$100;z++) {
    	.if(z>127) {
    		.byte round(d / (z0 - ((z - 256) / 64.0)));
    	} else {
    		.byte round(d / (z0 - (z / 64.0)));
    	}
    }
	}
 }}
  (signed byte[$140]) SINH#0 ← kickasm {{ {
    .var min = -$2000
    .var max = $2000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256)
    }
    }
 }}
  (signed byte*~) $0 ← (signed byte[$140]) SINH#0 + (number) $40
  (signed byte*) COSH#0 ← (signed byte*~) $0
  (signed byte[$140]) SINQ#0 ← kickasm {{ {
    .var min = -$1000
    .var max = $1000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256)
    }
    }
 }}
  (signed byte*~) $1 ← (signed byte[$140]) SINQ#0 + (number) $40
  (signed byte*) COSQ#0 ← (signed byte*~) $1
  call main 
  to:@51
@51: scope:[]  from @50
  (signed byte) sy#12 ← phi( @50/(signed byte) sy#1 )
  (signed byte) sx#12 ← phi( @50/(signed byte) sx#1 )
  (signed byte) sx#5 ← (signed byte) sx#12
  (signed byte) sy#5 ← (signed byte) sy#12
  to:@end
@end: scope:[]  from @51

SYMBOL TABLE SSA
(signed byte*~) $0
(signed byte*~) $1
(const string) $6 = (string) "0123456789abcdef"z
(label) @16
(label) @33
(label) @40
(label) @41
(label) @45
(label) @50
(label) @51
(label) @begin
(label) @end
(byte*) BORDERCOL
(byte*) BORDERCOL#0
(signed byte*) COSH
(signed byte*) COSH#0
(signed byte*) COSH#1
(signed byte*) COSH#10
(signed byte*) COSH#11
(signed byte*) COSH#12
(signed byte*) COSH#13
(signed byte*) COSH#14
(signed byte*) COSH#15
(signed byte*) COSH#16
(signed byte*) COSH#2
(signed byte*) COSH#3
(signed byte*) COSH#4
(signed byte*) COSH#5
(signed byte*) COSH#6
(signed byte*) COSH#7
(signed byte*) COSH#8
(signed byte*) COSH#9
(signed byte*) COSQ
(signed byte*) COSQ#0
(signed byte*) COSQ#1
(signed byte*) COSQ#10
(signed byte*) COSQ#11
(signed byte*) COSQ#12
(signed byte*) COSQ#13
(signed byte*) COSQ#14
(signed byte*) COSQ#15
(signed byte*) COSQ#16
(signed byte*) COSQ#2
(signed byte*) COSQ#3
(signed byte*) COSQ#4
(signed byte*) COSQ#5
(signed byte*) COSQ#6
(signed byte*) COSQ#7
(signed byte*) COSQ#8
(signed byte*) COSQ#9
(byte) GREEN
(byte) GREEN#0
(byte) LIGHT_BLUE
(byte) LIGHT_BLUE#0
(byte) LIGHT_GREY
(byte) LIGHT_GREY#0
(signed byte[$100]) PERSP_Z
(signed byte[$100]) PERSP_Z#0
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(byte*) RASTER
(byte*) RASTER#0
(byte*) SCREEN
(byte*) SCREEN#0
(signed byte[$140]) SINH
(signed byte[$140]) SINH#0
(signed byte[$140]) SINQ
(signed byte[$140]) SINQ#0
(byte*) SPRITE
(byte*) SPRITE#0
(byte*) SPRITES_COLS
(byte*) SPRITES_COLS#0
(byte*) SPRITES_ENABLE
(byte*) SPRITES_ENABLE#0
(byte*) SPRITES_XPOS
(byte*) SPRITES_XPOS#0
(byte*) SPRITES_YPOS
(byte*) SPRITES_YPOS#0
(void()) anim()
(bool~) anim::$0
(bool~) anim::$1
(number~) anim::$10
(bool~) anim::$11
(bool~) anim::$2
(number~) anim::$6
(byte~) anim::$7
(number~) anim::$8
(byte~) anim::$9
(label) anim::@1
(label) anim::@10
(label) anim::@16
(label) anim::@18
(label) anim::@22
(label) anim::@23
(label) anim::@27
(label) anim::@28
(label) anim::@29
(label) anim::@30
(label) anim::@4
(label) anim::@return
(byte) anim::i
(byte) anim::i#0
(byte) anim::i#1
(byte) anim::i#2
(byte) anim::i#3
(byte) anim::i2
(byte) anim::i2#0
(void()) calculate_matrix((signed byte) calculate_matrix::sx , (signed byte) calculate_matrix::sy , (signed byte) calculate_matrix::sz)
(signed byte~) calculate_matrix::$0
(signed byte~) calculate_matrix::$1
(signed byte~) calculate_matrix::$10
(signed byte~) calculate_matrix::$11
(signed byte~) calculate_matrix::$12
(signed byte~) calculate_matrix::$13
(signed byte~) calculate_matrix::$14
(signed byte~) calculate_matrix::$15
(signed byte~) calculate_matrix::$16
(signed byte~) calculate_matrix::$17
(signed byte~) calculate_matrix::$18
(signed byte~) calculate_matrix::$19
(signed byte~) calculate_matrix::$2
(signed byte~) calculate_matrix::$20
(signed byte~) calculate_matrix::$21
(signed byte~) calculate_matrix::$22
(signed byte~) calculate_matrix::$23
(signed byte~) calculate_matrix::$24
(signed byte~) calculate_matrix::$25
(signed byte~) calculate_matrix::$26
(signed byte~) calculate_matrix::$27
(signed byte~) calculate_matrix::$28
(signed byte~) calculate_matrix::$29
(signed byte~) calculate_matrix::$3
(signed byte~) calculate_matrix::$30
(signed byte~) calculate_matrix::$31
(signed byte~) calculate_matrix::$32
(signed byte~) calculate_matrix::$33
(signed byte~) calculate_matrix::$34
(signed byte~) calculate_matrix::$4
(signed byte~) calculate_matrix::$5
(signed byte~) calculate_matrix::$6
(signed byte~) calculate_matrix::$7
(signed byte~) calculate_matrix::$8
(signed byte~) calculate_matrix::$9
(label) calculate_matrix::@return
(signed byte) calculate_matrix::sx
(signed byte) calculate_matrix::sx#0
(signed byte) calculate_matrix::sx#1
(signed byte) calculate_matrix::sy
(signed byte) calculate_matrix::sy#0
(signed byte) calculate_matrix::sy#1
(signed byte) calculate_matrix::sz
(signed byte) calculate_matrix::sz#0
(signed byte) calculate_matrix::sz#1
(signed byte) calculate_matrix::t1
(signed byte) calculate_matrix::t1#0
(signed byte) calculate_matrix::t10
(signed byte) calculate_matrix::t10#0
(signed byte) calculate_matrix::t2
(signed byte) calculate_matrix::t2#0
(signed byte) calculate_matrix::t3
(signed byte) calculate_matrix::t3#0
(signed byte) calculate_matrix::t4
(signed byte) calculate_matrix::t4#0
(signed byte) calculate_matrix::t5
(signed byte) calculate_matrix::t5#0
(signed byte) calculate_matrix::t6
(signed byte) calculate_matrix::t6#0
(signed byte) calculate_matrix::t7
(signed byte) calculate_matrix::t7#0
(signed byte) calculate_matrix::t8
(signed byte) calculate_matrix::t8#0
(signed byte) calculate_matrix::t9
(signed byte) calculate_matrix::t9#0
(void()) debug_print()
(byte*~) debug_print::$12
(byte*~) debug_print::$13
(byte*~) debug_print::$14
(byte*~) debug_print::$16
(byte*~) debug_print::$17
(byte*~) debug_print::$19
(byte*~) debug_print::$20
(byte*~) debug_print::$22
(byte*~) debug_print::$23
(byte*~) debug_print::$25
(byte*~) debug_print::$26
(byte*~) debug_print::$28
(byte*~) debug_print::$29
(bool~) debug_print::$31
(label) debug_print::@1
(label) debug_print::@10
(label) debug_print::@11
(label) debug_print::@12
(label) debug_print::@13
(label) debug_print::@14
(label) debug_print::@15
(label) debug_print::@16
(label) debug_print::@17
(label) debug_print::@18
(label) debug_print::@19
(label) debug_print::@20
(label) debug_print::@21
(label) debug_print::@22
(label) debug_print::@23
(label) debug_print::@24
(label) debug_print::@25
(label) debug_print::@26
(label) debug_print::@27
(label) debug_print::@28
(label) debug_print::@29
(label) debug_print::@3
(label) debug_print::@30
(label) debug_print::@31
(label) debug_print::@32
(label) debug_print::@4
(label) debug_print::@5
(label) debug_print::@6
(label) debug_print::@7
(label) debug_print::@8
(label) debug_print::@9
(label) debug_print::@return
(byte*) debug_print::at_line
(byte*) debug_print::at_line#0
(byte*) debug_print::at_line#1
(byte*) debug_print::at_line#2
(byte*) debug_print::at_line#3
(byte*) debug_print::at_line#4
(byte*) debug_print::at_line#5
(byte*) debug_print::at_line#6
(byte*) debug_print::at_line#7
(byte) debug_print::c
(byte) debug_print::c#0
(byte) debug_print::c#1
(byte) debug_print::c#2
(byte) debug_print::c#3
(byte) debug_print::c#4
(byte) debug_print::c#5
(byte) debug_print::c#6
(byte) debug_print::c#7
(byte) debug_print::c#8
(byte) debug_print::i
(byte) debug_print::i#0
(byte) debug_print::i#1
(byte) debug_print::i#2
(byte) debug_print::i#3
(byte) debug_print::i#4
(byte) debug_print::i#5
(byte) debug_print::i#6
(byte) debug_print::i#7
(byte) debug_print::i#8
(label) debug_print::print_sbyte_pos1
(label) debug_print::print_sbyte_pos10
(number~) debug_print::print_sbyte_pos10_$0
(number~) debug_print::print_sbyte_pos10_$0#0
(byte*~) debug_print::print_sbyte_pos10_$1
(byte*~) debug_print::print_sbyte_pos10_$1#0
(byte*~) debug_print::print_sbyte_pos10_$2
(byte*~) debug_print::print_sbyte_pos10_$2#0
(byte) debug_print::print_sbyte_pos10_col
(byte) debug_print::print_sbyte_pos10_col#0
(byte) debug_print::print_sbyte_pos10_col#1
(byte) debug_print::print_sbyte_pos10_row
(byte) debug_print::print_sbyte_pos10_row#0
(byte) debug_print::print_sbyte_pos10_row#1
(signed byte) debug_print::print_sbyte_pos10_sb
(signed byte) debug_print::print_sbyte_pos10_sb#0
(signed byte) debug_print::print_sbyte_pos10_sb#1
(label) debug_print::print_sbyte_pos11
(number~) debug_print::print_sbyte_pos11_$0
(number~) debug_print::print_sbyte_pos11_$0#0
(byte*~) debug_print::print_sbyte_pos11_$1
(byte*~) debug_print::print_sbyte_pos11_$1#0
(byte*~) debug_print::print_sbyte_pos11_$2
(byte*~) debug_print::print_sbyte_pos11_$2#0
(byte) debug_print::print_sbyte_pos11_col
(byte) debug_print::print_sbyte_pos11_col#0
(byte) debug_print::print_sbyte_pos11_col#1
(byte) debug_print::print_sbyte_pos11_row
(byte) debug_print::print_sbyte_pos11_row#0
(byte) debug_print::print_sbyte_pos11_row#1
(signed byte) debug_print::print_sbyte_pos11_sb
(signed byte) debug_print::print_sbyte_pos11_sb#0
(signed byte) debug_print::print_sbyte_pos11_sb#1
(label) debug_print::print_sbyte_pos12
(number~) debug_print::print_sbyte_pos12_$0
(number~) debug_print::print_sbyte_pos12_$0#0
(byte*~) debug_print::print_sbyte_pos12_$1
(byte*~) debug_print::print_sbyte_pos12_$1#0
(byte*~) debug_print::print_sbyte_pos12_$2
(byte*~) debug_print::print_sbyte_pos12_$2#0
(byte) debug_print::print_sbyte_pos12_col
(byte) debug_print::print_sbyte_pos12_col#0
(byte) debug_print::print_sbyte_pos12_col#1
(byte) debug_print::print_sbyte_pos12_row
(byte) debug_print::print_sbyte_pos12_row#0
(byte) debug_print::print_sbyte_pos12_row#1
(signed byte) debug_print::print_sbyte_pos12_sb
(signed byte) debug_print::print_sbyte_pos12_sb#0
(signed byte) debug_print::print_sbyte_pos12_sb#1
(number~) debug_print::print_sbyte_pos1_$0
(number~) debug_print::print_sbyte_pos1_$0#0
(byte*~) debug_print::print_sbyte_pos1_$1
(byte*~) debug_print::print_sbyte_pos1_$1#0
(byte*~) debug_print::print_sbyte_pos1_$2
(byte*~) debug_print::print_sbyte_pos1_$2#0
(byte) debug_print::print_sbyte_pos1_col
(byte) debug_print::print_sbyte_pos1_col#0
(byte) debug_print::print_sbyte_pos1_col#1
(byte) debug_print::print_sbyte_pos1_row
(byte) debug_print::print_sbyte_pos1_row#0
(byte) debug_print::print_sbyte_pos1_row#1
(signed byte) debug_print::print_sbyte_pos1_sb
(signed byte) debug_print::print_sbyte_pos1_sb#0
(signed byte) debug_print::print_sbyte_pos1_sb#1
(label) debug_print::print_sbyte_pos2
(number~) debug_print::print_sbyte_pos2_$0
(number~) debug_print::print_sbyte_pos2_$0#0
(byte*~) debug_print::print_sbyte_pos2_$1
(byte*~) debug_print::print_sbyte_pos2_$1#0
(byte*~) debug_print::print_sbyte_pos2_$2
(byte*~) debug_print::print_sbyte_pos2_$2#0
(byte) debug_print::print_sbyte_pos2_col
(byte) debug_print::print_sbyte_pos2_col#0
(byte) debug_print::print_sbyte_pos2_col#1
(byte) debug_print::print_sbyte_pos2_row
(byte) debug_print::print_sbyte_pos2_row#0
(byte) debug_print::print_sbyte_pos2_row#1
(signed byte) debug_print::print_sbyte_pos2_sb
(signed byte) debug_print::print_sbyte_pos2_sb#0
(signed byte) debug_print::print_sbyte_pos2_sb#1
(label) debug_print::print_sbyte_pos3
(number~) debug_print::print_sbyte_pos3_$0
(number~) debug_print::print_sbyte_pos3_$0#0
(byte*~) debug_print::print_sbyte_pos3_$1
(byte*~) debug_print::print_sbyte_pos3_$1#0
(byte*~) debug_print::print_sbyte_pos3_$2
(byte*~) debug_print::print_sbyte_pos3_$2#0
(byte) debug_print::print_sbyte_pos3_col
(byte) debug_print::print_sbyte_pos3_col#0
(byte) debug_print::print_sbyte_pos3_col#1
(byte) debug_print::print_sbyte_pos3_row
(byte) debug_print::print_sbyte_pos3_row#0
(byte) debug_print::print_sbyte_pos3_row#1
(signed byte) debug_print::print_sbyte_pos3_sb
(signed byte) debug_print::print_sbyte_pos3_sb#0
(signed byte) debug_print::print_sbyte_pos3_sb#1
(label) debug_print::print_sbyte_pos4
(number~) debug_print::print_sbyte_pos4_$0
(number~) debug_print::print_sbyte_pos4_$0#0
(byte*~) debug_print::print_sbyte_pos4_$1
(byte*~) debug_print::print_sbyte_pos4_$1#0
(byte*~) debug_print::print_sbyte_pos4_$2
(byte*~) debug_print::print_sbyte_pos4_$2#0
(byte) debug_print::print_sbyte_pos4_col
(byte) debug_print::print_sbyte_pos4_col#0
(byte) debug_print::print_sbyte_pos4_col#1
(byte) debug_print::print_sbyte_pos4_row
(byte) debug_print::print_sbyte_pos4_row#0
(byte) debug_print::print_sbyte_pos4_row#1
(signed byte) debug_print::print_sbyte_pos4_sb
(signed byte) debug_print::print_sbyte_pos4_sb#0
(signed byte) debug_print::print_sbyte_pos4_sb#1
(label) debug_print::print_sbyte_pos5
(number~) debug_print::print_sbyte_pos5_$0
(number~) debug_print::print_sbyte_pos5_$0#0
(byte*~) debug_print::print_sbyte_pos5_$1
(byte*~) debug_print::print_sbyte_pos5_$1#0
(byte*~) debug_print::print_sbyte_pos5_$2
(byte*~) debug_print::print_sbyte_pos5_$2#0
(byte) debug_print::print_sbyte_pos5_col
(byte) debug_print::print_sbyte_pos5_col#0
(byte) debug_print::print_sbyte_pos5_col#1
(byte) debug_print::print_sbyte_pos5_row
(byte) debug_print::print_sbyte_pos5_row#0
(byte) debug_print::print_sbyte_pos5_row#1
(signed byte) debug_print::print_sbyte_pos5_sb
(signed byte) debug_print::print_sbyte_pos5_sb#0
(signed byte) debug_print::print_sbyte_pos5_sb#1
(label) debug_print::print_sbyte_pos6
(number~) debug_print::print_sbyte_pos6_$0
(number~) debug_print::print_sbyte_pos6_$0#0
(byte*~) debug_print::print_sbyte_pos6_$1
(byte*~) debug_print::print_sbyte_pos6_$1#0
(byte*~) debug_print::print_sbyte_pos6_$2
(byte*~) debug_print::print_sbyte_pos6_$2#0
(byte) debug_print::print_sbyte_pos6_col
(byte) debug_print::print_sbyte_pos6_col#0
(byte) debug_print::print_sbyte_pos6_col#1
(byte) debug_print::print_sbyte_pos6_row
(byte) debug_print::print_sbyte_pos6_row#0
(byte) debug_print::print_sbyte_pos6_row#1
(signed byte) debug_print::print_sbyte_pos6_sb
(signed byte) debug_print::print_sbyte_pos6_sb#0
(signed byte) debug_print::print_sbyte_pos6_sb#1
(label) debug_print::print_sbyte_pos7
(number~) debug_print::print_sbyte_pos7_$0
(number~) debug_print::print_sbyte_pos7_$0#0
(byte*~) debug_print::print_sbyte_pos7_$1
(byte*~) debug_print::print_sbyte_pos7_$1#0
(byte*~) debug_print::print_sbyte_pos7_$2
(byte*~) debug_print::print_sbyte_pos7_$2#0
(byte) debug_print::print_sbyte_pos7_col
(byte) debug_print::print_sbyte_pos7_col#0
(byte) debug_print::print_sbyte_pos7_col#1
(byte) debug_print::print_sbyte_pos7_row
(byte) debug_print::print_sbyte_pos7_row#0
(byte) debug_print::print_sbyte_pos7_row#1
(signed byte) debug_print::print_sbyte_pos7_sb
(signed byte) debug_print::print_sbyte_pos7_sb#0
(signed byte) debug_print::print_sbyte_pos7_sb#1
(label) debug_print::print_sbyte_pos8
(number~) debug_print::print_sbyte_pos8_$0
(number~) debug_print::print_sbyte_pos8_$0#0
(byte*~) debug_print::print_sbyte_pos8_$1
(byte*~) debug_print::print_sbyte_pos8_$1#0
(byte*~) debug_print::print_sbyte_pos8_$2
(byte*~) debug_print::print_sbyte_pos8_$2#0
(byte) debug_print::print_sbyte_pos8_col
(byte) debug_print::print_sbyte_pos8_col#0
(byte) debug_print::print_sbyte_pos8_col#1
(byte) debug_print::print_sbyte_pos8_row
(byte) debug_print::print_sbyte_pos8_row#0
(byte) debug_print::print_sbyte_pos8_row#1
(signed byte) debug_print::print_sbyte_pos8_sb
(signed byte) debug_print::print_sbyte_pos8_sb#0
(signed byte) debug_print::print_sbyte_pos8_sb#1
(label) debug_print::print_sbyte_pos9
(number~) debug_print::print_sbyte_pos9_$0
(number~) debug_print::print_sbyte_pos9_$0#0
(byte*~) debug_print::print_sbyte_pos9_$1
(byte*~) debug_print::print_sbyte_pos9_$1#0
(byte*~) debug_print::print_sbyte_pos9_$2
(byte*~) debug_print::print_sbyte_pos9_$2#0
(byte) debug_print::print_sbyte_pos9_col
(byte) debug_print::print_sbyte_pos9_col#0
(byte) debug_print::print_sbyte_pos9_col#1
(byte) debug_print::print_sbyte_pos9_row
(byte) debug_print::print_sbyte_pos9_row#0
(byte) debug_print::print_sbyte_pos9_row#1
(signed byte) debug_print::print_sbyte_pos9_sb
(signed byte) debug_print::print_sbyte_pos9_sb#0
(signed byte) debug_print::print_sbyte_pos9_sb#1
(void()) debug_print_init()
(byte*~) debug_print_init::$1
(byte*~) debug_print_init::$10
(byte*~) debug_print_init::$12
(byte*~) debug_print_init::$14
(byte*~) debug_print_init::$16
(byte*~) debug_print_init::$18
(byte*~) debug_print_init::$2
(byte*~) debug_print_init::$20
(byte*~) debug_print_init::$22
(byte*~) debug_print_init::$24
(byte*~) debug_print_init::$26
(byte*~) debug_print_init::$28
(byte*~) debug_print_init::$29
(byte*~) debug_print_init::$30
(byte*~) debug_print_init::$31
(byte*~) debug_print_init::$33
(byte*~) debug_print_init::$34
(byte*~) debug_print_init::$36
(byte*~) debug_print_init::$37
(number~) debug_print_init::$39
(byte*~) debug_print_init::$4
(byte*~) debug_print_init::$40
(byte*~) debug_print_init::$41
(byte*~) debug_print_init::$42
(byte*~) debug_print_init::$43
(byte*~) debug_print_init::$44
(byte*~) debug_print_init::$45
(byte*~) debug_print_init::$46
(byte*~) debug_print_init::$47
(byte*~) debug_print_init::$48
(byte*~) debug_print_init::$49
(byte*~) debug_print_init::$5
(byte*~) debug_print_init::$50
(byte*~) debug_print_init::$51
(byte*~) debug_print_init::$52
(byte*~) debug_print_init::$53
(byte*~) debug_print_init::$54
(byte*~) debug_print_init::$55
(byte*~) debug_print_init::$56
(byte*~) debug_print_init::$57
(byte*~) debug_print_init::$58
(byte*~) debug_print_init::$59
(byte*~) debug_print_init::$60
(byte*~) debug_print_init::$61
(byte*~) debug_print_init::$62
(byte*~) debug_print_init::$63
(byte*~) debug_print_init::$64
(byte*~) debug_print_init::$65
(byte*~) debug_print_init::$66
(bool~) debug_print_init::$67
(bool~) debug_print_init::$68
(byte*~) debug_print_init::$7
(byte*~) debug_print_init::$8
(label) debug_print_init::@1
(label) debug_print_init::@10
(label) debug_print_init::@11
(label) debug_print_init::@12
(label) debug_print_init::@13
(label) debug_print_init::@14
(label) debug_print_init::@15
(label) debug_print_init::@16
(label) debug_print_init::@17
(label) debug_print_init::@18
(label) debug_print_init::@19
(label) debug_print_init::@2
(label) debug_print_init::@20
(label) debug_print_init::@3
(label) debug_print_init::@5
(label) debug_print_init::@6
(label) debug_print_init::@7
(label) debug_print_init::@8
(label) debug_print_init::@9
(label) debug_print_init::@return
(byte*) debug_print_init::COLS
(byte*) debug_print_init::COLS#0
(byte*) debug_print_init::at_cols
(byte*) debug_print_init::at_cols#0
(byte*) debug_print_init::at_cols#1
(byte*) debug_print_init::at_cols#2
(byte*) debug_print_init::at_cols#3
(byte*) debug_print_init::at_cols#4
(byte*) debug_print_init::at_cols#5
(byte*) debug_print_init::at_cols#6
(byte*) debug_print_init::at_line
(byte*) debug_print_init::at_line#0
(byte*) debug_print_init::at_line#1
(byte*) debug_print_init::at_line#2
(byte*) debug_print_init::at_line#3
(byte*) debug_print_init::at_line#4
(byte*) debug_print_init::at_line#5
(byte*) debug_print_init::at_line#6
(byte) debug_print_init::c
(byte) debug_print_init::c#0
(byte) debug_print_init::c#1
(byte) debug_print_init::c#2
(byte) debug_print_init::c#3
(byte) debug_print_init::c#4
(byte) debug_print_init::c#5
(byte) debug_print_init::c#6
(byte) debug_print_init::c#7
(byte) debug_print_init::col
(byte) debug_print_init::col#0
(byte) debug_print_init::i
(byte) debug_print_init::i#0
(byte) debug_print_init::i#1
(byte) debug_print_init::i#2
(byte) debug_print_init::i#3
(byte) debug_print_init::i#4
(byte) debug_print_init::i#5
(byte) debug_print_init::i#6
(byte) debug_print_init::i#7
(byte) debug_print_init::j
(byte) debug_print_init::j#0
(byte) debug_print_init::j#1
(byte) debug_print_init::j#2
(const string) debug_print_init::str = (string) "sx"
(const string) debug_print_init::str1 = (string) "sy"
(const string) debug_print_init::str10 = (string) "xp"
(const string) debug_print_init::str11 = (string) "yp"
(const string) debug_print_init::str2 = (string) "sz"
(const string) debug_print_init::str3 = (string) "x"
(const string) debug_print_init::str4 = (string) "y"
(const string) debug_print_init::str5 = (string) "z"
(const string) debug_print_init::str6 = (string) "xr"
(const string) debug_print_init::str7 = (string) "yr"
(const string) debug_print_init::str8 = (string) "zr"
(const string) debug_print_init::str9 = (string) "pp"
(void()) main()
(word~) main::$1
(word~) main::$2
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@return
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(bool~) memset::$0
(bool~) memset::$1
(byte*~) memset::$2
(byte*~) memset::$3
(bool~) memset::$4
(label) memset::@1
(label) memset::@2
(label) memset::@4
(label) memset::@5
(label) memset::@return
(byte) memset::c
(byte) memset::c#0
(byte) memset::c#1
(byte) memset::c#2
(byte) memset::c#3
(byte) memset::c#4
(byte*) memset::dst
(byte*) memset::dst#0
(byte*) memset::dst#1
(byte*) memset::dst#2
(byte*) memset::dst#3
(byte*) memset::end
(byte*) memset::end#0
(byte*) memset::end#1
(byte*) memset::end#2
(word) memset::num
(word) memset::num#0
(word) memset::num#1
(word) memset::num#2
(void*) memset::return
(void*) memset::return#0
(void*) memset::return#1
(void*) memset::return#2
(void*) memset::return#3
(void*) memset::str
(void*) memset::str#0
(void*) memset::str#1
(void*) memset::str#2
(void*) memset::str#3
(void*) memset::str#4
(void*) memset::str#5
(byte[$200]) mulf_sqr1
(byte[$200]) mulf_sqr1#0
(byte[$200]) mulf_sqr2
(byte[$200]) mulf_sqr2#0
(signed byte*) pp
(signed byte*) pp#0
(signed byte[8]) pps
(signed byte[8]) pps#0
(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at)
(byte~) print_byte_at::$0
(number~) print_byte_at::$2
(byte*~) print_byte_at::$3
(label) print_byte_at::@1
(label) print_byte_at::@2
(label) print_byte_at::@return
(byte*) print_byte_at::at
(byte*) print_byte_at::at#0
(byte*) print_byte_at::at#1
(byte*) print_byte_at::at#2
(byte) print_byte_at::b
(byte) print_byte_at::b#0
(byte) print_byte_at::b#1
(byte) print_byte_at::b#2
(void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at)
(label) print_char_at::@return
(byte*) print_char_at::at
(byte*) print_char_at::at#0
(byte*) print_char_at::at#1
(byte*) print_char_at::at#2
(byte*) print_char_at::at#3
(byte*) print_char_at::at#4
(byte) print_char_at::ch
(byte) print_char_at::ch#0
(byte) print_char_at::ch#1
(byte) print_char_at::ch#2
(byte) print_char_at::ch#3
(byte) print_char_at::ch#4
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
(byte[]) print_hextab
(byte[]) print_hextab#0
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
(bool~) print_sbyte_at::$0
(byte~) print_sbyte_at::$1
(byte*~) print_sbyte_at::$2
(signed byte~) print_sbyte_at::$6
(label) print_sbyte_at::@1
(label) print_sbyte_at::@2
(label) print_sbyte_at::@3
(label) print_sbyte_at::@5
(label) print_sbyte_at::@6
(label) print_sbyte_at::@7
(label) print_sbyte_at::@return
(byte*) print_sbyte_at::at
(byte*) print_sbyte_at::at#0
(byte*) print_sbyte_at::at#1
(byte*) print_sbyte_at::at#10
(byte*) print_sbyte_at::at#11
(byte*) print_sbyte_at::at#12
(byte*) print_sbyte_at::at#13
(byte*) print_sbyte_at::at#14
(byte*) print_sbyte_at::at#15
(byte*) print_sbyte_at::at#16
(byte*) print_sbyte_at::at#17
(byte*) print_sbyte_at::at#18
(byte*) print_sbyte_at::at#19
(byte*) print_sbyte_at::at#2
(byte*) print_sbyte_at::at#20
(byte*) print_sbyte_at::at#21
(byte*) print_sbyte_at::at#22
(byte*) print_sbyte_at::at#23
(byte*) print_sbyte_at::at#24
(byte*) print_sbyte_at::at#25
(byte*) print_sbyte_at::at#26
(byte*) print_sbyte_at::at#3
(byte*) print_sbyte_at::at#4
(byte*) print_sbyte_at::at#5
(byte*) print_sbyte_at::at#6
(byte*) print_sbyte_at::at#7
(byte*) print_sbyte_at::at#8
(byte*) print_sbyte_at::at#9
(signed byte) print_sbyte_at::b
(signed byte) print_sbyte_at::b#0
(signed byte) print_sbyte_at::b#1
(signed byte) print_sbyte_at::b#10
(signed byte) print_sbyte_at::b#11
(signed byte) print_sbyte_at::b#12
(signed byte) print_sbyte_at::b#13
(signed byte) print_sbyte_at::b#14
(signed byte) print_sbyte_at::b#15
(signed byte) print_sbyte_at::b#16
(signed byte) print_sbyte_at::b#17
(signed byte) print_sbyte_at::b#18
(signed byte) print_sbyte_at::b#19
(signed byte) print_sbyte_at::b#2
(signed byte) print_sbyte_at::b#20
(signed byte) print_sbyte_at::b#21
(signed byte) print_sbyte_at::b#22
(signed byte) print_sbyte_at::b#23
(signed byte) print_sbyte_at::b#24
(signed byte) print_sbyte_at::b#25
(signed byte) print_sbyte_at::b#26
(signed byte) print_sbyte_at::b#27
(signed byte) print_sbyte_at::b#3
(signed byte) print_sbyte_at::b#4
(signed byte) print_sbyte_at::b#5
(signed byte) print_sbyte_at::b#6
(signed byte) print_sbyte_at::b#7
(signed byte) print_sbyte_at::b#8
(signed byte) print_sbyte_at::b#9
(byte*) print_screen
(byte*) print_screen#0
(byte*) print_screen#1
(byte*) print_screen#10
(byte*) print_screen#11
(byte*) print_screen#12
(byte*) print_screen#13
(byte*) print_screen#14
(byte*) print_screen#15
(byte*) print_screen#16
(byte*) print_screen#17
(byte*) print_screen#18
(byte*) print_screen#19
(byte*) print_screen#2
(byte*) print_screen#20
(byte*) print_screen#21
(byte*) print_screen#22
(byte*) print_screen#23
(byte*) print_screen#24
(byte*) print_screen#25
(byte*) print_screen#26
(byte*) print_screen#27
(byte*) print_screen#28
(byte*) print_screen#29
(byte*) print_screen#3
(byte*) print_screen#30
(byte*) print_screen#31
(byte*) print_screen#32
(byte*) print_screen#33
(byte*) print_screen#34
(byte*) print_screen#35
(byte*) print_screen#36
(byte*) print_screen#37
(byte*) print_screen#38
(byte*) print_screen#39
(byte*) print_screen#4
(byte*) print_screen#40
(byte*) print_screen#41
(byte*) print_screen#42
(byte*) print_screen#43
(byte*) print_screen#44
(byte*) print_screen#45
(byte*) print_screen#46
(byte*) print_screen#47
(byte*) print_screen#48
(byte*) print_screen#49
(byte*) print_screen#5
(byte*) print_screen#50
(byte*) print_screen#51
(byte*) print_screen#52
(byte*) print_screen#53
(byte*) print_screen#54
(byte*) print_screen#55
(byte*) print_screen#56
(byte*) print_screen#57
(byte*) print_screen#6
(byte*) print_screen#7
(byte*) print_screen#8
(byte*) print_screen#9
(void()) print_str_at((byte*) print_str_at::str , (byte*) print_str_at::at)
(bool~) print_str_at::$0
(label) print_str_at::@1
(label) print_str_at::@2
(label) print_str_at::@return
(byte*) print_str_at::at
(byte*) print_str_at::at#0
(byte*) print_str_at::at#1
(byte*) print_str_at::at#10
(byte*) print_str_at::at#11
(byte*) print_str_at::at#12
(byte*) print_str_at::at#13
(byte*) print_str_at::at#14
(byte*) print_str_at::at#15
(byte*) print_str_at::at#2
(byte*) print_str_at::at#3
(byte*) print_str_at::at#4
(byte*) print_str_at::at#5
(byte*) print_str_at::at#6
(byte*) print_str_at::at#7
(byte*) print_str_at::at#8
(byte*) print_str_at::at#9
(byte*) print_str_at::str
(byte*) print_str_at::str#0
(byte*) print_str_at::str#1
(byte*) print_str_at::str#10
(byte*) print_str_at::str#11
(byte*) print_str_at::str#12
(byte*) print_str_at::str#13
(byte*) print_str_at::str#14
(byte*) print_str_at::str#15
(byte*) print_str_at::str#2
(byte*) print_str_at::str#3
(byte*) print_str_at::str#4
(byte*) print_str_at::str#5
(byte*) print_str_at::str#6
(byte*) print_str_at::str#7
(byte*) print_str_at::str#8
(byte*) print_str_at::str#9
(word*) psp1
(word*) psp1#0
(word*) psp2
(word*) psp2#0
(void()) rotate_matrix((signed byte) rotate_matrix::x , (signed byte) rotate_matrix::y , (signed byte) rotate_matrix::z)
(label) rotate_matrix::@return
(signed byte) rotate_matrix::x
(signed byte) rotate_matrix::x#0
(signed byte) rotate_matrix::x#1
(signed byte) rotate_matrix::y
(signed byte) rotate_matrix::y#0
(signed byte) rotate_matrix::y#1
(signed byte) rotate_matrix::z
(signed byte) rotate_matrix::z#0
(signed byte) rotate_matrix::z#1
(signed byte[9]) rotation_matrix
(signed byte[9]) rotation_matrix#0
(void()) sprites_init()
(byte*~) sprites_init::$0
(byte*~) sprites_init::$1
(byte~) sprites_init::$2
(bool~) sprites_init::$3
(label) sprites_init::@1
(label) sprites_init::@return
(byte*) sprites_init::SCREEN
(byte*) sprites_init::SCREEN#0
(byte) sprites_init::i
(byte) sprites_init::i#0
(byte) sprites_init::i#1
(byte) sprites_init::i#2
(byte*) sprites_init::sprites_ptr
(byte*) sprites_init::sprites_ptr#0
(byte*) sprites_init::sprites_ptr#1
(void()) store_matrix()
(label) store_matrix::@return
(signed byte) sx
(signed byte) sx#0
(signed byte) sx#1
(signed byte) sx#10
(signed byte) sx#11
(signed byte) sx#12
(signed byte) sx#13
(signed byte) sx#14
(signed byte) sx#15
(signed byte) sx#16
(signed byte) sx#17
(signed byte) sx#18
(signed byte) sx#19
(signed byte) sx#2
(signed byte) sx#20
(signed byte) sx#21
(signed byte) sx#22
(signed byte) sx#23
(signed byte) sx#24
(signed byte) sx#25
(signed byte) sx#26
(signed byte) sx#27
(signed byte) sx#3
(signed byte) sx#4
(signed byte) sx#5
(signed byte) sx#6
(signed byte) sx#7
(signed byte) sx#8
(signed byte) sx#9
(signed byte) sy
(signed byte) sy#0
(signed byte) sy#1
(signed byte) sy#10
(signed byte) sy#11
(signed byte) sy#12
(signed byte) sy#13
(signed byte) sy#14
(signed byte) sy#15
(signed byte) sy#16
(signed byte) sy#17
(signed byte) sy#18
(signed byte) sy#19
(signed byte) sy#2
(signed byte) sy#20
(signed byte) sy#21
(signed byte) sy#22
(signed byte) sy#23
(signed byte) sy#24
(signed byte) sy#25
(signed byte) sy#26
(signed byte) sy#27
(signed byte) sy#28
(signed byte) sy#29
(signed byte) sy#3
(signed byte) sy#30
(signed byte) sy#4
(signed byte) sy#5
(signed byte) sy#6
(signed byte) sy#7
(signed byte) sy#8
(signed byte) sy#9
(signed byte) sz
(signed byte) sz#0
(signed byte*) xp
(signed byte*) xp#0
(signed byte[8]) xps
(signed byte[8]) xps#0
(signed byte*) xr
(signed byte*) xr#0
(signed byte[8]) xrs
(signed byte[8]) xrs#0
(signed byte[8]) xs
(signed byte[8]) xs#0
(signed byte*) yp
(signed byte*) yp#0
(signed byte[8]) yps
(signed byte[8]) yps#0
(signed byte*) yr
(signed byte*) yr#0
(signed byte[8]) yrs
(signed byte[8]) yrs#0
(signed byte[8]) ys
(signed byte[8]) ys#0
(signed byte*) zr
(signed byte*) zr#0
(signed byte[8]) zrs
(signed byte[8]) zrs#0
(signed byte[8]) zs
(signed byte[8]) zs#0

Adding number conversion cast (unumber) 5 in (byte) GREEN#0 ← (number) 5
Adding number conversion cast (unumber) $e in (byte) LIGHT_BLUE#0 ← (number) $e
Adding number conversion cast (unumber) $f in (byte) LIGHT_GREY#0 ← (number) $f
Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#1 > (number) 0
Adding number conversion cast (unumber) 0 in (bool~) print_str_at::$0 ← (number) 0 != *((byte*) print_str_at::str#13)
Adding number conversion cast (snumber) 0 in (bool~) print_sbyte_at::$0 ← (signed byte) print_sbyte_at::b#22 < (number) 0
Adding number conversion cast (unumber) 1 in (byte*~) print_sbyte_at::$2 ← (byte*) print_sbyte_at::at#23 + (number) 1
Adding number conversion cast (unumber) 4 in (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#1 >> (number) 4
Adding number conversion cast (unumber) $f in (number~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (number) $f
Adding number conversion cast (unumber) print_byte_at::$2 in (number~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (unumber)(number) $f
Adding number conversion cast (unumber) 1 in (byte*~) print_byte_at::$3 ← (byte*) print_byte_at::at#2 + (number) 1
Adding number conversion cast (unumber) $3e8 in (word) memset::num#0 ← (number) $3e8
Adding number conversion cast (snumber) 0 in (signed byte) sx#2 ← (number) 0
Adding number conversion cast (snumber) 0 in (signed byte) sy#2 ← (number) 0
Adding number conversion cast (snumber) 0 in (signed byte) sz#0 ← (number) 0
Adding number conversion cast (unumber) $ff in (bool~) anim::$0 ← *((byte*) RASTER#0) != (number) $ff
Adding number conversion cast (unumber) $fe in (bool~) anim::$1 ← *((byte*) RASTER#0) != (number) $fe
Adding number conversion cast (unumber) $fd in (bool~) anim::$2 ← *((byte*) RASTER#0) != (number) $fd
Adding number conversion cast (unumber) 2 in (number~) anim::$6 ← (byte) anim::i#3 * (number) 2
Adding number conversion cast (unumber) anim::$6 in (number~) anim::$6 ← (byte) anim::i#3 * (unumber)(number) 2
Adding number conversion cast (unumber) $80 in (number~) anim::$8 ← (number) $80 + (byte~) anim::$7
Adding number conversion cast (unumber) anim::$8 in (number~) anim::$8 ← (unumber)(number) $80 + (byte~) anim::$7
Adding number conversion cast (unumber) $80 in (number~) anim::$10 ← (number) $80 + (byte~) anim::$9
Adding number conversion cast (unumber) anim::$10 in (number~) anim::$10 ← (unumber)(number) $80 + (byte~) anim::$9
Adding number conversion cast (snumber) 2 in (signed byte) sx#3 ← (signed byte) sx#9 + (number) 2
Adding number conversion cast (snumber) 3 in (signed byte) sy#3 ← (signed byte) sy#9 - (number) 3
Adding number conversion cast (unumber) $28*0 in (byte*~) debug_print_init::$1 ← (byte*) SCREEN#0 + (number) $28*(number) 0
Adding number conversion cast (unumber) $22 in (byte*~) debug_print_init::$2 ← (byte*~) debug_print_init::$1 + (number) $22
Adding number conversion cast (unumber) $28*1 in (byte*~) debug_print_init::$4 ← (byte*) SCREEN#0 + (number) $28*(number) 1
Adding number conversion cast (unumber) $22 in (byte*~) debug_print_init::$5 ← (byte*~) debug_print_init::$4 + (number) $22
Adding number conversion cast (unumber) $28*2 in (byte*~) debug_print_init::$7 ← (byte*) SCREEN#0 + (number) $28*(number) 2
Adding number conversion cast (unumber) $22 in (byte*~) debug_print_init::$8 ← (byte*~) debug_print_init::$7 + (number) $22
Adding number conversion cast (unumber) $28*$10 in (byte*~) debug_print_init::$10 ← (byte*) SCREEN#0 + (number) $28*(number) $10
Adding number conversion cast (unumber) $28*$11 in (byte*~) debug_print_init::$12 ← (byte*) SCREEN#0 + (number) $28*(number) $11
Adding number conversion cast (unumber) $28*$12 in (byte*~) debug_print_init::$14 ← (byte*) SCREEN#0 + (number) $28*(number) $12
Adding number conversion cast (unumber) $28*$13 in (byte*~) debug_print_init::$16 ← (byte*) SCREEN#0 + (number) $28*(number) $13
Adding number conversion cast (unumber) $28*$14 in (byte*~) debug_print_init::$18 ← (byte*) SCREEN#0 + (number) $28*(number) $14
Adding number conversion cast (unumber) $28*$15 in (byte*~) debug_print_init::$20 ← (byte*) SCREEN#0 + (number) $28*(number) $15
Adding number conversion cast (unumber) $28*$16 in (byte*~) debug_print_init::$22 ← (byte*) SCREEN#0 + (number) $28*(number) $16
Adding number conversion cast (unumber) $28*$17 in (byte*~) debug_print_init::$24 ← (byte*) SCREEN#0 + (number) $28*(number) $17
Adding number conversion cast (unumber) $28*$18 in (byte*~) debug_print_init::$26 ← (byte*) SCREEN#0 + (number) $28*(number) $18
Adding number conversion cast (unumber) $10*$28 in (byte*~) debug_print_init::$28 ← (byte*) SCREEN#0 + (number) $10*(number) $28
Adding number conversion cast (unumber) 4 in (byte) debug_print_init::c#0 ← (number) 4
Adding number conversion cast (unumber) $10*$28 in (byte*~) debug_print_init::$29 ← (byte*) debug_print_init::COLS#0 + (number) $10*(number) $28
Adding number conversion cast (unumber) $28*0 in (byte*~) debug_print_init::$30 ← (byte*) debug_print_init::at_line#1 + (number) $28*(number) 0
Adding number conversion cast (unumber) $28*1 in (byte*~) debug_print_init::$33 ← (byte*) debug_print_init::at_line#2 + (number) $28*(number) 1
Adding number conversion cast (unumber) $28*2 in (byte*~) debug_print_init::$36 ← (byte*) debug_print_init::at_line#3 + (number) $28*(number) 2
Adding number conversion cast (unumber) 8 in (number~) debug_print_init::$39 ← (number) 8 + (byte) debug_print_init::i#5
Adding number conversion cast (unumber) debug_print_init::$39 in (number~) debug_print_init::$39 ← (unumber)(number) 8 + (byte) debug_print_init::i#5
Adding number conversion cast (unumber) $28*0 in (byte*~) debug_print_init::$40 ← (byte*) debug_print_init::at_cols#1 + (number) $28*(number) 0
Adding number conversion cast (unumber) $28*1 in (byte*~) debug_print_init::$43 ← (byte*) debug_print_init::at_cols#1 + (number) $28*(number) 1
Adding number conversion cast (unumber) $28*2 in (byte*~) debug_print_init::$46 ← (byte*) debug_print_init::at_cols#1 + (number) $28*(number) 2
Adding number conversion cast (unumber) $28*3 in (byte*~) debug_print_init::$49 ← (byte*) debug_print_init::at_cols#1 + (number) $28*(number) 3
Adding number conversion cast (unumber) $28*4 in (byte*~) debug_print_init::$52 ← (byte*) debug_print_init::at_cols#1 + (number) $28*(number) 4
Adding number conversion cast (unumber) $28*5 in (byte*~) debug_print_init::$55 ← (byte*) debug_print_init::at_cols#1 + (number) $28*(number) 5
Adding number conversion cast (unumber) $28*6 in (byte*~) debug_print_init::$58 ← (byte*) debug_print_init::at_cols#1 + (number) $28*(number) 6
Adding number conversion cast (unumber) $28*7 in (byte*~) debug_print_init::$61 ← (byte*) debug_print_init::at_cols#1 + (number) $28*(number) 7
Adding number conversion cast (unumber) $28*8 in (byte*~) debug_print_init::$64 ← (byte*) debug_print_init::at_cols#1 + (number) $28*(number) 8
Adding number conversion cast (unumber) 4 in (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#6 + (number) 4
Adding number conversion cast (unumber) 0 in (byte) debug_print::print_sbyte_pos1_row#0 ← (number) 0
Adding number conversion cast (unumber) $25 in (byte) debug_print::print_sbyte_pos1_col#0 ← (number) $25
Adding number conversion cast (unumber) $28 in (number~) debug_print::print_sbyte_pos1_$0#0 ← (byte) debug_print::print_sbyte_pos1_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos1_$0#0 in (number~) debug_print::print_sbyte_pos1_$0#0 ← (byte) debug_print::print_sbyte_pos1_row#1 * (unumber)(number) $28
Adding number conversion cast (unumber) 1 in (byte) debug_print::print_sbyte_pos2_row#0 ← (number) 1
Adding number conversion cast (unumber) $25 in (byte) debug_print::print_sbyte_pos2_col#0 ← (number) $25
Adding number conversion cast (unumber) $28 in (number~) debug_print::print_sbyte_pos2_$0#0 ← (byte) debug_print::print_sbyte_pos2_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos2_$0#0 in (number~) debug_print::print_sbyte_pos2_$0#0 ← (byte) debug_print::print_sbyte_pos2_row#1 * (unumber)(number) $28
Adding number conversion cast (unumber) 2 in (byte) debug_print::print_sbyte_pos3_row#0 ← (number) 2
Adding number conversion cast (unumber) $25 in (byte) debug_print::print_sbyte_pos3_col#0 ← (number) $25
Adding number conversion cast (unumber) $28 in (number~) debug_print::print_sbyte_pos3_$0#0 ← (byte) debug_print::print_sbyte_pos3_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos3_$0#0 in (number~) debug_print::print_sbyte_pos3_$0#0 ← (byte) debug_print::print_sbyte_pos3_row#1 * (unumber)(number) $28
Adding number conversion cast (unumber) 0 in (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (number) 0)
Adding number conversion cast (unumber) 4 in (byte) debug_print::print_sbyte_pos4_row#0 ← (number) 4
Adding number conversion cast (unumber) $1d in (byte) debug_print::print_sbyte_pos4_col#0 ← (number) $1d
Adding number conversion cast (unumber) $28 in (number~) debug_print::print_sbyte_pos4_$0#0 ← (byte) debug_print::print_sbyte_pos4_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos4_$0#0 in (number~) debug_print::print_sbyte_pos4_$0#0 ← (byte) debug_print::print_sbyte_pos4_row#1 * (unumber)(number) $28
Adding number conversion cast (unumber) 1 in (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (number) 1)
Adding number conversion cast (unumber) 4 in (byte) debug_print::print_sbyte_pos5_row#0 ← (number) 4
Adding number conversion cast (unumber) $21 in (byte) debug_print::print_sbyte_pos5_col#0 ← (number) $21
Adding number conversion cast (unumber) $28 in (number~) debug_print::print_sbyte_pos5_$0#0 ← (byte) debug_print::print_sbyte_pos5_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos5_$0#0 in (number~) debug_print::print_sbyte_pos5_$0#0 ← (byte) debug_print::print_sbyte_pos5_row#1 * (unumber)(number) $28
Adding number conversion cast (unumber) 2 in (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (number) 2)
Adding number conversion cast (unumber) 4 in (byte) debug_print::print_sbyte_pos6_row#0 ← (number) 4
Adding number conversion cast (unumber) $25 in (byte) debug_print::print_sbyte_pos6_col#0 ← (number) $25
Adding number conversion cast (unumber) $28 in (number~) debug_print::print_sbyte_pos6_$0#0 ← (byte) debug_print::print_sbyte_pos6_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos6_$0#0 in (number~) debug_print::print_sbyte_pos6_$0#0 ← (byte) debug_print::print_sbyte_pos6_row#1 * (unumber)(number) $28
Adding number conversion cast (unumber) 3 in (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (number) 3)
Adding number conversion cast (unumber) 5 in (byte) debug_print::print_sbyte_pos7_row#0 ← (number) 5
Adding number conversion cast (unumber) $1d in (byte) debug_print::print_sbyte_pos7_col#0 ← (number) $1d
Adding number conversion cast (unumber) $28 in (number~) debug_print::print_sbyte_pos7_$0#0 ← (byte) debug_print::print_sbyte_pos7_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos7_$0#0 in (number~) debug_print::print_sbyte_pos7_$0#0 ← (byte) debug_print::print_sbyte_pos7_row#1 * (unumber)(number) $28
Adding number conversion cast (unumber) 4 in (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (number) 4)
Adding number conversion cast (unumber) 5 in (byte) debug_print::print_sbyte_pos8_row#0 ← (number) 5
Adding number conversion cast (unumber) $21 in (byte) debug_print::print_sbyte_pos8_col#0 ← (number) $21
Adding number conversion cast (unumber) $28 in (number~) debug_print::print_sbyte_pos8_$0#0 ← (byte) debug_print::print_sbyte_pos8_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos8_$0#0 in (number~) debug_print::print_sbyte_pos8_$0#0 ← (byte) debug_print::print_sbyte_pos8_row#1 * (unumber)(number) $28
Adding number conversion cast (unumber) 5 in (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (number) 5)
Adding number conversion cast (unumber) 5 in (byte) debug_print::print_sbyte_pos9_row#0 ← (number) 5
Adding number conversion cast (unumber) $25 in (byte) debug_print::print_sbyte_pos9_col#0 ← (number) $25
Adding number conversion cast (unumber) $28 in (number~) debug_print::print_sbyte_pos9_$0#0 ← (byte) debug_print::print_sbyte_pos9_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos9_$0#0 in (number~) debug_print::print_sbyte_pos9_$0#0 ← (byte) debug_print::print_sbyte_pos9_row#1 * (unumber)(number) $28
Adding number conversion cast (unumber) 6 in (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (number) 6)
Adding number conversion cast (unumber) 6 in (byte) debug_print::print_sbyte_pos10_row#0 ← (number) 6
Adding number conversion cast (unumber) $1d in (byte) debug_print::print_sbyte_pos10_col#0 ← (number) $1d
Adding number conversion cast (unumber) $28 in (number~) debug_print::print_sbyte_pos10_$0#0 ← (byte) debug_print::print_sbyte_pos10_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos10_$0#0 in (number~) debug_print::print_sbyte_pos10_$0#0 ← (byte) debug_print::print_sbyte_pos10_row#1 * (unumber)(number) $28
Adding number conversion cast (unumber) 7 in (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (number) 7)
Adding number conversion cast (unumber) 6 in (byte) debug_print::print_sbyte_pos11_row#0 ← (number) 6
Adding number conversion cast (unumber) $21 in (byte) debug_print::print_sbyte_pos11_col#0 ← (number) $21
Adding number conversion cast (unumber) $28 in (number~) debug_print::print_sbyte_pos11_$0#0 ← (byte) debug_print::print_sbyte_pos11_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos11_$0#0 in (number~) debug_print::print_sbyte_pos11_$0#0 ← (byte) debug_print::print_sbyte_pos11_row#1 * (unumber)(number) $28
Adding number conversion cast (unumber) 8 in (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (number) 8)
Adding number conversion cast (unumber) 6 in (byte) debug_print::print_sbyte_pos12_row#0 ← (number) 6
Adding number conversion cast (unumber) $25 in (byte) debug_print::print_sbyte_pos12_col#0 ← (number) $25
Adding number conversion cast (unumber) $28 in (number~) debug_print::print_sbyte_pos12_$0#0 ← (byte) debug_print::print_sbyte_pos12_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos12_$0#0 in (number~) debug_print::print_sbyte_pos12_$0#0 ← (byte) debug_print::print_sbyte_pos12_row#1 * (unumber)(number) $28
Adding number conversion cast (unumber) $13*$28 in (byte*~) debug_print::$12 ← (byte*) SCREEN#0 + (number) $13*(number) $28
Adding number conversion cast (unumber) 4 in (byte) debug_print::c#0 ← (number) 4
Adding number conversion cast (unumber) $28*0 in (byte*~) debug_print::$13 ← (byte*) debug_print::at_line#1 + (number) $28*(number) 0
Adding number conversion cast (unumber) $28*1 in (byte*~) debug_print::$16 ← (byte*) debug_print::at_line#2 + (number) $28*(number) 1
Adding number conversion cast (unumber) $28*2 in (byte*~) debug_print::$19 ← (byte*) debug_print::at_line#3 + (number) $28*(number) 2
Adding number conversion cast (unumber) $28*3 in (byte*~) debug_print::$22 ← (byte*) debug_print::at_line#4 + (number) $28*(number) 3
Adding number conversion cast (unumber) $28*4 in (byte*~) debug_print::$25 ← (byte*) debug_print::at_line#5 + (number) $28*(number) 4
Adding number conversion cast (unumber) $28*5 in (byte*~) debug_print::$28 ← (byte*) debug_print::at_line#6 + (number) $28*(number) 5
Adding number conversion cast (unumber) 4 in (byte) debug_print::c#1 ← (byte) debug_print::c#8 + (number) 4
Adding number conversion cast (unumber) $ff in *((byte*) SPRITES_ENABLE#0) ← (number) $ff
Adding number conversion cast (unumber) $3f8 in (byte*~) sprites_init::$0 ← (byte*) sprites_init::SCREEN#0 + (number) $3f8
Adding number conversion cast (unumber) $40 in (byte*~) sprites_init::$1 ← (byte*) SPRITE#0 / (number) $40
Adding number conversion cast (unumber) 0 in *((signed byte[9]) rotation_matrix#0 + (number) 0) ← (signed byte~) calculate_matrix::$10
Adding number conversion cast (unumber) 1 in *((signed byte[9]) rotation_matrix#0 + (number) 1) ← (signed byte~) calculate_matrix::$11
Adding number conversion cast (unumber) 2 in *((signed byte[9]) rotation_matrix#0 + (number) 2) ← (signed byte~) calculate_matrix::$12
Adding number conversion cast (unumber) 3 in *((signed byte[9]) rotation_matrix#0 + (number) 3) ← (signed byte~) calculate_matrix::$17
Adding number conversion cast (unumber) 4 in *((signed byte[9]) rotation_matrix#0 + (number) 4) ← (signed byte~) calculate_matrix::$22
Adding number conversion cast (unumber) 5 in *((signed byte[9]) rotation_matrix#0 + (number) 5) ← (signed byte~) calculate_matrix::$23
Adding number conversion cast (unumber) 6 in *((signed byte[9]) rotation_matrix#0 + (number) 6) ← (signed byte~) calculate_matrix::$28
Adding number conversion cast (unumber) 7 in *((signed byte[9]) rotation_matrix#0 + (number) 7) ← (signed byte~) calculate_matrix::$33
Adding number conversion cast (unumber) 8 in *((signed byte[9]) rotation_matrix#0 + (number) 8) ← (signed byte~) calculate_matrix::$34
Adding number conversion cast (unumber) $40 in (signed byte*~) $0 ← (signed byte[$140]) SINH#0 + (number) $40
Adding number conversion cast (unumber) $40 in (signed byte*~) $1 ← (signed byte[$140]) SINQ#0 + (number) $40
Successful SSA optimization PassNAddNumberTypeConversions
Added casts to value list in (signed byte[8]) xs#0 ← (signed byte[8]){ (signed byte)(number) -$34, (signed byte)(number) -$34, (signed byte)(number) -$34, (signed byte)(number) 0, (signed byte)(number) 0, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34 }
Added casts to value list in (signed byte[8]) ys#0 ← (signed byte[8]){ (signed byte)(number) -$34, (signed byte)(number) 0, (signed byte)(number) $34, (signed byte)(number) -$34, (signed byte)(number) $34, (signed byte)(number) -$34, (signed byte)(number) 0, (signed byte)(number) $34 }
Added casts to value list in (signed byte[8]) zs#0 ← (signed byte[8]){ (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34, (signed byte)(number) $34 }
Successful SSA optimization PassNAddInitializerValueListTypeCasts
Inlining cast (byte*) SPRITES_XPOS#0 ← (byte*)(number) $d000
Inlining cast (byte*) SPRITES_YPOS#0 ← (byte*)(number) $d001
Inlining cast (byte*) RASTER#0 ← (byte*)(number) $d012
Inlining cast (byte*) SPRITES_ENABLE#0 ← (byte*)(number) $d015
Inlining cast (byte*) BORDERCOL#0 ← (byte*)(number) $d020
Inlining cast (byte*) SPRITES_COLS#0 ← (byte*)(number) $d027
Inlining cast (byte) GREEN#0 ← (unumber)(number) 5
Inlining cast (byte) LIGHT_BLUE#0 ← (unumber)(number) $e
Inlining cast (byte) LIGHT_GREY#0 ← (unumber)(number) $f
Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#2
Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2
Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400
Inlining cast (byte~) print_sbyte_at::$1 ← (byte)(signed byte) print_sbyte_at::b#24
Inlining cast (word) memset::num#0 ← (unumber)(number) $3e8
Inlining cast (signed byte*) xr#0 ← (signed byte*)(number) $f0
Inlining cast (signed byte*) yr#0 ← (signed byte*)(number) $f1
Inlining cast (signed byte*) zr#0 ← (signed byte*)(number) $f2
Inlining cast (signed byte*) pp#0 ← (signed byte*)(number) $f3
Inlining cast (signed byte*) xp#0 ← (signed byte*)(number) $f4
Inlining cast (signed byte*) yp#0 ← (signed byte*)(number) $f5
Inlining cast (word*) psp1#0 ← (word*)(number) $f6
Inlining cast (word*) psp2#0 ← (word*)(number) $f8
Inlining cast (byte*) SCREEN#0 ← (byte*)(number) $400
Inlining cast (word~) main::$1 ← (word)(byte[$200]) mulf_sqr1#0
Inlining cast (word~) main::$2 ← (word)(byte[$200]) mulf_sqr2#0
Inlining cast (signed byte) sx#2 ← (snumber)(number) 0
Inlining cast (signed byte) sy#2 ← (snumber)(number) 0
Inlining cast (signed byte) sz#0 ← (snumber)(number) 0
Inlining cast (byte~) anim::$7 ← (byte)*((signed byte*) xp#0)
Inlining cast (byte~) anim::$9 ← (byte)*((signed byte*) yp#0)
Inlining cast (byte) debug_print_init::c#0 ← (unumber)(number) 4
Inlining cast (byte*) debug_print_init::COLS#0 ← (byte*)(number) $d800
Inlining cast (byte) debug_print::print_sbyte_pos1_row#0 ← (unumber)(number) 0
Inlining cast (byte) debug_print::print_sbyte_pos1_col#0 ← (unumber)(number) $25
Inlining cast (byte) debug_print::print_sbyte_pos2_row#0 ← (unumber)(number) 1
Inlining cast (byte) debug_print::print_sbyte_pos2_col#0 ← (unumber)(number) $25
Inlining cast (byte) debug_print::print_sbyte_pos3_row#0 ← (unumber)(number) 2
Inlining cast (byte) debug_print::print_sbyte_pos3_col#0 ← (unumber)(number) $25
Inlining cast (byte) debug_print::print_sbyte_pos4_row#0 ← (unumber)(number) 4
Inlining cast (byte) debug_print::print_sbyte_pos4_col#0 ← (unumber)(number) $1d
Inlining cast (byte) debug_print::print_sbyte_pos5_row#0 ← (unumber)(number) 4
Inlining cast (byte) debug_print::print_sbyte_pos5_col#0 ← (unumber)(number) $21
Inlining cast (byte) debug_print::print_sbyte_pos6_row#0 ← (unumber)(number) 4
Inlining cast (byte) debug_print::print_sbyte_pos6_col#0 ← (unumber)(number) $25
Inlining cast (byte) debug_print::print_sbyte_pos7_row#0 ← (unumber)(number) 5
Inlining cast (byte) debug_print::print_sbyte_pos7_col#0 ← (unumber)(number) $1d
Inlining cast (byte) debug_print::print_sbyte_pos8_row#0 ← (unumber)(number) 5
Inlining cast (byte) debug_print::print_sbyte_pos8_col#0 ← (unumber)(number) $21
Inlining cast (byte) debug_print::print_sbyte_pos9_row#0 ← (unumber)(number) 5
Inlining cast (byte) debug_print::print_sbyte_pos9_col#0 ← (unumber)(number) $25
Inlining cast (byte) debug_print::print_sbyte_pos10_row#0 ← (unumber)(number) 6
Inlining cast (byte) debug_print::print_sbyte_pos10_col#0 ← (unumber)(number) $1d
Inlining cast (byte) debug_print::print_sbyte_pos11_row#0 ← (unumber)(number) 6
Inlining cast (byte) debug_print::print_sbyte_pos11_col#0 ← (unumber)(number) $21
Inlining cast (byte) debug_print::print_sbyte_pos12_row#0 ← (unumber)(number) 6
Inlining cast (byte) debug_print::print_sbyte_pos12_col#0 ← (unumber)(number) $25
Inlining cast (byte) debug_print::c#0 ← (unumber)(number) 4
Inlining cast (byte*) sprites_init::SCREEN#0 ← (byte*)(number) $400
Inlining cast *((byte*) SPRITES_ENABLE#0) ← (unumber)(number) $ff
Inlining cast (byte~) sprites_init::$2 ← (byte)(byte*~) sprites_init::$1
Inlining cast (byte*) SPRITE#0 ← (byte*)(number) $3000
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 53248
Simplifying constant pointer cast (byte*) 53249
Simplifying constant pointer cast (byte*) 53266
Simplifying constant pointer cast (byte*) 53269
Simplifying constant pointer cast (byte*) 53280
Simplifying constant pointer cast (byte*) 53287
Simplifying constant integer cast 5
Simplifying constant integer cast $e
Simplifying constant integer cast $f
Simplifying constant integer cast 0
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast 1
Simplifying constant integer cast $3e8
Simplifying constant pointer cast (signed byte*) 240
Simplifying constant pointer cast (signed byte*) 241
Simplifying constant pointer cast (signed byte*) 242
Simplifying constant pointer cast (signed byte*) 243
Simplifying constant pointer cast (signed byte*) 244
Simplifying constant pointer cast (signed byte*) 245
Simplifying constant pointer cast (word*) 246
Simplifying constant pointer cast (word*) 248
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast -$34
Simplifying constant integer cast -$34
Simplifying constant integer cast -$34
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $34
Simplifying constant integer cast $34
Simplifying constant integer cast $34
Simplifying constant integer cast -$34
Simplifying constant integer cast 0
Simplifying constant integer cast $34
Simplifying constant integer cast -$34
Simplifying constant integer cast $34
Simplifying constant integer cast -$34
Simplifying constant integer cast 0
Simplifying constant integer cast $34
Simplifying constant integer cast $34
Simplifying constant integer cast $34
Simplifying constant integer cast $34
Simplifying constant integer cast $34
Simplifying constant integer cast $34
Simplifying constant integer cast $34
Simplifying constant integer cast $34
Simplifying constant integer cast $34
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $ff
Simplifying constant integer cast $fe
Simplifying constant integer cast $fd
Simplifying constant integer cast 2
Simplifying constant integer cast $80
Simplifying constant integer cast $80
Simplifying constant integer cast 2
Simplifying constant integer cast 3
Simplifying constant integer cast $22
Simplifying constant integer cast $22
Simplifying constant integer cast $22
Simplifying constant integer cast 4
Simplifying constant pointer cast (byte*) 55296
Simplifying constant integer cast 8
Simplifying constant integer cast 4
Simplifying constant integer cast 0
Simplifying constant integer cast $25
Simplifying constant integer cast $28
Simplifying constant integer cast 1
Simplifying constant integer cast $25
Simplifying constant integer cast $28
Simplifying constant integer cast 2
Simplifying constant integer cast $25
Simplifying constant integer cast $28
Simplifying constant integer cast 0
Simplifying constant integer cast 4
Simplifying constant integer cast $1d
Simplifying constant integer cast $28
Simplifying constant integer cast 1
Simplifying constant integer cast 4
Simplifying constant integer cast $21
Simplifying constant integer cast $28
Simplifying constant integer cast 2
Simplifying constant integer cast 4
Simplifying constant integer cast $25
Simplifying constant integer cast $28
Simplifying constant integer cast 3
Simplifying constant integer cast 5
Simplifying constant integer cast $1d
Simplifying constant integer cast $28
Simplifying constant integer cast 4
Simplifying constant integer cast 5
Simplifying constant integer cast $21
Simplifying constant integer cast $28
Simplifying constant integer cast 5
Simplifying constant integer cast 5
Simplifying constant integer cast $25
Simplifying constant integer cast $28
Simplifying constant integer cast 6
Simplifying constant integer cast 6
Simplifying constant integer cast $1d
Simplifying constant integer cast $28
Simplifying constant integer cast 7
Simplifying constant integer cast 6
Simplifying constant integer cast $21
Simplifying constant integer cast $28
Simplifying constant integer cast 8
Simplifying constant integer cast 6
Simplifying constant integer cast $25
Simplifying constant integer cast $28
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast $ff
Simplifying constant integer cast $3f8
Simplifying constant integer cast $40
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 3
Simplifying constant integer cast 4
Simplifying constant integer cast 5
Simplifying constant integer cast 6
Simplifying constant integer cast 7
Simplifying constant integer cast 8
Simplifying constant pointer cast (byte*) 12288
Simplifying constant integer cast $40
Simplifying constant integer cast $40
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 5
Finalized unsigned number type (byte) $e
Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) 1
Finalized unsigned number type (word) $3e8
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) $ff
Finalized unsigned number type (byte) $fe
Finalized unsigned number type (byte) $fd
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) $80
Finalized signed number type (signed byte) 2
Finalized signed number type (signed byte) 3
Finalized unsigned number type (byte) $22
Finalized unsigned number type (byte) $22
Finalized unsigned number type (byte) $22
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $25
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) $25
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $25
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) $1d
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) $21
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) $25
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 5
Finalized unsigned number type (byte) $1d
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 5
Finalized unsigned number type (byte) $21
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 5
Finalized unsigned number type (byte) 5
Finalized unsigned number type (byte) $25
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 6
Finalized unsigned number type (byte) 6
Finalized unsigned number type (byte) $1d
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) 6
Finalized unsigned number type (byte) $21
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 6
Finalized unsigned number type (byte) $25
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) $ff
Finalized unsigned number type (word) $3f8
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 5
Finalized unsigned number type (byte) 6
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) $40
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to byte in (unumber~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f
Inferred type updated to byte in (unumber~) anim::$6 ← (byte) anim::i#3 * (byte) 2
Inferred type updated to byte in (unumber~) anim::$8 ← (byte) $80 + (byte~) anim::$7
Inferred type updated to byte in (unumber~) anim::$10 ← (byte) $80 + (byte~) anim::$9
Inferred type updated to byte in (unumber~) debug_print_init::$39 ← (byte) 8 + (byte) debug_print_init::i#5
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos1_$0#0 ← (byte) debug_print::print_sbyte_pos1_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos2_$0#0 ← (byte) debug_print::print_sbyte_pos2_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos3_$0#0 ← (byte) debug_print::print_sbyte_pos3_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos4_$0#0 ← (byte) debug_print::print_sbyte_pos4_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos5_$0#0 ← (byte) debug_print::print_sbyte_pos5_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos6_$0#0 ← (byte) debug_print::print_sbyte_pos6_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos7_$0#0 ← (byte) debug_print::print_sbyte_pos7_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos8_$0#0 ← (byte) debug_print::print_sbyte_pos8_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos9_$0#0 ← (byte) debug_print::print_sbyte_pos9_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos10_$0#0 ← (byte) debug_print::print_sbyte_pos10_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos11_$0#0 ← (byte) debug_print::print_sbyte_pos11_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos12_$0#0 ← (byte) debug_print::print_sbyte_pos12_row#1 * (byte) $28
Inversing boolean not [11] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [10] (bool~) memset::$0 ← (word) memset::num#1 > (byte) 0
Successful SSA optimization Pass2UnaryNotSimplification
Alias (void*) memset::return#0 = (void*) memset::str#1 (void*) memset::return#3 (void*) memset::return#1 
Alias (void*) memset::str#2 = (void*) memset::str#3 
Alias (word) memset::num#1 = (word) memset::num#2 
Alias (byte) memset::c#3 = (byte) memset::c#4 
Alias (byte*) memset::end#0 = (byte*~) memset::$3 
Alias (byte) memset::c#1 = (byte) memset::c#2 
Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 
Alias (byte*) memset::end#1 = (byte*) memset::end#2 
Alias (void*) memset::str#4 = (void*) memset::str#5 
Alias (byte*) print_str_at::str#13 = (byte*) print_str_at::str#14 
Alias (byte*) print_str_at::at#13 = (byte*) print_str_at::at#14 
Alias (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#24 (byte*) print_sbyte_at::at#25 (byte*) print_sbyte_at::at#22 (byte*) print_sbyte_at::at#26 
Alias (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#25 (signed byte) print_sbyte_at::b#23 (signed byte) print_sbyte_at::b#27 (signed byte) print_sbyte_at::b#26 
Alias (signed byte) print_sbyte_at::b#0 = (signed byte~) print_sbyte_at::$6 
Alias (byte) print_byte_at::b#0 = (byte~) print_sbyte_at::$1 
Alias (byte*) print_byte_at::at#0 = (byte*~) print_sbyte_at::$2 
Alias (byte*) print_screen#0 = (byte*) print_screen#50 (byte*) print_screen#48 (byte*) print_screen#47 (byte*) print_screen#45 (byte*) print_screen#42 
Alias (byte) print_byte_at::b#1 = (byte) print_byte_at::b#2 
Alias (byte*) print_byte_at::at#1 = (byte*) print_byte_at::at#2 
Alias (byte*) print_char_at::at#3 = (byte*~) print_byte_at::$3 
Alias (signed byte) sx#13 = (signed byte) sx#18 (signed byte) sx#23 
Alias (signed byte) sy#13 = (signed byte) sy#19 (signed byte) sy#25 
Alias (byte*) print_screen#27 = (byte*) print_screen#40 (byte*) print_screen#57 
Alias (signed byte*) COSH#11 = (signed byte*) COSH#13 (signed byte*) COSH#9 
Alias (signed byte*) COSQ#11 = (signed byte*) COSQ#13 (signed byte*) COSQ#9 
Alias (signed byte) sx#0 = (signed byte) sx#6 (signed byte) sx#7 (signed byte) sx#1 
Alias (signed byte) sy#0 = (signed byte) sy#6 (signed byte) sy#7 (signed byte) sy#1 
Alias (signed byte) sx#14 = (signed byte) sx#8 (signed byte) sx#27 (signed byte) sx#26 
Alias (signed byte) sy#14 = (signed byte) sy#8 (signed byte) sy#30 (signed byte) sy#29 
Alias (signed byte*) COSH#15 = (signed byte*) COSH#2 (signed byte*) COSH#3 (signed byte*) COSH#16 
Alias (signed byte*) COSQ#15 = (signed byte*) COSQ#2 (signed byte*) COSQ#3 (signed byte*) COSQ#16 
Alias (byte*) print_screen#44 = (byte*) print_screen#49 (byte*) print_screen#51 (byte*) print_screen#46 
Alias (byte) anim::i#2 = (byte) anim::i#3 
Alias (signed byte) sx#15 = (signed byte) sx#21 (signed byte) sx#25 (signed byte) sx#9 
Alias (signed byte) sy#15 = (signed byte) sy#22 (signed byte) sy#27 (signed byte) sy#9 
Alias (byte*) print_screen#28 = (byte*) print_screen#41 (byte*) print_screen#43 (byte*) print_screen#56 
Alias (signed byte*) COSH#10 = (signed byte*) COSH#12 (signed byte*) COSH#14 (signed byte*) COSH#8 
Alias (signed byte*) COSQ#10 = (signed byte*) COSQ#12 (signed byte*) COSQ#14 (signed byte*) COSQ#8 
Alias (byte) anim::i2#0 = (byte~) anim::$6 
Alias (signed byte) sx#10 = (signed byte) sx#16 (signed byte) sx#4 
Alias (signed byte) sy#10 = (signed byte) sy#16 (signed byte) sy#4 
Alias (byte*) print_str_at::at#1 = (byte*~) debug_print_init::$2 
Alias (byte*) print_str_at::at#2 = (byte*~) debug_print_init::$5 
Alias (byte*) print_str_at::at#3 = (byte*~) debug_print_init::$8 
Alias (byte*) print_str_at::at#4 = (byte*~) debug_print_init::$10 
Alias (byte*) print_str_at::at#5 = (byte*~) debug_print_init::$12 
Alias (byte*) print_str_at::at#6 = (byte*~) debug_print_init::$14 
Alias (byte*) print_str_at::at#7 = (byte*~) debug_print_init::$16 
Alias (byte*) print_str_at::at#8 = (byte*~) debug_print_init::$18 
Alias (byte*) print_str_at::at#9 = (byte*~) debug_print_init::$20 
Alias (byte*) print_str_at::at#10 = (byte*~) debug_print_init::$22 
Alias (byte*) print_str_at::at#11 = (byte*~) debug_print_init::$24 
Alias (byte*) print_str_at::at#12 = (byte*~) debug_print_init::$26 
Alias (byte*) debug_print_init::at_line#0 = (byte*~) debug_print_init::$28 
Alias (byte*) debug_print_init::at_cols#0 = (byte*~) debug_print_init::$29 
Alias (byte*) print_sbyte_at::at#0 = (byte*~) debug_print_init::$31 
Alias (byte*) debug_print_init::at_line#1 = (byte*) debug_print_init::at_line#2 (byte*) debug_print_init::at_line#3 (byte*) debug_print_init::at_line#6 
Alias (byte) debug_print_init::c#2 = (byte) debug_print_init::c#3 (byte) debug_print_init::c#4 (byte) debug_print_init::c#7 
Alias (byte) debug_print_init::i#2 = (byte) debug_print_init::i#3 (byte) debug_print_init::i#4 (byte) debug_print_init::i#7 
Alias (byte*) debug_print_init::at_cols#2 = (byte*) debug_print_init::at_cols#4 (byte*) debug_print_init::at_cols#5 (byte*) debug_print_init::at_cols#3 
Alias (byte*) print_sbyte_at::at#1 = (byte*~) debug_print_init::$34 
Alias (byte*) print_sbyte_at::at#2 = (byte*~) debug_print_init::$37 
Alias (byte) debug_print_init::col#0 = (byte~) debug_print_init::$39 
Alias (byte) debug_print_init::c#5 = (byte) debug_print_init::c#6 
Alias (byte) debug_print_init::i#5 = (byte) debug_print_init::i#6 
Alias (byte*) debug_print_init::at_line#4 = (byte*) debug_print_init::at_line#5 
Alias (byte*) debug_print_init::at_cols#1 = (byte*) debug_print_init::at_cols#6 
Alias (byte) debug_print::print_sbyte_pos1_row#0 = (byte) debug_print::print_sbyte_pos1_row#1 
Alias (byte*) print_screen#10 = (byte*) print_screen#2 (byte*) print_screen#15 (byte*) print_screen#29 (byte*) print_screen#16 (byte*) print_screen#3 (byte*) print_screen#30 (byte*) print_screen#17 (byte*) print_screen#4 (byte*) print_screen#31 (byte*) print_screen#18 (byte*) print_screen#5 (byte*) print_screen#32 (byte*) print_screen#19 (byte*) print_screen#6 (byte*) print_screen#33 (byte*) print_screen#20 (byte*) print_screen#7 (byte*) print_screen#34 (byte*) print_screen#21 (byte*) print_screen#8 (byte*) print_screen#35 (byte*) print_screen#22 (byte*) print_screen#9 (byte*) print_screen#36 (byte*) print_screen#23 (byte*) print_screen#37 (byte*) print_screen#24 (byte*) print_screen#11 (byte*) print_screen#38 (byte*) print_screen#25 (byte*) print_screen#12 (byte*) print_screen#39 (byte*) print_screen#26 (byte*) print_screen#13 
Alias (byte) debug_print::print_sbyte_pos1_col#0 = (byte) debug_print::print_sbyte_pos1_col#1 
Alias (signed byte) debug_print::print_sbyte_pos1_sb#0 = (signed byte) debug_print::print_sbyte_pos1_sb#1 
Alias (signed byte) sy#11 = (signed byte) sy#23 (signed byte) sy#28 (signed byte) sy#17 
Alias (byte*) print_sbyte_at::at#3 = (byte*~) debug_print::print_sbyte_pos1_$2#0 
Alias (byte) debug_print::print_sbyte_pos2_row#0 = (byte) debug_print::print_sbyte_pos2_row#1 
Alias (byte) debug_print::print_sbyte_pos2_col#0 = (byte) debug_print::print_sbyte_pos2_col#1 
Alias (signed byte) debug_print::print_sbyte_pos2_sb#0 = (signed byte) debug_print::print_sbyte_pos2_sb#1 
Alias (byte*) print_sbyte_at::at#4 = (byte*~) debug_print::print_sbyte_pos2_$2#0 
Alias (byte) debug_print::print_sbyte_pos3_row#0 = (byte) debug_print::print_sbyte_pos3_row#1 
Alias (byte) debug_print::print_sbyte_pos3_col#0 = (byte) debug_print::print_sbyte_pos3_col#1 
Alias (signed byte) debug_print::print_sbyte_pos3_sb#0 = (signed byte) debug_print::print_sbyte_pos3_sb#1 
Alias (byte*) print_sbyte_at::at#5 = (byte*~) debug_print::print_sbyte_pos3_$2#0 
Alias (byte) debug_print::print_sbyte_pos4_row#0 = (byte) debug_print::print_sbyte_pos4_row#1 
Alias (byte) debug_print::print_sbyte_pos4_col#0 = (byte) debug_print::print_sbyte_pos4_col#1 
Alias (signed byte) debug_print::print_sbyte_pos4_sb#0 = (signed byte) debug_print::print_sbyte_pos4_sb#1 
Alias (byte*) print_sbyte_at::at#6 = (byte*~) debug_print::print_sbyte_pos4_$2#0 
Alias (byte) debug_print::print_sbyte_pos5_row#0 = (byte) debug_print::print_sbyte_pos5_row#1 
Alias (byte) debug_print::print_sbyte_pos5_col#0 = (byte) debug_print::print_sbyte_pos5_col#1 
Alias (signed byte) debug_print::print_sbyte_pos5_sb#0 = (signed byte) debug_print::print_sbyte_pos5_sb#1 
Alias (byte*) print_sbyte_at::at#7 = (byte*~) debug_print::print_sbyte_pos5_$2#0 
Alias (byte) debug_print::print_sbyte_pos6_row#0 = (byte) debug_print::print_sbyte_pos6_row#1 
Alias (byte) debug_print::print_sbyte_pos6_col#0 = (byte) debug_print::print_sbyte_pos6_col#1 
Alias (signed byte) debug_print::print_sbyte_pos6_sb#0 = (signed byte) debug_print::print_sbyte_pos6_sb#1 
Alias (byte*) print_sbyte_at::at#8 = (byte*~) debug_print::print_sbyte_pos6_$2#0 
Alias (byte) debug_print::print_sbyte_pos7_row#0 = (byte) debug_print::print_sbyte_pos7_row#1 
Alias (byte) debug_print::print_sbyte_pos7_col#0 = (byte) debug_print::print_sbyte_pos7_col#1 
Alias (signed byte) debug_print::print_sbyte_pos7_sb#0 = (signed byte) debug_print::print_sbyte_pos7_sb#1 
Alias (byte*) print_sbyte_at::at#9 = (byte*~) debug_print::print_sbyte_pos7_$2#0 
Alias (byte) debug_print::print_sbyte_pos8_row#0 = (byte) debug_print::print_sbyte_pos8_row#1 
Alias (byte) debug_print::print_sbyte_pos8_col#0 = (byte) debug_print::print_sbyte_pos8_col#1 
Alias (signed byte) debug_print::print_sbyte_pos8_sb#0 = (signed byte) debug_print::print_sbyte_pos8_sb#1 
Alias (byte*) print_sbyte_at::at#10 = (byte*~) debug_print::print_sbyte_pos8_$2#0 
Alias (byte) debug_print::print_sbyte_pos9_row#0 = (byte) debug_print::print_sbyte_pos9_row#1 
Alias (byte) debug_print::print_sbyte_pos9_col#0 = (byte) debug_print::print_sbyte_pos9_col#1 
Alias (signed byte) debug_print::print_sbyte_pos9_sb#0 = (signed byte) debug_print::print_sbyte_pos9_sb#1 
Alias (byte*) print_sbyte_at::at#11 = (byte*~) debug_print::print_sbyte_pos9_$2#0 
Alias (byte) debug_print::print_sbyte_pos10_row#0 = (byte) debug_print::print_sbyte_pos10_row#1 
Alias (byte) debug_print::print_sbyte_pos10_col#0 = (byte) debug_print::print_sbyte_pos10_col#1 
Alias (signed byte) debug_print::print_sbyte_pos10_sb#0 = (signed byte) debug_print::print_sbyte_pos10_sb#1 
Alias (byte*) print_sbyte_at::at#12 = (byte*~) debug_print::print_sbyte_pos10_$2#0 
Alias (byte) debug_print::print_sbyte_pos11_row#0 = (byte) debug_print::print_sbyte_pos11_row#1 
Alias (byte) debug_print::print_sbyte_pos11_col#0 = (byte) debug_print::print_sbyte_pos11_col#1 
Alias (signed byte) debug_print::print_sbyte_pos11_sb#0 = (signed byte) debug_print::print_sbyte_pos11_sb#1 
Alias (byte*) print_sbyte_at::at#13 = (byte*~) debug_print::print_sbyte_pos11_$2#0 
Alias (byte) debug_print::print_sbyte_pos12_row#0 = (byte) debug_print::print_sbyte_pos12_row#1 
Alias (byte) debug_print::print_sbyte_pos12_col#0 = (byte) debug_print::print_sbyte_pos12_col#1 
Alias (signed byte) debug_print::print_sbyte_pos12_sb#0 = (signed byte) debug_print::print_sbyte_pos12_sb#1 
Alias (byte*) print_sbyte_at::at#14 = (byte*~) debug_print::print_sbyte_pos12_$2#0 
Alias (byte*) debug_print::at_line#0 = (byte*~) debug_print::$12 
Alias (byte*) print_sbyte_at::at#15 = (byte*~) debug_print::$14 
Alias (byte*) debug_print::at_line#1 = (byte*) debug_print::at_line#2 (byte*) debug_print::at_line#3 (byte*) debug_print::at_line#4 (byte*) debug_print::at_line#5 (byte*) debug_print::at_line#6 (byte*) debug_print::at_line#7 
Alias (byte) debug_print::c#2 = (byte) debug_print::c#3 (byte) debug_print::c#4 (byte) debug_print::c#5 (byte) debug_print::c#6 (byte) debug_print::c#7 (byte) debug_print::c#8 
Alias (byte) debug_print::i#2 = (byte) debug_print::i#3 (byte) debug_print::i#4 (byte) debug_print::i#5 (byte) debug_print::i#6 (byte) debug_print::i#7 (byte) debug_print::i#8 
Alias (byte*) print_sbyte_at::at#16 = (byte*~) debug_print::$17 
Alias (byte*) print_sbyte_at::at#17 = (byte*~) debug_print::$20 
Alias (byte*) print_sbyte_at::at#18 = (byte*~) debug_print::$23 
Alias (byte*) print_sbyte_at::at#19 = (byte*~) debug_print::$26 
Alias (byte*) print_sbyte_at::at#20 = (byte*~) debug_print::$29 
Alias (byte*) sprites_init::sprites_ptr#0 = (byte*~) sprites_init::$0 
Alias (signed byte) sx#17 = (signed byte) sx#22 (signed byte) sx#2 
Alias (signed byte) sy#18 = (signed byte) sy#24 (signed byte) sy#2 
Alias (signed byte) calculate_matrix::t1#0 = (signed byte~) calculate_matrix::$0 
Alias (signed byte) calculate_matrix::t2#0 = (signed byte~) calculate_matrix::$1 
Alias (signed byte) calculate_matrix::t3#0 = (signed byte~) calculate_matrix::$2 
Alias (signed byte) calculate_matrix::t4#0 = (signed byte~) calculate_matrix::$3 
Alias (signed byte) calculate_matrix::t5#0 = (signed byte~) calculate_matrix::$4 
Alias (signed byte) calculate_matrix::t6#0 = (signed byte~) calculate_matrix::$5 
Alias (signed byte) calculate_matrix::t7#0 = (signed byte~) calculate_matrix::$6 
Alias (signed byte) calculate_matrix::t8#0 = (signed byte~) calculate_matrix::$7 
Alias (signed byte) calculate_matrix::t9#0 = (signed byte~) calculate_matrix::$8 
Alias (signed byte) calculate_matrix::t10#0 = (signed byte~) calculate_matrix::$9 
Alias (signed byte*) COSH#0 = (signed byte*~) $0 
Alias (signed byte*) COSQ#0 = (signed byte*~) $1 
Alias (signed byte) sx#12 = (signed byte) sx#5 
Alias (signed byte) sy#12 = (signed byte) sy#5 
Successful SSA optimization Pass2AliasElimination
Alias (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#23 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (word) memset::num#1 (word) memset::num#0
Identical Phi Values (void*) memset::str#2 (void*) memset::str#0
Identical Phi Values (byte) memset::c#3 (byte) memset::c#0
Identical Phi Values (byte*) memset::end#1 (byte*) memset::end#0
Identical Phi Values (void*) memset::str#4 (void*) memset::str#2
Identical Phi Values (byte) memset::c#1 (byte) memset::c#3
Identical Phi Values (byte) print_byte_at::b#1 (byte) print_byte_at::b#0
Identical Phi Values (byte*) print_byte_at::at#1 (byte*) print_byte_at::at#0
Identical Phi Values (byte*) print_screen#1 (byte*) print_screen#14
Identical Phi Values (signed byte) sx#13 (signed byte) sx#17
Identical Phi Values (signed byte) sy#13 (signed byte) sy#18
Identical Phi Values (byte*) print_screen#27 (byte*) print_screen#0
Identical Phi Values (signed byte*) COSH#11 (signed byte*) COSH#0
Identical Phi Values (signed byte*) COSQ#11 (signed byte*) COSQ#0
Identical Phi Values (signed byte) sx#0 (signed byte) sx#10
Identical Phi Values (signed byte) sy#0 (signed byte) sy#10
Identical Phi Values (signed byte) sx#19 (signed byte) sx#13
Identical Phi Values (signed byte) sy#20 (signed byte) sy#13
Identical Phi Values (signed byte*) COSH#7 (signed byte*) COSH#11
Identical Phi Values (signed byte*) COSQ#7 (signed byte*) COSQ#11
Identical Phi Values (byte*) print_screen#55 (byte*) print_screen#27
Identical Phi Values (signed byte) sx#24 (signed byte) sx#10
Identical Phi Values (signed byte) sy#26 (signed byte) sy#10
Identical Phi Values (signed byte*) COSH#5 (signed byte*) COSH#6
Identical Phi Values (signed byte*) COSQ#5 (signed byte*) COSQ#6
Identical Phi Values (byte*) print_screen#53 (byte*) print_screen#54
Identical Phi Values (signed byte) sx#20 (signed byte) sx#24
Identical Phi Values (signed byte) sy#21 (signed byte) sy#26
Identical Phi Values (signed byte*) COSH#4 (signed byte*) COSH#5
Identical Phi Values (signed byte*) COSQ#4 (signed byte*) COSQ#5
Identical Phi Values (byte*) print_screen#52 (byte*) print_screen#53
Identical Phi Values (signed byte) sx#14 (signed byte) sx#20
Identical Phi Values (signed byte) sy#14 (signed byte) sy#21
Identical Phi Values (signed byte*) COSH#15 (signed byte*) COSH#4
Identical Phi Values (signed byte*) COSQ#15 (signed byte*) COSQ#4
Identical Phi Values (byte*) print_screen#44 (byte*) print_screen#52
Identical Phi Values (signed byte) sx#15 (signed byte) sx#14
Identical Phi Values (signed byte) sy#15 (signed byte) sy#14
Identical Phi Values (byte*) print_screen#28 (byte*) print_screen#44
Identical Phi Values (signed byte*) COSH#10 (signed byte*) COSH#15
Identical Phi Values (signed byte*) COSQ#10 (signed byte*) COSQ#15
Identical Phi Values (byte*) print_screen#14 (byte*) print_screen#27
Identical Phi Values (byte) debug_print_init::i#5 (byte) debug_print_init::i#2
Identical Phi Values (byte*) debug_print_init::at_cols#1 (byte*) debug_print_init::at_cols#2
Identical Phi Values (byte) debug_print_init::c#5 (byte) debug_print_init::c#2
Identical Phi Values (byte*) debug_print_init::at_line#4 (byte*) debug_print_init::at_line#1
Identical Phi Values (signed byte) sx#11 (signed byte) sx#15
Identical Phi Values (byte*) print_screen#10 (byte*) print_screen#28
Identical Phi Values (signed byte) sy#11 (signed byte) sy#15
Identical Phi Values (byte*) debug_print::at_line#1 (byte*) debug_print::at_line#0
Identical Phi Values (byte*) sprites_init::sprites_ptr#1 (byte*) sprites_init::sprites_ptr#0
Identical Phi Values (signed byte) calculate_matrix::sy#1 (signed byte) calculate_matrix::sy#0
Identical Phi Values (signed byte) calculate_matrix::sz#1 (signed byte) calculate_matrix::sz#0
Identical Phi Values (signed byte) calculate_matrix::sx#1 (signed byte) calculate_matrix::sx#0
Identical Phi Values (signed byte*) COSH#1 (signed byte*) COSH#15
Identical Phi Values (signed byte*) COSQ#1 (signed byte*) COSQ#15
Identical Phi Values (signed byte) rotate_matrix::x#1 (signed byte) rotate_matrix::x#0
Identical Phi Values (signed byte) rotate_matrix::y#1 (signed byte) rotate_matrix::y#0
Identical Phi Values (signed byte) rotate_matrix::z#1 (signed byte) rotate_matrix::z#0
Identical Phi Values (signed byte) sx#12 (signed byte) sx#0
Identical Phi Values (signed byte) sy#12 (signed byte) sy#0
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values (void*) memset::return#0 (void*) memset::str#0
Identical Phi Values (signed byte*) COSH#6 (signed byte*) COSH#0
Identical Phi Values (signed byte*) COSQ#6 (signed byte*) COSQ#0
Identical Phi Values (byte*) print_screen#54 (byte*) print_screen#0
Identical Phi Values (byte*) debug_print_init::at_line#1 (byte*) debug_print_init::at_line#0
Identical Phi Values (byte*) debug_print_init::at_cols#2 (byte*) debug_print_init::at_cols#0
Successful SSA optimization Pass2IdenticalPhiElimination
Simple Condition (bool~) memset::$1 [12] if((word) memset::num#0<=(byte) 0) goto memset::@1
Simple Condition (bool~) memset::$4 [22] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5
Simple Condition (bool~) print_str_at::$0 [33] if((byte) 0!=*((byte*) print_str_at::str#13)) goto print_str_at::@2
Simple Condition (bool~) print_sbyte_at::$0 [41] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1
Simple Condition (bool~) anim::$0 [131] if(*((byte*) RASTER#0)!=(byte) $ff) goto anim::@4
Simple Condition (bool~) anim::$1 [134] if(*((byte*) RASTER#0)!=(byte) $fe) goto anim::@10
Simple Condition (bool~) anim::$2 [137] if(*((byte*) RASTER#0)!=(byte) $fd) goto anim::@16
Simple Condition (bool~) anim::$11 [171] if((byte) anim::i#1!=rangelast(0,7)) goto anim::@22
Simple Condition (bool~) debug_print_init::$67 [304] if((byte) debug_print_init::j#1!=rangelast(0,3)) goto debug_print_init::@2
Simple Condition (bool~) debug_print_init::$68 [309] if((byte) debug_print_init::i#1!=rangelast(0,7)) goto debug_print_init::@1
Simple Condition (bool~) debug_print::$31 [498] if((byte) debug_print::i#1!=rangelast(0,7)) goto debug_print::@1
Simple Condition (bool~) sprites_init::$3 [512] if((byte) sprites_init::i#1!=rangelast(0,7)) goto sprites_init::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant right-side identified [117] (signed byte[8]) xrs#0 ← { fill( 8, 0) }
Constant right-side identified [118] (signed byte[8]) yrs#0 ← { fill( 8, 0) }
Constant right-side identified [119] (signed byte[8]) zrs#0 ← { fill( 8, 0) }
Constant right-side identified [120] (signed byte[8]) pps#0 ← { fill( 8, 0) }
Constant right-side identified [121] (signed byte[8]) xps#0 ← { fill( 8, 0) }
Constant right-side identified [122] (signed byte[8]) yps#0 ← { fill( 8, 0) }
Constant right-side identified [515] (signed byte[9]) rotation_matrix#0 ← { fill( 9, 0) }
Successful SSA optimization Pass2ConstantRValueConsolidation
Identified constant from value list (signed byte[8]) { (signed byte) -$34, (signed byte) -$34, (signed byte) -$34, (signed byte) 0, (signed byte) 0, (signed byte) $34, (signed byte) $34, (signed byte) $34 }
Identified constant from value list (signed byte[8]) { (signed byte) -$34, (signed byte) 0, (signed byte) $34, (signed byte) -$34, (signed byte) $34, (signed byte) -$34, (signed byte) 0, (signed byte) $34 }
Identified constant from value list (signed byte[8]) { (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34 }
Successful SSA optimization Pass2ConstantInitializerValueLists
Constant (const byte*) SPRITES_XPOS#0 = (byte*) 53248
Constant (const byte*) SPRITES_YPOS#0 = (byte*) 53249
Constant (const byte*) RASTER#0 = (byte*) 53266
Constant (const byte*) SPRITES_ENABLE#0 = (byte*) 53269
Constant (const byte*) BORDERCOL#0 = (byte*) 53280
Constant (const byte*) SPRITES_COLS#0 = (byte*) 53287
Constant (const byte) GREEN#0 = 5
Constant (const byte) LIGHT_BLUE#0 = $e
Constant (const byte) LIGHT_GREY#0 = $f
Constant (const byte*) print_screen#0 = (byte*) 1024
Constant (const byte) print_char_at::ch#0 = '-'
Constant (const byte) print_char_at::ch#1 = ' '
Constant (const byte[]) print_hextab#0 = $6
Constant (const byte) memset::c#0 = ' '
Constant (const word) memset::num#0 = $3e8
Constant (const signed byte*) xr#0 = (signed byte*) 240
Constant (const signed byte*) yr#0 = (signed byte*) 241
Constant (const signed byte*) zr#0 = (signed byte*) 242
Constant (const signed byte*) pp#0 = (signed byte*) 243
Constant (const signed byte*) xp#0 = (signed byte*) 244
Constant (const signed byte*) yp#0 = (signed byte*) 245
Constant (const word*) psp1#0 = (word*) 246
Constant (const word*) psp2#0 = (word*) 248
Constant (const byte*) SCREEN#0 = (byte*) 1024
Constant (const signed byte[8]) xs#0 = { -$34, -$34, -$34, 0, 0, $34, $34, $34 }
Constant (const signed byte[8]) ys#0 = { -$34, 0, $34, -$34, $34, -$34, 0, $34 }
Constant (const signed byte[8]) zs#0 = { $34, $34, $34, $34, $34, $34, $34, $34 }
Constant (const signed byte[8]) xrs#0 = { fill( 8, 0) }
Constant (const signed byte[8]) yrs#0 = { fill( 8, 0) }
Constant (const signed byte[8]) zrs#0 = { fill( 8, 0) }
Constant (const signed byte[8]) pps#0 = { fill( 8, 0) }
Constant (const signed byte[8]) xps#0 = { fill( 8, 0) }
Constant (const signed byte[8]) yps#0 = { fill( 8, 0) }
Constant (const signed byte) sx#17 = 0
Constant (const signed byte) sy#18 = 0
Constant (const signed byte) sz#0 = 0
Constant (const byte) anim::i#0 = 0
Constant (const byte*) print_str_at::str#1 = debug_print_init::str
Constant (const byte*) print_str_at::str#2 = debug_print_init::str1
Constant (const byte*) print_str_at::str#3 = debug_print_init::str2
Constant (const byte*) print_str_at::str#4 = debug_print_init::str3
Constant (const byte*) print_str_at::str#5 = debug_print_init::str4
Constant (const byte*) print_str_at::str#6 = debug_print_init::str5
Constant (const byte*) print_str_at::str#7 = debug_print_init::str6
Constant (const byte*) print_str_at::str#8 = debug_print_init::str7
Constant (const byte*) print_str_at::str#9 = debug_print_init::str8
Constant (const byte*) print_str_at::str#10 = debug_print_init::str9
Constant (const byte*) print_str_at::str#11 = debug_print_init::str10
Constant (const byte*) print_str_at::str#12 = debug_print_init::str11
Constant (const byte) debug_print_init::c#0 = 4
Constant (const byte*) debug_print_init::COLS#0 = (byte*) 55296
Constant (const byte) debug_print_init::i#0 = 0
Constant (const byte) debug_print_init::j#0 = 0
Constant (const byte) debug_print::print_sbyte_pos1_row#0 = 0
Constant (const byte) debug_print::print_sbyte_pos1_col#0 = $25
Constant (const byte) debug_print::print_sbyte_pos2_row#0 = 1
Constant (const byte) debug_print::print_sbyte_pos2_col#0 = $25
Constant (const byte) debug_print::print_sbyte_pos3_row#0 = 2
Constant (const byte) debug_print::print_sbyte_pos3_col#0 = $25
Constant (const byte) debug_print::print_sbyte_pos4_row#0 = 4
Constant (const byte) debug_print::print_sbyte_pos4_col#0 = $1d
Constant (const byte) debug_print::print_sbyte_pos5_row#0 = 4
Constant (const byte) debug_print::print_sbyte_pos5_col#0 = $21
Constant (const byte) debug_print::print_sbyte_pos6_row#0 = 4
Constant (const byte) debug_print::print_sbyte_pos6_col#0 = $25
Constant (const byte) debug_print::print_sbyte_pos7_row#0 = 5
Constant (const byte) debug_print::print_sbyte_pos7_col#0 = $1d
Constant (const byte) debug_print::print_sbyte_pos8_row#0 = 5
Constant (const byte) debug_print::print_sbyte_pos8_col#0 = $21
Constant (const byte) debug_print::print_sbyte_pos9_row#0 = 5
Constant (const byte) debug_print::print_sbyte_pos9_col#0 = $25
Constant (const byte) debug_print::print_sbyte_pos10_row#0 = 6
Constant (const byte) debug_print::print_sbyte_pos10_col#0 = $1d
Constant (const byte) debug_print::print_sbyte_pos11_row#0 = 6
Constant (const byte) debug_print::print_sbyte_pos11_col#0 = $21
Constant (const byte) debug_print::print_sbyte_pos12_row#0 = 6
Constant (const byte) debug_print::print_sbyte_pos12_col#0 = $25
Constant (const byte) debug_print::c#0 = 4
Constant (const byte) debug_print::i#0 = 0
Constant (const byte*) sprites_init::SCREEN#0 = (byte*) 1024
Constant (const byte) sprites_init::i#0 = 0
Constant (const signed byte[9]) rotation_matrix#0 = { fill( 9, 0) }
Constant (const byte[$200]) mulf_sqr1#0 = kickasm {{ .for(var i=0;i<$200;i++) {
    	.if(i<=159) { .byte round((i*i)/256) }
    	.if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) }
    	.if(i>351) { .byte round(((512-i)*(512-i))/256) }
    }
 }}
Constant (const byte[$200]) mulf_sqr2#0 = kickasm {{ .for(var i=0;i<$200;i++) {
    	.if(i<=159) { .byte round((-i-1)*(-i-1)/256) }
    	.if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) }
    	.if(i>351) { .byte round(((i-511)*(i-511))/256) }  
    }
 }}
Constant (const byte*) SPRITE#0 = (byte*) 12288
Constant (const signed byte[$100]) PERSP_Z#0 = kickasm {{ {
    .var d = 256.0	
    .var z0 = 6.0	
    // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f)
    .for(var z=0;z<$100;z++) {
    	.if(z>127) {
    		.byte round(d / (z0 - ((z - 256) / 64.0)));
    	} else {
    		.byte round(d / (z0 - (z / 64.0)));
    	}
    }
	}
 }}
Constant (const signed byte[$140]) SINH#0 = kickasm {{ {
    .var min = -$2000
    .var max = $2000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256)
    }
    }
 }}
Constant (const signed byte[$140]) SINQ#0 = kickasm {{ {
    .var min = -$1000
    .var max = $1000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256)
    }
    }
 }}
Successful SSA optimization Pass2ConstantIdentification
Constant (const signed byte) calculate_matrix::sz#0 = sz#0
Constant (const signed byte) debug_print::print_sbyte_pos3_sb#0 = sz#0
Successful SSA optimization Pass2ConstantIdentification
Constant (const signed byte) print_sbyte_at::b#6 = debug_print::print_sbyte_pos3_sb#0
Successful SSA optimization Pass2ConstantIdentification
Constant value identified (void*)print_screen#0 in [79] (void*) memset::str#0 ← (void*)(const byte*) print_screen#0
Constant value identified (word)mulf_sqr1#0 in [99] (word~) main::$1 ← (word)(const byte[$200]) mulf_sqr1#0
Constant value identified (word)mulf_sqr2#0 in [101] (word~) main::$2 ← (word)(const byte[$200]) mulf_sqr2#0
Successful SSA optimization Pass2ConstantValues
if() condition always false - eliminating [12] if((const word) memset::num#0<=(byte) 0) goto memset::@1
if() condition always true - replacing block destination [128] if(true) goto anim::@4
Successful SSA optimization Pass2ConstantIfs
Resolved ranged next value [169] anim::i#1 ← ++ anim::i#2 to ++
Resolved ranged comparison value [171] if(anim::i#1!=rangelast(0,7)) goto anim::@22 to (number) 8
Resolved ranged next value [302] debug_print_init::j#1 ← ++ debug_print_init::j#2 to ++
Resolved ranged comparison value [304] if(debug_print_init::j#1!=rangelast(0,3)) goto debug_print_init::@2 to (number) 4
Resolved ranged next value [307] debug_print_init::i#1 ← ++ debug_print_init::i#2 to ++
Resolved ranged comparison value [309] if(debug_print_init::i#1!=rangelast(0,7)) goto debug_print_init::@1 to (number) 8
Resolved ranged next value [496] debug_print::i#1 ← ++ debug_print::i#2 to ++
Resolved ranged comparison value [498] if(debug_print::i#1!=rangelast(0,7)) goto debug_print::@1 to (number) 8
Resolved ranged next value [510] sprites_init::i#1 ← ++ sprites_init::i#2 to ++
Resolved ranged comparison value [512] if(sprites_init::i#1!=rangelast(0,7)) goto sprites_init::@1 to (number) 8
Converting *(pointer+n) to pointer[n] [269] *((byte*~) debug_print_init::$42) ← (byte) debug_print_init::col#0  -- *(debug_print_init::$41 + debug_print_init::j#2)
Converting *(pointer+n) to pointer[n] [273] *((byte*~) debug_print_init::$45) ← (byte) debug_print_init::col#0  -- *(debug_print_init::$44 + debug_print_init::j#2)
Converting *(pointer+n) to pointer[n] [277] *((byte*~) debug_print_init::$48) ← (byte) debug_print_init::col#0  -- *(debug_print_init::$47 + debug_print_init::j#2)
Converting *(pointer+n) to pointer[n] [281] *((byte*~) debug_print_init::$51) ← (byte) debug_print_init::col#0  -- *(debug_print_init::$50 + debug_print_init::j#2)
Converting *(pointer+n) to pointer[n] [285] *((byte*~) debug_print_init::$54) ← (byte) debug_print_init::col#0  -- *(debug_print_init::$53 + debug_print_init::j#2)
Converting *(pointer+n) to pointer[n] [289] *((byte*~) debug_print_init::$57) ← (byte) debug_print_init::col#0  -- *(debug_print_init::$56 + debug_print_init::j#2)
Converting *(pointer+n) to pointer[n] [293] *((byte*~) debug_print_init::$60) ← (byte) debug_print_init::col#0  -- *(debug_print_init::$59 + debug_print_init::j#2)
Converting *(pointer+n) to pointer[n] [297] *((byte*~) debug_print_init::$63) ← (byte) debug_print_init::col#0  -- *(debug_print_init::$62 + debug_print_init::j#2)
Converting *(pointer+n) to pointer[n] [301] *((byte*~) debug_print_init::$66) ← (byte) debug_print_init::col#0  -- *(debug_print_init::$65 + debug_print_init::j#2)
Successful SSA optimization Pass2InlineDerefIdx
Simplifying constant evaluating to zero (byte)(number) $28*(number) 0 in [185] (byte*~) debug_print_init::$1 ← (const byte*) SCREEN#0 + (byte)(number) $28*(number) 0
Simplifying constant evaluating to zero (byte)(number) $28*(number) 0 in [244] (byte*~) debug_print_init::$30 ← (byte*) debug_print_init::at_line#0 + (byte)(number) $28*(number) 0
Simplifying constant evaluating to zero (byte)(number) $28*(number) 0 in [266] (byte*~) debug_print_init::$40 ← (byte*) debug_print_init::at_cols#0 + (byte)(number) $28*(number) 0
Simplifying constant evaluating to zero (byte)(number) $28*(number) 0 in [459] (byte*~) debug_print::$13 ← (byte*) debug_print::at_line#0 + (byte)(number) $28*(number) 0
Successful SSA optimization PassNSimplifyConstantZero
Simplifying expression containing zero SCREEN#0 in [185] (byte*~) debug_print_init::$1 ← (const byte*) SCREEN#0 + (byte) 0
Simplifying expression containing zero debug_print_init::at_line#0 in [244] (byte*~) debug_print_init::$30 ← (byte*) debug_print_init::at_line#0 + (byte) 0
Simplifying expression containing zero debug_print_init::at_cols#0 in [266] (byte*~) debug_print_init::$40 ← (byte*) debug_print_init::at_cols#0 + (byte) 0
Simplifying expression containing zero rotation_matrix#0 in [348] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0 + (byte) 0)
Simplifying expression containing zero debug_print::at_line#0 in [459] (byte*~) debug_print::$13 ← (byte*) debug_print::at_line#0 + (byte) 0
Simplifying expression containing zero calculate_matrix::sy#0 in [517] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 - (const signed byte) calculate_matrix::sz#0
Simplifying expression containing zero calculate_matrix::sy#0 in [519] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 + (const signed byte) calculate_matrix::sz#0
Simplifying expression containing zero calculate_matrix::sx#0 in [521] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 + (const signed byte) calculate_matrix::sz#0
Simplifying expression containing zero calculate_matrix::sx#0 in [523] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 - (const signed byte) calculate_matrix::sz#0
Simplifying expression containing zero rotation_matrix#0 in [538] *((const signed byte[9]) rotation_matrix#0 + (byte) 0) ← (signed byte~) calculate_matrix::$10
Successful SSA optimization PassNSimplifyExpressionWithZero
Eliminating unused variable (void*) memset::return#2 and assignment [41] (void*) memset::return#2 ← (void*) memset::str#0
Eliminating unused variable (byte*~) debug_print_init::$42 and assignment [135] (byte*~) debug_print_init::$42 ← (byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2
Eliminating unused variable (byte*~) debug_print_init::$45 and assignment [139] (byte*~) debug_print_init::$45 ← (byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2
Eliminating unused variable (byte*~) debug_print_init::$48 and assignment [143] (byte*~) debug_print_init::$48 ← (byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2
Eliminating unused variable (byte*~) debug_print_init::$51 and assignment [147] (byte*~) debug_print_init::$51 ← (byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2
Eliminating unused variable (byte*~) debug_print_init::$54 and assignment [151] (byte*~) debug_print_init::$54 ← (byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2
Eliminating unused variable (byte*~) debug_print_init::$57 and assignment [155] (byte*~) debug_print_init::$57 ← (byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2
Eliminating unused variable (byte*~) debug_print_init::$60 and assignment [159] (byte*~) debug_print_init::$60 ← (byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2
Eliminating unused variable (byte*~) debug_print_init::$63 and assignment [163] (byte*~) debug_print_init::$63 ← (byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2
Eliminating unused variable (byte*~) debug_print_init::$66 and assignment [167] (byte*~) debug_print_init::$66 ← (byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2
Eliminating unused constant (const signed byte) calculate_matrix::sz#0
Successful SSA optimization PassNEliminateUnusedVars
Removing unused block anim::@return
Successful SSA optimization Pass2EliminateUnusedBlocks
Adding number conversion cast (unumber) 8 in if((byte) anim::i#1!=(number) 8) goto anim::@22
Adding number conversion cast (unumber) 4 in if((byte) debug_print_init::j#1!=(number) 4) goto debug_print_init::@2
Adding number conversion cast (unumber) 8 in if((byte) debug_print_init::i#1!=(number) 8) goto debug_print_init::@1
Adding number conversion cast (unumber) 8 in if((byte) debug_print::i#1!=(number) 8) goto debug_print::@1
Adding number conversion cast (unumber) 8 in if((byte) sprites_init::i#1!=(number) 8) goto sprites_init::@1
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast 8
Simplifying constant integer cast 4
Simplifying constant integer cast 8
Simplifying constant integer cast 8
Simplifying constant integer cast 8
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 8
Successful SSA optimization PassNFinalizeNumberTypeConversions
Alias (byte*) debug_print_init::at_line#0 = (byte*~) debug_print_init::$30 
Alias (byte*) debug_print_init::at_cols#0 = (byte*~) debug_print_init::$40 
Alias (byte*) debug_print::at_line#0 = (byte*~) debug_print::$13 
Successful SSA optimization Pass2AliasElimination
Constant right-side identified [90] (byte*~) debug_print_init::$4 ← (const byte*) SCREEN#0 + (byte)(number) $28*(number) 1
Constant right-side identified [93] (byte*~) debug_print_init::$7 ← (const byte*) SCREEN#0 + (byte)(number) $28*(number) 2
Constant right-side identified [96] (byte*) print_str_at::at#4 ← (const byte*) SCREEN#0 + (word)(number) $28*(number) $10
Constant right-side identified [98] (byte*) print_str_at::at#5 ← (const byte*) SCREEN#0 + (word)(number) $28*(number) $11
Constant right-side identified [100] (byte*) print_str_at::at#6 ← (const byte*) SCREEN#0 + (word)(number) $28*(number) $12
Constant right-side identified [102] (byte*) print_str_at::at#7 ← (const byte*) SCREEN#0 + (word)(number) $28*(number) $13
Constant right-side identified [104] (byte*) print_str_at::at#8 ← (const byte*) SCREEN#0 + (word)(number) $28*(number) $14
Constant right-side identified [106] (byte*) print_str_at::at#9 ← (const byte*) SCREEN#0 + (word)(number) $28*(number) $15
Constant right-side identified [108] (byte*) print_str_at::at#10 ← (const byte*) SCREEN#0 + (word)(number) $28*(number) $16
Constant right-side identified [110] (byte*) print_str_at::at#11 ← (const byte*) SCREEN#0 + (word)(number) $28*(number) $17
Constant right-side identified [112] (byte*) print_str_at::at#12 ← (const byte*) SCREEN#0 + (word)(number) $28*(number) $18
Constant right-side identified [114] (byte*) debug_print_init::at_line#0 ← (const byte*) SCREEN#0 + (word)(number) $10*(number) $28
Constant right-side identified [115] (byte*) debug_print_init::at_cols#0 ← (const byte*) debug_print_init::COLS#0 + (word)(number) $10*(number) $28
Constant right-side identified [165] (byte~) debug_print::print_sbyte_pos1_$0#0 ← (const byte) debug_print::print_sbyte_pos1_row#0 * (byte) $28
Constant right-side identified [171] (byte~) debug_print::print_sbyte_pos2_$0#0 ← (const byte) debug_print::print_sbyte_pos2_row#0 * (byte) $28
Constant right-side identified [176] (byte~) debug_print::print_sbyte_pos3_$0#0 ← (const byte) debug_print::print_sbyte_pos3_row#0 * (byte) $28
Constant right-side identified [181] (byte~) debug_print::print_sbyte_pos4_$0#0 ← (const byte) debug_print::print_sbyte_pos4_row#0 * (byte) $28
Constant right-side identified [187] (byte~) debug_print::print_sbyte_pos5_$0#0 ← (const byte) debug_print::print_sbyte_pos5_row#0 * (byte) $28
Constant right-side identified [193] (byte~) debug_print::print_sbyte_pos6_$0#0 ← (const byte) debug_print::print_sbyte_pos6_row#0 * (byte) $28
Constant right-side identified [199] (byte~) debug_print::print_sbyte_pos7_$0#0 ← (const byte) debug_print::print_sbyte_pos7_row#0 * (byte) $28
Constant right-side identified [205] (byte~) debug_print::print_sbyte_pos8_$0#0 ← (const byte) debug_print::print_sbyte_pos8_row#0 * (byte) $28
Constant right-side identified [211] (byte~) debug_print::print_sbyte_pos9_$0#0 ← (const byte) debug_print::print_sbyte_pos9_row#0 * (byte) $28
Constant right-side identified [217] (byte~) debug_print::print_sbyte_pos10_$0#0 ← (const byte) debug_print::print_sbyte_pos10_row#0 * (byte) $28
Constant right-side identified [223] (byte~) debug_print::print_sbyte_pos11_$0#0 ← (const byte) debug_print::print_sbyte_pos11_row#0 * (byte) $28
Constant right-side identified [229] (byte~) debug_print::print_sbyte_pos12_$0#0 ← (const byte) debug_print::print_sbyte_pos12_row#0 * (byte) $28
Constant right-side identified [234] (byte*) debug_print::at_line#0 ← (const byte*) SCREEN#0 + (word)(number) $13*(number) $28
Constant right-side identified [265] (byte*) sprites_init::sprites_ptr#0 ← (const byte*) sprites_init::SCREEN#0 + (word) $3f8
Constant right-side identified [267] (byte*~) sprites_init::$1 ← (const byte*) SPRITE#0 / (byte) $40
Constant right-side identified [327] (signed byte*) COSH#0 ← (const signed byte[$140]) SINH#0 + (byte) $40
Constant right-side identified [328] (signed byte*) COSQ#0 ← (const signed byte[$140]) SINQ#0 + (byte) $40
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const void*) memset::str#0 = (void*)print_screen#0
Constant (const word) main::$1 = (word)mulf_sqr1#0
Constant (const word) main::$2 = (word)mulf_sqr2#0
Constant (const byte*) debug_print_init::$1 = SCREEN#0
Constant (const byte*) debug_print_init::$4 = SCREEN#0+(byte)$28*1
Constant (const byte*) debug_print_init::$7 = SCREEN#0+(byte)$28*2
Constant (const byte*) print_str_at::at#4 = SCREEN#0+(word)$28*$10
Constant (const byte*) print_str_at::at#5 = SCREEN#0+(word)$28*$11
Constant (const byte*) print_str_at::at#6 = SCREEN#0+(word)$28*$12
Constant (const byte*) print_str_at::at#7 = SCREEN#0+(word)$28*$13
Constant (const byte*) print_str_at::at#8 = SCREEN#0+(word)$28*$14
Constant (const byte*) print_str_at::at#9 = SCREEN#0+(word)$28*$15
Constant (const byte*) print_str_at::at#10 = SCREEN#0+(word)$28*$16
Constant (const byte*) print_str_at::at#11 = SCREEN#0+(word)$28*$17
Constant (const byte*) print_str_at::at#12 = SCREEN#0+(word)$28*$18
Constant (const byte*) debug_print_init::at_line#0 = SCREEN#0+(word)$10*$28
Constant (const byte*) debug_print_init::at_cols#0 = debug_print_init::COLS#0+(word)$10*$28
Constant (const byte) debug_print::print_sbyte_pos1_$0#0 = debug_print::print_sbyte_pos1_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos2_$0#0 = debug_print::print_sbyte_pos2_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos3_$0#0 = debug_print::print_sbyte_pos3_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos4_$0#0 = debug_print::print_sbyte_pos4_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos5_$0#0 = debug_print::print_sbyte_pos5_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos6_$0#0 = debug_print::print_sbyte_pos6_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos7_$0#0 = debug_print::print_sbyte_pos7_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos8_$0#0 = debug_print::print_sbyte_pos8_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos9_$0#0 = debug_print::print_sbyte_pos9_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos10_$0#0 = debug_print::print_sbyte_pos10_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos11_$0#0 = debug_print::print_sbyte_pos11_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos12_$0#0 = debug_print::print_sbyte_pos12_row#0*$28
Constant (const byte*) debug_print::at_line#0 = SCREEN#0+(word)$13*$28
Constant (const byte*) sprites_init::sprites_ptr#0 = sprites_init::SCREEN#0+$3f8
Constant (const byte*) sprites_init::$1 = SPRITE#0/$40
Constant (const signed byte*) COSH#0 = SINH#0+$40
Constant (const signed byte*) COSQ#0 = SINQ#0+$40
Successful SSA optimization Pass2ConstantIdentification
Constant value identified (byte*)memset::str#0 in [0] (byte*~) memset::$2 ← (byte*)(const void*) memset::str#0
Constant value identified (byte*)memset::str#0 in [2] (byte*) memset::dst#0 ← (byte*)(const void*) memset::str#0
Constant value identified (byte)sprites_init::$1 in [268] (byte~) sprites_init::$2 ← (byte)(const byte*) sprites_init::$1
Successful SSA optimization Pass2ConstantValues
Simplifying constant evaluating to zero (const byte) debug_print::print_sbyte_pos1_row#0*(byte) $28 in 
Successful SSA optimization PassNSimplifyConstantZero
Simplifying expression containing zero print_screen#0 in [166] (byte*~) debug_print::print_sbyte_pos1_$1#0 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos1_$0#0
Successful SSA optimization PassNSimplifyExpressionWithZero
Eliminating unused constant (const byte) debug_print::print_sbyte_pos1_row#0
Eliminating unused constant (const byte) debug_print::print_sbyte_pos1_$0#0
Successful SSA optimization PassNEliminateUnusedVars
Constant right-side identified [84] (byte*) print_str_at::at#1 ← (const byte*) debug_print_init::$1 + (byte) $22
Constant right-side identified [86] (byte*) print_str_at::at#2 ← (const byte*) debug_print_init::$4 + (byte) $22
Constant right-side identified [88] (byte*) print_str_at::at#3 ← (const byte*) debug_print_init::$7 + (byte) $22
Constant right-side identified [103] (byte*~) debug_print_init::$33 ← (const byte*) debug_print_init::at_line#0 + (byte)(number) $28*(number) 1
Constant right-side identified [107] (byte*~) debug_print_init::$36 ← (const byte*) debug_print_init::at_line#0 + (byte)(number) $28*(number) 2
Constant right-side identified [115] (byte*~) debug_print_init::$43 ← (const byte*) debug_print_init::at_cols#0 + (byte)(number) $28*(number) 1
Constant right-side identified [118] (byte*~) debug_print_init::$46 ← (const byte*) debug_print_init::at_cols#0 + (byte)(number) $28*(number) 2
Constant right-side identified [121] (byte*~) debug_print_init::$49 ← (const byte*) debug_print_init::at_cols#0 + (byte)(number) $28*(number) 3
Constant right-side identified [124] (byte*~) debug_print_init::$52 ← (const byte*) debug_print_init::at_cols#0 + (byte)(number) $28*(number) 4
Constant right-side identified [127] (byte*~) debug_print_init::$55 ← (const byte*) debug_print_init::at_cols#0 + (byte)(number) $28*(number) 5
Constant right-side identified [130] (byte*~) debug_print_init::$58 ← (const byte*) debug_print_init::at_cols#0 + (byte)(number) $28*(number) 6
Constant right-side identified [133] (byte*~) debug_print_init::$61 ← (const byte*) debug_print_init::at_cols#0 + (word)(number) $28*(number) 7
Constant right-side identified [136] (byte*~) debug_print_init::$64 ← (const byte*) debug_print_init::at_cols#0 + (word)(number) $28*(number) 8
Constant right-side identified [151] (byte*~) debug_print::print_sbyte_pos2_$1#0 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos2_$0#0
Constant right-side identified [155] (byte*~) debug_print::print_sbyte_pos3_$1#0 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos3_$0#0
Constant right-side identified [159] (byte*~) debug_print::print_sbyte_pos4_$1#0 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos4_$0#0
Constant right-side identified [164] (byte*~) debug_print::print_sbyte_pos5_$1#0 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos5_$0#0
Constant right-side identified [169] (byte*~) debug_print::print_sbyte_pos6_$1#0 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos6_$0#0
Constant right-side identified [174] (byte*~) debug_print::print_sbyte_pos7_$1#0 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos7_$0#0
Constant right-side identified [179] (byte*~) debug_print::print_sbyte_pos8_$1#0 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos8_$0#0
Constant right-side identified [184] (byte*~) debug_print::print_sbyte_pos9_$1#0 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos9_$0#0
Constant right-side identified [189] (byte*~) debug_print::print_sbyte_pos10_$1#0 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos10_$0#0
Constant right-side identified [194] (byte*~) debug_print::print_sbyte_pos11_$1#0 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos11_$0#0
Constant right-side identified [199] (byte*~) debug_print::print_sbyte_pos12_$1#0 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos12_$0#0
Constant right-side identified [207] (byte*~) debug_print::$16 ← (const byte*) debug_print::at_line#0 + (byte)(number) $28*(number) 1
Constant right-side identified [211] (byte*~) debug_print::$19 ← (const byte*) debug_print::at_line#0 + (byte)(number) $28*(number) 2
Constant right-side identified [215] (byte*~) debug_print::$22 ← (const byte*) debug_print::at_line#0 + (byte)(number) $28*(number) 3
Constant right-side identified [219] (byte*~) debug_print::$25 ← (const byte*) debug_print::at_line#0 + (byte)(number) $28*(number) 4
Constant right-side identified [223] (byte*~) debug_print::$28 ← (const byte*) debug_print::at_line#0 + (byte)(number) $28*(number) 5
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) memset::$2 = (byte*)memset::str#0
Constant (const byte*) memset::dst#0 = (byte*)memset::str#0
Constant (const byte*) print_str_at::at#1 = debug_print_init::$1+$22
Constant (const byte*) print_str_at::at#2 = debug_print_init::$4+$22
Constant (const byte*) print_str_at::at#3 = debug_print_init::$7+$22
Constant (const byte*) debug_print_init::$33 = debug_print_init::at_line#0+(byte)$28*1
Constant (const byte*) debug_print_init::$36 = debug_print_init::at_line#0+(byte)$28*2
Constant (const byte*) debug_print_init::$43 = debug_print_init::at_cols#0+(byte)$28*1
Constant (const byte*) debug_print_init::$46 = debug_print_init::at_cols#0+(byte)$28*2
Constant (const byte*) debug_print_init::$49 = debug_print_init::at_cols#0+(byte)$28*3
Constant (const byte*) debug_print_init::$52 = debug_print_init::at_cols#0+(byte)$28*4
Constant (const byte*) debug_print_init::$55 = debug_print_init::at_cols#0+(byte)$28*5
Constant (const byte*) debug_print_init::$58 = debug_print_init::at_cols#0+(byte)$28*6
Constant (const byte*) debug_print_init::$61 = debug_print_init::at_cols#0+(word)$28*7
Constant (const byte*) debug_print_init::$64 = debug_print_init::at_cols#0+(word)$28*8
Constant (const byte*) debug_print::print_sbyte_pos1_$1#0 = print_screen#0
Constant (const byte*) debug_print::print_sbyte_pos2_$1#0 = print_screen#0+debug_print::print_sbyte_pos2_$0#0
Constant (const byte*) debug_print::print_sbyte_pos3_$1#0 = print_screen#0+debug_print::print_sbyte_pos3_$0#0
Constant (const byte*) debug_print::print_sbyte_pos4_$1#0 = print_screen#0+debug_print::print_sbyte_pos4_$0#0
Constant (const byte*) debug_print::print_sbyte_pos5_$1#0 = print_screen#0+debug_print::print_sbyte_pos5_$0#0
Constant (const byte*) debug_print::print_sbyte_pos6_$1#0 = print_screen#0+debug_print::print_sbyte_pos6_$0#0
Constant (const byte*) debug_print::print_sbyte_pos7_$1#0 = print_screen#0+debug_print::print_sbyte_pos7_$0#0
Constant (const byte*) debug_print::print_sbyte_pos8_$1#0 = print_screen#0+debug_print::print_sbyte_pos8_$0#0
Constant (const byte*) debug_print::print_sbyte_pos9_$1#0 = print_screen#0+debug_print::print_sbyte_pos9_$0#0
Constant (const byte*) debug_print::print_sbyte_pos10_$1#0 = print_screen#0+debug_print::print_sbyte_pos10_$0#0
Constant (const byte*) debug_print::print_sbyte_pos11_$1#0 = print_screen#0+debug_print::print_sbyte_pos11_$0#0
Constant (const byte*) debug_print::print_sbyte_pos12_$1#0 = print_screen#0+debug_print::print_sbyte_pos12_$0#0
Constant (const byte*) debug_print::$16 = debug_print::at_line#0+(byte)$28*1
Constant (const byte*) debug_print::$19 = debug_print::at_line#0+(byte)$28*2
Constant (const byte*) debug_print::$22 = debug_print::at_line#0+(byte)$28*3
Constant (const byte*) debug_print::$25 = debug_print::at_line#0+(byte)$28*4
Constant (const byte*) debug_print::$28 = debug_print::at_line#0+(byte)$28*5
Constant (const byte) sprites_init::$2 = (byte)sprites_init::$1
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [0] (byte*) memset::end#0 ← (const byte*) memset::$2 + (const word) memset::num#0
Constant right-side identified [131] (byte*) print_sbyte_at::at#3 ← (const byte*) debug_print::print_sbyte_pos1_$1#0 + (const byte) debug_print::print_sbyte_pos1_col#0
Constant right-side identified [135] (byte*) print_sbyte_at::at#4 ← (const byte*) debug_print::print_sbyte_pos2_$1#0 + (const byte) debug_print::print_sbyte_pos2_col#0
Constant right-side identified [138] (byte*) print_sbyte_at::at#5 ← (const byte*) debug_print::print_sbyte_pos3_$1#0 + (const byte) debug_print::print_sbyte_pos3_col#0
Constant right-side identified [141] (byte*) print_sbyte_at::at#6 ← (const byte*) debug_print::print_sbyte_pos4_$1#0 + (const byte) debug_print::print_sbyte_pos4_col#0
Constant right-side identified [145] (byte*) print_sbyte_at::at#7 ← (const byte*) debug_print::print_sbyte_pos5_$1#0 + (const byte) debug_print::print_sbyte_pos5_col#0
Constant right-side identified [149] (byte*) print_sbyte_at::at#8 ← (const byte*) debug_print::print_sbyte_pos6_$1#0 + (const byte) debug_print::print_sbyte_pos6_col#0
Constant right-side identified [153] (byte*) print_sbyte_at::at#9 ← (const byte*) debug_print::print_sbyte_pos7_$1#0 + (const byte) debug_print::print_sbyte_pos7_col#0
Constant right-side identified [157] (byte*) print_sbyte_at::at#10 ← (const byte*) debug_print::print_sbyte_pos8_$1#0 + (const byte) debug_print::print_sbyte_pos8_col#0
Constant right-side identified [161] (byte*) print_sbyte_at::at#11 ← (const byte*) debug_print::print_sbyte_pos9_$1#0 + (const byte) debug_print::print_sbyte_pos9_col#0
Constant right-side identified [165] (byte*) print_sbyte_at::at#12 ← (const byte*) debug_print::print_sbyte_pos10_$1#0 + (const byte) debug_print::print_sbyte_pos10_col#0
Constant right-side identified [169] (byte*) print_sbyte_at::at#13 ← (const byte*) debug_print::print_sbyte_pos11_$1#0 + (const byte) debug_print::print_sbyte_pos11_col#0
Constant right-side identified [173] (byte*) print_sbyte_at::at#14 ← (const byte*) debug_print::print_sbyte_pos12_$1#0 + (const byte) debug_print::print_sbyte_pos12_col#0
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) memset::end#0 = memset::$2+memset::num#0
Constant (const byte*) print_sbyte_at::at#3 = debug_print::print_sbyte_pos1_$1#0+debug_print::print_sbyte_pos1_col#0
Constant (const byte*) print_sbyte_at::at#4 = debug_print::print_sbyte_pos2_$1#0+debug_print::print_sbyte_pos2_col#0
Constant (const byte*) print_sbyte_at::at#5 = debug_print::print_sbyte_pos3_$1#0+debug_print::print_sbyte_pos3_col#0
Constant (const byte*) print_sbyte_at::at#6 = debug_print::print_sbyte_pos4_$1#0+debug_print::print_sbyte_pos4_col#0
Constant (const byte*) print_sbyte_at::at#7 = debug_print::print_sbyte_pos5_$1#0+debug_print::print_sbyte_pos5_col#0
Constant (const byte*) print_sbyte_at::at#8 = debug_print::print_sbyte_pos6_$1#0+debug_print::print_sbyte_pos6_col#0
Constant (const byte*) print_sbyte_at::at#9 = debug_print::print_sbyte_pos7_$1#0+debug_print::print_sbyte_pos7_col#0
Constant (const byte*) print_sbyte_at::at#10 = debug_print::print_sbyte_pos8_$1#0+debug_print::print_sbyte_pos8_col#0
Constant (const byte*) print_sbyte_at::at#11 = debug_print::print_sbyte_pos9_$1#0+debug_print::print_sbyte_pos9_col#0
Constant (const byte*) print_sbyte_at::at#12 = debug_print::print_sbyte_pos10_$1#0+debug_print::print_sbyte_pos10_col#0
Constant (const byte*) print_sbyte_at::at#13 = debug_print::print_sbyte_pos11_$1#0+debug_print::print_sbyte_pos11_col#0
Constant (const byte*) print_sbyte_at::at#14 = debug_print::print_sbyte_pos12_$1#0+debug_print::print_sbyte_pos12_col#0
Successful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2LoopHeadConstantIdentification
Alias (byte*) memset::dst#1 = (byte*) memset::dst#2 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte*) memset::dst#5 (const byte*) memset::dst#0
Successful SSA optimization Pass2IdenticalPhiElimination
if() condition always true - replacing block destination [250] if((const byte*) memset::dst#0!=(const byte*) memset::end#0) goto memset::@5
Successful SSA optimization Pass2ConstantIfs
Inlining Noop Cast [67] (byte~) anim::$7 ← (byte)*((const signed byte*) xp#0) keeping *(xp#0)
Inlining Noop Cast [70] (byte~) anim::$9 ← (byte)*((const signed byte*) yp#0) keeping *(yp#0)
Successful SSA optimization Pass2NopCastInlining
Rewriting multiplication to use shift [66] (byte) anim::i2#0 ← (byte) anim::i#2 * (byte) 2
Successful SSA optimization Pass2MultiplyToShiftRewriting
Inlining constant with var siblings (const byte*) memset::dst#0
Inlining constant with var siblings (const byte*) print_str_at::str#1
Inlining constant with var siblings (const byte*) print_str_at::str#2
Inlining constant with var siblings (const byte*) print_str_at::str#3
Inlining constant with var siblings (const byte*) print_str_at::str#4
Inlining constant with var siblings (const byte*) print_str_at::str#5
Inlining constant with var siblings (const byte*) print_str_at::str#6
Inlining constant with var siblings (const byte*) print_str_at::str#7
Inlining constant with var siblings (const byte*) print_str_at::str#8
Inlining constant with var siblings (const byte*) print_str_at::str#9
Inlining constant with var siblings (const byte*) print_str_at::str#10
Inlining constant with var siblings (const byte*) print_str_at::str#11
Inlining constant with var siblings (const byte*) print_str_at::str#12
Inlining constant with var siblings (const byte*) print_str_at::at#4
Inlining constant with var siblings (const byte*) print_str_at::at#5
Inlining constant with var siblings (const byte*) print_str_at::at#6
Inlining constant with var siblings (const byte*) print_str_at::at#7
Inlining constant with var siblings (const byte*) print_str_at::at#8
Inlining constant with var siblings (const byte*) print_str_at::at#9
Inlining constant with var siblings (const byte*) print_str_at::at#10
Inlining constant with var siblings (const byte*) print_str_at::at#11
Inlining constant with var siblings (const byte*) print_str_at::at#12
Inlining constant with var siblings (const byte*) print_str_at::at#1
Inlining constant with var siblings (const byte*) print_str_at::at#2
Inlining constant with var siblings (const byte*) print_str_at::at#3
Inlining constant with var siblings (const signed byte) print_sbyte_at::b#6
Inlining constant with var siblings (const byte*) print_sbyte_at::at#3
Inlining constant with var siblings (const byte*) print_sbyte_at::at#4
Inlining constant with var siblings (const byte*) print_sbyte_at::at#5
Inlining constant with var siblings (const byte*) print_sbyte_at::at#6
Inlining constant with var siblings (const byte*) print_sbyte_at::at#7
Inlining constant with var siblings (const byte*) print_sbyte_at::at#8
Inlining constant with var siblings (const byte*) print_sbyte_at::at#9
Inlining constant with var siblings (const byte*) print_sbyte_at::at#10
Inlining constant with var siblings (const byte*) print_sbyte_at::at#11
Inlining constant with var siblings (const byte*) print_sbyte_at::at#12
Inlining constant with var siblings (const byte*) print_sbyte_at::at#13
Inlining constant with var siblings (const byte*) print_sbyte_at::at#14
Inlining constant with var siblings (const byte) print_char_at::ch#0
Inlining constant with var siblings (const byte) print_char_at::ch#1
Inlining constant with var siblings (const byte) anim::i#0
Inlining constant with var siblings (const byte) debug_print_init::c#0
Inlining constant with var siblings (const byte) debug_print_init::i#0
Inlining constant with var siblings (const byte) debug_print_init::j#0
Inlining constant with var siblings (const byte) debug_print::c#0
Inlining constant with var siblings (const byte) debug_print::i#0
Inlining constant with var siblings (const byte) sprites_init::i#0
Inlining constant with var siblings (const signed byte) sx#17
Inlining constant with var siblings (const signed byte) sy#18
Constant inlined debug_print::print_sbyte_pos7_$0#0 = (const byte) debug_print::print_sbyte_pos7_row#0*(byte) $28
Constant inlined print_str_at::str#12 = (const string) debug_print_init::str11
Constant inlined debug_print::print_sbyte_pos11_$1#0 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte) $28
Constant inlined print_str_at::str#11 = (const string) debug_print_init::str10
Constant inlined debug_print::print_sbyte_pos5_$1#0 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte) $28
Constant inlined print_str_at::str#10 = (const string) debug_print_init::str9
Constant inlined debug_print_init::$36 = (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 2
Constant inlined debug_print::print_sbyte_pos6_$0#0 = (const byte) debug_print::print_sbyte_pos6_row#0*(byte) $28
Constant inlined debug_print_init::$33 = (const byte*) debug_print_init::at_line#0+(byte)(number) $28*(number) 1
Constant inlined debug_print::$19 = (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2
Constant inlined debug_print::$16 = (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1
Constant inlined debug_print::print_sbyte_pos6_$1#0 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte) $28
Constant inlined debug_print::print_sbyte_pos3_$1#0 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte) $28
Constant inlined sprites_init::i#0 = (byte) 0
Constant inlined debug_print::print_sbyte_pos12_$1#0 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte) $28
Constant inlined debug_print_init::j#0 = (byte) 0
Constant inlined print_str_at::str#1 = (const string) debug_print_init::str
Constant inlined print_str_at::str#2 = (const string) debug_print_init::str1
Constant inlined print_str_at::str#3 = (const string) debug_print_init::str2
Constant inlined debug_print::print_sbyte_pos7_$1#0 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte) $28
Constant inlined print_str_at::str#4 = (const string) debug_print_init::str3
Constant inlined debug_print::print_sbyte_pos1_$1#0 = (const byte*) print_screen#0
Constant inlined debug_print::print_sbyte_pos3_sb#0 = (const signed byte) sz#0
Constant inlined print_str_at::at#11 = (const byte*) SCREEN#0+(word)(number) $28*(number) $17
Constant inlined print_str_at::at#10 = (const byte*) SCREEN#0+(word)(number) $28*(number) $16
Constant inlined print_str_at::at#12 = (const byte*) SCREEN#0+(word)(number) $28*(number) $18
Constant inlined debug_print_init::$58 = (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 6
Constant inlined debug_print::print_sbyte_pos11_$0#0 = (const byte) debug_print::print_sbyte_pos11_row#0*(byte) $28
Constant inlined print_char_at::ch#0 = (byte) '-'
Constant inlined print_char_at::ch#1 = (byte) ' '
Constant inlined print_str_at::str#9 = (const string) debug_print_init::str8
Constant inlined debug_print_init::$55 = (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 5
Constant inlined debug_print::print_sbyte_pos9_$0#0 = (const byte) debug_print::print_sbyte_pos9_row#0*(byte) $28
Constant inlined print_str_at::str#5 = (const string) debug_print_init::str4
Constant inlined debug_print_init::$52 = (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 4
Constant inlined print_str_at::str#6 = (const string) debug_print_init::str5
Constant inlined print_str_at::str#7 = (const string) debug_print_init::str6
Constant inlined print_str_at::str#8 = (const string) debug_print_init::str7
Constant inlined debug_print::c#0 = (byte) 4
Constant inlined print_sbyte_at::at#13 = (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
Constant inlined print_sbyte_at::at#12 = (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
Constant inlined print_sbyte_at::at#14 = (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
Constant inlined debug_print::print_sbyte_pos3_$0#0 = (const byte) debug_print::print_sbyte_pos3_row#0*(byte) $28
Constant inlined print_sbyte_at::at#11 = (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
Constant inlined print_sbyte_at::at#10 = (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
Constant inlined print_sbyte_at::at#6 = (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
Constant inlined print_sbyte_at::at#5 = (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
Constant inlined print_sbyte_at::at#4 = (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
Constant inlined print_sbyte_at::at#3 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_col#0
Constant inlined print_sbyte_at::at#9 = (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
Constant inlined print_sbyte_at::at#8 = (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
Constant inlined print_sbyte_at::at#7 = (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
Constant inlined main::$1 = (word)(const byte[$200]) mulf_sqr1#0
Constant inlined debug_print_init::$49 = (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3
Constant inlined main::$2 = (word)(const byte[$200]) mulf_sqr2#0
Constant inlined debug_print_init::$46 = (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 2
Constant inlined debug_print_init::i#0 = (byte) 0
Constant inlined debug_print_init::$43 = (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 1
Constant inlined debug_print::print_sbyte_pos4_$1#0 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte) $28
Constant inlined print_str_at::at#4 = (const byte*) SCREEN#0+(word)(number) $28*(number) $10
Constant inlined print_str_at::at#3 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 2+(byte) $22
Constant inlined print_str_at::at#2 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 1+(byte) $22
Constant inlined print_str_at::at#1 = (const byte*) SCREEN#0+(byte) $22
Constant inlined debug_print_init::$7 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 2
Constant inlined print_str_at::at#9 = (const byte*) SCREEN#0+(word)(number) $28*(number) $15
Constant inlined print_str_at::at#8 = (const byte*) SCREEN#0+(word)(number) $28*(number) $14
Constant inlined print_str_at::at#7 = (const byte*) SCREEN#0+(word)(number) $28*(number) $13
Constant inlined print_str_at::at#6 = (const byte*) SCREEN#0+(word)(number) $28*(number) $12
Constant inlined anim::i#0 = (byte) 0
Constant inlined print_str_at::at#5 = (const byte*) SCREEN#0+(word)(number) $28*(number) $11
Constant inlined sx#17 = (signed byte) 0
Constant inlined $6 = (const byte[]) print_hextab#0
Constant inlined debug_print::print_sbyte_pos2_$0#0 = (const byte) debug_print::print_sbyte_pos2_row#0*(byte) $28
Constant inlined debug_print::print_sbyte_pos9_$1#0 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte) $28
Constant inlined debug_print::print_sbyte_pos10_$0#0 = (const byte) debug_print::print_sbyte_pos10_row#0*(byte) $28
Constant inlined debug_print::print_sbyte_pos8_$1#0 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte) $28
Constant inlined print_sbyte_at::b#6 = (const signed byte) sz#0
Constant inlined debug_print_init::$1 = (const byte*) SCREEN#0
Constant inlined debug_print_init::$4 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 1
Constant inlined sprites_init::$1 = (const byte*) SPRITE#0/(byte) $40
Constant inlined sprites_init::$2 = (byte)(const byte*) SPRITE#0/(byte) $40
Constant inlined memset::dst#0 = (byte*)(const void*) memset::str#0
Constant inlined debug_print_init::$64 = (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 8
Constant inlined debug_print_init::$61 = (const byte*) debug_print_init::at_cols#0+(word)(number) $28*(number) 7
Constant inlined debug_print::print_sbyte_pos4_$0#0 = (const byte) debug_print::print_sbyte_pos4_row#0*(byte) $28
Constant inlined debug_print::$28 = (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5
Constant inlined debug_print::$25 = (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4
Constant inlined debug_print::$22 = (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3
Constant inlined debug_print::print_sbyte_pos2_$1#0 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte) $28
Constant inlined memset::$2 = (byte*)(const void*) memset::str#0
Constant inlined debug_print::print_sbyte_pos5_$0#0 = (const byte) debug_print::print_sbyte_pos5_row#0*(byte) $28
Constant inlined debug_print::print_sbyte_pos10_$1#0 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte) $28
Constant inlined sy#18 = (signed byte) 0
Constant inlined debug_print::print_sbyte_pos8_$0#0 = (const byte) debug_print::print_sbyte_pos8_row#0*(byte) $28
Constant inlined debug_print_init::c#0 = (byte) 4
Constant inlined debug_print::print_sbyte_pos12_$0#0 = (const byte) debug_print::print_sbyte_pos12_row#0*(byte) $28
Constant inlined debug_print::i#0 = (byte) 0
Successful SSA optimization Pass2ConstantInlining
Consolidated array index constant in *(rotation_matrix#0+1)
Consolidated array index constant in *(rotation_matrix#0+2)
Consolidated array index constant in *(rotation_matrix#0+3)
Consolidated array index constant in *(rotation_matrix#0+4)
Consolidated array index constant in *(rotation_matrix#0+5)
Consolidated array index constant in *(rotation_matrix#0+6)
Consolidated array index constant in *(rotation_matrix#0+7)
Consolidated array index constant in *(rotation_matrix#0+8)
Consolidated array index constant in *(rotation_matrix#0+1)
Consolidated array index constant in *(rotation_matrix#0+2)
Consolidated array index constant in *(rotation_matrix#0+3)
Consolidated array index constant in *(rotation_matrix#0+4)
Consolidated array index constant in *(rotation_matrix#0+5)
Consolidated array index constant in *(rotation_matrix#0+6)
Consolidated array index constant in *(rotation_matrix#0+7)
Consolidated array index constant in *(rotation_matrix#0+8)
Successful SSA optimization Pass2ConstantAdditionElimination
Added new block during phi lifting memset::@10(between memset::@4 and memset::@5)
Added new block during phi lifting anim::@31(between anim::@29 and anim::@22)
Added new block during phi lifting debug_print_init::@21(between debug_print_init::@3 and debug_print_init::@1)
Added new block during phi lifting debug_print_init::@22(between debug_print_init::@2 and debug_print_init::@2)
Added new block during phi lifting debug_print::@33(between debug_print::@32 and debug_print::@1)
Added new block during phi lifting sprites_init::@3(between sprites_init::@1 and sprites_init::@1)
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @16
Adding NOP phi() at start of @33
Adding NOP phi() at start of @40
Adding NOP phi() at start of @41
Adding NOP phi() at start of @45
Adding NOP phi() at start of @51
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of main::@3
Adding NOP phi() at start of anim
Adding NOP phi() at start of anim::@27
Adding NOP phi() at start of anim::@28
Adding NOP phi() at start of debug_print::@15
Adding NOP phi() at start of debug_print::@16
Adding NOP phi() at start of debug_print::@4
Adding NOP phi() at start of debug_print::print_sbyte_pos3
Adding NOP phi() at start of debug_print::@17
Adding NOP phi() at start of debug_print::@18
Adding NOP phi() at start of debug_print::@19
Adding NOP phi() at start of debug_print::@20
Adding NOP phi() at start of debug_print::@21
Adding NOP phi() at start of debug_print::@22
Adding NOP phi() at start of debug_print::@23
Adding NOP phi() at start of debug_print::@24
Adding NOP phi() at start of debug_print::@25
Adding NOP phi() at start of debug_print::@26
Adding NOP phi() at start of debug_print::@14
Adding NOP phi() at start of print_sbyte_at::@7
Adding NOP phi() at start of print_byte_at::@2
Adding NOP phi() at start of debug_print_init
Adding NOP phi() at start of debug_print_init::@5
Adding NOP phi() at start of debug_print_init::@6
Adding NOP phi() at start of debug_print_init::@7
Adding NOP phi() at start of debug_print_init::@8
Adding NOP phi() at start of debug_print_init::@9
Adding NOP phi() at start of debug_print_init::@10
Adding NOP phi() at start of debug_print_init::@11
Adding NOP phi() at start of debug_print_init::@12
Adding NOP phi() at start of debug_print_init::@13
Adding NOP phi() at start of debug_print_init::@14
Adding NOP phi() at start of debug_print_init::@15
Adding NOP phi() at start of debug_print_init::@16
Adding NOP phi() at start of debug_print_init::@17
Adding NOP phi() at start of debug_print_init::@20
Adding NOP phi() at start of print_cls
Adding NOP phi() at start of print_cls::@1
Adding NOP phi() at start of memset
Adding NOP phi() at start of memset::@2
Adding NOP phi() at start of memset::@4_1
Adding NOP phi() at start of memset::@1
CALL GRAPH
Calls in [] to main:7 
Calls in [main] to sprites_init:11 debug_print_init:14 anim:16 
Calls in [anim] to calculate_matrix:27 store_matrix:29 rotate_matrix:36 debug_print:51 
Calls in [debug_print] to print_sbyte_at:61 print_sbyte_at:66 print_sbyte_at:70 print_sbyte_at:75 print_sbyte_at:80 print_sbyte_at:85 print_sbyte_at:90 print_sbyte_at:95 print_sbyte_at:100 print_sbyte_at:105 print_sbyte_at:110 print_sbyte_at:115 print_sbyte_at:123 print_sbyte_at:128 print_sbyte_at:133 print_sbyte_at:138 print_sbyte_at:143 print_sbyte_at:148 
Calls in [print_sbyte_at] to print_char_at:159 print_byte_at:164 print_char_at:169 
Calls in [print_byte_at] to print_char_at:180 print_char_at:186 
Calls in [debug_print_init] to print_cls:242 print_str_at:244 print_str_at:246 print_str_at:248 print_str_at:250 print_str_at:252 print_str_at:254 print_str_at:256 print_str_at:258 print_str_at:260 print_str_at:262 print_str_at:264 print_str_at:266 print_sbyte_at:273 print_sbyte_at:278 print_sbyte_at:283 
Calls in [print_cls] to memset:326 

Created 19 initial phi equivalence classes
Coalesced [55] sx#28 ← sx#3
Coalesced [56] sy#31 ← sy#3
Coalesced [57] anim::i#4 ← anim::i#1
Coalesced [60] print_sbyte_at::b#34 ← print_sbyte_at::b#4
Coalesced [65] print_sbyte_at::b#38 ← print_sbyte_at::b#5
Coalesced [74] print_sbyte_at::b#39 ← print_sbyte_at::b#7
Coalesced [79] print_sbyte_at::b#40 ← print_sbyte_at::b#8
Coalesced [84] print_sbyte_at::b#41 ← print_sbyte_at::b#9
Coalesced [89] print_sbyte_at::b#42 ← print_sbyte_at::b#10
Coalesced [94] print_sbyte_at::b#43 ← print_sbyte_at::b#11
Coalesced [99] print_sbyte_at::b#44 ← print_sbyte_at::b#12
Coalesced [104] print_sbyte_at::b#35 ← print_sbyte_at::b#13
Coalesced [109] print_sbyte_at::b#36 ← print_sbyte_at::b#14
Coalesced [114] print_sbyte_at::b#37 ← print_sbyte_at::b#15
Coalesced [121] print_sbyte_at::b#28 ← print_sbyte_at::b#16
Coalesced [122] print_sbyte_at::at#27 ← print_sbyte_at::at#15
Coalesced [126] print_sbyte_at::b#29 ← print_sbyte_at::b#17
Coalesced [127] print_sbyte_at::at#28 ← print_sbyte_at::at#16
Coalesced [131] print_sbyte_at::b#30 ← print_sbyte_at::b#18
Coalesced [132] print_sbyte_at::at#29 ← print_sbyte_at::at#17
Coalesced [136] print_sbyte_at::b#31 ← print_sbyte_at::b#19
Coalesced [137] print_sbyte_at::at#30 ← print_sbyte_at::at#18
Coalesced [141] print_sbyte_at::b#32 ← print_sbyte_at::b#20
Coalesced [142] print_sbyte_at::at#31 ← print_sbyte_at::at#19
Coalesced [146] print_sbyte_at::b#33 ← print_sbyte_at::b#21
Coalesced [147] print_sbyte_at::at#32 ← print_sbyte_at::at#20
Coalesced [153] debug_print::c#9 ← debug_print::c#1
Coalesced [154] debug_print::i#9 ← debug_print::i#1
Coalesced [158] print_char_at::at#8 ← print_char_at::at#1
Coalesced [160] print_sbyte_at::b#49 ← print_sbyte_at::b#22
Coalesced [168] print_char_at::at#7 ← print_char_at::at#0
Coalesced [171] print_sbyte_at::b#48 ← print_sbyte_at::b#0
Coalesced [178] print_char_at::ch#5 ← print_char_at::ch#2
Coalesced [179] print_char_at::at#5 ← print_char_at::at#2
Coalesced [184] print_char_at::ch#6 ← print_char_at::ch#3
Coalesced [185] print_char_at::at#6 ← print_char_at::at#3
Coalesced [271] print_sbyte_at::b#45 ← print_sbyte_at::b#1
Coalesced [272] print_sbyte_at::at#33 ← print_sbyte_at::at#0
Coalesced [276] print_sbyte_at::b#46 ← print_sbyte_at::b#2
Coalesced [277] print_sbyte_at::at#34 ← print_sbyte_at::at#1
Coalesced [281] print_sbyte_at::b#47 ← print_sbyte_at::b#3
Coalesced [282] print_sbyte_at::at#35 ← print_sbyte_at::at#2
Coalesced [311] debug_print_init::c#8 ← debug_print_init::c#1
Coalesced [312] debug_print_init::i#8 ← debug_print_init::i#1
Coalesced [313] debug_print_init::j#3 ← debug_print_init::j#1
Coalesced [315] print_str_at::str#16 ← print_str_at::str#15
Coalesced [316] print_str_at::at#16 ← print_str_at::at#15
Coalesced [323] print_str_at::str#17 ← print_str_at::str#0
Coalesced [324] print_str_at::at#17 ← print_str_at::at#0
Coalesced [338] memset::dst#6 ← memset::dst#1
Coalesced [346] sprites_init::i#3 ← sprites_init::i#1
Coalesced down to 16 phi equivalence classes
Culled Empty Block (label) @16
Culled Empty Block (label) @33
Culled Empty Block (label) @40
Culled Empty Block (label) @41
Culled Empty Block (label) @45
Culled Empty Block (label) @51
Culled Empty Block (label) main::@3
Culled Empty Block (label) anim::@28
Culled Empty Block (label) anim::@31
Culled Empty Block (label) debug_print::@15
Culled Empty Block (label) debug_print::@16
Culled Empty Block (label) debug_print::@4
Culled Empty Block (label) debug_print::@17
Culled Empty Block (label) debug_print::@18
Culled Empty Block (label) debug_print::@19
Culled Empty Block (label) debug_print::@20
Culled Empty Block (label) debug_print::@21
Culled Empty Block (label) debug_print::@22
Culled Empty Block (label) debug_print::@23
Culled Empty Block (label) debug_print::@24
Culled Empty Block (label) debug_print::@25
Culled Empty Block (label) debug_print::@26
Culled Empty Block (label) debug_print::@14
Culled Empty Block (label) debug_print::@33
Culled Empty Block (label) print_sbyte_at::@6
Culled Empty Block (label) print_sbyte_at::@7
Culled Empty Block (label) print_byte_at::@2
Culled Empty Block (label) debug_print_init::@17
Culled Empty Block (label) debug_print_init::@20
Culled Empty Block (label) debug_print_init::@21
Culled Empty Block (label) debug_print_init::@22
Culled Empty Block (label) print_cls::@1
Culled Empty Block (label) memset::@2
Culled Empty Block (label) memset::@4_1
Culled Empty Block (label) memset::@1
Culled Empty Block (label) memset::@10
Culled Empty Block (label) sprites_init::@3
Renumbering block @50 to @1
Renumbering block memset::@4 to memset::@1
Renumbering block memset::@5 to memset::@2
Renumbering block print_sbyte_at::@5 to print_sbyte_at::@4
Renumbering block anim::@4 to anim::@2
Renumbering block anim::@10 to anim::@3
Renumbering block anim::@16 to anim::@4
Renumbering block anim::@18 to anim::@5
Renumbering block anim::@22 to anim::@6
Renumbering block anim::@23 to anim::@7
Renumbering block anim::@27 to anim::@8
Renumbering block anim::@29 to anim::@9
Renumbering block anim::@30 to anim::@10
Renumbering block debug_print_init::@5 to debug_print_init::@4
Renumbering block debug_print_init::@6 to debug_print_init::@5
Renumbering block debug_print_init::@7 to debug_print_init::@6
Renumbering block debug_print_init::@8 to debug_print_init::@7
Renumbering block debug_print_init::@9 to debug_print_init::@8
Renumbering block debug_print_init::@10 to debug_print_init::@9
Renumbering block debug_print_init::@11 to debug_print_init::@10
Renumbering block debug_print_init::@12 to debug_print_init::@11
Renumbering block debug_print_init::@13 to debug_print_init::@12
Renumbering block debug_print_init::@14 to debug_print_init::@13
Renumbering block debug_print_init::@15 to debug_print_init::@14
Renumbering block debug_print_init::@16 to debug_print_init::@15
Renumbering block debug_print_init::@18 to debug_print_init::@16
Renumbering block debug_print_init::@19 to debug_print_init::@17
Renumbering block debug_print::@3 to debug_print::@2
Renumbering block debug_print::@5 to debug_print::@3
Renumbering block debug_print::@6 to debug_print::@4
Renumbering block debug_print::@7 to debug_print::@5
Renumbering block debug_print::@8 to debug_print::@6
Renumbering block debug_print::@9 to debug_print::@7
Renumbering block debug_print::@10 to debug_print::@8
Renumbering block debug_print::@11 to debug_print::@9
Renumbering block debug_print::@12 to debug_print::@10
Renumbering block debug_print::@13 to debug_print::@11
Renumbering block debug_print::@27 to debug_print::@12
Renumbering block debug_print::@28 to debug_print::@13
Renumbering block debug_print::@29 to debug_print::@14
Renumbering block debug_print::@30 to debug_print::@15
Renumbering block debug_print::@31 to debug_print::@16
Renumbering block debug_print::@32 to debug_print::@17
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of anim
Adding NOP phi() at start of anim::@8
Adding NOP phi() at start of debug_print::print_sbyte_pos3
Adding NOP phi() at start of debug_print_init
Adding NOP phi() at start of debug_print_init::@4
Adding NOP phi() at start of debug_print_init::@5
Adding NOP phi() at start of debug_print_init::@6
Adding NOP phi() at start of debug_print_init::@7
Adding NOP phi() at start of debug_print_init::@8
Adding NOP phi() at start of debug_print_init::@9
Adding NOP phi() at start of debug_print_init::@10
Adding NOP phi() at start of debug_print_init::@11
Adding NOP phi() at start of debug_print_init::@12
Adding NOP phi() at start of debug_print_init::@13
Adding NOP phi() at start of debug_print_init::@14
Adding NOP phi() at start of debug_print_init::@15
Adding NOP phi() at start of print_cls
Adding NOP phi() at start of memset

FINAL CONTROL FLOW GRAPH
@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  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)
 }}
  [2] call main 
  to:@end
@end: scope:[]  from @1
  [3] phi()
main: scope:[main]  from @1
  asm { sei  }
  [5] call sprites_init 
  to:main::@1
main::@1: scope:[main]  from main
  [6] *((const word*) psp1#0) ← (word)(const byte[$200]) mulf_sqr1#0
  [7] *((const word*) psp2#0) ← (word)(const byte[$200]) mulf_sqr2#0
  [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
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#0)!=(byte) $ff) goto anim::@2
  to:anim::@3
anim::@3: scope:[anim]  from anim::@2 anim::@3
  [15] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3
  to:anim::@4
anim::@4: scope:[anim]  from anim::@3 anim::@4
  [16] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4
  to:anim::@5
anim::@5: scope:[anim]  from anim::@4
  [17] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0)
  [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#0) ← ++ *((const byte*) BORDERCOL#0)
  [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2)
  [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2)
  [27] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2)
  [28] call rotate_matrix 
  to:anim::@9
anim::@9: scope:[anim]  from anim::@6
  [29] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0)
  [30] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0)
  [31] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0)
  [32] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0)
  [33] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0)
  [34] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0)
  [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1
  [36] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0)
  [37] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$8
  [38] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0)
  [39] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$10
  [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#0) ← (const byte) LIGHT_GREY#0
  [43] call debug_print 
  to:anim::@10
anim::@10: scope:[anim]  from anim::@7
  [44] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0
  [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
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[9]) rotation_matrix#0)
  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[9]) rotation_matrix#0+(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[9]) rotation_matrix#0+(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[9]) rotation_matrix#0+(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[9]) rotation_matrix#0+(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[9]) rotation_matrix#0+(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[9]) rotation_matrix#0+(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[9]) rotation_matrix#0+(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[9]) rotation_matrix#0+(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[8]) xrs#0 + (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[8]) yrs#0 + (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[8]) zrs#0 + (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[8]) pps#0 + (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[8]) xps#0 + (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[8]) yps#0 + (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
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#0 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
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
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#0 + (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#0 + (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
rotate_matrix: scope:[rotate_matrix]  from anim::@6
  [129] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0
  [130] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0
  [131] *((const signed byte*) zr#0) ← (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
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
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#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0)
  [147] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10
  [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t2#0)
  [149] *((const signed byte[9]) rotation_matrix#0+(byte) 1) ← (signed byte~) calculate_matrix::$11
  [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0)
  [151] *((const signed byte[9]) rotation_matrix#0+(byte) 2) ← (signed byte~) calculate_matrix::$12
  [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0)
  [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0)
  [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0)
  [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0)
  [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0)
  [157] *((const signed byte[9]) rotation_matrix#0+(byte) 3) ← (signed byte~) calculate_matrix::$17
  [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0)
  [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0)
  [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0)
  [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0)
  [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0)
  [163] *((const signed byte[9]) rotation_matrix#0+(byte) 4) ← (signed byte~) calculate_matrix::$22
  [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t10#0)
  [165] *((const signed byte[9]) rotation_matrix#0+(byte) 5) ← (signed byte~) calculate_matrix::$23
  [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0)
  [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0)
  [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0)
  [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0)
  [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0)
  [171] *((const signed byte[9]) rotation_matrix#0+(byte) 6) ← (signed byte~) calculate_matrix::$28
  [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0)
  [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0)
  [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0)
  [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0)
  [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0)
  [177] *((const signed byte[9]) rotation_matrix#0+(byte) 7) ← (signed byte~) calculate_matrix::$33
  [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0)
  [179] *((const signed byte[9]) rotation_matrix#0+(byte) 8) ← (signed byte~) calculate_matrix::$34
  to:calculate_matrix::@return
calculate_matrix::@return: scope:[calculate_matrix]  from calculate_matrix
  [180] return 
  to:@return
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[8]) xs#0 + (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[8]) ys#0 + (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[8]) zs#0 + (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
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#0+(word)(number) $28*(number) $12 debug_print_init::@10/(const byte*) SCREEN#0+(word)(number) $28*(number) $13 debug_print_init::@11/(const byte*) SCREEN#0+(word)(number) $28*(number) $14 debug_print_init::@12/(const byte*) SCREEN#0+(word)(number) $28*(number) $15 debug_print_init::@13/(const byte*) SCREEN#0+(word)(number) $28*(number) $16 debug_print_init::@14/(const byte*) SCREEN#0+(word)(number) $28*(number) $17 debug_print_init::@15/(const byte*) SCREEN#0+(word)(number) $28*(number) $18 debug_print_init::@4/(const byte*) SCREEN#0+(byte) $22 debug_print_init::@5/(const byte*) SCREEN#0+(byte)(number) $28*(number) 1+(byte) $22 debug_print_init::@6/(const byte*) SCREEN#0+(byte)(number) $28*(number) 2+(byte) $22 debug_print_init::@7/(const byte*) SCREEN#0+(word)(number) $28*(number) $10 debug_print_init::@8/(const byte*) SCREEN#0+(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
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
memset: scope:[memset]  from print_cls
  [253] phi()
  to:memset::@2
memset::@2: scope:[memset]  from memset memset::@1
  [254] (byte*) memset::dst#4 ← phi( memset::@1/(byte*) memset::dst#1 memset/(byte*)(const void*) memset::str#0 )
  [255] *((byte*) memset::dst#4) ← (const byte) memset::c#0
  [256] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#4
  to:memset::@1
memset::@1: scope:[memset]  from memset::@2
  [257] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@2
  to:memset::@return
memset::@return: scope:[memset]  from memset::@1
  [258] return 
  to:@return
sprites_init: scope:[sprites_init]  from main
  [259] *((const byte*) SPRITES_ENABLE#0) ← (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#0/(byte) $40
  [262] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0
  [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

null depth in calling loop Loop head: debug_print::@1 tails: debug_print::@17 blocks: debug_print::@17 debug_print::@16 debug_print::@15 debug_print::@14 debug_print::@13 debug_print::@12 debug_print::@1  in scope print_sbyte_at
null depth in calling loop Loop head: debug_print::@1 tails: debug_print::@17 blocks: debug_print::@17 debug_print::@16 debug_print::@15 debug_print::@14 debug_print::@13 debug_print::@12 debug_print::@1  in scope print_sbyte_at
null depth in calling loop Loop head: debug_print::@1 tails: debug_print::@17 blocks: debug_print::@17 debug_print::@16 debug_print::@15 debug_print::@14 debug_print::@13 debug_print::@12 debug_print::@1  in scope print_sbyte_at
null depth in calling loop Loop head: debug_print::@1 tails: debug_print::@17 blocks: debug_print::@17 debug_print::@16 debug_print::@15 debug_print::@14 debug_print::@13 debug_print::@12 debug_print::@1  in scope print_sbyte_at
null depth in calling loop Loop head: debug_print::@1 tails: debug_print::@17 blocks: debug_print::@17 debug_print::@16 debug_print::@15 debug_print::@14 debug_print::@13 debug_print::@12 debug_print::@1  in scope print_sbyte_at
null depth in calling loop Loop head: debug_print::@1 tails: debug_print::@17 blocks: debug_print::@17 debug_print::@16 debug_print::@15 debug_print::@14 debug_print::@13 debug_print::@12 debug_print::@1  in scope print_sbyte_at

VARIABLE REGISTER WEIGHTS
(byte*) BORDERCOL
(signed byte*) COSH
(signed byte*) COSQ
(byte) GREEN
(byte) LIGHT_BLUE
(byte) LIGHT_GREY
(signed byte[$100]) PERSP_Z
(byte*) RASTER
(byte*) SCREEN
(signed byte[$140]) SINH
(signed byte[$140]) SINQ
(byte*) SPRITE
(byte*) SPRITES_COLS
(byte*) SPRITES_ENABLE
(byte*) SPRITES_XPOS
(byte*) SPRITES_YPOS
(void()) anim()
(byte~) anim::$10 202.0
(byte~) anim::$8 202.0
(byte) anim::i
(byte) anim::i#1 151.5
(byte) anim::i#2 71.29411764705881
(byte) anim::i2
(byte) anim::i2#0 75.75
(void()) calculate_matrix((signed byte) calculate_matrix::sx , (signed byte) calculate_matrix::sy , (signed byte) calculate_matrix::sz)
(signed byte~) calculate_matrix::$10 4.0
(signed byte~) calculate_matrix::$11 4.0
(signed byte~) calculate_matrix::$12 4.0
(signed byte~) calculate_matrix::$13 4.0
(signed byte~) calculate_matrix::$14 4.0
(signed byte~) calculate_matrix::$15 4.0
(signed byte~) calculate_matrix::$16 4.0
(signed byte~) calculate_matrix::$17 4.0
(signed byte~) calculate_matrix::$18 4.0
(signed byte~) calculate_matrix::$19 4.0
(signed byte~) calculate_matrix::$20 4.0
(signed byte~) calculate_matrix::$21 4.0
(signed byte~) calculate_matrix::$22 4.0
(signed byte~) calculate_matrix::$23 4.0
(signed byte~) calculate_matrix::$24 4.0
(signed byte~) calculate_matrix::$25 4.0
(signed byte~) calculate_matrix::$26 4.0
(signed byte~) calculate_matrix::$27 4.0
(signed byte~) calculate_matrix::$28 4.0
(signed byte~) calculate_matrix::$29 4.0
(signed byte~) calculate_matrix::$30 4.0
(signed byte~) calculate_matrix::$31 4.0
(signed byte~) calculate_matrix::$32 4.0
(signed byte~) calculate_matrix::$33 4.0
(signed byte~) calculate_matrix::$34 4.0
(signed byte) calculate_matrix::sx
(signed byte) calculate_matrix::sx#0 2.4545454545454546
(signed byte) calculate_matrix::sy
(signed byte) calculate_matrix::sy#0 1.5333333333333332
(signed byte) calculate_matrix::sz
(signed byte) calculate_matrix::t1
(signed byte) calculate_matrix::t1#0 0.8333333333333333
(signed byte) calculate_matrix::t10
(signed byte) calculate_matrix::t10#0 0.18181818181818182
(signed byte) calculate_matrix::t2
(signed byte) calculate_matrix::t2#0 0.9090909090909092
(signed byte) calculate_matrix::t3
(signed byte) calculate_matrix::t3#0 0.29411764705882354
(signed byte) calculate_matrix::t4
(signed byte) calculate_matrix::t4#0 0.30303030303030304
(signed byte) calculate_matrix::t5
(signed byte) calculate_matrix::t5#0 0.29411764705882354
(signed byte) calculate_matrix::t6
(signed byte) calculate_matrix::t6#0 0.3125
(signed byte) calculate_matrix::t7
(signed byte) calculate_matrix::t7#0 0.30303030303030304
(signed byte) calculate_matrix::t8
(signed byte) calculate_matrix::t8#0 0.30303030303030304
(signed byte) calculate_matrix::t9
(signed byte) calculate_matrix::t9#0 0.1764705882352941
(void()) debug_print()
(byte*) debug_print::at_line
(byte) debug_print::c
(byte) debug_print::c#1 67.33333333333333
(byte) debug_print::c#2 42.52631578947369
(byte) debug_print::i
(byte) debug_print::i#1 151.5
(byte) debug_print::i#2 40.4
(number~) debug_print::print_sbyte_pos10_$0
(byte*~) debug_print::print_sbyte_pos10_$1
(byte*~) debug_print::print_sbyte_pos10_$2
(byte) debug_print::print_sbyte_pos10_col
(byte) debug_print::print_sbyte_pos10_row
(signed byte) debug_print::print_sbyte_pos10_sb
(signed byte) debug_print::print_sbyte_pos10_sb#0 4.0
(number~) debug_print::print_sbyte_pos11_$0
(byte*~) debug_print::print_sbyte_pos11_$1
(byte*~) debug_print::print_sbyte_pos11_$2
(byte) debug_print::print_sbyte_pos11_col
(byte) debug_print::print_sbyte_pos11_row
(signed byte) debug_print::print_sbyte_pos11_sb
(signed byte) debug_print::print_sbyte_pos11_sb#0 4.0
(number~) debug_print::print_sbyte_pos12_$0
(byte*~) debug_print::print_sbyte_pos12_$1
(byte*~) debug_print::print_sbyte_pos12_$2
(byte) debug_print::print_sbyte_pos12_col
(byte) debug_print::print_sbyte_pos12_row
(signed byte) debug_print::print_sbyte_pos12_sb
(signed byte) debug_print::print_sbyte_pos12_sb#0 4.0
(number~) debug_print::print_sbyte_pos1_$0
(byte*~) debug_print::print_sbyte_pos1_$1
(byte*~) debug_print::print_sbyte_pos1_$2
(byte) debug_print::print_sbyte_pos1_col
(byte) debug_print::print_sbyte_pos1_row
(signed byte) debug_print::print_sbyte_pos1_sb
(signed byte) debug_print::print_sbyte_pos1_sb#0 4.0
(number~) debug_print::print_sbyte_pos2_$0
(byte*~) debug_print::print_sbyte_pos2_$1
(byte*~) debug_print::print_sbyte_pos2_$2
(byte) debug_print::print_sbyte_pos2_col
(byte) debug_print::print_sbyte_pos2_row
(signed byte) debug_print::print_sbyte_pos2_sb
(signed byte) debug_print::print_sbyte_pos2_sb#0 4.0
(number~) debug_print::print_sbyte_pos3_$0
(byte*~) debug_print::print_sbyte_pos3_$1
(byte*~) debug_print::print_sbyte_pos3_$2
(byte) debug_print::print_sbyte_pos3_col
(byte) debug_print::print_sbyte_pos3_row
(signed byte) debug_print::print_sbyte_pos3_sb
(number~) debug_print::print_sbyte_pos4_$0
(byte*~) debug_print::print_sbyte_pos4_$1
(byte*~) debug_print::print_sbyte_pos4_$2
(byte) debug_print::print_sbyte_pos4_col
(byte) debug_print::print_sbyte_pos4_row
(signed byte) debug_print::print_sbyte_pos4_sb
(signed byte) debug_print::print_sbyte_pos4_sb#0 4.0
(number~) debug_print::print_sbyte_pos5_$0
(byte*~) debug_print::print_sbyte_pos5_$1
(byte*~) debug_print::print_sbyte_pos5_$2
(byte) debug_print::print_sbyte_pos5_col
(byte) debug_print::print_sbyte_pos5_row
(signed byte) debug_print::print_sbyte_pos5_sb
(signed byte) debug_print::print_sbyte_pos5_sb#0 4.0
(number~) debug_print::print_sbyte_pos6_$0
(byte*~) debug_print::print_sbyte_pos6_$1
(byte*~) debug_print::print_sbyte_pos6_$2
(byte) debug_print::print_sbyte_pos6_col
(byte) debug_print::print_sbyte_pos6_row
(signed byte) debug_print::print_sbyte_pos6_sb
(signed byte) debug_print::print_sbyte_pos6_sb#0 4.0
(number~) debug_print::print_sbyte_pos7_$0
(byte*~) debug_print::print_sbyte_pos7_$1
(byte*~) debug_print::print_sbyte_pos7_$2
(byte) debug_print::print_sbyte_pos7_col
(byte) debug_print::print_sbyte_pos7_row
(signed byte) debug_print::print_sbyte_pos7_sb
(signed byte) debug_print::print_sbyte_pos7_sb#0 4.0
(number~) debug_print::print_sbyte_pos8_$0
(byte*~) debug_print::print_sbyte_pos8_$1
(byte*~) debug_print::print_sbyte_pos8_$2
(byte) debug_print::print_sbyte_pos8_col
(byte) debug_print::print_sbyte_pos8_row
(signed byte) debug_print::print_sbyte_pos8_sb
(signed byte) debug_print::print_sbyte_pos8_sb#0 4.0
(number~) debug_print::print_sbyte_pos9_$0
(byte*~) debug_print::print_sbyte_pos9_$1
(byte*~) debug_print::print_sbyte_pos9_$2
(byte) debug_print::print_sbyte_pos9_col
(byte) debug_print::print_sbyte_pos9_row
(signed byte) debug_print::print_sbyte_pos9_sb
(signed byte) debug_print::print_sbyte_pos9_sb#0 4.0
(void()) debug_print_init()
(byte*~) debug_print_init::$41 202.0
(byte*~) debug_print_init::$44 202.0
(byte*~) debug_print_init::$47 202.0
(byte*~) debug_print_init::$50 202.0
(byte*~) debug_print_init::$53 202.0
(byte*~) debug_print_init::$56 202.0
(byte*~) debug_print_init::$59 202.0
(byte*~) debug_print_init::$62 202.0
(byte*~) debug_print_init::$65 202.0
(byte*) debug_print_init::COLS
(byte*) debug_print_init::at_cols
(byte*) debug_print_init::at_line
(byte) debug_print_init::c
(byte) debug_print_init::c#1 7.333333333333333
(byte) debug_print_init::c#2 30.125
(byte) debug_print_init::col
(byte) debug_print_init::col#0 56.111111111111114
(byte) debug_print_init::i
(byte) debug_print_init::i#1 16.5
(byte) debug_print_init::i#2 4.727272727272727
(byte) debug_print_init::j
(byte) debug_print_init::j#1 151.5
(byte) debug_print_init::j#2 55.54999999999999
(void()) main()
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(byte) memset::c
(byte*) memset::dst
(byte*) memset::dst#1 16.5
(byte*) memset::dst#4 16.5
(byte*) memset::end
(word) memset::num
(void*) memset::return
(void*) memset::str
(byte[$200]) mulf_sqr1
(byte[$200]) mulf_sqr2
(signed byte*) pp
(signed byte[8]) pps
(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at)
(byte~) print_byte_at::$0 4.0
(byte~) print_byte_at::$2 2.0
(byte*) print_byte_at::at
(byte*) print_byte_at::at#0 1.0
(byte) print_byte_at::b
(byte) print_byte_at::b#0 1.0
(void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at)
(byte*) print_char_at::at
(byte*) print_char_at::at#0 4.0
(byte*) print_char_at::at#1 4.0
(byte*) print_char_at::at#2 4.0
(byte*) print_char_at::at#3 2.0
(byte*) print_char_at::at#4 10.0
(byte) print_char_at::ch
(byte) print_char_at::ch#2 2.0
(byte) print_char_at::ch#3 4.0
(byte) print_char_at::ch#4 6.0
(void()) print_cls()
(byte[]) print_hextab
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
(byte*) print_sbyte_at::at
(byte*) print_sbyte_at::at#0 11.0
(byte*) print_sbyte_at::at#1 11.0
(byte*) print_sbyte_at::at#15 101.0
(byte*) print_sbyte_at::at#16 101.0
(byte*) print_sbyte_at::at#17 101.0
(byte*) print_sbyte_at::at#18 101.0
(byte*) print_sbyte_at::at#19 101.0
(byte*) print_sbyte_at::at#2 11.0
(byte*) print_sbyte_at::at#20 101.0
(byte*) print_sbyte_at::at#21 71.6666666666667
(signed byte) print_sbyte_at::b
(signed byte) print_sbyte_at::b#0 4.0
(signed byte) print_sbyte_at::b#1 22.0
(signed byte) print_sbyte_at::b#10 4.0
(signed byte) print_sbyte_at::b#11 4.0
(signed byte) print_sbyte_at::b#12 4.0
(signed byte) print_sbyte_at::b#13 4.0
(signed byte) print_sbyte_at::b#14 4.0
(signed byte) print_sbyte_at::b#15 4.0
(signed byte) print_sbyte_at::b#16 202.0
(signed byte) print_sbyte_at::b#17 202.0
(signed byte) print_sbyte_at::b#18 202.0
(signed byte) print_sbyte_at::b#19 202.0
(signed byte) print_sbyte_at::b#2 22.0
(signed byte) print_sbyte_at::b#20 202.0
(signed byte) print_sbyte_at::b#21 202.0
(signed byte) print_sbyte_at::b#22 111.16666666666657
(signed byte) print_sbyte_at::b#24 4.0
(signed byte) print_sbyte_at::b#3 22.0
(signed byte) print_sbyte_at::b#4 4.0
(signed byte) print_sbyte_at::b#5 4.0
(signed byte) print_sbyte_at::b#7 4.0
(signed byte) print_sbyte_at::b#8 4.0
(signed byte) print_sbyte_at::b#9 4.0
(byte*) print_screen
(void()) print_str_at((byte*) print_str_at::str , (byte*) print_str_at::at)
(byte*) print_str_at::at
(byte*) print_str_at::at#0 11.0
(byte*) print_str_at::at#13 11.666666666666666
(byte*) print_str_at::at#15 2.0
(byte*) print_str_at::str
(byte*) print_str_at::str#0 22.0
(byte*) print_str_at::str#13 11.5
(byte*) print_str_at::str#15 2.0
(word*) psp1
(word*) psp2
(void()) rotate_matrix((signed byte) rotate_matrix::x , (signed byte) rotate_matrix::y , (signed byte) rotate_matrix::z)
(signed byte) rotate_matrix::x
(signed byte) rotate_matrix::x#0 34.33333333333333
(signed byte) rotate_matrix::y
(signed byte) rotate_matrix::y#0 34.33333333333333
(signed byte) rotate_matrix::z
(signed byte) rotate_matrix::z#0 34.33333333333333
(signed byte[9]) rotation_matrix
(void()) sprites_init()
(byte*) sprites_init::SCREEN
(byte) sprites_init::i
(byte) sprites_init::i#1 16.5
(byte) sprites_init::i#2 14.666666666666666
(byte*) sprites_init::sprites_ptr
(void()) store_matrix()
(signed byte) sx
(signed byte) sx#10 0.38888888888888884
(signed byte) sx#3 11.0
(signed byte) sy
(signed byte) sy#10 0.3846153846153846
(signed byte) sy#3 22.0
(signed byte) sz
(signed byte*) xp
(signed byte[8]) xps
(signed byte*) xr
(signed byte[8]) xrs
(signed byte[8]) xs
(signed byte*) yp
(signed byte[8]) yps
(signed byte*) yr
(signed byte[8]) yrs
(signed byte[8]) ys
(signed byte*) zr
(signed byte[8]) zrs
(signed byte[8]) zs

Initial phi equivalence classes
[ sx#10 sx#3 ]
[ sy#10 sy#3 ]
[ anim::i#2 anim::i#1 ]
[ debug_print::c#2 debug_print::c#1 ]
[ debug_print::i#2 debug_print::i#1 ]
[ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 ]
[ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ]
[ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ]
[ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ]
[ debug_print_init::c#2 debug_print_init::c#1 ]
[ debug_print_init::i#2 debug_print_init::i#1 ]
[ debug_print_init::j#2 debug_print_init::j#1 ]
[ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ]
[ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ]
[ memset::dst#4 memset::dst#1 ]
[ sprites_init::i#2 sprites_init::i#1 ]
Added variable calculate_matrix::sx#0 to zero page equivalence class [ calculate_matrix::sx#0 ]
Added variable calculate_matrix::sy#0 to zero page equivalence class [ calculate_matrix::sy#0 ]
Added variable rotate_matrix::x#0 to zero page equivalence class [ rotate_matrix::x#0 ]
Added variable rotate_matrix::y#0 to zero page equivalence class [ rotate_matrix::y#0 ]
Added variable rotate_matrix::z#0 to zero page equivalence class [ rotate_matrix::z#0 ]
Added variable anim::i2#0 to zero page equivalence class [ anim::i2#0 ]
Added variable anim::$8 to zero page equivalence class [ anim::$8 ]
Added variable anim::$10 to zero page equivalence class [ anim::$10 ]
Added variable debug_print::print_sbyte_pos1_sb#0 to zero page equivalence class [ debug_print::print_sbyte_pos1_sb#0 ]
Added variable debug_print::print_sbyte_pos2_sb#0 to zero page equivalence class [ debug_print::print_sbyte_pos2_sb#0 ]
Added variable debug_print::print_sbyte_pos4_sb#0 to zero page equivalence class [ debug_print::print_sbyte_pos4_sb#0 ]
Added variable debug_print::print_sbyte_pos5_sb#0 to zero page equivalence class [ debug_print::print_sbyte_pos5_sb#0 ]
Added variable debug_print::print_sbyte_pos6_sb#0 to zero page equivalence class [ debug_print::print_sbyte_pos6_sb#0 ]
Added variable debug_print::print_sbyte_pos7_sb#0 to zero page equivalence class [ debug_print::print_sbyte_pos7_sb#0 ]
Added variable debug_print::print_sbyte_pos8_sb#0 to zero page equivalence class [ debug_print::print_sbyte_pos8_sb#0 ]
Added variable debug_print::print_sbyte_pos9_sb#0 to zero page equivalence class [ debug_print::print_sbyte_pos9_sb#0 ]
Added variable debug_print::print_sbyte_pos10_sb#0 to zero page equivalence class [ debug_print::print_sbyte_pos10_sb#0 ]
Added variable debug_print::print_sbyte_pos11_sb#0 to zero page equivalence class [ debug_print::print_sbyte_pos11_sb#0 ]
Added variable debug_print::print_sbyte_pos12_sb#0 to zero page equivalence class [ debug_print::print_sbyte_pos12_sb#0 ]
Added variable print_byte_at::b#0 to zero page equivalence class [ print_byte_at::b#0 ]
Added variable print_byte_at::at#0 to zero page equivalence class [ print_byte_at::at#0 ]
Added variable print_byte_at::$0 to zero page equivalence class [ print_byte_at::$0 ]
Added variable print_byte_at::$2 to zero page equivalence class [ print_byte_at::$2 ]
Added variable calculate_matrix::t1#0 to zero page equivalence class [ calculate_matrix::t1#0 ]
Added variable calculate_matrix::t2#0 to zero page equivalence class [ calculate_matrix::t2#0 ]
Added variable calculate_matrix::t3#0 to zero page equivalence class [ calculate_matrix::t3#0 ]
Added variable calculate_matrix::t4#0 to zero page equivalence class [ calculate_matrix::t4#0 ]
Added variable calculate_matrix::t5#0 to zero page equivalence class [ calculate_matrix::t5#0 ]
Added variable calculate_matrix::t6#0 to zero page equivalence class [ calculate_matrix::t6#0 ]
Added variable calculate_matrix::t7#0 to zero page equivalence class [ calculate_matrix::t7#0 ]
Added variable calculate_matrix::t8#0 to zero page equivalence class [ calculate_matrix::t8#0 ]
Added variable calculate_matrix::t9#0 to zero page equivalence class [ calculate_matrix::t9#0 ]
Added variable calculate_matrix::t10#0 to zero page equivalence class [ calculate_matrix::t10#0 ]
Added variable calculate_matrix::$10 to zero page equivalence class [ calculate_matrix::$10 ]
Added variable calculate_matrix::$11 to zero page equivalence class [ calculate_matrix::$11 ]
Added variable calculate_matrix::$12 to zero page equivalence class [ calculate_matrix::$12 ]
Added variable calculate_matrix::$13 to zero page equivalence class [ calculate_matrix::$13 ]
Added variable calculate_matrix::$14 to zero page equivalence class [ calculate_matrix::$14 ]
Added variable calculate_matrix::$15 to zero page equivalence class [ calculate_matrix::$15 ]
Added variable calculate_matrix::$16 to zero page equivalence class [ calculate_matrix::$16 ]
Added variable calculate_matrix::$17 to zero page equivalence class [ calculate_matrix::$17 ]
Added variable calculate_matrix::$18 to zero page equivalence class [ calculate_matrix::$18 ]
Added variable calculate_matrix::$19 to zero page equivalence class [ calculate_matrix::$19 ]
Added variable calculate_matrix::$20 to zero page equivalence class [ calculate_matrix::$20 ]
Added variable calculate_matrix::$21 to zero page equivalence class [ calculate_matrix::$21 ]
Added variable calculate_matrix::$22 to zero page equivalence class [ calculate_matrix::$22 ]
Added variable calculate_matrix::$23 to zero page equivalence class [ calculate_matrix::$23 ]
Added variable calculate_matrix::$24 to zero page equivalence class [ calculate_matrix::$24 ]
Added variable calculate_matrix::$25 to zero page equivalence class [ calculate_matrix::$25 ]
Added variable calculate_matrix::$26 to zero page equivalence class [ calculate_matrix::$26 ]
Added variable calculate_matrix::$27 to zero page equivalence class [ calculate_matrix::$27 ]
Added variable calculate_matrix::$28 to zero page equivalence class [ calculate_matrix::$28 ]
Added variable calculate_matrix::$29 to zero page equivalence class [ calculate_matrix::$29 ]
Added variable calculate_matrix::$30 to zero page equivalence class [ calculate_matrix::$30 ]
Added variable calculate_matrix::$31 to zero page equivalence class [ calculate_matrix::$31 ]
Added variable calculate_matrix::$32 to zero page equivalence class [ calculate_matrix::$32 ]
Added variable calculate_matrix::$33 to zero page equivalence class [ calculate_matrix::$33 ]
Added variable calculate_matrix::$34 to zero page equivalence class [ calculate_matrix::$34 ]
Added variable debug_print_init::col#0 to zero page equivalence class [ debug_print_init::col#0 ]
Added variable debug_print_init::$41 to zero page equivalence class [ debug_print_init::$41 ]
Added variable debug_print_init::$44 to zero page equivalence class [ debug_print_init::$44 ]
Added variable debug_print_init::$47 to zero page equivalence class [ debug_print_init::$47 ]
Added variable debug_print_init::$50 to zero page equivalence class [ debug_print_init::$50 ]
Added variable debug_print_init::$53 to zero page equivalence class [ debug_print_init::$53 ]
Added variable debug_print_init::$56 to zero page equivalence class [ debug_print_init::$56 ]
Added variable debug_print_init::$59 to zero page equivalence class [ debug_print_init::$59 ]
Added variable debug_print_init::$62 to zero page equivalence class [ debug_print_init::$62 ]
Added variable debug_print_init::$65 to zero page equivalence class [ debug_print_init::$65 ]
Complete equivalence classes
[ sx#10 sx#3 ]
[ sy#10 sy#3 ]
[ anim::i#2 anim::i#1 ]
[ debug_print::c#2 debug_print::c#1 ]
[ debug_print::i#2 debug_print::i#1 ]
[ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 ]
[ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ]
[ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ]
[ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ]
[ debug_print_init::c#2 debug_print_init::c#1 ]
[ debug_print_init::i#2 debug_print_init::i#1 ]
[ debug_print_init::j#2 debug_print_init::j#1 ]
[ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ]
[ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ]
[ memset::dst#4 memset::dst#1 ]
[ sprites_init::i#2 sprites_init::i#1 ]
[ calculate_matrix::sx#0 ]
[ calculate_matrix::sy#0 ]
[ rotate_matrix::x#0 ]
[ rotate_matrix::y#0 ]
[ rotate_matrix::z#0 ]
[ anim::i2#0 ]
[ anim::$8 ]
[ anim::$10 ]
[ debug_print::print_sbyte_pos1_sb#0 ]
[ debug_print::print_sbyte_pos2_sb#0 ]
[ debug_print::print_sbyte_pos4_sb#0 ]
[ debug_print::print_sbyte_pos5_sb#0 ]
[ debug_print::print_sbyte_pos6_sb#0 ]
[ debug_print::print_sbyte_pos7_sb#0 ]
[ debug_print::print_sbyte_pos8_sb#0 ]
[ debug_print::print_sbyte_pos9_sb#0 ]
[ debug_print::print_sbyte_pos10_sb#0 ]
[ debug_print::print_sbyte_pos11_sb#0 ]
[ debug_print::print_sbyte_pos12_sb#0 ]
[ print_byte_at::b#0 ]
[ print_byte_at::at#0 ]
[ print_byte_at::$0 ]
[ print_byte_at::$2 ]
[ calculate_matrix::t1#0 ]
[ calculate_matrix::t2#0 ]
[ calculate_matrix::t3#0 ]
[ calculate_matrix::t4#0 ]
[ calculate_matrix::t5#0 ]
[ calculate_matrix::t6#0 ]
[ calculate_matrix::t7#0 ]
[ calculate_matrix::t8#0 ]
[ calculate_matrix::t9#0 ]
[ calculate_matrix::t10#0 ]
[ calculate_matrix::$10 ]
[ calculate_matrix::$11 ]
[ calculate_matrix::$12 ]
[ calculate_matrix::$13 ]
[ calculate_matrix::$14 ]
[ calculate_matrix::$15 ]
[ calculate_matrix::$16 ]
[ calculate_matrix::$17 ]
[ calculate_matrix::$18 ]
[ calculate_matrix::$19 ]
[ calculate_matrix::$20 ]
[ calculate_matrix::$21 ]
[ calculate_matrix::$22 ]
[ calculate_matrix::$23 ]
[ calculate_matrix::$24 ]
[ calculate_matrix::$25 ]
[ calculate_matrix::$26 ]
[ calculate_matrix::$27 ]
[ calculate_matrix::$28 ]
[ calculate_matrix::$29 ]
[ calculate_matrix::$30 ]
[ calculate_matrix::$31 ]
[ calculate_matrix::$32 ]
[ calculate_matrix::$33 ]
[ calculate_matrix::$34 ]
[ debug_print_init::col#0 ]
[ debug_print_init::$41 ]
[ debug_print_init::$44 ]
[ debug_print_init::$47 ]
[ debug_print_init::$50 ]
[ debug_print_init::$53 ]
[ debug_print_init::$56 ]
[ debug_print_init::$59 ]
[ debug_print_init::$62 ]
[ debug_print_init::$65 ]
Allocated zp ZP_BYTE:2 [ sx#10 sx#3 ]
Allocated zp ZP_BYTE:3 [ sy#10 sy#3 ]
Allocated zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ]
Allocated zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ]
Allocated zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ]
Allocated zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 ]
Allocated zp ZP_BYTE:9 [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ]
Allocated zp ZP_BYTE:10 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ]
Allocated zp ZP_WORD:11 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ]
Allocated zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ]
Allocated zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ]
Allocated zp ZP_BYTE:15 [ debug_print_init::j#2 debug_print_init::j#1 ]
Allocated zp ZP_WORD:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ]
Allocated zp ZP_WORD:18 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ]
Allocated zp ZP_WORD:20 [ memset::dst#4 memset::dst#1 ]
Allocated zp ZP_BYTE:22 [ sprites_init::i#2 sprites_init::i#1 ]
Allocated zp ZP_BYTE:23 [ calculate_matrix::sx#0 ]
Allocated zp ZP_BYTE:24 [ calculate_matrix::sy#0 ]
Allocated zp ZP_BYTE:25 [ rotate_matrix::x#0 ]
Allocated zp ZP_BYTE:26 [ rotate_matrix::y#0 ]
Allocated zp ZP_BYTE:27 [ rotate_matrix::z#0 ]
Allocated zp ZP_BYTE:28 [ anim::i2#0 ]
Allocated zp ZP_BYTE:29 [ anim::$8 ]
Allocated zp ZP_BYTE:30 [ anim::$10 ]
Allocated zp ZP_BYTE:31 [ debug_print::print_sbyte_pos1_sb#0 ]
Allocated zp ZP_BYTE:32 [ debug_print::print_sbyte_pos2_sb#0 ]
Allocated zp ZP_BYTE:33 [ debug_print::print_sbyte_pos4_sb#0 ]
Allocated zp ZP_BYTE:34 [ debug_print::print_sbyte_pos5_sb#0 ]
Allocated zp ZP_BYTE:35 [ debug_print::print_sbyte_pos6_sb#0 ]
Allocated zp ZP_BYTE:36 [ debug_print::print_sbyte_pos7_sb#0 ]
Allocated zp ZP_BYTE:37 [ debug_print::print_sbyte_pos8_sb#0 ]
Allocated zp ZP_BYTE:38 [ debug_print::print_sbyte_pos9_sb#0 ]
Allocated zp ZP_BYTE:39 [ debug_print::print_sbyte_pos10_sb#0 ]
Allocated zp ZP_BYTE:40 [ debug_print::print_sbyte_pos11_sb#0 ]
Allocated zp ZP_BYTE:41 [ debug_print::print_sbyte_pos12_sb#0 ]
Allocated zp ZP_BYTE:42 [ print_byte_at::b#0 ]
Allocated zp ZP_WORD:43 [ print_byte_at::at#0 ]
Allocated zp ZP_BYTE:45 [ print_byte_at::$0 ]
Allocated zp ZP_BYTE:46 [ print_byte_at::$2 ]
Allocated zp ZP_BYTE:47 [ calculate_matrix::t1#0 ]
Allocated zp ZP_BYTE:48 [ calculate_matrix::t2#0 ]
Allocated zp ZP_BYTE:49 [ calculate_matrix::t3#0 ]
Allocated zp ZP_BYTE:50 [ calculate_matrix::t4#0 ]
Allocated zp ZP_BYTE:51 [ calculate_matrix::t5#0 ]
Allocated zp ZP_BYTE:52 [ calculate_matrix::t6#0 ]
Allocated zp ZP_BYTE:53 [ calculate_matrix::t7#0 ]
Allocated zp ZP_BYTE:54 [ calculate_matrix::t8#0 ]
Allocated zp ZP_BYTE:55 [ calculate_matrix::t9#0 ]
Allocated zp ZP_BYTE:56 [ calculate_matrix::t10#0 ]
Allocated zp ZP_BYTE:57 [ calculate_matrix::$10 ]
Allocated zp ZP_BYTE:58 [ calculate_matrix::$11 ]
Allocated zp ZP_BYTE:59 [ calculate_matrix::$12 ]
Allocated zp ZP_BYTE:60 [ calculate_matrix::$13 ]
Allocated zp ZP_BYTE:61 [ calculate_matrix::$14 ]
Allocated zp ZP_BYTE:62 [ calculate_matrix::$15 ]
Allocated zp ZP_BYTE:63 [ calculate_matrix::$16 ]
Allocated zp ZP_BYTE:64 [ calculate_matrix::$17 ]
Allocated zp ZP_BYTE:65 [ calculate_matrix::$18 ]
Allocated zp ZP_BYTE:66 [ calculate_matrix::$19 ]
Allocated zp ZP_BYTE:67 [ calculate_matrix::$20 ]
Allocated zp ZP_BYTE:68 [ calculate_matrix::$21 ]
Allocated zp ZP_BYTE:69 [ calculate_matrix::$22 ]
Allocated zp ZP_BYTE:70 [ calculate_matrix::$23 ]
Allocated zp ZP_BYTE:71 [ calculate_matrix::$24 ]
Allocated zp ZP_BYTE:72 [ calculate_matrix::$25 ]
Allocated zp ZP_BYTE:73 [ calculate_matrix::$26 ]
Allocated zp ZP_BYTE:74 [ calculate_matrix::$27 ]
Allocated zp ZP_BYTE:75 [ calculate_matrix::$28 ]
Allocated zp ZP_BYTE:76 [ calculate_matrix::$29 ]
Allocated zp ZP_BYTE:77 [ calculate_matrix::$30 ]
Allocated zp ZP_BYTE:78 [ calculate_matrix::$31 ]
Allocated zp ZP_BYTE:79 [ calculate_matrix::$32 ]
Allocated zp ZP_BYTE:80 [ calculate_matrix::$33 ]
Allocated zp ZP_BYTE:81 [ calculate_matrix::$34 ]
Allocated zp ZP_BYTE:82 [ debug_print_init::col#0 ]
Allocated zp ZP_WORD:83 [ debug_print_init::$41 ]
Allocated zp ZP_WORD:85 [ debug_print_init::$44 ]
Allocated zp ZP_WORD:87 [ debug_print_init::$47 ]
Allocated zp ZP_WORD:89 [ debug_print_init::$50 ]
Allocated zp ZP_WORD:91 [ debug_print_init::$53 ]
Allocated zp ZP_WORD:93 [ debug_print_init::$56 ]
Allocated zp ZP_WORD:95 [ debug_print_init::$59 ]
Allocated zp ZP_WORD:97 [ debug_print_init::$62 ]
Allocated zp ZP_WORD:99 [ debug_print_init::$65 ]

INITIAL ASM
Target platform is c64basic
  // File Comments
// 3D Rotation using a Rotation Matrix
// Based on: 
// - C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt
// - Codebase64 Article http://codebase64.org/doku.php?id=base:3d_rotation  
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(bbegin)
.pc = $80d "Program"
  // Global Constants & labels
  .label SPRITES_XPOS = $d000
  .label SPRITES_YPOS = $d001
  .label RASTER = $d012
  .label SPRITES_ENABLE = $d015
  .label BORDERCOL = $d020
  .label SPRITES_COLS = $d027
  .const GREEN = 5
  .const LIGHT_BLUE = $e
  .const LIGHT_GREY = $f
  .label print_screen = $400
  // The rotated point - updated by calling rotate_matrix()
  .label xr = $f0
  .label yr = $f1
  .label zr = $f2
  // The rotated point with perspective
  .label pp = $f3
  .label xp = $f4
  .label yp = $f5
  // Pointers used to multiply perspective (d/z0-z) onto x- & y-coordinates. Points into mulf_sqr1 / mulf_sqr2  
  .label psp1 = $f6
  .label psp2 = $f8
  .label SCREEN = $400
  .const sz = 0
  // A single sprite
  .label SPRITE = $3000
  .label COSH = SINH+$40
  .label COSQ = SINQ+$40
  .label sx = 2
  .label sy = 3
  // @begin
bbegin:
  jmp b1
  // @1
b1:
  // 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)  }}
  // [2] call main 
  jsr main
  // [3] phi from @1 to @end [phi:@1->@end]
bend_from_b1:
  jmp bend
  // @end
bend:
  // main
main: {
    // asm { sei  }
    sei
    // [5] call sprites_init 
    jsr sprites_init
    jmp b1
    // main::@1
  b1:
    // [6] *((const word*) psp1#0) ← (word)(const byte[$200]) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 
    //mulf_init();
    lda #<mulf_sqr1
    sta psp1
    lda #>mulf_sqr1
    sta psp1+1
    // [7] *((const word*) psp2#0) ← (word)(const byte[$200]) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 
    lda #<mulf_sqr2
    sta psp2
    lda #>mulf_sqr2
    sta psp2+1
    // [8] call debug_print_init 
    // [181] phi from main::@1 to debug_print_init [phi:main::@1->debug_print_init]
  debug_print_init_from_b1:
    jsr debug_print_init
    // [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  b2_from_b1:
    jmp b2
    // main::@2
  b2:
    // [10] call anim 
    // [12] phi from main::@2 to anim [phi:main::@2->anim]
  anim_from_b2:
    jsr anim
    jmp breturn
    // main::@return
  breturn:
    // [11] return 
    rts
}
  // anim
anim: {
    .label _8 = $1d
    .label _10 = $1e
    .label i2 = $1c
    .label i = 4
    // [13] phi from anim to anim::@1 [phi:anim->anim::@1]
  b1_from_anim:
    // [13] phi (signed byte) sy#10 = (signed byte) 0 [phi:anim->anim::@1#0] -- vbsz1=vbsc1 
    lda #0
    sta.z sy
    // [13] phi (signed byte) sx#10 = (signed byte) 0 [phi:anim->anim::@1#1] -- vbsz1=vbsc1 
    lda #0
    sta.z sx
    jmp b1
  //signed byte xmin = 0;
  //signed byte xmax = 0;
    // anim::@1
  b1:
    jmp b2
    // anim::@2
  b2:
    // [14] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda #$ff
    cmp RASTER
    bne b2
    jmp b3
    // anim::@3
  b3:
    // [15] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda #$fe
    cmp RASTER
    bne b3
    jmp b4
    // anim::@4
  b4:
    // [16] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda #$fd
    cmp RASTER
    bne b4
    jmp b5
    // anim::@5
  b5:
    // [17] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
    // [18] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 -- vbsz1=vbsz2 
    lda.z sx
    sta.z calculate_matrix.sx
    // [19] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10 -- vbsz1=vbsz2 
    lda.z sy
    sta.z calculate_matrix.sy
    // [20] call calculate_matrix 
    jsr calculate_matrix
    // [21] phi from anim::@5 to anim::@8 [phi:anim::@5->anim::@8]
  b8_from_b5:
    jmp b8
    // anim::@8
  b8:
    // [22] call store_matrix 
    jsr store_matrix
    // [23] phi from anim::@8 to anim::@6 [phi:anim::@8->anim::@6]
  b6_from_b8:
    // [23] phi (byte) anim::i#2 = (byte) 0 [phi:anim::@8->anim::@6#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp b6
    // [23] phi from anim::@9 to anim::@6 [phi:anim::@9->anim::@6]
  b6_from_b9:
    // [23] phi (byte) anim::i#2 = (byte) anim::i#1 [phi:anim::@9->anim::@6#0] -- register_copy 
    jmp b6
    // anim::@6
  b6:
    // [24] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
    // [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy.z i
    lda xs,y
    sta.z rotate_matrix.x
    // [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy.z i
    lda ys,y
    sta.z rotate_matrix.y
    // [27] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy.z i
    lda zs,y
    sta.z rotate_matrix.z
    // [28] call rotate_matrix 
    jsr rotate_matrix
    jmp b9
    // anim::@9
  b9:
    // [29] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    //if(*xr<xmin) xmin = *xr;
    //if(*xr>xmax) xmax = *xr;
    ldy.z i
    lda xr
    sta xrs,y
    // [30] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy.z i
    lda yr
    sta yrs,y
    // [31] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy.z i
    lda zr
    sta zrs,y
    // [32] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy.z i
    lda pp
    sta pps,y
    // [33] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy.z i
    lda xp
    sta xps,y
    // [34] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy.z i
    lda yp
    sta yps,y
    // [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 
    lda.z i
    asl
    sta.z i2
    // [36] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) -- vbuz1=vbuc1_plus__deref_pbuc2 
    lda #$80
    clc
    adc xp
    sta.z _8
    // [37] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$8 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z _8
    ldy.z i2
    sta SPRITES_XPOS,y
    // [38] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) -- vbuz1=vbuc1_plus__deref_pbuc2 
    lda #$80
    clc
    adc yp
    sta.z _10
    // [39] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$10 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z _10
    ldy.z i2
    sta SPRITES_YPOS,y
    // [40] (byte) anim::i#1 ← ++ (byte) anim::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [41] if((byte) anim::i#1!=(byte) 8) goto anim::@6 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z i
    bne b6_from_b9
    jmp b7
    // anim::@7
  b7:
    // [42] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 -- _deref_pbuc1=vbuc2 
    lda #LIGHT_GREY
    sta BORDERCOL
    // [43] call debug_print 
    jsr debug_print
    jmp b10
    // anim::@10
  b10:
    // [44] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 
    lda #LIGHT_BLUE
    sta BORDERCOL
    // [45] (signed byte) sx#3 ← (signed byte) sx#10 + (signed byte) 2 -- vbsz1=vbsz1_plus_2 
    // Increment angles        
    inc.z sx
    inc.z sx
    // [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 -- vbsz1=vbsz1_minus_vbsc1 
    lax.z sy
    axs #3
    stx.z sy
    // [13] phi from anim::@10 to anim::@1 [phi:anim::@10->anim::@1]
  b1_from_b10:
    // [13] phi (signed byte) sy#10 = (signed byte) sy#3 [phi:anim::@10->anim::@1#0] -- register_copy 
    // [13] phi (signed byte) sx#10 = (signed byte) sx#3 [phi:anim::@10->anim::@1#1] -- register_copy 
    jmp b1
}
  // debug_print
debug_print: {
    .const print_sbyte_pos1_col = $25
    .const print_sbyte_pos2_row = 1
    .const print_sbyte_pos2_col = $25
    .const print_sbyte_pos3_row = 2
    .const print_sbyte_pos3_col = $25
    .const print_sbyte_pos4_row = 4
    .const print_sbyte_pos4_col = $1d
    .const print_sbyte_pos5_row = 4
    .const print_sbyte_pos5_col = $21
    .const print_sbyte_pos6_row = 4
    .const print_sbyte_pos6_col = $25
    .const print_sbyte_pos7_row = 5
    .const print_sbyte_pos7_col = $1d
    .const print_sbyte_pos8_row = 5
    .const print_sbyte_pos8_col = $21
    .const print_sbyte_pos9_row = 5
    .const print_sbyte_pos9_col = $25
    .const print_sbyte_pos10_row = 6
    .const print_sbyte_pos10_col = $1d
    .const print_sbyte_pos11_row = 6
    .const print_sbyte_pos11_col = $21
    .const print_sbyte_pos12_row = 6
    .const print_sbyte_pos12_col = $25
    .label at_line = SCREEN+$13*$28
    .label print_sbyte_pos1_sb = $1f
    .label print_sbyte_pos2_sb = $20
    .label print_sbyte_pos4_sb = $21
    .label print_sbyte_pos5_sb = $22
    .label print_sbyte_pos6_sb = $23
    .label print_sbyte_pos7_sb = $24
    .label print_sbyte_pos8_sb = $25
    .label print_sbyte_pos9_sb = $26
    .label print_sbyte_pos10_sb = $27
    .label print_sbyte_pos11_sb = $28
    .label print_sbyte_pos12_sb = $29
    .label c = 5
    .label i = 6
    // [47] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsz1=vbsz2 
    lda.z sx
    sta.z print_sbyte_pos1_sb
    jmp print_sbyte_pos1
    // debug_print::print_sbyte_pos1
  print_sbyte_pos1:
    // [48] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 -- vbsz1=vbsz2 
    lda.z print_sbyte_pos1_sb
    sta.z print_sbyte_at.b
    // [49] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos1 to print_sbyte_at [phi:debug_print::print_sbyte_pos1->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos1:
    // [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_col#0 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos1_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos1_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#4 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b2
    // debug_print::@2
  b2:
    // [50] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsz1=vbsz2 
    lda.z sy
    sta.z print_sbyte_pos2_sb
    jmp print_sbyte_pos2
    // debug_print::print_sbyte_pos2
  print_sbyte_pos2:
    // [51] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 -- vbsz1=vbsz2 
    lda.z print_sbyte_pos2_sb
    sta.z print_sbyte_at.b
    // [52] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos2 to print_sbyte_at [phi:debug_print::print_sbyte_pos2->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos2:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#5 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // [53] phi from debug_print::print_sbyte_pos2 to debug_print::print_sbyte_pos3 [phi:debug_print::print_sbyte_pos2->debug_print::print_sbyte_pos3]
  print_sbyte_pos3_from_print_sbyte_pos2:
    jmp print_sbyte_pos3
    // debug_print::print_sbyte_pos3
  print_sbyte_pos3:
    // [54] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos3 to print_sbyte_at [phi:debug_print::print_sbyte_pos3->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos3:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (const signed byte) sz#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#1] -- vbsz1=vbsc1 
    lda #sz
    sta.z print_sbyte_at.b
    jsr print_sbyte_at
    jmp b3
    // debug_print::@3
  b3:
    // [55] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) -- vbsz1=_deref_pbsc1 
    lda rotation_matrix
    sta.z print_sbyte_pos4_sb
    jmp print_sbyte_pos4
    // debug_print::print_sbyte_pos4
  print_sbyte_pos4:
    // [56] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 -- vbsz1=vbsz2 
    lda.z print_sbyte_pos4_sb
    sta.z print_sbyte_at.b
    // [57] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos4 to print_sbyte_at [phi:debug_print::print_sbyte_pos4->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos4:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#7 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b4
    // debug_print::@4
  b4:
    // [58] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 1) -- vbsz1=_deref_pbsc1 
    lda rotation_matrix+1
    sta.z print_sbyte_pos5_sb
    jmp print_sbyte_pos5
    // debug_print::print_sbyte_pos5
  print_sbyte_pos5:
    // [59] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 -- vbsz1=vbsz2 
    lda.z print_sbyte_pos5_sb
    sta.z print_sbyte_at.b
    // [60] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos5 to print_sbyte_at [phi:debug_print::print_sbyte_pos5->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos5:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#8 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b5
    // debug_print::@5
  b5:
    // [61] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 2) -- vbsz1=_deref_pbsc1 
    lda rotation_matrix+2
    sta.z print_sbyte_pos6_sb
    jmp print_sbyte_pos6
    // debug_print::print_sbyte_pos6
  print_sbyte_pos6:
    // [62] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 -- vbsz1=vbsz2 
    lda.z print_sbyte_pos6_sb
    sta.z print_sbyte_at.b
    // [63] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos6 to print_sbyte_at [phi:debug_print::print_sbyte_pos6->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos6:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#9 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b6
    // debug_print::@6
  b6:
    // [64] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 3) -- vbsz1=_deref_pbsc1 
    lda rotation_matrix+3
    sta.z print_sbyte_pos7_sb
    jmp print_sbyte_pos7
    // debug_print::print_sbyte_pos7
  print_sbyte_pos7:
    // [65] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 -- vbsz1=vbsz2 
    lda.z print_sbyte_pos7_sb
    sta.z print_sbyte_at.b
    // [66] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos7 to print_sbyte_at [phi:debug_print::print_sbyte_pos7->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos7:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#10 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b7
    // debug_print::@7
  b7:
    // [67] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 4) -- vbsz1=_deref_pbsc1 
    lda rotation_matrix+4
    sta.z print_sbyte_pos8_sb
    jmp print_sbyte_pos8
    // debug_print::print_sbyte_pos8
  print_sbyte_pos8:
    // [68] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 -- vbsz1=vbsz2 
    lda.z print_sbyte_pos8_sb
    sta.z print_sbyte_at.b
    // [69] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos8 to print_sbyte_at [phi:debug_print::print_sbyte_pos8->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos8:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#11 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b8
    // debug_print::@8
  b8:
    // [70] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 5) -- vbsz1=_deref_pbsc1 
    lda rotation_matrix+5
    sta.z print_sbyte_pos9_sb
    jmp print_sbyte_pos9
    // debug_print::print_sbyte_pos9
  print_sbyte_pos9:
    // [71] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 -- vbsz1=vbsz2 
    lda.z print_sbyte_pos9_sb
    sta.z print_sbyte_at.b
    // [72] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos9 to print_sbyte_at [phi:debug_print::print_sbyte_pos9->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos9:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#12 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b9
    // debug_print::@9
  b9:
    // [73] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 6) -- vbsz1=_deref_pbsc1 
    lda rotation_matrix+6
    sta.z print_sbyte_pos10_sb
    jmp print_sbyte_pos10
    // debug_print::print_sbyte_pos10
  print_sbyte_pos10:
    // [74] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 -- vbsz1=vbsz2 
    lda.z print_sbyte_pos10_sb
    sta.z print_sbyte_at.b
    // [75] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos10 to print_sbyte_at [phi:debug_print::print_sbyte_pos10->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos10:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#13 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b10
    // debug_print::@10
  b10:
    // [76] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 7) -- vbsz1=_deref_pbsc1 
    lda rotation_matrix+7
    sta.z print_sbyte_pos11_sb
    jmp print_sbyte_pos11
    // debug_print::print_sbyte_pos11
  print_sbyte_pos11:
    // [77] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 -- vbsz1=vbsz2 
    lda.z print_sbyte_pos11_sb
    sta.z print_sbyte_at.b
    // [78] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos11 to print_sbyte_at [phi:debug_print::print_sbyte_pos11->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos11:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#14 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b11
    // debug_print::@11
  b11:
    // [79] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 8) -- vbsz1=_deref_pbsc1 
    lda rotation_matrix+8
    sta.z print_sbyte_pos12_sb
    jmp print_sbyte_pos12
    // debug_print::print_sbyte_pos12
  print_sbyte_pos12:
    // [80] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 -- vbsz1=vbsz2 
    lda.z print_sbyte_pos12_sb
    sta.z print_sbyte_at.b
    // [81] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos12 to print_sbyte_at [phi:debug_print::print_sbyte_pos12->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos12:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#15 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // [82] phi from debug_print::print_sbyte_pos12 to debug_print::@1 [phi:debug_print::print_sbyte_pos12->debug_print::@1]
  b1_from_print_sbyte_pos12:
    // [82] phi (byte) debug_print::i#2 = (byte) 0 [phi:debug_print::print_sbyte_pos12->debug_print::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    // [82] phi (byte) debug_print::c#2 = (byte) 4 [phi:debug_print::print_sbyte_pos12->debug_print::@1#1] -- vbuz1=vbuc1 
    lda #4
    sta.z c
    jmp b1
    // [82] phi from debug_print::@17 to debug_print::@1 [phi:debug_print::@17->debug_print::@1]
  b1_from_b17:
    // [82] phi (byte) debug_print::i#2 = (byte) debug_print::i#1 [phi:debug_print::@17->debug_print::@1#0] -- register_copy 
    // [82] phi (byte) debug_print::c#2 = (byte) debug_print::c#1 [phi:debug_print::@17->debug_print::@1#1] -- register_copy 
    jmp b1
    // debug_print::@1
  b1:
    // [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line
    sta.z print_sbyte_at.at
    lda #>at_line
    adc #0
    sta.z print_sbyte_at.at+1
    // [84] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy.z i
    lda xrs,y
    sta.z print_sbyte_at.b
    // [85] call print_sbyte_at 
    // [105] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at]
  print_sbyte_at_from_b1:
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#15 [phi:debug_print::@1->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#16 [phi:debug_print::@1->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b12
    // debug_print::@12
  b12:
    // [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*1
    sta.z print_sbyte_at.at
    lda #>at_line+$28*1
    adc #0
    sta.z print_sbyte_at.at+1
    // [87] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy.z i
    lda yrs,y
    sta.z print_sbyte_at.b
    // [88] call print_sbyte_at 
    // [105] phi from debug_print::@12 to print_sbyte_at [phi:debug_print::@12->print_sbyte_at]
  print_sbyte_at_from_b12:
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#16 [phi:debug_print::@12->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#17 [phi:debug_print::@12->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b13
    // debug_print::@13
  b13:
    // [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*2
    sta.z print_sbyte_at.at
    lda #>at_line+$28*2
    adc #0
    sta.z print_sbyte_at.at+1
    // [90] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy.z i
    lda zrs,y
    sta.z print_sbyte_at.b
    // [91] call print_sbyte_at 
    // [105] phi from debug_print::@13 to print_sbyte_at [phi:debug_print::@13->print_sbyte_at]
  print_sbyte_at_from_b13:
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#17 [phi:debug_print::@13->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#18 [phi:debug_print::@13->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b14
    // debug_print::@14
  b14:
    // [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*3
    sta.z print_sbyte_at.at
    lda #>at_line+$28*3
    adc #0
    sta.z print_sbyte_at.at+1
    // [93] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy.z i
    lda pps,y
    sta.z print_sbyte_at.b
    // [94] call print_sbyte_at 
    // [105] phi from debug_print::@14 to print_sbyte_at [phi:debug_print::@14->print_sbyte_at]
  print_sbyte_at_from_b14:
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#18 [phi:debug_print::@14->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#19 [phi:debug_print::@14->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b15
    // debug_print::@15
  b15:
    // [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*4
    sta.z print_sbyte_at.at
    lda #>at_line+$28*4
    adc #0
    sta.z print_sbyte_at.at+1
    // [96] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy.z i
    lda xps,y
    sta.z print_sbyte_at.b
    // [97] call print_sbyte_at 
    // [105] phi from debug_print::@15 to print_sbyte_at [phi:debug_print::@15->print_sbyte_at]
  print_sbyte_at_from_b15:
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#19 [phi:debug_print::@15->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#20 [phi:debug_print::@15->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b16
    // debug_print::@16
  b16:
    // [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*5
    sta.z print_sbyte_at.at
    lda #>at_line+$28*5
    adc #0
    sta.z print_sbyte_at.at+1
    // [99] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy.z i
    lda yps,y
    sta.z print_sbyte_at.b
    // [100] call print_sbyte_at 
    // [105] phi from debug_print::@16 to print_sbyte_at [phi:debug_print::@16->print_sbyte_at]
  print_sbyte_at_from_b16:
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#20 [phi:debug_print::@16->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#21 [phi:debug_print::@16->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b17
    // debug_print::@17
  b17:
    // [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c
    axs #-[4]
    stx.z c
    // [102] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [103] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z i
    bne b1_from_b17
    jmp breturn
    // debug_print::@return
  breturn:
    // [104] return 
    rts
}
  // print_sbyte_at
// Print a signed byte as hex at a specific screen position
// print_sbyte_at(signed byte zeropage(9) b, byte* zeropage(7) at)
print_sbyte_at: {
    .label b = 9
    .label at = 7
    // [106] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 
    lda.z b
    bmi b1
    jmp b3
    // print_sbyte_at::@3
  b3:
    // [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 -- pbuz1=pbuz2 
    lda.z at
    sta.z print_char_at.at
    lda.z at+1
    sta.z print_char_at.at+1
    // [108] call print_char_at 
    // [117] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at]
  print_char_at_from_b3:
    // [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy 
    // [117] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 
    lda #' '
    sta.z print_char_at.ch
    jsr print_char_at
    // [109] phi from print_sbyte_at::@3 print_sbyte_at::@4 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2]
  b2_from_b3:
  b2_from_b4:
    // [109] phi (signed byte) print_sbyte_at::b#24 = (signed byte) print_sbyte_at::b#22 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2#0] -- register_copy 
    jmp b2
    // print_sbyte_at::@2
  b2:
    // [110] (byte) print_byte_at::b#0 ← (byte)(signed byte) print_sbyte_at::b#24 -- vbuz1=vbuz2 
    lda.z b
    sta.z print_byte_at.b
    // [111] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 -- pbuz1=pbuz2_plus_1 
    lda.z at
    clc
    adc #1
    sta.z print_byte_at.at
    lda.z at+1
    adc #0
    sta.z print_byte_at.at+1
    // [112] call print_byte_at 
    jsr print_byte_at
    jmp breturn
    // print_sbyte_at::@return
  breturn:
    // [113] return 
    rts
    // print_sbyte_at::@1
  b1:
    // [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 -- pbuz1=pbuz2 
    lda.z at
    sta.z print_char_at.at
    lda.z at+1
    sta.z print_char_at.at+1
    // [115] call print_char_at 
    // [117] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at]
  print_char_at_from_b1:
    // [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy 
    // [117] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 
    lda #'-'
    sta.z print_char_at.ch
    jsr print_char_at
    jmp b4
    // print_sbyte_at::@4
  b4:
    // [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsz1=_neg_vbsz1 
    lda.z b
    eor #$ff
    clc
    adc #1
    sta.z b
    jmp b2_from_b4
}
  // print_char_at
// Print a single char
// print_char_at(byte zeropage($a) ch, byte* zeropage($b) at)
print_char_at: {
    .label at = $b
    .label ch = $a
    // [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 
    lda.z ch
    ldy #0
    sta (at),y
    jmp breturn
    // print_char_at::@return
  breturn:
    // [119] return 
    rts
}
  // print_byte_at
// Print a byte as HEX at a specific position
// print_byte_at(byte zeropage($2a) b, byte* zeropage($2b) at)
print_byte_at: {
    .label _0 = $2d
    .label _2 = $2e
    .label b = $2a
    .label at = $2b
    // [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuz1=vbuz2_ror_4 
    lda.z b
    lsr
    lsr
    lsr
    lsr
    sta.z _0
    // [121] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy.z _0
    lda print_hextab,y
    sta.z print_char_at.ch
    // [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 -- pbuz1=pbuz2 
    lda.z at
    sta.z print_char_at.at
    lda.z at+1
    sta.z print_char_at.at+1
    // [123] call print_char_at 
    // [117] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at]
  print_char_at_from_print_byte_at:
    // [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy 
    // [117] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy 
    jsr print_char_at
    jmp b1
    // print_byte_at::@1
  b1:
    // [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 
    lda #$f
    and.z b
    sta.z _2
    // [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 -- pbuz1=pbuz2_plus_1 
    lda.z at
    clc
    adc #1
    sta.z print_char_at.at
    lda.z at+1
    adc #0
    sta.z print_char_at.at+1
    // [126] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy.z _2
    lda print_hextab,y
    sta.z print_char_at.ch
    // [127] call print_char_at 
    // [117] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at]
  print_char_at_from_b1:
    // [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy 
    // [117] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy 
    jsr print_char_at
    jmp breturn
    // print_byte_at::@return
  breturn:
    // [128] return 
    rts
}
  // rotate_matrix
// Rotate a 3D point (x,y,z) using the rotation matrix
// The rotation matrix is prepared by calling prepare_matrix() 
// The passed points must be in the interval [-$3f;$3f].
// Implemented in assembler to utilize seriously fast multiplication 
// rotate_matrix(signed byte zeropage($19) x, signed byte zeropage($1a) y, signed byte zeropage($1b) z)
rotate_matrix: {
    .label x = $19
    .label y = $1a
    .label z = $1b
    // [129] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsz1 
    lda.z x
    sta xr
    // [130] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsz1 
    lda.z y
    sta yr
    // [131] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 -- _deref_pbsc1=vbsz1 
    lda.z z
    sta zr
    // 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  }
    ldx zr
  C1:
    lda mulf_sqr1,x
    sec
  C2:
    sbc mulf_sqr2,x
    sta C3+1
  F1:
    lda mulf_sqr1,x
    sec
  F2:
    sbc mulf_sqr2,x
    sta F3+1
  I1:
    lda mulf_sqr1,x
    sec
  I2:
    sbc mulf_sqr2,x
    sta I3+1
    ldx xr
    ldy yr
  I3:
    lda #0
    clc
  G1:
    adc mulf_sqr1,x
    sec
  G2:
    sbc mulf_sqr2,x
    clc
  H1:
    adc mulf_sqr1,y
    sec
  H2:
    sbc mulf_sqr2,y
    sta zr
    sta PP+1
  PP:
    lda PERSP_Z
    sta pp
    sta psp1
    eor #$ff
    sta psp2
  C3:
    lda #0
    clc
  A1:
    adc mulf_sqr1,x
    sec
  A2:
    sbc mulf_sqr2,x
    clc
  B1:
    adc mulf_sqr1,y
    sec
  B2:
    sbc mulf_sqr2,y
    sta xr
    sta XX+1
    clc
  F3:
    lda #0
    clc
  D1:
    adc mulf_sqr1,x
    sec
  D2:
    sbc mulf_sqr2,x
    clc
  E1:
    adc mulf_sqr1,y
    sec
  E2:
    sbc mulf_sqr2,y
    sta yr
    tay
    lda (psp1),y
    sec
    sbc (psp2),y
    sta yp
  XX:
    ldy #0
    lda (psp1),y
    sec
    sbc (psp2),y
    sta xp
    jmp breturn
    // rotate_matrix::@return
  breturn:
    // [133] return 
    rts
}
  // store_matrix
// Store the rotation matrix into the rotation routine rotate()
// After this each call to rotate() will rotate a point with the matrix
// Implemented in assembler to utilize seriously fast multiplication 
store_matrix: {
    // 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  }
    lda rotation_matrix+0
    sta rotate_matrix.A1+1
    eor #$ff
    sta rotate_matrix.A2+1
    lda rotation_matrix+1
    sta rotate_matrix.B1+1
    eor #$ff
    sta rotate_matrix.B2+1
    lda rotation_matrix+2
    sta rotate_matrix.C1+1
    eor #$ff
    sta rotate_matrix.C2+1
    lda rotation_matrix+3
    sta rotate_matrix.D1+1
    eor #$ff
    sta rotate_matrix.D2+1
    lda rotation_matrix+4
    sta rotate_matrix.E1+1
    eor #$ff
    sta rotate_matrix.E2+1
    lda rotation_matrix+5
    sta rotate_matrix.F1+1
    eor #$ff
    sta rotate_matrix.F2+1
    lda rotation_matrix+6
    sta rotate_matrix.G1+1
    eor #$ff
    sta rotate_matrix.G2+1
    lda rotation_matrix+7
    sta rotate_matrix.H1+1
    eor #$ff
    sta rotate_matrix.H2+1
    lda rotation_matrix+8
    sta rotate_matrix.I1+1
    eor #$ff
    sta rotate_matrix.I2+1
    jmp breturn
    // store_matrix::@return
  breturn:
    // [135] return 
    rts
}
  // calculate_matrix
// Prepare the 3x3 rotation matrix into rotation_matrix[]
// Angles sx, sy, sz are based on 2*PI=$100 
// Method described in C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt
// calculate_matrix(signed byte zeropage($17) sx, signed byte zeropage($18) sy)
calculate_matrix: {
    .label _10 = $39
    .label _11 = $3a
    .label _12 = $3b
    .label _13 = $3c
    .label _14 = $3d
    .label _15 = $3e
    .label _16 = $3f
    .label _17 = $40
    .label _18 = $41
    .label _19 = $42
    .label _20 = $43
    .label _21 = $44
    .label _22 = $45
    .label _23 = $46
    .label _24 = $47
    .label _25 = $48
    .label _26 = $49
    .label _27 = $4a
    .label _28 = $4b
    .label _29 = $4c
    .label _30 = $4d
    .label _31 = $4e
    .label _32 = $4f
    .label _33 = $50
    .label _34 = $51
    .label sx = $17
    .label sy = $18
    .label t1 = $2f
    .label t2 = $30
    .label t3 = $31
    .label t4 = $32
    .label t5 = $33
    .label t6 = $34
    .label t7 = $35
    .label t8 = $36
    .label t9 = $37
    .label t10 = $38
    // [136] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 -- vbsz1=vbsz2 
    lda.z sy
    sta.z t1
    // [137] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 -- vbsz1=vbsz2 
    lda.z sy
    sta.z t2
    // [138] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2 
    lda.z sx
    sta.z t3
    // [139] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2 
    lda.z sx
    sta.z t4
    // [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 -- vbsz1=vbsz2_plus_vbsz3 
    lda.z sx
    clc
    adc.z t2
    sta.z t5
    // [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsz2_minus_vbsz3 
    lda.z sx
    sec
    sbc.z t1
    sta.z t6
    // [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsz2_plus_vbsz3 
    lda.z sx
    clc
    adc.z t1
    sta.z t7
    // [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsz3 
    lda.z t2
    sec
    sbc.z sx
    sta.z t8
    // [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsz3 
    lda.z sy
    sec
    sbc.z sx
    sta.z t9
    // [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_plus_vbsz3 
    lda.z sy
    clc
    adc.z sx
    sta.z t10
    // [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 
    ldy.z t1
    lda COSH,y
    ldy.z t2
    clc
    adc COSH,y
    sta.z _10
    // [147] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsz1 
    lda.z _10
    sta rotation_matrix
    // [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t2#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 
    ldy.z t1
    lda SINH,y
    ldy.z t2
    sec
    sbc SINH,y
    sta.z _11
    // [149] *((const signed byte[9]) rotation_matrix#0+(byte) 1) ← (signed byte~) calculate_matrix::$11 -- _deref_pbsc1=vbsz1 
    lda.z _11
    sta rotation_matrix+1
    // [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz2 
    ldy.z sy
    clc
    lda SINH,y
    adc SINH,y
    sta.z _12
    // [151] *((const signed byte[9]) rotation_matrix#0+(byte) 2) ← (signed byte~) calculate_matrix::$12 -- _deref_pbsc1=vbsz1 
    lda.z _12
    sta rotation_matrix+2
    // [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 
    ldy.z t3
    lda SINH,y
    ldy.z t4
    sec
    sbc SINH,y
    sta.z _13
    // [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 
    lda.z _13
    ldy.z t6
    clc
    adc COSQ,y
    sta.z _14
    // [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda.z _14
    ldy.z t5
    sec
    sbc COSQ,y
    sta.z _15
    // [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 
    lda.z _15
    ldy.z t8
    clc
    adc COSQ,y
    sta.z _16
    // [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda.z _16
    ldy.z t7
    sec
    sbc COSQ,y
    sta.z _17
    // [157] *((const signed byte[9]) rotation_matrix#0+(byte) 3) ← (signed byte~) calculate_matrix::$17 -- _deref_pbsc1=vbsz1 
    lda.z _17
    sta rotation_matrix+3
    // [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 
    ldy.z t3
    lda COSH,y
    ldy.z t4
    clc
    adc COSH,y
    sta.z _18
    // [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 
    lda.z _18
    ldy.z t5
    clc
    adc SINQ,y
    sta.z _19
    // [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda.z _19
    ldy.z t6
    sec
    sbc SINQ,y
    sta.z _20
    // [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda.z _20
    ldy.z t7
    sec
    sbc SINQ,y
    sta.z _21
    // [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda.z _21
    ldy.z t8
    sec
    sbc SINQ,y
    sta.z _22
    // [163] *((const signed byte[9]) rotation_matrix#0+(byte) 4) ← (signed byte~) calculate_matrix::$22 -- _deref_pbsc1=vbsz1 
    lda.z _22
    sta rotation_matrix+4
    // [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t10#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 
    ldy.z t9
    lda SINH,y
    ldy.z t10
    sec
    sbc SINH,y
    sta.z _23
    // [165] *((const signed byte[9]) rotation_matrix#0+(byte) 5) ← (signed byte~) calculate_matrix::$23 -- _deref_pbsc1=vbsz1 
    lda.z _23
    sta rotation_matrix+5
    // [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 
    ldy.z t4
    lda COSH,y
    ldy.z t3
    sec
    sbc COSH,y
    sta.z _24
    // [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 
    lda.z _24
    ldy.z t6
    clc
    adc SINQ,y
    sta.z _25
    // [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda.z _25
    ldy.z t5
    sec
    sbc SINQ,y
    sta.z _26
    // [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda.z _26
    ldy.z t8
    sec
    sbc SINQ,y
    sta.z _27
    // [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda.z _27
    ldy.z t7
    sec
    sbc SINQ,y
    sta.z _28
    // [171] *((const signed byte[9]) rotation_matrix#0+(byte) 6) ← (signed byte~) calculate_matrix::$28 -- _deref_pbsc1=vbsz1 
    lda.z _28
    sta rotation_matrix+6
    // [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 
    ldy.z t3
    lda SINH,y
    ldy.z t4
    clc
    adc SINH,y
    sta.z _29
    // [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 
    lda.z _29
    ldy.z t6
    clc
    adc COSQ,y
    sta.z _30
    // [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda.z _30
    ldy.z t5
    sec
    sbc COSQ,y
    sta.z _31
    // [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 
    lda.z _31
    ldy.z t7
    clc
    adc COSQ,y
    sta.z _32
    // [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda.z _32
    ldy.z t8
    sec
    sbc COSQ,y
    sta.z _33
    // [177] *((const signed byte[9]) rotation_matrix#0+(byte) 7) ← (signed byte~) calculate_matrix::$33 -- _deref_pbsc1=vbsz1 
    lda.z _33
    sta rotation_matrix+7
    // [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 
    ldy.z t9
    lda COSH,y
    ldy.z t10
    clc
    adc COSH,y
    sta.z _34
    // [179] *((const signed byte[9]) rotation_matrix#0+(byte) 8) ← (signed byte~) calculate_matrix::$34 -- _deref_pbsc1=vbsz1 
    lda.z _34
    sta rotation_matrix+8
    jmp breturn
    // calculate_matrix::@return
  breturn:
    // [180] return 
    rts
}
  // debug_print_init
debug_print_init: {
    .label COLS = $d800
    .label at_line = SCREEN+$10*$28
    .label at_cols = COLS+$10*$28
    .label _41 = $53
    .label _44 = $55
    .label _47 = $57
    .label _50 = $59
    .label _53 = $5b
    .label _56 = $5d
    .label _59 = $5f
    .label _62 = $61
    .label _65 = $63
    .label col = $52
    .label j = $f
    .label c = $d
    .label i = $e
    // [182] call print_cls 
    // [250] phi from debug_print_init to print_cls [phi:debug_print_init->print_cls]
  print_cls_from_debug_print_init:
    jsr print_cls
    // [183] phi from debug_print_init to debug_print_init::@4 [phi:debug_print_init->debug_print_init::@4]
  b4_from_debug_print_init:
    jmp b4
    // debug_print_init::@4
  b4:
    // [184] call print_str_at 
    // [243] phi from debug_print_init::@4 to print_str_at [phi:debug_print_init::@4->print_str_at]
  print_str_at_from_b4:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte) $22 [phi:debug_print_init::@4->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$22
    sta.z print_str_at.at
    lda #>SCREEN+$22
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str [phi:debug_print_init::@4->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str_at.str
    lda #>str
    sta.z print_str_at.str+1
    jsr print_str_at
    // [185] phi from debug_print_init::@4 to debug_print_init::@5 [phi:debug_print_init::@4->debug_print_init::@5]
  b5_from_b4:
    jmp b5
    // debug_print_init::@5
  b5:
    // [186] call print_str_at 
    // [243] phi from debug_print_init::@5 to print_str_at [phi:debug_print_init::@5->print_str_at]
  print_str_at_from_b5:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 1+(byte) $22 [phi:debug_print_init::@5->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*1+$22
    sta.z print_str_at.at
    lda #>SCREEN+$28*1+$22
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str1 [phi:debug_print_init::@5->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str1
    sta.z print_str_at.str
    lda #>str1
    sta.z print_str_at.str+1
    jsr print_str_at
    // [187] phi from debug_print_init::@5 to debug_print_init::@6 [phi:debug_print_init::@5->debug_print_init::@6]
  b6_from_b5:
    jmp b6
    // debug_print_init::@6
  b6:
    // [188] call print_str_at 
    // [243] phi from debug_print_init::@6 to print_str_at [phi:debug_print_init::@6->print_str_at]
  print_str_at_from_b6:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 2+(byte) $22 [phi:debug_print_init::@6->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*2+$22
    sta.z print_str_at.at
    lda #>SCREEN+$28*2+$22
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str2 [phi:debug_print_init::@6->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str2
    sta.z print_str_at.str
    lda #>str2
    sta.z print_str_at.str+1
    jsr print_str_at
    // [189] phi from debug_print_init::@6 to debug_print_init::@7 [phi:debug_print_init::@6->debug_print_init::@7]
  b7_from_b6:
    jmp b7
    // debug_print_init::@7
  b7:
    // [190] call print_str_at 
    // [243] phi from debug_print_init::@7 to print_str_at [phi:debug_print_init::@7->print_str_at]
  print_str_at_from_b7:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $10 [phi:debug_print_init::@7->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$10
    sta.z print_str_at.at
    lda #>SCREEN+$28*$10
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str3 [phi:debug_print_init::@7->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str3
    sta.z print_str_at.str
    lda #>str3
    sta.z print_str_at.str+1
    jsr print_str_at
    // [191] phi from debug_print_init::@7 to debug_print_init::@8 [phi:debug_print_init::@7->debug_print_init::@8]
  b8_from_b7:
    jmp b8
    // debug_print_init::@8
  b8:
    // [192] call print_str_at 
    // [243] phi from debug_print_init::@8 to print_str_at [phi:debug_print_init::@8->print_str_at]
  print_str_at_from_b8:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $11 [phi:debug_print_init::@8->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$11
    sta.z print_str_at.at
    lda #>SCREEN+$28*$11
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str4 [phi:debug_print_init::@8->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str4
    sta.z print_str_at.str
    lda #>str4
    sta.z print_str_at.str+1
    jsr print_str_at
    // [193] phi from debug_print_init::@8 to debug_print_init::@9 [phi:debug_print_init::@8->debug_print_init::@9]
  b9_from_b8:
    jmp b9
    // debug_print_init::@9
  b9:
    // [194] call print_str_at 
    // [243] phi from debug_print_init::@9 to print_str_at [phi:debug_print_init::@9->print_str_at]
  print_str_at_from_b9:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $12 [phi:debug_print_init::@9->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$12
    sta.z print_str_at.at
    lda #>SCREEN+$28*$12
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str5 [phi:debug_print_init::@9->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str5
    sta.z print_str_at.str
    lda #>str5
    sta.z print_str_at.str+1
    jsr print_str_at
    // [195] phi from debug_print_init::@9 to debug_print_init::@10 [phi:debug_print_init::@9->debug_print_init::@10]
  b10_from_b9:
    jmp b10
    // debug_print_init::@10
  b10:
    // [196] call print_str_at 
    // [243] phi from debug_print_init::@10 to print_str_at [phi:debug_print_init::@10->print_str_at]
  print_str_at_from_b10:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $13 [phi:debug_print_init::@10->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$13
    sta.z print_str_at.at
    lda #>SCREEN+$28*$13
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str6 [phi:debug_print_init::@10->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str6
    sta.z print_str_at.str
    lda #>str6
    sta.z print_str_at.str+1
    jsr print_str_at
    // [197] phi from debug_print_init::@10 to debug_print_init::@11 [phi:debug_print_init::@10->debug_print_init::@11]
  b11_from_b10:
    jmp b11
    // debug_print_init::@11
  b11:
    // [198] call print_str_at 
    // [243] phi from debug_print_init::@11 to print_str_at [phi:debug_print_init::@11->print_str_at]
  print_str_at_from_b11:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $14 [phi:debug_print_init::@11->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$14
    sta.z print_str_at.at
    lda #>SCREEN+$28*$14
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str7 [phi:debug_print_init::@11->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str7
    sta.z print_str_at.str
    lda #>str7
    sta.z print_str_at.str+1
    jsr print_str_at
    // [199] phi from debug_print_init::@11 to debug_print_init::@12 [phi:debug_print_init::@11->debug_print_init::@12]
  b12_from_b11:
    jmp b12
    // debug_print_init::@12
  b12:
    // [200] call print_str_at 
    // [243] phi from debug_print_init::@12 to print_str_at [phi:debug_print_init::@12->print_str_at]
  print_str_at_from_b12:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $15 [phi:debug_print_init::@12->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$15
    sta.z print_str_at.at
    lda #>SCREEN+$28*$15
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str8 [phi:debug_print_init::@12->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str8
    sta.z print_str_at.str
    lda #>str8
    sta.z print_str_at.str+1
    jsr print_str_at
    // [201] phi from debug_print_init::@12 to debug_print_init::@13 [phi:debug_print_init::@12->debug_print_init::@13]
  b13_from_b12:
    jmp b13
    // debug_print_init::@13
  b13:
    // [202] call print_str_at 
    // [243] phi from debug_print_init::@13 to print_str_at [phi:debug_print_init::@13->print_str_at]
  print_str_at_from_b13:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $16 [phi:debug_print_init::@13->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$16
    sta.z print_str_at.at
    lda #>SCREEN+$28*$16
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str9 [phi:debug_print_init::@13->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str9
    sta.z print_str_at.str
    lda #>str9
    sta.z print_str_at.str+1
    jsr print_str_at
    // [203] phi from debug_print_init::@13 to debug_print_init::@14 [phi:debug_print_init::@13->debug_print_init::@14]
  b14_from_b13:
    jmp b14
    // debug_print_init::@14
  b14:
    // [204] call print_str_at 
    // [243] phi from debug_print_init::@14 to print_str_at [phi:debug_print_init::@14->print_str_at]
  print_str_at_from_b14:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $17 [phi:debug_print_init::@14->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$17
    sta.z print_str_at.at
    lda #>SCREEN+$28*$17
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str10 [phi:debug_print_init::@14->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str10
    sta.z print_str_at.str
    lda #>str10
    sta.z print_str_at.str+1
    jsr print_str_at
    // [205] phi from debug_print_init::@14 to debug_print_init::@15 [phi:debug_print_init::@14->debug_print_init::@15]
  b15_from_b14:
    jmp b15
    // debug_print_init::@15
  b15:
    // [206] call print_str_at 
    // [243] phi from debug_print_init::@15 to print_str_at [phi:debug_print_init::@15->print_str_at]
  print_str_at_from_b15:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $18 [phi:debug_print_init::@15->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$18
    sta.z print_str_at.at
    lda #>SCREEN+$28*$18
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str11 [phi:debug_print_init::@15->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str11
    sta.z print_str_at.str
    lda #>str11
    sta.z print_str_at.str+1
    jsr print_str_at
    // [207] phi from debug_print_init::@15 to debug_print_init::@1 [phi:debug_print_init::@15->debug_print_init::@1]
  b1_from_b15:
    // [207] phi (byte) debug_print_init::i#2 = (byte) 0 [phi:debug_print_init::@15->debug_print_init::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    // [207] phi (byte) debug_print_init::c#2 = (byte) 4 [phi:debug_print_init::@15->debug_print_init::@1#1] -- vbuz1=vbuc1 
    lda #4
    sta.z c
    jmp b1
    // [207] phi from debug_print_init::@3 to debug_print_init::@1 [phi:debug_print_init::@3->debug_print_init::@1]
  b1_from_b3:
    // [207] phi (byte) debug_print_init::i#2 = (byte) debug_print_init::i#1 [phi:debug_print_init::@3->debug_print_init::@1#0] -- register_copy 
    // [207] phi (byte) debug_print_init::c#2 = (byte) debug_print_init::c#1 [phi:debug_print_init::@3->debug_print_init::@1#1] -- register_copy 
    jmp b1
    // debug_print_init::@1
  b1:
    // [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line
    sta.z print_sbyte_at.at
    lda #>at_line
    adc #0
    sta.z print_sbyte_at.at+1
    // [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy.z i
    lda xs,y
    sta.z print_sbyte_at.b
    // [210] call print_sbyte_at 
    // [105] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at]
  print_sbyte_at_from_b1:
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#0 [phi:debug_print_init::@1->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#1 [phi:debug_print_init::@1->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b16
    // debug_print_init::@16
  b16:
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*1
    sta.z print_sbyte_at.at
    lda #>at_line+$28*1
    adc #0
    sta.z print_sbyte_at.at+1
    // [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy.z i
    lda ys,y
    sta.z print_sbyte_at.b
    // [213] call print_sbyte_at 
    // [105] phi from debug_print_init::@16 to print_sbyte_at [phi:debug_print_init::@16->print_sbyte_at]
  print_sbyte_at_from_b16:
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#1 [phi:debug_print_init::@16->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#2 [phi:debug_print_init::@16->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b17
    // debug_print_init::@17
  b17:
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*2
    sta.z print_sbyte_at.at
    lda #>at_line+$28*2
    adc #0
    sta.z print_sbyte_at.at+1
    // [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy.z i
    lda zs,y
    sta.z print_sbyte_at.b
    // [216] call print_sbyte_at 
    // [105] phi from debug_print_init::@17 to print_sbyte_at [phi:debug_print_init::@17->print_sbyte_at]
  print_sbyte_at_from_b17:
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#2 [phi:debug_print_init::@17->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#3 [phi:debug_print_init::@17->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // [217] phi from debug_print_init::@17 to debug_print_init::@2 [phi:debug_print_init::@17->debug_print_init::@2]
  b2_from_b17:
    // [217] phi (byte) debug_print_init::j#2 = (byte) 0 [phi:debug_print_init::@17->debug_print_init::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z j
    jmp b2
    // [217] phi from debug_print_init::@2 to debug_print_init::@2 [phi:debug_print_init::@2->debug_print_init::@2]
  b2_from_b2:
    // [217] phi (byte) debug_print_init::j#2 = (byte) debug_print_init::j#1 [phi:debug_print_init::@2->debug_print_init::@2#0] -- register_copy 
    jmp b2
    // debug_print_init::@2
  b2:
    // [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 -- vbuz1=vbuc1_plus_vbuz2 
    lax.z i
    axs #-[8]
    stx.z col
    // [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols
    sta.z _41
    lda #>at_cols
    adc #0
    sta.z _41+1
    // [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda.z col
    ldy.z j
    sta (_41),y
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*1
    sta.z _44
    lda #>at_cols+$28*1
    adc #0
    sta.z _44+1
    // [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda.z col
    ldy.z j
    sta (_44),y
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*2
    sta.z _47
    lda #>at_cols+$28*2
    adc #0
    sta.z _47+1
    // [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda.z col
    ldy.z j
    sta (_47),y
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*3
    sta.z _50
    lda #>at_cols+$28*3
    adc #0
    sta.z _50+1
    // [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda.z col
    ldy.z j
    sta (_50),y
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*4
    sta.z _53
    lda #>at_cols+$28*4
    adc #0
    sta.z _53+1
    // [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda.z col
    ldy.z j
    sta (_53),y
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*5
    sta.z _56
    lda #>at_cols+$28*5
    adc #0
    sta.z _56+1
    // [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda.z col
    ldy.z j
    sta (_56),y
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*6
    sta.z _59
    lda #>at_cols+$28*6
    adc #0
    sta.z _59+1
    // [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda.z col
    ldy.z j
    sta (_59),y
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*7
    sta.z _62
    lda #>at_cols+$28*7
    adc #0
    sta.z _62+1
    // [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda.z col
    ldy.z j
    sta (_62),y
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*8
    sta.z _65
    lda #>at_cols+$28*8
    adc #0
    sta.z _65+1
    // [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda.z col
    ldy.z j
    sta (_65),y
    // [237] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 -- vbuz1=_inc_vbuz1 
    inc.z j
    // [238] if((byte) debug_print_init::j#1!=(byte) 4) goto debug_print_init::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda #4
    cmp.z j
    bne b2_from_b2
    jmp b3
    // debug_print_init::@3
  b3:
    // [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c
    axs #-[4]
    stx.z c
    // [240] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z i
    bne b1_from_b3
    jmp breturn
    // debug_print_init::@return
  breturn:
    // [242] return 
    rts
    str: .text "sx"
    .byte 0
    str1: .text "sy"
    .byte 0
    str2: .text "sz"
    .byte 0
    str3: .text "x"
    .byte 0
    str4: .text "y"
    .byte 0
    str5: .text "z"
    .byte 0
    str6: .text "xr"
    .byte 0
    str7: .text "yr"
    .byte 0
    str8: .text "zr"
    .byte 0
    str9: .text "pp"
    .byte 0
    str10: .text "xp"
    .byte 0
    str11: .text "yp"
    .byte 0
}
  // print_str_at
// Print a string at a specific screen position
// print_str_at(byte* zeropage($10) str, byte* zeropage($12) at)
print_str_at: {
    .label at = $12
    .label str = $10
    // [244] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1]
  b1_from_print_str_at:
  b1_from_b2:
    // [244] phi (byte*) print_str_at::at#13 = (byte*) print_str_at::at#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy 
    // [244] phi (byte*) print_str_at::str#13 = (byte*) print_str_at::str#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy 
    jmp b1
    // print_str_at::@1
  b1:
    // [245] if((byte) 0!=*((byte*) print_str_at::str#13)) goto print_str_at::@2 -- vbuc1_neq__deref_pbuz1_then_la1 
    ldy #0
    lda (str),y
    cmp #0
    bne b2
    jmp breturn
    // print_str_at::@return
  breturn:
    // [246] return 
    rts
    // print_str_at::@2
  b2:
    // [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    ldy #0
    sta (at),y
    // [248] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 -- pbuz1=_inc_pbuz1 
    inc.z at
    bne !+
    inc.z at+1
  !:
    // [249] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 -- pbuz1=_inc_pbuz1 
    inc.z str
    bne !+
    inc.z str+1
  !:
    jmp b1_from_b2
}
  // print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    // [251] call memset 
    // [253] phi from print_cls to memset [phi:print_cls->memset]
  memset_from_print_cls:
    jsr memset
    jmp breturn
    // print_cls::@return
  breturn:
    // [252] return 
    rts
}
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
memset: {
    .const c = ' '
    .const num = $3e8
    .label str = print_screen
    .label end = str+num
    .label dst = $14
    // [254] phi from memset to memset::@2 [phi:memset->memset::@2]
  b2_from_memset:
    // [254] phi (byte*) memset::dst#4 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@2#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    jmp b2
    // [254] phi from memset::@1 to memset::@2 [phi:memset::@1->memset::@2]
  b2_from_b1:
    // [254] phi (byte*) memset::dst#4 = (byte*) memset::dst#1 [phi:memset::@1->memset::@2#0] -- register_copy 
    jmp b2
    // memset::@2
  b2:
    // [255] *((byte*) memset::dst#4) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // [256] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#4 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    jmp b1
    // memset::@1
  b1:
    // [257] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 
    lda.z dst+1
    cmp #>end
    bne b2_from_b1
    lda.z dst
    cmp #<end
    bne b2_from_b1
    jmp breturn
    // memset::@return
  breturn:
    // [258] return 
    rts
}
  // sprites_init
// Initialize sprites
sprites_init: {
    .label SCREEN = $400
    .label sprites_ptr = SCREEN+$3f8
    .label i = $16
    // [259] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff -- _deref_pbuc1=vbuc2 
    lda #$ff
    sta SPRITES_ENABLE
    // [260] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1]
  b1_from_sprites_init:
    // [260] phi (byte) sprites_init::i#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp b1
    // [260] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1]
  b1_from_b1:
    // [260] phi (byte) sprites_init::i#2 = (byte) sprites_init::i#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy 
    jmp b1
    // sprites_init::@1
  b1:
    // [261] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 -- pbuc1_derefidx_vbuz1=vbuc2 
    lda #SPRITE/$40
    ldy.z i
    sta sprites_ptr,y
    // [262] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2 
    lda #GREEN
    ldy.z i
    sta SPRITES_COLS,y
    // [263] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [264] if((byte) sprites_init::i#1!=(byte) 8) goto sprites_init::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z i
    bne b1_from_b1
    jmp breturn
    // sprites_init::@return
  breturn:
    // [265] return 
    rts
}
  // File Data
  print_hextab: .text "0123456789abcdef"
  // Positions to rotate
  xs: .byte -$34, -$34, -$34, 0, 0, $34, $34, $34
  ys: .byte -$34, 0, $34, -$34, $34, -$34, 0, $34
  zs: .byte $34, $34, $34, $34, $34, $34, $34, $34
  // Rotated positions
  xrs: .fill 8, 0
  yrs: .fill 8, 0
  zrs: .fill 8, 0
  // Persepctive factors (from zrs)
  pps: .fill 8, 0
  // Rotated positions with persepctive
  xps: .fill 8, 0
  yps: .fill 8, 0
  // The rotation matrix
  rotation_matrix: .fill 9, 0
  // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x).
  // f(x) = >(( x * x ))
  .align $100
mulf_sqr1:
.for(var i=0;i<$200;i++) {
    	.if(i<=159) { .byte round((i*i)/256) }
    	.if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) }
    	.if(i>351) { .byte round(((512-i)*(512-i))/256) }
    }

  // g(x) =  >((( 1 - x ) * ( 1 - x )))
  .align $100
mulf_sqr2:
.for(var i=0;i<$200;i++) {
    	.if(i<=159) { .byte round((-i-1)*(-i-1)/256) }
    	.if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) }
    	.if(i>351) { .byte round(((i-511)*(i-511))/256) }  
    }

  // Perspective multiplication table containing (d/(z0-z)[z] for each z-value   
  .align $100
PERSP_Z:
{
    .var d = 256.0	
    .var z0 = 6.0	
    // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f)
    .for(var z=0;z<$100;z++) {
    	.if(z>127) {
    		.byte round(d / (z0 - ((z - 256) / 64.0)));
    	} else {
    		.byte round(d / (z0 - (z / 64.0)));
    	}
    }
	}

  // Sine and Cosine Tables   
  // Angles: $00=0, $80=PI,$100=2*PI
  // Half Sine/Cosine: signed fixed [-$20;20]
  .align $40
SINH:
{
    .var min = -$2000
    .var max = $2000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256)
    }
    }

  // Quarter Sine/Cosine: signed fixed [-$10,$10]
  .align $40
SINQ:
{
    .var min = -$1000
    .var max = $1000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256)
    }
    }

.pc = SPRITE "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)


REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] *((const word*) psp1#0) ← (word)(const byte[$200]) mulf_sqr1#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [7] *((const word*) psp2#0) ← (word)(const byte[$200]) mulf_sqr2#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [14] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ sx#10 sx#3 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ sy#10 sy#3 ]
Statement [15] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [16] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [29] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ]
Statement [30] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a 
Statement [31] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a 
Statement [32] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a 
Statement [33] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a 
Statement [34] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a 
Statement [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ) always clobbers reg byte a 
Statement [36] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:28 [ anim::i2#0 ]
Statement [38] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ) always clobbers reg byte a 
Statement [42] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [44] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 [ sx#3 sy#3 ] ( main:2::anim:10 [ sx#3 sy#3 ] ) always clobbers reg byte a 
Statement [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ]
Statement [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ) always clobbers reg byte a 
Statement [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ) always clobbers reg byte a 
Statement [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ) always clobbers reg byte a 
Statement [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ) always clobbers reg byte a 
Statement [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ) always clobbers reg byte a 
Statement [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ) always clobbers reg byte a 
Statement [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ]
Statement [111] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:42 [ print_byte_at::b#0 ]
Statement [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ) always clobbers reg byte a 
Statement [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 [ print_sbyte_at::at#21 print_sbyte_at::b#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] ) always clobbers reg byte a 
Statement [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ sx#10 sx#3 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ sy#10 sy#3 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:9 [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:42 [ print_byte_at::b#0 ]
Statement [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a 
Statement [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ]
Statement [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a 
Statement [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ print_byte_at::$2 ]
Statement 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  } always clobbers reg byte a reg byte x reg byte y 
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ sx#10 sx#3 ]
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:3 [ sy#10 sy#3 ]
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ]
Statement 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  } always clobbers reg byte a 
Statement [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ calculate_matrix::sx#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ calculate_matrix::sy#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ calculate_matrix::t1#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ calculate_matrix::t2#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ calculate_matrix::t3#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ calculate_matrix::t4#0 ]
Statement [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ calculate_matrix::t5#0 ]
Statement [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ calculate_matrix::t6#0 ]
Statement [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:53 [ calculate_matrix::t7#0 ]
Statement [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:54 [ calculate_matrix::t8#0 ]
Statement [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:55 [ calculate_matrix::t9#0 ]
Statement [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ calculate_matrix::t10#0 ]
Statement [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ) always clobbers reg byte a 
Statement [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ) always clobbers reg byte a 
Statement [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ) always clobbers reg byte a 
Statement [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ) always clobbers reg byte a 
Statement [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ) always clobbers reg byte a 
Statement [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ) always clobbers reg byte a 
Statement [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ) always clobbers reg byte a 
Statement [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ) always clobbers reg byte a 
Statement [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ) always clobbers reg byte a 
Statement [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ) always clobbers reg byte a 
Statement [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ) always clobbers reg byte a 
Statement [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ) always clobbers reg byte a 
Statement [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ) always clobbers reg byte a 
Statement [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ) always clobbers reg byte a 
Statement [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ) always clobbers reg byte a 
Statement [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ) always clobbers reg byte a 
Statement [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ) always clobbers reg byte a 
Statement [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ) always clobbers reg byte a 
Statement [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ) always clobbers reg byte a 
Statement [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ) always clobbers reg byte a 
Statement [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ) always clobbers reg byte a 
Statement [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ) always clobbers reg byte a 
Statement [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ) always clobbers reg byte a 
Statement [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::$34 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::$34 ] ) always clobbers reg byte a 
Statement [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [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 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [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 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ debug_print_init::j#2 debug_print_init::j#1 ]
Statement [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:82 [ debug_print_init::col#0 ]
Statement [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ) always clobbers reg byte a 
Statement [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ) always clobbers reg byte a 
Statement [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ) always clobbers reg byte a 
Statement [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ) always clobbers reg byte a 
Statement [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ) always clobbers reg byte a 
Statement [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ) always clobbers reg byte a 
Statement [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ) always clobbers reg byte a 
Statement [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ) always clobbers reg byte a 
Statement [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ) always clobbers reg byte a 
Statement [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 [ debug_print_init::i#2 debug_print_init::c#1 ] ( main:2::debug_print_init:8 [ debug_print_init::i#2 debug_print_init::c#1 ] ) always clobbers reg byte a reg byte x 
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ]
Statement [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 [ debug_print_init::c#1 debug_print_init::i#1 ] ( main:2::debug_print_init:8 [ debug_print_init::c#1 debug_print_init::i#1 ] ) always clobbers reg byte a 
Statement [245] if((byte) 0!=*((byte*) print_str_at::str#13)) goto print_str_at::@2 [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y 
Statement [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y 
Statement [255] *((byte*) memset::dst#4) ← (const byte) memset::c#0 [ memset::dst#4 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#4 ] ) always clobbers reg byte a reg byte y 
Statement [257] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#1 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#1 ] ) always clobbers reg byte a 
Statement [259] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff [ ] ( main:2::sprites_init:5 [ ] ) always clobbers reg byte a 
Statement [261] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ sprites_init::i#2 sprites_init::i#1 ]
Statement [262] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a 
Statement [6] *((const word*) psp1#0) ← (word)(const byte[$200]) mulf_sqr1#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [7] *((const word*) psp2#0) ← (word)(const byte[$200]) mulf_sqr2#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [14] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [15] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [16] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] ) always clobbers reg byte y 
Statement [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] ) always clobbers reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:25 [ rotate_matrix::x#0 ]
Statement [27] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] ) always clobbers reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:26 [ rotate_matrix::y#0 ]
Statement [29] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [30] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [31] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [32] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [33] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [34] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ) always clobbers reg byte a 
Statement [36] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ) always clobbers reg byte a 
Statement [38] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ) always clobbers reg byte a 
Statement [41] if((byte) anim::i#1!=(byte) 8) goto anim::@6 [ sx#10 sy#10 anim::i#1 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#1 ] ) always clobbers reg byte a 
Statement [42] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [44] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 [ sx#3 sy#3 ] ( main:2::anim:10 [ sx#3 sy#3 ] ) always clobbers reg byte a reg byte x 
Statement [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ) always clobbers reg byte a 
Statement [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ) always clobbers reg byte a 
Statement [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ) always clobbers reg byte a 
Statement [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ) always clobbers reg byte a 
Statement [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ) always clobbers reg byte a 
Statement [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ) always clobbers reg byte a 
Statement [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ) always clobbers reg byte a reg byte x 
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ]
Statement [103] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] ) always clobbers reg byte a 
Statement [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ) always clobbers reg byte a 
Statement [111] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a 
Statement [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ) always clobbers reg byte a 
Statement [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 [ print_sbyte_at::at#21 print_sbyte_at::b#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] ) always clobbers reg byte a 
Statement [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a 
Statement [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a 
Statement [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a 
Statement [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a 
Statement 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  } always clobbers reg byte a reg byte x reg byte y 
Statement 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  } always clobbers reg byte a 
Statement [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ) always clobbers reg byte a 
Statement [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ) always clobbers reg byte a 
Statement [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ) always clobbers reg byte a 
Statement [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ) always clobbers reg byte a 
Statement [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ) always clobbers reg byte a 
Statement [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ) always clobbers reg byte a 
Statement [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ) always clobbers reg byte a 
Statement [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ) always clobbers reg byte a 
Statement [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ) always clobbers reg byte a 
Statement [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ) always clobbers reg byte a 
Statement [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ) always clobbers reg byte a 
Statement [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ) always clobbers reg byte a 
Statement [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ) always clobbers reg byte a 
Statement [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ) always clobbers reg byte a 
Statement [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ) always clobbers reg byte a 
Statement [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ) always clobbers reg byte a 
Statement [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ) always clobbers reg byte a 
Statement [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ) always clobbers reg byte a 
Statement [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ) always clobbers reg byte a 
Statement [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ) always clobbers reg byte a 
Statement [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ) always clobbers reg byte a 
Statement [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ) always clobbers reg byte a 
Statement [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ) always clobbers reg byte a 
Statement [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ) always clobbers reg byte a 
Statement [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ) always clobbers reg byte a 
Statement [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ) always clobbers reg byte a 
Statement [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ) always clobbers reg byte a 
Statement [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ) always clobbers reg byte a 
Statement [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ) always clobbers reg byte a 
Statement [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ) always clobbers reg byte a 
Statement [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::$34 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::$34 ] ) always clobbers reg byte a 
Statement [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y 
Statement [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 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y 
Statement [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 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y 
Statement [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ) always clobbers reg byte a 
Statement [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ) always clobbers reg byte a 
Statement [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ) always clobbers reg byte a 
Statement [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ) always clobbers reg byte a 
Statement [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ) always clobbers reg byte a 
Statement [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ) always clobbers reg byte a 
Statement [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ) always clobbers reg byte a 
Statement [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ) always clobbers reg byte a 
Statement [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ) always clobbers reg byte a 
Statement [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ) always clobbers reg byte a 
Statement [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 [ debug_print_init::i#2 debug_print_init::c#1 ] ( main:2::debug_print_init:8 [ debug_print_init::i#2 debug_print_init::c#1 ] ) always clobbers reg byte a reg byte x 
Statement [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 [ debug_print_init::c#1 debug_print_init::i#1 ] ( main:2::debug_print_init:8 [ debug_print_init::c#1 debug_print_init::i#1 ] ) always clobbers reg byte a 
Statement [245] if((byte) 0!=*((byte*) print_str_at::str#13)) goto print_str_at::@2 [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y 
Statement [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y 
Statement [255] *((byte*) memset::dst#4) ← (const byte) memset::c#0 [ memset::dst#4 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#4 ] ) always clobbers reg byte a reg byte y 
Statement [257] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#1 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#1 ] ) always clobbers reg byte a 
Statement [259] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff [ ] ( main:2::sprites_init:5 [ ] ) always clobbers reg byte a 
Statement [261] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a 
Statement [262] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a 
Statement [6] *((const word*) psp1#0) ← (word)(const byte[$200]) mulf_sqr1#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [7] *((const word*) psp2#0) ← (word)(const byte[$200]) mulf_sqr2#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [14] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [15] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [16] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 ] ) always clobbers reg byte y 
Statement [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 ] ) always clobbers reg byte y 
Statement [27] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 rotate_matrix::x#0 rotate_matrix::y#0 rotate_matrix::z#0 ] ) always clobbers reg byte y 
Statement [29] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [30] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [31] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [32] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [33] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [34] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ) always clobbers reg byte a 
Statement [36] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ) always clobbers reg byte a 
Statement [38] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ) always clobbers reg byte a 
Statement [41] if((byte) anim::i#1!=(byte) 8) goto anim::@6 [ sx#10 sy#10 anim::i#1 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#1 ] ) always clobbers reg byte a 
Statement [42] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [44] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 [ sx#3 sy#3 ] ( main:2::anim:10 [ sx#3 sy#3 ] ) always clobbers reg byte a reg byte x 
Statement [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ) always clobbers reg byte a 
Statement [84] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 print_sbyte_at::b#16 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 print_sbyte_at::b#16 ] ) always clobbers reg byte y 
Statement [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ) always clobbers reg byte a 
Statement [87] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 print_sbyte_at::b#17 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 print_sbyte_at::b#17 ] ) always clobbers reg byte y 
Statement [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ) always clobbers reg byte a 
Statement [90] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 print_sbyte_at::b#18 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 print_sbyte_at::b#18 ] ) always clobbers reg byte y 
Statement [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ) always clobbers reg byte a 
Statement [93] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 print_sbyte_at::b#19 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 print_sbyte_at::b#19 ] ) always clobbers reg byte y 
Statement [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ) always clobbers reg byte a 
Statement [96] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 print_sbyte_at::b#20 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 print_sbyte_at::b#20 ] ) always clobbers reg byte y 
Statement [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ) always clobbers reg byte a 
Statement [99] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 print_sbyte_at::b#21 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 print_sbyte_at::b#21 ] ) always clobbers reg byte y 
Statement [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ) always clobbers reg byte a reg byte x 
Statement [103] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] ( main:2::anim:10::debug_print:43 [ sx#10 sy#10 debug_print::c#1 debug_print::i#1 ] ) always clobbers reg byte a 
Statement [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ) always clobbers reg byte a 
Statement [111] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte) 1 [ print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a 
Statement [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 [ print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] ) always clobbers reg byte a 
Statement [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 [ print_sbyte_at::at#21 print_sbyte_at::b#0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:210 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:213 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:2::debug_print_init:8::print_sbyte_at:216 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] ) always clobbers reg byte a 
Statement [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:108 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:108 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:108 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_char_at:115 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_char_at:115 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:210::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:213::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::debug_print_init:8::print_sbyte_at:216::print_char_at:115 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112::print_char_at:127 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112::print_char_at:127 [ debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 [ print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a 
Statement [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::b#0 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a 
Statement [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f [ print_byte_at::at#0 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] ) always clobbers reg byte a 
Statement [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:2::anim:10::debug_print:43::print_sbyte_at:49::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:52::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:54::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:57::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:60::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:63::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:66::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:69::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:72::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:75::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:78::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:81::print_byte_at:112 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:85::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:88::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:91::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:94::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:97::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::anim:10::debug_print:43::print_sbyte_at:100::print_byte_at:112 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:210::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:213::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:2::debug_print_init:8::print_sbyte_at:216::print_byte_at:112 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a 
Statement 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  } always clobbers reg byte a reg byte x reg byte y 
Statement 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  } always clobbers reg byte a 
Statement [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ) always clobbers reg byte a 
Statement [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ) always clobbers reg byte a 
Statement [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ) always clobbers reg byte a 
Statement [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ) always clobbers reg byte a 
Statement [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ) always clobbers reg byte a 
Statement [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ) always clobbers reg byte a 
Statement [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ) always clobbers reg byte a 
Statement [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ) always clobbers reg byte a 
Statement [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ) always clobbers reg byte a 
Statement [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ) always clobbers reg byte a 
Statement [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ) always clobbers reg byte a 
Statement [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ) always clobbers reg byte a 
Statement [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ) always clobbers reg byte a 
Statement [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ) always clobbers reg byte a 
Statement [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ) always clobbers reg byte a 
Statement [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ) always clobbers reg byte a 
Statement [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ) always clobbers reg byte a 
Statement [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ) always clobbers reg byte a 
Statement [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ) always clobbers reg byte a 
Statement [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ) always clobbers reg byte a 
Statement [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ) always clobbers reg byte a 
Statement [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ) always clobbers reg byte a 
Statement [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ) always clobbers reg byte a 
Statement [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ) always clobbers reg byte a 
Statement [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ) always clobbers reg byte a 
Statement [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ) always clobbers reg byte a 
Statement [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ) always clobbers reg byte a 
Statement [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ) always clobbers reg byte a 
Statement [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ) always clobbers reg byte a 
Statement [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ) always clobbers reg byte a 
Statement [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::$34 ] ( main:2::anim:10::calculate_matrix:20 [ sx#10 sy#10 calculate_matrix::$34 ] ) always clobbers reg byte a 
Statement [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y 
Statement [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 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y 
Statement [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 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:2::debug_print_init:8 [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y 
Statement [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$41 ] ) always clobbers reg byte a 
Statement [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$44 ] ) always clobbers reg byte a 
Statement [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$47 ] ) always clobbers reg byte a 
Statement [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$50 ] ) always clobbers reg byte a 
Statement [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$53 ] ) always clobbers reg byte a 
Statement [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$56 ] ) always clobbers reg byte a 
Statement [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$59 ] ) always clobbers reg byte a 
Statement [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$62 ] ) always clobbers reg byte a 
Statement [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Statement [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 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$65 ] ) always clobbers reg byte a 
Statement [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ( main:2::debug_print_init:8 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ) always clobbers reg byte a 
Statement [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 [ debug_print_init::i#2 debug_print_init::c#1 ] ( main:2::debug_print_init:8 [ debug_print_init::i#2 debug_print_init::c#1 ] ) always clobbers reg byte a reg byte x 
Statement [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 [ debug_print_init::c#1 debug_print_init::i#1 ] ( main:2::debug_print_init:8 [ debug_print_init::c#1 debug_print_init::i#1 ] ) always clobbers reg byte a 
Statement [245] if((byte) 0!=*((byte*) print_str_at::str#13)) goto print_str_at::@2 [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y 
Statement [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) [ print_str_at::str#13 print_str_at::at#13 ] ( main:2::debug_print_init:8::print_str_at:184 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:186 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:188 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:190 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:2::debug_print_init:8::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y 
Statement [255] *((byte*) memset::dst#4) ← (const byte) memset::c#0 [ memset::dst#4 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#4 ] ) always clobbers reg byte a reg byte y 
Statement [257] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#1 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#1 ] ) always clobbers reg byte a 
Statement [259] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff [ ] ( main:2::sprites_init:5 [ ] ) always clobbers reg byte a 
Statement [261] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a 
Statement [262] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a 
Potential registers zp ZP_BYTE:2 [ sx#10 sx#3 ] : zp ZP_BYTE:2 , 
Potential registers zp ZP_BYTE:3 [ sy#10 sy#3 ] : zp ZP_BYTE:3 , 
Potential registers zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ] : zp ZP_BYTE:4 , 
Potential registers zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ] : zp ZP_BYTE:5 , reg byte x , 
Potential registers zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ] : zp ZP_BYTE:6 , 
Potential registers zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 ] : zp ZP_WORD:7 , 
Potential registers zp ZP_BYTE:9 [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] : zp ZP_BYTE:9 , reg byte x , 
Potential registers zp ZP_BYTE:10 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] : zp ZP_BYTE:10 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:11 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] : zp ZP_WORD:11 , 
Potential registers zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ] : zp ZP_BYTE:13 , reg byte x , 
Potential registers zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ] : zp ZP_BYTE:14 , 
Potential registers zp ZP_BYTE:15 [ debug_print_init::j#2 debug_print_init::j#1 ] : zp ZP_BYTE:15 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] : zp ZP_WORD:16 , 
Potential registers zp ZP_WORD:18 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] : zp ZP_WORD:18 , 
Potential registers zp ZP_WORD:20 [ memset::dst#4 memset::dst#1 ] : zp ZP_WORD:20 , 
Potential registers zp ZP_BYTE:22 [ sprites_init::i#2 sprites_init::i#1 ] : zp ZP_BYTE:22 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:23 [ calculate_matrix::sx#0 ] : zp ZP_BYTE:23 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:24 [ calculate_matrix::sy#0 ] : zp ZP_BYTE:24 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:25 [ rotate_matrix::x#0 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , 
Potential registers zp ZP_BYTE:26 [ rotate_matrix::y#0 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , 
Potential registers zp ZP_BYTE:27 [ rotate_matrix::z#0 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:28 [ anim::i2#0 ] : zp ZP_BYTE:28 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:29 [ anim::$8 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:30 [ anim::$10 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:31 [ debug_print::print_sbyte_pos1_sb#0 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:32 [ debug_print::print_sbyte_pos2_sb#0 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:33 [ debug_print::print_sbyte_pos4_sb#0 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:34 [ debug_print::print_sbyte_pos5_sb#0 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:35 [ debug_print::print_sbyte_pos6_sb#0 ] : zp ZP_BYTE:35 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:36 [ debug_print::print_sbyte_pos7_sb#0 ] : zp ZP_BYTE:36 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:37 [ debug_print::print_sbyte_pos8_sb#0 ] : zp ZP_BYTE:37 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:38 [ debug_print::print_sbyte_pos9_sb#0 ] : zp ZP_BYTE:38 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:39 [ debug_print::print_sbyte_pos10_sb#0 ] : zp ZP_BYTE:39 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:40 [ debug_print::print_sbyte_pos11_sb#0 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:41 [ debug_print::print_sbyte_pos12_sb#0 ] : zp ZP_BYTE:41 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:42 [ print_byte_at::b#0 ] : zp ZP_BYTE:42 , reg byte x , 
Potential registers zp ZP_WORD:43 [ print_byte_at::at#0 ] : zp ZP_WORD:43 , 
Potential registers zp ZP_BYTE:45 [ print_byte_at::$0 ] : zp ZP_BYTE:45 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:46 [ print_byte_at::$2 ] : zp ZP_BYTE:46 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:47 [ calculate_matrix::t1#0 ] : zp ZP_BYTE:47 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:48 [ calculate_matrix::t2#0 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:49 [ calculate_matrix::t3#0 ] : zp ZP_BYTE:49 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:50 [ calculate_matrix::t4#0 ] : zp ZP_BYTE:50 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:51 [ calculate_matrix::t5#0 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:52 [ calculate_matrix::t6#0 ] : zp ZP_BYTE:52 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:53 [ calculate_matrix::t7#0 ] : zp ZP_BYTE:53 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:54 [ calculate_matrix::t8#0 ] : zp ZP_BYTE:54 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:55 [ calculate_matrix::t9#0 ] : zp ZP_BYTE:55 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:56 [ calculate_matrix::t10#0 ] : zp ZP_BYTE:56 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:57 [ calculate_matrix::$10 ] : zp ZP_BYTE:57 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:58 [ calculate_matrix::$11 ] : zp ZP_BYTE:58 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:59 [ calculate_matrix::$12 ] : zp ZP_BYTE:59 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:60 [ calculate_matrix::$13 ] : zp ZP_BYTE:60 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:61 [ calculate_matrix::$14 ] : zp ZP_BYTE:61 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:62 [ calculate_matrix::$15 ] : zp ZP_BYTE:62 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:63 [ calculate_matrix::$16 ] : zp ZP_BYTE:63 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:64 [ calculate_matrix::$17 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:65 [ calculate_matrix::$18 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:66 [ calculate_matrix::$19 ] : zp ZP_BYTE:66 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:67 [ calculate_matrix::$20 ] : zp ZP_BYTE:67 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:68 [ calculate_matrix::$21 ] : zp ZP_BYTE:68 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:69 [ calculate_matrix::$22 ] : zp ZP_BYTE:69 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:70 [ calculate_matrix::$23 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:71 [ calculate_matrix::$24 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:72 [ calculate_matrix::$25 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:73 [ calculate_matrix::$26 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:74 [ calculate_matrix::$27 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:75 [ calculate_matrix::$28 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:76 [ calculate_matrix::$29 ] : zp ZP_BYTE:76 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:77 [ calculate_matrix::$30 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:78 [ calculate_matrix::$31 ] : zp ZP_BYTE:78 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:79 [ calculate_matrix::$32 ] : zp ZP_BYTE:79 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:80 [ calculate_matrix::$33 ] : zp ZP_BYTE:80 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:81 [ calculate_matrix::$34 ] : zp ZP_BYTE:81 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:82 [ debug_print_init::col#0 ] : zp ZP_BYTE:82 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:83 [ debug_print_init::$41 ] : zp ZP_WORD:83 , 
Potential registers zp ZP_WORD:85 [ debug_print_init::$44 ] : zp ZP_WORD:85 , 
Potential registers zp ZP_WORD:87 [ debug_print_init::$47 ] : zp ZP_WORD:87 , 
Potential registers zp ZP_WORD:89 [ debug_print_init::$50 ] : zp ZP_WORD:89 , 
Potential registers zp ZP_WORD:91 [ debug_print_init::$53 ] : zp ZP_WORD:91 , 
Potential registers zp ZP_WORD:93 [ debug_print_init::$56 ] : zp ZP_WORD:93 , 
Potential registers zp ZP_WORD:95 [ debug_print_init::$59 ] : zp ZP_WORD:95 , 
Potential registers zp ZP_WORD:97 [ debug_print_init::$62 ] : zp ZP_WORD:97 , 
Potential registers zp ZP_WORD:99 [ debug_print_init::$65 ] : zp ZP_WORD:99 , 

REGISTER UPLIFT SCOPES
Uplift Scope [print_sbyte_at] 1,441.17: zp ZP_BYTE:9 [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] 710.67: zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 ] 
Uplift Scope [debug_print_init] 207.05: zp ZP_BYTE:15 [ debug_print_init::j#2 debug_print_init::j#1 ] 202: zp ZP_WORD:83 [ debug_print_init::$41 ] 202: zp ZP_WORD:85 [ debug_print_init::$44 ] 202: zp ZP_WORD:87 [ debug_print_init::$47 ] 202: zp ZP_WORD:89 [ debug_print_init::$50 ] 202: zp ZP_WORD:91 [ debug_print_init::$53 ] 202: zp ZP_WORD:93 [ debug_print_init::$56 ] 202: zp ZP_WORD:95 [ debug_print_init::$59 ] 202: zp ZP_WORD:97 [ debug_print_init::$62 ] 202: zp ZP_WORD:99 [ debug_print_init::$65 ] 56.11: zp ZP_BYTE:82 [ debug_print_init::col#0 ] 37.46: zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ] 21.23: zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ] 
Uplift Scope [anim] 222.79: zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ] 202: zp ZP_BYTE:29 [ anim::$8 ] 202: zp ZP_BYTE:30 [ anim::$10 ] 75.75: zp ZP_BYTE:28 [ anim::i2#0 ] 
Uplift Scope [debug_print] 191.9: zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ] 109.86: zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ] 4: zp ZP_BYTE:31 [ debug_print::print_sbyte_pos1_sb#0 ] 4: zp ZP_BYTE:32 [ debug_print::print_sbyte_pos2_sb#0 ] 4: zp ZP_BYTE:33 [ debug_print::print_sbyte_pos4_sb#0 ] 4: zp ZP_BYTE:34 [ debug_print::print_sbyte_pos5_sb#0 ] 4: zp ZP_BYTE:35 [ debug_print::print_sbyte_pos6_sb#0 ] 4: zp ZP_BYTE:36 [ debug_print::print_sbyte_pos7_sb#0 ] 4: zp ZP_BYTE:37 [ debug_print::print_sbyte_pos8_sb#0 ] 4: zp ZP_BYTE:38 [ debug_print::print_sbyte_pos9_sb#0 ] 4: zp ZP_BYTE:39 [ debug_print::print_sbyte_pos10_sb#0 ] 4: zp ZP_BYTE:40 [ debug_print::print_sbyte_pos11_sb#0 ] 4: zp ZP_BYTE:41 [ debug_print::print_sbyte_pos12_sb#0 ] 
Uplift Scope [calculate_matrix] 4: zp ZP_BYTE:57 [ calculate_matrix::$10 ] 4: zp ZP_BYTE:58 [ calculate_matrix::$11 ] 4: zp ZP_BYTE:59 [ calculate_matrix::$12 ] 4: zp ZP_BYTE:60 [ calculate_matrix::$13 ] 4: zp ZP_BYTE:61 [ calculate_matrix::$14 ] 4: zp ZP_BYTE:62 [ calculate_matrix::$15 ] 4: zp ZP_BYTE:63 [ calculate_matrix::$16 ] 4: zp ZP_BYTE:64 [ calculate_matrix::$17 ] 4: zp ZP_BYTE:65 [ calculate_matrix::$18 ] 4: zp ZP_BYTE:66 [ calculate_matrix::$19 ] 4: zp ZP_BYTE:67 [ calculate_matrix::$20 ] 4: zp ZP_BYTE:68 [ calculate_matrix::$21 ] 4: zp ZP_BYTE:69 [ calculate_matrix::$22 ] 4: zp ZP_BYTE:70 [ calculate_matrix::$23 ] 4: zp ZP_BYTE:71 [ calculate_matrix::$24 ] 4: zp ZP_BYTE:72 [ calculate_matrix::$25 ] 4: zp ZP_BYTE:73 [ calculate_matrix::$26 ] 4: zp ZP_BYTE:74 [ calculate_matrix::$27 ] 4: zp ZP_BYTE:75 [ calculate_matrix::$28 ] 4: zp ZP_BYTE:76 [ calculate_matrix::$29 ] 4: zp ZP_BYTE:77 [ calculate_matrix::$30 ] 4: zp ZP_BYTE:78 [ calculate_matrix::$31 ] 4: zp ZP_BYTE:79 [ calculate_matrix::$32 ] 4: zp ZP_BYTE:80 [ calculate_matrix::$33 ] 4: zp ZP_BYTE:81 [ calculate_matrix::$34 ] 2.45: zp ZP_BYTE:23 [ calculate_matrix::sx#0 ] 1.53: zp ZP_BYTE:24 [ calculate_matrix::sy#0 ] 0.91: zp ZP_BYTE:48 [ calculate_matrix::t2#0 ] 0.83: zp ZP_BYTE:47 [ calculate_matrix::t1#0 ] 0.31: zp ZP_BYTE:52 [ calculate_matrix::t6#0 ] 0.3: zp ZP_BYTE:50 [ calculate_matrix::t4#0 ] 0.3: zp ZP_BYTE:53 [ calculate_matrix::t7#0 ] 0.3: zp ZP_BYTE:54 [ calculate_matrix::t8#0 ] 0.29: zp ZP_BYTE:49 [ calculate_matrix::t3#0 ] 0.29: zp ZP_BYTE:51 [ calculate_matrix::t5#0 ] 0.18: zp ZP_BYTE:56 [ calculate_matrix::t10#0 ] 0.18: zp ZP_BYTE:55 [ calculate_matrix::t9#0 ] 
Uplift Scope [rotate_matrix] 34.33: zp ZP_BYTE:25 [ rotate_matrix::x#0 ] 34.33: zp ZP_BYTE:26 [ rotate_matrix::y#0 ] 34.33: zp ZP_BYTE:27 [ rotate_matrix::z#0 ] 
Uplift Scope [print_str_at] 35.5: zp ZP_WORD:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] 24.67: zp ZP_WORD:18 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] 
Uplift Scope [print_char_at] 24: zp ZP_WORD:11 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] 12: zp ZP_BYTE:10 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] 
Uplift Scope [] 22.38: zp ZP_BYTE:3 [ sy#10 sy#3 ] 11.39: zp ZP_BYTE:2 [ sx#10 sx#3 ] 
Uplift Scope [memset] 33: zp ZP_WORD:20 [ memset::dst#4 memset::dst#1 ] 
Uplift Scope [sprites_init] 31.17: zp ZP_BYTE:22 [ sprites_init::i#2 sprites_init::i#1 ] 
Uplift Scope [print_byte_at] 4: zp ZP_BYTE:45 [ print_byte_at::$0 ] 2: zp ZP_BYTE:46 [ print_byte_at::$2 ] 1: zp ZP_BYTE:42 [ print_byte_at::b#0 ] 1: zp ZP_WORD:43 [ print_byte_at::at#0 ] 
Uplift Scope [RADIX] 
Uplift Scope [print_cls] 
Uplift Scope [main] 
Uplift Scope [store_matrix] 

Uplifting [print_sbyte_at] best 79761 combination reg byte x [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 ] 
Uplifting [debug_print_init] best 74961 combination reg byte y [ debug_print_init::j#2 debug_print_init::j#1 ] zp ZP_WORD:83 [ debug_print_init::$41 ] zp ZP_WORD:85 [ debug_print_init::$44 ] zp ZP_WORD:87 [ debug_print_init::$47 ] zp ZP_WORD:89 [ debug_print_init::$50 ] zp ZP_WORD:91 [ debug_print_init::$53 ] zp ZP_WORD:93 [ debug_print_init::$56 ] zp ZP_WORD:95 [ debug_print_init::$59 ] zp ZP_WORD:97 [ debug_print_init::$62 ] zp ZP_WORD:99 [ debug_print_init::$65 ] reg byte x [ debug_print_init::col#0 ] zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ] zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ] 
Uplifting [anim] best 73061 combination zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ] reg byte a [ anim::$8 ] reg byte a [ anim::$10 ] reg byte x [ anim::i2#0 ] 
Uplifting [debug_print] best 73043 combination zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ] zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ] reg byte x [ debug_print::print_sbyte_pos1_sb#0 ] reg byte x [ debug_print::print_sbyte_pos2_sb#0 ] reg byte x [ debug_print::print_sbyte_pos4_sb#0 ] zp ZP_BYTE:34 [ debug_print::print_sbyte_pos5_sb#0 ] zp ZP_BYTE:35 [ debug_print::print_sbyte_pos6_sb#0 ] zp ZP_BYTE:36 [ debug_print::print_sbyte_pos7_sb#0 ] zp ZP_BYTE:37 [ debug_print::print_sbyte_pos8_sb#0 ] zp ZP_BYTE:38 [ debug_print::print_sbyte_pos9_sb#0 ] zp ZP_BYTE:39 [ debug_print::print_sbyte_pos10_sb#0 ] zp ZP_BYTE:40 [ debug_print::print_sbyte_pos11_sb#0 ] zp ZP_BYTE:41 [ debug_print::print_sbyte_pos12_sb#0 ] 
Limited combination testing to 100 combinations of 8388608 possible.
Uplifting [rotate_matrix] best 72742 combination reg byte x [ rotate_matrix::x#0 ] zp ZP_BYTE:26 [ rotate_matrix::y#0 ] zp ZP_BYTE:27 [ rotate_matrix::z#0 ] 
Uplifting [print_str_at] best 72742 combination zp ZP_WORD:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] zp ZP_WORD:18 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] 
Uplifting [print_char_at] best 72729 combination zp ZP_WORD:11 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] reg byte y [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] 
Uplifting [] best 72729 combination zp ZP_BYTE:3 [ sy#10 sy#3 ] zp ZP_BYTE:2 [ sx#10 sx#3 ] 
Uplifting [memset] best 72729 combination zp ZP_WORD:20 [ memset::dst#4 memset::dst#1 ] 
Uplifting [sprites_init] best 72579 combination reg byte x [ sprites_init::i#2 sprites_init::i#1 ] 
Uplifting [print_byte_at] best 72566 combination reg byte y [ print_byte_at::$0 ] reg byte x [ print_byte_at::$2 ] reg byte x [ print_byte_at::b#0 ] zp ZP_WORD:43 [ print_byte_at::at#0 ] 
Uplifting [RADIX] best 72566 combination 
Uplifting [print_cls] best 72566 combination 
Uplifting [main] best 72566 combination 
Uplifting [store_matrix] best 72566 combination 
Attempting to uplift remaining variables inzp ZP_BYTE:4 [ anim::i#2 anim::i#1 ]
Uplifting [anim] best 72566 combination zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ]
Uplifting [debug_print] best 72566 combination zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ]
Uplifting [debug_print] best 72566 combination zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ]
Uplifting [debug_print_init] best 72566 combination zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:26 [ rotate_matrix::y#0 ]
Uplifting [rotate_matrix] best 72566 combination zp ZP_BYTE:26 [ rotate_matrix::y#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:27 [ rotate_matrix::z#0 ]
Uplifting [rotate_matrix] best 72566 combination zp ZP_BYTE:27 [ rotate_matrix::z#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ sy#10 sy#3 ]
Uplifting [] best 72566 combination zp ZP_BYTE:3 [ sy#10 sy#3 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ]
Uplifting [debug_print_init] best 72566 combination zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ sx#10 sx#3 ]
Uplifting [] best 72566 combination zp ZP_BYTE:2 [ sx#10 sx#3 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:34 [ debug_print::print_sbyte_pos5_sb#0 ]
Uplifting [debug_print] best 72560 combination reg byte x [ debug_print::print_sbyte_pos5_sb#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:35 [ debug_print::print_sbyte_pos6_sb#0 ]
Uplifting [debug_print] best 72554 combination reg byte x [ debug_print::print_sbyte_pos6_sb#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:36 [ debug_print::print_sbyte_pos7_sb#0 ]
Uplifting [debug_print] best 72548 combination reg byte x [ debug_print::print_sbyte_pos7_sb#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:37 [ debug_print::print_sbyte_pos8_sb#0 ]
Uplifting [debug_print] best 72542 combination reg byte x [ debug_print::print_sbyte_pos8_sb#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:38 [ debug_print::print_sbyte_pos9_sb#0 ]
Uplifting [debug_print] best 72536 combination reg byte x [ debug_print::print_sbyte_pos9_sb#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:39 [ debug_print::print_sbyte_pos10_sb#0 ]
Uplifting [debug_print] best 72530 combination reg byte x [ debug_print::print_sbyte_pos10_sb#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:40 [ debug_print::print_sbyte_pos11_sb#0 ]
Uplifting [debug_print] best 72524 combination reg byte x [ debug_print::print_sbyte_pos11_sb#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:41 [ debug_print::print_sbyte_pos12_sb#0 ]
Uplifting [debug_print] best 72518 combination reg byte x [ debug_print::print_sbyte_pos12_sb#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:57 [ calculate_matrix::$10 ]
Uplifting [calculate_matrix] best 72512 combination reg byte a [ calculate_matrix::$10 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:58 [ calculate_matrix::$11 ]
Uplifting [calculate_matrix] best 72506 combination reg byte a [ calculate_matrix::$11 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:59 [ calculate_matrix::$12 ]
Uplifting [calculate_matrix] best 72500 combination reg byte a [ calculate_matrix::$12 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:60 [ calculate_matrix::$13 ]
Uplifting [calculate_matrix] best 72494 combination reg byte a [ calculate_matrix::$13 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:61 [ calculate_matrix::$14 ]
Uplifting [calculate_matrix] best 72488 combination reg byte a [ calculate_matrix::$14 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:62 [ calculate_matrix::$15 ]
Uplifting [calculate_matrix] best 72482 combination reg byte a [ calculate_matrix::$15 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:63 [ calculate_matrix::$16 ]
Uplifting [calculate_matrix] best 72476 combination reg byte a [ calculate_matrix::$16 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:64 [ calculate_matrix::$17 ]
Uplifting [calculate_matrix] best 72470 combination reg byte a [ calculate_matrix::$17 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:65 [ calculate_matrix::$18 ]
Uplifting [calculate_matrix] best 72464 combination reg byte a [ calculate_matrix::$18 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:66 [ calculate_matrix::$19 ]
Uplifting [calculate_matrix] best 72458 combination reg byte a [ calculate_matrix::$19 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:67 [ calculate_matrix::$20 ]
Uplifting [calculate_matrix] best 72452 combination reg byte a [ calculate_matrix::$20 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:68 [ calculate_matrix::$21 ]
Uplifting [calculate_matrix] best 72446 combination reg byte a [ calculate_matrix::$21 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:69 [ calculate_matrix::$22 ]
Uplifting [calculate_matrix] best 72440 combination reg byte a [ calculate_matrix::$22 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:70 [ calculate_matrix::$23 ]
Uplifting [calculate_matrix] best 72434 combination reg byte a [ calculate_matrix::$23 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:71 [ calculate_matrix::$24 ]
Uplifting [calculate_matrix] best 72428 combination reg byte a [ calculate_matrix::$24 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:72 [ calculate_matrix::$25 ]
Uplifting [calculate_matrix] best 72422 combination reg byte a [ calculate_matrix::$25 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:73 [ calculate_matrix::$26 ]
Uplifting [calculate_matrix] best 72416 combination reg byte a [ calculate_matrix::$26 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:74 [ calculate_matrix::$27 ]
Uplifting [calculate_matrix] best 72410 combination reg byte a [ calculate_matrix::$27 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:75 [ calculate_matrix::$28 ]
Uplifting [calculate_matrix] best 72404 combination reg byte a [ calculate_matrix::$28 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:76 [ calculate_matrix::$29 ]
Uplifting [calculate_matrix] best 72398 combination reg byte a [ calculate_matrix::$29 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:77 [ calculate_matrix::$30 ]
Uplifting [calculate_matrix] best 72392 combination reg byte a [ calculate_matrix::$30 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:78 [ calculate_matrix::$31 ]
Uplifting [calculate_matrix] best 72386 combination reg byte a [ calculate_matrix::$31 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:79 [ calculate_matrix::$32 ]
Uplifting [calculate_matrix] best 72380 combination reg byte a [ calculate_matrix::$32 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:80 [ calculate_matrix::$33 ]
Uplifting [calculate_matrix] best 72374 combination reg byte a [ calculate_matrix::$33 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:81 [ calculate_matrix::$34 ]
Uplifting [calculate_matrix] best 72368 combination reg byte a [ calculate_matrix::$34 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:23 [ calculate_matrix::sx#0 ]
Uplifting [calculate_matrix] best 72330 combination reg byte x [ calculate_matrix::sx#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:24 [ calculate_matrix::sy#0 ]
Uplifting [calculate_matrix] best 72330 combination zp ZP_BYTE:24 [ calculate_matrix::sy#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:48 [ calculate_matrix::t2#0 ]
Uplifting [calculate_matrix] best 72330 combination zp ZP_BYTE:48 [ calculate_matrix::t2#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:47 [ calculate_matrix::t1#0 ]
Uplifting [calculate_matrix] best 72330 combination zp ZP_BYTE:47 [ calculate_matrix::t1#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:52 [ calculate_matrix::t6#0 ]
Uplifting [calculate_matrix] best 72330 combination zp ZP_BYTE:52 [ calculate_matrix::t6#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:50 [ calculate_matrix::t4#0 ]
Uplifting [calculate_matrix] best 72330 combination zp ZP_BYTE:50 [ calculate_matrix::t4#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:53 [ calculate_matrix::t7#0 ]
Uplifting [calculate_matrix] best 72330 combination zp ZP_BYTE:53 [ calculate_matrix::t7#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:54 [ calculate_matrix::t8#0 ]
Uplifting [calculate_matrix] best 72330 combination zp ZP_BYTE:54 [ calculate_matrix::t8#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:49 [ calculate_matrix::t3#0 ]
Uplifting [calculate_matrix] best 72330 combination zp ZP_BYTE:49 [ calculate_matrix::t3#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:51 [ calculate_matrix::t5#0 ]
Uplifting [calculate_matrix] best 72330 combination zp ZP_BYTE:51 [ calculate_matrix::t5#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:56 [ calculate_matrix::t10#0 ]
Uplifting [calculate_matrix] best 72323 combination reg byte x [ calculate_matrix::t10#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:55 [ calculate_matrix::t9#0 ]
Uplifting [calculate_matrix] best 72323 combination zp ZP_BYTE:55 [ calculate_matrix::t9#0 ] 
Coalescing zero page register [ zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 ] ] with [ zp ZP_WORD:11 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] ] - score: 2
Coalescing zero page register [ zp ZP_BYTE:3 [ sy#10 sy#3 ] ] with [ zp ZP_BYTE:24 [ calculate_matrix::sy#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] ] with [ zp ZP_WORD:43 [ print_byte_at::at#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ] ] with [ zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ] ]
Coalescing zero page register [ zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ] ] with [ zp ZP_BYTE:2 [ sx#10 sx#3 ] ]
Coalescing zero page register [ zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ] ] with [ zp ZP_BYTE:3 [ sy#10 sy#3 calculate_matrix::sy#0 ] ]
Coalescing zero page register [ zp ZP_WORD:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] ] with [ zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 ] ]
Coalescing zero page register [ zp ZP_WORD:20 [ memset::dst#4 memset::dst#1 ] ] with [ zp ZP_WORD:18 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] ]
Coalescing zero page register [ zp ZP_BYTE:26 [ rotate_matrix::y#0 ] ] with [ zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ] ]
Coalescing zero page register [ zp ZP_BYTE:47 [ calculate_matrix::t1#0 ] ] with [ zp ZP_BYTE:27 [ rotate_matrix::z#0 ] ]
Coalescing zero page register [ zp ZP_BYTE:48 [ calculate_matrix::t2#0 ] ] with [ zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 anim::i#2 anim::i#1 ] ]
Coalescing zero page register [ zp ZP_BYTE:49 [ calculate_matrix::t3#0 ] ] with [ zp ZP_BYTE:26 [ rotate_matrix::y#0 debug_print::i#2 debug_print::i#1 ] ]
Coalescing zero page register [ zp ZP_WORD:83 [ debug_print_init::$41 ] ] with [ zp ZP_WORD:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 ] ]
Coalescing zero page register [ zp ZP_WORD:85 [ debug_print_init::$44 ] ] with [ zp ZP_WORD:20 [ memset::dst#4 memset::dst#1 print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] ]
Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:2 [ debug_print_init::c#2 debug_print_init::c#1 sx#10 sx#3 ]
Allocated (was zp ZP_BYTE:14) zp ZP_BYTE:3 [ debug_print_init::i#2 debug_print_init::i#1 sy#10 sy#3 calculate_matrix::sy#0 ]
Allocated (was zp ZP_BYTE:47) zp ZP_BYTE:4 [ calculate_matrix::t1#0 rotate_matrix::z#0 ]
Allocated (was zp ZP_BYTE:48) zp ZP_BYTE:5 [ calculate_matrix::t2#0 debug_print::c#2 debug_print::c#1 anim::i#2 anim::i#1 ]
Allocated (was zp ZP_BYTE:49) zp ZP_BYTE:6 [ calculate_matrix::t3#0 rotate_matrix::y#0 debug_print::i#2 debug_print::i#1 ]
Allocated (was zp ZP_BYTE:50) zp ZP_BYTE:7 [ calculate_matrix::t4#0 ]
Allocated (was zp ZP_BYTE:51) zp ZP_BYTE:8 [ calculate_matrix::t5#0 ]
Allocated (was zp ZP_BYTE:52) zp ZP_BYTE:9 [ calculate_matrix::t6#0 ]
Allocated (was zp ZP_BYTE:53) zp ZP_BYTE:10 [ calculate_matrix::t7#0 ]
Allocated (was zp ZP_BYTE:54) zp ZP_BYTE:11 [ calculate_matrix::t8#0 ]
Allocated (was zp ZP_BYTE:55) zp ZP_BYTE:12 [ calculate_matrix::t9#0 ]
Allocated (was zp ZP_WORD:83) zp ZP_WORD:13 [ debug_print_init::$41 print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 ]
Allocated (was zp ZP_WORD:85) zp ZP_WORD:15 [ debug_print_init::$44 memset::dst#4 memset::dst#1 print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ]
Allocated (was zp ZP_WORD:87) zp ZP_WORD:17 [ debug_print_init::$47 ]
Allocated (was zp ZP_WORD:89) zp ZP_WORD:19 [ debug_print_init::$50 ]
Allocated (was zp ZP_WORD:91) zp ZP_WORD:21 [ debug_print_init::$53 ]
Allocated (was zp ZP_WORD:93) zp ZP_WORD:23 [ debug_print_init::$56 ]
Allocated (was zp ZP_WORD:95) zp ZP_WORD:25 [ debug_print_init::$59 ]
Allocated (was zp ZP_WORD:97) zp ZP_WORD:27 [ debug_print_init::$62 ]
Allocated (was zp ZP_WORD:99) zp ZP_WORD:29 [ debug_print_init::$65 ]

ASSEMBLER BEFORE OPTIMIZATION
  // File Comments
// 3D Rotation using a Rotation Matrix
// Based on: 
// - C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt
// - Codebase64 Article http://codebase64.org/doku.php?id=base:3d_rotation  
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(bbegin)
.pc = $80d "Program"
  // Global Constants & labels
  .label SPRITES_XPOS = $d000
  .label SPRITES_YPOS = $d001
  .label RASTER = $d012
  .label SPRITES_ENABLE = $d015
  .label BORDERCOL = $d020
  .label SPRITES_COLS = $d027
  .const GREEN = 5
  .const LIGHT_BLUE = $e
  .const LIGHT_GREY = $f
  .label print_screen = $400
  // The rotated point - updated by calling rotate_matrix()
  .label xr = $f0
  .label yr = $f1
  .label zr = $f2
  // The rotated point with perspective
  .label pp = $f3
  .label xp = $f4
  .label yp = $f5
  // Pointers used to multiply perspective (d/z0-z) onto x- & y-coordinates. Points into mulf_sqr1 / mulf_sqr2  
  .label psp1 = $f6
  .label psp2 = $f8
  .label SCREEN = $400
  .const sz = 0
  // A single sprite
  .label SPRITE = $3000
  .label COSH = SINH+$40
  .label COSQ = SINQ+$40
  .label sx = 2
  .label sy = 3
  // @begin
bbegin:
  jmp b1
  // @1
b1:
  // 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)  }}
  // [2] call main 
  jsr main
  // [3] phi from @1 to @end [phi:@1->@end]
bend_from_b1:
  jmp bend
  // @end
bend:
  // main
main: {
    // asm { sei  }
    sei
    // [5] call sprites_init 
    jsr sprites_init
    jmp b1
    // main::@1
  b1:
    // [6] *((const word*) psp1#0) ← (word)(const byte[$200]) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 
    //mulf_init();
    lda #<mulf_sqr1
    sta psp1
    lda #>mulf_sqr1
    sta psp1+1
    // [7] *((const word*) psp2#0) ← (word)(const byte[$200]) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 
    lda #<mulf_sqr2
    sta psp2
    lda #>mulf_sqr2
    sta psp2+1
    // [8] call debug_print_init 
    // [181] phi from main::@1 to debug_print_init [phi:main::@1->debug_print_init]
  debug_print_init_from_b1:
    jsr debug_print_init
    // [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  b2_from_b1:
    jmp b2
    // main::@2
  b2:
    // [10] call anim 
    // [12] phi from main::@2 to anim [phi:main::@2->anim]
  anim_from_b2:
    jsr anim
    jmp breturn
    // main::@return
  breturn:
    // [11] return 
    rts
}
  // anim
anim: {
    .label i = 5
    // [13] phi from anim to anim::@1 [phi:anim->anim::@1]
  b1_from_anim:
    // [13] phi (signed byte) sy#10 = (signed byte) 0 [phi:anim->anim::@1#0] -- vbsz1=vbsc1 
    lda #0
    sta.z sy
    // [13] phi (signed byte) sx#10 = (signed byte) 0 [phi:anim->anim::@1#1] -- vbsz1=vbsc1 
    lda #0
    sta.z sx
    jmp b1
  //signed byte xmin = 0;
  //signed byte xmax = 0;
    // anim::@1
  b1:
    jmp b2
    // anim::@2
  b2:
    // [14] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda #$ff
    cmp RASTER
    bne b2
    jmp b3
    // anim::@3
  b3:
    // [15] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda #$fe
    cmp RASTER
    bne b3
    jmp b4
    // anim::@4
  b4:
    // [16] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda #$fd
    cmp RASTER
    bne b4
    jmp b5
    // anim::@5
  b5:
    // [17] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
    // [18] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 
    ldx.z sx
    // [19] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10
    // [20] call calculate_matrix 
    jsr calculate_matrix
    // [21] phi from anim::@5 to anim::@8 [phi:anim::@5->anim::@8]
  b8_from_b5:
    jmp b8
    // anim::@8
  b8:
    // [22] call store_matrix 
    jsr store_matrix
    // [23] phi from anim::@8 to anim::@6 [phi:anim::@8->anim::@6]
  b6_from_b8:
    // [23] phi (byte) anim::i#2 = (byte) 0 [phi:anim::@8->anim::@6#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp b6
    // [23] phi from anim::@9 to anim::@6 [phi:anim::@9->anim::@6]
  b6_from_b9:
    // [23] phi (byte) anim::i#2 = (byte) anim::i#1 [phi:anim::@9->anim::@6#0] -- register_copy 
    jmp b6
    // anim::@6
  b6:
    // [24] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
    // [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx xs,y
    // [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy.z i
    lda ys,y
    sta.z rotate_matrix.y
    // [27] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy.z i
    lda zs,y
    sta.z rotate_matrix.z
    // [28] call rotate_matrix 
    jsr rotate_matrix
    jmp b9
    // anim::@9
  b9:
    // [29] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    //if(*xr<xmin) xmin = *xr;
    //if(*xr>xmax) xmax = *xr;
    ldy.z i
    lda xr
    sta xrs,y
    // [30] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy.z i
    lda yr
    sta yrs,y
    // [31] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy.z i
    lda zr
    sta zrs,y
    // [32] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy.z i
    lda pp
    sta pps,y
    // [33] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy.z i
    lda xp
    sta xps,y
    // [34] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy.z i
    lda yp
    sta yps,y
    // [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 
    lda.z i
    asl
    tax
    // [36] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 
    lda #$80
    clc
    adc xp
    // [37] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$8 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SPRITES_XPOS,x
    // [38] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 
    lda #$80
    clc
    adc yp
    // [39] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$10 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SPRITES_YPOS,x
    // [40] (byte) anim::i#1 ← ++ (byte) anim::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [41] if((byte) anim::i#1!=(byte) 8) goto anim::@6 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z i
    bne b6_from_b9
    jmp b7
    // anim::@7
  b7:
    // [42] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 -- _deref_pbuc1=vbuc2 
    lda #LIGHT_GREY
    sta BORDERCOL
    // [43] call debug_print 
    jsr debug_print
    jmp b10
    // anim::@10
  b10:
    // [44] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 
    lda #LIGHT_BLUE
    sta BORDERCOL
    // [45] (signed byte) sx#3 ← (signed byte) sx#10 + (signed byte) 2 -- vbsz1=vbsz1_plus_2 
    // Increment angles        
    inc.z sx
    inc.z sx
    // [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 -- vbsz1=vbsz1_minus_vbsc1 
    lax.z sy
    axs #3
    stx.z sy
    // [13] phi from anim::@10 to anim::@1 [phi:anim::@10->anim::@1]
  b1_from_b10:
    // [13] phi (signed byte) sy#10 = (signed byte) sy#3 [phi:anim::@10->anim::@1#0] -- register_copy 
    // [13] phi (signed byte) sx#10 = (signed byte) sx#3 [phi:anim::@10->anim::@1#1] -- register_copy 
    jmp b1
}
  // debug_print
debug_print: {
    .const print_sbyte_pos1_col = $25
    .const print_sbyte_pos2_row = 1
    .const print_sbyte_pos2_col = $25
    .const print_sbyte_pos3_row = 2
    .const print_sbyte_pos3_col = $25
    .const print_sbyte_pos4_row = 4
    .const print_sbyte_pos4_col = $1d
    .const print_sbyte_pos5_row = 4
    .const print_sbyte_pos5_col = $21
    .const print_sbyte_pos6_row = 4
    .const print_sbyte_pos6_col = $25
    .const print_sbyte_pos7_row = 5
    .const print_sbyte_pos7_col = $1d
    .const print_sbyte_pos8_row = 5
    .const print_sbyte_pos8_col = $21
    .const print_sbyte_pos9_row = 5
    .const print_sbyte_pos9_col = $25
    .const print_sbyte_pos10_row = 6
    .const print_sbyte_pos10_col = $1d
    .const print_sbyte_pos11_row = 6
    .const print_sbyte_pos11_col = $21
    .const print_sbyte_pos12_row = 6
    .const print_sbyte_pos12_col = $25
    .label at_line = SCREEN+$13*$28
    .label c = 5
    .label i = 6
    // [47] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 
    ldx.z sx
    jmp print_sbyte_pos1
    // debug_print::print_sbyte_pos1
  print_sbyte_pos1:
    // [48] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0
    // [49] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos1 to print_sbyte_at [phi:debug_print::print_sbyte_pos1->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos1:
    // [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_col#0 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos1_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos1_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#4 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b2
    // debug_print::@2
  b2:
    // [50] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsxx=vbsz1 
    ldx.z sy
    jmp print_sbyte_pos2
    // debug_print::print_sbyte_pos2
  print_sbyte_pos2:
    // [51] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0
    // [52] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos2 to print_sbyte_at [phi:debug_print::print_sbyte_pos2->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos2:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#5 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // [53] phi from debug_print::print_sbyte_pos2 to debug_print::print_sbyte_pos3 [phi:debug_print::print_sbyte_pos2->debug_print::print_sbyte_pos3]
  print_sbyte_pos3_from_print_sbyte_pos2:
    jmp print_sbyte_pos3
    // debug_print::print_sbyte_pos3
  print_sbyte_pos3:
    // [54] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos3 to print_sbyte_at [phi:debug_print::print_sbyte_pos3->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos3:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (const signed byte) sz#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#1] -- vbsxx=vbsc1 
    ldx #sz
    jsr print_sbyte_at
    jmp b3
    // debug_print::@3
  b3:
    // [55] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix
    jmp print_sbyte_pos4
    // debug_print::print_sbyte_pos4
  print_sbyte_pos4:
    // [56] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0
    // [57] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos4 to print_sbyte_at [phi:debug_print::print_sbyte_pos4->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos4:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#7 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b4
    // debug_print::@4
  b4:
    // [58] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 1) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+1
    jmp print_sbyte_pos5
    // debug_print::print_sbyte_pos5
  print_sbyte_pos5:
    // [59] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0
    // [60] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos5 to print_sbyte_at [phi:debug_print::print_sbyte_pos5->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos5:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#8 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b5
    // debug_print::@5
  b5:
    // [61] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 2) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+2
    jmp print_sbyte_pos6
    // debug_print::print_sbyte_pos6
  print_sbyte_pos6:
    // [62] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0
    // [63] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos6 to print_sbyte_at [phi:debug_print::print_sbyte_pos6->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos6:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#9 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b6
    // debug_print::@6
  b6:
    // [64] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 3) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+3
    jmp print_sbyte_pos7
    // debug_print::print_sbyte_pos7
  print_sbyte_pos7:
    // [65] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0
    // [66] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos7 to print_sbyte_at [phi:debug_print::print_sbyte_pos7->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos7:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#10 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b7
    // debug_print::@7
  b7:
    // [67] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 4) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+4
    jmp print_sbyte_pos8
    // debug_print::print_sbyte_pos8
  print_sbyte_pos8:
    // [68] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0
    // [69] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos8 to print_sbyte_at [phi:debug_print::print_sbyte_pos8->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos8:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#11 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b8
    // debug_print::@8
  b8:
    // [70] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 5) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+5
    jmp print_sbyte_pos9
    // debug_print::print_sbyte_pos9
  print_sbyte_pos9:
    // [71] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0
    // [72] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos9 to print_sbyte_at [phi:debug_print::print_sbyte_pos9->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos9:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#12 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b9
    // debug_print::@9
  b9:
    // [73] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 6) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+6
    jmp print_sbyte_pos10
    // debug_print::print_sbyte_pos10
  print_sbyte_pos10:
    // [74] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0
    // [75] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos10 to print_sbyte_at [phi:debug_print::print_sbyte_pos10->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos10:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#13 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b10
    // debug_print::@10
  b10:
    // [76] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 7) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+7
    jmp print_sbyte_pos11
    // debug_print::print_sbyte_pos11
  print_sbyte_pos11:
    // [77] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0
    // [78] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos11 to print_sbyte_at [phi:debug_print::print_sbyte_pos11->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos11:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#14 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b11
    // debug_print::@11
  b11:
    // [79] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 8) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+8
    jmp print_sbyte_pos12
    // debug_print::print_sbyte_pos12
  print_sbyte_pos12:
    // [80] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0
    // [81] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos12 to print_sbyte_at [phi:debug_print::print_sbyte_pos12->print_sbyte_at]
  print_sbyte_at_from_print_sbyte_pos12:
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#15 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // [82] phi from debug_print::print_sbyte_pos12 to debug_print::@1 [phi:debug_print::print_sbyte_pos12->debug_print::@1]
  b1_from_print_sbyte_pos12:
    // [82] phi (byte) debug_print::i#2 = (byte) 0 [phi:debug_print::print_sbyte_pos12->debug_print::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    // [82] phi (byte) debug_print::c#2 = (byte) 4 [phi:debug_print::print_sbyte_pos12->debug_print::@1#1] -- vbuz1=vbuc1 
    lda #4
    sta.z c
    jmp b1
    // [82] phi from debug_print::@17 to debug_print::@1 [phi:debug_print::@17->debug_print::@1]
  b1_from_b17:
    // [82] phi (byte) debug_print::i#2 = (byte) debug_print::i#1 [phi:debug_print::@17->debug_print::@1#0] -- register_copy 
    // [82] phi (byte) debug_print::c#2 = (byte) debug_print::c#1 [phi:debug_print::@17->debug_print::@1#1] -- register_copy 
    jmp b1
    // debug_print::@1
  b1:
    // [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line
    sta.z print_sbyte_at.at
    lda #>at_line
    adc #0
    sta.z print_sbyte_at.at+1
    // [84] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx xrs,y
    // [85] call print_sbyte_at 
    // [105] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at]
  print_sbyte_at_from_b1:
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#15 [phi:debug_print::@1->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#16 [phi:debug_print::@1->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b12
    // debug_print::@12
  b12:
    // [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*1
    sta.z print_sbyte_at.at
    lda #>at_line+$28*1
    adc #0
    sta.z print_sbyte_at.at+1
    // [87] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx yrs,y
    // [88] call print_sbyte_at 
    // [105] phi from debug_print::@12 to print_sbyte_at [phi:debug_print::@12->print_sbyte_at]
  print_sbyte_at_from_b12:
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#16 [phi:debug_print::@12->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#17 [phi:debug_print::@12->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b13
    // debug_print::@13
  b13:
    // [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*2
    sta.z print_sbyte_at.at
    lda #>at_line+$28*2
    adc #0
    sta.z print_sbyte_at.at+1
    // [90] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx zrs,y
    // [91] call print_sbyte_at 
    // [105] phi from debug_print::@13 to print_sbyte_at [phi:debug_print::@13->print_sbyte_at]
  print_sbyte_at_from_b13:
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#17 [phi:debug_print::@13->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#18 [phi:debug_print::@13->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b14
    // debug_print::@14
  b14:
    // [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*3
    sta.z print_sbyte_at.at
    lda #>at_line+$28*3
    adc #0
    sta.z print_sbyte_at.at+1
    // [93] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx pps,y
    // [94] call print_sbyte_at 
    // [105] phi from debug_print::@14 to print_sbyte_at [phi:debug_print::@14->print_sbyte_at]
  print_sbyte_at_from_b14:
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#18 [phi:debug_print::@14->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#19 [phi:debug_print::@14->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b15
    // debug_print::@15
  b15:
    // [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*4
    sta.z print_sbyte_at.at
    lda #>at_line+$28*4
    adc #0
    sta.z print_sbyte_at.at+1
    // [96] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx xps,y
    // [97] call print_sbyte_at 
    // [105] phi from debug_print::@15 to print_sbyte_at [phi:debug_print::@15->print_sbyte_at]
  print_sbyte_at_from_b15:
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#19 [phi:debug_print::@15->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#20 [phi:debug_print::@15->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b16
    // debug_print::@16
  b16:
    // [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*5
    sta.z print_sbyte_at.at
    lda #>at_line+$28*5
    adc #0
    sta.z print_sbyte_at.at+1
    // [99] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx yps,y
    // [100] call print_sbyte_at 
    // [105] phi from debug_print::@16 to print_sbyte_at [phi:debug_print::@16->print_sbyte_at]
  print_sbyte_at_from_b16:
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#20 [phi:debug_print::@16->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#21 [phi:debug_print::@16->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b17
    // debug_print::@17
  b17:
    // [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c
    axs #-[4]
    stx.z c
    // [102] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [103] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z i
    bne b1_from_b17
    jmp breturn
    // debug_print::@return
  breturn:
    // [104] return 
    rts
}
  // print_sbyte_at
// Print a signed byte as hex at a specific screen position
// print_sbyte_at(signed byte register(X) b, byte* zeropage($d) at)
print_sbyte_at: {
    .label at = $d
    // [106] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1 -- vbsxx_lt_0_then_la1 
    cpx #0
    bmi b1
    jmp b3
    // print_sbyte_at::@3
  b3:
    // [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21
    // [108] call print_char_at 
    // [117] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at]
  print_char_at_from_b3:
    // [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy 
    // [117] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuyy=vbuc1 
    ldy #' '
    jsr print_char_at
    // [109] phi from print_sbyte_at::@3 print_sbyte_at::@4 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2]
  b2_from_b3:
  b2_from_b4:
    // [109] phi (signed byte) print_sbyte_at::b#24 = (signed byte) print_sbyte_at::b#22 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2#0] -- register_copy 
    jmp b2
    // print_sbyte_at::@2
  b2:
    // [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 -- pbuz1=pbuz1_plus_1 
    inc.z print_byte_at.at
    bne !+
    inc.z print_byte_at.at+1
  !:
    // [112] call print_byte_at 
    jsr print_byte_at
    jmp breturn
    // print_sbyte_at::@return
  breturn:
    // [113] return 
    rts
    // print_sbyte_at::@1
  b1:
    // [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21
    // [115] call print_char_at 
    // [117] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at]
  print_char_at_from_b1:
    // [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy 
    // [117] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuyy=vbuc1 
    ldy #'-'
    jsr print_char_at
    jmp b4
    // print_sbyte_at::@4
  b4:
    // [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsxx=_neg_vbsxx 
    txa
    eor #$ff
    clc
    adc #1
    tax
    jmp b2_from_b4
}
  // print_char_at
// Print a single char
// print_char_at(byte register(Y) ch, byte* zeropage($d) at)
print_char_at: {
    .label at = $d
    // [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuyy 
    tya
    ldy #0
    sta (at),y
    jmp breturn
    // print_char_at::@return
  breturn:
    // [119] return 
    rts
}
  // print_byte_at
// Print a byte as HEX at a specific position
// print_byte_at(byte register(X) b, byte* zeropage($d) at)
print_byte_at: {
    .label at = $d
    // [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuyy=vbuxx_ror_4 
    txa
    lsr
    lsr
    lsr
    lsr
    tay
    // [121] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuyy=pbuc1_derefidx_vbuyy 
    lda print_hextab,y
    tay
    // [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0
    // [123] call print_char_at 
    // [117] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at]
  print_char_at_from_print_byte_at:
    // [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy 
    // [117] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy 
    jsr print_char_at
    jmp b1
    // print_byte_at::@1
  b1:
    // [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 
    lda #$f
    axs #0
    // [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 -- pbuz1=pbuz1_plus_1 
    inc.z print_char_at.at
    bne !+
    inc.z print_char_at.at+1
  !:
    // [126] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuyy=pbuc1_derefidx_vbuxx 
    ldy print_hextab,x
    // [127] call print_char_at 
    // [117] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at]
  print_char_at_from_b1:
    // [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy 
    // [117] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy 
    jsr print_char_at
    jmp breturn
    // print_byte_at::@return
  breturn:
    // [128] return 
    rts
}
  // rotate_matrix
// Rotate a 3D point (x,y,z) using the rotation matrix
// The rotation matrix is prepared by calling prepare_matrix() 
// The passed points must be in the interval [-$3f;$3f].
// Implemented in assembler to utilize seriously fast multiplication 
// rotate_matrix(signed byte register(X) x, signed byte zeropage(6) y, signed byte zeropage(4) z)
rotate_matrix: {
    .label y = 6
    .label z = 4
    // [129] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsxx 
    txa
    sta xr
    // [130] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsz1 
    lda.z y
    sta yr
    // [131] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 -- _deref_pbsc1=vbsz1 
    lda.z z
    sta zr
    // 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  }
    ldx zr
  C1:
    lda mulf_sqr1,x
    sec
  C2:
    sbc mulf_sqr2,x
    sta C3+1
  F1:
    lda mulf_sqr1,x
    sec
  F2:
    sbc mulf_sqr2,x
    sta F3+1
  I1:
    lda mulf_sqr1,x
    sec
  I2:
    sbc mulf_sqr2,x
    sta I3+1
    ldx xr
    ldy yr
  I3:
    lda #0
    clc
  G1:
    adc mulf_sqr1,x
    sec
  G2:
    sbc mulf_sqr2,x
    clc
  H1:
    adc mulf_sqr1,y
    sec
  H2:
    sbc mulf_sqr2,y
    sta zr
    sta PP+1
  PP:
    lda PERSP_Z
    sta pp
    sta psp1
    eor #$ff
    sta psp2
  C3:
    lda #0
    clc
  A1:
    adc mulf_sqr1,x
    sec
  A2:
    sbc mulf_sqr2,x
    clc
  B1:
    adc mulf_sqr1,y
    sec
  B2:
    sbc mulf_sqr2,y
    sta xr
    sta XX+1
    clc
  F3:
    lda #0
    clc
  D1:
    adc mulf_sqr1,x
    sec
  D2:
    sbc mulf_sqr2,x
    clc
  E1:
    adc mulf_sqr1,y
    sec
  E2:
    sbc mulf_sqr2,y
    sta yr
    tay
    lda (psp1),y
    sec
    sbc (psp2),y
    sta yp
  XX:
    ldy #0
    lda (psp1),y
    sec
    sbc (psp2),y
    sta xp
    jmp breturn
    // rotate_matrix::@return
  breturn:
    // [133] return 
    rts
}
  // store_matrix
// Store the rotation matrix into the rotation routine rotate()
// After this each call to rotate() will rotate a point with the matrix
// Implemented in assembler to utilize seriously fast multiplication 
store_matrix: {
    // 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  }
    lda rotation_matrix+0
    sta rotate_matrix.A1+1
    eor #$ff
    sta rotate_matrix.A2+1
    lda rotation_matrix+1
    sta rotate_matrix.B1+1
    eor #$ff
    sta rotate_matrix.B2+1
    lda rotation_matrix+2
    sta rotate_matrix.C1+1
    eor #$ff
    sta rotate_matrix.C2+1
    lda rotation_matrix+3
    sta rotate_matrix.D1+1
    eor #$ff
    sta rotate_matrix.D2+1
    lda rotation_matrix+4
    sta rotate_matrix.E1+1
    eor #$ff
    sta rotate_matrix.E2+1
    lda rotation_matrix+5
    sta rotate_matrix.F1+1
    eor #$ff
    sta rotate_matrix.F2+1
    lda rotation_matrix+6
    sta rotate_matrix.G1+1
    eor #$ff
    sta rotate_matrix.G2+1
    lda rotation_matrix+7
    sta rotate_matrix.H1+1
    eor #$ff
    sta rotate_matrix.H2+1
    lda rotation_matrix+8
    sta rotate_matrix.I1+1
    eor #$ff
    sta rotate_matrix.I2+1
    jmp breturn
    // store_matrix::@return
  breturn:
    // [135] return 
    rts
}
  // calculate_matrix
// Prepare the 3x3 rotation matrix into rotation_matrix[]
// Angles sx, sy, sz are based on 2*PI=$100 
// Method described in C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt
// calculate_matrix(signed byte register(X) sx, signed byte zeropage(3) sy)
calculate_matrix: {
    .label sy = 3
    .label t1 = 4
    .label t2 = 5
    .label t3 = 6
    .label t4 = 7
    .label t5 = 8
    .label t6 = 9
    .label t7 = $a
    .label t8 = $b
    .label t9 = $c
    // [136] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 -- vbsz1=vbsz2 
    lda.z sy
    sta.z t1
    // [137] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 -- vbsz1=vbsz2 
    lda.z sy
    sta.z t2
    // [138] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsxx 
    stx.z t3
    // [139] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsxx 
    stx.z t4
    // [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 -- vbsz1=vbsxx_plus_vbsz2 
    txa
    clc
    adc.z t2
    sta.z t5
    // [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_minus_vbsz2 
    txa
    sec
    sbc.z t1
    sta.z t6
    // [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_plus_vbsz2 
    txa
    clc
    adc.z t1
    sta.z t7
    // [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsxx 
    txa
    eor #$ff
    sec
    adc.z t2
    sta.z t8
    // [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsxx 
    txa
    eor #$ff
    sec
    adc.z sy
    sta.z t9
    // [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 -- vbsxx=vbsz1_plus_vbsxx 
    txa
    clc
    adc.z sy
    tax
    // [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 
    ldy.z t1
    lda COSH,y
    ldy.z t2
    clc
    adc COSH,y
    // [147] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix
    // [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 
    ldy.z t1
    lda SINH,y
    ldy.z t2
    sec
    sbc SINH,y
    // [149] *((const signed byte[9]) rotation_matrix#0+(byte) 1) ← (signed byte~) calculate_matrix::$11 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+1
    // [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz1 
    ldy.z sy
    clc
    lda SINH,y
    adc SINH,y
    // [151] *((const signed byte[9]) rotation_matrix#0+(byte) 2) ← (signed byte~) calculate_matrix::$12 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+2
    // [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 
    ldy.z t3
    lda SINH,y
    ldy.z t4
    sec
    sbc SINH,y
    // [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy.z t6
    clc
    adc COSQ,y
    // [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t5
    sec
    sbc COSQ,y
    // [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy.z t8
    clc
    adc COSQ,y
    // [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t7
    sec
    sbc COSQ,y
    // [157] *((const signed byte[9]) rotation_matrix#0+(byte) 3) ← (signed byte~) calculate_matrix::$17 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+3
    // [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 
    ldy.z t3
    lda COSH,y
    ldy.z t4
    clc
    adc COSH,y
    // [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy.z t5
    clc
    adc SINQ,y
    // [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t6
    sec
    sbc SINQ,y
    // [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t7
    sec
    sbc SINQ,y
    // [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t8
    sec
    sbc SINQ,y
    // [163] *((const signed byte[9]) rotation_matrix#0+(byte) 4) ← (signed byte~) calculate_matrix::$22 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+4
    // [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsxx 
    ldy.z t9
    lda SINH,y
    sec
    sbc SINH,x
    // [165] *((const signed byte[9]) rotation_matrix#0+(byte) 5) ← (signed byte~) calculate_matrix::$23 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+5
    // [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 
    ldy.z t4
    lda COSH,y
    ldy.z t3
    sec
    sbc COSH,y
    // [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy.z t6
    clc
    adc SINQ,y
    // [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t5
    sec
    sbc SINQ,y
    // [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t8
    sec
    sbc SINQ,y
    // [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t7
    sec
    sbc SINQ,y
    // [171] *((const signed byte[9]) rotation_matrix#0+(byte) 6) ← (signed byte~) calculate_matrix::$28 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+6
    // [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 
    ldy.z t3
    lda SINH,y
    ldy.z t4
    clc
    adc SINH,y
    // [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy.z t6
    clc
    adc COSQ,y
    // [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t5
    sec
    sbc COSQ,y
    // [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy.z t7
    clc
    adc COSQ,y
    // [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t8
    sec
    sbc COSQ,y
    // [177] *((const signed byte[9]) rotation_matrix#0+(byte) 7) ← (signed byte~) calculate_matrix::$33 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+7
    // [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsxx 
    lda COSH,x
    ldy.z t9
    clc
    adc COSH,y
    // [179] *((const signed byte[9]) rotation_matrix#0+(byte) 8) ← (signed byte~) calculate_matrix::$34 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+8
    jmp breturn
    // calculate_matrix::@return
  breturn:
    // [180] return 
    rts
}
  // debug_print_init
debug_print_init: {
    .label COLS = $d800
    .label at_line = SCREEN+$10*$28
    .label at_cols = COLS+$10*$28
    .label _41 = $d
    .label _44 = $f
    .label _47 = $11
    .label _50 = $13
    .label _53 = $15
    .label _56 = $17
    .label _59 = $19
    .label _62 = $1b
    .label _65 = $1d
    .label c = 2
    .label i = 3
    // [182] call print_cls 
    // [250] phi from debug_print_init to print_cls [phi:debug_print_init->print_cls]
  print_cls_from_debug_print_init:
    jsr print_cls
    // [183] phi from debug_print_init to debug_print_init::@4 [phi:debug_print_init->debug_print_init::@4]
  b4_from_debug_print_init:
    jmp b4
    // debug_print_init::@4
  b4:
    // [184] call print_str_at 
    // [243] phi from debug_print_init::@4 to print_str_at [phi:debug_print_init::@4->print_str_at]
  print_str_at_from_b4:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte) $22 [phi:debug_print_init::@4->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$22
    sta.z print_str_at.at
    lda #>SCREEN+$22
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str [phi:debug_print_init::@4->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str_at.str
    lda #>str
    sta.z print_str_at.str+1
    jsr print_str_at
    // [185] phi from debug_print_init::@4 to debug_print_init::@5 [phi:debug_print_init::@4->debug_print_init::@5]
  b5_from_b4:
    jmp b5
    // debug_print_init::@5
  b5:
    // [186] call print_str_at 
    // [243] phi from debug_print_init::@5 to print_str_at [phi:debug_print_init::@5->print_str_at]
  print_str_at_from_b5:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 1+(byte) $22 [phi:debug_print_init::@5->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*1+$22
    sta.z print_str_at.at
    lda #>SCREEN+$28*1+$22
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str1 [phi:debug_print_init::@5->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str1
    sta.z print_str_at.str
    lda #>str1
    sta.z print_str_at.str+1
    jsr print_str_at
    // [187] phi from debug_print_init::@5 to debug_print_init::@6 [phi:debug_print_init::@5->debug_print_init::@6]
  b6_from_b5:
    jmp b6
    // debug_print_init::@6
  b6:
    // [188] call print_str_at 
    // [243] phi from debug_print_init::@6 to print_str_at [phi:debug_print_init::@6->print_str_at]
  print_str_at_from_b6:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 2+(byte) $22 [phi:debug_print_init::@6->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*2+$22
    sta.z print_str_at.at
    lda #>SCREEN+$28*2+$22
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str2 [phi:debug_print_init::@6->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str2
    sta.z print_str_at.str
    lda #>str2
    sta.z print_str_at.str+1
    jsr print_str_at
    // [189] phi from debug_print_init::@6 to debug_print_init::@7 [phi:debug_print_init::@6->debug_print_init::@7]
  b7_from_b6:
    jmp b7
    // debug_print_init::@7
  b7:
    // [190] call print_str_at 
    // [243] phi from debug_print_init::@7 to print_str_at [phi:debug_print_init::@7->print_str_at]
  print_str_at_from_b7:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $10 [phi:debug_print_init::@7->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$10
    sta.z print_str_at.at
    lda #>SCREEN+$28*$10
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str3 [phi:debug_print_init::@7->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str3
    sta.z print_str_at.str
    lda #>str3
    sta.z print_str_at.str+1
    jsr print_str_at
    // [191] phi from debug_print_init::@7 to debug_print_init::@8 [phi:debug_print_init::@7->debug_print_init::@8]
  b8_from_b7:
    jmp b8
    // debug_print_init::@8
  b8:
    // [192] call print_str_at 
    // [243] phi from debug_print_init::@8 to print_str_at [phi:debug_print_init::@8->print_str_at]
  print_str_at_from_b8:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $11 [phi:debug_print_init::@8->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$11
    sta.z print_str_at.at
    lda #>SCREEN+$28*$11
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str4 [phi:debug_print_init::@8->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str4
    sta.z print_str_at.str
    lda #>str4
    sta.z print_str_at.str+1
    jsr print_str_at
    // [193] phi from debug_print_init::@8 to debug_print_init::@9 [phi:debug_print_init::@8->debug_print_init::@9]
  b9_from_b8:
    jmp b9
    // debug_print_init::@9
  b9:
    // [194] call print_str_at 
    // [243] phi from debug_print_init::@9 to print_str_at [phi:debug_print_init::@9->print_str_at]
  print_str_at_from_b9:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $12 [phi:debug_print_init::@9->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$12
    sta.z print_str_at.at
    lda #>SCREEN+$28*$12
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str5 [phi:debug_print_init::@9->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str5
    sta.z print_str_at.str
    lda #>str5
    sta.z print_str_at.str+1
    jsr print_str_at
    // [195] phi from debug_print_init::@9 to debug_print_init::@10 [phi:debug_print_init::@9->debug_print_init::@10]
  b10_from_b9:
    jmp b10
    // debug_print_init::@10
  b10:
    // [196] call print_str_at 
    // [243] phi from debug_print_init::@10 to print_str_at [phi:debug_print_init::@10->print_str_at]
  print_str_at_from_b10:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $13 [phi:debug_print_init::@10->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$13
    sta.z print_str_at.at
    lda #>SCREEN+$28*$13
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str6 [phi:debug_print_init::@10->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str6
    sta.z print_str_at.str
    lda #>str6
    sta.z print_str_at.str+1
    jsr print_str_at
    // [197] phi from debug_print_init::@10 to debug_print_init::@11 [phi:debug_print_init::@10->debug_print_init::@11]
  b11_from_b10:
    jmp b11
    // debug_print_init::@11
  b11:
    // [198] call print_str_at 
    // [243] phi from debug_print_init::@11 to print_str_at [phi:debug_print_init::@11->print_str_at]
  print_str_at_from_b11:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $14 [phi:debug_print_init::@11->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$14
    sta.z print_str_at.at
    lda #>SCREEN+$28*$14
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str7 [phi:debug_print_init::@11->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str7
    sta.z print_str_at.str
    lda #>str7
    sta.z print_str_at.str+1
    jsr print_str_at
    // [199] phi from debug_print_init::@11 to debug_print_init::@12 [phi:debug_print_init::@11->debug_print_init::@12]
  b12_from_b11:
    jmp b12
    // debug_print_init::@12
  b12:
    // [200] call print_str_at 
    // [243] phi from debug_print_init::@12 to print_str_at [phi:debug_print_init::@12->print_str_at]
  print_str_at_from_b12:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $15 [phi:debug_print_init::@12->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$15
    sta.z print_str_at.at
    lda #>SCREEN+$28*$15
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str8 [phi:debug_print_init::@12->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str8
    sta.z print_str_at.str
    lda #>str8
    sta.z print_str_at.str+1
    jsr print_str_at
    // [201] phi from debug_print_init::@12 to debug_print_init::@13 [phi:debug_print_init::@12->debug_print_init::@13]
  b13_from_b12:
    jmp b13
    // debug_print_init::@13
  b13:
    // [202] call print_str_at 
    // [243] phi from debug_print_init::@13 to print_str_at [phi:debug_print_init::@13->print_str_at]
  print_str_at_from_b13:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $16 [phi:debug_print_init::@13->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$16
    sta.z print_str_at.at
    lda #>SCREEN+$28*$16
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str9 [phi:debug_print_init::@13->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str9
    sta.z print_str_at.str
    lda #>str9
    sta.z print_str_at.str+1
    jsr print_str_at
    // [203] phi from debug_print_init::@13 to debug_print_init::@14 [phi:debug_print_init::@13->debug_print_init::@14]
  b14_from_b13:
    jmp b14
    // debug_print_init::@14
  b14:
    // [204] call print_str_at 
    // [243] phi from debug_print_init::@14 to print_str_at [phi:debug_print_init::@14->print_str_at]
  print_str_at_from_b14:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $17 [phi:debug_print_init::@14->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$17
    sta.z print_str_at.at
    lda #>SCREEN+$28*$17
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str10 [phi:debug_print_init::@14->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str10
    sta.z print_str_at.str
    lda #>str10
    sta.z print_str_at.str+1
    jsr print_str_at
    // [205] phi from debug_print_init::@14 to debug_print_init::@15 [phi:debug_print_init::@14->debug_print_init::@15]
  b15_from_b14:
    jmp b15
    // debug_print_init::@15
  b15:
    // [206] call print_str_at 
    // [243] phi from debug_print_init::@15 to print_str_at [phi:debug_print_init::@15->print_str_at]
  print_str_at_from_b15:
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $18 [phi:debug_print_init::@15->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$18
    sta.z print_str_at.at
    lda #>SCREEN+$28*$18
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str11 [phi:debug_print_init::@15->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str11
    sta.z print_str_at.str
    lda #>str11
    sta.z print_str_at.str+1
    jsr print_str_at
    // [207] phi from debug_print_init::@15 to debug_print_init::@1 [phi:debug_print_init::@15->debug_print_init::@1]
  b1_from_b15:
    // [207] phi (byte) debug_print_init::i#2 = (byte) 0 [phi:debug_print_init::@15->debug_print_init::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    // [207] phi (byte) debug_print_init::c#2 = (byte) 4 [phi:debug_print_init::@15->debug_print_init::@1#1] -- vbuz1=vbuc1 
    lda #4
    sta.z c
    jmp b1
    // [207] phi from debug_print_init::@3 to debug_print_init::@1 [phi:debug_print_init::@3->debug_print_init::@1]
  b1_from_b3:
    // [207] phi (byte) debug_print_init::i#2 = (byte) debug_print_init::i#1 [phi:debug_print_init::@3->debug_print_init::@1#0] -- register_copy 
    // [207] phi (byte) debug_print_init::c#2 = (byte) debug_print_init::c#1 [phi:debug_print_init::@3->debug_print_init::@1#1] -- register_copy 
    jmp b1
    // debug_print_init::@1
  b1:
    // [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line
    sta.z print_sbyte_at.at
    lda #>at_line
    adc #0
    sta.z print_sbyte_at.at+1
    // [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx xs,y
    // [210] call print_sbyte_at 
    // [105] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at]
  print_sbyte_at_from_b1:
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#0 [phi:debug_print_init::@1->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#1 [phi:debug_print_init::@1->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b16
    // debug_print_init::@16
  b16:
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*1
    sta.z print_sbyte_at.at
    lda #>at_line+$28*1
    adc #0
    sta.z print_sbyte_at.at+1
    // [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx ys,y
    // [213] call print_sbyte_at 
    // [105] phi from debug_print_init::@16 to print_sbyte_at [phi:debug_print_init::@16->print_sbyte_at]
  print_sbyte_at_from_b16:
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#1 [phi:debug_print_init::@16->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#2 [phi:debug_print_init::@16->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b17
    // debug_print_init::@17
  b17:
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*2
    sta.z print_sbyte_at.at
    lda #>at_line+$28*2
    adc #0
    sta.z print_sbyte_at.at+1
    // [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx zs,y
    // [216] call print_sbyte_at 
    // [105] phi from debug_print_init::@17 to print_sbyte_at [phi:debug_print_init::@17->print_sbyte_at]
  print_sbyte_at_from_b17:
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#2 [phi:debug_print_init::@17->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#3 [phi:debug_print_init::@17->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // [217] phi from debug_print_init::@17 to debug_print_init::@2 [phi:debug_print_init::@17->debug_print_init::@2]
  b2_from_b17:
    // [217] phi (byte) debug_print_init::j#2 = (byte) 0 [phi:debug_print_init::@17->debug_print_init::@2#0] -- vbuyy=vbuc1 
    ldy #0
    jmp b2
    // [217] phi from debug_print_init::@2 to debug_print_init::@2 [phi:debug_print_init::@2->debug_print_init::@2]
  b2_from_b2:
    // [217] phi (byte) debug_print_init::j#2 = (byte) debug_print_init::j#1 [phi:debug_print_init::@2->debug_print_init::@2#0] -- register_copy 
    jmp b2
    // debug_print_init::@2
  b2:
    // [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 -- vbuxx=vbuc1_plus_vbuz1 
    lax.z i
    axs #-[8]
    // [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols
    sta.z _41
    lda #>at_cols
    adc #0
    sta.z _41+1
    // [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx 
    txa
    sta (_41),y
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*1
    sta.z _44
    lda #>at_cols+$28*1
    adc #0
    sta.z _44+1
    // [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx 
    txa
    sta (_44),y
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*2
    sta.z _47
    lda #>at_cols+$28*2
    adc #0
    sta.z _47+1
    // [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx 
    txa
    sta (_47),y
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*3
    sta.z _50
    lda #>at_cols+$28*3
    adc #0
    sta.z _50+1
    // [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx 
    txa
    sta (_50),y
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*4
    sta.z _53
    lda #>at_cols+$28*4
    adc #0
    sta.z _53+1
    // [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx 
    txa
    sta (_53),y
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*5
    sta.z _56
    lda #>at_cols+$28*5
    adc #0
    sta.z _56+1
    // [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx 
    txa
    sta (_56),y
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*6
    sta.z _59
    lda #>at_cols+$28*6
    adc #0
    sta.z _59+1
    // [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx 
    txa
    sta (_59),y
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*7
    sta.z _62
    lda #>at_cols+$28*7
    adc #0
    sta.z _62+1
    // [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx 
    txa
    sta (_62),y
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*8
    sta.z _65
    lda #>at_cols+$28*8
    adc #0
    sta.z _65+1
    // [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx 
    txa
    sta (_65),y
    // [237] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 -- vbuyy=_inc_vbuyy 
    iny
    // [238] if((byte) debug_print_init::j#1!=(byte) 4) goto debug_print_init::@2 -- vbuyy_neq_vbuc1_then_la1 
    cpy #4
    bne b2_from_b2
    jmp b3
    // debug_print_init::@3
  b3:
    // [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c
    axs #-[4]
    stx.z c
    // [240] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z i
    bne b1_from_b3
    jmp breturn
    // debug_print_init::@return
  breturn:
    // [242] return 
    rts
    str: .text "sx"
    .byte 0
    str1: .text "sy"
    .byte 0
    str2: .text "sz"
    .byte 0
    str3: .text "x"
    .byte 0
    str4: .text "y"
    .byte 0
    str5: .text "z"
    .byte 0
    str6: .text "xr"
    .byte 0
    str7: .text "yr"
    .byte 0
    str8: .text "zr"
    .byte 0
    str9: .text "pp"
    .byte 0
    str10: .text "xp"
    .byte 0
    str11: .text "yp"
    .byte 0
}
  // print_str_at
// Print a string at a specific screen position
// print_str_at(byte* zeropage($d) str, byte* zeropage($f) at)
print_str_at: {
    .label at = $f
    .label str = $d
    // [244] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1]
  b1_from_print_str_at:
  b1_from_b2:
    // [244] phi (byte*) print_str_at::at#13 = (byte*) print_str_at::at#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy 
    // [244] phi (byte*) print_str_at::str#13 = (byte*) print_str_at::str#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy 
    jmp b1
    // print_str_at::@1
  b1:
    // [245] if((byte) 0!=*((byte*) print_str_at::str#13)) goto print_str_at::@2 -- vbuc1_neq__deref_pbuz1_then_la1 
    ldy #0
    lda (str),y
    cmp #0
    bne b2
    jmp breturn
    // print_str_at::@return
  breturn:
    // [246] return 
    rts
    // print_str_at::@2
  b2:
    // [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    ldy #0
    sta (at),y
    // [248] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 -- pbuz1=_inc_pbuz1 
    inc.z at
    bne !+
    inc.z at+1
  !:
    // [249] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 -- pbuz1=_inc_pbuz1 
    inc.z str
    bne !+
    inc.z str+1
  !:
    jmp b1_from_b2
}
  // print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    // [251] call memset 
    // [253] phi from print_cls to memset [phi:print_cls->memset]
  memset_from_print_cls:
    jsr memset
    jmp breturn
    // print_cls::@return
  breturn:
    // [252] return 
    rts
}
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
memset: {
    .const c = ' '
    .const num = $3e8
    .label str = print_screen
    .label end = str+num
    .label dst = $f
    // [254] phi from memset to memset::@2 [phi:memset->memset::@2]
  b2_from_memset:
    // [254] phi (byte*) memset::dst#4 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@2#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    jmp b2
    // [254] phi from memset::@1 to memset::@2 [phi:memset::@1->memset::@2]
  b2_from_b1:
    // [254] phi (byte*) memset::dst#4 = (byte*) memset::dst#1 [phi:memset::@1->memset::@2#0] -- register_copy 
    jmp b2
    // memset::@2
  b2:
    // [255] *((byte*) memset::dst#4) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // [256] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#4 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    jmp b1
    // memset::@1
  b1:
    // [257] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 
    lda.z dst+1
    cmp #>end
    bne b2_from_b1
    lda.z dst
    cmp #<end
    bne b2_from_b1
    jmp breturn
    // memset::@return
  breturn:
    // [258] return 
    rts
}
  // sprites_init
// Initialize sprites
sprites_init: {
    .label SCREEN = $400
    .label sprites_ptr = SCREEN+$3f8
    // [259] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff -- _deref_pbuc1=vbuc2 
    lda #$ff
    sta SPRITES_ENABLE
    // [260] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1]
  b1_from_sprites_init:
    // [260] phi (byte) sprites_init::i#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#0] -- vbuxx=vbuc1 
    ldx #0
    jmp b1
    // [260] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1]
  b1_from_b1:
    // [260] phi (byte) sprites_init::i#2 = (byte) sprites_init::i#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy 
    jmp b1
    // sprites_init::@1
  b1:
    // [261] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #SPRITE/$40
    sta sprites_ptr,x
    // [262] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #GREEN
    sta SPRITES_COLS,x
    // [263] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [264] if((byte) sprites_init::i#1!=(byte) 8) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #8
    bne b1_from_b1
    jmp breturn
    // sprites_init::@return
  breturn:
    // [265] return 
    rts
}
  // File Data
  print_hextab: .text "0123456789abcdef"
  // Positions to rotate
  xs: .byte -$34, -$34, -$34, 0, 0, $34, $34, $34
  ys: .byte -$34, 0, $34, -$34, $34, -$34, 0, $34
  zs: .byte $34, $34, $34, $34, $34, $34, $34, $34
  // Rotated positions
  xrs: .fill 8, 0
  yrs: .fill 8, 0
  zrs: .fill 8, 0
  // Persepctive factors (from zrs)
  pps: .fill 8, 0
  // Rotated positions with persepctive
  xps: .fill 8, 0
  yps: .fill 8, 0
  // The rotation matrix
  rotation_matrix: .fill 9, 0
  // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x).
  // f(x) = >(( x * x ))
  .align $100
mulf_sqr1:
.for(var i=0;i<$200;i++) {
    	.if(i<=159) { .byte round((i*i)/256) }
    	.if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) }
    	.if(i>351) { .byte round(((512-i)*(512-i))/256) }
    }

  // g(x) =  >((( 1 - x ) * ( 1 - x )))
  .align $100
mulf_sqr2:
.for(var i=0;i<$200;i++) {
    	.if(i<=159) { .byte round((-i-1)*(-i-1)/256) }
    	.if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) }
    	.if(i>351) { .byte round(((i-511)*(i-511))/256) }  
    }

  // Perspective multiplication table containing (d/(z0-z)[z] for each z-value   
  .align $100
PERSP_Z:
{
    .var d = 256.0	
    .var z0 = 6.0	
    // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f)
    .for(var z=0;z<$100;z++) {
    	.if(z>127) {
    		.byte round(d / (z0 - ((z - 256) / 64.0)));
    	} else {
    		.byte round(d / (z0 - (z / 64.0)));
    	}
    }
	}

  // Sine and Cosine Tables   
  // Angles: $00=0, $80=PI,$100=2*PI
  // Half Sine/Cosine: signed fixed [-$20;20]
  .align $40
SINH:
{
    .var min = -$2000
    .var max = $2000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256)
    }
    }

  // Quarter Sine/Cosine: signed fixed [-$10,$10]
  .align $40
SINQ:
{
    .var min = -$1000
    .var max = $1000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256)
    }
    }

.pc = SPRITE "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)


ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
Removing instruction jmp bend
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp b4
Removing instruction jmp b5
Removing instruction jmp b8
Removing instruction jmp b6
Removing instruction jmp b9
Removing instruction jmp b7
Removing instruction jmp b10
Removing instruction jmp print_sbyte_pos1
Removing instruction jmp b2
Removing instruction jmp print_sbyte_pos2
Removing instruction jmp print_sbyte_pos3
Removing instruction jmp b3
Removing instruction jmp print_sbyte_pos4
Removing instruction jmp b4
Removing instruction jmp print_sbyte_pos5
Removing instruction jmp b5
Removing instruction jmp print_sbyte_pos6
Removing instruction jmp b6
Removing instruction jmp print_sbyte_pos7
Removing instruction jmp b7
Removing instruction jmp print_sbyte_pos8
Removing instruction jmp b8
Removing instruction jmp print_sbyte_pos9
Removing instruction jmp b9
Removing instruction jmp print_sbyte_pos10
Removing instruction jmp b10
Removing instruction jmp print_sbyte_pos11
Removing instruction jmp b11
Removing instruction jmp print_sbyte_pos12
Removing instruction jmp b1
Removing instruction jmp b12
Removing instruction jmp b13
Removing instruction jmp b14
Removing instruction jmp b15
Removing instruction jmp b16
Removing instruction jmp b17
Removing instruction jmp breturn
Removing instruction jmp b3
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp b4
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp breturn
Removing instruction jmp breturn
Removing instruction jmp breturn
Removing instruction jmp breturn
Removing instruction jmp b4
Removing instruction jmp b5
Removing instruction jmp b6
Removing instruction jmp b7
Removing instruction jmp b8
Removing instruction jmp b9
Removing instruction jmp b10
Removing instruction jmp b11
Removing instruction jmp b12
Removing instruction jmp b13
Removing instruction jmp b14
Removing instruction jmp b15
Removing instruction jmp b1
Removing instruction jmp b16
Removing instruction jmp b17
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp breturn
Removing instruction jmp breturn
Removing instruction jmp b2
Removing instruction jmp b1
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda #0
Removing instruction ldy.z i
Removing instruction ldy.z i
Removing instruction ldy.z i
Removing instruction ldy.z i
Removing instruction ldy.z i
Removing instruction ldy.z i
Removing instruction ldy.z i
Replacing instruction lda.z i with TYA
Replacing instruction ldx zr with TAX
Removing instruction ldy #0
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label b6_from_b9 with b6
Replacing label b1 with b2
Replacing label b1_from_b17 with b1
Replacing label b2_from_b4 with b2
Replacing label b2_from_b2 with b2
Replacing label b1_from_b3 with b1
Replacing label b1_from_b2 with b1
Replacing label b2_from_b1 with b2
Replacing label b2_from_b1 with b2
Replacing label b1_from_b1 with b1
Removing instruction b1:
Removing instruction bend_from_b1:
Removing instruction b2_from_b1:
Removing instruction anim_from_b2:
Removing instruction b1:
Removing instruction b8_from_b5:
Removing instruction b6_from_b9:
Removing instruction print_sbyte_at_from_print_sbyte_pos1:
Removing instruction print_sbyte_at_from_print_sbyte_pos2:
Removing instruction print_sbyte_pos3_from_print_sbyte_pos2:
Removing instruction print_sbyte_at_from_print_sbyte_pos3:
Removing instruction print_sbyte_at_from_print_sbyte_pos4:
Removing instruction print_sbyte_at_from_print_sbyte_pos5:
Removing instruction print_sbyte_at_from_print_sbyte_pos6:
Removing instruction print_sbyte_at_from_print_sbyte_pos7:
Removing instruction print_sbyte_at_from_print_sbyte_pos8:
Removing instruction print_sbyte_at_from_print_sbyte_pos9:
Removing instruction print_sbyte_at_from_print_sbyte_pos10:
Removing instruction print_sbyte_at_from_print_sbyte_pos11:
Removing instruction print_sbyte_at_from_print_sbyte_pos12:
Removing instruction b1_from_b17:
Removing instruction print_char_at_from_b3:
Removing instruction b2_from_b3:
Removing instruction b2_from_b4:
Removing instruction print_char_at_from_b1:
Removing instruction b4_from_debug_print_init:
Removing instruction print_str_at_from_b4:
Removing instruction b5_from_b4:
Removing instruction print_str_at_from_b5:
Removing instruction b6_from_b5:
Removing instruction print_str_at_from_b6:
Removing instruction b7_from_b6:
Removing instruction print_str_at_from_b7:
Removing instruction b8_from_b7:
Removing instruction print_str_at_from_b8:
Removing instruction b9_from_b8:
Removing instruction print_str_at_from_b9:
Removing instruction b10_from_b9:
Removing instruction print_str_at_from_b10:
Removing instruction b11_from_b10:
Removing instruction print_str_at_from_b11:
Removing instruction b12_from_b11:
Removing instruction print_str_at_from_b12:
Removing instruction b13_from_b12:
Removing instruction print_str_at_from_b13:
Removing instruction b14_from_b13:
Removing instruction print_str_at_from_b14:
Removing instruction b15_from_b14:
Removing instruction print_str_at_from_b15:
Removing instruction b1_from_b3:
Removing instruction b2_from_b2:
Removing instruction b1_from_print_str_at:
Removing instruction b1_from_b2:
Removing instruction b2_from_b1:
Removing instruction b1_from_b1:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction bend:
Removing instruction b1:
Removing instruction debug_print_init_from_b1:
Removing instruction b2:
Removing instruction breturn:
Removing instruction b1_from_anim:
Removing instruction b5:
Removing instruction b8:
Removing instruction b6_from_b8:
Removing instruction b9:
Removing instruction b7:
Removing instruction b10:
Removing instruction b1_from_b10:
Removing instruction print_sbyte_pos1:
Removing instruction b2:
Removing instruction print_sbyte_pos2:
Removing instruction print_sbyte_pos3:
Removing instruction b3:
Removing instruction print_sbyte_pos4:
Removing instruction b4:
Removing instruction print_sbyte_pos5:
Removing instruction b5:
Removing instruction print_sbyte_pos6:
Removing instruction b6:
Removing instruction print_sbyte_pos7:
Removing instruction b7:
Removing instruction print_sbyte_pos8:
Removing instruction b8:
Removing instruction print_sbyte_pos9:
Removing instruction b9:
Removing instruction print_sbyte_pos10:
Removing instruction b10:
Removing instruction print_sbyte_pos11:
Removing instruction b11:
Removing instruction print_sbyte_pos12:
Removing instruction b1_from_print_sbyte_pos12:
Removing instruction print_sbyte_at_from_b1:
Removing instruction b12:
Removing instruction print_sbyte_at_from_b12:
Removing instruction b13:
Removing instruction print_sbyte_at_from_b13:
Removing instruction b14:
Removing instruction print_sbyte_at_from_b14:
Removing instruction b15:
Removing instruction print_sbyte_at_from_b15:
Removing instruction b16:
Removing instruction print_sbyte_at_from_b16:
Removing instruction b17:
Removing instruction breturn:
Removing instruction b3:
Removing instruction breturn:
Removing instruction b4:
Removing instruction breturn:
Removing instruction print_char_at_from_print_byte_at:
Removing instruction b1:
Removing instruction print_char_at_from_b1:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction print_cls_from_debug_print_init:
Removing instruction b4:
Removing instruction b5:
Removing instruction b6:
Removing instruction b7:
Removing instruction b8:
Removing instruction b9:
Removing instruction b10:
Removing instruction b11:
Removing instruction b12:
Removing instruction b13:
Removing instruction b14:
Removing instruction b15:
Removing instruction b1_from_b15:
Removing instruction print_sbyte_at_from_b1:
Removing instruction b16:
Removing instruction print_sbyte_at_from_b16:
Removing instruction b17:
Removing instruction print_sbyte_at_from_b17:
Removing instruction b2_from_b17:
Removing instruction b3:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction memset_from_print_cls:
Removing instruction breturn:
Removing instruction b2_from_memset:
Removing instruction b1:
Removing instruction breturn:
Removing instruction b1_from_sprites_init:
Removing instruction breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Updating BasicUpstart to call main directly
Removing instruction jsr main
Succesful ASM optimization Pass5SkipBegin
Removing instruction jmp b6
Removing instruction jmp b1
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b2
Removing instruction jmp b1
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction bbegin:
Succesful ASM optimization Pass5UnusedLabelElimination
Fixing long branch [299] bne b1 to beq
Fixing long branch [899] bne b2 to beq
Fixing long branch [908] bne b1 to beq

FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
(byte*) BORDERCOL
(const byte*) BORDERCOL#0 BORDERCOL = (byte*) 53280
(signed byte*) COSH
(const signed byte*) COSH#0 COSH = (const signed byte[$140]) SINH#0+(byte) $40
(signed byte*) COSQ
(const signed byte*) COSQ#0 COSQ = (const signed byte[$140]) SINQ#0+(byte) $40
(byte) GREEN
(const byte) GREEN#0 GREEN = (byte) 5
(byte) LIGHT_BLUE
(const byte) LIGHT_BLUE#0 LIGHT_BLUE = (byte) $e
(byte) LIGHT_GREY
(const byte) LIGHT_GREY#0 LIGHT_GREY = (byte) $f
(signed byte[$100]) PERSP_Z
(const signed byte[$100]) PERSP_Z#0 PERSP_Z = kickasm {{ {
    .var d = 256.0	
    .var z0 = 6.0	
    // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f)
    .for(var z=0;z<$100;z++) {
    	.if(z>127) {
    		.byte round(d / (z0 - ((z - 256) / 64.0)));
    	} else {
    		.byte round(d / (z0 - (z / 64.0)));
    	}
    }
	}
 }}
(const byte) RADIX::BINARY BINARY = (number) 2
(const byte) RADIX::DECIMAL DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL OCTAL = (number) 8
(byte*) RASTER
(const byte*) RASTER#0 RASTER = (byte*) 53266
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (byte*) 1024
(signed byte[$140]) SINH
(const signed byte[$140]) SINH#0 SINH = kickasm {{ {
    .var min = -$2000
    .var max = $2000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256)
    }
    }
 }}
(signed byte[$140]) SINQ
(const signed byte[$140]) SINQ#0 SINQ = kickasm {{ {
    .var min = -$1000
    .var max = $1000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256)
    }
    }
 }}
(byte*) SPRITE
(const byte*) SPRITE#0 SPRITE = (byte*) 12288
(byte*) SPRITES_COLS
(const byte*) SPRITES_COLS#0 SPRITES_COLS = (byte*) 53287
(byte*) SPRITES_ENABLE
(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = (byte*) 53269
(byte*) SPRITES_XPOS
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = (byte*) 53248
(byte*) SPRITES_YPOS
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = (byte*) 53249
(void()) anim()
(byte~) anim::$10 reg byte a 202.0
(byte~) anim::$8 reg byte a 202.0
(label) anim::@1
(label) anim::@10
(label) anim::@2
(label) anim::@3
(label) anim::@4
(label) anim::@5
(label) anim::@6
(label) anim::@7
(label) anim::@8
(label) anim::@9
(byte) anim::i
(byte) anim::i#1 i zp ZP_BYTE:5 151.5
(byte) anim::i#2 i zp ZP_BYTE:5 71.29411764705881
(byte) anim::i2
(byte) anim::i2#0 reg byte x 75.75
(void()) calculate_matrix((signed byte) calculate_matrix::sx , (signed byte) calculate_matrix::sy , (signed byte) calculate_matrix::sz)
(signed byte~) calculate_matrix::$10 reg byte a 4.0
(signed byte~) calculate_matrix::$11 reg byte a 4.0
(signed byte~) calculate_matrix::$12 reg byte a 4.0
(signed byte~) calculate_matrix::$13 reg byte a 4.0
(signed byte~) calculate_matrix::$14 reg byte a 4.0
(signed byte~) calculate_matrix::$15 reg byte a 4.0
(signed byte~) calculate_matrix::$16 reg byte a 4.0
(signed byte~) calculate_matrix::$17 reg byte a 4.0
(signed byte~) calculate_matrix::$18 reg byte a 4.0
(signed byte~) calculate_matrix::$19 reg byte a 4.0
(signed byte~) calculate_matrix::$20 reg byte a 4.0
(signed byte~) calculate_matrix::$21 reg byte a 4.0
(signed byte~) calculate_matrix::$22 reg byte a 4.0
(signed byte~) calculate_matrix::$23 reg byte a 4.0
(signed byte~) calculate_matrix::$24 reg byte a 4.0
(signed byte~) calculate_matrix::$25 reg byte a 4.0
(signed byte~) calculate_matrix::$26 reg byte a 4.0
(signed byte~) calculate_matrix::$27 reg byte a 4.0
(signed byte~) calculate_matrix::$28 reg byte a 4.0
(signed byte~) calculate_matrix::$29 reg byte a 4.0
(signed byte~) calculate_matrix::$30 reg byte a 4.0
(signed byte~) calculate_matrix::$31 reg byte a 4.0
(signed byte~) calculate_matrix::$32 reg byte a 4.0
(signed byte~) calculate_matrix::$33 reg byte a 4.0
(signed byte~) calculate_matrix::$34 reg byte a 4.0
(label) calculate_matrix::@return
(signed byte) calculate_matrix::sx
(signed byte) calculate_matrix::sx#0 reg byte x 2.4545454545454546
(signed byte) calculate_matrix::sy
(signed byte) calculate_matrix::sy#0 sy zp ZP_BYTE:3 1.5333333333333332
(signed byte) calculate_matrix::sz
(signed byte) calculate_matrix::t1
(signed byte) calculate_matrix::t1#0 t1 zp ZP_BYTE:4 0.8333333333333333
(signed byte) calculate_matrix::t10
(signed byte) calculate_matrix::t10#0 reg byte x 0.18181818181818182
(signed byte) calculate_matrix::t2
(signed byte) calculate_matrix::t2#0 t2 zp ZP_BYTE:5 0.9090909090909092
(signed byte) calculate_matrix::t3
(signed byte) calculate_matrix::t3#0 t3 zp ZP_BYTE:6 0.29411764705882354
(signed byte) calculate_matrix::t4
(signed byte) calculate_matrix::t4#0 t4 zp ZP_BYTE:7 0.30303030303030304
(signed byte) calculate_matrix::t5
(signed byte) calculate_matrix::t5#0 t5 zp ZP_BYTE:8 0.29411764705882354
(signed byte) calculate_matrix::t6
(signed byte) calculate_matrix::t6#0 t6 zp ZP_BYTE:9 0.3125
(signed byte) calculate_matrix::t7
(signed byte) calculate_matrix::t7#0 t7 zp ZP_BYTE:10 0.30303030303030304
(signed byte) calculate_matrix::t8
(signed byte) calculate_matrix::t8#0 t8 zp ZP_BYTE:11 0.30303030303030304
(signed byte) calculate_matrix::t9
(signed byte) calculate_matrix::t9#0 t9 zp ZP_BYTE:12 0.1764705882352941
(void()) debug_print()
(label) debug_print::@1
(label) debug_print::@10
(label) debug_print::@11
(label) debug_print::@12
(label) debug_print::@13
(label) debug_print::@14
(label) debug_print::@15
(label) debug_print::@16
(label) debug_print::@17
(label) debug_print::@2
(label) debug_print::@3
(label) debug_print::@4
(label) debug_print::@5
(label) debug_print::@6
(label) debug_print::@7
(label) debug_print::@8
(label) debug_print::@9
(label) debug_print::@return
(byte*) debug_print::at_line
(const byte*) debug_print::at_line#0 at_line = (const byte*) SCREEN#0+(word)(number) $13*(number) $28
(byte) debug_print::c
(byte) debug_print::c#1 c zp ZP_BYTE:5 67.33333333333333
(byte) debug_print::c#2 c zp ZP_BYTE:5 42.52631578947369
(byte) debug_print::i
(byte) debug_print::i#1 i zp ZP_BYTE:6 151.5
(byte) debug_print::i#2 i zp ZP_BYTE:6 40.4
(label) debug_print::print_sbyte_pos1
(label) debug_print::print_sbyte_pos10
(number~) debug_print::print_sbyte_pos10_$0
(byte*~) debug_print::print_sbyte_pos10_$1
(byte*~) debug_print::print_sbyte_pos10_$2
(byte) debug_print::print_sbyte_pos10_col
(const byte) debug_print::print_sbyte_pos10_col#0 print_sbyte_pos10_col = (byte) $1d
(byte) debug_print::print_sbyte_pos10_row
(const byte) debug_print::print_sbyte_pos10_row#0 print_sbyte_pos10_row = (byte) 6
(signed byte) debug_print::print_sbyte_pos10_sb
(signed byte) debug_print::print_sbyte_pos10_sb#0 reg byte x 4.0
(label) debug_print::print_sbyte_pos11
(number~) debug_print::print_sbyte_pos11_$0
(byte*~) debug_print::print_sbyte_pos11_$1
(byte*~) debug_print::print_sbyte_pos11_$2
(byte) debug_print::print_sbyte_pos11_col
(const byte) debug_print::print_sbyte_pos11_col#0 print_sbyte_pos11_col = (byte) $21
(byte) debug_print::print_sbyte_pos11_row
(const byte) debug_print::print_sbyte_pos11_row#0 print_sbyte_pos11_row = (byte) 6
(signed byte) debug_print::print_sbyte_pos11_sb
(signed byte) debug_print::print_sbyte_pos11_sb#0 reg byte x 4.0
(label) debug_print::print_sbyte_pos12
(number~) debug_print::print_sbyte_pos12_$0
(byte*~) debug_print::print_sbyte_pos12_$1
(byte*~) debug_print::print_sbyte_pos12_$2
(byte) debug_print::print_sbyte_pos12_col
(const byte) debug_print::print_sbyte_pos12_col#0 print_sbyte_pos12_col = (byte) $25
(byte) debug_print::print_sbyte_pos12_row
(const byte) debug_print::print_sbyte_pos12_row#0 print_sbyte_pos12_row = (byte) 6
(signed byte) debug_print::print_sbyte_pos12_sb
(signed byte) debug_print::print_sbyte_pos12_sb#0 reg byte x 4.0
(number~) debug_print::print_sbyte_pos1_$0
(byte*~) debug_print::print_sbyte_pos1_$1
(byte*~) debug_print::print_sbyte_pos1_$2
(byte) debug_print::print_sbyte_pos1_col
(const byte) debug_print::print_sbyte_pos1_col#0 print_sbyte_pos1_col = (byte) $25
(byte) debug_print::print_sbyte_pos1_row
(signed byte) debug_print::print_sbyte_pos1_sb
(signed byte) debug_print::print_sbyte_pos1_sb#0 reg byte x 4.0
(label) debug_print::print_sbyte_pos2
(number~) debug_print::print_sbyte_pos2_$0
(byte*~) debug_print::print_sbyte_pos2_$1
(byte*~) debug_print::print_sbyte_pos2_$2
(byte) debug_print::print_sbyte_pos2_col
(const byte) debug_print::print_sbyte_pos2_col#0 print_sbyte_pos2_col = (byte) $25
(byte) debug_print::print_sbyte_pos2_row
(const byte) debug_print::print_sbyte_pos2_row#0 print_sbyte_pos2_row = (byte) 1
(signed byte) debug_print::print_sbyte_pos2_sb
(signed byte) debug_print::print_sbyte_pos2_sb#0 reg byte x 4.0
(label) debug_print::print_sbyte_pos3
(number~) debug_print::print_sbyte_pos3_$0
(byte*~) debug_print::print_sbyte_pos3_$1
(byte*~) debug_print::print_sbyte_pos3_$2
(byte) debug_print::print_sbyte_pos3_col
(const byte) debug_print::print_sbyte_pos3_col#0 print_sbyte_pos3_col = (byte) $25
(byte) debug_print::print_sbyte_pos3_row
(const byte) debug_print::print_sbyte_pos3_row#0 print_sbyte_pos3_row = (byte) 2
(signed byte) debug_print::print_sbyte_pos3_sb
(label) debug_print::print_sbyte_pos4
(number~) debug_print::print_sbyte_pos4_$0
(byte*~) debug_print::print_sbyte_pos4_$1
(byte*~) debug_print::print_sbyte_pos4_$2
(byte) debug_print::print_sbyte_pos4_col
(const byte) debug_print::print_sbyte_pos4_col#0 print_sbyte_pos4_col = (byte) $1d
(byte) debug_print::print_sbyte_pos4_row
(const byte) debug_print::print_sbyte_pos4_row#0 print_sbyte_pos4_row = (byte) 4
(signed byte) debug_print::print_sbyte_pos4_sb
(signed byte) debug_print::print_sbyte_pos4_sb#0 reg byte x 4.0
(label) debug_print::print_sbyte_pos5
(number~) debug_print::print_sbyte_pos5_$0
(byte*~) debug_print::print_sbyte_pos5_$1
(byte*~) debug_print::print_sbyte_pos5_$2
(byte) debug_print::print_sbyte_pos5_col
(const byte) debug_print::print_sbyte_pos5_col#0 print_sbyte_pos5_col = (byte) $21
(byte) debug_print::print_sbyte_pos5_row
(const byte) debug_print::print_sbyte_pos5_row#0 print_sbyte_pos5_row = (byte) 4
(signed byte) debug_print::print_sbyte_pos5_sb
(signed byte) debug_print::print_sbyte_pos5_sb#0 reg byte x 4.0
(label) debug_print::print_sbyte_pos6
(number~) debug_print::print_sbyte_pos6_$0
(byte*~) debug_print::print_sbyte_pos6_$1
(byte*~) debug_print::print_sbyte_pos6_$2
(byte) debug_print::print_sbyte_pos6_col
(const byte) debug_print::print_sbyte_pos6_col#0 print_sbyte_pos6_col = (byte) $25
(byte) debug_print::print_sbyte_pos6_row
(const byte) debug_print::print_sbyte_pos6_row#0 print_sbyte_pos6_row = (byte) 4
(signed byte) debug_print::print_sbyte_pos6_sb
(signed byte) debug_print::print_sbyte_pos6_sb#0 reg byte x 4.0
(label) debug_print::print_sbyte_pos7
(number~) debug_print::print_sbyte_pos7_$0
(byte*~) debug_print::print_sbyte_pos7_$1
(byte*~) debug_print::print_sbyte_pos7_$2
(byte) debug_print::print_sbyte_pos7_col
(const byte) debug_print::print_sbyte_pos7_col#0 print_sbyte_pos7_col = (byte) $1d
(byte) debug_print::print_sbyte_pos7_row
(const byte) debug_print::print_sbyte_pos7_row#0 print_sbyte_pos7_row = (byte) 5
(signed byte) debug_print::print_sbyte_pos7_sb
(signed byte) debug_print::print_sbyte_pos7_sb#0 reg byte x 4.0
(label) debug_print::print_sbyte_pos8
(number~) debug_print::print_sbyte_pos8_$0
(byte*~) debug_print::print_sbyte_pos8_$1
(byte*~) debug_print::print_sbyte_pos8_$2
(byte) debug_print::print_sbyte_pos8_col
(const byte) debug_print::print_sbyte_pos8_col#0 print_sbyte_pos8_col = (byte) $21
(byte) debug_print::print_sbyte_pos8_row
(const byte) debug_print::print_sbyte_pos8_row#0 print_sbyte_pos8_row = (byte) 5
(signed byte) debug_print::print_sbyte_pos8_sb
(signed byte) debug_print::print_sbyte_pos8_sb#0 reg byte x 4.0
(label) debug_print::print_sbyte_pos9
(number~) debug_print::print_sbyte_pos9_$0
(byte*~) debug_print::print_sbyte_pos9_$1
(byte*~) debug_print::print_sbyte_pos9_$2
(byte) debug_print::print_sbyte_pos9_col
(const byte) debug_print::print_sbyte_pos9_col#0 print_sbyte_pos9_col = (byte) $25
(byte) debug_print::print_sbyte_pos9_row
(const byte) debug_print::print_sbyte_pos9_row#0 print_sbyte_pos9_row = (byte) 5
(signed byte) debug_print::print_sbyte_pos9_sb
(signed byte) debug_print::print_sbyte_pos9_sb#0 reg byte x 4.0
(void()) debug_print_init()
(byte*~) debug_print_init::$41 $41 zp ZP_WORD:13 202.0
(byte*~) debug_print_init::$44 $44 zp ZP_WORD:15 202.0
(byte*~) debug_print_init::$47 $47 zp ZP_WORD:17 202.0
(byte*~) debug_print_init::$50 $50 zp ZP_WORD:19 202.0
(byte*~) debug_print_init::$53 $53 zp ZP_WORD:21 202.0
(byte*~) debug_print_init::$56 $56 zp ZP_WORD:23 202.0
(byte*~) debug_print_init::$59 $59 zp ZP_WORD:25 202.0
(byte*~) debug_print_init::$62 $62 zp ZP_WORD:27 202.0
(byte*~) debug_print_init::$65 $65 zp ZP_WORD:29 202.0
(label) debug_print_init::@1
(label) debug_print_init::@10
(label) debug_print_init::@11
(label) debug_print_init::@12
(label) debug_print_init::@13
(label) debug_print_init::@14
(label) debug_print_init::@15
(label) debug_print_init::@16
(label) debug_print_init::@17
(label) debug_print_init::@2
(label) debug_print_init::@3
(label) debug_print_init::@4
(label) debug_print_init::@5
(label) debug_print_init::@6
(label) debug_print_init::@7
(label) debug_print_init::@8
(label) debug_print_init::@9
(label) debug_print_init::@return
(byte*) debug_print_init::COLS
(const byte*) debug_print_init::COLS#0 COLS = (byte*) 55296
(byte*) debug_print_init::at_cols
(const byte*) debug_print_init::at_cols#0 at_cols = (const byte*) debug_print_init::COLS#0+(word)(number) $10*(number) $28
(byte*) debug_print_init::at_line
(const byte*) debug_print_init::at_line#0 at_line = (const byte*) SCREEN#0+(word)(number) $10*(number) $28
(byte) debug_print_init::c
(byte) debug_print_init::c#1 c zp ZP_BYTE:2 7.333333333333333
(byte) debug_print_init::c#2 c zp ZP_BYTE:2 30.125
(byte) debug_print_init::col
(byte) debug_print_init::col#0 reg byte x 56.111111111111114
(byte) debug_print_init::i
(byte) debug_print_init::i#1 i zp ZP_BYTE:3 16.5
(byte) debug_print_init::i#2 i zp ZP_BYTE:3 4.727272727272727
(byte) debug_print_init::j
(byte) debug_print_init::j#1 reg byte y 151.5
(byte) debug_print_init::j#2 reg byte y 55.54999999999999
(const string) debug_print_init::str str = (string) "sx"
(const string) debug_print_init::str1 str1 = (string) "sy"
(const string) debug_print_init::str10 str10 = (string) "xp"
(const string) debug_print_init::str11 str11 = (string) "yp"
(const string) debug_print_init::str2 str2 = (string) "sz"
(const string) debug_print_init::str3 str3 = (string) "x"
(const string) debug_print_init::str4 str4 = (string) "y"
(const string) debug_print_init::str5 str5 = (string) "z"
(const string) debug_print_init::str6 str6 = (string) "xr"
(const string) debug_print_init::str7 str7 = (string) "yr"
(const string) debug_print_init::str8 str8 = (string) "zr"
(const string) debug_print_init::str9 str9 = (string) "pp"
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@return
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
(label) memset::@return
(byte) memset::c
(const byte) memset::c#0 c = (byte) ' '
(byte*) memset::dst
(byte*) memset::dst#1 dst zp ZP_WORD:15 16.5
(byte*) memset::dst#4 dst zp ZP_WORD:15 16.5
(byte*) memset::end
(const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0
(word) memset::num
(const word) memset::num#0 num = (word) $3e8
(void*) memset::return
(void*) memset::str
(const void*) memset::str#0 str = (void*)(const byte*) print_screen#0
(byte[$200]) mulf_sqr1
(const byte[$200]) mulf_sqr1#0 mulf_sqr1 = kickasm {{ .for(var i=0;i<$200;i++) {
    	.if(i<=159) { .byte round((i*i)/256) }
    	.if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) }
    	.if(i>351) { .byte round(((512-i)*(512-i))/256) }
    }
 }}
(byte[$200]) mulf_sqr2
(const byte[$200]) mulf_sqr2#0 mulf_sqr2 = kickasm {{ .for(var i=0;i<$200;i++) {
    	.if(i<=159) { .byte round((-i-1)*(-i-1)/256) }
    	.if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) }
    	.if(i>351) { .byte round(((i-511)*(i-511))/256) }  
    }
 }}
(signed byte*) pp
(const signed byte*) pp#0 pp = (signed byte*) 243
(signed byte[8]) pps
(const signed byte[8]) pps#0 pps = { fill( 8, 0) }
(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at)
(byte~) print_byte_at::$0 reg byte y 4.0
(byte~) print_byte_at::$2 reg byte x 2.0
(label) print_byte_at::@1
(label) print_byte_at::@return
(byte*) print_byte_at::at
(byte*) print_byte_at::at#0 at zp ZP_WORD:13 1.0
(byte) print_byte_at::b
(byte) print_byte_at::b#0 reg byte x 1.0
(void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at)
(label) print_char_at::@return
(byte*) print_char_at::at
(byte*) print_char_at::at#0 at zp ZP_WORD:13 4.0
(byte*) print_char_at::at#1 at zp ZP_WORD:13 4.0
(byte*) print_char_at::at#2 at zp ZP_WORD:13 4.0
(byte*) print_char_at::at#3 at zp ZP_WORD:13 2.0
(byte*) print_char_at::at#4 at zp ZP_WORD:13 10.0
(byte) print_char_at::ch
(byte) print_char_at::ch#2 reg byte y 2.0
(byte) print_char_at::ch#3 reg byte y 4.0
(byte) print_char_at::ch#4 reg byte y 6.0
(void()) print_cls()
(label) print_cls::@return
(byte[]) print_hextab
(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef"z
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
(label) print_sbyte_at::@1
(label) print_sbyte_at::@2
(label) print_sbyte_at::@3
(label) print_sbyte_at::@4
(label) print_sbyte_at::@return
(byte*) print_sbyte_at::at
(byte*) print_sbyte_at::at#0 at zp ZP_WORD:13 11.0
(byte*) print_sbyte_at::at#1 at zp ZP_WORD:13 11.0
(byte*) print_sbyte_at::at#15 at zp ZP_WORD:13 101.0
(byte*) print_sbyte_at::at#16 at zp ZP_WORD:13 101.0
(byte*) print_sbyte_at::at#17 at zp ZP_WORD:13 101.0
(byte*) print_sbyte_at::at#18 at zp ZP_WORD:13 101.0
(byte*) print_sbyte_at::at#19 at zp ZP_WORD:13 101.0
(byte*) print_sbyte_at::at#2 at zp ZP_WORD:13 11.0
(byte*) print_sbyte_at::at#20 at zp ZP_WORD:13 101.0
(byte*) print_sbyte_at::at#21 at zp ZP_WORD:13 71.6666666666667
(signed byte) print_sbyte_at::b
(signed byte) print_sbyte_at::b#0 reg byte x 4.0
(signed byte) print_sbyte_at::b#1 reg byte x 22.0
(signed byte) print_sbyte_at::b#10 reg byte x 4.0
(signed byte) print_sbyte_at::b#11 reg byte x 4.0
(signed byte) print_sbyte_at::b#12 reg byte x 4.0
(signed byte) print_sbyte_at::b#13 reg byte x 4.0
(signed byte) print_sbyte_at::b#14 reg byte x 4.0
(signed byte) print_sbyte_at::b#15 reg byte x 4.0
(signed byte) print_sbyte_at::b#16 reg byte x 202.0
(signed byte) print_sbyte_at::b#17 reg byte x 202.0
(signed byte) print_sbyte_at::b#18 reg byte x 202.0
(signed byte) print_sbyte_at::b#19 reg byte x 202.0
(signed byte) print_sbyte_at::b#2 reg byte x 22.0
(signed byte) print_sbyte_at::b#20 reg byte x 202.0
(signed byte) print_sbyte_at::b#21 reg byte x 202.0
(signed byte) print_sbyte_at::b#22 reg byte x 111.16666666666657
(signed byte) print_sbyte_at::b#24 reg byte x 4.0
(signed byte) print_sbyte_at::b#3 reg byte x 22.0
(signed byte) print_sbyte_at::b#4 reg byte x 4.0
(signed byte) print_sbyte_at::b#5 reg byte x 4.0
(signed byte) print_sbyte_at::b#7 reg byte x 4.0
(signed byte) print_sbyte_at::b#8 reg byte x 4.0
(signed byte) print_sbyte_at::b#9 reg byte x 4.0
(byte*) print_screen
(const byte*) print_screen#0 print_screen = (byte*) 1024
(void()) print_str_at((byte*) print_str_at::str , (byte*) print_str_at::at)
(label) print_str_at::@1
(label) print_str_at::@2
(label) print_str_at::@return
(byte*) print_str_at::at
(byte*) print_str_at::at#0 at zp ZP_WORD:15 11.0
(byte*) print_str_at::at#13 at zp ZP_WORD:15 11.666666666666666
(byte*) print_str_at::at#15 at zp ZP_WORD:15 2.0
(byte*) print_str_at::str
(byte*) print_str_at::str#0 str zp ZP_WORD:13 22.0
(byte*) print_str_at::str#13 str zp ZP_WORD:13 11.5
(byte*) print_str_at::str#15 str zp ZP_WORD:13 2.0
(word*) psp1
(const word*) psp1#0 psp1 = (word*) 246
(word*) psp2
(const word*) psp2#0 psp2 = (word*) 248
(void()) rotate_matrix((signed byte) rotate_matrix::x , (signed byte) rotate_matrix::y , (signed byte) rotate_matrix::z)
(label) rotate_matrix::@return
(signed byte) rotate_matrix::x
(signed byte) rotate_matrix::x#0 reg byte x 34.33333333333333
(signed byte) rotate_matrix::y
(signed byte) rotate_matrix::y#0 y zp ZP_BYTE:6 34.33333333333333
(signed byte) rotate_matrix::z
(signed byte) rotate_matrix::z#0 z zp ZP_BYTE:4 34.33333333333333
(signed byte[9]) rotation_matrix
(const signed byte[9]) rotation_matrix#0 rotation_matrix = { fill( 9, 0) }
(void()) sprites_init()
(label) sprites_init::@1
(label) sprites_init::@return
(byte*) sprites_init::SCREEN
(const byte*) sprites_init::SCREEN#0 SCREEN = (byte*) 1024
(byte) sprites_init::i
(byte) sprites_init::i#1 reg byte x 16.5
(byte) sprites_init::i#2 reg byte x 14.666666666666666
(byte*) sprites_init::sprites_ptr
(const byte*) sprites_init::sprites_ptr#0 sprites_ptr = (const byte*) sprites_init::SCREEN#0+(word) $3f8
(void()) store_matrix()
(label) store_matrix::@return
(signed byte) sx
(signed byte) sx#10 sx zp ZP_BYTE:2 0.38888888888888884
(signed byte) sx#3 sx zp ZP_BYTE:2 11.0
(signed byte) sy
(signed byte) sy#10 sy zp ZP_BYTE:3 0.3846153846153846
(signed byte) sy#3 sy zp ZP_BYTE:3 22.0
(signed byte) sz
(const signed byte) sz#0 sz = (signed byte) 0
(signed byte*) xp
(const signed byte*) xp#0 xp = (signed byte*) 244
(signed byte[8]) xps
(const signed byte[8]) xps#0 xps = { fill( 8, 0) }
(signed byte*) xr
(const signed byte*) xr#0 xr = (signed byte*) 240
(signed byte[8]) xrs
(const signed byte[8]) xrs#0 xrs = { fill( 8, 0) }
(signed byte[8]) xs
(const signed byte[8]) xs#0 xs = { (signed byte) -$34, (signed byte) -$34, (signed byte) -$34, (signed byte) 0, (signed byte) 0, (signed byte) $34, (signed byte) $34, (signed byte) $34 }
(signed byte*) yp
(const signed byte*) yp#0 yp = (signed byte*) 245
(signed byte[8]) yps
(const signed byte[8]) yps#0 yps = { fill( 8, 0) }
(signed byte*) yr
(const signed byte*) yr#0 yr = (signed byte*) 241
(signed byte[8]) yrs
(const signed byte[8]) yrs#0 yrs = { fill( 8, 0) }
(signed byte[8]) ys
(const signed byte[8]) ys#0 ys = { (signed byte) -$34, (signed byte) 0, (signed byte) $34, (signed byte) -$34, (signed byte) $34, (signed byte) -$34, (signed byte) 0, (signed byte) $34 }
(signed byte*) zr
(const signed byte*) zr#0 zr = (signed byte*) 242
(signed byte[8]) zrs
(const signed byte[8]) zrs#0 zrs = { fill( 8, 0) }
(signed byte[8]) zs
(const signed byte[8]) zs#0 zs = { (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34, (signed byte) $34 }

reg byte x [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ]
reg byte y [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ]
zp ZP_BYTE:2 [ debug_print_init::c#2 debug_print_init::c#1 sx#10 sx#3 ]
zp ZP_BYTE:3 [ debug_print_init::i#2 debug_print_init::i#1 sy#10 sy#3 calculate_matrix::sy#0 ]
reg byte y [ debug_print_init::j#2 debug_print_init::j#1 ]
reg byte x [ sprites_init::i#2 sprites_init::i#1 ]
reg byte x [ calculate_matrix::sx#0 ]
reg byte x [ rotate_matrix::x#0 ]
reg byte x [ anim::i2#0 ]
reg byte a [ anim::$8 ]
reg byte a [ anim::$10 ]
reg byte x [ debug_print::print_sbyte_pos1_sb#0 ]
reg byte x [ debug_print::print_sbyte_pos2_sb#0 ]
reg byte x [ debug_print::print_sbyte_pos4_sb#0 ]
reg byte x [ debug_print::print_sbyte_pos5_sb#0 ]
reg byte x [ debug_print::print_sbyte_pos6_sb#0 ]
reg byte x [ debug_print::print_sbyte_pos7_sb#0 ]
reg byte x [ debug_print::print_sbyte_pos8_sb#0 ]
reg byte x [ debug_print::print_sbyte_pos9_sb#0 ]
reg byte x [ debug_print::print_sbyte_pos10_sb#0 ]
reg byte x [ debug_print::print_sbyte_pos11_sb#0 ]
reg byte x [ debug_print::print_sbyte_pos12_sb#0 ]
reg byte x [ print_byte_at::b#0 ]
reg byte y [ print_byte_at::$0 ]
reg byte x [ print_byte_at::$2 ]
zp ZP_BYTE:4 [ calculate_matrix::t1#0 rotate_matrix::z#0 ]
zp ZP_BYTE:5 [ calculate_matrix::t2#0 debug_print::c#2 debug_print::c#1 anim::i#2 anim::i#1 ]
zp ZP_BYTE:6 [ calculate_matrix::t3#0 rotate_matrix::y#0 debug_print::i#2 debug_print::i#1 ]
zp ZP_BYTE:7 [ calculate_matrix::t4#0 ]
zp ZP_BYTE:8 [ calculate_matrix::t5#0 ]
zp ZP_BYTE:9 [ calculate_matrix::t6#0 ]
zp ZP_BYTE:10 [ calculate_matrix::t7#0 ]
zp ZP_BYTE:11 [ calculate_matrix::t8#0 ]
zp ZP_BYTE:12 [ calculate_matrix::t9#0 ]
reg byte x [ calculate_matrix::t10#0 ]
reg byte a [ calculate_matrix::$10 ]
reg byte a [ calculate_matrix::$11 ]
reg byte a [ calculate_matrix::$12 ]
reg byte a [ calculate_matrix::$13 ]
reg byte a [ calculate_matrix::$14 ]
reg byte a [ calculate_matrix::$15 ]
reg byte a [ calculate_matrix::$16 ]
reg byte a [ calculate_matrix::$17 ]
reg byte a [ calculate_matrix::$18 ]
reg byte a [ calculate_matrix::$19 ]
reg byte a [ calculate_matrix::$20 ]
reg byte a [ calculate_matrix::$21 ]
reg byte a [ calculate_matrix::$22 ]
reg byte a [ calculate_matrix::$23 ]
reg byte a [ calculate_matrix::$24 ]
reg byte a [ calculate_matrix::$25 ]
reg byte a [ calculate_matrix::$26 ]
reg byte a [ calculate_matrix::$27 ]
reg byte a [ calculate_matrix::$28 ]
reg byte a [ calculate_matrix::$29 ]
reg byte a [ calculate_matrix::$30 ]
reg byte a [ calculate_matrix::$31 ]
reg byte a [ calculate_matrix::$32 ]
reg byte a [ calculate_matrix::$33 ]
reg byte a [ calculate_matrix::$34 ]
reg byte x [ debug_print_init::col#0 ]
zp ZP_WORD:13 [ debug_print_init::$41 print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 ]
zp ZP_WORD:15 [ debug_print_init::$44 memset::dst#4 memset::dst#1 print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ]
zp ZP_WORD:17 [ debug_print_init::$47 ]
zp ZP_WORD:19 [ debug_print_init::$50 ]
zp ZP_WORD:21 [ debug_print_init::$53 ]
zp ZP_WORD:23 [ debug_print_init::$56 ]
zp ZP_WORD:25 [ debug_print_init::$59 ]
zp ZP_WORD:27 [ debug_print_init::$62 ]
zp ZP_WORD:29 [ debug_print_init::$65 ]


FINAL ASSEMBLER
Score: 66016

  // File Comments
// 3D Rotation using a Rotation Matrix
// Based on: 
// - C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt
// - Codebase64 Article http://codebase64.org/doku.php?id=base:3d_rotation  
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
  // Global Constants & labels
  .label SPRITES_XPOS = $d000
  .label SPRITES_YPOS = $d001
  .label RASTER = $d012
  .label SPRITES_ENABLE = $d015
  .label BORDERCOL = $d020
  .label SPRITES_COLS = $d027
  .const GREEN = 5
  .const LIGHT_BLUE = $e
  .const LIGHT_GREY = $f
  .label print_screen = $400
  // The rotated point - updated by calling rotate_matrix()
  .label xr = $f0
  .label yr = $f1
  .label zr = $f2
  // The rotated point with perspective
  .label pp = $f3
  .label xp = $f4
  .label yp = $f5
  // Pointers used to multiply perspective (d/z0-z) onto x- & y-coordinates. Points into mulf_sqr1 / mulf_sqr2  
  .label psp1 = $f6
  .label psp2 = $f8
  .label SCREEN = $400
  .const sz = 0
  // A single sprite
  .label SPRITE = $3000
  .label COSH = SINH+$40
  .label COSQ = SINQ+$40
  .label sx = 2
  .label sy = 3
  // @begin
  // @1
  // kickasm
  // 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)  }}
  // [2] call main 
  // [3] phi from @1 to @end [phi:@1->@end]
  // @end
  // main
main: {
    // asm
    // asm { sei  }
    sei
    // sprites_init()
    // [5] call sprites_init 
    jsr sprites_init
    // main::@1
    // *psp1 = (word)mulf_sqr1
    // [6] *((const word*) psp1#0) ← (word)(const byte[$200]) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 
    //mulf_init();
    lda #<mulf_sqr1
    sta psp1
    lda #>mulf_sqr1
    sta psp1+1
    // *psp2 = (word)mulf_sqr2
    // [7] *((const word*) psp2#0) ← (word)(const byte[$200]) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 
    lda #<mulf_sqr2
    sta psp2
    lda #>mulf_sqr2
    sta psp2+1
    // debug_print_init()
    // [8] call debug_print_init 
    // [181] phi from main::@1 to debug_print_init [phi:main::@1->debug_print_init]
    jsr debug_print_init
    // [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
    // main::@2
    // anim()
    // [10] call anim 
    // [12] phi from main::@2 to anim [phi:main::@2->anim]
    jsr anim
    // main::@return
    // }
    // [11] return 
    rts
}
  // anim
anim: {
    .label i = 5
    // [13] phi from anim to anim::@1 [phi:anim->anim::@1]
    // [13] phi (signed byte) sy#10 = (signed byte) 0 [phi:anim->anim::@1#0] -- vbsz1=vbsc1 
    lda #0
    sta.z sy
    // [13] phi (signed byte) sx#10 = (signed byte) 0 [phi:anim->anim::@1#1] -- vbsz1=vbsc1 
    sta.z sx
  //signed byte xmin = 0;
  //signed byte xmax = 0;
    // anim::@1
    // anim::@2
  b2:
    // while(*RASTER!=$ff)
    // [14] if(*((const byte*) RASTER#0)!=(byte) $ff) goto anim::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda #$ff
    cmp RASTER
    bne b2
    // anim::@3
  b3:
    // while(*RASTER!=$fe)
    // [15] if(*((const byte*) RASTER#0)!=(byte) $fe) goto anim::@3 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda #$fe
    cmp RASTER
    bne b3
    // anim::@4
  b4:
    // while(*RASTER!=$fd)
    // [16] if(*((const byte*) RASTER#0)!=(byte) $fd) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda #$fd
    cmp RASTER
    bne b4
    // anim::@5
    // (*BORDERCOL)++;
    // [17] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
    // calculate_matrix(sx,sy,sz)
    // [18] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 
    ldx.z sx
    // [19] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10
    // [20] call calculate_matrix 
    jsr calculate_matrix
    // [21] phi from anim::@5 to anim::@8 [phi:anim::@5->anim::@8]
    // anim::@8
    // store_matrix()
    // [22] call store_matrix 
    jsr store_matrix
    // [23] phi from anim::@8 to anim::@6 [phi:anim::@8->anim::@6]
    // [23] phi (byte) anim::i#2 = (byte) 0 [phi:anim::@8->anim::@6#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    // [23] phi from anim::@9 to anim::@6 [phi:anim::@9->anim::@6]
    // [23] phi (byte) anim::i#2 = (byte) anim::i#1 [phi:anim::@9->anim::@6#0] -- register_copy 
    // anim::@6
  b6:
    // (*BORDERCOL)++;
    // [24] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
    // rotate_matrix(xs[i], ys[i], zs[i])
    // [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx xs,y
    // [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    lda ys,y
    sta.z rotate_matrix.y
    // [27] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    lda zs,y
    sta.z rotate_matrix.z
    // [28] call rotate_matrix 
    jsr rotate_matrix
    // anim::@9
    // xrs[i] = *xr
    // [29] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    //if(*xr<xmin) xmin = *xr;
    //if(*xr>xmax) xmax = *xr;
    ldy.z i
    lda xr
    sta xrs,y
    // yrs[i] = *yr
    // [30] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda yr
    sta yrs,y
    // zrs[i] = *zr
    // [31] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda zr
    sta zrs,y
    // pps[i] = *pp
    // [32] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda pp
    sta pps,y
    // xps[i] = *xp
    // [33] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda xp
    sta xps,y
    // yps[i] = *yp
    // [34] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda yp
    sta yps,y
    // i2 = i*2
    // [35] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte) 1 -- vbuxx=vbuz1_rol_1 
    tya
    asl
    tax
    // $80+(byte)((*xp))
    // [36] (byte~) anim::$8 ← (byte) $80 + (byte)*((const signed byte*) xp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 
    lda #$80
    clc
    adc xp
    // SPRITES_XPOS[i2] = $80+(byte)((*xp))
    // [37] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$8 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SPRITES_XPOS,x
    // $80+(byte)((*yp))
    // [38] (byte~) anim::$10 ← (byte) $80 + (byte)*((const signed byte*) yp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 
    lda #$80
    clc
    adc yp
    // SPRITES_YPOS[i2] = $80+(byte)((*yp))
    // [39] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte~) anim::$10 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SPRITES_YPOS,x
    // for(byte i: 0..7)
    // [40] (byte) anim::i#1 ← ++ (byte) anim::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [41] if((byte) anim::i#1!=(byte) 8) goto anim::@6 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z i
    bne b6
    // anim::@7
    // *BORDERCOL = LIGHT_GREY
    // [42] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 -- _deref_pbuc1=vbuc2 
    lda #LIGHT_GREY
    sta BORDERCOL
    // debug_print()
    // [43] call debug_print 
    jsr debug_print
    // anim::@10
    // *BORDERCOL = LIGHT_BLUE
    // [44] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 
    lda #LIGHT_BLUE
    sta BORDERCOL
    // sx +=2
    // [45] (signed byte) sx#3 ← (signed byte) sx#10 + (signed byte) 2 -- vbsz1=vbsz1_plus_2 
    // Increment angles        
    inc.z sx
    inc.z sx
    // sy -=3
    // [46] (signed byte) sy#3 ← (signed byte) sy#10 - (signed byte) 3 -- vbsz1=vbsz1_minus_vbsc1 
    lax.z sy
    axs #3
    stx.z sy
    // [13] phi from anim::@10 to anim::@1 [phi:anim::@10->anim::@1]
    // [13] phi (signed byte) sy#10 = (signed byte) sy#3 [phi:anim::@10->anim::@1#0] -- register_copy 
    // [13] phi (signed byte) sx#10 = (signed byte) sx#3 [phi:anim::@10->anim::@1#1] -- register_copy 
    jmp b2
}
  // debug_print
debug_print: {
    .const print_sbyte_pos1_col = $25
    .const print_sbyte_pos2_row = 1
    .const print_sbyte_pos2_col = $25
    .const print_sbyte_pos3_row = 2
    .const print_sbyte_pos3_col = $25
    .const print_sbyte_pos4_row = 4
    .const print_sbyte_pos4_col = $1d
    .const print_sbyte_pos5_row = 4
    .const print_sbyte_pos5_col = $21
    .const print_sbyte_pos6_row = 4
    .const print_sbyte_pos6_col = $25
    .const print_sbyte_pos7_row = 5
    .const print_sbyte_pos7_col = $1d
    .const print_sbyte_pos8_row = 5
    .const print_sbyte_pos8_col = $21
    .const print_sbyte_pos9_row = 5
    .const print_sbyte_pos9_col = $25
    .const print_sbyte_pos10_row = 6
    .const print_sbyte_pos10_col = $1d
    .const print_sbyte_pos11_row = 6
    .const print_sbyte_pos11_col = $21
    .const print_sbyte_pos12_row = 6
    .const print_sbyte_pos12_col = $25
    .label at_line = SCREEN+$13*$28
    .label c = 5
    .label i = 6
    // print_sbyte_pos(sx, 0, 37)
    // [47] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 
    ldx.z sx
    // debug_print::print_sbyte_pos1
    // print_sbyte_at(sb, print_screen+row*40+col)
    // [48] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0
    // [49] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos1 to print_sbyte_at [phi:debug_print::print_sbyte_pos1->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_col#0 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos1_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos1_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#4 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // debug_print::@2
    // print_sbyte_pos(sy, 1, 37)
    // [50] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsxx=vbsz1 
    ldx.z sy
    // debug_print::print_sbyte_pos2
    // print_sbyte_at(sb, print_screen+row*40+col)
    // [51] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0
    // [52] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos2 to print_sbyte_at [phi:debug_print::print_sbyte_pos2->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#5 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // [53] phi from debug_print::print_sbyte_pos2 to debug_print::print_sbyte_pos3 [phi:debug_print::print_sbyte_pos2->debug_print::print_sbyte_pos3]
    // debug_print::print_sbyte_pos3
    // print_sbyte_at(sb, print_screen+row*40+col)
    // [54] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos3 to print_sbyte_at [phi:debug_print::print_sbyte_pos3->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (const signed byte) sz#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#1] -- vbsxx=vbsc1 
    ldx #sz
    jsr print_sbyte_at
    // debug_print::@3
    // print_sbyte_pos(rotation_matrix[0], 4, 29)
    // [55] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix
    // debug_print::print_sbyte_pos4
    // print_sbyte_at(sb, print_screen+row*40+col)
    // [56] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0
    // [57] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos4 to print_sbyte_at [phi:debug_print::print_sbyte_pos4->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#7 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // debug_print::@4
    // print_sbyte_pos(rotation_matrix[1], 4, 33)
    // [58] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 1) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+1
    // debug_print::print_sbyte_pos5
    // print_sbyte_at(sb, print_screen+row*40+col)
    // [59] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0
    // [60] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos5 to print_sbyte_at [phi:debug_print::print_sbyte_pos5->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#8 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // debug_print::@5
    // print_sbyte_pos(rotation_matrix[2], 4, 37)
    // [61] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 2) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+2
    // debug_print::print_sbyte_pos6
    // print_sbyte_at(sb, print_screen+row*40+col)
    // [62] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0
    // [63] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos6 to print_sbyte_at [phi:debug_print::print_sbyte_pos6->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#9 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // debug_print::@6
    // print_sbyte_pos(rotation_matrix[3], 5, 29)
    // [64] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 3) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+3
    // debug_print::print_sbyte_pos7
    // print_sbyte_at(sb, print_screen+row*40+col)
    // [65] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0
    // [66] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos7 to print_sbyte_at [phi:debug_print::print_sbyte_pos7->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#10 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // debug_print::@7
    // print_sbyte_pos(rotation_matrix[4], 5, 33)
    // [67] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 4) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+4
    // debug_print::print_sbyte_pos8
    // print_sbyte_at(sb, print_screen+row*40+col)
    // [68] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0
    // [69] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos8 to print_sbyte_at [phi:debug_print::print_sbyte_pos8->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#11 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // debug_print::@8
    // print_sbyte_pos(rotation_matrix[5], 5, 37)
    // [70] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 5) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+5
    // debug_print::print_sbyte_pos9
    // print_sbyte_at(sb, print_screen+row*40+col)
    // [71] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0
    // [72] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos9 to print_sbyte_at [phi:debug_print::print_sbyte_pos9->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#12 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // debug_print::@9
    // print_sbyte_pos(rotation_matrix[6], 6, 29)
    // [73] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 6) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+6
    // debug_print::print_sbyte_pos10
    // print_sbyte_at(sb, print_screen+row*40+col)
    // [74] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0
    // [75] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos10 to print_sbyte_at [phi:debug_print::print_sbyte_pos10->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#13 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // debug_print::@10
    // print_sbyte_pos(rotation_matrix[7], 6, 33)
    // [76] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 7) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+7
    // debug_print::print_sbyte_pos11
    // print_sbyte_at(sb, print_screen+row*40+col)
    // [77] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0
    // [78] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos11 to print_sbyte_at [phi:debug_print::print_sbyte_pos11->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#14 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // debug_print::@11
    // print_sbyte_pos(rotation_matrix[8], 6, 37)
    // [79] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte) 8) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+8
    // debug_print::print_sbyte_pos12
    // print_sbyte_at(sb, print_screen+row*40+col)
    // [80] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0
    // [81] call print_sbyte_at 
    // [105] phi from debug_print::print_sbyte_pos12 to print_sbyte_at [phi:debug_print::print_sbyte_pos12->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (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 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_screen+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
    sta.z print_sbyte_at.at
    lda #>print_screen+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
    sta.z print_sbyte_at.at+1
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#15 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // [82] phi from debug_print::print_sbyte_pos12 to debug_print::@1 [phi:debug_print::print_sbyte_pos12->debug_print::@1]
    // [82] phi (byte) debug_print::i#2 = (byte) 0 [phi:debug_print::print_sbyte_pos12->debug_print::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    // [82] phi (byte) debug_print::c#2 = (byte) 4 [phi:debug_print::print_sbyte_pos12->debug_print::@1#1] -- vbuz1=vbuc1 
    lda #4
    sta.z c
    // [82] phi from debug_print::@17 to debug_print::@1 [phi:debug_print::@17->debug_print::@1]
    // [82] phi (byte) debug_print::i#2 = (byte) debug_print::i#1 [phi:debug_print::@17->debug_print::@1#0] -- register_copy 
    // [82] phi (byte) debug_print::c#2 = (byte) debug_print::c#1 [phi:debug_print::@17->debug_print::@1#1] -- register_copy 
    // debug_print::@1
  b1:
    // print_sbyte_at(xrs[i], at_line+40*0+c)
    // [83] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line
    sta.z print_sbyte_at.at
    lda #>at_line
    adc #0
    sta.z print_sbyte_at.at+1
    // [84] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx xrs,y
    // [85] call print_sbyte_at 
    // [105] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#15 [phi:debug_print::@1->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#16 [phi:debug_print::@1->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // debug_print::@12
    // print_sbyte_at(yrs[i], at_line+40*1+c)
    // [86] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 1 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*1
    sta.z print_sbyte_at.at
    lda #>at_line+$28*1
    adc #0
    sta.z print_sbyte_at.at+1
    // [87] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx yrs,y
    // [88] call print_sbyte_at 
    // [105] phi from debug_print::@12 to print_sbyte_at [phi:debug_print::@12->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#16 [phi:debug_print::@12->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#17 [phi:debug_print::@12->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // debug_print::@13
    // print_sbyte_at(zrs[i], at_line+40*2+c)
    // [89] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 2 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*2
    sta.z print_sbyte_at.at
    lda #>at_line+$28*2
    adc #0
    sta.z print_sbyte_at.at+1
    // [90] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx zrs,y
    // [91] call print_sbyte_at 
    // [105] phi from debug_print::@13 to print_sbyte_at [phi:debug_print::@13->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#17 [phi:debug_print::@13->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#18 [phi:debug_print::@13->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // debug_print::@14
    // print_sbyte_at(pps[i], at_line+40*3+c)
    // [92] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 3 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*3
    sta.z print_sbyte_at.at
    lda #>at_line+$28*3
    adc #0
    sta.z print_sbyte_at.at+1
    // [93] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx pps,y
    // [94] call print_sbyte_at 
    // [105] phi from debug_print::@14 to print_sbyte_at [phi:debug_print::@14->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#18 [phi:debug_print::@14->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#19 [phi:debug_print::@14->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // debug_print::@15
    // print_sbyte_at(xps[i], at_line+40*4+c)
    // [95] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 4 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*4
    sta.z print_sbyte_at.at
    lda #>at_line+$28*4
    adc #0
    sta.z print_sbyte_at.at+1
    // [96] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx xps,y
    // [97] call print_sbyte_at 
    // [105] phi from debug_print::@15 to print_sbyte_at [phi:debug_print::@15->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#19 [phi:debug_print::@15->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#20 [phi:debug_print::@15->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // debug_print::@16
    // print_sbyte_at(yps[i], at_line+40*5+c)
    // [98] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte)(number) $28*(number) 5 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*5
    sta.z print_sbyte_at.at
    lda #>at_line+$28*5
    adc #0
    sta.z print_sbyte_at.at+1
    // [99] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx yps,y
    // [100] call print_sbyte_at 
    // [105] phi from debug_print::@16 to print_sbyte_at [phi:debug_print::@16->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#20 [phi:debug_print::@16->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#21 [phi:debug_print::@16->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // debug_print::@17
    // c += 4
    // [101] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c
    axs #-[4]
    stx.z c
    // for( byte i: 0..7)
    // [102] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [103] if((byte) debug_print::i#1!=(byte) 8) goto debug_print::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z i
    beq !b1+
    jmp b1
  !b1:
    // debug_print::@return
    // }
    // [104] return 
    rts
}
  // print_sbyte_at
// Print a signed byte as hex at a specific screen position
// print_sbyte_at(signed byte register(X) b, byte* zeropage($d) at)
print_sbyte_at: {
    .label at = $d
    // if(b<0)
    // [106] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1 -- vbsxx_lt_0_then_la1 
    cpx #0
    bmi b1
    // print_sbyte_at::@3
    // print_char_at(' ', at)
    // [107] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21
    // [108] call print_char_at 
    // [117] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at]
    // [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy 
    // [117] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuyy=vbuc1 
    ldy #' '
    jsr print_char_at
    // [109] phi from print_sbyte_at::@3 print_sbyte_at::@4 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2]
    // [109] phi (signed byte) print_sbyte_at::b#24 = (signed byte) print_sbyte_at::b#22 [phi:print_sbyte_at::@3/print_sbyte_at::@4->print_sbyte_at::@2#0] -- register_copy 
    // print_sbyte_at::@2
  b2:
    // print_byte_at((byte)b, at+1)
    // [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 -- pbuz1=pbuz1_plus_1 
    inc.z print_byte_at.at
    bne !+
    inc.z print_byte_at.at+1
  !:
    // [112] call print_byte_at 
    jsr print_byte_at
    // print_sbyte_at::@return
    // }
    // [113] return 
    rts
    // print_sbyte_at::@1
  b1:
    // print_char_at('-', at)
    // [114] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21
    // [115] call print_char_at 
    // [117] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at]
    // [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy 
    // [117] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuyy=vbuc1 
    ldy #'-'
    jsr print_char_at
    // print_sbyte_at::@4
    // b = -b
    // [116] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsxx=_neg_vbsxx 
    txa
    eor #$ff
    clc
    adc #1
    tax
    jmp b2
}
  // print_char_at
// Print a single char
// print_char_at(byte register(Y) ch, byte* zeropage($d) at)
print_char_at: {
    .label at = $d
    // *(at) = ch
    // [118] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuyy 
    tya
    ldy #0
    sta (at),y
    // print_char_at::@return
    // }
    // [119] return 
    rts
}
  // print_byte_at
// Print a byte as HEX at a specific position
// print_byte_at(byte register(X) b, byte* zeropage($d) at)
print_byte_at: {
    .label at = $d
    // b>>4
    // [120] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#0 >> (byte) 4 -- vbuyy=vbuxx_ror_4 
    txa
    lsr
    lsr
    lsr
    lsr
    tay
    // print_char_at(print_hextab[b>>4], at)
    // [121] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuyy=pbuc1_derefidx_vbuyy 
    lda print_hextab,y
    tay
    // [122] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0
    // [123] call print_char_at 
    // [117] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at]
    // [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy 
    // [117] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#2 [phi:print_byte_at->print_char_at#1] -- register_copy 
    jsr print_char_at
    // print_byte_at::@1
    // b&$f
    // [124] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#0 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 
    lda #$f
    axs #0
    // print_char_at(print_hextab[b&$f], at+1)
    // [125] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte) 1 -- pbuz1=pbuz1_plus_1 
    inc.z print_char_at.at
    bne !+
    inc.z print_char_at.at+1
  !:
    // [126] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuyy=pbuc1_derefidx_vbuxx 
    ldy print_hextab,x
    // [127] call print_char_at 
    // [117] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at]
    // [117] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy 
    // [117] phi (byte) print_char_at::ch#4 = (byte) print_char_at::ch#3 [phi:print_byte_at::@1->print_char_at#1] -- register_copy 
    jsr print_char_at
    // print_byte_at::@return
    // }
    // [128] return 
    rts
}
  // rotate_matrix
// Rotate a 3D point (x,y,z) using the rotation matrix
// The rotation matrix is prepared by calling prepare_matrix() 
// The passed points must be in the interval [-$3f;$3f].
// Implemented in assembler to utilize seriously fast multiplication 
// rotate_matrix(signed byte register(X) x, signed byte zeropage(6) y, signed byte zeropage(4) z)
rotate_matrix: {
    .label y = 6
    .label z = 4
    // *xr = x
    // [129] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsxx 
    txa
    sta xr
    // *yr = y
    // [130] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsz1 
    lda.z y
    sta yr
    // *zr = z
    // [131] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 -- _deref_pbsc1=vbsz1 
    lda.z z
    sta zr
    // asm
    // 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  }
    tax
  C1:
    lda mulf_sqr1,x
    sec
  C2:
    sbc mulf_sqr2,x
    sta C3+1
  F1:
    lda mulf_sqr1,x
    sec
  F2:
    sbc mulf_sqr2,x
    sta F3+1
  I1:
    lda mulf_sqr1,x
    sec
  I2:
    sbc mulf_sqr2,x
    sta I3+1
    ldx xr
    ldy yr
  I3:
    lda #0
    clc
  G1:
    adc mulf_sqr1,x
    sec
  G2:
    sbc mulf_sqr2,x
    clc
  H1:
    adc mulf_sqr1,y
    sec
  H2:
    sbc mulf_sqr2,y
    sta zr
    sta PP+1
  PP:
    lda PERSP_Z
    sta pp
    sta psp1
    eor #$ff
    sta psp2
  C3:
    lda #0
    clc
  A1:
    adc mulf_sqr1,x
    sec
  A2:
    sbc mulf_sqr2,x
    clc
  B1:
    adc mulf_sqr1,y
    sec
  B2:
    sbc mulf_sqr2,y
    sta xr
    sta XX+1
    clc
  F3:
    lda #0
    clc
  D1:
    adc mulf_sqr1,x
    sec
  D2:
    sbc mulf_sqr2,x
    clc
  E1:
    adc mulf_sqr1,y
    sec
  E2:
    sbc mulf_sqr2,y
    sta yr
    tay
    lda (psp1),y
    sec
    sbc (psp2),y
    sta yp
  XX:
    ldy #0
    lda (psp1),y
    sec
    sbc (psp2),y
    sta xp
    // rotate_matrix::@return
    // }
    // [133] return 
    rts
}
  // store_matrix
// Store the rotation matrix into the rotation routine rotate()
// After this each call to rotate() will rotate a point with the matrix
// Implemented in assembler to utilize seriously fast multiplication 
store_matrix: {
    // asm
    // 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  }
    lda rotation_matrix+0
    sta rotate_matrix.A1+1
    eor #$ff
    sta rotate_matrix.A2+1
    lda rotation_matrix+1
    sta rotate_matrix.B1+1
    eor #$ff
    sta rotate_matrix.B2+1
    lda rotation_matrix+2
    sta rotate_matrix.C1+1
    eor #$ff
    sta rotate_matrix.C2+1
    lda rotation_matrix+3
    sta rotate_matrix.D1+1
    eor #$ff
    sta rotate_matrix.D2+1
    lda rotation_matrix+4
    sta rotate_matrix.E1+1
    eor #$ff
    sta rotate_matrix.E2+1
    lda rotation_matrix+5
    sta rotate_matrix.F1+1
    eor #$ff
    sta rotate_matrix.F2+1
    lda rotation_matrix+6
    sta rotate_matrix.G1+1
    eor #$ff
    sta rotate_matrix.G2+1
    lda rotation_matrix+7
    sta rotate_matrix.H1+1
    eor #$ff
    sta rotate_matrix.H2+1
    lda rotation_matrix+8
    sta rotate_matrix.I1+1
    eor #$ff
    sta rotate_matrix.I2+1
    // store_matrix::@return
    // }
    // [135] return 
    rts
}
  // calculate_matrix
// Prepare the 3x3 rotation matrix into rotation_matrix[]
// Angles sx, sy, sz are based on 2*PI=$100 
// Method described in C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt
// calculate_matrix(signed byte register(X) sx, signed byte zeropage(3) sy)
calculate_matrix: {
    .label sy = 3
    .label t1 = 4
    .label t2 = 5
    .label t3 = 6
    .label t4 = 7
    .label t5 = 8
    .label t6 = 9
    .label t7 = $a
    .label t8 = $b
    .label t9 = $c
    // t1 = sy-sz
    // [136] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 -- vbsz1=vbsz2 
    lda.z sy
    sta.z t1
    // t2 = sy+sz
    // [137] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 -- vbsz1=vbsz2 
    lda.z sy
    sta.z t2
    // t3 = sx+sz
    // [138] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsxx 
    stx.z t3
    // t4 = sx-sz
    // [139] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsxx 
    stx.z t4
    // t5 = sx+t2
    // [140] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 -- vbsz1=vbsxx_plus_vbsz2 
    txa
    clc
    adc.z t2
    sta.z t5
    // t6 = sx-t1
    // [141] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_minus_vbsz2 
    txa
    sec
    sbc.z t1
    sta.z t6
    // t7 = sx+t1
    // [142] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsxx_plus_vbsz2 
    txa
    clc
    adc.z t1
    sta.z t7
    // t8 = t2-sx
    // [143] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsxx 
    txa
    eor #$ff
    sec
    adc.z t2
    sta.z t8
    // t9 = sy-sx
    // [144] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsxx 
    txa
    eor #$ff
    sec
    adc.z sy
    sta.z t9
    // t10 = sy+sx
    // [145] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 -- vbsxx=vbsz1_plus_vbsxx 
    txa
    clc
    adc.z sy
    tax
    // COSH[t1]+COSH[t2]
    // [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 
    ldy.z t1
    lda COSH,y
    ldy.z t2
    clc
    adc COSH,y
    // rotation_matrix[0] = COSH[t1]+COSH[t2]
    // [147] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix
    // SINH[t1]-SINH[t2]
    // [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 
    ldy.z t1
    lda SINH,y
    ldy.z t2
    sec
    sbc SINH,y
    // rotation_matrix[1] = SINH[t1]-SINH[t2]
    // [149] *((const signed byte[9]) rotation_matrix#0+(byte) 1) ← (signed byte~) calculate_matrix::$11 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+1
    // SINH[sy]+SINH[sy]
    // [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::sy#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz1 
    ldy.z sy
    clc
    lda SINH,y
    adc SINH,y
    // rotation_matrix[2] = SINH[sy]+SINH[sy]
    // [151] *((const signed byte[9]) rotation_matrix#0+(byte) 2) ← (signed byte~) calculate_matrix::$12 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+2
    // SINH[t3]-SINH[t4]
    // [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 
    ldy.z t3
    lda SINH,y
    ldy.z t4
    sec
    sbc SINH,y
    // SINH[t3]-SINH[t4] + COSQ[t6]
    // [153] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy.z t6
    clc
    adc COSQ,y
    // SINH[t3]-SINH[t4] + COSQ[t6]-COSQ[t5]
    // [154] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t5
    sec
    sbc COSQ,y
    // SINH[t3]-SINH[t4] + COSQ[t6]-COSQ[t5]+COSQ[t8]
    // [155] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy.z t8
    clc
    adc COSQ,y
    // SINH[t3]-SINH[t4] + COSQ[t6]-COSQ[t5]+COSQ[t8]-COSQ[t7]
    // [156] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t7
    sec
    sbc COSQ,y
    // rotation_matrix[3] = SINH[t3]-SINH[t4] + COSQ[t6]-COSQ[t5]+COSQ[t8]-COSQ[t7]
    // [157] *((const signed byte[9]) rotation_matrix#0+(byte) 3) ← (signed byte~) calculate_matrix::$17 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+3
    // COSH[t3]+COSH[t4]
    // [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 
    ldy.z t3
    lda COSH,y
    ldy.z t4
    clc
    adc COSH,y
    // COSH[t3]+COSH[t4] + SINQ[t5]
    // [159] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy.z t5
    clc
    adc SINQ,y
    // COSH[t3]+COSH[t4] + SINQ[t5]-SINQ[t6]
    // [160] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t6
    sec
    sbc SINQ,y
    // COSH[t3]+COSH[t4] + SINQ[t5]-SINQ[t6]-SINQ[t7]
    // [161] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t7
    sec
    sbc SINQ,y
    // COSH[t3]+COSH[t4] + SINQ[t5]-SINQ[t6]-SINQ[t7]-SINQ[t8]
    // [162] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t8
    sec
    sbc SINQ,y
    // rotation_matrix[4] = COSH[t3]+COSH[t4] + SINQ[t5]-SINQ[t6]-SINQ[t7]-SINQ[t8]
    // [163] *((const signed byte[9]) rotation_matrix#0+(byte) 4) ← (signed byte~) calculate_matrix::$22 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+4
    // SINH[t9]-SINH[t10]
    // [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsxx 
    ldy.z t9
    lda SINH,y
    sec
    sbc SINH,x
    // rotation_matrix[5] = SINH[t9]-SINH[t10]
    // [165] *((const signed byte[9]) rotation_matrix#0+(byte) 5) ← (signed byte~) calculate_matrix::$23 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+5
    // COSH[t4]-COSH[t3]
    // [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 
    ldy.z t4
    lda COSH,y
    ldy.z t3
    sec
    sbc COSH,y
    // COSH[t4]-COSH[t3] + SINQ[t6]
    // [167] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy.z t6
    clc
    adc SINQ,y
    // COSH[t4]-COSH[t3] + SINQ[t6]-SINQ[t5]
    // [168] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t5
    sec
    sbc SINQ,y
    // COSH[t4]-COSH[t3] + SINQ[t6]-SINQ[t5]-SINQ[t8]
    // [169] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t8
    sec
    sbc SINQ,y
    // COSH[t4]-COSH[t3] + SINQ[t6]-SINQ[t5]-SINQ[t8]-SINQ[t7]
    // [170] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte[$140]) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t7
    sec
    sbc SINQ,y
    // rotation_matrix[6] = COSH[t4]-COSH[t3] + SINQ[t6]-SINQ[t5]-SINQ[t8]-SINQ[t7]
    // [171] *((const signed byte[9]) rotation_matrix#0+(byte) 6) ← (signed byte~) calculate_matrix::$28 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+6
    // SINH[t3]+SINH[t4]
    // [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte[$140]) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 
    ldy.z t3
    lda SINH,y
    ldy.z t4
    clc
    adc SINH,y
    // SINH[t3]+SINH[t4] + COSQ[t6]
    // [173] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy.z t6
    clc
    adc COSQ,y
    // SINH[t3]+SINH[t4] + COSQ[t6]-COSQ[t5]
    // [174] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t5
    sec
    sbc COSQ,y
    // SINH[t3]+SINH[t4] + COSQ[t6]-COSQ[t5]+COSQ[t7]
    // [175] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy.z t7
    clc
    adc COSQ,y
    // SINH[t3]+SINH[t4] + COSQ[t6]-COSQ[t5]+COSQ[t7]-COSQ[t8]
    // [176] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t8
    sec
    sbc COSQ,y
    // rotation_matrix[7] = SINH[t3]+SINH[t4] + COSQ[t6]-COSQ[t5]+COSQ[t7]-COSQ[t8]
    // [177] *((const signed byte[9]) rotation_matrix#0+(byte) 7) ← (signed byte~) calculate_matrix::$33 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+7
    // COSH[t9]+COSH[t10]
    // [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsxx 
    lda COSH,x
    ldy.z t9
    clc
    adc COSH,y
    // rotation_matrix[8] = COSH[t9]+COSH[t10]
    // [179] *((const signed byte[9]) rotation_matrix#0+(byte) 8) ← (signed byte~) calculate_matrix::$34 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+8
    // calculate_matrix::@return
    // }
    // [180] return 
    rts
}
  // debug_print_init
debug_print_init: {
    .label COLS = $d800
    .label at_line = SCREEN+$10*$28
    .label at_cols = COLS+$10*$28
    .label _41 = $d
    .label _44 = $f
    .label _47 = $11
    .label _50 = $13
    .label _53 = $15
    .label _56 = $17
    .label _59 = $19
    .label _62 = $1b
    .label _65 = $1d
    .label c = 2
    .label i = 3
    // print_cls()
    // [182] call print_cls 
    // [250] phi from debug_print_init to print_cls [phi:debug_print_init->print_cls]
    jsr print_cls
    // [183] phi from debug_print_init to debug_print_init::@4 [phi:debug_print_init->debug_print_init::@4]
    // debug_print_init::@4
    // print_str_at("sx", SCREEN+40*0+34)
    // [184] call print_str_at 
    // [243] phi from debug_print_init::@4 to print_str_at [phi:debug_print_init::@4->print_str_at]
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte) $22 [phi:debug_print_init::@4->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$22
    sta.z print_str_at.at
    lda #>SCREEN+$22
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str [phi:debug_print_init::@4->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str
    sta.z print_str_at.str
    lda #>str
    sta.z print_str_at.str+1
    jsr print_str_at
    // [185] phi from debug_print_init::@4 to debug_print_init::@5 [phi:debug_print_init::@4->debug_print_init::@5]
    // debug_print_init::@5
    // print_str_at("sy", SCREEN+40*1+34)
    // [186] call print_str_at 
    // [243] phi from debug_print_init::@5 to print_str_at [phi:debug_print_init::@5->print_str_at]
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 1+(byte) $22 [phi:debug_print_init::@5->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*1+$22
    sta.z print_str_at.at
    lda #>SCREEN+$28*1+$22
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str1 [phi:debug_print_init::@5->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str1
    sta.z print_str_at.str
    lda #>str1
    sta.z print_str_at.str+1
    jsr print_str_at
    // [187] phi from debug_print_init::@5 to debug_print_init::@6 [phi:debug_print_init::@5->debug_print_init::@6]
    // debug_print_init::@6
    // print_str_at("sz", SCREEN+40*2+34)
    // [188] call print_str_at 
    // [243] phi from debug_print_init::@6 to print_str_at [phi:debug_print_init::@6->print_str_at]
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte)(number) $28*(number) 2+(byte) $22 [phi:debug_print_init::@6->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*2+$22
    sta.z print_str_at.at
    lda #>SCREEN+$28*2+$22
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str2 [phi:debug_print_init::@6->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str2
    sta.z print_str_at.str
    lda #>str2
    sta.z print_str_at.str+1
    jsr print_str_at
    // [189] phi from debug_print_init::@6 to debug_print_init::@7 [phi:debug_print_init::@6->debug_print_init::@7]
    // debug_print_init::@7
    // print_str_at("x", SCREEN+40*16)
    // [190] call print_str_at 
    // [243] phi from debug_print_init::@7 to print_str_at [phi:debug_print_init::@7->print_str_at]
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $10 [phi:debug_print_init::@7->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$10
    sta.z print_str_at.at
    lda #>SCREEN+$28*$10
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str3 [phi:debug_print_init::@7->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str3
    sta.z print_str_at.str
    lda #>str3
    sta.z print_str_at.str+1
    jsr print_str_at
    // [191] phi from debug_print_init::@7 to debug_print_init::@8 [phi:debug_print_init::@7->debug_print_init::@8]
    // debug_print_init::@8
    // print_str_at("y", SCREEN+40*17)
    // [192] call print_str_at 
    // [243] phi from debug_print_init::@8 to print_str_at [phi:debug_print_init::@8->print_str_at]
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $11 [phi:debug_print_init::@8->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$11
    sta.z print_str_at.at
    lda #>SCREEN+$28*$11
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str4 [phi:debug_print_init::@8->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str4
    sta.z print_str_at.str
    lda #>str4
    sta.z print_str_at.str+1
    jsr print_str_at
    // [193] phi from debug_print_init::@8 to debug_print_init::@9 [phi:debug_print_init::@8->debug_print_init::@9]
    // debug_print_init::@9
    // print_str_at("z", SCREEN+40*18)
    // [194] call print_str_at 
    // [243] phi from debug_print_init::@9 to print_str_at [phi:debug_print_init::@9->print_str_at]
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $12 [phi:debug_print_init::@9->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$12
    sta.z print_str_at.at
    lda #>SCREEN+$28*$12
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str5 [phi:debug_print_init::@9->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str5
    sta.z print_str_at.str
    lda #>str5
    sta.z print_str_at.str+1
    jsr print_str_at
    // [195] phi from debug_print_init::@9 to debug_print_init::@10 [phi:debug_print_init::@9->debug_print_init::@10]
    // debug_print_init::@10
    // print_str_at("xr", SCREEN+40*19)
    // [196] call print_str_at 
    // [243] phi from debug_print_init::@10 to print_str_at [phi:debug_print_init::@10->print_str_at]
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $13 [phi:debug_print_init::@10->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$13
    sta.z print_str_at.at
    lda #>SCREEN+$28*$13
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str6 [phi:debug_print_init::@10->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str6
    sta.z print_str_at.str
    lda #>str6
    sta.z print_str_at.str+1
    jsr print_str_at
    // [197] phi from debug_print_init::@10 to debug_print_init::@11 [phi:debug_print_init::@10->debug_print_init::@11]
    // debug_print_init::@11
    // print_str_at("yr", SCREEN+40*20)
    // [198] call print_str_at 
    // [243] phi from debug_print_init::@11 to print_str_at [phi:debug_print_init::@11->print_str_at]
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $14 [phi:debug_print_init::@11->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$14
    sta.z print_str_at.at
    lda #>SCREEN+$28*$14
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str7 [phi:debug_print_init::@11->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str7
    sta.z print_str_at.str
    lda #>str7
    sta.z print_str_at.str+1
    jsr print_str_at
    // [199] phi from debug_print_init::@11 to debug_print_init::@12 [phi:debug_print_init::@11->debug_print_init::@12]
    // debug_print_init::@12
    // print_str_at("zr", SCREEN+40*21)
    // [200] call print_str_at 
    // [243] phi from debug_print_init::@12 to print_str_at [phi:debug_print_init::@12->print_str_at]
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $15 [phi:debug_print_init::@12->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$15
    sta.z print_str_at.at
    lda #>SCREEN+$28*$15
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str8 [phi:debug_print_init::@12->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str8
    sta.z print_str_at.str
    lda #>str8
    sta.z print_str_at.str+1
    jsr print_str_at
    // [201] phi from debug_print_init::@12 to debug_print_init::@13 [phi:debug_print_init::@12->debug_print_init::@13]
    // debug_print_init::@13
    // print_str_at("pp", SCREEN+40*22)
    // [202] call print_str_at 
    // [243] phi from debug_print_init::@13 to print_str_at [phi:debug_print_init::@13->print_str_at]
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $16 [phi:debug_print_init::@13->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$16
    sta.z print_str_at.at
    lda #>SCREEN+$28*$16
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str9 [phi:debug_print_init::@13->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str9
    sta.z print_str_at.str
    lda #>str9
    sta.z print_str_at.str+1
    jsr print_str_at
    // [203] phi from debug_print_init::@13 to debug_print_init::@14 [phi:debug_print_init::@13->debug_print_init::@14]
    // debug_print_init::@14
    // print_str_at("xp", SCREEN+40*23)
    // [204] call print_str_at 
    // [243] phi from debug_print_init::@14 to print_str_at [phi:debug_print_init::@14->print_str_at]
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $17 [phi:debug_print_init::@14->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$17
    sta.z print_str_at.at
    lda #>SCREEN+$28*$17
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str10 [phi:debug_print_init::@14->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str10
    sta.z print_str_at.str
    lda #>str10
    sta.z print_str_at.str+1
    jsr print_str_at
    // [205] phi from debug_print_init::@14 to debug_print_init::@15 [phi:debug_print_init::@14->debug_print_init::@15]
    // debug_print_init::@15
    // print_str_at("yp", SCREEN+40*24)
    // [206] call print_str_at 
    // [243] phi from debug_print_init::@15 to print_str_at [phi:debug_print_init::@15->print_str_at]
    // [243] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(word)(number) $28*(number) $18 [phi:debug_print_init::@15->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$18
    sta.z print_str_at.at
    lda #>SCREEN+$28*$18
    sta.z print_str_at.at+1
    // [243] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str11 [phi:debug_print_init::@15->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str11
    sta.z print_str_at.str
    lda #>str11
    sta.z print_str_at.str+1
    jsr print_str_at
    // [207] phi from debug_print_init::@15 to debug_print_init::@1 [phi:debug_print_init::@15->debug_print_init::@1]
    // [207] phi (byte) debug_print_init::i#2 = (byte) 0 [phi:debug_print_init::@15->debug_print_init::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    // [207] phi (byte) debug_print_init::c#2 = (byte) 4 [phi:debug_print_init::@15->debug_print_init::@1#1] -- vbuz1=vbuc1 
    lda #4
    sta.z c
    // [207] phi from debug_print_init::@3 to debug_print_init::@1 [phi:debug_print_init::@3->debug_print_init::@1]
    // [207] phi (byte) debug_print_init::i#2 = (byte) debug_print_init::i#1 [phi:debug_print_init::@3->debug_print_init::@1#0] -- register_copy 
    // [207] phi (byte) debug_print_init::c#2 = (byte) debug_print_init::c#1 [phi:debug_print_init::@3->debug_print_init::@1#1] -- register_copy 
    // debug_print_init::@1
  b1:
    // print_sbyte_at(xs[i], at_line+40*0+c)
    // [208] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line
    sta.z print_sbyte_at.at
    lda #>at_line
    adc #0
    sta.z print_sbyte_at.at+1
    // [209] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx xs,y
    // [210] call print_sbyte_at 
    // [105] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#0 [phi:debug_print_init::@1->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#1 [phi:debug_print_init::@1->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // debug_print_init::@16
    // print_sbyte_at(ys[i], at_line+40*1+c)
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*1
    sta.z print_sbyte_at.at
    lda #>at_line+$28*1
    adc #0
    sta.z print_sbyte_at.at+1
    // [212] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx ys,y
    // [213] call print_sbyte_at 
    // [105] phi from debug_print_init::@16 to print_sbyte_at [phi:debug_print_init::@16->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#1 [phi:debug_print_init::@16->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#2 [phi:debug_print_init::@16->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // debug_print_init::@17
    // print_sbyte_at(zs[i], at_line+40*2+c)
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_line+$28*2
    sta.z print_sbyte_at.at
    lda #>at_line+$28*2
    adc #0
    sta.z print_sbyte_at.at+1
    // [215] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx zs,y
    // [216] call print_sbyte_at 
    // [105] phi from debug_print_init::@17 to print_sbyte_at [phi:debug_print_init::@17->print_sbyte_at]
    // [105] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#2 [phi:debug_print_init::@17->print_sbyte_at#0] -- register_copy 
    // [105] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#3 [phi:debug_print_init::@17->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    // [217] phi from debug_print_init::@17 to debug_print_init::@2 [phi:debug_print_init::@17->debug_print_init::@2]
    // [217] phi (byte) debug_print_init::j#2 = (byte) 0 [phi:debug_print_init::@17->debug_print_init::@2#0] -- vbuyy=vbuc1 
    ldy #0
    // [217] phi from debug_print_init::@2 to debug_print_init::@2 [phi:debug_print_init::@2->debug_print_init::@2]
    // [217] phi (byte) debug_print_init::j#2 = (byte) debug_print_init::j#1 [phi:debug_print_init::@2->debug_print_init::@2#0] -- register_copy 
    // debug_print_init::@2
  b2:
    // col = 8+i
    // [218] (byte) debug_print_init::col#0 ← (byte) 8 + (byte) debug_print_init::i#2 -- vbuxx=vbuc1_plus_vbuz1 
    lax.z i
    axs #-[8]
    // at_cols+40*0+c
    // [219] (byte*~) debug_print_init::$41 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols
    sta.z _41
    lda #>at_cols
    adc #0
    sta.z _41+1
    // *(at_cols+40*0+c+j) = col
    // [220] *((byte*~) debug_print_init::$41 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx 
    txa
    sta (_41),y
    // at_cols+40*1+c
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*1
    sta.z _44
    lda #>at_cols+$28*1
    adc #0
    sta.z _44+1
    // *(at_cols+40*1+c+j) = col
    // [222] *((byte*~) debug_print_init::$44 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx 
    txa
    sta (_44),y
    // at_cols+40*2+c
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*2
    sta.z _47
    lda #>at_cols+$28*2
    adc #0
    sta.z _47+1
    // *(at_cols+40*2+c+j) = col
    // [224] *((byte*~) debug_print_init::$47 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx 
    txa
    sta (_47),y
    // at_cols+40*3+c
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*3
    sta.z _50
    lda #>at_cols+$28*3
    adc #0
    sta.z _50+1
    // *(at_cols+40*3+c+j) = col
    // [226] *((byte*~) debug_print_init::$50 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx 
    txa
    sta (_50),y
    // at_cols+40*4+c
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*4
    sta.z _53
    lda #>at_cols+$28*4
    adc #0
    sta.z _53+1
    // *(at_cols+40*4+c+j) = col
    // [228] *((byte*~) debug_print_init::$53 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx 
    txa
    sta (_53),y
    // at_cols+40*5+c
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*5
    sta.z _56
    lda #>at_cols+$28*5
    adc #0
    sta.z _56+1
    // *(at_cols+40*5+c+j) = col
    // [230] *((byte*~) debug_print_init::$56 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx 
    txa
    sta (_56),y
    // at_cols+40*6+c
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*6
    sta.z _59
    lda #>at_cols+$28*6
    adc #0
    sta.z _59+1
    // *(at_cols+40*6+c+j) = col
    // [232] *((byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx 
    txa
    sta (_59),y
    // at_cols+40*7+c
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*7
    sta.z _62
    lda #>at_cols+$28*7
    adc #0
    sta.z _62+1
    // *(at_cols+40*7+c+j) = col
    // [234] *((byte*~) debug_print_init::$62 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx 
    txa
    sta (_62),y
    // at_cols+40*8+c
    // [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 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z c
    clc
    adc #<at_cols+$28*8
    sta.z _65
    lda #>at_cols+$28*8
    adc #0
    sta.z _65+1
    // *(at_cols+40*8+c+j) = col
    // [236] *((byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2) ← (byte) debug_print_init::col#0 -- pbuz1_derefidx_vbuyy=vbuxx 
    txa
    sta (_65),y
    // for( byte j: 0..3)
    // [237] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 -- vbuyy=_inc_vbuyy 
    iny
    // [238] if((byte) debug_print_init::j#1!=(byte) 4) goto debug_print_init::@2 -- vbuyy_neq_vbuc1_then_la1 
    cpy #4
    beq !b2+
    jmp b2
  !b2:
    // debug_print_init::@3
    // c += 4
    // [239] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z c
    axs #-[4]
    stx.z c
    // for( byte i: 0..7)
    // [240] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [241] if((byte) debug_print_init::i#1!=(byte) 8) goto debug_print_init::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z i
    beq !b1+
    jmp b1
  !b1:
    // debug_print_init::@return
    // }
    // [242] return 
    rts
    str: .text "sx"
    .byte 0
    str1: .text "sy"
    .byte 0
    str2: .text "sz"
    .byte 0
    str3: .text "x"
    .byte 0
    str4: .text "y"
    .byte 0
    str5: .text "z"
    .byte 0
    str6: .text "xr"
    .byte 0
    str7: .text "yr"
    .byte 0
    str8: .text "zr"
    .byte 0
    str9: .text "pp"
    .byte 0
    str10: .text "xp"
    .byte 0
    str11: .text "yp"
    .byte 0
}
  // print_str_at
// Print a string at a specific screen position
// print_str_at(byte* zeropage($d) str, byte* zeropage($f) at)
print_str_at: {
    .label at = $f
    .label str = $d
    // [244] phi from print_str_at print_str_at::@2 to print_str_at::@1 [phi:print_str_at/print_str_at::@2->print_str_at::@1]
    // [244] phi (byte*) print_str_at::at#13 = (byte*) print_str_at::at#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#0] -- register_copy 
    // [244] phi (byte*) print_str_at::str#13 = (byte*) print_str_at::str#15 [phi:print_str_at/print_str_at::@2->print_str_at::@1#1] -- register_copy 
    // print_str_at::@1
  b1:
    // while(*str)
    // [245] if((byte) 0!=*((byte*) print_str_at::str#13)) goto print_str_at::@2 -- vbuc1_neq__deref_pbuz1_then_la1 
    ldy #0
    lda (str),y
    cmp #0
    bne b2
    // print_str_at::@return
    // }
    // [246] return 
    rts
    // print_str_at::@2
  b2:
    // *(at++) = *(str++)
    // [247] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    sta (at),y
    // *(at++) = *(str++);
    // [248] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 -- pbuz1=_inc_pbuz1 
    inc.z at
    bne !+
    inc.z at+1
  !:
    // [249] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 -- pbuz1=_inc_pbuz1 
    inc.z str
    bne !+
    inc.z str+1
  !:
    jmp b1
}
  // print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    // memset(print_screen, ' ', 1000)
    // [251] call memset 
    // [253] phi from print_cls to memset [phi:print_cls->memset]
    jsr memset
    // print_cls::@return
    // }
    // [252] return 
    rts
}
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
memset: {
    .const c = ' '
    .const num = $3e8
    .label str = print_screen
    .label end = str+num
    .label dst = $f
    // [254] phi from memset to memset::@2 [phi:memset->memset::@2]
    // [254] phi (byte*) memset::dst#4 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@2#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    // [254] phi from memset::@1 to memset::@2 [phi:memset::@1->memset::@2]
    // [254] phi (byte*) memset::dst#4 = (byte*) memset::dst#1 [phi:memset::@1->memset::@2#0] -- register_copy 
    // memset::@2
  b2:
    // *dst = c
    // [255] *((byte*) memset::dst#4) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // for(char* dst = str; dst!=end; dst++)
    // [256] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#4 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // memset::@1
    // [257] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1 
    lda.z dst+1
    cmp #>end
    bne b2
    lda.z dst
    cmp #<end
    bne b2
    // memset::@return
    // }
    // [258] return 
    rts
}
  // sprites_init
// Initialize sprites
sprites_init: {
    .label SCREEN = $400
    .label sprites_ptr = SCREEN+$3f8
    // *SPRITES_ENABLE = %11111111
    // [259] *((const byte*) SPRITES_ENABLE#0) ← (byte) $ff -- _deref_pbuc1=vbuc2 
    lda #$ff
    sta SPRITES_ENABLE
    // [260] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1]
    // [260] phi (byte) sprites_init::i#2 = (byte) 0 [phi:sprites_init->sprites_init::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [260] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1]
    // [260] phi (byte) sprites_init::i#2 = (byte) sprites_init::i#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy 
    // sprites_init::@1
  b1:
    // sprites_ptr[i] = (byte)(SPRITE/$40)
    // [261] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← (byte)(const byte*) SPRITE#0/(byte) $40 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #SPRITE/$40
    sta sprites_ptr,x
    // SPRITES_COLS[i] = GREEN
    // [262] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #GREEN
    sta SPRITES_COLS,x
    // for(byte i: 0..7)
    // [263] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [264] if((byte) sprites_init::i#1!=(byte) 8) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #8
    bne b1
    // sprites_init::@return
    // }
    // [265] return 
    rts
}
  // File Data
  print_hextab: .text "0123456789abcdef"
  // Positions to rotate
  xs: .byte -$34, -$34, -$34, 0, 0, $34, $34, $34
  ys: .byte -$34, 0, $34, -$34, $34, -$34, 0, $34
  zs: .byte $34, $34, $34, $34, $34, $34, $34, $34
  // Rotated positions
  xrs: .fill 8, 0
  yrs: .fill 8, 0
  zrs: .fill 8, 0
  // Persepctive factors (from zrs)
  pps: .fill 8, 0
  // Rotated positions with persepctive
  xps: .fill 8, 0
  yps: .fill 8, 0
  // The rotation matrix
  rotation_matrix: .fill 9, 0
  // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x).
  // f(x) = >(( x * x ))
  .align $100
mulf_sqr1:
.for(var i=0;i<$200;i++) {
    	.if(i<=159) { .byte round((i*i)/256) }
    	.if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) }
    	.if(i>351) { .byte round(((512-i)*(512-i))/256) }
    }

  // g(x) =  >((( 1 - x ) * ( 1 - x )))
  .align $100
mulf_sqr2:
.for(var i=0;i<$200;i++) {
    	.if(i<=159) { .byte round((-i-1)*(-i-1)/256) }
    	.if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) }
    	.if(i>351) { .byte round(((i-511)*(i-511))/256) }  
    }

  // Perspective multiplication table containing (d/(z0-z)[z] for each z-value   
  .align $100
PERSP_Z:
{
    .var d = 256.0	
    .var z0 = 6.0	
    // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f)
    .for(var z=0;z<$100;z++) {
    	.if(z>127) {
    		.byte round(d / (z0 - ((z - 256) / 64.0)));
    	} else {
    		.byte round(d / (z0 - (z / 64.0)));
    	}
    }
	}

  // Sine and Cosine Tables   
  // Angles: $00=0, $80=PI,$100=2*PI
  // Half Sine/Cosine: signed fixed [-$20;20]
  .align $40
SINH:
{
    .var min = -$2000
    .var max = $2000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256)
    }
    }

  // Quarter Sine/Cosine: signed fixed [-$10,$10]
  .align $40
SINQ:
{
    .var min = -$1000
    .var max = $1000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256)
    }
    }

.pc = SPRITE "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)


