Resolved forward reference mulf_sqr1 to (const byte*) mulf_sqr1
Resolved forward reference mulf_sqr2 to (const byte*) mulf_sqr2
Resolved forward reference rotation_matrix to (const signed byte*) rotation_matrix
Resolved forward reference rotation_matrix to (const signed byte*) rotation_matrix
Resolved forward reference rotation_matrix to (const signed byte*) rotation_matrix
Resolved forward reference rotation_matrix to (const signed byte*) rotation_matrix
Resolved forward reference rotation_matrix to (const signed byte*) rotation_matrix
Resolved forward reference rotation_matrix to (const signed byte*) rotation_matrix
Resolved forward reference rotation_matrix to (const signed byte*) rotation_matrix
Resolved forward reference rotation_matrix to (const signed byte*) rotation_matrix
Resolved forward reference rotation_matrix to (const signed byte*) 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 (const signed byte*) SINH
Resolved forward reference SINH to (const signed byte*) SINH
Resolved forward reference SINH to (const signed byte*) SINH
Resolved forward reference SINH to (const signed byte*) SINH
Resolved forward reference SINH to (const signed byte*) SINH
Resolved forward reference SINH to (const signed byte*) 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 (const signed byte*) SINQ
Resolved forward reference SINQ to (const signed byte*) SINQ
Resolved forward reference SINQ to (const signed byte*) SINQ
Resolved forward reference SINQ to (const signed byte*) SINQ
Resolved forward reference SINH to (const signed byte*) SINH
Resolved forward reference SINH to (const signed byte*) SINH
Resolved forward reference COSH to (signed byte*) COSH
Resolved forward reference COSH to (signed byte*) COSH
Resolved forward reference SINQ to (const signed byte*) SINQ
Resolved forward reference SINQ to (const signed byte*) SINQ
Resolved forward reference SINQ to (const signed byte*) SINQ
Resolved forward reference SINQ to (const signed byte*) SINQ
Resolved forward reference SINH to (const signed byte*) SINH
Resolved forward reference SINH to (const signed byte*) 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 (const byte*) SINH_HI
Resolved forward reference SINH_LO to (const byte*) SINH_LO
Resolved forward reference SINH_HI to (const byte*) SINH_HI
Resolved forward reference SINH_LO to (const byte*) SINH_LO
Resolved forward reference SINH_HI to (const byte*) SINH_HI
Resolved forward reference SINH_LO to (const byte*) SINH_LO
Resolved forward reference SINH_HI to (const byte*) SINH_HI
Resolved forward reference SINH_LO to (const byte*) SINH_LO
Resolved forward reference SINH_HI to (const byte*) SINH_HI
Resolved forward reference SINH_LO to (const byte*) 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 (const byte*) SINQ_HI
Resolved forward reference SINH_LO to (const byte*) SINH_LO
Resolved forward reference SINQ_HI to (const byte*) SINQ_HI
Resolved forward reference SINH_LO to (const byte*) SINH_LO
Resolved forward reference SINQ_HI to (const byte*) SINQ_HI
Resolved forward reference SINH_LO to (const byte*) SINH_LO
Resolved forward reference SINQ_HI to (const byte*) SINQ_HI
Resolved forward reference SINH_LO to (const byte*) SINH_LO
Resolved forward reference SINH_HI to (const byte*) SINH_HI
Resolved forward reference SINH_LO to (const byte*) SINH_LO
Resolved forward reference SINH_HI to (const byte*) SINH_HI
Resolved forward reference SINH_LO to (const byte*) 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 (const byte*) mulf_sqr1
Resolved forward reference mulf_sqr2 to (const byte*) mulf_sqr2
Resolved forward reference PERSP_Z to (const signed byte*) 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*) strlen::str)
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
Identified constant variable (signed byte*) COSH
Identified constant variable (signed byte*) COSQ
Identified constant variable (byte*) COSH_LO
Identified constant variable (byte*) COSH_HI
Identified constant variable (byte*) COSQ_LO
Identified constant variable (byte*) COSQ_HI
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 (const signed byte) sz (number) 2 (number) $25 
Inlined call call print_sbyte_pos *((const signed byte*) rotation_matrix + (number) 0) (number) 4 (number) $1d 
Inlined call call print_sbyte_pos *((const signed byte*) rotation_matrix + (number) 1) (number) 4 (number) $21 
Inlined call call print_sbyte_pos *((const signed byte*) rotation_matrix + (number) 2) (number) 4 (number) $25 
Inlined call call print_sbyte_pos *((const signed byte*) rotation_matrix + (number) 3) (number) 5 (number) $1d 
Inlined call call print_sbyte_pos *((const signed byte*) rotation_matrix + (number) 4) (number) 5 (number) $21 
Inlined call call print_sbyte_pos *((const signed byte*) rotation_matrix + (number) 5) (number) 5 (number) $25 
Inlined call call print_sbyte_pos *((const signed byte*) rotation_matrix + (number) 6) (number) 6 (number) $1d 
Inlined call call print_sbyte_pos *((const signed byte*) rotation_matrix + (number) 7) (number) 6 (number) $21 
Inlined call call print_sbyte_pos *((const signed byte*) 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) @16
Culled Empty Block (label) @18
Culled Empty Block (label) @19
Culled Empty Block (label) @20
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) @21
Culled Empty Block (label) @22
Culled Empty Block (label) @23
Culled Empty Block (label) @24
Culled Empty Block (label) @25
Culled Empty Block (label) print_sbyte_at::@4
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) @33
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) @40
Culled Empty Block (label) @41
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) @43
Culled Empty Block (label) debug_print_init::@4
Culled Empty Block (label) @44
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) @45
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
Culled Empty Block (label) @50

CONTROL FLOW GRAPH SSA
@begin: scope:[]  from
  to:@17

(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
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
@17: scope:[]  from @begin
  (byte*) print_screen#0 ← (byte*)(number) $400
  to:@42

(void()) print_str_at((byte*) print_str_at::str , (byte*) print_str_at::at)
print_str_at: scope:[print_str_at]  from debug_print_init::@10 debug_print_init::@11 debug_print_init::@12 debug_print_init::@13 debug_print_init::@14 debug_print_init::@15 debug_print_init::@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

(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
print_sbyte_at: scope:[print_sbyte_at]  from debug_print::@1 debug_print::@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

(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at)
print_byte_at: scope:[print_byte_at]  from print_sbyte_at::@2
  (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 ← *((const byte*) print_hextab + (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 ← *((const byte*) print_hextab + (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

(void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at)
print_char_at: scope:[print_char_at]  from print_byte_at print_byte_at::@1 print_sbyte_at::@1 print_sbyte_at::@3
  (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

(void()) print_cls()
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

(void()) main()
main: scope:[main]  from @51
  (byte*) print_screen#40 ← phi( @51/(byte*) print_screen#42 )
  (signed byte) sy#24 ← phi( @51/(signed byte) sy#18 )
  (signed byte) sx#22 ← phi( @51/(signed byte) sx#17 )
  asm { sei  }
  call sprites_init 
  to:main::@1
main::@1: scope:[main]  from main
  (byte*) print_screen#27 ← phi( main/(byte*) print_screen#40 )
  (signed byte) sy#19 ← phi( main/(signed byte) sy#24 )
  (signed byte) sx#18 ← phi( main/(signed byte) sx#22 )
  (word~) main::$1 ← ((word)) (const byte*) mulf_sqr1
  *((const word*) psp1) ← (word~) main::$1
  (word~) main::$2 ← ((word)) (const byte*) mulf_sqr2
  *((const word*) psp2) ← (word~) main::$2
  call debug_print_init 
  to:main::@2
main::@2: scope:[main]  from main::@1
  (byte*) print_screen#54 ← phi( main::@1/(byte*) print_screen#27 )
  (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
@42: scope:[]  from @17
  (byte*) print_screen#45 ← phi( @17/(byte*) print_screen#0 )
  (signed byte) sx#2 ← (signed byte) 0
  (signed byte) sy#2 ← (signed byte) 0
  to:@51

(void()) anim()
anim: scope:[anim]  from main::@2
  (byte*) print_screen#52 ← phi( main::@2/(byte*) print_screen#54 )
  (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#51 ← phi( anim/(byte*) print_screen#52 anim::@30/(byte*) print_screen#53 )
  (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#50 ← phi( anim::@1/(byte*) print_screen#51 anim::@4/(byte*) print_screen#50 )
  (signed byte) sy#25 ← phi( anim::@1/(signed byte) sy#16 anim::@4/(signed byte) sy#25 )
  (signed byte) sx#23 ← phi( anim::@1/(signed byte) sx#16 anim::@4/(signed byte) sx#23 )
  (bool~) anim::$0 ← *((const byte*) RASTER) != (number) $ff
  if((bool~) anim::$0) goto anim::@4
  to:anim::@10
anim::@10: scope:[anim]  from anim::@10 anim::@4
  (byte*) print_screen#49 ← phi( anim::@10/(byte*) print_screen#49 anim::@4/(byte*) print_screen#50 )
  (signed byte) sy#21 ← phi( anim::@10/(signed byte) sy#21 anim::@4/(signed byte) sy#25 )
  (signed byte) sx#20 ← phi( anim::@10/(signed byte) sx#20 anim::@4/(signed byte) sx#23 )
  (bool~) anim::$1 ← *((const byte*) RASTER) != (number) $fe
  if((bool~) anim::$1) goto anim::@10
  to:anim::@16
anim::@16: scope:[anim]  from anim::@10 anim::@16
  (byte*) print_screen#48 ← phi( anim::@10/(byte*) print_screen#49 anim::@16/(byte*) print_screen#48 )
  (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 ← *((const byte*) RASTER) != (number) $fd
  if((bool~) anim::$2) goto anim::@16
  to:anim::@18
anim::@18: scope:[anim]  from anim::@16
  (byte*) print_screen#47 ← phi( anim::@16/(byte*) print_screen#48 )
  (signed byte) sy#8 ← phi( anim::@16/(signed byte) sy#14 )
  (signed byte) sx#8 ← phi( anim::@16/(signed byte) sx#14 )
  *((const byte*) BORDERCOL) ← ++ *((const byte*) BORDERCOL)
  (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 ← (const signed byte) sz
  call calculate_matrix 
  to:anim::@27
anim::@27: scope:[anim]  from anim::@18
  (byte*) print_screen#46 ← phi( anim::@18/(byte*) print_screen#47 )
  (signed byte) sy#29 ← phi( anim::@18/(signed byte) sy#8 )
  (signed byte) sx#26 ← phi( anim::@18/(signed byte) sx#8 )
  call store_matrix 
  to:anim::@28
anim::@28: scope:[anim]  from anim::@27
  (byte*) print_screen#44 ← phi( anim::@27/(byte*) print_screen#46 )
  (signed byte) sy#28 ← phi( anim::@27/(signed byte) sy#29 )
  (signed byte) sx#25 ← phi( anim::@27/(signed byte) sx#26 )
  (byte) anim::i#0 ← (byte) 0
  to:anim::@22
anim::@22: scope:[anim]  from anim::@28 anim::@29
  (byte*) print_screen#43 ← phi( anim::@28/(byte*) print_screen#44 anim::@29/(byte*) print_screen#41 )
  (signed byte) sy#26 ← phi( anim::@28/(signed byte) sy#28 anim::@29/(signed byte) sy#22 )
  (signed byte) sx#24 ← phi( anim::@28/(signed byte) sx#25 anim::@29/(signed byte) sx#21 )
  (byte) anim::i#2 ← phi( anim::@28/(byte) anim::i#0 anim::@29/(byte) anim::i#1 )
  *((const byte*) BORDERCOL) ← ++ *((const byte*) BORDERCOL)
  (signed byte) rotate_matrix::x#0 ← *((const signed byte*) xs + (byte) anim::i#2)
  (signed byte) rotate_matrix::y#0 ← *((const signed byte*) ys + (byte) anim::i#2)
  (signed byte) rotate_matrix::z#0 ← *((const signed byte*) zs + (byte) anim::i#2)
  call rotate_matrix 
  to:anim::@29
anim::@29: scope:[anim]  from anim::@22
  (byte*) print_screen#41 ← phi( anim::@22/(byte*) print_screen#43 )
  (signed byte) sy#22 ← phi( anim::@22/(signed byte) sy#26 )
  (signed byte) sx#21 ← phi( anim::@22/(signed byte) sx#24 )
  (byte) anim::i#3 ← phi( anim::@22/(byte) anim::i#2 )
  *((const signed byte*) xrs + (byte) anim::i#3) ← *((const signed byte*) xr)
  *((const signed byte*) yrs + (byte) anim::i#3) ← *((const signed byte*) yr)
  *((const signed byte*) zrs + (byte) anim::i#3) ← *((const signed byte*) zr)
  *((const signed byte*) pps + (byte) anim::i#3) ← *((const signed byte*) pp)
  *((const signed byte*) xps + (byte) anim::i#3) ← *((const signed byte*) xp)
  *((const signed byte*) yps + (byte) anim::i#3) ← *((const signed byte*) yp)
  (number~) anim::$8 ← (byte) anim::i#3 * (number) 2
  (byte) anim::i2#0 ← (number~) anim::$8
  (byte~) anim::$9 ← ((byte)) *((const signed byte*) xp)
  (number~) anim::$10 ← (number) $80 + (byte~) anim::$9
  *((const byte*) SPRITES_XPOS + (byte) anim::i2#0) ← (number~) anim::$10
  (byte~) anim::$11 ← ((byte)) *((const signed byte*) yp)
  (number~) anim::$12 ← (number) $80 + (byte~) anim::$11
  *((const byte*) SPRITES_YPOS + (byte) anim::i2#0) ← (number~) anim::$12
  (byte) anim::i#1 ← (byte) anim::i#3 + rangenext(0,7)
  (bool~) anim::$13 ← (byte) anim::i#1 != rangelast(0,7)
  if((bool~) anim::$13) goto anim::@22
  to:anim::@23
anim::@23: scope:[anim]  from anim::@29
  (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 )
  *((const byte*) BORDERCOL) ← (const byte) LIGHT_GREY
  call debug_print 
  to:anim::@30
anim::@30: scope:[anim]  from anim::@23
  (byte*) print_screen#53 ← phi( anim::@23/(byte*) print_screen#28 )
  (signed byte) sy#9 ← phi( anim::@23/(signed byte) sy#15 )
  (signed byte) sx#9 ← phi( anim::@23/(signed byte) sx#15 )
  *((const byte*) BORDERCOL) ← (const byte) LIGHT_BLUE
  (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

(void()) debug_print_init()
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 ← (const byte*) SCREEN + (number) $28*(number) 0
  (byte*~) debug_print_init::$2 ← (byte*~) debug_print_init::$1 + (number) $22
  (byte*) print_str_at::str#1 ← (const byte*) 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 ← (const byte*) SCREEN + (number) $28*(number) 1
  (byte*~) debug_print_init::$5 ← (byte*~) debug_print_init::$4 + (number) $22
  (byte*) print_str_at::str#2 ← (const byte*) 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 ← (const byte*) SCREEN + (number) $28*(number) 2
  (byte*~) debug_print_init::$8 ← (byte*~) debug_print_init::$7 + (number) $22
  (byte*) print_str_at::str#3 ← (const byte*) 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 ← (const byte*) SCREEN + (number) $28*(number) $10
  (byte*) print_str_at::str#4 ← (const byte*) 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 ← (const byte*) SCREEN + (number) $28*(number) $11
  (byte*) print_str_at::str#5 ← (const byte*) 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 ← (const byte*) SCREEN + (number) $28*(number) $12
  (byte*) print_str_at::str#6 ← (const byte*) 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 ← (const byte*) SCREEN + (number) $28*(number) $13
  (byte*) print_str_at::str#7 ← (const byte*) 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 ← (const byte*) SCREEN + (number) $28*(number) $14
  (byte*) print_str_at::str#8 ← (const byte*) 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 ← (const byte*) SCREEN + (number) $28*(number) $15
  (byte*) print_str_at::str#9 ← (const byte*) 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 ← (const byte*) SCREEN + (number) $28*(number) $16
  (byte*) print_str_at::str#10 ← (const byte*) 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 ← (const byte*) SCREEN + (number) $28*(number) $17
  (byte*) print_str_at::str#11 ← (const byte*) 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 ← (const byte*) SCREEN + (number) $28*(number) $18
  (byte*) print_str_at::str#12 ← (const byte*) 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 ← (const byte*) SCREEN + (number) $10*(number) $28
  (byte*) debug_print_init::at_line#0 ← (byte*~) debug_print_init::$28
  (byte) debug_print_init::c#0 ← (byte) 4
  (byte*~) debug_print_init::$29 ← (const byte*) debug_print_init::COLS + (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 ← *((const signed byte*) xs + (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 ← *((const signed byte*) ys + (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 ← *((const signed byte*) zs + (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

(void()) debug_print()
debug_print: scope:[debug_print]  from anim::@23
  (signed byte) sy#27 ← 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#27 )
  (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 ← (byte) debug_print::print_sbyte_pos1_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos1_$1 ← (byte*) print_screen#2 + (number~) debug_print::print_sbyte_pos1_$0
  (byte*~) debug_print::print_sbyte_pos1_$2 ← (byte*~) debug_print::print_sbyte_pos1_$1 + (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
  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 ← (byte) debug_print::print_sbyte_pos2_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos2_$1 ← (byte*) print_screen#3 + (number~) debug_print::print_sbyte_pos2_$0
  (byte*~) debug_print::print_sbyte_pos2_$2 ← (byte*~) debug_print::print_sbyte_pos2_$1 + (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
  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 ← (const signed byte) sz
  (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 ← (byte) debug_print::print_sbyte_pos3_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos3_$1 ← (byte*) print_screen#4 + (number~) debug_print::print_sbyte_pos3_$0
  (byte*~) debug_print::print_sbyte_pos3_$2 ← (byte*~) debug_print::print_sbyte_pos3_$1 + (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
  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 ← *((const signed byte*) rotation_matrix + (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 ← (byte) debug_print::print_sbyte_pos4_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos4_$1 ← (byte*) print_screen#5 + (number~) debug_print::print_sbyte_pos4_$0
  (byte*~) debug_print::print_sbyte_pos4_$2 ← (byte*~) debug_print::print_sbyte_pos4_$1 + (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
  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 ← *((const signed byte*) rotation_matrix + (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 ← (byte) debug_print::print_sbyte_pos5_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos5_$1 ← (byte*) print_screen#6 + (number~) debug_print::print_sbyte_pos5_$0
  (byte*~) debug_print::print_sbyte_pos5_$2 ← (byte*~) debug_print::print_sbyte_pos5_$1 + (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
  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 ← *((const signed byte*) rotation_matrix + (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 ← (byte) debug_print::print_sbyte_pos6_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos6_$1 ← (byte*) print_screen#7 + (number~) debug_print::print_sbyte_pos6_$0
  (byte*~) debug_print::print_sbyte_pos6_$2 ← (byte*~) debug_print::print_sbyte_pos6_$1 + (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
  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 ← *((const signed byte*) rotation_matrix + (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 ← (byte) debug_print::print_sbyte_pos7_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos7_$1 ← (byte*) print_screen#8 + (number~) debug_print::print_sbyte_pos7_$0
  (byte*~) debug_print::print_sbyte_pos7_$2 ← (byte*~) debug_print::print_sbyte_pos7_$1 + (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
  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 ← *((const signed byte*) rotation_matrix + (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 ← (byte) debug_print::print_sbyte_pos8_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos8_$1 ← (byte*) print_screen#9 + (number~) debug_print::print_sbyte_pos8_$0
  (byte*~) debug_print::print_sbyte_pos8_$2 ← (byte*~) debug_print::print_sbyte_pos8_$1 + (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
  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 ← *((const signed byte*) rotation_matrix + (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 ← (byte) debug_print::print_sbyte_pos9_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos9_$1 ← (byte*) print_screen#10 + (number~) debug_print::print_sbyte_pos9_$0
  (byte*~) debug_print::print_sbyte_pos9_$2 ← (byte*~) debug_print::print_sbyte_pos9_$1 + (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
  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 ← *((const signed byte*) rotation_matrix + (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 ← (byte) debug_print::print_sbyte_pos10_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos10_$1 ← (byte*) print_screen#11 + (number~) debug_print::print_sbyte_pos10_$0
  (byte*~) debug_print::print_sbyte_pos10_$2 ← (byte*~) debug_print::print_sbyte_pos10_$1 + (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
  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 ← *((const signed byte*) rotation_matrix + (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 ← (byte) debug_print::print_sbyte_pos11_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos11_$1 ← (byte*) print_screen#12 + (number~) debug_print::print_sbyte_pos11_$0
  (byte*~) debug_print::print_sbyte_pos11_$2 ← (byte*~) debug_print::print_sbyte_pos11_$1 + (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
  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 ← *((const signed byte*) rotation_matrix + (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 ← (byte) debug_print::print_sbyte_pos12_row#1 * (number) $28
  (byte*~) debug_print::print_sbyte_pos12_$1 ← (byte*) print_screen#13 + (number~) debug_print::print_sbyte_pos12_$0
  (byte*~) debug_print::print_sbyte_pos12_$2 ← (byte*~) debug_print::print_sbyte_pos12_$1 + (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
  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 ← (const byte*) SCREEN + (number) $13*(number) $28
  (byte*) debug_print::at_line#0 ← (byte*~) debug_print::$12
  (byte) debug_print::c#0 ← (byte) 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 ← *((const signed byte*) xrs + (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 ← *((const signed byte*) yrs + (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 ← *((const signed byte*) zrs + (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 ← *((const signed byte*) pps + (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 ← *((const signed byte*) xps + (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 ← *((const signed byte*) yps + (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

(void()) sprites_init()
sprites_init: scope:[sprites_init]  from main
  *((const byte*) SPRITES_ENABLE) ← (number) $ff
  (byte*~) sprites_init::$0 ← (const byte*) sprites_init::SCREEN + (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 ← (const byte*) SPRITE / (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
  *((const byte*) SPRITES_COLS + (byte) sprites_init::i#2) ← (const byte) GREEN
  (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

(void()) calculate_matrix((signed byte) calculate_matrix::sx , (signed byte) calculate_matrix::sy , (signed byte) calculate_matrix::sz)
calculate_matrix: scope:[calculate_matrix]  from anim::@18
  (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 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t2#0)
  *((const signed byte*) rotation_matrix + (number) 0) ← (signed byte~) calculate_matrix::$10
  (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t2#0)
  *((const signed byte*) rotation_matrix + (number) 1) ← (signed byte~) calculate_matrix::$11
  (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::sy#1) + *((const signed byte*) SINH + (signed byte) calculate_matrix::sy#1)
  *((const signed byte*) rotation_matrix + (number) 2) ← (signed byte~) calculate_matrix::$12
  (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t4#0)
  (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t6#0)
  (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t5#0)
  (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t8#0)
  (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t7#0)
  *((const signed byte*) rotation_matrix + (number) 3) ← (signed byte~) calculate_matrix::$17
  (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t4#0)
  (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ + (signed byte) calculate_matrix::t5#0)
  (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t6#0)
  (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t7#0)
  (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t8#0)
  *((const signed byte*) rotation_matrix + (number) 4) ← (signed byte~) calculate_matrix::$22
  (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t10#0)
  *((const signed byte*) rotation_matrix + (number) 5) ← (signed byte~) calculate_matrix::$23
  (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH + (signed byte) calculate_matrix::t3#0)
  (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ + (signed byte) calculate_matrix::t6#0)
  (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t5#0)
  (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t8#0)
  (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ + (signed byte) calculate_matrix::t7#0)
  *((const signed byte*) rotation_matrix + (number) 6) ← (signed byte~) calculate_matrix::$28
  (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH + (signed byte) calculate_matrix::t4#0)
  (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t6#0)
  (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t5#0)
  (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ + (signed byte) calculate_matrix::t7#0)
  (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ + (signed byte) calculate_matrix::t8#0)
  *((const signed byte*) rotation_matrix + (number) 7) ← (signed byte~) calculate_matrix::$33
  (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t10#0)
  *((const signed byte*) rotation_matrix + (number) 8) ← (signed byte~) calculate_matrix::$34
  to:calculate_matrix::@return
calculate_matrix::@return: scope:[calculate_matrix]  from calculate_matrix
  return 
  to:@return

(void()) store_matrix()
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

(void()) rotate_matrix((signed byte) rotate_matrix::x , (signed byte) rotate_matrix::y , (signed byte) rotate_matrix::z)
rotate_matrix: scope:[rotate_matrix]  from anim::@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 )
  *((const signed byte*) xr) ← (signed byte) rotate_matrix::x#1
  *((const signed byte*) yr) ← (signed byte) rotate_matrix::y#1
  *((const signed byte*) zr) ← (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
@51: scope:[]  from @42
  (byte*) print_screen#42 ← phi( @42/(byte*) print_screen#45 )
  (signed byte) sy#18 ← phi( @42/(signed byte) sy#2 )
  (signed byte) sx#17 ← phi( @42/(signed byte) sx#2 )
  kickasm(location (const byte*) SPRITE) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))
    .for (var y=0; y<21; y++)
        .for (var x=0;x<3; x++)
            .byte pic.getSinglecolorByte(x,y)
 }}
  call main 
  to:@52
@52: scope:[]  from @51
  (signed byte) sy#12 ← phi( @51/(signed byte) sy#1 )
  (signed byte) sx#12 ← phi( @51/(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 @52

SYMBOL TABLE SSA
(label) @17
(label) @42
(label) @51
(label) @52
(label) @begin
(label) @end
(const byte*) BORDERCOL = (byte*)(number) $d020
(const signed byte*) COSH = (const signed byte*) SINH+(number) $40
(const signed byte*) COSQ = (const signed byte*) SINQ+(number) $40
(const byte) GREEN = (byte) 5
(const byte) LIGHT_BLUE = (byte) $e
(const byte) LIGHT_GREY = (byte) $f
(const signed byte*) PERSP_Z[(number) $100]  = 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 = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*)(number) $d012
(const byte*) SCREEN = (byte*)(number) $400
(const signed byte*) SINH[(number) $140]  = 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)
    }
    }
 }}
(const signed byte*) SINQ[(number) $140]  = 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)
    }
    }
 }}
(const byte*) SPRITE = (byte*)(number) $3000
(const byte*) SPRITES_COLS = (byte*)(number) $d027
(const byte*) SPRITES_ENABLE = (byte*)(number) $d015
(const byte*) SPRITES_XPOS = (byte*)(number) $d000
(const byte*) SPRITES_YPOS = (byte*)(number) $d001
(void()) anim()
(bool~) anim::$0
(bool~) anim::$1
(number~) anim::$10
(byte~) anim::$11
(number~) anim::$12
(bool~) anim::$13
(bool~) anim::$2
(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
(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_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
(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_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
(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_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
(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_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
(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_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
(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_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
(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_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
(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_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
(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_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
(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_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
(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_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
(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_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
(const byte*) debug_print_init::COLS = (byte*)(number) $d800
(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 byte*) debug_print_init::str[(byte) 3]  = (byte*) "sx"
(const byte*) debug_print_init::str1[(byte) 3]  = (byte*) "sy"
(const byte*) debug_print_init::str10[(byte) 3]  = (byte*) "xp"
(const byte*) debug_print_init::str11[(byte) 3]  = (byte*) "yp"
(const byte*) debug_print_init::str2[(byte) 3]  = (byte*) "sz"
(const byte*) debug_print_init::str3[(byte) 2]  = (byte*) "x"
(const byte*) debug_print_init::str4[(byte) 2]  = (byte*) "y"
(const byte*) debug_print_init::str5[(byte) 2]  = (byte*) "z"
(const byte*) debug_print_init::str6[(byte) 3]  = (byte*) "xr"
(const byte*) debug_print_init::str7[(byte) 3]  = (byte*) "yr"
(const byte*) debug_print_init::str8[(byte) 3]  = (byte*) "zr"
(const byte*) debug_print_init::str9[(byte) 3]  = (byte*) "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
(const byte*) mulf_sqr1[(number) $200]  = 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) }
    }
 }}
(const byte*) mulf_sqr2[(number) $200]  = 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) }  
    }
 }}
(const signed byte*) pp = (signed byte*)(number) $f3
(const signed byte*) pps[(number) 8]  = { fill( 8, 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
(const byte*) print_hextab[]  = (byte*) "0123456789abcdef"z
(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#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
(const word*) psp1 = (word*)(number) $f6
(const word*) psp2 = (word*)(number) $f8
(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
(const signed byte*) rotation_matrix[(number) 9]  = { fill( 9, 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
(const byte*) sprites_init::SCREEN = (byte*)(number) $400
(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#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#4
(signed byte) sy#5
(signed byte) sy#6
(signed byte) sy#7
(signed byte) sy#8
(signed byte) sy#9
(const signed byte) sz = (signed byte) 0
(const signed byte*) xp = (signed byte*)(number) $f4
(const signed byte*) xps[(number) 8]  = { fill( 8, 0) }
(const signed byte*) xr = (signed byte*)(number) $f0
(const signed byte*) xrs[(number) 8]  = { fill( 8, 0) }
(const signed byte*) xs[(number) 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 }
(const signed byte*) yp = (signed byte*)(number) $f5
(const signed byte*) yps[(number) 8]  = { fill( 8, 0) }
(const signed byte*) yr = (signed byte*)(number) $f1
(const signed byte*) yrs[(number) 8]  = { fill( 8, 0) }
(const signed byte*) ys[(number) 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 }
(const signed byte*) zr = (signed byte*)(number) $f2
(const signed byte*) zrs[(number) 8]  = { fill( 8, 0) }
(const signed byte*) zs[(number) 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 }

Adding number conversion cast (unumber) $40 in 
Adding number conversion cast (unumber) $40 in 
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 (unumber) $ff in (bool~) anim::$0 ← *((const byte*) RASTER) != (number) $ff
Adding number conversion cast (unumber) $fe in (bool~) anim::$1 ← *((const byte*) RASTER) != (number) $fe
Adding number conversion cast (unumber) $fd in (bool~) anim::$2 ← *((const byte*) RASTER) != (number) $fd
Adding number conversion cast (unumber) 2 in (number~) anim::$8 ← (byte) anim::i#3 * (number) 2
Adding number conversion cast (unumber) anim::$8 in (number~) anim::$8 ← (byte) anim::i#3 * (unumber)(number) 2
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 (unumber) $80 in (number~) anim::$12 ← (number) $80 + (byte~) anim::$11
Adding number conversion cast (unumber) anim::$12 in (number~) anim::$12 ← (unumber)(number) $80 + (byte~) anim::$11
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 ← (const byte*) SCREEN + (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 ← (const byte*) SCREEN + (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 ← (const byte*) SCREEN + (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 ← (const byte*) SCREEN + (number) $28*(number) $10
Adding number conversion cast (unumber) $28*$11 in (byte*~) debug_print_init::$12 ← (const byte*) SCREEN + (number) $28*(number) $11
Adding number conversion cast (unumber) $28*$12 in (byte*~) debug_print_init::$14 ← (const byte*) SCREEN + (number) $28*(number) $12
Adding number conversion cast (unumber) $28*$13 in (byte*~) debug_print_init::$16 ← (const byte*) SCREEN + (number) $28*(number) $13
Adding number conversion cast (unumber) $28*$14 in (byte*~) debug_print_init::$18 ← (const byte*) SCREEN + (number) $28*(number) $14
Adding number conversion cast (unumber) $28*$15 in (byte*~) debug_print_init::$20 ← (const byte*) SCREEN + (number) $28*(number) $15
Adding number conversion cast (unumber) $28*$16 in (byte*~) debug_print_init::$22 ← (const byte*) SCREEN + (number) $28*(number) $16
Adding number conversion cast (unumber) $28*$17 in (byte*~) debug_print_init::$24 ← (const byte*) SCREEN + (number) $28*(number) $17
Adding number conversion cast (unumber) $28*$18 in (byte*~) debug_print_init::$26 ← (const byte*) SCREEN + (number) $28*(number) $18
Adding number conversion cast (unumber) $10*$28 in (byte*~) debug_print_init::$28 ← (const byte*) SCREEN + (number) $10*(number) $28
Adding number conversion cast (unumber) $10*$28 in (byte*~) debug_print_init::$29 ← (const byte*) debug_print_init::COLS + (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 ← (byte) debug_print::print_sbyte_pos1_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos1_$0 in (number~) debug_print::print_sbyte_pos1_$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 ← (byte) debug_print::print_sbyte_pos2_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos2_$0 in (number~) debug_print::print_sbyte_pos2_$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 ← (byte) debug_print::print_sbyte_pos3_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos3_$0 in (number~) debug_print::print_sbyte_pos3_$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 ← *((const signed byte*) rotation_matrix + (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 ← (byte) debug_print::print_sbyte_pos4_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos4_$0 in (number~) debug_print::print_sbyte_pos4_$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 ← *((const signed byte*) rotation_matrix + (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 ← (byte) debug_print::print_sbyte_pos5_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos5_$0 in (number~) debug_print::print_sbyte_pos5_$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 ← *((const signed byte*) rotation_matrix + (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 ← (byte) debug_print::print_sbyte_pos6_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos6_$0 in (number~) debug_print::print_sbyte_pos6_$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 ← *((const signed byte*) rotation_matrix + (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 ← (byte) debug_print::print_sbyte_pos7_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos7_$0 in (number~) debug_print::print_sbyte_pos7_$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 ← *((const signed byte*) rotation_matrix + (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 ← (byte) debug_print::print_sbyte_pos8_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos8_$0 in (number~) debug_print::print_sbyte_pos8_$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 ← *((const signed byte*) rotation_matrix + (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 ← (byte) debug_print::print_sbyte_pos9_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos9_$0 in (number~) debug_print::print_sbyte_pos9_$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 ← *((const signed byte*) rotation_matrix + (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 ← (byte) debug_print::print_sbyte_pos10_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos10_$0 in (number~) debug_print::print_sbyte_pos10_$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 ← *((const signed byte*) rotation_matrix + (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 ← (byte) debug_print::print_sbyte_pos11_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos11_$0 in (number~) debug_print::print_sbyte_pos11_$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 ← *((const signed byte*) rotation_matrix + (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 ← (byte) debug_print::print_sbyte_pos12_row#1 * (number) $28
Adding number conversion cast (unumber) debug_print::print_sbyte_pos12_$0 in (number~) debug_print::print_sbyte_pos12_$0 ← (byte) debug_print::print_sbyte_pos12_row#1 * (unumber)(number) $28
Adding number conversion cast (unumber) $13*$28 in (byte*~) debug_print::$12 ← (const byte*) SCREEN + (number) $13*(number) $28
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 *((const byte*) SPRITES_ENABLE) ← (number) $ff
Adding number conversion cast (unumber) $3f8 in (byte*~) sprites_init::$0 ← (const byte*) sprites_init::SCREEN + (number) $3f8
Adding number conversion cast (unumber) $40 in (byte*~) sprites_init::$1 ← (const byte*) SPRITE / (number) $40
Adding number conversion cast (unumber) 0 in *((const signed byte*) rotation_matrix + (number) 0) ← (signed byte~) calculate_matrix::$10
Adding number conversion cast (unumber) 1 in *((const signed byte*) rotation_matrix + (number) 1) ← (signed byte~) calculate_matrix::$11
Adding number conversion cast (unumber) 2 in *((const signed byte*) rotation_matrix + (number) 2) ← (signed byte~) calculate_matrix::$12
Adding number conversion cast (unumber) 3 in *((const signed byte*) rotation_matrix + (number) 3) ← (signed byte~) calculate_matrix::$17
Adding number conversion cast (unumber) 4 in *((const signed byte*) rotation_matrix + (number) 4) ← (signed byte~) calculate_matrix::$22
Adding number conversion cast (unumber) 5 in *((const signed byte*) rotation_matrix + (number) 5) ← (signed byte~) calculate_matrix::$23
Adding number conversion cast (unumber) 6 in *((const signed byte*) rotation_matrix + (number) 6) ← (signed byte~) calculate_matrix::$28
Adding number conversion cast (unumber) 7 in *((const signed byte*) rotation_matrix + (number) 7) ← (signed byte~) calculate_matrix::$33
Adding number conversion cast (unumber) 8 in *((const signed byte*) rotation_matrix + (number) 8) ← (signed byte~) calculate_matrix::$34
Successful SSA optimization PassNAddNumberTypeConversions
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_sbyte_at::$1 ← (byte)(signed byte) print_sbyte_at::b#24
Inlining cast (word) memset::num#0 ← (unumber)(number) $3e8
Inlining cast (word~) main::$1 ← (word)(const byte*) mulf_sqr1
Inlining cast (word~) main::$2 ← (word)(const byte*) mulf_sqr2
Inlining cast (byte~) anim::$9 ← (byte)*((const signed byte*) xp)
Inlining cast (byte~) anim::$11 ← (byte)*((const signed byte*) yp)
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 *((const byte*) SPRITES_ENABLE) ← (unumber)(number) $ff
Inlining cast (byte~) sprites_init::$2 ← (byte)(byte*~) sprites_init::$1
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 pointer cast (byte*) 55296
Simplifying constant pointer cast (byte*) 1024
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 pointer cast (byte*) 12288
Simplifying constant integer cast $40
Simplifying constant integer cast $40
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 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 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 $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
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) $40
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 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) 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) $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
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::$8 ← (byte) anim::i#3 * (byte) 2
Inferred type updated to byte in (unumber~) anim::$10 ← (byte) $80 + (byte~) anim::$9
Inferred type updated to byte in (unumber~) anim::$12 ← (byte) $80 + (byte~) anim::$11
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 ← (byte) debug_print::print_sbyte_pos1_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos2_$0 ← (byte) debug_print::print_sbyte_pos2_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos3_$0 ← (byte) debug_print::print_sbyte_pos3_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos4_$0 ← (byte) debug_print::print_sbyte_pos4_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos5_$0 ← (byte) debug_print::print_sbyte_pos5_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos6_$0 ← (byte) debug_print::print_sbyte_pos6_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos7_$0 ← (byte) debug_print::print_sbyte_pos7_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos8_$0 ← (byte) debug_print::print_sbyte_pos8_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos9_$0 ← (byte) debug_print::print_sbyte_pos9_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos10_$0 ← (byte) debug_print::print_sbyte_pos10_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos11_$0 ← (byte) debug_print::print_sbyte_pos11_row#1 * (byte) $28
Inferred type updated to byte in (unumber~) debug_print::print_sbyte_pos12_$0 ← (byte) debug_print::print_sbyte_pos12_row#1 * (byte) $28
Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#1 <= (byte) 0 from [1] (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_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#22 
Alias (signed byte) sy#13 = (signed byte) sy#19 (signed byte) sy#24 
Alias (byte*) print_screen#27 = (byte*) print_screen#40 (byte*) print_screen#54 
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 (byte*) print_screen#0 = (byte*) print_screen#45 (byte*) print_screen#42 
Alias (signed byte) sx#14 = (signed byte) sx#8 (signed byte) sx#26 (signed byte) sx#25 
Alias (signed byte) sy#14 = (signed byte) sy#8 (signed byte) sy#29 (signed byte) sy#28 
Alias (byte*) print_screen#44 = (byte*) print_screen#47 (byte*) print_screen#48 (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#24 (signed byte) sx#9 
Alias (signed byte) sy#15 = (signed byte) sy#22 (signed byte) sy#26 (signed byte) sy#9 
Alias (byte*) print_screen#28 = (byte*) print_screen#41 (byte*) print_screen#43 (byte*) print_screen#53 
Alias (byte) anim::i2#0 = (byte~) anim::$8 
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#27 (signed byte) sy#17 
Alias (byte*) print_sbyte_at::at#3 = (byte*~) debug_print::print_sbyte_pos1_$2 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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) 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) sx#17 = (signed byte) sx#2 
Alias (signed byte) sy#18 = (signed byte) sy#2 
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) 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 (byte*) print_screen#52 (byte*) print_screen#27
Identical Phi Values (signed byte) sx#23 (signed byte) sx#10
Identical Phi Values (signed byte) sy#25 (signed byte) sy#10
Identical Phi Values (byte*) print_screen#50 (byte*) print_screen#51
Identical Phi Values (signed byte) sx#20 (signed byte) sx#23
Identical Phi Values (signed byte) sy#21 (signed byte) sy#25
Identical Phi Values (byte*) print_screen#49 (byte*) print_screen#50
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 (byte*) print_screen#44 (byte*) print_screen#49
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 (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) 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 (byte*) print_screen#51 (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 [2] if((word) memset::num#0<=(byte) 0) goto memset::@1
Simple Condition (bool~) memset::$4 [9] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5
Simple Condition (bool~) print_str_at::$0 [17] if((byte) 0!=*((byte*) print_str_at::str#13)) goto print_str_at::@2
Simple Condition (bool~) print_sbyte_at::$0 [24] if((signed byte) print_sbyte_at::b#22<(signed byte) 0) goto print_sbyte_at::@1
Simple Condition (bool~) anim::$0 [75] if(*((const byte*) RASTER)!=(byte) $ff) goto anim::@4
Simple Condition (bool~) anim::$1 [78] if(*((const byte*) RASTER)!=(byte) $fe) goto anim::@10
Simple Condition (bool~) anim::$2 [81] if(*((const byte*) RASTER)!=(byte) $fd) goto anim::@16
Simple Condition (bool~) anim::$13 [110] if((byte) anim::i#1!=rangelast(0,7)) goto anim::@22
Simple Condition (bool~) debug_print_init::$67 [216] if((byte) debug_print_init::j#1!=rangelast(0,3)) goto debug_print_init::@2
Simple Condition (bool~) debug_print_init::$68 [220] if((byte) debug_print_init::i#1!=rangelast(0,7)) goto debug_print_init::@1
Simple Condition (bool~) debug_print::$31 [350] if((byte) debug_print::i#1!=rangelast(0,7)) goto debug_print::@1
Simple Condition (bool~) sprites_init::$3 [362] if((byte) sprites_init::i#1!=rangelast(0,7)) goto sprites_init::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant right-side identified [60] (word~) main::$1 ← (word)(const byte*) mulf_sqr1
Constant right-side identified [62] (word~) main::$2 ← (word)(const byte*) mulf_sqr2
Constant right-side identified [119] (byte*~) debug_print_init::$1 ← (const byte*) SCREEN + (byte)(number) $28*(number) 0
Constant right-side identified [123] (byte*~) debug_print_init::$4 ← (const byte*) SCREEN + (byte)(number) $28*(number) 1
Constant right-side identified [127] (byte*~) debug_print_init::$7 ← (const byte*) SCREEN + (byte)(number) $28*(number) 2
Constant right-side identified [131] (byte*) print_str_at::at#4 ← (const byte*) SCREEN + (word)(number) $28*(number) $10
Constant right-side identified [134] (byte*) print_str_at::at#5 ← (const byte*) SCREEN + (word)(number) $28*(number) $11
Constant right-side identified [137] (byte*) print_str_at::at#6 ← (const byte*) SCREEN + (word)(number) $28*(number) $12
Constant right-side identified [140] (byte*) print_str_at::at#7 ← (const byte*) SCREEN + (word)(number) $28*(number) $13
Constant right-side identified [143] (byte*) print_str_at::at#8 ← (const byte*) SCREEN + (word)(number) $28*(number) $14
Constant right-side identified [146] (byte*) print_str_at::at#9 ← (const byte*) SCREEN + (word)(number) $28*(number) $15
Constant right-side identified [149] (byte*) print_str_at::at#10 ← (const byte*) SCREEN + (word)(number) $28*(number) $16
Constant right-side identified [152] (byte*) print_str_at::at#11 ← (const byte*) SCREEN + (word)(number) $28*(number) $17
Constant right-side identified [155] (byte*) print_str_at::at#12 ← (const byte*) SCREEN + (word)(number) $28*(number) $18
Constant right-side identified [158] (byte*) debug_print_init::at_line#0 ← (const byte*) SCREEN + (word)(number) $10*(number) $28
Constant right-side identified [160] (byte*) debug_print_init::at_cols#0 ← (const byte*) debug_print_init::COLS + (word)(number) $10*(number) $28
Constant right-side identified [319] (byte*) debug_print::at_line#0 ← (const byte*) SCREEN + (word)(number) $13*(number) $28
Constant right-side identified [353] (byte*) sprites_init::sprites_ptr#0 ← (const byte*) sprites_init::SCREEN + (word) $3f8
Constant right-side identified [356] (byte*~) sprites_init::$1 ← (const byte*) SPRITE / (byte) $40
Successful SSA optimization Pass2ConstantRValueConsolidation
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) memset::c#0 = ' '
Constant (const word) memset::num#0 = $3e8
Constant (const word) main::$1 = (word)mulf_sqr1
Constant (const word) main::$2 = (word)mulf_sqr2
Constant (const signed byte) sx#17 = 0
Constant (const signed byte) sy#18 = 0
Constant (const signed byte) calculate_matrix::sz#0 = sz
Constant (const byte) anim::i#0 = 0
Constant (const byte*) debug_print_init::$1 = SCREEN+(byte)$28*0
Constant (const byte*) print_str_at::str#1 = debug_print_init::str
Constant (const byte*) debug_print_init::$4 = SCREEN+(byte)$28*1
Constant (const byte*) print_str_at::str#2 = debug_print_init::str1
Constant (const byte*) debug_print_init::$7 = SCREEN+(byte)$28*2
Constant (const byte*) print_str_at::str#3 = debug_print_init::str2
Constant (const byte*) print_str_at::at#4 = SCREEN+(word)$28*$10
Constant (const byte*) print_str_at::str#4 = debug_print_init::str3
Constant (const byte*) print_str_at::at#5 = SCREEN+(word)$28*$11
Constant (const byte*) print_str_at::str#5 = debug_print_init::str4
Constant (const byte*) print_str_at::at#6 = SCREEN+(word)$28*$12
Constant (const byte*) print_str_at::str#6 = debug_print_init::str5
Constant (const byte*) print_str_at::at#7 = SCREEN+(word)$28*$13
Constant (const byte*) print_str_at::str#7 = debug_print_init::str6
Constant (const byte*) print_str_at::at#8 = SCREEN+(word)$28*$14
Constant (const byte*) print_str_at::str#8 = debug_print_init::str7
Constant (const byte*) print_str_at::at#9 = SCREEN+(word)$28*$15
Constant (const byte*) print_str_at::str#9 = debug_print_init::str8
Constant (const byte*) print_str_at::at#10 = SCREEN+(word)$28*$16
Constant (const byte*) print_str_at::str#10 = debug_print_init::str9
Constant (const byte*) print_str_at::at#11 = SCREEN+(word)$28*$17
Constant (const byte*) print_str_at::str#11 = debug_print_init::str10
Constant (const byte*) print_str_at::at#12 = SCREEN+(word)$28*$18
Constant (const byte*) print_str_at::str#12 = debug_print_init::str11
Constant (const byte*) debug_print_init::at_line#0 = SCREEN+(word)$10*$28
Constant (const byte) debug_print_init::c#0 = 4
Constant (const byte*) debug_print_init::at_cols#0 = debug_print_init::COLS+(word)$10*$28
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 signed byte) debug_print::print_sbyte_pos3_sb#0 = sz
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::at_line#0 = SCREEN+(word)$13*$28
Constant (const byte) debug_print::c#0 = 4
Constant (const byte) debug_print::i#0 = 0
Constant (const byte*) sprites_init::sprites_ptr#0 = sprites_init::SCREEN+$3f8
Constant (const byte) sprites_init::i#0 = 0
Constant (const byte*) sprites_init::$1 = SPRITE/$40
Successful SSA optimization Pass2ConstantIdentification
Constant (const void*) memset::str#0 = (void*)print_screen#0
Constant (const signed byte) print_sbyte_at::b#6 = debug_print::print_sbyte_pos3_sb#0
Constant (const byte) sprites_init::$2 = (byte)sprites_init::$1
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) memset::$2 = (byte*)memset::str#0
Constant (const byte*) memset::dst#0 = (byte*)memset::str#0
Constant (const void*) memset::return#2 = memset::str#0
Successful SSA optimization Pass2ConstantIdentification
if() condition always false - eliminating [2] if((const word) memset::num#0<=(byte) 0) goto memset::@1
if() condition always true - replacing block destination [72] if(true) goto anim::@4
Successful SSA optimization Pass2ConstantIfs
Resolved ranged next value [108] anim::i#1 ← ++ anim::i#2 to ++
Resolved ranged comparison value [110] if(anim::i#1!=rangelast(0,7)) goto anim::@22 to (number) 8
Resolved ranged next value [214] debug_print_init::j#1 ← ++ debug_print_init::j#2 to ++
Resolved ranged comparison value [216] if(debug_print_init::j#1!=rangelast(0,3)) goto debug_print_init::@2 to (number) 4
Resolved ranged next value [218] debug_print_init::i#1 ← ++ debug_print_init::i#2 to ++
Resolved ranged comparison value [220] if(debug_print_init::i#1!=rangelast(0,7)) goto debug_print_init::@1 to (number) 8
Resolved ranged next value [348] debug_print::i#1 ← ++ debug_print::i#2 to ++
Resolved ranged comparison value [350] if(debug_print::i#1!=rangelast(0,7)) goto debug_print::@1 to (number) 8
Resolved ranged next value [360] sprites_init::i#1 ← ++ sprites_init::i#2 to ++
Resolved ranged comparison value [362] if(sprites_init::i#1!=rangelast(0,7)) goto sprites_init::@1 to (number) 8
Converting *(pointer+n) to pointer[n] [181] *((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] [185] *((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] [189] *((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] [193] *((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] [197] *((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] [201] *((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] [205] *((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] [209] *((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] [213] *((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 
Simplifying constant evaluating to zero (byte)(number) $28*(number) 0 in [163] (byte*~) debug_print_init::$30 ← (const byte*) debug_print_init::at_line#0 + (byte)(number) $28*(number) 0
Simplifying constant evaluating to zero (byte)(number) $28*(number) 0 in [178] (byte*~) debug_print_init::$40 ← (const byte*) debug_print_init::at_cols#0 + (byte)(number) $28*(number) 0
Simplifying constant evaluating to zero (byte)(number) $28*(number) 0 in [323] (byte*~) debug_print::$13 ← (const byte*) debug_print::at_line#0 + (byte)(number) $28*(number) 0
Successful SSA optimization PassNSimplifyConstantZero
Simplifying expression containing zero SCREEN in 
Simplifying expression containing zero debug_print_init::at_line#0 in [163] (byte*~) debug_print_init::$30 ← (const byte*) debug_print_init::at_line#0 + (byte) 0
Simplifying expression containing zero debug_print_init::at_cols#0 in [178] (byte*~) debug_print_init::$40 ← (const byte*) debug_print_init::at_cols#0 + (byte) 0
Simplifying expression containing zero rotation_matrix in [247] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte*) rotation_matrix + (byte) 0)
Simplifying expression containing zero debug_print::at_line#0 in [323] (byte*~) debug_print::$13 ← (const byte*) debug_print::at_line#0 + (byte) 0
Simplifying expression containing zero calculate_matrix::sy#0 in [365] (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 [366] (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 [367] (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 [368] (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 in [376] *((const signed byte*) rotation_matrix + (byte) 0) ← (signed byte~) calculate_matrix::$10
Successful SSA optimization PassNSimplifyExpressionWithZero
Eliminating unused variable (byte*~) debug_print_init::$42 and assignment [115] (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 [119] (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 [123] (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 [127] (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 [131] (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 [135] (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 [139] (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 [143] (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 [147] (byte*~) debug_print_init::$66 ← (byte*~) debug_print_init::$65 + (byte) debug_print_init::j#2
Eliminating unused constant (const void*) memset::return#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
Constant right-side identified [0] (byte*) memset::end#0 ← (const byte*) memset::$2 + (const word) memset::num#0
Constant right-side identified [82] (byte*) print_str_at::at#1 ← (const byte*) debug_print_init::$1 + (byte) $22
Constant right-side identified [84] (byte*) print_str_at::at#2 ← (const byte*) debug_print_init::$4 + (byte) $22
Constant right-side identified [86] (byte*) print_str_at::at#3 ← (const byte*) debug_print_init::$7 + (byte) $22
Constant right-side identified [102] (byte*~) debug_print_init::$33 ← (const byte*) debug_print_init::at_line#0 + (byte)(number) $28*(number) 1
Constant right-side identified [106] (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 [146] (byte~) debug_print::print_sbyte_pos1_$0 ← (const byte) debug_print::print_sbyte_pos1_row#0 * (byte) $28
Constant right-side identified [152] (byte~) debug_print::print_sbyte_pos2_$0 ← (const byte) debug_print::print_sbyte_pos2_row#0 * (byte) $28
Constant right-side identified [157] (byte~) debug_print::print_sbyte_pos3_$0 ← (const byte) debug_print::print_sbyte_pos3_row#0 * (byte) $28
Constant right-side identified [162] (byte~) debug_print::print_sbyte_pos4_$0 ← (const byte) debug_print::print_sbyte_pos4_row#0 * (byte) $28
Constant right-side identified [168] (byte~) debug_print::print_sbyte_pos5_$0 ← (const byte) debug_print::print_sbyte_pos5_row#0 * (byte) $28
Constant right-side identified [174] (byte~) debug_print::print_sbyte_pos6_$0 ← (const byte) debug_print::print_sbyte_pos6_row#0 * (byte) $28
Constant right-side identified [180] (byte~) debug_print::print_sbyte_pos7_$0 ← (const byte) debug_print::print_sbyte_pos7_row#0 * (byte) $28
Constant right-side identified [186] (byte~) debug_print::print_sbyte_pos8_$0 ← (const byte) debug_print::print_sbyte_pos8_row#0 * (byte) $28
Constant right-side identified [192] (byte~) debug_print::print_sbyte_pos9_$0 ← (const byte) debug_print::print_sbyte_pos9_row#0 * (byte) $28
Constant right-side identified [198] (byte~) debug_print::print_sbyte_pos10_$0 ← (const byte) debug_print::print_sbyte_pos10_row#0 * (byte) $28
Constant right-side identified [204] (byte~) debug_print::print_sbyte_pos11_$0 ← (const byte) debug_print::print_sbyte_pos11_row#0 * (byte) $28
Constant right-side identified [210] (byte~) debug_print::print_sbyte_pos12_$0 ← (const byte) debug_print::print_sbyte_pos12_row#0 * (byte) $28
Constant right-side identified [220] (byte*~) debug_print::$16 ← (const byte*) debug_print::at_line#0 + (byte)(number) $28*(number) 1
Constant right-side identified [224] (byte*~) debug_print::$19 ← (const byte*) debug_print::at_line#0 + (byte)(number) $28*(number) 2
Constant right-side identified [228] (byte*~) debug_print::$22 ← (const byte*) debug_print::at_line#0 + (byte)(number) $28*(number) 3
Constant right-side identified [232] (byte*~) debug_print::$25 ← (const byte*) debug_print::at_line#0 + (byte)(number) $28*(number) 4
Constant right-side identified [236] (byte*~) debug_print::$28 ← (const byte*) debug_print::at_line#0 + (byte)(number) $28*(number) 5
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) memset::end#0 = memset::$2+memset::num#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::$30 = debug_print_init::at_line#0
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::$40 = debug_print_init::at_cols#0
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_$0 = debug_print::print_sbyte_pos1_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos2_$0 = debug_print::print_sbyte_pos2_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos3_$0 = debug_print::print_sbyte_pos3_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos4_$0 = debug_print::print_sbyte_pos4_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos5_$0 = debug_print::print_sbyte_pos5_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos6_$0 = debug_print::print_sbyte_pos6_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos7_$0 = debug_print::print_sbyte_pos7_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos8_$0 = debug_print::print_sbyte_pos8_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos9_$0 = debug_print::print_sbyte_pos9_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos10_$0 = debug_print::print_sbyte_pos10_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos11_$0 = debug_print::print_sbyte_pos11_row#0*$28
Constant (const byte) debug_print::print_sbyte_pos12_$0 = debug_print::print_sbyte_pos12_row#0*$28
Constant (const byte*) debug_print::$13 = debug_print::at_line#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
Successful SSA optimization Pass2ConstantIdentification
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 [147] (byte*~) debug_print::print_sbyte_pos1_$1 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos1_$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
Successful SSA optimization PassNEliminateUnusedVars
Constant right-side identified [135] (byte*~) debug_print::print_sbyte_pos2_$1 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos2_$0
Constant right-side identified [139] (byte*~) debug_print::print_sbyte_pos3_$1 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos3_$0
Constant right-side identified [143] (byte*~) debug_print::print_sbyte_pos4_$1 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos4_$0
Constant right-side identified [148] (byte*~) debug_print::print_sbyte_pos5_$1 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos5_$0
Constant right-side identified [153] (byte*~) debug_print::print_sbyte_pos6_$1 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos6_$0
Constant right-side identified [158] (byte*~) debug_print::print_sbyte_pos7_$1 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos7_$0
Constant right-side identified [163] (byte*~) debug_print::print_sbyte_pos8_$1 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos8_$0
Constant right-side identified [168] (byte*~) debug_print::print_sbyte_pos9_$1 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos9_$0
Constant right-side identified [173] (byte*~) debug_print::print_sbyte_pos10_$1 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos10_$0
Constant right-side identified [178] (byte*~) debug_print::print_sbyte_pos11_$1 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos11_$0
Constant right-side identified [183] (byte*~) debug_print::print_sbyte_pos12_$1 ← (const byte*) print_screen#0 + (const byte) debug_print::print_sbyte_pos12_$0
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) debug_print::print_sbyte_pos1_$1 = print_screen#0
Constant (const byte*) debug_print::print_sbyte_pos2_$1 = print_screen#0+debug_print::print_sbyte_pos2_$0
Constant (const byte*) debug_print::print_sbyte_pos3_$1 = print_screen#0+debug_print::print_sbyte_pos3_$0
Constant (const byte*) debug_print::print_sbyte_pos4_$1 = print_screen#0+debug_print::print_sbyte_pos4_$0
Constant (const byte*) debug_print::print_sbyte_pos5_$1 = print_screen#0+debug_print::print_sbyte_pos5_$0
Constant (const byte*) debug_print::print_sbyte_pos6_$1 = print_screen#0+debug_print::print_sbyte_pos6_$0
Constant (const byte*) debug_print::print_sbyte_pos7_$1 = print_screen#0+debug_print::print_sbyte_pos7_$0
Constant (const byte*) debug_print::print_sbyte_pos8_$1 = print_screen#0+debug_print::print_sbyte_pos8_$0
Constant (const byte*) debug_print::print_sbyte_pos9_$1 = print_screen#0+debug_print::print_sbyte_pos9_$0
Constant (const byte*) debug_print::print_sbyte_pos10_$1 = print_screen#0+debug_print::print_sbyte_pos10_$0
Constant (const byte*) debug_print::print_sbyte_pos11_$1 = print_screen#0+debug_print::print_sbyte_pos11_$0
Constant (const byte*) debug_print::print_sbyte_pos12_$1 = print_screen#0+debug_print::print_sbyte_pos12_$0
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [130] (byte*) print_sbyte_at::at#3 ← (const byte*) debug_print::print_sbyte_pos1_$1 + (const byte) debug_print::print_sbyte_pos1_col#0
Constant right-side identified [134] (byte*) print_sbyte_at::at#4 ← (const byte*) debug_print::print_sbyte_pos2_$1 + (const byte) debug_print::print_sbyte_pos2_col#0
Constant right-side identified [137] (byte*) print_sbyte_at::at#5 ← (const byte*) debug_print::print_sbyte_pos3_$1 + (const byte) debug_print::print_sbyte_pos3_col#0
Constant right-side identified [140] (byte*) print_sbyte_at::at#6 ← (const byte*) debug_print::print_sbyte_pos4_$1 + (const byte) debug_print::print_sbyte_pos4_col#0
Constant right-side identified [144] (byte*) print_sbyte_at::at#7 ← (const byte*) debug_print::print_sbyte_pos5_$1 + (const byte) debug_print::print_sbyte_pos5_col#0
Constant right-side identified [148] (byte*) print_sbyte_at::at#8 ← (const byte*) debug_print::print_sbyte_pos6_$1 + (const byte) debug_print::print_sbyte_pos6_col#0
Constant right-side identified [152] (byte*) print_sbyte_at::at#9 ← (const byte*) debug_print::print_sbyte_pos7_$1 + (const byte) debug_print::print_sbyte_pos7_col#0
Constant right-side identified [156] (byte*) print_sbyte_at::at#10 ← (const byte*) debug_print::print_sbyte_pos8_$1 + (const byte) debug_print::print_sbyte_pos8_col#0
Constant right-side identified [160] (byte*) print_sbyte_at::at#11 ← (const byte*) debug_print::print_sbyte_pos9_$1 + (const byte) debug_print::print_sbyte_pos9_col#0
Constant right-side identified [164] (byte*) print_sbyte_at::at#12 ← (const byte*) debug_print::print_sbyte_pos10_$1 + (const byte) debug_print::print_sbyte_pos10_col#0
Constant right-side identified [168] (byte*) print_sbyte_at::at#13 ← (const byte*) debug_print::print_sbyte_pos11_$1 + (const byte) debug_print::print_sbyte_pos11_col#0
Constant right-side identified [172] (byte*) print_sbyte_at::at#14 ← (const byte*) debug_print::print_sbyte_pos12_$1 + (const byte) debug_print::print_sbyte_pos12_col#0
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) print_sbyte_at::at#3 = debug_print::print_sbyte_pos1_$1+debug_print::print_sbyte_pos1_col#0
Constant (const byte*) print_sbyte_at::at#4 = debug_print::print_sbyte_pos2_$1+debug_print::print_sbyte_pos2_col#0
Constant (const byte*) print_sbyte_at::at#5 = debug_print::print_sbyte_pos3_$1+debug_print::print_sbyte_pos3_col#0
Constant (const byte*) print_sbyte_at::at#6 = debug_print::print_sbyte_pos4_$1+debug_print::print_sbyte_pos4_col#0
Constant (const byte*) print_sbyte_at::at#7 = debug_print::print_sbyte_pos5_$1+debug_print::print_sbyte_pos5_col#0
Constant (const byte*) print_sbyte_at::at#8 = debug_print::print_sbyte_pos6_$1+debug_print::print_sbyte_pos6_col#0
Constant (const byte*) print_sbyte_at::at#9 = debug_print::print_sbyte_pos7_$1+debug_print::print_sbyte_pos7_col#0
Constant (const byte*) print_sbyte_at::at#10 = debug_print::print_sbyte_pos8_$1+debug_print::print_sbyte_pos8_col#0
Constant (const byte*) print_sbyte_at::at#11 = debug_print::print_sbyte_pos9_$1+debug_print::print_sbyte_pos9_col#0
Constant (const byte*) print_sbyte_at::at#12 = debug_print::print_sbyte_pos10_$1+debug_print::print_sbyte_pos10_col#0
Constant (const byte*) print_sbyte_at::at#13 = debug_print::print_sbyte_pos11_$1+debug_print::print_sbyte_pos11_col#0
Constant (const byte*) print_sbyte_at::at#14 = debug_print::print_sbyte_pos12_$1+debug_print::print_sbyte_pos12_col#0
Successful SSA optimization Pass2ConstantIdentification
Inlining Noop Cast [67] (byte~) anim::$9 ← (byte)*((const signed byte*) xp) keeping *(xp)
Inlining Noop Cast [70] (byte~) anim::$11 ← (byte)*((const signed byte*) yp) keeping *(yp)
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::at#4
Inlining constant with var siblings (const byte*) print_str_at::str#4
Inlining constant with var siblings (const byte*) print_str_at::at#5
Inlining constant with var siblings (const byte*) print_str_at::str#5
Inlining constant with var siblings (const byte*) print_str_at::at#6
Inlining constant with var siblings (const byte*) print_str_at::str#6
Inlining constant with var siblings (const byte*) print_str_at::at#7
Inlining constant with var siblings (const byte*) print_str_at::str#7
Inlining constant with var siblings (const byte*) print_str_at::at#8
Inlining constant with var siblings (const byte*) print_str_at::str#8
Inlining constant with var siblings (const byte*) print_str_at::at#9
Inlining constant with var siblings (const byte*) print_str_at::str#9
Inlining constant with var siblings (const byte*) print_str_at::at#10
Inlining constant with var siblings (const byte*) print_str_at::str#10
Inlining constant with var siblings (const byte*) print_str_at::at#11
Inlining constant with var siblings (const byte*) print_str_at::str#11
Inlining constant with var siblings (const byte*) print_str_at::at#12
Inlining constant with var siblings (const byte*) print_str_at::str#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_pos9_$0 = (const byte) debug_print::print_sbyte_pos9_row#0*(byte) $28
Constant inlined print_str_at::str#12 = (const byte*) debug_print_init::str11
Constant inlined print_str_at::str#11 = (const byte*) debug_print_init::str10
Constant inlined print_str_at::str#10 = (const byte*) 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_pos9_$1 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_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::print_sbyte_pos1_$1 = (const byte*) print_screen#0
Constant inlined debug_print_init::$30 = (const byte*) debug_print_init::at_line#0
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 sprites_init::i#0 = (byte) 0
Constant inlined debug_print::$13 = (const byte*) debug_print::at_line#0
Constant inlined debug_print::print_sbyte_pos12_$0 = (const byte) debug_print::print_sbyte_pos12_row#0*(byte) $28
Constant inlined debug_print::print_sbyte_pos6_$0 = (const byte) debug_print::print_sbyte_pos6_row#0*(byte) $28
Constant inlined debug_print::print_sbyte_pos12_$1 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte) $28
Constant inlined debug_print::print_sbyte_pos6_$1 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte) $28
Constant inlined debug_print_init::j#0 = (byte) 0
Constant inlined print_str_at::str#1 = (const byte*) debug_print_init::str
Constant inlined print_str_at::str#2 = (const byte*) debug_print_init::str1
Constant inlined print_str_at::str#3 = (const byte*) debug_print_init::str2
Constant inlined print_str_at::str#4 = (const byte*) debug_print_init::str3
Constant inlined debug_print::print_sbyte_pos3_sb#0 = (const signed byte) sz
Constant inlined print_str_at::at#11 = (const byte*) SCREEN+(word)(number) $28*(number) $17
Constant inlined print_str_at::at#10 = (const byte*) SCREEN+(word)(number) $28*(number) $16
Constant inlined print_str_at::at#12 = (const byte*) SCREEN+(word)(number) $28*(number) $18
Constant inlined debug_print::print_sbyte_pos3_$1 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte) $28
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_pos3_$0 = (const byte) debug_print::print_sbyte_pos3_row#0*(byte) $28
Constant inlined debug_print::print_sbyte_pos11_$0 = (const byte) debug_print::print_sbyte_pos11_row#0*(byte) $28
Constant inlined print_char_at::ch#0 = (byte) '-'
Constant inlined debug_print::print_sbyte_pos11_$1 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte) $28
Constant inlined print_char_at::ch#1 = (byte) ' '
Constant inlined print_str_at::str#9 = (const byte*) 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 print_str_at::str#5 = (const byte*) 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 byte*) debug_print_init::str5
Constant inlined print_str_at::str#7 = (const byte*) debug_print_init::str6
Constant inlined print_str_at::str#8 = (const byte*) 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 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*) mulf_sqr1
Constant inlined debug_print_init::$49 = (const byte*) debug_print_init::at_cols#0+(byte)(number) $28*(number) 3
Constant inlined debug_print::print_sbyte_pos8_$1 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte) $28
Constant inlined main::$2 = (word)(const byte*) mulf_sqr2
Constant inlined debug_print::print_sbyte_pos8_$0 = (const byte) debug_print::print_sbyte_pos8_row#0*(byte) $28
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_init::$40 = (const byte*) debug_print_init::at_cols#0
Constant inlined print_str_at::at#4 = (const byte*) SCREEN+(word)(number) $28*(number) $10
Constant inlined print_str_at::at#3 = (const byte*) SCREEN+(byte)(number) $28*(number) 2+(byte) $22
Constant inlined print_str_at::at#2 = (const byte*) SCREEN+(byte)(number) $28*(number) 1+(byte) $22
Constant inlined print_str_at::at#1 = (const byte*) SCREEN+(byte) $22
Constant inlined debug_print_init::$7 = (const byte*) SCREEN+(byte)(number) $28*(number) 2
Constant inlined print_str_at::at#9 = (const byte*) SCREEN+(word)(number) $28*(number) $15
Constant inlined print_str_at::at#8 = (const byte*) SCREEN+(word)(number) $28*(number) $14
Constant inlined print_str_at::at#7 = (const byte*) SCREEN+(word)(number) $28*(number) $13
Constant inlined print_str_at::at#6 = (const byte*) SCREEN+(word)(number) $28*(number) $12
Constant inlined anim::i#0 = (byte) 0
Constant inlined print_str_at::at#5 = (const byte*) SCREEN+(word)(number) $28*(number) $11
Constant inlined sx#17 = (signed byte) 0
Constant inlined debug_print::print_sbyte_pos5_$1 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte) $28
Constant inlined debug_print::print_sbyte_pos5_$0 = (const byte) debug_print::print_sbyte_pos5_row#0*(byte) $28
Constant inlined print_sbyte_at::b#6 = (const signed byte) sz
Constant inlined debug_print_init::$1 = (const byte*) SCREEN
Constant inlined debug_print_init::$4 = (const byte*) SCREEN+(byte)(number) $28*(number) 1
Constant inlined debug_print::print_sbyte_pos2_$0 = (const byte) debug_print::print_sbyte_pos2_row#0*(byte) $28
Constant inlined debug_print::print_sbyte_pos2_$1 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte) $28
Constant inlined sprites_init::$1 = (const byte*) SPRITE/(byte) $40
Constant inlined sprites_init::$2 = (byte)(const byte*) SPRITE/(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::$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 memset::$2 = (byte*)(const void*) memset::str#0
Constant inlined debug_print::print_sbyte_pos7_$0 = (const byte) debug_print::print_sbyte_pos7_row#0*(byte) $28
Constant inlined debug_print::print_sbyte_pos7_$1 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte) $28
Constant inlined debug_print::print_sbyte_pos10_$1 = (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_init::c#0 = (byte) 4
Constant inlined debug_print::print_sbyte_pos4_$1 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte) $28
Constant inlined debug_print::print_sbyte_pos4_$0 = (const byte) debug_print::print_sbyte_pos4_row#0*(byte) $28
Constant inlined debug_print::print_sbyte_pos10_$0 = (const byte) debug_print::print_sbyte_pos10_row#0*(byte) $28
Constant inlined debug_print::i#0 = (byte) 0
Successful SSA optimization Pass2ConstantInlining
Consolidated array index constant in *(rotation_matrix+1)
Consolidated array index constant in *(rotation_matrix+2)
Consolidated array index constant in *(rotation_matrix+3)
Consolidated array index constant in *(rotation_matrix+4)
Consolidated array index constant in *(rotation_matrix+5)
Consolidated array index constant in *(rotation_matrix+6)
Consolidated array index constant in *(rotation_matrix+7)
Consolidated array index constant in *(rotation_matrix+8)
Consolidated array index constant in *(rotation_matrix+1)
Consolidated array index constant in *(rotation_matrix+2)
Consolidated array index constant in *(rotation_matrix+3)
Consolidated array index constant in *(rotation_matrix+4)
Consolidated array index constant in *(rotation_matrix+5)
Consolidated array index constant in *(rotation_matrix+6)
Consolidated array index constant in *(rotation_matrix+7)
Consolidated array index constant in *(rotation_matrix+8)
Successful SSA optimization Pass2ConstantAdditionElimination
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 @17
Adding NOP phi() at start of @42
Adding NOP phi() at start of @52
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::@1
CALL GRAPH
Calls in [] to main:4 
Calls in [main] to sprites_init:8 debug_print_init:11 anim:13 
Calls in [anim] to calculate_matrix:24 store_matrix:26 rotate_matrix:33 debug_print:48 
Calls in [debug_print] to print_sbyte_at:58 print_sbyte_at:63 print_sbyte_at:67 print_sbyte_at:72 print_sbyte_at:77 print_sbyte_at:82 print_sbyte_at:87 print_sbyte_at:92 print_sbyte_at:97 print_sbyte_at:102 print_sbyte_at:107 print_sbyte_at:112 print_sbyte_at:120 print_sbyte_at:125 print_sbyte_at:130 print_sbyte_at:135 print_sbyte_at:140 print_sbyte_at:145 
Calls in [print_sbyte_at] to print_char_at:156 print_byte_at:161 print_char_at:166 
Calls in [print_byte_at] to print_char_at:177 print_char_at:183 
Calls in [debug_print_init] to print_cls:239 print_str_at:241 print_str_at:243 print_str_at:245 print_str_at:247 print_str_at:249 print_str_at:251 print_str_at:253 print_str_at:255 print_str_at:257 print_str_at:259 print_str_at:261 print_str_at:263 print_sbyte_at:270 print_sbyte_at:275 print_sbyte_at:280 
Calls in [print_cls] to memset:323 

Created 19 initial phi equivalence classes
Coalesced [52] sx#27 ← sx#3
Coalesced [53] sy#30 ← sy#3
Coalesced [54] anim::i#4 ← anim::i#1
Coalesced [57] print_sbyte_at::b#34 ← print_sbyte_at::b#4
Coalesced [62] print_sbyte_at::b#38 ← print_sbyte_at::b#5
Coalesced [71] print_sbyte_at::b#39 ← print_sbyte_at::b#7
Coalesced [76] print_sbyte_at::b#40 ← print_sbyte_at::b#8
Coalesced [81] print_sbyte_at::b#41 ← print_sbyte_at::b#9
Coalesced [86] print_sbyte_at::b#42 ← print_sbyte_at::b#10
Coalesced [91] print_sbyte_at::b#43 ← print_sbyte_at::b#11
Coalesced [96] print_sbyte_at::b#44 ← print_sbyte_at::b#12
Coalesced [101] print_sbyte_at::b#35 ← print_sbyte_at::b#13
Coalesced [106] print_sbyte_at::b#36 ← print_sbyte_at::b#14
Coalesced [111] print_sbyte_at::b#37 ← print_sbyte_at::b#15
Coalesced [118] print_sbyte_at::b#28 ← print_sbyte_at::b#16
Coalesced [119] print_sbyte_at::at#27 ← print_sbyte_at::at#15
Coalesced [123] print_sbyte_at::b#29 ← print_sbyte_at::b#17
Coalesced [124] print_sbyte_at::at#28 ← print_sbyte_at::at#16
Coalesced [128] print_sbyte_at::b#30 ← print_sbyte_at::b#18
Coalesced [129] print_sbyte_at::at#29 ← print_sbyte_at::at#17
Coalesced [133] print_sbyte_at::b#31 ← print_sbyte_at::b#19
Coalesced [134] print_sbyte_at::at#30 ← print_sbyte_at::at#18
Coalesced [138] print_sbyte_at::b#32 ← print_sbyte_at::b#20
Coalesced [139] print_sbyte_at::at#31 ← print_sbyte_at::at#19
Coalesced [143] print_sbyte_at::b#33 ← print_sbyte_at::b#21
Coalesced [144] print_sbyte_at::at#32 ← print_sbyte_at::at#20
Coalesced [150] debug_print::c#9 ← debug_print::c#1
Coalesced [151] debug_print::i#9 ← debug_print::i#1
Coalesced [155] print_char_at::at#8 ← print_char_at::at#1
Coalesced [157] print_sbyte_at::b#49 ← print_sbyte_at::b#22
Coalesced [165] print_char_at::at#7 ← print_char_at::at#0
Coalesced [168] print_sbyte_at::b#48 ← print_sbyte_at::b#0
Coalesced [175] print_char_at::ch#5 ← print_char_at::ch#2
Coalesced [176] print_char_at::at#5 ← print_char_at::at#2
Coalesced [181] print_char_at::ch#6 ← print_char_at::ch#3
Coalesced [182] print_char_at::at#6 ← print_char_at::at#3
Coalesced [268] print_sbyte_at::b#45 ← print_sbyte_at::b#1
Coalesced [269] print_sbyte_at::at#33 ← print_sbyte_at::at#0
Coalesced [273] print_sbyte_at::b#46 ← print_sbyte_at::b#2
Coalesced [274] print_sbyte_at::at#34 ← print_sbyte_at::at#1
Coalesced [278] print_sbyte_at::b#47 ← print_sbyte_at::b#3
Coalesced [279] print_sbyte_at::at#35 ← print_sbyte_at::at#2
Coalesced [308] debug_print_init::c#8 ← debug_print_init::c#1
Coalesced [309] debug_print_init::i#8 ← debug_print_init::i#1
Coalesced [310] debug_print_init::j#3 ← debug_print_init::j#1
Coalesced [312] print_str_at::str#16 ← print_str_at::str#15
Coalesced [313] print_str_at::at#16 ← print_str_at::at#15
Coalesced [320] print_str_at::str#17 ← print_str_at::str#0
Coalesced [321] print_str_at::at#17 ← print_str_at::at#0
Coalesced [334] memset::dst#4 ← memset::dst#1
Coalesced [342] sprites_init::i#3 ← sprites_init::i#1
Coalesced down to 16 phi equivalence classes
Culled Empty Block (label) @17
Culled Empty Block (label) @42
Culled Empty Block (label) @52
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::@1
Culled Empty Block (label) sprites_init::@3
Renumbering block @51 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) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))
    .for (var y=0; y<21; y++)
        .for (var x=0;x<3; x++)
            .byte pic.getSinglecolorByte(x,y)
 }}
  [2] call main 
  to:@end
@end: scope:[]  from @1
  [3] phi()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
(void()) anim()
(byte~) anim::$10 202.0
(byte~) anim::$12 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
(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
(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
(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
(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
(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
(byte) debug_print::print_sbyte_pos3_col
(byte) debug_print::print_sbyte_pos3_row
(signed byte) debug_print::print_sbyte_pos3_sb
(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
(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
(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
(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
(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
(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::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 22.0
(byte*) memset::dst#2 14.666666666666666
(byte*) memset::end
(word) memset::num
(void*) memset::return
(void*) memset::str
(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()
(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
(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
(void()) sprites_init()
(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

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

INITIAL ASM
Target platform is c64basic / MOS6502X
  // 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
  // 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 print_screen = $400
  .label sx = 2
  .label sy = 3
  // @begin
__bbegin:
  jmp __b1
  // @1
__b1:
  // kickasm(location (const byte*) SPRITE) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))     .for (var y=0; y<21; y++)         .for (var x=0;x<3; x++)             .byte pic.getSinglecolorByte(x,y)  }}
  // [2] call main 
  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) ← (word)(const byte*) mulf_sqr1 -- _deref_pwuc1=vwuc2 
    //mulf_init();
    lda #<mulf_sqr1
    sta psp1
    lda #>mulf_sqr1
    sta psp1+1
    // [7] *((const word*) psp2) ← (word)(const byte*) mulf_sqr2 -- _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 __10 = $1d
    .label __12 = $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)!=(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)!=(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)!=(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) ← ++ *((const byte*) BORDERCOL) -- _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) ← ++ *((const byte*) BORDERCOL) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
    // [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte*) xs + (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*) ys + (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*) zs + (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*) xrs + (byte) anim::i#2) ← *((const signed byte*) xr) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    //if(*xr<xmin) xmin = *xr;
    //if(*xr>xmax) xmax = *xr;
    lda xr
    ldy.z i
    sta xrs,y
    // [30] *((const signed byte*) yrs + (byte) anim::i#2) ← *((const signed byte*) yr) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda yr
    ldy.z i
    sta yrs,y
    // [31] *((const signed byte*) zrs + (byte) anim::i#2) ← *((const signed byte*) zr) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda zr
    ldy.z i
    sta zrs,y
    // [32] *((const signed byte*) pps + (byte) anim::i#2) ← *((const signed byte*) pp) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda pp
    ldy.z i
    sta pps,y
    // [33] *((const signed byte*) xps + (byte) anim::i#2) ← *((const signed byte*) xp) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda xp
    ldy.z i
    sta xps,y
    // [34] *((const signed byte*) yps + (byte) anim::i#2) ← *((const signed byte*) yp) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda yp
    ldy.z i
    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::$10 ← (byte) $80 + (byte)*((const signed byte*) xp) -- vbuz1=vbuc1_plus__deref_pbuc2 
    lda #$80
    clc
    adc xp
    sta.z __10
    // [37] *((const byte*) SPRITES_XPOS + (byte) anim::i2#0) ← (byte~) anim::$10 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z __10
    ldy.z i2
    sta SPRITES_XPOS,y
    // [38] (byte~) anim::$12 ← (byte) $80 + (byte)*((const signed byte*) yp) -- vbuz1=vbuc1_plus__deref_pbuc2 
    lda #$80
    clc
    adc yp
    sta.z __12
    // [39] *((const byte*) SPRITES_YPOS + (byte) anim::i2#0) ← (byte~) anim::$12 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z __12
    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) ← (const byte) LIGHT_GREY -- _deref_pbuc1=vbuc2 
    lda #LIGHT_GREY
    sta BORDERCOL
    // [43] call debug_print 
    jsr debug_print
    jmp __b10
    // anim::@10
  __b10:
    // [44] *((const byte*) BORDERCOL) ← (const byte) LIGHT_BLUE -- _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 [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*) rotation_matrix) -- 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*) rotation_matrix+(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*) rotation_matrix+(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*) rotation_matrix+(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*) rotation_matrix+(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*) rotation_matrix+(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*) rotation_matrix+(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*) rotation_matrix+(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*) rotation_matrix+(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*) xrs + (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*) yrs + (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*) zrs + (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*) pps + (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*) xps + (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*) yps + (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 zp(9) b, byte* zp(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 zp($a) ch, byte* zp($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 zp($2a) b, byte* zp($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 + (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 + (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 zp($19) x, signed byte zp($1a) y, signed byte zp($1b) z)
rotate_matrix: {
    .label x = $19
    .label y = $1a
    .label z = $1b
    // [129] *((const signed byte*) xr) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsz1 
    lda.z x
    sta xr
    // [130] *((const signed byte*) yr) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsz1 
    lda.z y
    sta yr
    // [131] *((const signed byte*) zr) ← (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 zp($17) sx, signed byte zp($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 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH + (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*) rotation_matrix) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsz1 
    lda.z __10
    sta rotation_matrix
    // [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t2#0) -- 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*) rotation_matrix+(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*) SINH + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH + (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*) rotation_matrix+(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*) SINH + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH + (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 + (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 + (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 + (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 + (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*) rotation_matrix+(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 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) rotation_matrix+(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*) SINH + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH + (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*) rotation_matrix+(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 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) rotation_matrix+(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*) SINH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH + (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 + (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 + (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 + (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 + (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*) rotation_matrix+(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 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH + (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*) rotation_matrix+(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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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*) xs + (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*) ys + (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*) zs + (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* zp($10) str, byte* zp($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::@1 [phi:memset->memset::@1]
  __b1_from_memset:
    // [254] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    jmp __b1
    // memset::@1
  __b1:
    // [255] if((byte*) memset::dst#2!=(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
    jmp __breturn
    // memset::@return
  __breturn:
    // [256] return 
    rts
    // memset::@2
  __b2:
    // [257] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // [258] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // [254] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1]
  __b1_from___b2:
    // [254] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy 
    jmp __b1
}
  // sprites_init
// Initialize sprites
sprites_init: {
    .label SCREEN = $400
    .label sprites_ptr = SCREEN+$3f8
    .label i = $16
    // [259] *((const byte*) SPRITES_ENABLE) ← (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/(byte) $40 -- pbuc1_derefidx_vbuz1=vbuc2 
    lda #SPRITE/$40
    ldy.z i
    sta sprites_ptr,y
    // [262] *((const byte*) SPRITES_COLS + (byte) sprites_init::i#2) ← (const byte) GREEN -- 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) ← (word)(const byte*) mulf_sqr1 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [7] *((const word*) psp2) ← (word)(const byte*) mulf_sqr2 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [14] if(*((const byte*) RASTER)!=(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[1]:2 [ sx#10 sx#3 ]
Removing always clobbered register reg byte a as potential for zp[1]:3 [ sy#10 sy#3 ]
Statement [15] if(*((const byte*) RASTER)!=(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)!=(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*) xrs + (byte) anim::i#2) ← *((const signed byte*) xr) [ 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[1]:4 [ anim::i#2 anim::i#1 ]
Statement [30] *((const signed byte*) yrs + (byte) anim::i#2) ← *((const signed byte*) yr) [ 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*) zrs + (byte) anim::i#2) ← *((const signed byte*) zr) [ 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*) pps + (byte) anim::i#2) ← *((const signed byte*) pp) [ 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*) xps + (byte) anim::i#2) ← *((const signed byte*) xp) [ 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*) yps + (byte) anim::i#2) ← *((const signed byte*) yp) [ 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::$10 ← (byte) $80 + (byte)*((const signed byte*) xp) [ 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 
Removing always clobbered register reg byte a as potential for zp[1]:28 [ anim::i2#0 ]
Statement [38] (byte~) anim::$12 ← (byte) $80 + (byte)*((const signed byte*) yp) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$12 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$12 ] ) always clobbers reg byte a 
Statement [42] *((const byte*) BORDERCOL) ← (const byte) LIGHT_GREY [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [44] *((const byte*) BORDERCOL) ← (const byte) LIGHT_BLUE [ 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[1]:5 [ debug_print::c#2 debug_print::c#1 ]
Removing always clobbered register reg byte a as potential for zp[1]: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[1]: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[1]:13 [ debug_print_init::c#2 debug_print_init::c#1 ]
Removing always clobbered register reg byte a as potential for zp[1]: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[1]: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[1]:2 [ sx#10 sx#3 ]
Removing always clobbered register reg byte y as potential for zp[1]:3 [ sy#10 sy#3 ]
Removing always clobbered register reg byte y as potential for zp[1]: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[1]:5 [ debug_print::c#2 debug_print::c#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:6 [ debug_print::i#2 debug_print::i#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:13 [ debug_print_init::c#2 debug_print_init::c#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 ]
Removing always clobbered register reg byte y as potential for zp[1]: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[1]: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[1]: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[1]:2 [ sx#10 sx#3 ]
Removing always clobbered register reg byte x as potential for zp[1]:3 [ sy#10 sy#3 ]
Removing always clobbered register reg byte x as potential for zp[1]:4 [ anim::i#2 anim::i#1 ]
Removing always clobbered register reg byte y as potential for zp[1]: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[1]:23 [ calculate_matrix::sx#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:24 [ calculate_matrix::sy#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:47 [ calculate_matrix::t1#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:48 [ calculate_matrix::t2#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:49 [ calculate_matrix::t3#0 ]
Removing always clobbered register reg byte a as potential for zp[1]: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[1]: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[1]: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[1]: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[1]: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[1]:55 [ calculate_matrix::t9#0 ]
Statement [146] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t2#0) [ 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[1]:56 [ calculate_matrix::t10#0 ]
Statement [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t2#0) [ 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*) SINH + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH + (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*) SINH + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH + (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 + (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 + (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 + (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 + (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 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) SINH + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH + (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 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) SINH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH + (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 + (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 + (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 + (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 + (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 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH + (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[1]: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[1]: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[1]: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] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#2 ] ) always clobbers reg byte a 
Statement [257] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y 
Statement [259] *((const byte*) SPRITES_ENABLE) ← (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/(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[1]:22 [ sprites_init::i#2 sprites_init::i#1 ]
Statement [262] *((const byte*) SPRITES_COLS + (byte) sprites_init::i#2) ← (const byte) GREEN [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a 
Statement [6] *((const word*) psp1) ← (word)(const byte*) mulf_sqr1 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [7] *((const word*) psp2) ← (word)(const byte*) mulf_sqr2 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [14] if(*((const byte*) RASTER)!=(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)!=(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)!=(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*) xs + (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*) ys + (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[1]:25 [ rotate_matrix::x#0 ]
Statement [27] (signed byte) rotate_matrix::z#0 ← *((const signed byte*) zs + (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[1]:26 [ rotate_matrix::y#0 ]
Statement [29] *((const signed byte*) xrs + (byte) anim::i#2) ← *((const signed byte*) xr) [ 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*) yrs + (byte) anim::i#2) ← *((const signed byte*) yr) [ 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*) zrs + (byte) anim::i#2) ← *((const signed byte*) zr) [ 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*) pps + (byte) anim::i#2) ← *((const signed byte*) pp) [ 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*) xps + (byte) anim::i#2) ← *((const signed byte*) xp) [ 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*) yps + (byte) anim::i#2) ← *((const signed byte*) yp) [ 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::$10 ← (byte) $80 + (byte)*((const signed byte*) xp) [ 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 [38] (byte~) anim::$12 ← (byte) $80 + (byte)*((const signed byte*) yp) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$12 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$12 ] ) 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) ← (const byte) LIGHT_GREY [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [44] *((const byte*) BORDERCOL) ← (const byte) LIGHT_BLUE [ 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[1]: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 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH + (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*) SINH + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH + (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*) SINH + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH + (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*) SINH + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH + (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 + (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 + (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 + (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 + (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 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) SINH + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH + (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 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) SINH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH + (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 + (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 + (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 + (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 + (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 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH + (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*) xs + (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*) ys + (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*) zs + (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] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#2 ] ) always clobbers reg byte a 
Statement [257] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y 
Statement [259] *((const byte*) SPRITES_ENABLE) ← (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/(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 + (byte) sprites_init::i#2) ← (const byte) GREEN [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a 
Statement [6] *((const word*) psp1) ← (word)(const byte*) mulf_sqr1 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [7] *((const word*) psp2) ← (word)(const byte*) mulf_sqr2 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [14] if(*((const byte*) RASTER)!=(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)!=(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)!=(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*) xs + (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*) ys + (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*) zs + (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*) xrs + (byte) anim::i#2) ← *((const signed byte*) xr) [ 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*) yrs + (byte) anim::i#2) ← *((const signed byte*) yr) [ 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*) zrs + (byte) anim::i#2) ← *((const signed byte*) zr) [ 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*) pps + (byte) anim::i#2) ← *((const signed byte*) pp) [ 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*) xps + (byte) anim::i#2) ← *((const signed byte*) xp) [ 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*) yps + (byte) anim::i#2) ← *((const signed byte*) yp) [ 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::$10 ← (byte) $80 + (byte)*((const signed byte*) xp) [ 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 [38] (byte~) anim::$12 ← (byte) $80 + (byte)*((const signed byte*) yp) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$12 ] ( main:2::anim:10 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$12 ] ) 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) ← (const byte) LIGHT_GREY [ sx#10 sy#10 ] ( main:2::anim:10 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [44] *((const byte*) BORDERCOL) ← (const byte) LIGHT_BLUE [ 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*) xrs + (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*) yrs + (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*) zrs + (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*) pps + (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*) xps + (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*) yps + (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 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH + (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*) SINH + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH + (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*) SINH + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH + (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*) SINH + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH + (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 + (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 + (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 + (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 + (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 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) SINH + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH + (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 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) SINH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH + (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 + (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 + (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 + (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 + (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 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH + (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*) xs + (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*) ys + (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*) zs + (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] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2 [ memset::dst#2 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#2 ] ) always clobbers reg byte a 
Statement [257] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::debug_print_init:8::print_cls:182::memset:251 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y 
Statement [259] *((const byte*) SPRITES_ENABLE) ← (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/(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 + (byte) sprites_init::i#2) ← (const byte) GREEN [ sprites_init::i#2 ] ( main:2::sprites_init:5 [ sprites_init::i#2 ] ) always clobbers reg byte a 
Potential registers zp[1]:2 [ sx#10 sx#3 ] : zp[1]:2 , 
Potential registers zp[1]:3 [ sy#10 sy#3 ] : zp[1]:3 , 
Potential registers zp[1]:4 [ anim::i#2 anim::i#1 ] : zp[1]:4 , 
Potential registers zp[1]:5 [ debug_print::c#2 debug_print::c#1 ] : zp[1]:5 , reg byte x , 
Potential registers zp[1]:6 [ debug_print::i#2 debug_print::i#1 ] : zp[1]:6 , 
Potential registers zp[2]: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[2]:7 , 
Potential registers zp[1]: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[1]:9 , reg byte x , 
Potential registers zp[1]:10 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] : zp[1]:10 , reg byte x , reg byte y , 
Potential registers zp[2]: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[2]:11 , 
Potential registers zp[1]:13 [ debug_print_init::c#2 debug_print_init::c#1 ] : zp[1]:13 , reg byte x , 
Potential registers zp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 ] : zp[1]:14 , 
Potential registers zp[1]:15 [ debug_print_init::j#2 debug_print_init::j#1 ] : zp[1]:15 , reg byte x , reg byte y , 
Potential registers zp[2]:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] : zp[2]:16 , 
Potential registers zp[2]:18 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] : zp[2]:18 , 
Potential registers zp[2]:20 [ memset::dst#2 memset::dst#1 ] : zp[2]:20 , 
Potential registers zp[1]:22 [ sprites_init::i#2 sprites_init::i#1 ] : zp[1]:22 , reg byte x , reg byte y , 
Potential registers zp[1]:23 [ calculate_matrix::sx#0 ] : zp[1]:23 , reg byte x , reg byte y , 
Potential registers zp[1]:24 [ calculate_matrix::sy#0 ] : zp[1]:24 , reg byte x , reg byte y , 
Potential registers zp[1]:25 [ rotate_matrix::x#0 ] : zp[1]:25 , reg byte a , reg byte x , 
Potential registers zp[1]:26 [ rotate_matrix::y#0 ] : zp[1]:26 , reg byte a , reg byte x , 
Potential registers zp[1]:27 [ rotate_matrix::z#0 ] : zp[1]:27 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:28 [ anim::i2#0 ] : zp[1]:28 , reg byte x , reg byte y , 
Potential registers zp[1]:29 [ anim::$10 ] : zp[1]:29 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:30 [ anim::$12 ] : zp[1]:30 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:31 [ debug_print::print_sbyte_pos1_sb#0 ] : zp[1]:31 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:32 [ debug_print::print_sbyte_pos2_sb#0 ] : zp[1]:32 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:33 [ debug_print::print_sbyte_pos4_sb#0 ] : zp[1]:33 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:34 [ debug_print::print_sbyte_pos5_sb#0 ] : zp[1]:34 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:35 [ debug_print::print_sbyte_pos6_sb#0 ] : zp[1]:35 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:36 [ debug_print::print_sbyte_pos7_sb#0 ] : zp[1]:36 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:37 [ debug_print::print_sbyte_pos8_sb#0 ] : zp[1]:37 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:38 [ debug_print::print_sbyte_pos9_sb#0 ] : zp[1]:38 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:39 [ debug_print::print_sbyte_pos10_sb#0 ] : zp[1]:39 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:40 [ debug_print::print_sbyte_pos11_sb#0 ] : zp[1]:40 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:41 [ debug_print::print_sbyte_pos12_sb#0 ] : zp[1]:41 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:42 [ print_byte_at::b#0 ] : zp[1]:42 , reg byte x , 
Potential registers zp[2]:43 [ print_byte_at::at#0 ] : zp[2]:43 , 
Potential registers zp[1]:45 [ print_byte_at::$0 ] : zp[1]:45 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:46 [ print_byte_at::$2 ] : zp[1]:46 , reg byte x , reg byte y , 
Potential registers zp[1]:47 [ calculate_matrix::t1#0 ] : zp[1]:47 , reg byte x , reg byte y , 
Potential registers zp[1]:48 [ calculate_matrix::t2#0 ] : zp[1]:48 , reg byte x , reg byte y , 
Potential registers zp[1]:49 [ calculate_matrix::t3#0 ] : zp[1]:49 , reg byte x , reg byte y , 
Potential registers zp[1]:50 [ calculate_matrix::t4#0 ] : zp[1]:50 , reg byte x , reg byte y , 
Potential registers zp[1]:51 [ calculate_matrix::t5#0 ] : zp[1]:51 , reg byte x , reg byte y , 
Potential registers zp[1]:52 [ calculate_matrix::t6#0 ] : zp[1]:52 , reg byte x , reg byte y , 
Potential registers zp[1]:53 [ calculate_matrix::t7#0 ] : zp[1]:53 , reg byte x , reg byte y , 
Potential registers zp[1]:54 [ calculate_matrix::t8#0 ] : zp[1]:54 , reg byte x , reg byte y , 
Potential registers zp[1]:55 [ calculate_matrix::t9#0 ] : zp[1]:55 , reg byte x , reg byte y , 
Potential registers zp[1]:56 [ calculate_matrix::t10#0 ] : zp[1]:56 , reg byte x , reg byte y , 
Potential registers zp[1]:57 [ calculate_matrix::$10 ] : zp[1]:57 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:58 [ calculate_matrix::$11 ] : zp[1]:58 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:59 [ calculate_matrix::$12 ] : zp[1]:59 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:60 [ calculate_matrix::$13 ] : zp[1]:60 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:61 [ calculate_matrix::$14 ] : zp[1]:61 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:62 [ calculate_matrix::$15 ] : zp[1]:62 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:63 [ calculate_matrix::$16 ] : zp[1]:63 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:64 [ calculate_matrix::$17 ] : zp[1]:64 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:65 [ calculate_matrix::$18 ] : zp[1]:65 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:66 [ calculate_matrix::$19 ] : zp[1]:66 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:67 [ calculate_matrix::$20 ] : zp[1]:67 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:68 [ calculate_matrix::$21 ] : zp[1]:68 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:69 [ calculate_matrix::$22 ] : zp[1]:69 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:70 [ calculate_matrix::$23 ] : zp[1]:70 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:71 [ calculate_matrix::$24 ] : zp[1]:71 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:72 [ calculate_matrix::$25 ] : zp[1]:72 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:73 [ calculate_matrix::$26 ] : zp[1]:73 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:74 [ calculate_matrix::$27 ] : zp[1]:74 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:75 [ calculate_matrix::$28 ] : zp[1]:75 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:76 [ calculate_matrix::$29 ] : zp[1]:76 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:77 [ calculate_matrix::$30 ] : zp[1]:77 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:78 [ calculate_matrix::$31 ] : zp[1]:78 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:79 [ calculate_matrix::$32 ] : zp[1]:79 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:80 [ calculate_matrix::$33 ] : zp[1]:80 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:81 [ calculate_matrix::$34 ] : zp[1]:81 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:82 [ debug_print_init::col#0 ] : zp[1]:82 , reg byte x , reg byte y , 
Potential registers zp[2]:83 [ debug_print_init::$41 ] : zp[2]:83 , 
Potential registers zp[2]:85 [ debug_print_init::$44 ] : zp[2]:85 , 
Potential registers zp[2]:87 [ debug_print_init::$47 ] : zp[2]:87 , 
Potential registers zp[2]:89 [ debug_print_init::$50 ] : zp[2]:89 , 
Potential registers zp[2]:91 [ debug_print_init::$53 ] : zp[2]:91 , 
Potential registers zp[2]:93 [ debug_print_init::$56 ] : zp[2]:93 , 
Potential registers zp[2]:95 [ debug_print_init::$59 ] : zp[2]:95 , 
Potential registers zp[2]:97 [ debug_print_init::$62 ] : zp[2]:97 , 
Potential registers zp[2]:99 [ debug_print_init::$65 ] : zp[2]:99 , 

REGISTER UPLIFT SCOPES
Uplift Scope [print_sbyte_at] 1,441.17: zp[1]: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[2]: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[1]:15 [ debug_print_init::j#2 debug_print_init::j#1 ] 202: zp[2]:83 [ debug_print_init::$41 ] 202: zp[2]:85 [ debug_print_init::$44 ] 202: zp[2]:87 [ debug_print_init::$47 ] 202: zp[2]:89 [ debug_print_init::$50 ] 202: zp[2]:91 [ debug_print_init::$53 ] 202: zp[2]:93 [ debug_print_init::$56 ] 202: zp[2]:95 [ debug_print_init::$59 ] 202: zp[2]:97 [ debug_print_init::$62 ] 202: zp[2]:99 [ debug_print_init::$65 ] 56.11: zp[1]:82 [ debug_print_init::col#0 ] 37.46: zp[1]:13 [ debug_print_init::c#2 debug_print_init::c#1 ] 21.23: zp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 ] 
Uplift Scope [anim] 222.79: zp[1]:4 [ anim::i#2 anim::i#1 ] 202: zp[1]:29 [ anim::$10 ] 202: zp[1]:30 [ anim::$12 ] 75.75: zp[1]:28 [ anim::i2#0 ] 
Uplift Scope [debug_print] 191.9: zp[1]:6 [ debug_print::i#2 debug_print::i#1 ] 109.86: zp[1]:5 [ debug_print::c#2 debug_print::c#1 ] 4: zp[1]:31 [ debug_print::print_sbyte_pos1_sb#0 ] 4: zp[1]:32 [ debug_print::print_sbyte_pos2_sb#0 ] 4: zp[1]:33 [ debug_print::print_sbyte_pos4_sb#0 ] 4: zp[1]:34 [ debug_print::print_sbyte_pos5_sb#0 ] 4: zp[1]:35 [ debug_print::print_sbyte_pos6_sb#0 ] 4: zp[1]:36 [ debug_print::print_sbyte_pos7_sb#0 ] 4: zp[1]:37 [ debug_print::print_sbyte_pos8_sb#0 ] 4: zp[1]:38 [ debug_print::print_sbyte_pos9_sb#0 ] 4: zp[1]:39 [ debug_print::print_sbyte_pos10_sb#0 ] 4: zp[1]:40 [ debug_print::print_sbyte_pos11_sb#0 ] 4: zp[1]:41 [ debug_print::print_sbyte_pos12_sb#0 ] 
Uplift Scope [calculate_matrix] 4: zp[1]:57 [ calculate_matrix::$10 ] 4: zp[1]:58 [ calculate_matrix::$11 ] 4: zp[1]:59 [ calculate_matrix::$12 ] 4: zp[1]:60 [ calculate_matrix::$13 ] 4: zp[1]:61 [ calculate_matrix::$14 ] 4: zp[1]:62 [ calculate_matrix::$15 ] 4: zp[1]:63 [ calculate_matrix::$16 ] 4: zp[1]:64 [ calculate_matrix::$17 ] 4: zp[1]:65 [ calculate_matrix::$18 ] 4: zp[1]:66 [ calculate_matrix::$19 ] 4: zp[1]:67 [ calculate_matrix::$20 ] 4: zp[1]:68 [ calculate_matrix::$21 ] 4: zp[1]:69 [ calculate_matrix::$22 ] 4: zp[1]:70 [ calculate_matrix::$23 ] 4: zp[1]:71 [ calculate_matrix::$24 ] 4: zp[1]:72 [ calculate_matrix::$25 ] 4: zp[1]:73 [ calculate_matrix::$26 ] 4: zp[1]:74 [ calculate_matrix::$27 ] 4: zp[1]:75 [ calculate_matrix::$28 ] 4: zp[1]:76 [ calculate_matrix::$29 ] 4: zp[1]:77 [ calculate_matrix::$30 ] 4: zp[1]:78 [ calculate_matrix::$31 ] 4: zp[1]:79 [ calculate_matrix::$32 ] 4: zp[1]:80 [ calculate_matrix::$33 ] 4: zp[1]:81 [ calculate_matrix::$34 ] 2.45: zp[1]:23 [ calculate_matrix::sx#0 ] 1.53: zp[1]:24 [ calculate_matrix::sy#0 ] 0.91: zp[1]:48 [ calculate_matrix::t2#0 ] 0.83: zp[1]:47 [ calculate_matrix::t1#0 ] 0.31: zp[1]:52 [ calculate_matrix::t6#0 ] 0.3: zp[1]:50 [ calculate_matrix::t4#0 ] 0.3: zp[1]:53 [ calculate_matrix::t7#0 ] 0.3: zp[1]:54 [ calculate_matrix::t8#0 ] 0.29: zp[1]:49 [ calculate_matrix::t3#0 ] 0.29: zp[1]:51 [ calculate_matrix::t5#0 ] 0.18: zp[1]:56 [ calculate_matrix::t10#0 ] 0.18: zp[1]:55 [ calculate_matrix::t9#0 ] 
Uplift Scope [rotate_matrix] 34.33: zp[1]:25 [ rotate_matrix::x#0 ] 34.33: zp[1]:26 [ rotate_matrix::y#0 ] 34.33: zp[1]:27 [ rotate_matrix::z#0 ] 
Uplift Scope [print_str_at] 35.5: zp[2]:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] 24.67: zp[2]:18 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] 
Uplift Scope [memset] 36.67: zp[2]:20 [ memset::dst#2 memset::dst#1 ] 
Uplift Scope [print_char_at] 24: zp[2]: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[1]:10 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] 
Uplift Scope [] 22.38: zp[1]:3 [ sy#10 sy#3 ] 11.39: zp[1]:2 [ sx#10 sx#3 ] 
Uplift Scope [sprites_init] 31.17: zp[1]:22 [ sprites_init::i#2 sprites_init::i#1 ] 
Uplift Scope [print_byte_at] 4: zp[1]:45 [ print_byte_at::$0 ] 2: zp[1]:46 [ print_byte_at::$2 ] 1: zp[1]:42 [ print_byte_at::b#0 ] 1: zp[2]: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 79731 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[2]: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 74931 combination reg byte y [ debug_print_init::j#2 debug_print_init::j#1 ] zp[2]:83 [ debug_print_init::$41 ] zp[2]:85 [ debug_print_init::$44 ] zp[2]:87 [ debug_print_init::$47 ] zp[2]:89 [ debug_print_init::$50 ] zp[2]:91 [ debug_print_init::$53 ] zp[2]:93 [ debug_print_init::$56 ] zp[2]:95 [ debug_print_init::$59 ] zp[2]:97 [ debug_print_init::$62 ] zp[2]:99 [ debug_print_init::$65 ] reg byte x [ debug_print_init::col#0 ] zp[1]:13 [ debug_print_init::c#2 debug_print_init::c#1 ] zp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 ] 
Uplifting [anim] best 73031 combination zp[1]:4 [ anim::i#2 anim::i#1 ] reg byte a [ anim::$10 ] reg byte a [ anim::$12 ] reg byte x [ anim::i2#0 ] 
Uplifting [debug_print] best 73013 combination zp[1]:6 [ debug_print::i#2 debug_print::i#1 ] zp[1]: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[1]:34 [ debug_print::print_sbyte_pos5_sb#0 ] zp[1]:35 [ debug_print::print_sbyte_pos6_sb#0 ] zp[1]:36 [ debug_print::print_sbyte_pos7_sb#0 ] zp[1]:37 [ debug_print::print_sbyte_pos8_sb#0 ] zp[1]:38 [ debug_print::print_sbyte_pos9_sb#0 ] zp[1]:39 [ debug_print::print_sbyte_pos10_sb#0 ] zp[1]:40 [ debug_print::print_sbyte_pos11_sb#0 ] zp[1]:41 [ debug_print::print_sbyte_pos12_sb#0 ] 
Limited combination testing to 100 combinations of 8388608 possible.
Uplifting [rotate_matrix] best 72712 combination reg byte x [ rotate_matrix::x#0 ] zp[1]:26 [ rotate_matrix::y#0 ] zp[1]:27 [ rotate_matrix::z#0 ] 
Uplifting [print_str_at] best 72712 combination zp[2]:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] zp[2]:18 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] 
Uplifting [memset] best 72712 combination zp[2]:20 [ memset::dst#2 memset::dst#1 ] 
Uplifting [print_char_at] best 72699 combination zp[2]: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 72699 combination zp[1]:3 [ sy#10 sy#3 ] zp[1]:2 [ sx#10 sx#3 ] 
Uplifting [sprites_init] best 72549 combination reg byte x [ sprites_init::i#2 sprites_init::i#1 ] 
Uplifting [print_byte_at] best 72536 combination reg byte y [ print_byte_at::$0 ] reg byte x [ print_byte_at::$2 ] reg byte x [ print_byte_at::b#0 ] zp[2]:43 [ print_byte_at::at#0 ] 
Uplifting [RADIX] best 72536 combination 
Uplifting [print_cls] best 72536 combination 
Uplifting [main] best 72536 combination 
Uplifting [store_matrix] best 72536 combination 
Attempting to uplift remaining variables inzp[1]:4 [ anim::i#2 anim::i#1 ]
Uplifting [anim] best 72536 combination zp[1]:4 [ anim::i#2 anim::i#1 ] 
Attempting to uplift remaining variables inzp[1]:6 [ debug_print::i#2 debug_print::i#1 ]
Uplifting [debug_print] best 72536 combination zp[1]:6 [ debug_print::i#2 debug_print::i#1 ] 
Attempting to uplift remaining variables inzp[1]:5 [ debug_print::c#2 debug_print::c#1 ]
Uplifting [debug_print] best 72536 combination zp[1]:5 [ debug_print::c#2 debug_print::c#1 ] 
Attempting to uplift remaining variables inzp[1]:13 [ debug_print_init::c#2 debug_print_init::c#1 ]
Uplifting [debug_print_init] best 72536 combination zp[1]:13 [ debug_print_init::c#2 debug_print_init::c#1 ] 
Attempting to uplift remaining variables inzp[1]:26 [ rotate_matrix::y#0 ]
Uplifting [rotate_matrix] best 72536 combination zp[1]:26 [ rotate_matrix::y#0 ] 
Attempting to uplift remaining variables inzp[1]:27 [ rotate_matrix::z#0 ]
Uplifting [rotate_matrix] best 72536 combination zp[1]:27 [ rotate_matrix::z#0 ] 
Attempting to uplift remaining variables inzp[1]:3 [ sy#10 sy#3 ]
Uplifting [] best 72536 combination zp[1]:3 [ sy#10 sy#3 ] 
Attempting to uplift remaining variables inzp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 ]
Uplifting [debug_print_init] best 72536 combination zp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 ] 
Attempting to uplift remaining variables inzp[1]:2 [ sx#10 sx#3 ]
Uplifting [] best 72536 combination zp[1]:2 [ sx#10 sx#3 ] 
Attempting to uplift remaining variables inzp[1]:34 [ debug_print::print_sbyte_pos5_sb#0 ]
Uplifting [debug_print] best 72530 combination reg byte x [ debug_print::print_sbyte_pos5_sb#0 ] 
Attempting to uplift remaining variables inzp[1]:35 [ debug_print::print_sbyte_pos6_sb#0 ]
Uplifting [debug_print] best 72524 combination reg byte x [ debug_print::print_sbyte_pos6_sb#0 ] 
Attempting to uplift remaining variables inzp[1]:36 [ debug_print::print_sbyte_pos7_sb#0 ]
Uplifting [debug_print] best 72518 combination reg byte x [ debug_print::print_sbyte_pos7_sb#0 ] 
Attempting to uplift remaining variables inzp[1]:37 [ debug_print::print_sbyte_pos8_sb#0 ]
Uplifting [debug_print] best 72512 combination reg byte x [ debug_print::print_sbyte_pos8_sb#0 ] 
Attempting to uplift remaining variables inzp[1]:38 [ debug_print::print_sbyte_pos9_sb#0 ]
Uplifting [debug_print] best 72506 combination reg byte x [ debug_print::print_sbyte_pos9_sb#0 ] 
Attempting to uplift remaining variables inzp[1]:39 [ debug_print::print_sbyte_pos10_sb#0 ]
Uplifting [debug_print] best 72500 combination reg byte x [ debug_print::print_sbyte_pos10_sb#0 ] 
Attempting to uplift remaining variables inzp[1]:40 [ debug_print::print_sbyte_pos11_sb#0 ]
Uplifting [debug_print] best 72494 combination reg byte x [ debug_print::print_sbyte_pos11_sb#0 ] 
Attempting to uplift remaining variables inzp[1]:41 [ debug_print::print_sbyte_pos12_sb#0 ]
Uplifting [debug_print] best 72488 combination reg byte x [ debug_print::print_sbyte_pos12_sb#0 ] 
Attempting to uplift remaining variables inzp[1]:57 [ calculate_matrix::$10 ]
Uplifting [calculate_matrix] best 72482 combination reg byte a [ calculate_matrix::$10 ] 
Attempting to uplift remaining variables inzp[1]:58 [ calculate_matrix::$11 ]
Uplifting [calculate_matrix] best 72476 combination reg byte a [ calculate_matrix::$11 ] 
Attempting to uplift remaining variables inzp[1]:59 [ calculate_matrix::$12 ]
Uplifting [calculate_matrix] best 72470 combination reg byte a [ calculate_matrix::$12 ] 
Attempting to uplift remaining variables inzp[1]:60 [ calculate_matrix::$13 ]
Uplifting [calculate_matrix] best 72464 combination reg byte a [ calculate_matrix::$13 ] 
Attempting to uplift remaining variables inzp[1]:61 [ calculate_matrix::$14 ]
Uplifting [calculate_matrix] best 72458 combination reg byte a [ calculate_matrix::$14 ] 
Attempting to uplift remaining variables inzp[1]:62 [ calculate_matrix::$15 ]
Uplifting [calculate_matrix] best 72452 combination reg byte a [ calculate_matrix::$15 ] 
Attempting to uplift remaining variables inzp[1]:63 [ calculate_matrix::$16 ]
Uplifting [calculate_matrix] best 72446 combination reg byte a [ calculate_matrix::$16 ] 
Attempting to uplift remaining variables inzp[1]:64 [ calculate_matrix::$17 ]
Uplifting [calculate_matrix] best 72440 combination reg byte a [ calculate_matrix::$17 ] 
Attempting to uplift remaining variables inzp[1]:65 [ calculate_matrix::$18 ]
Uplifting [calculate_matrix] best 72434 combination reg byte a [ calculate_matrix::$18 ] 
Attempting to uplift remaining variables inzp[1]:66 [ calculate_matrix::$19 ]
Uplifting [calculate_matrix] best 72428 combination reg byte a [ calculate_matrix::$19 ] 
Attempting to uplift remaining variables inzp[1]:67 [ calculate_matrix::$20 ]
Uplifting [calculate_matrix] best 72422 combination reg byte a [ calculate_matrix::$20 ] 
Attempting to uplift remaining variables inzp[1]:68 [ calculate_matrix::$21 ]
Uplifting [calculate_matrix] best 72416 combination reg byte a [ calculate_matrix::$21 ] 
Attempting to uplift remaining variables inzp[1]:69 [ calculate_matrix::$22 ]
Uplifting [calculate_matrix] best 72410 combination reg byte a [ calculate_matrix::$22 ] 
Attempting to uplift remaining variables inzp[1]:70 [ calculate_matrix::$23 ]
Uplifting [calculate_matrix] best 72404 combination reg byte a [ calculate_matrix::$23 ] 
Attempting to uplift remaining variables inzp[1]:71 [ calculate_matrix::$24 ]
Uplifting [calculate_matrix] best 72398 combination reg byte a [ calculate_matrix::$24 ] 
Attempting to uplift remaining variables inzp[1]:72 [ calculate_matrix::$25 ]
Uplifting [calculate_matrix] best 72392 combination reg byte a [ calculate_matrix::$25 ] 
Attempting to uplift remaining variables inzp[1]:73 [ calculate_matrix::$26 ]
Uplifting [calculate_matrix] best 72386 combination reg byte a [ calculate_matrix::$26 ] 
Attempting to uplift remaining variables inzp[1]:74 [ calculate_matrix::$27 ]
Uplifting [calculate_matrix] best 72380 combination reg byte a [ calculate_matrix::$27 ] 
Attempting to uplift remaining variables inzp[1]:75 [ calculate_matrix::$28 ]
Uplifting [calculate_matrix] best 72374 combination reg byte a [ calculate_matrix::$28 ] 
Attempting to uplift remaining variables inzp[1]:76 [ calculate_matrix::$29 ]
Uplifting [calculate_matrix] best 72368 combination reg byte a [ calculate_matrix::$29 ] 
Attempting to uplift remaining variables inzp[1]:77 [ calculate_matrix::$30 ]
Uplifting [calculate_matrix] best 72362 combination reg byte a [ calculate_matrix::$30 ] 
Attempting to uplift remaining variables inzp[1]:78 [ calculate_matrix::$31 ]
Uplifting [calculate_matrix] best 72356 combination reg byte a [ calculate_matrix::$31 ] 
Attempting to uplift remaining variables inzp[1]:79 [ calculate_matrix::$32 ]
Uplifting [calculate_matrix] best 72350 combination reg byte a [ calculate_matrix::$32 ] 
Attempting to uplift remaining variables inzp[1]:80 [ calculate_matrix::$33 ]
Uplifting [calculate_matrix] best 72344 combination reg byte a [ calculate_matrix::$33 ] 
Attempting to uplift remaining variables inzp[1]:81 [ calculate_matrix::$34 ]
Uplifting [calculate_matrix] best 72338 combination reg byte a [ calculate_matrix::$34 ] 
Attempting to uplift remaining variables inzp[1]:23 [ calculate_matrix::sx#0 ]
Uplifting [calculate_matrix] best 72300 combination reg byte x [ calculate_matrix::sx#0 ] 
Attempting to uplift remaining variables inzp[1]:24 [ calculate_matrix::sy#0 ]
Uplifting [calculate_matrix] best 72300 combination zp[1]:24 [ calculate_matrix::sy#0 ] 
Attempting to uplift remaining variables inzp[1]:48 [ calculate_matrix::t2#0 ]
Uplifting [calculate_matrix] best 72300 combination zp[1]:48 [ calculate_matrix::t2#0 ] 
Attempting to uplift remaining variables inzp[1]:47 [ calculate_matrix::t1#0 ]
Uplifting [calculate_matrix] best 72300 combination zp[1]:47 [ calculate_matrix::t1#0 ] 
Attempting to uplift remaining variables inzp[1]:52 [ calculate_matrix::t6#0 ]
Uplifting [calculate_matrix] best 72300 combination zp[1]:52 [ calculate_matrix::t6#0 ] 
Attempting to uplift remaining variables inzp[1]:50 [ calculate_matrix::t4#0 ]
Uplifting [calculate_matrix] best 72300 combination zp[1]:50 [ calculate_matrix::t4#0 ] 
Attempting to uplift remaining variables inzp[1]:53 [ calculate_matrix::t7#0 ]
Uplifting [calculate_matrix] best 72300 combination zp[1]:53 [ calculate_matrix::t7#0 ] 
Attempting to uplift remaining variables inzp[1]:54 [ calculate_matrix::t8#0 ]
Uplifting [calculate_matrix] best 72300 combination zp[1]:54 [ calculate_matrix::t8#0 ] 
Attempting to uplift remaining variables inzp[1]:49 [ calculate_matrix::t3#0 ]
Uplifting [calculate_matrix] best 72300 combination zp[1]:49 [ calculate_matrix::t3#0 ] 
Attempting to uplift remaining variables inzp[1]:51 [ calculate_matrix::t5#0 ]
Uplifting [calculate_matrix] best 72300 combination zp[1]:51 [ calculate_matrix::t5#0 ] 
Attempting to uplift remaining variables inzp[1]:56 [ calculate_matrix::t10#0 ]
Uplifting [calculate_matrix] best 72293 combination reg byte x [ calculate_matrix::t10#0 ] 
Attempting to uplift remaining variables inzp[1]:55 [ calculate_matrix::t9#0 ]
Uplifting [calculate_matrix] best 72293 combination zp[1]:55 [ calculate_matrix::t9#0 ] 
Coalescing zero page register [ zp[2]: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[2]: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[1]:3 [ sy#10 sy#3 ] ] with [ zp[1]:24 [ calculate_matrix::sy#0 ] ] - score: 1
Coalescing zero page register [ zp[2]: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[2]:43 [ print_byte_at::at#0 ] ] - score: 1
Coalescing zero page register [ zp[1]:5 [ debug_print::c#2 debug_print::c#1 ] ] with [ zp[1]:4 [ anim::i#2 anim::i#1 ] ]
Coalescing zero page register [ zp[1]:13 [ debug_print_init::c#2 debug_print_init::c#1 ] ] with [ zp[1]:2 [ sx#10 sx#3 ] ]
Coalescing zero page register [ zp[1]:14 [ debug_print_init::i#2 debug_print_init::i#1 ] ] with [ zp[1]:3 [ sy#10 sy#3 calculate_matrix::sy#0 ] ]
Coalescing zero page register [ zp[2]:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] ] with [ zp[2]: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[2]:20 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:18 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] ]
Coalescing zero page register [ zp[1]:26 [ rotate_matrix::y#0 ] ] with [ zp[1]:6 [ debug_print::i#2 debug_print::i#1 ] ]
Coalescing zero page register [ zp[1]:47 [ calculate_matrix::t1#0 ] ] with [ zp[1]:27 [ rotate_matrix::z#0 ] ]
Coalescing zero page register [ zp[1]:48 [ calculate_matrix::t2#0 ] ] with [ zp[1]:5 [ debug_print::c#2 debug_print::c#1 anim::i#2 anim::i#1 ] ]
Coalescing zero page register [ zp[1]:49 [ calculate_matrix::t3#0 ] ] with [ zp[1]:26 [ rotate_matrix::y#0 debug_print::i#2 debug_print::i#1 ] ]
Coalescing zero page register [ zp[2]:83 [ debug_print_init::$41 ] ] with [ zp[2]: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[2]:85 [ debug_print_init::$44 ] ] with [ zp[2]:20 [ memset::dst#2 memset::dst#1 print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] ]
Allocated (was zp[1]:13) zp[1]:2 [ debug_print_init::c#2 debug_print_init::c#1 sx#10 sx#3 ]
Allocated (was zp[1]:14) zp[1]:3 [ debug_print_init::i#2 debug_print_init::i#1 sy#10 sy#3 calculate_matrix::sy#0 ]
Allocated (was zp[1]:47) zp[1]:4 [ calculate_matrix::t1#0 rotate_matrix::z#0 ]
Allocated (was zp[1]:48) zp[1]:5 [ calculate_matrix::t2#0 debug_print::c#2 debug_print::c#1 anim::i#2 anim::i#1 ]
Allocated (was zp[1]:49) zp[1]:6 [ calculate_matrix::t3#0 rotate_matrix::y#0 debug_print::i#2 debug_print::i#1 ]
Allocated (was zp[1]:50) zp[1]:7 [ calculate_matrix::t4#0 ]
Allocated (was zp[1]:51) zp[1]:8 [ calculate_matrix::t5#0 ]
Allocated (was zp[1]:52) zp[1]:9 [ calculate_matrix::t6#0 ]
Allocated (was zp[1]:53) zp[1]:10 [ calculate_matrix::t7#0 ]
Allocated (was zp[1]:54) zp[1]:11 [ calculate_matrix::t8#0 ]
Allocated (was zp[1]:55) zp[1]:12 [ calculate_matrix::t9#0 ]
Allocated (was zp[2]:83) zp[2]: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[2]:85) zp[2]:15 [ debug_print_init::$44 memset::dst#2 memset::dst#1 print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ]
Allocated (was zp[2]:87) zp[2]:17 [ debug_print_init::$47 ]
Allocated (was zp[2]:89) zp[2]:19 [ debug_print_init::$50 ]
Allocated (was zp[2]:91) zp[2]:21 [ debug_print_init::$53 ]
Allocated (was zp[2]:93) zp[2]:23 [ debug_print_init::$56 ]
Allocated (was zp[2]:95) zp[2]:25 [ debug_print_init::$59 ]
Allocated (was zp[2]:97) zp[2]:27 [ debug_print_init::$62 ]
Allocated (was zp[2]:99) zp[2]: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
  // 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 print_screen = $400
  .label sx = 2
  .label sy = 3
  // @begin
__bbegin:
  jmp __b1
  // @1
__b1:
  // kickasm(location (const byte*) SPRITE) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))     .for (var y=0; y<21; y++)         .for (var x=0;x<3; x++)             .byte pic.getSinglecolorByte(x,y)  }}
  // [2] call main 
  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) ← (word)(const byte*) mulf_sqr1 -- _deref_pwuc1=vwuc2 
    //mulf_init();
    lda #<mulf_sqr1
    sta psp1
    lda #>mulf_sqr1
    sta psp1+1
    // [7] *((const word*) psp2) ← (word)(const byte*) mulf_sqr2 -- _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)!=(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)!=(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)!=(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) ← ++ *((const byte*) BORDERCOL) -- _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) ← ++ *((const byte*) BORDERCOL) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
    // [25] (signed byte) rotate_matrix::x#0 ← *((const signed byte*) xs + (byte) anim::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx xs,y
    // [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte*) ys + (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*) zs + (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*) xrs + (byte) anim::i#2) ← *((const signed byte*) xr) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    //if(*xr<xmin) xmin = *xr;
    //if(*xr>xmax) xmax = *xr;
    lda xr
    ldy.z i
    sta xrs,y
    // [30] *((const signed byte*) yrs + (byte) anim::i#2) ← *((const signed byte*) yr) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda yr
    ldy.z i
    sta yrs,y
    // [31] *((const signed byte*) zrs + (byte) anim::i#2) ← *((const signed byte*) zr) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda zr
    ldy.z i
    sta zrs,y
    // [32] *((const signed byte*) pps + (byte) anim::i#2) ← *((const signed byte*) pp) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda pp
    ldy.z i
    sta pps,y
    // [33] *((const signed byte*) xps + (byte) anim::i#2) ← *((const signed byte*) xp) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda xp
    ldy.z i
    sta xps,y
    // [34] *((const signed byte*) yps + (byte) anim::i#2) ← *((const signed byte*) yp) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda yp
    ldy.z i
    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::$10 ← (byte) $80 + (byte)*((const signed byte*) xp) -- vbuaa=vbuc1_plus__deref_pbuc2 
    lda #$80
    clc
    adc xp
    // [37] *((const byte*) SPRITES_XPOS + (byte) anim::i2#0) ← (byte~) anim::$10 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SPRITES_XPOS,x
    // [38] (byte~) anim::$12 ← (byte) $80 + (byte)*((const signed byte*) yp) -- vbuaa=vbuc1_plus__deref_pbuc2 
    lda #$80
    clc
    adc yp
    // [39] *((const byte*) SPRITES_YPOS + (byte) anim::i2#0) ← (byte~) anim::$12 -- 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) ← (const byte) LIGHT_GREY -- _deref_pbuc1=vbuc2 
    lda #LIGHT_GREY
    sta BORDERCOL
    // [43] call debug_print 
    jsr debug_print
    jmp __b10
    // anim::@10
  __b10:
    // [44] *((const byte*) BORDERCOL) ← (const byte) LIGHT_BLUE -- _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 [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*) rotation_matrix) -- 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*) rotation_matrix+(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*) rotation_matrix+(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*) rotation_matrix+(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*) rotation_matrix+(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*) rotation_matrix+(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*) rotation_matrix+(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*) rotation_matrix+(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*) rotation_matrix+(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*) xrs + (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*) yrs + (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*) zrs + (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*) pps + (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*) xps + (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*) yps + (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* zp($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* zp($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* zp($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 + (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 + (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 zp(6) y, signed byte zp(4) z)
rotate_matrix: {
    .label y = 6
    .label z = 4
    // [129] *((const signed byte*) xr) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsxx 
    txa
    sta xr
    // [130] *((const signed byte*) yr) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsz1 
    lda.z y
    sta yr
    // [131] *((const signed byte*) zr) ← (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 zp(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 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH + (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*) rotation_matrix) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix
    // [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t2#0) -- 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*) rotation_matrix+(byte) 1) ← (signed byte~) calculate_matrix::$11 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+1
    // [150] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH + (signed byte) calculate_matrix::sy#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz1 
    ldy.z sy
    clc
    lda SINH,y
    adc SINH,y
    // [151] *((const signed byte*) rotation_matrix+(byte) 2) ← (signed byte~) calculate_matrix::$12 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+2
    // [152] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t4#0) -- 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 + (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 + (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 + (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 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t7
    sec
    sbc COSQ,y
    // [157] *((const signed byte*) rotation_matrix+(byte) 3) ← (signed byte~) calculate_matrix::$17 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+3
    // [158] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t4#0) -- 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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) SINQ + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t8
    sec
    sbc SINQ,y
    // [163] *((const signed byte*) rotation_matrix+(byte) 4) ← (signed byte~) calculate_matrix::$22 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+4
    // [164] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsxx 
    ldy.z t9
    lda SINH,y
    sec
    sbc SINH,x
    // [165] *((const signed byte*) rotation_matrix+(byte) 5) ← (signed byte~) calculate_matrix::$23 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+5
    // [166] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH + (signed byte) calculate_matrix::t3#0) -- 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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) SINQ + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t7
    sec
    sbc SINQ,y
    // [171] *((const signed byte*) rotation_matrix+(byte) 6) ← (signed byte~) calculate_matrix::$28 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+6
    // [172] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH + (signed byte) calculate_matrix::t4#0) -- 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 + (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 + (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 + (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 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy.z t8
    sec
    sbc COSQ,y
    // [177] *((const signed byte*) rotation_matrix+(byte) 7) ← (signed byte~) calculate_matrix::$33 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+7
    // [178] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsxx 
    lda COSH,x
    ldy.z t9
    clc
    adc COSH,y
    // [179] *((const signed byte*) rotation_matrix+(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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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*) xs + (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*) ys + (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*) zs + (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* zp($d) str, byte* zp($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::@1 [phi:memset->memset::@1]
  __b1_from_memset:
    // [254] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    jmp __b1
    // memset::@1
  __b1:
    // [255] if((byte*) memset::dst#2!=(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
    jmp __breturn
    // memset::@return
  __breturn:
    // [256] return 
    rts
    // memset::@2
  __b2:
    // [257] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // [258] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // [254] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1]
  __b1_from___b2:
    // [254] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy 
    jmp __b1
}
  // sprites_init
// Initialize sprites
sprites_init: {
    .label SCREEN = $400
    .label sprites_ptr = SCREEN+$3f8
    // [259] *((const byte*) SPRITES_ENABLE) ← (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/(byte) $40 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #SPRITE/$40
    sta sprites_ptr,x
    // [262] *((const byte*) SPRITES_COLS + (byte) sprites_init::i#2) ← (const byte) GREEN -- 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 __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 __bbegin with __b1
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 __b1_from___b1 with __b1
Removing instruction __bbegin:
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 __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 __b1_from_memset:
Removing instruction __breturn:
Removing instruction __b1_from___b2:
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 __b1
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction __b1:
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
(const byte*) BORDERCOL = (byte*) 53280
(const signed byte*) COSH = (const signed byte*) SINH+(byte) $40
(const signed byte*) COSQ = (const signed byte*) SINQ+(byte) $40
(const byte) GREEN = (byte) 5
(const byte) LIGHT_BLUE = (byte) $e
(const byte) LIGHT_GREY = (byte) $f
(const signed byte*) PERSP_Z[(number) $100]  = 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 = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
(const signed byte*) SINH[(number) $140]  = 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)
    }
    }
 }}
(const signed byte*) SINQ[(number) $140]  = 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)
    }
    }
 }}
(const byte*) SPRITE = (byte*) 12288
(const byte*) SPRITES_COLS = (byte*) 53287
(const byte*) SPRITES_ENABLE = (byte*) 53269
(const byte*) SPRITES_XPOS = (byte*) 53248
(const byte*) SPRITES_YPOS = (byte*) 53249
(void()) anim()
(byte~) anim::$10 reg byte a 202.0
(byte~) anim::$12 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[1]:5 151.5
(byte) anim::i#2 i zp[1]: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[1]:3 1.5333333333333332
(signed byte) calculate_matrix::sz
(signed byte) calculate_matrix::t1
(signed byte) calculate_matrix::t1#0 t1 zp[1]: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[1]:5 0.9090909090909092
(signed byte) calculate_matrix::t3
(signed byte) calculate_matrix::t3#0 t3 zp[1]:6 0.29411764705882354
(signed byte) calculate_matrix::t4
(signed byte) calculate_matrix::t4#0 t4 zp[1]:7 0.30303030303030304
(signed byte) calculate_matrix::t5
(signed byte) calculate_matrix::t5#0 t5 zp[1]:8 0.29411764705882354
(signed byte) calculate_matrix::t6
(signed byte) calculate_matrix::t6#0 t6 zp[1]:9 0.3125
(signed byte) calculate_matrix::t7
(signed byte) calculate_matrix::t7#0 t7 zp[1]:10 0.30303030303030304
(signed byte) calculate_matrix::t8
(signed byte) calculate_matrix::t8#0 t8 zp[1]:11 0.30303030303030304
(signed byte) calculate_matrix::t9
(signed byte) calculate_matrix::t9#0 t9 zp[1]: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+(word)(number) $13*(number) $28
(byte) debug_print::c
(byte) debug_print::c#1 c zp[1]:5 67.33333333333333
(byte) debug_print::c#2 c zp[1]:5 42.52631578947369
(byte) debug_print::i
(byte) debug_print::i#1 i zp[1]:6 151.5
(byte) debug_print::i#2 i zp[1]:6 40.4
(label) debug_print::print_sbyte_pos1
(label) debug_print::print_sbyte_pos10
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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 zp[2]:13 202.0
(byte*~) debug_print_init::$44 zp[2]:15 202.0
(byte*~) debug_print_init::$47 zp[2]:17 202.0
(byte*~) debug_print_init::$50 zp[2]:19 202.0
(byte*~) debug_print_init::$53 zp[2]:21 202.0
(byte*~) debug_print_init::$56 zp[2]:23 202.0
(byte*~) debug_print_init::$59 zp[2]:25 202.0
(byte*~) debug_print_init::$62 zp[2]:27 202.0
(byte*~) debug_print_init::$65 zp[2]: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
(const byte*) debug_print_init::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+(word)(number) $10*(number) $28
(byte*) debug_print_init::at_line
(const byte*) debug_print_init::at_line#0 at_line = (const byte*) SCREEN+(word)(number) $10*(number) $28
(byte) debug_print_init::c
(byte) debug_print_init::c#1 c zp[1]:2 7.333333333333333
(byte) debug_print_init::c#2 c zp[1]: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[1]:3 16.5
(byte) debug_print_init::i#2 i zp[1]: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 byte*) debug_print_init::str[(byte) 3]  = (byte*) "sx"
(const byte*) debug_print_init::str1[(byte) 3]  = (byte*) "sy"
(const byte*) debug_print_init::str10[(byte) 3]  = (byte*) "xp"
(const byte*) debug_print_init::str11[(byte) 3]  = (byte*) "yp"
(const byte*) debug_print_init::str2[(byte) 3]  = (byte*) "sz"
(const byte*) debug_print_init::str3[(byte) 2]  = (byte*) "x"
(const byte*) debug_print_init::str4[(byte) 2]  = (byte*) "y"
(const byte*) debug_print_init::str5[(byte) 2]  = (byte*) "z"
(const byte*) debug_print_init::str6[(byte) 3]  = (byte*) "xr"
(const byte*) debug_print_init::str7[(byte) 3]  = (byte*) "yr"
(const byte*) debug_print_init::str8[(byte) 3]  = (byte*) "zr"
(const byte*) debug_print_init::str9[(byte) 3]  = (byte*) "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[2]:15 22.0
(byte*) memset::dst#2 dst zp[2]:15 14.666666666666666
(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
(const byte*) mulf_sqr1[(number) $200]  = 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) }
    }
 }}
(const byte*) mulf_sqr2[(number) $200]  = 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) }  
    }
 }}
(const signed byte*) pp = (signed byte*) 243
(const signed byte*) pps[(number) 8]  = { 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[2]: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[2]:13 4.0
(byte*) print_char_at::at#1 at zp[2]:13 4.0
(byte*) print_char_at::at#2 at zp[2]:13 4.0
(byte*) print_char_at::at#3 at zp[2]:13 2.0
(byte*) print_char_at::at#4 at zp[2]: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
(const byte*) print_hextab[]  = (byte*) "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[2]:13 11.0
(byte*) print_sbyte_at::at#1 at zp[2]:13 11.0
(byte*) print_sbyte_at::at#15 at zp[2]:13 101.0
(byte*) print_sbyte_at::at#16 at zp[2]:13 101.0
(byte*) print_sbyte_at::at#17 at zp[2]:13 101.0
(byte*) print_sbyte_at::at#18 at zp[2]:13 101.0
(byte*) print_sbyte_at::at#19 at zp[2]:13 101.0
(byte*) print_sbyte_at::at#2 at zp[2]:13 11.0
(byte*) print_sbyte_at::at#20 at zp[2]:13 101.0
(byte*) print_sbyte_at::at#21 at zp[2]: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[2]:15 11.0
(byte*) print_str_at::at#13 at zp[2]:15 11.666666666666666
(byte*) print_str_at::at#15 at zp[2]:15 2.0
(byte*) print_str_at::str
(byte*) print_str_at::str#0 str zp[2]:13 22.0
(byte*) print_str_at::str#13 str zp[2]:13 11.5
(byte*) print_str_at::str#15 str zp[2]:13 2.0
(const word*) psp1 = (word*) 246
(const word*) 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[1]:6 34.33333333333333
(signed byte) rotate_matrix::z
(signed byte) rotate_matrix::z#0 z zp[1]:4 34.33333333333333
(const signed byte*) rotation_matrix[(number) 9]  = { fill( 9, 0) }
(void()) sprites_init()
(label) sprites_init::@1
(label) sprites_init::@return
(const byte*) sprites_init::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+(word) $3f8
(void()) store_matrix()
(label) store_matrix::@return
(signed byte) sx
(signed byte) sx#10 sx zp[1]:2 0.38888888888888884
(signed byte) sx#3 sx zp[1]:2 11.0
(signed byte) sy
(signed byte) sy#10 sy zp[1]:3 0.3846153846153846
(signed byte) sy#3 sy zp[1]:3 22.0
(const signed byte) sz = (signed byte) 0
(const signed byte*) xp = (signed byte*) 244
(const signed byte*) xps[(number) 8]  = { fill( 8, 0) }
(const signed byte*) xr = (signed byte*) 240
(const signed byte*) xrs[(number) 8]  = { fill( 8, 0) }
(const signed byte*) xs[(number) 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 }
(const signed byte*) yp = (signed byte*) 245
(const signed byte*) yps[(number) 8]  = { fill( 8, 0) }
(const signed byte*) yr = (signed byte*) 241
(const signed byte*) yrs[(number) 8]  = { fill( 8, 0) }
(const signed byte*) ys[(number) 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 }
(const signed byte*) zr = (signed byte*) 242
(const signed byte*) zrs[(number) 8]  = { fill( 8, 0) }
(const signed byte*) zs[(number) 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 }

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[1]:2 [ debug_print_init::c#2 debug_print_init::c#1 sx#10 sx#3 ]
zp[1]: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::$10 ]
reg byte a [ anim::$12 ]
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[1]:4 [ calculate_matrix::t1#0 rotate_matrix::z#0 ]
zp[1]:5 [ calculate_matrix::t2#0 debug_print::c#2 debug_print::c#1 anim::i#2 anim::i#1 ]
zp[1]:6 [ calculate_matrix::t3#0 rotate_matrix::y#0 debug_print::i#2 debug_print::i#1 ]
zp[1]:7 [ calculate_matrix::t4#0 ]
zp[1]:8 [ calculate_matrix::t5#0 ]
zp[1]:9 [ calculate_matrix::t6#0 ]
zp[1]:10 [ calculate_matrix::t7#0 ]
zp[1]:11 [ calculate_matrix::t8#0 ]
zp[1]: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[2]: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[2]:15 [ debug_print_init::$44 memset::dst#2 memset::dst#1 print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ]
zp[2]:17 [ debug_print_init::$47 ]
zp[2]:19 [ debug_print_init::$50 ]
zp[2]:21 [ debug_print_init::$53 ]
zp[2]:23 [ debug_print_init::$56 ]
zp[2]:25 [ debug_print_init::$59 ]
zp[2]:27 [ debug_print_init::$62 ]
zp[2]:29 [ debug_print_init::$65 ]


FINAL ASSEMBLER
Score: 66046

  // 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
  // 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 print_screen = $400
  .label sx = 2
  .label sy = 3
  // @begin
  // @1
  // kickasm
  // kickasm(location (const byte*) SPRITE) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))     .for (var y=0; y<21; y++)         .for (var x=0;x<3; x++)             .byte pic.getSinglecolorByte(x,y)  }}
  // [2] call main 
  // [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) ← (word)(const byte*) mulf_sqr1 -- _deref_pwuc1=vwuc2 
    //mulf_init();
    lda #<mulf_sqr1
    sta psp1
    lda #>mulf_sqr1
    sta psp1+1
    // *psp2 = (word)mulf_sqr2
    // [7] *((const word*) psp2) ← (word)(const byte*) mulf_sqr2 -- _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)!=(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)!=(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)!=(byte) $fd) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda #$fd
    cmp RASTER
    bne __b4
    // anim::@5
    // (*BORDERCOL)++;
    // [17] *((const byte*) BORDERCOL) ← ++ *((const byte*) BORDERCOL) -- _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) ← ++ *((const byte*) BORDERCOL) -- _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*) xs + (byte) anim::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldy.z i
    ldx xs,y
    // [26] (signed byte) rotate_matrix::y#0 ← *((const signed byte*) ys + (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*) zs + (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*) xrs + (byte) anim::i#2) ← *((const signed byte*) xr) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    //if(*xr<xmin) xmin = *xr;
    //if(*xr>xmax) xmax = *xr;
    lda xr
    ldy.z i
    sta xrs,y
    // yrs[i] = *yr
    // [30] *((const signed byte*) yrs + (byte) anim::i#2) ← *((const signed byte*) yr) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda yr
    sta yrs,y
    // zrs[i] = *zr
    // [31] *((const signed byte*) zrs + (byte) anim::i#2) ← *((const signed byte*) zr) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda zr
    sta zrs,y
    // pps[i] = *pp
    // [32] *((const signed byte*) pps + (byte) anim::i#2) ← *((const signed byte*) pp) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda pp
    sta pps,y
    // xps[i] = *xp
    // [33] *((const signed byte*) xps + (byte) anim::i#2) ← *((const signed byte*) xp) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda xp
    sta xps,y
    // yps[i] = *yp
    // [34] *((const signed byte*) yps + (byte) anim::i#2) ← *((const signed byte*) yp) -- 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::$10 ← (byte) $80 + (byte)*((const signed byte*) xp) -- vbuaa=vbuc1_plus__deref_pbuc2 
    lda #$80
    clc
    adc xp
    // SPRITES_XPOS[i2] = $80+(byte)((*xp))
    // [37] *((const byte*) SPRITES_XPOS + (byte) anim::i2#0) ← (byte~) anim::$10 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SPRITES_XPOS,x
    // $80+(byte)((*yp))
    // [38] (byte~) anim::$12 ← (byte) $80 + (byte)*((const signed byte*) yp) -- vbuaa=vbuc1_plus__deref_pbuc2 
    lda #$80
    clc
    adc yp
    // SPRITES_YPOS[i2] = $80+(byte)((*yp))
    // [39] *((const byte*) SPRITES_YPOS + (byte) anim::i2#0) ← (byte~) anim::$12 -- 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) ← (const byte) LIGHT_GREY -- _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) ← (const byte) LIGHT_BLUE -- _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 [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*) rotation_matrix) -- 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*) rotation_matrix+(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*) rotation_matrix+(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*) rotation_matrix+(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*) rotation_matrix+(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*) rotation_matrix+(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*) rotation_matrix+(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*) rotation_matrix+(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*) rotation_matrix+(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*) xrs + (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*) yrs + (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*) zrs + (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*) pps + (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*) xps + (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*) yps + (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* zp($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* zp($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* zp($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 + (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 + (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 zp(6) y, signed byte zp(4) z)
rotate_matrix: {
    .label y = 6
    .label z = 4
    // *xr = x
    // [129] *((const signed byte*) xr) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsxx 
    txa
    sta xr
    // *yr = y
    // [130] *((const signed byte*) yr) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsz1 
    lda.z y
    sta yr
    // *zr = z
    // [131] *((const signed byte*) zr) ← (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 zp(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 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH + (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*) rotation_matrix) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix
    // SINH[t1]-SINH[t2]
    // [148] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH + (signed byte) calculate_matrix::t2#0) -- 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*) rotation_matrix+(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*) SINH + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH + (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*) rotation_matrix+(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*) SINH + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH + (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 + (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 + (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 + (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 + (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*) rotation_matrix+(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 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) rotation_matrix+(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*) SINH + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH + (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*) rotation_matrix+(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 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) SINQ + (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*) rotation_matrix+(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*) SINH + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH + (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 + (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 + (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 + (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 + (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*) rotation_matrix+(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 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH + (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*) rotation_matrix+(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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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+(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 byte*) 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*) xs + (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*) ys + (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*) zs + (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* zp($d) str, byte* zp($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::@1 [phi:memset->memset::@1]
    // [254] phi (byte*) memset::dst#2 = (byte*)(const void*) memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1 
    lda #<str
    sta.z dst
    lda #>str
    sta.z dst+1
    // memset::@1
  __b1:
    // for(char* dst = str; dst!=end; dst++)
    // [255] if((byte*) memset::dst#2!=(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
    // }
    // [256] return 
    rts
    // memset::@2
  __b2:
    // *dst = c
    // [257] *((byte*) memset::dst#2) ← (const byte) memset::c#0 -- _deref_pbuz1=vbuc1 
    lda #c
    ldy #0
    sta (dst),y
    // for(char* dst = str; dst!=end; dst++)
    // [258] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    // [254] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1]
    // [254] phi (byte*) memset::dst#2 = (byte*) memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy 
    jmp __b1
}
  // sprites_init
// Initialize sprites
sprites_init: {
    .label SCREEN = $400
    .label sprites_ptr = SCREEN+$3f8
    // *SPRITES_ENABLE = %11111111
    // [259] *((const byte*) SPRITES_ENABLE) ← (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/(byte) $40 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #SPRITE/$40
    sta sprites_ptr,x
    // SPRITES_COLS[i] = GREEN
    // [262] *((const byte*) SPRITES_COLS + (byte) sprites_init::i#2) ← (const byte) GREEN -- 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)


