Resolved forward reference mulf_sqr1 to (byte*) mulf_sqr1
Resolved forward reference mulf_sqr2 to (byte*) mulf_sqr2
Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix
Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix
Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix
Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix
Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix
Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix
Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix
Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix
Resolved forward reference rotation_matrix to (signed byte[9]) rotation_matrix
Resolved forward reference SPRITE to (byte*) SPRITE
Resolved forward reference COSH to (signed byte*) COSH
Resolved forward reference COSH to (signed byte*) COSH
Resolved forward reference SINH to (signed byte*) SINH
Resolved forward reference SINH to (signed byte*) SINH
Resolved forward reference SINH to (signed byte*) SINH
Resolved forward reference SINH to (signed byte*) SINH
Resolved forward reference SINH to (signed byte*) SINH
Resolved forward reference SINH to (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 (signed byte*) SINQ
Resolved forward reference SINQ to (signed byte*) SINQ
Resolved forward reference SINQ to (signed byte*) SINQ
Resolved forward reference SINQ to (signed byte*) SINQ
Resolved forward reference SINH to (signed byte*) SINH
Resolved forward reference SINH to (signed byte*) SINH
Resolved forward reference COSH to (signed byte*) COSH
Resolved forward reference COSH to (signed byte*) COSH
Resolved forward reference SINQ to (signed byte*) SINQ
Resolved forward reference SINQ to (signed byte*) SINQ
Resolved forward reference SINQ to (signed byte*) SINQ
Resolved forward reference SINQ to (signed byte*) SINQ
Resolved forward reference SINH to (signed byte*) SINH
Resolved forward reference SINH to (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 (byte*) SINH_HI
Resolved forward reference SINH_LO to (byte*) SINH_LO
Resolved forward reference SINH_HI to (byte*) SINH_HI
Resolved forward reference SINH_LO to (byte*) SINH_LO
Resolved forward reference SINH_HI to (byte*) SINH_HI
Resolved forward reference SINH_LO to (byte*) SINH_LO
Resolved forward reference SINH_HI to (byte*) SINH_HI
Resolved forward reference SINH_LO to (byte*) SINH_LO
Resolved forward reference SINH_HI to (byte*) SINH_HI
Resolved forward reference SINH_LO to (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 (byte*) SINQ_HI
Resolved forward reference SINH_LO to (byte*) SINH_LO
Resolved forward reference SINQ_HI to (byte*) SINQ_HI
Resolved forward reference SINH_LO to (byte*) SINH_LO
Resolved forward reference SINQ_HI to (byte*) SINQ_HI
Resolved forward reference SINH_LO to (byte*) SINH_LO
Resolved forward reference SINQ_HI to (byte*) SINQ_HI
Resolved forward reference SINH_LO to (byte*) SINH_LO
Resolved forward reference SINH_HI to (byte*) SINH_HI
Resolved forward reference SINH_LO to (byte*) SINH_LO
Resolved forward reference SINH_HI to (byte*) SINH_HI
Resolved forward reference SINH_LO to (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
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx 
Inlined call call print_sbyte_pos (signed byte) sx (byte/signed byte/word/signed word/dword/signed dword) 0 (byte/signed byte/word/signed word/dword/signed dword) 37 
Inlined call call print_sbyte_pos (signed byte) sy (byte/signed byte/word/signed word/dword/signed dword) 1 (byte/signed byte/word/signed word/dword/signed dword) 37 
Inlined call call print_sbyte_pos (signed byte) sz (byte/signed byte/word/signed word/dword/signed dword) 2 (byte/signed byte/word/signed word/dword/signed dword) 37 
Inlined call call print_sbyte_pos *((signed byte[9]) rotation_matrix + (byte/signed byte/word/signed word/dword/signed dword) 0) (byte/signed byte/word/signed word/dword/signed dword) 4 (byte/signed byte/word/signed word/dword/signed dword) 29 
Inlined call call print_sbyte_pos *((signed byte[9]) rotation_matrix + (byte/signed byte/word/signed word/dword/signed dword) 1) (byte/signed byte/word/signed word/dword/signed dword) 4 (byte/signed byte/word/signed word/dword/signed dword) 33 
Inlined call call print_sbyte_pos *((signed byte[9]) rotation_matrix + (byte/signed byte/word/signed word/dword/signed dword) 2) (byte/signed byte/word/signed word/dword/signed dword) 4 (byte/signed byte/word/signed word/dword/signed dword) 37 
Inlined call call print_sbyte_pos *((signed byte[9]) rotation_matrix + (byte/signed byte/word/signed word/dword/signed dword) 3) (byte/signed byte/word/signed word/dword/signed dword) 5 (byte/signed byte/word/signed word/dword/signed dword) 29 
Inlined call call print_sbyte_pos *((signed byte[9]) rotation_matrix + (byte/signed byte/word/signed word/dword/signed dword) 4) (byte/signed byte/word/signed word/dword/signed dword) 5 (byte/signed byte/word/signed word/dword/signed dword) 33 
Inlined call call print_sbyte_pos *((signed byte[9]) rotation_matrix + (byte/signed byte/word/signed word/dword/signed dword) 5) (byte/signed byte/word/signed word/dword/signed dword) 5 (byte/signed byte/word/signed word/dword/signed dword) 37 
Inlined call call print_sbyte_pos *((signed byte[9]) rotation_matrix + (byte/signed byte/word/signed word/dword/signed dword) 6) (byte/signed byte/word/signed word/dword/signed dword) 6 (byte/signed byte/word/signed word/dword/signed dword) 29 
Inlined call call print_sbyte_pos *((signed byte[9]) rotation_matrix + (byte/signed byte/word/signed word/dword/signed dword) 7) (byte/signed byte/word/signed word/dword/signed dword) 6 (byte/signed byte/word/signed word/dword/signed dword) 33 
Inlined call call print_sbyte_pos *((signed byte[9]) rotation_matrix + (byte/signed byte/word/signed word/dword/signed dword) 8) (byte/signed byte/word/signed word/dword/signed dword) 6 (byte/signed byte/word/signed word/dword/signed dword) 37 

CONTROL FLOW GRAPH SSA
@begin: scope:[]  from
  (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
  (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48
  (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53
  (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49
  (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54
  (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55
  (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248
  (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016
  (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248
  (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249
  (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264
  (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266
  (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269
  (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271
  (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275
  (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276
  (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277
  (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280
  (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281
  (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281
  (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282
  (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283
  (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284
  (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285
  (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286
  (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287
  (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265
  (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265
  (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128
  (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64
  (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32
  (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
  (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
  (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270
  (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270
  (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
  (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
  (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272
  (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272
  (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267
  (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268
  (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273
  (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274
  (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
  (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
  (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296
  (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320
  (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321
  (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322
  (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323
  (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333
  (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127
  (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576
  (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577
  (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578
  (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579
  (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589
  (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788
  (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534
  (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
  (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
  (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
  (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
  (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
  (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
  (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
  (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10
  (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11
  (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12
  (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13
  (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14
  (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15
  to:@4
@4: scope:[]  from @begin
  (byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
  (byte*) print_line_cursor#0 ← (byte*) print_screen#0
  (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
  to:@16
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 ← *((byte*) print_str_at::str#13) != (byte) '@'
  if((bool~) print_str_at::$0) goto print_str_at::@2
  to:print_str_at::@return
print_str_at::@2: scope:[print_str_at]  from print_str_at::@1
  (byte*) print_str_at::at#13 ← phi( print_str_at::@1/(byte*) print_str_at::at#14 )
  (byte*) print_str_at::str#14 ← phi( print_str_at::@1/(byte*) print_str_at::str#13 )
  *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#14)
  (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13
  (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#14
  to:print_str_at::@1
print_str_at::@return: scope:[print_str_at]  from print_str_at::@1
  return 
  to:@return
print_sbyte_at: scope:[print_sbyte_at]  from debug_print::@1 debug_print::@27 debug_print::@28 debug_print::@29 debug_print::@30 debug_print::@31 debug_print::print_sbyte_pos1 debug_print::print_sbyte_pos10 debug_print::print_sbyte_pos11 debug_print::print_sbyte_pos12 debug_print::print_sbyte_pos2 debug_print::print_sbyte_pos3 debug_print::print_sbyte_pos4 debug_print::print_sbyte_pos5 debug_print::print_sbyte_pos6 debug_print::print_sbyte_pos7 debug_print::print_sbyte_pos8 debug_print::print_sbyte_pos9 debug_print_init::@1 debug_print_init::@18 debug_print_init::@19
  (byte*) print_sbyte_at::at#24 ← phi( debug_print::@1/(byte*) print_sbyte_at::at#15 debug_print::@27/(byte*) print_sbyte_at::at#16 debug_print::@28/(byte*) print_sbyte_at::at#17 debug_print::@29/(byte*) print_sbyte_at::at#18 debug_print::@30/(byte*) print_sbyte_at::at#19 debug_print::@31/(byte*) print_sbyte_at::at#20 debug_print::print_sbyte_pos1/(byte*) print_sbyte_at::at#3 debug_print::print_sbyte_pos10/(byte*) print_sbyte_at::at#12 debug_print::print_sbyte_pos11/(byte*) print_sbyte_at::at#13 debug_print::print_sbyte_pos12/(byte*) print_sbyte_at::at#14 debug_print::print_sbyte_pos2/(byte*) print_sbyte_at::at#4 debug_print::print_sbyte_pos3/(byte*) print_sbyte_at::at#5 debug_print::print_sbyte_pos4/(byte*) print_sbyte_at::at#6 debug_print::print_sbyte_pos5/(byte*) print_sbyte_at::at#7 debug_print::print_sbyte_pos6/(byte*) print_sbyte_at::at#8 debug_print::print_sbyte_pos7/(byte*) print_sbyte_at::at#9 debug_print::print_sbyte_pos8/(byte*) print_sbyte_at::at#10 debug_print::print_sbyte_pos9/(byte*) print_sbyte_at::at#11 debug_print_init::@1/(byte*) print_sbyte_at::at#0 debug_print_init::@18/(byte*) print_sbyte_at::at#1 debug_print_init::@19/(byte*) print_sbyte_at::at#2 )
  (signed byte) print_sbyte_at::b#22 ← phi( debug_print::@1/(signed byte) print_sbyte_at::b#16 debug_print::@27/(signed byte) print_sbyte_at::b#17 debug_print::@28/(signed byte) print_sbyte_at::b#18 debug_print::@29/(signed byte) print_sbyte_at::b#19 debug_print::@30/(signed byte) print_sbyte_at::b#20 debug_print::@31/(signed byte) print_sbyte_at::b#21 debug_print::print_sbyte_pos1/(signed byte) print_sbyte_at::b#4 debug_print::print_sbyte_pos10/(signed byte) print_sbyte_at::b#13 debug_print::print_sbyte_pos11/(signed byte) print_sbyte_at::b#14 debug_print::print_sbyte_pos12/(signed byte) print_sbyte_at::b#15 debug_print::print_sbyte_pos2/(signed byte) print_sbyte_at::b#5 debug_print::print_sbyte_pos3/(signed byte) print_sbyte_at::b#6 debug_print::print_sbyte_pos4/(signed byte) print_sbyte_at::b#7 debug_print::print_sbyte_pos5/(signed byte) print_sbyte_at::b#8 debug_print::print_sbyte_pos6/(signed byte) print_sbyte_at::b#9 debug_print::print_sbyte_pos7/(signed byte) print_sbyte_at::b#10 debug_print::print_sbyte_pos8/(signed byte) print_sbyte_at::b#11 debug_print::print_sbyte_pos9/(signed byte) print_sbyte_at::b#12 debug_print_init::@1/(signed byte) print_sbyte_at::b#1 debug_print_init::@18/(signed byte) print_sbyte_at::b#2 debug_print_init::@19/(signed byte) print_sbyte_at::b#3 )
  (bool~) print_sbyte_at::$0 ← (signed byte) print_sbyte_at::b#22 < (byte/signed byte/word/signed word/dword/signed dword) 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::$3 ← - (signed byte) print_sbyte_at::b#23
  (signed byte) print_sbyte_at::b#0 ← (signed byte~) print_sbyte_at::$3
  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::$4 ← ((byte)) (signed byte) print_sbyte_at::b#24
  (byte*~) print_sbyte_at::$5 ← (byte*) print_sbyte_at::at#23 + (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) print_byte_at::b#0 ← (byte~) print_sbyte_at::$4
  (byte*) print_byte_at::at#0 ← (byte*~) print_sbyte_at::$5
  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
@16: scope:[]  from @4
  (byte*) print_screen#52 ← phi( @4/(byte*) print_screen#0 )
  (byte*) print_char_cursor#26 ← phi( @4/(byte*) print_char_cursor#0 )
  (byte*) print_line_cursor#26 ← phi( @4/(byte*) print_line_cursor#0 )
  (byte[]) print_hextab#0 ← (const string) $12
  to:@23
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 >> (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte) print_char_at::ch#2 ← *((byte[]) print_hextab#0 + (byte~) print_byte_at::$0)
  (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#1
  call print_char_at 
  to:print_byte_at::@1
print_byte_at::@1: scope:[print_byte_at]  from print_byte_at
  (byte*) print_byte_at::at#2 ← phi( print_byte_at/(byte*) print_byte_at::at#1 )
  (byte) print_byte_at::b#2 ← phi( print_byte_at/(byte) print_byte_at::b#1 )
  (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15
  (byte*~) print_byte_at::$3 ← (byte*) print_byte_at::at#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) print_char_at::ch#3 ← *((byte[]) print_hextab#0 + (byte~) print_byte_at::$2)
  (byte*) print_char_at::at#3 ← (byte*~) print_byte_at::$3
  call print_char_at 
  to:print_byte_at::@2
print_byte_at::@2: scope:[print_byte_at]  from print_byte_at::@1
  to:print_byte_at::@return
print_byte_at::@return: scope:[print_byte_at]  from print_byte_at::@2
  return 
  to:@return
print_char_at: scope:[print_char_at]  from print_byte_at print_byte_at::@1 print_sbyte_at::@1 print_sbyte_at::@3
  (byte*) print_char_at::at#4 ← phi( print_byte_at/(byte*) print_char_at::at#2 print_byte_at::@1/(byte*) print_char_at::at#3 print_sbyte_at::@1/(byte*) print_char_at::at#0 print_sbyte_at::@3/(byte*) print_char_at::at#1 )
  (byte) print_char_at::ch#4 ← phi( print_byte_at/(byte) print_char_at::ch#2 print_byte_at::@1/(byte) print_char_at::ch#3 print_sbyte_at::@1/(byte) print_char_at::ch#0 print_sbyte_at::@3/(byte) print_char_at::ch#1 )
  *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4
  to:print_char_at::@return
print_char_at::@return: scope:[print_char_at]  from print_char_at
  return 
  to:@return
print_cls: scope:[print_cls]  from debug_print_init
  (byte*) print_screen#1 ← phi( debug_print_init/(byte*) print_screen#16 )
  (byte*) print_cls::sc#0 ← (byte*) print_screen#1
  to:print_cls::@1
print_cls::@1: scope:[print_cls]  from print_cls print_cls::@1
  (byte*) print_screen#2 ← phi( print_cls/(byte*) print_screen#1 print_cls::@1/(byte*) print_screen#2 )
  (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 )
  *((byte*) print_cls::sc#2) ← (byte) ' '
  (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
  (byte*~) print_cls::$0 ← (byte*) print_screen#2 + (word/signed word/dword/signed dword) 1000
  (bool~) print_cls::$1 ← (byte*) print_cls::sc#1 != (byte*~) print_cls::$0
  if((bool~) print_cls::$1) goto print_cls::@1
  to:print_cls::@2
print_cls::@2: scope:[print_cls]  from print_cls::@1
  (byte*) print_screen#3 ← phi( print_cls::@1/(byte*) print_screen#2 )
  (byte*) print_line_cursor#1 ← (byte*) print_screen#3
  (byte*) print_char_cursor#1 ← (byte*) print_line_cursor#1
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls::@2
  (byte*) print_char_cursor#8 ← phi( print_cls::@2/(byte*) print_char_cursor#1 )
  (byte*) print_line_cursor#8 ← phi( print_cls::@2/(byte*) print_line_cursor#1 )
  (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#8
  (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#8
  return 
  to:@return
@23: scope:[]  from @16
  (byte*) print_screen#50 ← phi( @16/(byte*) print_screen#52 )
  (byte*) print_char_cursor#24 ← phi( @16/(byte*) print_char_cursor#26 )
  (byte*) print_line_cursor#24 ← phi( @16/(byte*) print_line_cursor#26 )
  (signed byte*) xr#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) 240
  (signed byte*) yr#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) 241
  (signed byte*) zr#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) 242
  (signed byte*) pp#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) 243
  (signed byte*) xp#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) 244
  (signed byte*) yp#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) 245
  (word*) psp1#0 ← ((word*)) (byte/word/signed word/dword/signed dword) 246
  (word*) psp2#0 ← ((word*)) (byte/word/signed word/dword/signed dword) 248
  (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
  to:@24
main: scope:[main]  from @33
  (signed byte*) yp#19 ← phi( @33/(signed byte*) yp#20 )
  (signed byte*) xp#19 ← phi( @33/(signed byte*) xp#20 )
  (signed byte*) pp#19 ← phi( @33/(signed byte*) pp#20 )
  (signed byte*) zr#20 ← phi( @33/(signed byte*) zr#21 )
  (signed byte*) yr#20 ← phi( @33/(signed byte*) yr#21 )
  (signed byte*) xr#20 ← phi( @33/(signed byte*) xr#21 )
  (signed byte*) SINQ#17 ← phi( @33/(signed byte*) SINQ#0 )
  (signed byte*) COSQ#17 ← phi( @33/(signed byte*) COSQ#0 )
  (signed byte*) SINH#17 ← phi( @33/(signed byte*) SINH#0 )
  (signed byte*) COSH#17 ← phi( @33/(signed byte*) COSH#0 )
  (signed byte) sz#23 ← phi( @33/(signed byte) sz#25 )
  (byte*) SCREEN#19 ← phi( @33/(byte*) SCREEN#21 )
  (byte*) print_screen#42 ← phi( @33/(byte*) print_screen#44 )
  (signed byte) sy#26 ← phi( @33/(signed byte) sy#18 )
  (signed byte) sx#24 ← phi( @33/(signed byte) sx#17 )
  (byte*) SPRITE#3 ← phi( @33/(byte*) SPRITE#0 )
  (byte*) print_char_cursor#19 ← phi( @33/(byte*) print_char_cursor#18 )
  (byte*) print_line_cursor#19 ← phi( @33/(byte*) print_line_cursor#18 )
  (word*) psp2#2 ← phi( @33/(word*) psp2#3 )
  (byte*) mulf_sqr2#2 ← phi( @33/(byte*) mulf_sqr2#0 )
  (word*) psp1#2 ← phi( @33/(word*) psp1#3 )
  (byte*) mulf_sqr1#2 ← phi( @33/(byte*) mulf_sqr1#0 )
  asm { sei  }
  call sprites_init 
  to:main::@1
main::@1: scope:[main]  from main
  (signed byte*) yp#18 ← phi( main/(signed byte*) yp#19 )
  (signed byte*) xp#18 ← phi( main/(signed byte*) xp#19 )
  (signed byte*) pp#18 ← phi( main/(signed byte*) pp#19 )
  (signed byte*) zr#19 ← phi( main/(signed byte*) zr#20 )
  (signed byte*) yr#19 ← phi( main/(signed byte*) yr#20 )
  (signed byte*) xr#19 ← phi( main/(signed byte*) xr#20 )
  (signed byte*) SINQ#15 ← phi( main/(signed byte*) SINQ#17 )
  (signed byte*) COSQ#15 ← phi( main/(signed byte*) COSQ#17 )
  (signed byte*) SINH#15 ← phi( main/(signed byte*) SINH#17 )
  (signed byte*) COSH#15 ← phi( main/(signed byte*) COSH#17 )
  (signed byte) sz#21 ← phi( main/(signed byte) sz#23 )
  (byte*) SCREEN#17 ← phi( main/(byte*) SCREEN#19 )
  (byte*) print_screen#29 ← phi( main/(byte*) print_screen#42 )
  (signed byte) sy#19 ← phi( main/(signed byte) sy#26 )
  (signed byte) sx#18 ← phi( main/(signed byte) sx#24 )
  (byte*) print_char_cursor#14 ← phi( main/(byte*) print_char_cursor#19 )
  (byte*) print_line_cursor#14 ← phi( main/(byte*) print_line_cursor#19 )
  (word*) psp2#1 ← phi( main/(word*) psp2#2 )
  (byte*) mulf_sqr2#1 ← phi( main/(byte*) mulf_sqr2#2 )
  (word*) psp1#1 ← phi( main/(word*) psp1#2 )
  (byte*) mulf_sqr1#1 ← phi( main/(byte*) mulf_sqr1#2 )
  (word~) main::$1 ← ((word)) (byte*) mulf_sqr1#1
  *((word*) psp1#1) ← (word~) main::$1
  (word~) main::$2 ← ((word)) (byte*) mulf_sqr2#1
  *((word*) psp2#1) ← (word~) main::$2
  call debug_print_init 
  to:main::@2
main::@2: scope:[main]  from main::@1
  (byte*) SCREEN#73 ← phi( main::@1/(byte*) SCREEN#17 )
  (byte*) print_screen#63 ← phi( main::@1/(byte*) print_screen#29 )
  (signed byte*) yp#16 ← phi( main::@1/(signed byte*) yp#18 )
  (signed byte*) xp#16 ← phi( main::@1/(signed byte*) xp#18 )
  (signed byte*) pp#16 ← phi( main::@1/(signed byte*) pp#18 )
  (signed byte*) zr#17 ← phi( main::@1/(signed byte*) zr#19 )
  (signed byte*) yr#17 ← phi( main::@1/(signed byte*) yr#19 )
  (signed byte*) xr#17 ← phi( main::@1/(signed byte*) xr#19 )
  (signed byte*) SINQ#13 ← phi( main::@1/(signed byte*) SINQ#15 )
  (signed byte*) COSQ#13 ← phi( main::@1/(signed byte*) COSQ#15 )
  (signed byte*) SINH#13 ← phi( main::@1/(signed byte*) SINH#15 )
  (signed byte*) COSH#13 ← phi( main::@1/(signed byte*) COSH#15 )
  (signed byte) sz#19 ← phi( main::@1/(signed byte) sz#21 )
  (signed byte) sy#13 ← phi( main::@1/(signed byte) sy#19 )
  (signed byte) sx#13 ← phi( main::@1/(signed byte) sx#18 )
  (byte*) print_char_cursor#9 ← phi( main::@1/(byte*) print_char_cursor#6 )
  (byte*) print_line_cursor#9 ← phi( main::@1/(byte*) print_line_cursor#6 )
  (byte*) print_line_cursor#3 ← (byte*) print_line_cursor#9
  (byte*) print_char_cursor#3 ← (byte*) print_char_cursor#9
  call anim 
  to:main::@3
main::@3: scope:[main]  from main::@2
  (byte*) print_char_cursor#15 ← phi( main::@2/(byte*) print_char_cursor#3 )
  (byte*) print_line_cursor#15 ← phi( main::@2/(byte*) print_line_cursor#3 )
  (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 )
  (byte*) print_char_cursor#10 ← phi( main::@3/(byte*) print_char_cursor#15 )
  (byte*) print_line_cursor#10 ← phi( main::@3/(byte*) print_line_cursor#15 )
  (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#10
  (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#10
  (signed byte) sx#1 ← (signed byte) sx#7
  (signed byte) sy#1 ← (signed byte) sy#7
  return 
  to:@return
@24: scope:[]  from @23
  (signed byte*) yp#22 ← phi( @23/(signed byte*) yp#0 )
  (signed byte*) xp#22 ← phi( @23/(signed byte*) xp#0 )
  (signed byte*) pp#22 ← phi( @23/(signed byte*) pp#0 )
  (signed byte*) zr#23 ← phi( @23/(signed byte*) zr#0 )
  (signed byte*) yr#23 ← phi( @23/(signed byte*) yr#0 )
  (signed byte*) xr#23 ← phi( @23/(signed byte*) xr#0 )
  (byte*) SCREEN#26 ← phi( @23/(byte*) SCREEN#0 )
  (byte*) print_screen#49 ← phi( @23/(byte*) print_screen#50 )
  (word*) psp2#5 ← phi( @23/(word*) psp2#0 )
  (word*) psp1#5 ← phi( @23/(word*) psp1#0 )
  (byte*) print_char_cursor#23 ← phi( @23/(byte*) print_char_cursor#24 )
  (byte*) print_line_cursor#23 ← phi( @23/(byte*) print_line_cursor#24 )
  (signed byte/signed word/signed dword~) $0 ← - (byte/signed byte/word/signed word/dword/signed dword) 52
  (signed byte/signed word/signed dword~) $1 ← - (byte/signed byte/word/signed word/dword/signed dword) 52
  (signed byte/signed word/signed dword~) $2 ← - (byte/signed byte/word/signed word/dword/signed dword) 52
  (signed byte[8]) xs#0 ← { (signed byte/signed word/signed dword~) $0, (signed byte/signed word/signed dword~) $1, (signed byte/signed word/signed dword~) $2, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 52 }
  (signed byte/signed word/signed dword~) $3 ← - (byte/signed byte/word/signed word/dword/signed dword) 52
  (signed byte/signed word/signed dword~) $4 ← - (byte/signed byte/word/signed word/dword/signed dword) 52
  (signed byte/signed word/signed dword~) $5 ← - (byte/signed byte/word/signed word/dword/signed dword) 52
  (signed byte[8]) ys#0 ← { (signed byte/signed word/signed dword~) $3, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 52, (signed byte/signed word/signed dword~) $4, (byte/signed byte/word/signed word/dword/signed dword) 52, (signed byte/signed word/signed dword~) $5, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 52 }
  (signed byte[8]) zs#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 52 }
  (signed byte[8]) xrs#0 ← { fill( 8, 0) }
  (signed byte[8]) yrs#0 ← { fill( 8, 0) }
  (signed byte[8]) zrs#0 ← { fill( 8, 0) }
  (signed byte[8]) pps#0 ← { fill( 8, 0) }
  (signed byte[8]) xps#0 ← { fill( 8, 0) }
  (signed byte[8]) yps#0 ← { fill( 8, 0) }
  (signed byte) sx#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (signed byte) sy#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (signed byte) sz#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:@28
anim: scope:[anim]  from main::@2
  (byte*) SCREEN#71 ← phi( main::@2/(byte*) SCREEN#73 )
  (byte*) print_screen#61 ← phi( main::@2/(byte*) print_screen#63 )
  (signed byte*) yp#14 ← phi( main::@2/(signed byte*) yp#16 )
  (signed byte*) xp#14 ← phi( main::@2/(signed byte*) xp#16 )
  (signed byte*) pp#14 ← phi( main::@2/(signed byte*) pp#16 )
  (signed byte*) zr#15 ← phi( main::@2/(signed byte*) zr#17 )
  (signed byte*) yr#15 ← phi( main::@2/(signed byte*) yr#17 )
  (signed byte*) xr#15 ← phi( main::@2/(signed byte*) xr#17 )
  (signed byte*) SINQ#11 ← phi( main::@2/(signed byte*) SINQ#13 )
  (signed byte*) COSQ#11 ← phi( main::@2/(signed byte*) COSQ#13 )
  (signed byte*) SINH#11 ← phi( main::@2/(signed byte*) SINH#13 )
  (signed byte*) COSH#11 ← phi( main::@2/(signed byte*) COSH#13 )
  (signed byte) sz#16 ← phi( main::@2/(signed byte) sz#19 )
  (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*) SCREEN#70 ← phi( anim/(byte*) SCREEN#71 anim::@30/(byte*) SCREEN#72 )
  (byte*) print_screen#60 ← phi( anim/(byte*) print_screen#61 anim::@30/(byte*) print_screen#62 )
  (signed byte*) yp#13 ← phi( anim/(signed byte*) yp#14 anim::@30/(signed byte*) yp#15 )
  (signed byte*) xp#13 ← phi( anim/(signed byte*) xp#14 anim::@30/(signed byte*) xp#15 )
  (signed byte*) pp#13 ← phi( anim/(signed byte*) pp#14 anim::@30/(signed byte*) pp#15 )
  (signed byte*) zr#14 ← phi( anim/(signed byte*) zr#15 anim::@30/(signed byte*) zr#16 )
  (signed byte*) yr#14 ← phi( anim/(signed byte*) yr#15 anim::@30/(signed byte*) yr#16 )
  (signed byte*) xr#14 ← phi( anim/(signed byte*) xr#15 anim::@30/(signed byte*) xr#16 )
  (signed byte*) SINQ#10 ← phi( anim/(signed byte*) SINQ#11 anim::@30/(signed byte*) SINQ#12 )
  (signed byte*) COSQ#10 ← phi( anim/(signed byte*) COSQ#11 anim::@30/(signed byte*) COSQ#12 )
  (signed byte*) SINH#10 ← phi( anim/(signed byte*) SINH#11 anim::@30/(signed byte*) SINH#12 )
  (signed byte*) COSH#10 ← phi( anim/(signed byte*) COSH#11 anim::@30/(signed byte*) COSH#12 )
  (signed byte) sz#14 ← phi( anim/(signed byte) sz#16 anim::@30/(signed byte) sz#17 )
  (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::@2
  to:anim::@return
anim::@2: scope:[anim]  from anim::@1
  (byte*) SCREEN#68 ← phi( anim::@1/(byte*) SCREEN#70 )
  (byte*) print_screen#58 ← phi( anim::@1/(byte*) print_screen#60 )
  (signed byte*) yp#11 ← phi( anim::@1/(signed byte*) yp#13 )
  (signed byte*) xp#11 ← phi( anim::@1/(signed byte*) xp#13 )
  (signed byte*) pp#11 ← phi( anim::@1/(signed byte*) pp#13 )
  (signed byte*) zr#12 ← phi( anim::@1/(signed byte*) zr#14 )
  (signed byte*) yr#12 ← phi( anim::@1/(signed byte*) yr#14 )
  (signed byte*) xr#12 ← phi( anim::@1/(signed byte*) xr#14 )
  (signed byte*) SINQ#8 ← phi( anim::@1/(signed byte*) SINQ#10 )
  (signed byte*) COSQ#8 ← phi( anim::@1/(signed byte*) COSQ#10 )
  (signed byte*) SINH#8 ← phi( anim::@1/(signed byte*) SINH#10 )
  (signed byte*) COSH#8 ← phi( anim::@1/(signed byte*) COSH#10 )
  (signed byte) sz#11 ← phi( anim::@1/(signed byte) sz#14 )
  (signed byte) sy#31 ← phi( anim::@1/(signed byte) sy#16 )
  (signed byte) sx#28 ← phi( anim::@1/(signed byte) sx#16 )
  to:anim::@4
anim::@4: scope:[anim]  from anim::@2 anim::@5
  (byte*) SCREEN#66 ← phi( anim::@2/(byte*) SCREEN#68 anim::@5/(byte*) SCREEN#69 )
  (byte*) print_screen#56 ← phi( anim::@2/(byte*) print_screen#58 anim::@5/(byte*) print_screen#59 )
  (signed byte*) yp#9 ← phi( anim::@2/(signed byte*) yp#11 anim::@5/(signed byte*) yp#12 )
  (signed byte*) xp#9 ← phi( anim::@2/(signed byte*) xp#11 anim::@5/(signed byte*) xp#12 )
  (signed byte*) pp#9 ← phi( anim::@2/(signed byte*) pp#11 anim::@5/(signed byte*) pp#12 )
  (signed byte*) zr#10 ← phi( anim::@2/(signed byte*) zr#12 anim::@5/(signed byte*) zr#13 )
  (signed byte*) yr#10 ← phi( anim::@2/(signed byte*) yr#12 anim::@5/(signed byte*) yr#13 )
  (signed byte*) xr#10 ← phi( anim::@2/(signed byte*) xr#12 anim::@5/(signed byte*) xr#13 )
  (signed byte*) SINQ#6 ← phi( anim::@2/(signed byte*) SINQ#8 anim::@5/(signed byte*) SINQ#9 )
  (signed byte*) COSQ#6 ← phi( anim::@2/(signed byte*) COSQ#8 anim::@5/(signed byte*) COSQ#9 )
  (signed byte*) SINH#6 ← phi( anim::@2/(signed byte*) SINH#8 anim::@5/(signed byte*) SINH#9 )
  (signed byte*) COSH#6 ← phi( anim::@2/(signed byte*) COSH#8 anim::@5/(signed byte*) COSH#9 )
  (signed byte) sz#8 ← phi( anim::@2/(signed byte) sz#11 anim::@5/(signed byte) sz#12 )
  (signed byte) sy#27 ← phi( anim::@2/(signed byte) sy#31 anim::@5/(signed byte) sy#32 )
  (signed byte) sx#25 ← phi( anim::@2/(signed byte) sx#28 anim::@5/(signed byte) sx#29 )
  (bool~) anim::$0 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 255
  if((bool~) anim::$0) goto anim::@5
  to:anim::@7
anim::@5: scope:[anim]  from anim::@4
  (byte*) SCREEN#69 ← phi( anim::@4/(byte*) SCREEN#66 )
  (byte*) print_screen#59 ← phi( anim::@4/(byte*) print_screen#56 )
  (signed byte*) yp#12 ← phi( anim::@4/(signed byte*) yp#9 )
  (signed byte*) xp#12 ← phi( anim::@4/(signed byte*) xp#9 )
  (signed byte*) pp#12 ← phi( anim::@4/(signed byte*) pp#9 )
  (signed byte*) zr#13 ← phi( anim::@4/(signed byte*) zr#10 )
  (signed byte*) yr#13 ← phi( anim::@4/(signed byte*) yr#10 )
  (signed byte*) xr#13 ← phi( anim::@4/(signed byte*) xr#10 )
  (signed byte*) SINQ#9 ← phi( anim::@4/(signed byte*) SINQ#6 )
  (signed byte*) COSQ#9 ← phi( anim::@4/(signed byte*) COSQ#6 )
  (signed byte*) SINH#9 ← phi( anim::@4/(signed byte*) SINH#6 )
  (signed byte*) COSH#9 ← phi( anim::@4/(signed byte*) COSH#6 )
  (signed byte) sz#12 ← phi( anim::@4/(signed byte) sz#8 )
  (signed byte) sy#32 ← phi( anim::@4/(signed byte) sy#27 )
  (signed byte) sx#29 ← phi( anim::@4/(signed byte) sx#25 )
  to:anim::@4
anim::@7: scope:[anim]  from anim::@4 anim::@8
  (byte*) SCREEN#65 ← phi( anim::@4/(byte*) SCREEN#66 anim::@8/(byte*) SCREEN#67 )
  (byte*) print_screen#55 ← phi( anim::@4/(byte*) print_screen#56 anim::@8/(byte*) print_screen#57 )
  (signed byte*) yp#8 ← phi( anim::@4/(signed byte*) yp#9 anim::@8/(signed byte*) yp#10 )
  (signed byte*) xp#8 ← phi( anim::@4/(signed byte*) xp#9 anim::@8/(signed byte*) xp#10 )
  (signed byte*) pp#8 ← phi( anim::@4/(signed byte*) pp#9 anim::@8/(signed byte*) pp#10 )
  (signed byte*) zr#9 ← phi( anim::@4/(signed byte*) zr#10 anim::@8/(signed byte*) zr#11 )
  (signed byte*) yr#9 ← phi( anim::@4/(signed byte*) yr#10 anim::@8/(signed byte*) yr#11 )
  (signed byte*) xr#9 ← phi( anim::@4/(signed byte*) xr#10 anim::@8/(signed byte*) xr#11 )
  (signed byte*) SINQ#5 ← phi( anim::@4/(signed byte*) SINQ#6 anim::@8/(signed byte*) SINQ#7 )
  (signed byte*) COSQ#5 ← phi( anim::@4/(signed byte*) COSQ#6 anim::@8/(signed byte*) COSQ#7 )
  (signed byte*) SINH#5 ← phi( anim::@4/(signed byte*) SINH#6 anim::@8/(signed byte*) SINH#7 )
  (signed byte*) COSH#5 ← phi( anim::@4/(signed byte*) COSH#6 anim::@8/(signed byte*) COSH#7 )
  (signed byte) sz#6 ← phi( anim::@4/(signed byte) sz#8 anim::@8/(signed byte) sz#9 )
  (signed byte) sy#22 ← phi( anim::@4/(signed byte) sy#27 anim::@8/(signed byte) sy#28 )
  (signed byte) sx#21 ← phi( anim::@4/(signed byte) sx#25 anim::@8/(signed byte) sx#26 )
  (bool~) anim::$1 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 254
  if((bool~) anim::$1) goto anim::@8
  to:anim::@10
anim::@8: scope:[anim]  from anim::@7
  (byte*) SCREEN#67 ← phi( anim::@7/(byte*) SCREEN#65 )
  (byte*) print_screen#57 ← phi( anim::@7/(byte*) print_screen#55 )
  (signed byte*) yp#10 ← phi( anim::@7/(signed byte*) yp#8 )
  (signed byte*) xp#10 ← phi( anim::@7/(signed byte*) xp#8 )
  (signed byte*) pp#10 ← phi( anim::@7/(signed byte*) pp#8 )
  (signed byte*) zr#11 ← phi( anim::@7/(signed byte*) zr#9 )
  (signed byte*) yr#11 ← phi( anim::@7/(signed byte*) yr#9 )
  (signed byte*) xr#11 ← phi( anim::@7/(signed byte*) xr#9 )
  (signed byte*) SINQ#7 ← phi( anim::@7/(signed byte*) SINQ#5 )
  (signed byte*) COSQ#7 ← phi( anim::@7/(signed byte*) COSQ#5 )
  (signed byte*) SINH#7 ← phi( anim::@7/(signed byte*) SINH#5 )
  (signed byte*) COSH#7 ← phi( anim::@7/(signed byte*) COSH#5 )
  (signed byte) sz#9 ← phi( anim::@7/(signed byte) sz#6 )
  (signed byte) sy#28 ← phi( anim::@7/(signed byte) sy#22 )
  (signed byte) sx#26 ← phi( anim::@7/(signed byte) sx#21 )
  to:anim::@7
anim::@10: scope:[anim]  from anim::@11 anim::@7
  (byte*) SCREEN#63 ← phi( anim::@11/(byte*) SCREEN#64 anim::@7/(byte*) SCREEN#65 )
  (byte*) print_screen#53 ← phi( anim::@11/(byte*) print_screen#54 anim::@7/(byte*) print_screen#55 )
  (signed byte*) yp#6 ← phi( anim::@11/(signed byte*) yp#7 anim::@7/(signed byte*) yp#8 )
  (signed byte*) xp#6 ← phi( anim::@11/(signed byte*) xp#7 anim::@7/(signed byte*) xp#8 )
  (signed byte*) pp#6 ← phi( anim::@11/(signed byte*) pp#7 anim::@7/(signed byte*) pp#8 )
  (signed byte*) zr#7 ← phi( anim::@11/(signed byte*) zr#8 anim::@7/(signed byte*) zr#9 )
  (signed byte*) yr#7 ← phi( anim::@11/(signed byte*) yr#8 anim::@7/(signed byte*) yr#9 )
  (signed byte*) xr#7 ← phi( anim::@11/(signed byte*) xr#8 anim::@7/(signed byte*) xr#9 )
  (signed byte*) SINQ#3 ← phi( anim::@11/(signed byte*) SINQ#4 anim::@7/(signed byte*) SINQ#5 )
  (signed byte*) COSQ#3 ← phi( anim::@11/(signed byte*) COSQ#4 anim::@7/(signed byte*) COSQ#5 )
  (signed byte*) SINH#3 ← phi( anim::@11/(signed byte*) SINH#4 anim::@7/(signed byte*) SINH#5 )
  (signed byte*) COSH#3 ← phi( anim::@11/(signed byte*) COSH#4 anim::@7/(signed byte*) COSH#5 )
  (signed byte) sz#3 ← phi( anim::@11/(signed byte) sz#5 anim::@7/(signed byte) sz#6 )
  (signed byte) sy#14 ← phi( anim::@11/(signed byte) sy#21 anim::@7/(signed byte) sy#22 )
  (signed byte) sx#14 ← phi( anim::@11/(signed byte) sx#20 anim::@7/(signed byte) sx#21 )
  (bool~) anim::$2 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 253
  if((bool~) anim::$2) goto anim::@11
  to:anim::@12
anim::@11: scope:[anim]  from anim::@10
  (byte*) SCREEN#64 ← phi( anim::@10/(byte*) SCREEN#63 )
  (byte*) print_screen#54 ← phi( anim::@10/(byte*) print_screen#53 )
  (signed byte*) yp#7 ← phi( anim::@10/(signed byte*) yp#6 )
  (signed byte*) xp#7 ← phi( anim::@10/(signed byte*) xp#6 )
  (signed byte*) pp#7 ← phi( anim::@10/(signed byte*) pp#6 )
  (signed byte*) zr#8 ← phi( anim::@10/(signed byte*) zr#7 )
  (signed byte*) yr#8 ← phi( anim::@10/(signed byte*) yr#7 )
  (signed byte*) xr#8 ← phi( anim::@10/(signed byte*) xr#7 )
  (signed byte*) SINQ#4 ← phi( anim::@10/(signed byte*) SINQ#3 )
  (signed byte*) COSQ#4 ← phi( anim::@10/(signed byte*) COSQ#3 )
  (signed byte*) SINH#4 ← phi( anim::@10/(signed byte*) SINH#3 )
  (signed byte*) COSH#4 ← phi( anim::@10/(signed byte*) COSH#3 )
  (signed byte) sz#5 ← phi( anim::@10/(signed byte) sz#3 )
  (signed byte) sy#21 ← phi( anim::@10/(signed byte) sy#14 )
  (signed byte) sx#20 ← phi( anim::@10/(signed byte) sx#14 )
  to:anim::@10
anim::@12: scope:[anim]  from anim::@10
  (byte*) SCREEN#62 ← phi( anim::@10/(byte*) SCREEN#63 )
  (byte*) print_screen#51 ← phi( anim::@10/(byte*) print_screen#53 )
  (signed byte*) yp#5 ← phi( anim::@10/(signed byte*) yp#6 )
  (signed byte*) xp#5 ← phi( anim::@10/(signed byte*) xp#6 )
  (signed byte*) pp#5 ← phi( anim::@10/(signed byte*) pp#6 )
  (signed byte*) zr#6 ← phi( anim::@10/(signed byte*) zr#7 )
  (signed byte*) yr#6 ← phi( anim::@10/(signed byte*) yr#7 )
  (signed byte*) xr#6 ← phi( anim::@10/(signed byte*) xr#7 )
  (signed byte*) SINQ#2 ← phi( anim::@10/(signed byte*) SINQ#3 )
  (signed byte*) COSQ#2 ← phi( anim::@10/(signed byte*) COSQ#3 )
  (signed byte*) SINH#2 ← phi( anim::@10/(signed byte*) SINH#3 )
  (signed byte*) COSH#2 ← phi( anim::@10/(signed byte*) COSH#3 )
  (signed byte) sz#1 ← phi( anim::@10/(signed byte) sz#3 )
  (signed byte) sy#8 ← phi( anim::@10/(signed byte) sy#14 )
  (signed byte) sx#8 ← phi( anim::@10/(signed byte) sx#14 )
  *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0)
  (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#8
  (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#8
  (signed byte) calculate_matrix::sz#0 ← (signed byte) sz#1
  call calculate_matrix 
  to:anim::@27
anim::@27: scope:[anim]  from anim::@12
  (byte*) SCREEN#61 ← phi( anim::@12/(byte*) SCREEN#62 )
  (signed byte*) SINQ#20 ← phi( anim::@12/(signed byte*) SINQ#2 )
  (signed byte*) COSQ#20 ← phi( anim::@12/(signed byte*) COSQ#2 )
  (signed byte*) SINH#20 ← phi( anim::@12/(signed byte*) SINH#2 )
  (signed byte*) COSH#20 ← phi( anim::@12/(signed byte*) COSH#2 )
  (signed byte) sz#27 ← phi( anim::@12/(signed byte) sz#1 )
  (byte*) print_screen#48 ← phi( anim::@12/(byte*) print_screen#51 )
  (signed byte) sy#34 ← phi( anim::@12/(signed byte) sy#8 )
  (signed byte) sx#31 ← phi( anim::@12/(signed byte) sx#8 )
  (signed byte*) yp#4 ← phi( anim::@12/(signed byte*) yp#5 )
  (signed byte*) xp#4 ← phi( anim::@12/(signed byte*) xp#5 )
  (signed byte*) pp#4 ← phi( anim::@12/(signed byte*) pp#5 )
  (signed byte*) zr#5 ← phi( anim::@12/(signed byte*) zr#6 )
  (signed byte*) yr#5 ← phi( anim::@12/(signed byte*) yr#6 )
  (signed byte*) xr#5 ← phi( anim::@12/(signed byte*) xr#6 )
  call store_matrix 
  to:anim::@28
anim::@28: scope:[anim]  from anim::@27
  (byte*) SCREEN#60 ← phi( anim::@27/(byte*) SCREEN#61 )
  (signed byte*) SINQ#19 ← phi( anim::@27/(signed byte*) SINQ#20 )
  (signed byte*) COSQ#19 ← phi( anim::@27/(signed byte*) COSQ#20 )
  (signed byte*) SINH#19 ← phi( anim::@27/(signed byte*) SINH#20 )
  (signed byte*) COSH#19 ← phi( anim::@27/(signed byte*) COSH#20 )
  (signed byte) sz#26 ← phi( anim::@27/(signed byte) sz#27 )
  (byte*) print_screen#46 ← phi( anim::@27/(byte*) print_screen#48 )
  (signed byte) sy#33 ← phi( anim::@27/(signed byte) sy#34 )
  (signed byte) sx#30 ← phi( anim::@27/(signed byte) sx#31 )
  (signed byte*) yp#3 ← phi( anim::@27/(signed byte*) yp#4 )
  (signed byte*) xp#3 ← phi( anim::@27/(signed byte*) xp#4 )
  (signed byte*) pp#3 ← phi( anim::@27/(signed byte*) pp#4 )
  (signed byte*) zr#4 ← phi( anim::@27/(signed byte*) zr#5 )
  (signed byte*) yr#4 ← phi( anim::@27/(signed byte*) yr#5 )
  (signed byte*) xr#4 ← phi( anim::@27/(signed byte*) xr#5 )
  (byte) anim::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:anim::@13
anim::@13: scope:[anim]  from anim::@28 anim::@29
  (byte*) SCREEN#59 ← phi( anim::@28/(byte*) SCREEN#60 anim::@29/(byte*) SCREEN#58 )
  (signed byte*) SINQ#18 ← phi( anim::@28/(signed byte*) SINQ#19 anim::@29/(signed byte*) SINQ#16 )
  (signed byte*) COSQ#18 ← phi( anim::@28/(signed byte*) COSQ#19 anim::@29/(signed byte*) COSQ#16 )
  (signed byte*) SINH#18 ← phi( anim::@28/(signed byte*) SINH#19 anim::@29/(signed byte*) SINH#16 )
  (signed byte*) COSH#18 ← phi( anim::@28/(signed byte*) COSH#19 anim::@29/(signed byte*) COSH#16 )
  (signed byte) sz#24 ← phi( anim::@28/(signed byte) sz#26 anim::@29/(signed byte) sz#22 )
  (byte*) print_screen#45 ← phi( anim::@28/(byte*) print_screen#46 anim::@29/(byte*) print_screen#43 )
  (signed byte) sy#29 ← phi( anim::@28/(signed byte) sy#33 anim::@29/(signed byte) sy#23 )
  (signed byte) sx#27 ← phi( anim::@28/(signed byte) sx#30 anim::@29/(signed byte) sx#22 )
  (signed byte*) yp#2 ← phi( anim::@28/(signed byte*) yp#3 anim::@29/(signed byte*) yp#1 )
  (signed byte*) xp#2 ← phi( anim::@28/(signed byte*) xp#3 anim::@29/(signed byte*) xp#1 )
  (signed byte*) pp#2 ← phi( anim::@28/(signed byte*) pp#3 anim::@29/(signed byte*) pp#1 )
  (signed byte*) zr#3 ← phi( anim::@28/(signed byte*) zr#4 anim::@29/(signed byte*) zr#1 )
  (signed byte*) yr#3 ← phi( anim::@28/(signed byte*) yr#4 anim::@29/(signed byte*) yr#1 )
  (signed byte*) xr#3 ← phi( anim::@28/(signed byte*) xr#4 anim::@29/(signed byte*) xr#1 )
  (byte) anim::i#2 ← phi( anim::@28/(byte) anim::i#0 anim::@29/(byte) anim::i#1 )
  *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0)
  (signed byte) rotate_matrix::x#0 ← *((signed byte[8]) xs#0 + (byte) anim::i#2)
  (signed byte) rotate_matrix::y#0 ← *((signed byte[8]) ys#0 + (byte) anim::i#2)
  (signed byte) rotate_matrix::z#0 ← *((signed byte[8]) zs#0 + (byte) anim::i#2)
  call rotate_matrix 
  to:anim::@29
anim::@29: scope:[anim]  from anim::@13
  (byte*) SCREEN#58 ← phi( anim::@13/(byte*) SCREEN#59 )
  (signed byte*) SINQ#16 ← phi( anim::@13/(signed byte*) SINQ#18 )
  (signed byte*) COSQ#16 ← phi( anim::@13/(signed byte*) COSQ#18 )
  (signed byte*) SINH#16 ← phi( anim::@13/(signed byte*) SINH#18 )
  (signed byte*) COSH#16 ← phi( anim::@13/(signed byte*) COSH#18 )
  (signed byte) sz#22 ← phi( anim::@13/(signed byte) sz#24 )
  (byte*) print_screen#43 ← phi( anim::@13/(byte*) print_screen#45 )
  (signed byte) sy#23 ← phi( anim::@13/(signed byte) sy#29 )
  (signed byte) sx#22 ← phi( anim::@13/(signed byte) sx#27 )
  (signed byte*) yp#1 ← phi( anim::@13/(signed byte*) yp#2 )
  (signed byte*) xp#1 ← phi( anim::@13/(signed byte*) xp#2 )
  (signed byte*) pp#1 ← phi( anim::@13/(signed byte*) pp#2 )
  (signed byte*) zr#1 ← phi( anim::@13/(signed byte*) zr#3 )
  (signed byte*) yr#1 ← phi( anim::@13/(signed byte*) yr#3 )
  (byte) anim::i#3 ← phi( anim::@13/(byte) anim::i#2 )
  (signed byte*) xr#1 ← phi( anim::@13/(signed byte*) xr#3 )
  *((signed byte[8]) xrs#0 + (byte) anim::i#3) ← *((signed byte*) xr#1)
  *((signed byte[8]) yrs#0 + (byte) anim::i#3) ← *((signed byte*) yr#1)
  *((signed byte[8]) zrs#0 + (byte) anim::i#3) ← *((signed byte*) zr#1)
  *((signed byte[8]) pps#0 + (byte) anim::i#3) ← *((signed byte*) pp#1)
  *((signed byte[8]) xps#0 + (byte) anim::i#3) ← *((signed byte*) xp#1)
  *((signed byte[8]) yps#0 + (byte) anim::i#3) ← *((signed byte*) yp#1)
  (byte~) anim::$6 ← (byte) anim::i#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) anim::i2#0 ← (byte~) anim::$6
  (byte~) anim::$7 ← ((byte)) *((signed byte*) xp#1)
  (byte/word/signed word/dword/signed dword~) anim::$8 ← (byte/word/signed word/dword/signed dword) 128 + (byte~) anim::$7
  *((byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$8
  (byte~) anim::$9 ← ((byte)) *((signed byte*) yp#1)
  (byte/word/signed word/dword/signed dword~) anim::$10 ← (byte/word/signed word/dword/signed dword) 128 + (byte~) anim::$9
  *((byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$10
  (byte) anim::i#1 ← (byte) anim::i#3 + rangenext(0,7)
  (bool~) anim::$11 ← (byte) anim::i#1 != rangelast(0,7)
  if((bool~) anim::$11) goto anim::@13
  to:anim::@25
anim::@25: scope:[anim]  from anim::@29
  (byte*) SCREEN#57 ← phi( anim::@29/(byte*) SCREEN#58 )
  (signed byte*) yp#17 ← phi( anim::@29/(signed byte*) yp#1 )
  (signed byte*) xp#17 ← phi( anim::@29/(signed byte*) xp#1 )
  (signed byte*) pp#17 ← phi( anim::@29/(signed byte*) pp#1 )
  (signed byte*) zr#18 ← phi( anim::@29/(signed byte*) zr#1 )
  (signed byte*) yr#18 ← phi( anim::@29/(signed byte*) yr#1 )
  (signed byte*) xr#18 ← phi( anim::@29/(signed byte*) xr#1 )
  (signed byte*) SINQ#14 ← phi( anim::@29/(signed byte*) SINQ#16 )
  (signed byte*) COSQ#14 ← phi( anim::@29/(signed byte*) COSQ#16 )
  (signed byte*) SINH#14 ← phi( anim::@29/(signed byte*) SINH#16 )
  (signed byte*) COSH#14 ← phi( anim::@29/(signed byte*) COSH#16 )
  (signed byte) sz#20 ← phi( anim::@29/(signed byte) sz#22 )
  (byte*) print_screen#30 ← phi( anim::@29/(byte*) print_screen#43 )
  (signed byte) sy#15 ← phi( anim::@29/(signed byte) sy#23 )
  (signed byte) sx#15 ← phi( anim::@29/(signed byte) sx#22 )
  *((byte*) BORDERCOL#0) ← (byte) LIGHT_GREY#0
  call debug_print 
  to:anim::@30
anim::@30: scope:[anim]  from anim::@25
  (byte*) SCREEN#72 ← phi( anim::@25/(byte*) SCREEN#57 )
  (byte*) print_screen#62 ← phi( anim::@25/(byte*) print_screen#30 )
  (signed byte*) yp#15 ← phi( anim::@25/(signed byte*) yp#17 )
  (signed byte*) xp#15 ← phi( anim::@25/(signed byte*) xp#17 )
  (signed byte*) pp#15 ← phi( anim::@25/(signed byte*) pp#17 )
  (signed byte*) zr#16 ← phi( anim::@25/(signed byte*) zr#18 )
  (signed byte*) yr#16 ← phi( anim::@25/(signed byte*) yr#18 )
  (signed byte*) xr#16 ← phi( anim::@25/(signed byte*) xr#18 )
  (signed byte*) SINQ#12 ← phi( anim::@25/(signed byte*) SINQ#14 )
  (signed byte*) COSQ#12 ← phi( anim::@25/(signed byte*) COSQ#14 )
  (signed byte*) SINH#12 ← phi( anim::@25/(signed byte*) SINH#14 )
  (signed byte*) COSH#12 ← phi( anim::@25/(signed byte*) COSH#14 )
  (signed byte) sz#17 ← phi( anim::@25/(signed byte) sz#20 )
  (signed byte) sy#9 ← phi( anim::@25/(signed byte) sy#15 )
  (signed byte) sx#9 ← phi( anim::@25/(signed byte) sx#15 )
  *((byte*) BORDERCOL#0) ← (byte) LIGHT_BLUE#0
  (signed byte) sx#3 ← (signed byte) sx#9 + (byte/signed byte/word/signed word/dword/signed dword) 2
  (signed byte) sy#3 ← (signed byte) sy#9 - (byte/signed byte/word/signed word/dword/signed dword) 3
  to:anim::@1
anim::@return: scope:[anim]  from anim::@1
  (signed byte) sy#10 ← phi( anim::@1/(signed byte) sy#16 )
  (signed byte) sx#10 ← phi( anim::@1/(signed byte) sx#16 )
  (signed byte) sx#4 ← (signed byte) sx#10
  (signed byte) sy#4 ← (signed byte) sy#10
  return 
  to:@return
debug_print_init: scope:[debug_print_init]  from main::@1
  (byte*) SCREEN#15 ← phi( main::@1/(byte*) SCREEN#17 )
  (byte*) print_char_cursor#16 ← phi( main::@1/(byte*) print_char_cursor#14 )
  (byte*) print_line_cursor#16 ← phi( main::@1/(byte*) print_line_cursor#14 )
  (byte*) print_screen#16 ← phi( main::@1/(byte*) print_screen#29 )
  call print_cls 
  to:debug_print_init::@5
debug_print_init::@5: scope:[debug_print_init]  from debug_print_init
  (byte*) SCREEN#1 ← phi( debug_print_init/(byte*) SCREEN#15 )
  (byte*) print_char_cursor#11 ← phi( debug_print_init/(byte*) print_char_cursor#2 )
  (byte*) print_line_cursor#11 ← phi( debug_print_init/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#11
  (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#11
  (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$1 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte*~) debug_print_init::$2 ← (byte*) SCREEN#1 + (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$1
  (byte*~) debug_print_init::$3 ← (byte*~) debug_print_init::$2 + (byte/signed byte/word/signed word/dword/signed dword) 34
  (byte*) print_str_at::str#1 ← (const string) debug_print_init::str
  (byte*) print_str_at::at#1 ← (byte*~) debug_print_init::$3
  call print_str_at 
  to:debug_print_init::@6
debug_print_init::@6: scope:[debug_print_init]  from debug_print_init::@5
  (byte*) print_char_cursor#40 ← phi( debug_print_init::@5/(byte*) print_char_cursor#5 )
  (byte*) print_line_cursor#40 ← phi( debug_print_init::@5/(byte*) print_line_cursor#5 )
  (byte*) SCREEN#2 ← phi( debug_print_init::@5/(byte*) SCREEN#1 )
  (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$5 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte*~) debug_print_init::$6 ← (byte*) SCREEN#2 + (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$5
  (byte*~) debug_print_init::$7 ← (byte*~) debug_print_init::$6 + (byte/signed byte/word/signed word/dword/signed dword) 34
  (byte*) print_str_at::str#2 ← (const string) debug_print_init::str1
  (byte*) print_str_at::at#2 ← (byte*~) debug_print_init::$7
  call print_str_at 
  to:debug_print_init::@7
debug_print_init::@7: scope:[debug_print_init]  from debug_print_init::@6
  (byte*) print_char_cursor#39 ← phi( debug_print_init::@6/(byte*) print_char_cursor#40 )
  (byte*) print_line_cursor#39 ← phi( debug_print_init::@6/(byte*) print_line_cursor#40 )
  (byte*) SCREEN#3 ← phi( debug_print_init::@6/(byte*) SCREEN#2 )
  (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$9 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 2
  (byte*~) debug_print_init::$10 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$9
  (byte*~) debug_print_init::$11 ← (byte*~) debug_print_init::$10 + (byte/signed byte/word/signed word/dword/signed dword) 34
  (byte*) print_str_at::str#3 ← (const string) debug_print_init::str2
  (byte*) print_str_at::at#3 ← (byte*~) debug_print_init::$11
  call print_str_at 
  to:debug_print_init::@8
debug_print_init::@8: scope:[debug_print_init]  from debug_print_init::@7
  (byte*) print_char_cursor#38 ← phi( debug_print_init::@7/(byte*) print_char_cursor#39 )
  (byte*) print_line_cursor#38 ← phi( debug_print_init::@7/(byte*) print_line_cursor#39 )
  (byte*) SCREEN#4 ← phi( debug_print_init::@7/(byte*) SCREEN#3 )
  (word/signed word/dword/signed dword~) debug_print_init::$13 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 16
  (byte*~) debug_print_init::$14 ← (byte*) SCREEN#4 + (word/signed word/dword/signed dword~) debug_print_init::$13
  (byte*) print_str_at::str#4 ← (const string) debug_print_init::str3
  (byte*) print_str_at::at#4 ← (byte*~) debug_print_init::$14
  call print_str_at 
  to:debug_print_init::@9
debug_print_init::@9: scope:[debug_print_init]  from debug_print_init::@8
  (byte*) print_char_cursor#37 ← phi( debug_print_init::@8/(byte*) print_char_cursor#38 )
  (byte*) print_line_cursor#37 ← phi( debug_print_init::@8/(byte*) print_line_cursor#38 )
  (byte*) SCREEN#5 ← phi( debug_print_init::@8/(byte*) SCREEN#4 )
  (word/signed word/dword/signed dword~) debug_print_init::$16 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 17
  (byte*~) debug_print_init::$17 ← (byte*) SCREEN#5 + (word/signed word/dword/signed dword~) debug_print_init::$16
  (byte*) print_str_at::str#5 ← (const string) debug_print_init::str4
  (byte*) print_str_at::at#5 ← (byte*~) debug_print_init::$17
  call print_str_at 
  to:debug_print_init::@10
debug_print_init::@10: scope:[debug_print_init]  from debug_print_init::@9
  (byte*) print_char_cursor#36 ← phi( debug_print_init::@9/(byte*) print_char_cursor#37 )
  (byte*) print_line_cursor#36 ← phi( debug_print_init::@9/(byte*) print_line_cursor#37 )
  (byte*) SCREEN#6 ← phi( debug_print_init::@9/(byte*) SCREEN#5 )
  (word/signed word/dword/signed dword~) debug_print_init::$19 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 18
  (byte*~) debug_print_init::$20 ← (byte*) SCREEN#6 + (word/signed word/dword/signed dword~) debug_print_init::$19
  (byte*) print_str_at::str#6 ← (const string) debug_print_init::str5
  (byte*) print_str_at::at#6 ← (byte*~) debug_print_init::$20
  call print_str_at 
  to:debug_print_init::@11
debug_print_init::@11: scope:[debug_print_init]  from debug_print_init::@10
  (byte*) print_char_cursor#35 ← phi( debug_print_init::@10/(byte*) print_char_cursor#36 )
  (byte*) print_line_cursor#35 ← phi( debug_print_init::@10/(byte*) print_line_cursor#36 )
  (byte*) SCREEN#7 ← phi( debug_print_init::@10/(byte*) SCREEN#6 )
  (word/signed word/dword/signed dword~) debug_print_init::$22 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 19
  (byte*~) debug_print_init::$23 ← (byte*) SCREEN#7 + (word/signed word/dword/signed dword~) debug_print_init::$22
  (byte*) print_str_at::str#7 ← (const string) debug_print_init::str6
  (byte*) print_str_at::at#7 ← (byte*~) debug_print_init::$23
  call print_str_at 
  to:debug_print_init::@12
debug_print_init::@12: scope:[debug_print_init]  from debug_print_init::@11
  (byte*) print_char_cursor#34 ← phi( debug_print_init::@11/(byte*) print_char_cursor#35 )
  (byte*) print_line_cursor#34 ← phi( debug_print_init::@11/(byte*) print_line_cursor#35 )
  (byte*) SCREEN#8 ← phi( debug_print_init::@11/(byte*) SCREEN#7 )
  (word/signed word/dword/signed dword~) debug_print_init::$25 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 20
  (byte*~) debug_print_init::$26 ← (byte*) SCREEN#8 + (word/signed word/dword/signed dword~) debug_print_init::$25
  (byte*) print_str_at::str#8 ← (const string) debug_print_init::str7
  (byte*) print_str_at::at#8 ← (byte*~) debug_print_init::$26
  call print_str_at 
  to:debug_print_init::@13
debug_print_init::@13: scope:[debug_print_init]  from debug_print_init::@12
  (byte*) print_char_cursor#33 ← phi( debug_print_init::@12/(byte*) print_char_cursor#34 )
  (byte*) print_line_cursor#33 ← phi( debug_print_init::@12/(byte*) print_line_cursor#34 )
  (byte*) SCREEN#9 ← phi( debug_print_init::@12/(byte*) SCREEN#8 )
  (word/signed word/dword/signed dword~) debug_print_init::$28 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 21
  (byte*~) debug_print_init::$29 ← (byte*) SCREEN#9 + (word/signed word/dword/signed dword~) debug_print_init::$28
  (byte*) print_str_at::str#9 ← (const string) debug_print_init::str8
  (byte*) print_str_at::at#9 ← (byte*~) debug_print_init::$29
  call print_str_at 
  to:debug_print_init::@14
debug_print_init::@14: scope:[debug_print_init]  from debug_print_init::@13
  (byte*) print_char_cursor#32 ← phi( debug_print_init::@13/(byte*) print_char_cursor#33 )
  (byte*) print_line_cursor#32 ← phi( debug_print_init::@13/(byte*) print_line_cursor#33 )
  (byte*) SCREEN#10 ← phi( debug_print_init::@13/(byte*) SCREEN#9 )
  (word/signed word/dword/signed dword~) debug_print_init::$31 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 22
  (byte*~) debug_print_init::$32 ← (byte*) SCREEN#10 + (word/signed word/dword/signed dword~) debug_print_init::$31
  (byte*) print_str_at::str#10 ← (const string) debug_print_init::str9
  (byte*) print_str_at::at#10 ← (byte*~) debug_print_init::$32
  call print_str_at 
  to:debug_print_init::@15
debug_print_init::@15: scope:[debug_print_init]  from debug_print_init::@14
  (byte*) print_char_cursor#31 ← phi( debug_print_init::@14/(byte*) print_char_cursor#32 )
  (byte*) print_line_cursor#31 ← phi( debug_print_init::@14/(byte*) print_line_cursor#32 )
  (byte*) SCREEN#11 ← phi( debug_print_init::@14/(byte*) SCREEN#10 )
  (word/signed word/dword/signed dword~) debug_print_init::$34 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 23
  (byte*~) debug_print_init::$35 ← (byte*) SCREEN#11 + (word/signed word/dword/signed dword~) debug_print_init::$34
  (byte*) print_str_at::str#11 ← (const string) debug_print_init::str10
  (byte*) print_str_at::at#11 ← (byte*~) debug_print_init::$35
  call print_str_at 
  to:debug_print_init::@16
debug_print_init::@16: scope:[debug_print_init]  from debug_print_init::@15
  (byte*) print_char_cursor#30 ← phi( debug_print_init::@15/(byte*) print_char_cursor#31 )
  (byte*) print_line_cursor#30 ← phi( debug_print_init::@15/(byte*) print_line_cursor#31 )
  (byte*) SCREEN#12 ← phi( debug_print_init::@15/(byte*) SCREEN#11 )
  (word/signed word/dword/signed dword~) debug_print_init::$37 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 24
  (byte*~) debug_print_init::$38 ← (byte*) SCREEN#12 + (word/signed word/dword/signed dword~) debug_print_init::$37
  (byte*) print_str_at::str#12 ← (const string) debug_print_init::str11
  (byte*) print_str_at::at#12 ← (byte*~) debug_print_init::$38
  call print_str_at 
  to:debug_print_init::@17
debug_print_init::@17: scope:[debug_print_init]  from debug_print_init::@16
  (byte*) print_char_cursor#29 ← phi( debug_print_init::@16/(byte*) print_char_cursor#30 )
  (byte*) print_line_cursor#29 ← phi( debug_print_init::@16/(byte*) print_line_cursor#30 )
  (byte*) SCREEN#13 ← phi( debug_print_init::@16/(byte*) SCREEN#12 )
  (word/signed word/dword/signed dword~) debug_print_init::$40 ← (byte/signed byte/word/signed word/dword/signed dword) 16 * (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*~) debug_print_init::$41 ← (byte*) SCREEN#13 + (word/signed word/dword/signed dword~) debug_print_init::$40
  (byte*) debug_print_init::at_line#0 ← (byte*~) debug_print_init::$41
  (byte) debug_print_init::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte*) debug_print_init::COLS#0 ← ((byte*)) (word/dword/signed dword) 55296
  (word/signed word/dword/signed dword~) debug_print_init::$42 ← (byte/signed byte/word/signed word/dword/signed dword) 16 * (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*~) debug_print_init::$43 ← (byte*) debug_print_init::COLS#0 + (word/signed word/dword/signed dword~) debug_print_init::$42
  (byte*) debug_print_init::at_cols#0 ← (byte*~) debug_print_init::$43
  (byte) debug_print_init::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:debug_print_init::@1
debug_print_init::@1: scope:[debug_print_init]  from debug_print_init::@17 debug_print_init::@3
  (byte*) print_char_cursor#28 ← phi( debug_print_init::@17/(byte*) print_char_cursor#29 debug_print_init::@3/(byte*) print_char_cursor#17 )
  (byte*) print_line_cursor#28 ← phi( debug_print_init::@17/(byte*) print_line_cursor#29 debug_print_init::@3/(byte*) print_line_cursor#17 )
  (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/signed byte/word/signed word/dword/signed dword~) debug_print_init::$44 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte*~) debug_print_init::$45 ← (byte*) debug_print_init::at_line#1 + (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$44
  (byte*~) debug_print_init::$46 ← (byte*~) debug_print_init::$45 + (byte) debug_print_init::c#2
  (signed byte) print_sbyte_at::b#1 ← *((signed byte[8]) xs#0 + (byte) debug_print_init::i#2)
  (byte*) print_sbyte_at::at#0 ← (byte*~) debug_print_init::$46
  call print_sbyte_at 
  to:debug_print_init::@18
debug_print_init::@18: scope:[debug_print_init]  from debug_print_init::@1
  (byte*) print_char_cursor#27 ← phi( debug_print_init::@1/(byte*) print_char_cursor#28 )
  (byte*) print_line_cursor#27 ← phi( debug_print_init::@1/(byte*) print_line_cursor#28 )
  (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/signed byte/word/signed word/dword/signed dword~) debug_print_init::$48 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte*~) debug_print_init::$49 ← (byte*) debug_print_init::at_line#2 + (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$48
  (byte*~) debug_print_init::$50 ← (byte*~) debug_print_init::$49 + (byte) debug_print_init::c#3
  (signed byte) print_sbyte_at::b#2 ← *((signed byte[8]) ys#0 + (byte) debug_print_init::i#3)
  (byte*) print_sbyte_at::at#1 ← (byte*~) debug_print_init::$50
  call print_sbyte_at 
  to:debug_print_init::@19
debug_print_init::@19: scope:[debug_print_init]  from debug_print_init::@18
  (byte*) print_char_cursor#25 ← phi( debug_print_init::@18/(byte*) print_char_cursor#27 )
  (byte*) print_line_cursor#25 ← phi( debug_print_init::@18/(byte*) print_line_cursor#27 )
  (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/signed byte/word/signed word/dword/signed dword~) debug_print_init::$52 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 2
  (byte*~) debug_print_init::$53 ← (byte*) debug_print_init::at_line#3 + (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$52
  (byte*~) debug_print_init::$54 ← (byte*~) debug_print_init::$53 + (byte) debug_print_init::c#4
  (signed byte) print_sbyte_at::b#3 ← *((signed byte[8]) zs#0 + (byte) debug_print_init::i#4)
  (byte*) print_sbyte_at::at#2 ← (byte*~) debug_print_init::$54
  call print_sbyte_at 
  to:debug_print_init::@20
debug_print_init::@20: scope:[debug_print_init]  from debug_print_init::@19
  (byte*) print_char_cursor#22 ← phi( debug_print_init::@19/(byte*) print_char_cursor#25 )
  (byte*) print_line_cursor#22 ← phi( debug_print_init::@19/(byte*) print_line_cursor#25 )
  (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/signed byte/word/signed word/dword/signed dword) 0
  to:debug_print_init::@2
debug_print_init::@2: scope:[debug_print_init]  from debug_print_init::@2 debug_print_init::@20
  (byte*) print_char_cursor#20 ← phi( debug_print_init::@2/(byte*) print_char_cursor#20 debug_print_init::@20/(byte*) print_char_cursor#22 )
  (byte*) print_line_cursor#20 ← phi( debug_print_init::@2/(byte*) print_line_cursor#20 debug_print_init::@20/(byte*) print_line_cursor#22 )
  (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 )
  (byte/signed word/word/dword/signed dword~) debug_print_init::$56 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) debug_print_init::i#5
  (byte) debug_print_init::col#0 ← (byte/signed word/word/dword/signed dword~) debug_print_init::$56
  (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$57 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte*~) debug_print_init::$58 ← (byte*) debug_print_init::at_cols#1 + (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$57
  (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/signed byte/word/signed word/dword/signed dword~) debug_print_init::$61 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte*~) debug_print_init::$62 ← (byte*) debug_print_init::at_cols#1 + (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$61
  (byte*~) debug_print_init::$63 ← (byte*~) debug_print_init::$62 + (byte) debug_print_init::c#5
  (byte*~) debug_print_init::$64 ← (byte*~) debug_print_init::$63 + (byte) debug_print_init::j#2
  *((byte*~) debug_print_init::$64) ← (byte) debug_print_init::col#0
  (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$65 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 2
  (byte*~) debug_print_init::$66 ← (byte*) debug_print_init::at_cols#1 + (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$65
  (byte*~) debug_print_init::$67 ← (byte*~) debug_print_init::$66 + (byte) debug_print_init::c#5
  (byte*~) debug_print_init::$68 ← (byte*~) debug_print_init::$67 + (byte) debug_print_init::j#2
  *((byte*~) debug_print_init::$68) ← (byte) debug_print_init::col#0
  (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$69 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 3
  (byte*~) debug_print_init::$70 ← (byte*) debug_print_init::at_cols#1 + (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$69
  (byte*~) debug_print_init::$71 ← (byte*~) debug_print_init::$70 + (byte) debug_print_init::c#5
  (byte*~) debug_print_init::$72 ← (byte*~) debug_print_init::$71 + (byte) debug_print_init::j#2
  *((byte*~) debug_print_init::$72) ← (byte) debug_print_init::col#0
  (byte/word/signed word/dword/signed dword~) debug_print_init::$73 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte*~) debug_print_init::$74 ← (byte*) debug_print_init::at_cols#1 + (byte/word/signed word/dword/signed dword~) debug_print_init::$73
  (byte*~) debug_print_init::$75 ← (byte*~) debug_print_init::$74 + (byte) debug_print_init::c#5
  (byte*~) debug_print_init::$76 ← (byte*~) debug_print_init::$75 + (byte) debug_print_init::j#2
  *((byte*~) debug_print_init::$76) ← (byte) debug_print_init::col#0
  (byte/word/signed word/dword/signed dword~) debug_print_init::$77 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 5
  (byte*~) debug_print_init::$78 ← (byte*) debug_print_init::at_cols#1 + (byte/word/signed word/dword/signed dword~) debug_print_init::$77
  (byte*~) debug_print_init::$79 ← (byte*~) debug_print_init::$78 + (byte) debug_print_init::c#5
  (byte*~) debug_print_init::$80 ← (byte*~) debug_print_init::$79 + (byte) debug_print_init::j#2
  *((byte*~) debug_print_init::$80) ← (byte) debug_print_init::col#0
  (byte/word/signed word/dword/signed dword~) debug_print_init::$81 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 6
  (byte*~) debug_print_init::$82 ← (byte*) debug_print_init::at_cols#1 + (byte/word/signed word/dword/signed dword~) debug_print_init::$81
  (byte*~) debug_print_init::$83 ← (byte*~) debug_print_init::$82 + (byte) debug_print_init::c#5
  (byte*~) debug_print_init::$84 ← (byte*~) debug_print_init::$83 + (byte) debug_print_init::j#2
  *((byte*~) debug_print_init::$84) ← (byte) debug_print_init::col#0
  (word/signed word/dword/signed dword~) debug_print_init::$85 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 7
  (byte*~) debug_print_init::$86 ← (byte*) debug_print_init::at_cols#1 + (word/signed word/dword/signed dword~) debug_print_init::$85
  (byte*~) debug_print_init::$87 ← (byte*~) debug_print_init::$86 + (byte) debug_print_init::c#5
  (byte*~) debug_print_init::$88 ← (byte*~) debug_print_init::$87 + (byte) debug_print_init::j#2
  *((byte*~) debug_print_init::$88) ← (byte) debug_print_init::col#0
  (word/signed word/dword/signed dword~) debug_print_init::$89 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 8
  (byte*~) debug_print_init::$90 ← (byte*) debug_print_init::at_cols#1 + (word/signed word/dword/signed dword~) debug_print_init::$89
  (byte*~) debug_print_init::$91 ← (byte*~) debug_print_init::$90 + (byte) debug_print_init::c#5
  (byte*~) debug_print_init::$92 ← (byte*~) debug_print_init::$91 + (byte) debug_print_init::j#2
  *((byte*~) debug_print_init::$92) ← (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::$93 ← (byte) debug_print_init::j#1 != rangelast(0,3)
  if((bool~) debug_print_init::$93) 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*) print_char_cursor#17 ← phi( debug_print_init::@2/(byte*) print_char_cursor#20 )
  (byte*) print_line_cursor#17 ← phi( debug_print_init::@2/(byte*) print_line_cursor#20 )
  (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 + (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte) debug_print_init::i#1 ← (byte) debug_print_init::i#6 + rangenext(0,7)
  (bool~) debug_print_init::$94 ← (byte) debug_print_init::i#1 != rangelast(0,7)
  if((bool~) debug_print_init::$94) goto debug_print_init::@1
  to:debug_print_init::@return
debug_print_init::@return: scope:[debug_print_init]  from debug_print_init::@3
  (byte*) print_char_cursor#12 ← phi( debug_print_init::@3/(byte*) print_char_cursor#17 )
  (byte*) print_line_cursor#12 ← phi( debug_print_init::@3/(byte*) print_line_cursor#17 )
  (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#12
  (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#12
  return 
  to:@return
debug_print: scope:[debug_print]  from anim::@25
  (byte*) SCREEN#56 ← phi( anim::@25/(byte*) SCREEN#57 )
  (signed byte) sz#18 ← phi( anim::@25/(signed byte) sz#20 )
  (signed byte) sy#30 ← phi( anim::@25/(signed byte) sy#15 )
  (byte*) print_screen#17 ← phi( anim::@25/(byte*) print_screen#30 )
  (signed byte) sx#11 ← phi( anim::@25/(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 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte) debug_print::print_sbyte_pos1_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 37
  to:debug_print::print_sbyte_pos1
debug_print::print_sbyte_pos1: scope:[debug_print]  from debug_print
  (byte*) SCREEN#55 ← phi( debug_print/(byte*) SCREEN#56 )
  (signed byte) sz#15 ← phi( debug_print/(signed byte) sz#18 )
  (signed byte) sy#24 ← phi( debug_print/(signed byte) sy#30 )
  (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#4 ← phi( debug_print/(byte*) print_screen#17 )
  (byte) debug_print::print_sbyte_pos1_row#1 ← phi( debug_print/(byte) debug_print::print_sbyte_pos1_row#0 )
  (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos1_$0#0 ← (byte) debug_print::print_sbyte_pos1_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*) debug_print::print_sbyte_pos1_$1#0 ← (byte*) print_screen#4 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos1_$0#0
  (byte*) debug_print::print_sbyte_pos1_$2#0 ← (byte*) debug_print::print_sbyte_pos1_$1#0 + (byte) debug_print::print_sbyte_pos1_col#1
  (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#1
  (byte*) print_sbyte_at::at#3 ← (byte*) debug_print::print_sbyte_pos1_$2#0
  call print_sbyte_at 
  to:debug_print::@15
debug_print::@15: scope:[debug_print]  from debug_print::print_sbyte_pos1
  (byte*) SCREEN#54 ← phi( debug_print::print_sbyte_pos1/(byte*) SCREEN#55 )
  (signed byte) sz#13 ← phi( debug_print::print_sbyte_pos1/(signed byte) sz#15 )
  (byte*) print_screen#31 ← phi( debug_print::print_sbyte_pos1/(byte*) print_screen#4 )
  (signed byte) sy#17 ← phi( debug_print::print_sbyte_pos1/(signed byte) sy#24 )
  to:debug_print::@3
debug_print::@3: scope:[debug_print]  from debug_print::@15
  (byte*) SCREEN#53 ← phi( debug_print::@15/(byte*) SCREEN#54 )
  (signed byte) sz#10 ← phi( debug_print::@15/(signed byte) sz#13 )
  (byte*) print_screen#18 ← phi( debug_print::@15/(byte*) print_screen#31 )
  (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 ← (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) debug_print::print_sbyte_pos2_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 37
  to:debug_print::print_sbyte_pos2
debug_print::print_sbyte_pos2: scope:[debug_print]  from debug_print::@3
  (byte*) SCREEN#52 ← phi( debug_print::@3/(byte*) SCREEN#53 )
  (signed byte) sz#7 ← phi( debug_print::@3/(signed byte) sz#10 )
  (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#5 ← phi( debug_print::@3/(byte*) print_screen#18 )
  (byte) debug_print::print_sbyte_pos2_row#1 ← phi( debug_print::@3/(byte) debug_print::print_sbyte_pos2_row#0 )
  (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos2_$0#0 ← (byte) debug_print::print_sbyte_pos2_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*) debug_print::print_sbyte_pos2_$1#0 ← (byte*) print_screen#5 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos2_$0#0
  (byte*) debug_print::print_sbyte_pos2_$2#0 ← (byte*) debug_print::print_sbyte_pos2_$1#0 + (byte) debug_print::print_sbyte_pos2_col#1
  (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#1
  (byte*) print_sbyte_at::at#4 ← (byte*) debug_print::print_sbyte_pos2_$2#0
  call print_sbyte_at 
  to:debug_print::@16
debug_print::@16: scope:[debug_print]  from debug_print::print_sbyte_pos2
  (byte*) SCREEN#51 ← phi( debug_print::print_sbyte_pos2/(byte*) SCREEN#52 )
  (byte*) print_screen#32 ← phi( debug_print::print_sbyte_pos2/(byte*) print_screen#5 )
  (signed byte) sz#4 ← phi( debug_print::print_sbyte_pos2/(signed byte) sz#7 )
  to:debug_print::@4
debug_print::@4: scope:[debug_print]  from debug_print::@16
  (byte*) SCREEN#50 ← phi( debug_print::@16/(byte*) SCREEN#51 )
  (byte*) print_screen#19 ← phi( debug_print::@16/(byte*) print_screen#32 )
  (signed byte) sz#2 ← phi( debug_print::@16/(signed byte) sz#4 )
  (signed byte) debug_print::print_sbyte_pos3_sb#0 ← (signed byte) sz#2
  (byte) debug_print::print_sbyte_pos3_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
  (byte) debug_print::print_sbyte_pos3_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 37
  to:debug_print::print_sbyte_pos3
debug_print::print_sbyte_pos3: scope:[debug_print]  from debug_print::@4
  (byte*) SCREEN#49 ← phi( debug_print::@4/(byte*) SCREEN#50 )
  (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#6 ← phi( debug_print::@4/(byte*) print_screen#19 )
  (byte) debug_print::print_sbyte_pos3_row#1 ← phi( debug_print::@4/(byte) debug_print::print_sbyte_pos3_row#0 )
  (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos3_$0#0 ← (byte) debug_print::print_sbyte_pos3_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*) debug_print::print_sbyte_pos3_$1#0 ← (byte*) print_screen#6 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos3_$0#0
  (byte*) debug_print::print_sbyte_pos3_$2#0 ← (byte*) debug_print::print_sbyte_pos3_$1#0 + (byte) debug_print::print_sbyte_pos3_col#1
  (signed byte) print_sbyte_at::b#6 ← (signed byte) debug_print::print_sbyte_pos3_sb#1
  (byte*) print_sbyte_at::at#5 ← (byte*) debug_print::print_sbyte_pos3_$2#0
  call print_sbyte_at 
  to:debug_print::@17
debug_print::@17: scope:[debug_print]  from debug_print::print_sbyte_pos3
  (byte*) SCREEN#48 ← phi( debug_print::print_sbyte_pos3/(byte*) SCREEN#49 )
  (byte*) print_screen#33 ← phi( debug_print::print_sbyte_pos3/(byte*) print_screen#6 )
  to:debug_print::@5
debug_print::@5: scope:[debug_print]  from debug_print::@17
  (byte*) SCREEN#47 ← phi( debug_print::@17/(byte*) SCREEN#48 )
  (byte*) print_screen#20 ← phi( debug_print::@17/(byte*) print_screen#33 )
  (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 0)
  (byte) debug_print::print_sbyte_pos4_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte) debug_print::print_sbyte_pos4_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 29
  to:debug_print::print_sbyte_pos4
debug_print::print_sbyte_pos4: scope:[debug_print]  from debug_print::@5
  (byte*) SCREEN#46 ← phi( debug_print::@5/(byte*) SCREEN#47 )
  (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#7 ← phi( debug_print::@5/(byte*) print_screen#20 )
  (byte) debug_print::print_sbyte_pos4_row#1 ← phi( debug_print::@5/(byte) debug_print::print_sbyte_pos4_row#0 )
  (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos4_$0#0 ← (byte) debug_print::print_sbyte_pos4_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*) debug_print::print_sbyte_pos4_$1#0 ← (byte*) print_screen#7 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos4_$0#0
  (byte*) debug_print::print_sbyte_pos4_$2#0 ← (byte*) debug_print::print_sbyte_pos4_$1#0 + (byte) debug_print::print_sbyte_pos4_col#1
  (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#1
  (byte*) print_sbyte_at::at#6 ← (byte*) debug_print::print_sbyte_pos4_$2#0
  call print_sbyte_at 
  to:debug_print::@18
debug_print::@18: scope:[debug_print]  from debug_print::print_sbyte_pos4
  (byte*) SCREEN#45 ← phi( debug_print::print_sbyte_pos4/(byte*) SCREEN#46 )
  (byte*) print_screen#34 ← phi( debug_print::print_sbyte_pos4/(byte*) print_screen#7 )
  to:debug_print::@6
debug_print::@6: scope:[debug_print]  from debug_print::@18
  (byte*) SCREEN#44 ← phi( debug_print::@18/(byte*) SCREEN#45 )
  (byte*) print_screen#21 ← phi( debug_print::@18/(byte*) print_screen#34 )
  (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 1)
  (byte) debug_print::print_sbyte_pos5_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte) debug_print::print_sbyte_pos5_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 33
  to:debug_print::print_sbyte_pos5
debug_print::print_sbyte_pos5: scope:[debug_print]  from debug_print::@6
  (byte*) SCREEN#43 ← phi( debug_print::@6/(byte*) SCREEN#44 )
  (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#8 ← phi( debug_print::@6/(byte*) print_screen#21 )
  (byte) debug_print::print_sbyte_pos5_row#1 ← phi( debug_print::@6/(byte) debug_print::print_sbyte_pos5_row#0 )
  (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos5_$0#0 ← (byte) debug_print::print_sbyte_pos5_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*) debug_print::print_sbyte_pos5_$1#0 ← (byte*) print_screen#8 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos5_$0#0
  (byte*) debug_print::print_sbyte_pos5_$2#0 ← (byte*) debug_print::print_sbyte_pos5_$1#0 + (byte) debug_print::print_sbyte_pos5_col#1
  (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#1
  (byte*) print_sbyte_at::at#7 ← (byte*) debug_print::print_sbyte_pos5_$2#0
  call print_sbyte_at 
  to:debug_print::@19
debug_print::@19: scope:[debug_print]  from debug_print::print_sbyte_pos5
  (byte*) SCREEN#42 ← phi( debug_print::print_sbyte_pos5/(byte*) SCREEN#43 )
  (byte*) print_screen#35 ← phi( debug_print::print_sbyte_pos5/(byte*) print_screen#8 )
  to:debug_print::@7
debug_print::@7: scope:[debug_print]  from debug_print::@19
  (byte*) SCREEN#41 ← phi( debug_print::@19/(byte*) SCREEN#42 )
  (byte*) print_screen#22 ← phi( debug_print::@19/(byte*) print_screen#35 )
  (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 2)
  (byte) debug_print::print_sbyte_pos6_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte) debug_print::print_sbyte_pos6_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 37
  to:debug_print::print_sbyte_pos6
debug_print::print_sbyte_pos6: scope:[debug_print]  from debug_print::@7
  (byte*) SCREEN#40 ← phi( debug_print::@7/(byte*) SCREEN#41 )
  (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#9 ← phi( debug_print::@7/(byte*) print_screen#22 )
  (byte) debug_print::print_sbyte_pos6_row#1 ← phi( debug_print::@7/(byte) debug_print::print_sbyte_pos6_row#0 )
  (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos6_$0#0 ← (byte) debug_print::print_sbyte_pos6_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*) debug_print::print_sbyte_pos6_$1#0 ← (byte*) print_screen#9 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos6_$0#0
  (byte*) debug_print::print_sbyte_pos6_$2#0 ← (byte*) debug_print::print_sbyte_pos6_$1#0 + (byte) debug_print::print_sbyte_pos6_col#1
  (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#1
  (byte*) print_sbyte_at::at#8 ← (byte*) debug_print::print_sbyte_pos6_$2#0
  call print_sbyte_at 
  to:debug_print::@20
debug_print::@20: scope:[debug_print]  from debug_print::print_sbyte_pos6
  (byte*) SCREEN#39 ← phi( debug_print::print_sbyte_pos6/(byte*) SCREEN#40 )
  (byte*) print_screen#36 ← phi( debug_print::print_sbyte_pos6/(byte*) print_screen#9 )
  to:debug_print::@8
debug_print::@8: scope:[debug_print]  from debug_print::@20
  (byte*) SCREEN#38 ← phi( debug_print::@20/(byte*) SCREEN#39 )
  (byte*) print_screen#23 ← phi( debug_print::@20/(byte*) print_screen#36 )
  (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 3)
  (byte) debug_print::print_sbyte_pos7_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
  (byte) debug_print::print_sbyte_pos7_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 29
  to:debug_print::print_sbyte_pos7
debug_print::print_sbyte_pos7: scope:[debug_print]  from debug_print::@8
  (byte*) SCREEN#37 ← phi( debug_print::@8/(byte*) SCREEN#38 )
  (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#10 ← phi( debug_print::@8/(byte*) print_screen#23 )
  (byte) debug_print::print_sbyte_pos7_row#1 ← phi( debug_print::@8/(byte) debug_print::print_sbyte_pos7_row#0 )
  (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos7_$0#0 ← (byte) debug_print::print_sbyte_pos7_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*) debug_print::print_sbyte_pos7_$1#0 ← (byte*) print_screen#10 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos7_$0#0
  (byte*) debug_print::print_sbyte_pos7_$2#0 ← (byte*) debug_print::print_sbyte_pos7_$1#0 + (byte) debug_print::print_sbyte_pos7_col#1
  (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#1
  (byte*) print_sbyte_at::at#9 ← (byte*) debug_print::print_sbyte_pos7_$2#0
  call print_sbyte_at 
  to:debug_print::@21
debug_print::@21: scope:[debug_print]  from debug_print::print_sbyte_pos7
  (byte*) SCREEN#36 ← phi( debug_print::print_sbyte_pos7/(byte*) SCREEN#37 )
  (byte*) print_screen#37 ← phi( debug_print::print_sbyte_pos7/(byte*) print_screen#10 )
  to:debug_print::@9
debug_print::@9: scope:[debug_print]  from debug_print::@21
  (byte*) SCREEN#35 ← phi( debug_print::@21/(byte*) SCREEN#36 )
  (byte*) print_screen#24 ← phi( debug_print::@21/(byte*) print_screen#37 )
  (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 4)
  (byte) debug_print::print_sbyte_pos8_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
  (byte) debug_print::print_sbyte_pos8_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 33
  to:debug_print::print_sbyte_pos8
debug_print::print_sbyte_pos8: scope:[debug_print]  from debug_print::@9
  (byte*) SCREEN#34 ← phi( debug_print::@9/(byte*) SCREEN#35 )
  (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#11 ← phi( debug_print::@9/(byte*) print_screen#24 )
  (byte) debug_print::print_sbyte_pos8_row#1 ← phi( debug_print::@9/(byte) debug_print::print_sbyte_pos8_row#0 )
  (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos8_$0#0 ← (byte) debug_print::print_sbyte_pos8_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*) debug_print::print_sbyte_pos8_$1#0 ← (byte*) print_screen#11 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos8_$0#0
  (byte*) debug_print::print_sbyte_pos8_$2#0 ← (byte*) debug_print::print_sbyte_pos8_$1#0 + (byte) debug_print::print_sbyte_pos8_col#1
  (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#1
  (byte*) print_sbyte_at::at#10 ← (byte*) debug_print::print_sbyte_pos8_$2#0
  call print_sbyte_at 
  to:debug_print::@22
debug_print::@22: scope:[debug_print]  from debug_print::print_sbyte_pos8
  (byte*) SCREEN#33 ← phi( debug_print::print_sbyte_pos8/(byte*) SCREEN#34 )
  (byte*) print_screen#38 ← phi( debug_print::print_sbyte_pos8/(byte*) print_screen#11 )
  to:debug_print::@10
debug_print::@10: scope:[debug_print]  from debug_print::@22
  (byte*) SCREEN#32 ← phi( debug_print::@22/(byte*) SCREEN#33 )
  (byte*) print_screen#25 ← phi( debug_print::@22/(byte*) print_screen#38 )
  (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 5)
  (byte) debug_print::print_sbyte_pos9_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
  (byte) debug_print::print_sbyte_pos9_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 37
  to:debug_print::print_sbyte_pos9
debug_print::print_sbyte_pos9: scope:[debug_print]  from debug_print::@10
  (byte*) SCREEN#31 ← phi( debug_print::@10/(byte*) SCREEN#32 )
  (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#12 ← phi( debug_print::@10/(byte*) print_screen#25 )
  (byte) debug_print::print_sbyte_pos9_row#1 ← phi( debug_print::@10/(byte) debug_print::print_sbyte_pos9_row#0 )
  (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos9_$0#0 ← (byte) debug_print::print_sbyte_pos9_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*) debug_print::print_sbyte_pos9_$1#0 ← (byte*) print_screen#12 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos9_$0#0
  (byte*) debug_print::print_sbyte_pos9_$2#0 ← (byte*) debug_print::print_sbyte_pos9_$1#0 + (byte) debug_print::print_sbyte_pos9_col#1
  (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#1
  (byte*) print_sbyte_at::at#11 ← (byte*) debug_print::print_sbyte_pos9_$2#0
  call print_sbyte_at 
  to:debug_print::@23
debug_print::@23: scope:[debug_print]  from debug_print::print_sbyte_pos9
  (byte*) SCREEN#30 ← phi( debug_print::print_sbyte_pos9/(byte*) SCREEN#31 )
  (byte*) print_screen#39 ← phi( debug_print::print_sbyte_pos9/(byte*) print_screen#12 )
  to:debug_print::@11
debug_print::@11: scope:[debug_print]  from debug_print::@23
  (byte*) SCREEN#29 ← phi( debug_print::@23/(byte*) SCREEN#30 )
  (byte*) print_screen#26 ← phi( debug_print::@23/(byte*) print_screen#39 )
  (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 6)
  (byte) debug_print::print_sbyte_pos10_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
  (byte) debug_print::print_sbyte_pos10_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 29
  to:debug_print::print_sbyte_pos10
debug_print::print_sbyte_pos10: scope:[debug_print]  from debug_print::@11
  (byte*) SCREEN#28 ← phi( debug_print::@11/(byte*) SCREEN#29 )
  (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#13 ← phi( debug_print::@11/(byte*) print_screen#26 )
  (byte) debug_print::print_sbyte_pos10_row#1 ← phi( debug_print::@11/(byte) debug_print::print_sbyte_pos10_row#0 )
  (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos10_$0#0 ← (byte) debug_print::print_sbyte_pos10_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*) debug_print::print_sbyte_pos10_$1#0 ← (byte*) print_screen#13 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos10_$0#0
  (byte*) debug_print::print_sbyte_pos10_$2#0 ← (byte*) debug_print::print_sbyte_pos10_$1#0 + (byte) debug_print::print_sbyte_pos10_col#1
  (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#1
  (byte*) print_sbyte_at::at#12 ← (byte*) debug_print::print_sbyte_pos10_$2#0
  call print_sbyte_at 
  to:debug_print::@24
debug_print::@24: scope:[debug_print]  from debug_print::print_sbyte_pos10
  (byte*) SCREEN#27 ← phi( debug_print::print_sbyte_pos10/(byte*) SCREEN#28 )
  (byte*) print_screen#40 ← phi( debug_print::print_sbyte_pos10/(byte*) print_screen#13 )
  to:debug_print::@12
debug_print::@12: scope:[debug_print]  from debug_print::@24
  (byte*) SCREEN#25 ← phi( debug_print::@24/(byte*) SCREEN#27 )
  (byte*) print_screen#27 ← phi( debug_print::@24/(byte*) print_screen#40 )
  (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 7)
  (byte) debug_print::print_sbyte_pos11_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
  (byte) debug_print::print_sbyte_pos11_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 33
  to:debug_print::print_sbyte_pos11
debug_print::print_sbyte_pos11: scope:[debug_print]  from debug_print::@12
  (byte*) SCREEN#23 ← phi( debug_print::@12/(byte*) SCREEN#25 )
  (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#14 ← phi( debug_print::@12/(byte*) print_screen#27 )
  (byte) debug_print::print_sbyte_pos11_row#1 ← phi( debug_print::@12/(byte) debug_print::print_sbyte_pos11_row#0 )
  (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos11_$0#0 ← (byte) debug_print::print_sbyte_pos11_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*) debug_print::print_sbyte_pos11_$1#0 ← (byte*) print_screen#14 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos11_$0#0
  (byte*) debug_print::print_sbyte_pos11_$2#0 ← (byte*) debug_print::print_sbyte_pos11_$1#0 + (byte) debug_print::print_sbyte_pos11_col#1
  (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#1
  (byte*) print_sbyte_at::at#13 ← (byte*) debug_print::print_sbyte_pos11_$2#0
  call print_sbyte_at 
  to:debug_print::@25
debug_print::@25: scope:[debug_print]  from debug_print::print_sbyte_pos11
  (byte*) SCREEN#22 ← phi( debug_print::print_sbyte_pos11/(byte*) SCREEN#23 )
  (byte*) print_screen#41 ← phi( debug_print::print_sbyte_pos11/(byte*) print_screen#14 )
  to:debug_print::@13
debug_print::@13: scope:[debug_print]  from debug_print::@25
  (byte*) SCREEN#20 ← phi( debug_print::@25/(byte*) SCREEN#22 )
  (byte*) print_screen#28 ← phi( debug_print::@25/(byte*) print_screen#41 )
  (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 8)
  (byte) debug_print::print_sbyte_pos12_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
  (byte) debug_print::print_sbyte_pos12_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 37
  to:debug_print::print_sbyte_pos12
debug_print::print_sbyte_pos12: scope:[debug_print]  from debug_print::@13
  (byte*) SCREEN#18 ← phi( debug_print::@13/(byte*) SCREEN#20 )
  (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#15 ← phi( debug_print::@13/(byte*) print_screen#28 )
  (byte) debug_print::print_sbyte_pos12_row#1 ← phi( debug_print::@13/(byte) debug_print::print_sbyte_pos12_row#0 )
  (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos12_$0#0 ← (byte) debug_print::print_sbyte_pos12_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*) debug_print::print_sbyte_pos12_$1#0 ← (byte*) print_screen#15 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos12_$0#0
  (byte*) debug_print::print_sbyte_pos12_$2#0 ← (byte*) debug_print::print_sbyte_pos12_$1#0 + (byte) debug_print::print_sbyte_pos12_col#1
  (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#1
  (byte*) print_sbyte_at::at#14 ← (byte*) debug_print::print_sbyte_pos12_$2#0
  call print_sbyte_at 
  to:debug_print::@26
debug_print::@26: scope:[debug_print]  from debug_print::print_sbyte_pos12
  (byte*) SCREEN#16 ← phi( debug_print::print_sbyte_pos12/(byte*) SCREEN#18 )
  to:debug_print::@14
debug_print::@14: scope:[debug_print]  from debug_print::@26
  (byte*) SCREEN#14 ← phi( debug_print::@26/(byte*) SCREEN#16 )
  (word/signed word/dword/signed dword~) debug_print::$12 ← (byte/signed byte/word/signed word/dword/signed dword) 19 * (byte/signed byte/word/signed word/dword/signed dword) 40
  (byte*~) debug_print::$13 ← (byte*) SCREEN#14 + (word/signed word/dword/signed dword~) debug_print::$12
  (byte*) debug_print::at_line#0 ← (byte*~) debug_print::$13
  (byte) debug_print::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte) debug_print::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 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/signed byte/word/signed word/dword/signed dword~) debug_print::$14 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte*~) debug_print::$15 ← (byte*) debug_print::at_line#1 + (byte/signed byte/word/signed word/dword/signed dword~) debug_print::$14
  (byte*~) debug_print::$16 ← (byte*~) debug_print::$15 + (byte) debug_print::c#2
  (signed byte) print_sbyte_at::b#16 ← *((signed byte[8]) xrs#0 + (byte) debug_print::i#2)
  (byte*) print_sbyte_at::at#15 ← (byte*~) debug_print::$16
  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/signed byte/word/signed word/dword/signed dword~) debug_print::$18 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte*~) debug_print::$19 ← (byte*) debug_print::at_line#2 + (byte/signed byte/word/signed word/dword/signed dword~) debug_print::$18
  (byte*~) debug_print::$20 ← (byte*~) debug_print::$19 + (byte) debug_print::c#3
  (signed byte) print_sbyte_at::b#17 ← *((signed byte[8]) yrs#0 + (byte) debug_print::i#3)
  (byte*) print_sbyte_at::at#16 ← (byte*~) debug_print::$20
  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/signed byte/word/signed word/dword/signed dword~) debug_print::$22 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 2
  (byte*~) debug_print::$23 ← (byte*) debug_print::at_line#3 + (byte/signed byte/word/signed word/dword/signed dword~) debug_print::$22
  (byte*~) debug_print::$24 ← (byte*~) debug_print::$23 + (byte) debug_print::c#4
  (signed byte) print_sbyte_at::b#18 ← *((signed byte[8]) zrs#0 + (byte) debug_print::i#4)
  (byte*) print_sbyte_at::at#17 ← (byte*~) debug_print::$24
  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/signed byte/word/signed word/dword/signed dword~) debug_print::$26 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 3
  (byte*~) debug_print::$27 ← (byte*) debug_print::at_line#4 + (byte/signed byte/word/signed word/dword/signed dword~) debug_print::$26
  (byte*~) debug_print::$28 ← (byte*~) debug_print::$27 + (byte) debug_print::c#5
  (signed byte) print_sbyte_at::b#19 ← *((signed byte[8]) pps#0 + (byte) debug_print::i#5)
  (byte*) print_sbyte_at::at#18 ← (byte*~) debug_print::$28
  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/word/signed word/dword/signed dword~) debug_print::$30 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte*~) debug_print::$31 ← (byte*) debug_print::at_line#5 + (byte/word/signed word/dword/signed dword~) debug_print::$30
  (byte*~) debug_print::$32 ← (byte*~) debug_print::$31 + (byte) debug_print::c#6
  (signed byte) print_sbyte_at::b#20 ← *((signed byte[8]) xps#0 + (byte) debug_print::i#6)
  (byte*) print_sbyte_at::at#19 ← (byte*~) debug_print::$32
  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/word/signed word/dword/signed dword~) debug_print::$34 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 5
  (byte*~) debug_print::$35 ← (byte*) debug_print::at_line#6 + (byte/word/signed word/dword/signed dword~) debug_print::$34
  (byte*~) debug_print::$36 ← (byte*~) debug_print::$35 + (byte) debug_print::c#7
  (signed byte) print_sbyte_at::b#21 ← *((signed byte[8]) yps#0 + (byte) debug_print::i#7)
  (byte*) print_sbyte_at::at#20 ← (byte*~) debug_print::$36
  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 + (byte/signed byte/word/signed word/dword/signed dword) 4
  (byte) debug_print::i#1 ← (byte) debug_print::i#8 + rangenext(0,7)
  (bool~) debug_print::$38 ← (byte) debug_print::i#1 != rangelast(0,7)
  if((bool~) debug_print::$38) goto debug_print::@1
  to:debug_print::@return
debug_print::@return: scope:[debug_print]  from debug_print::@32
  return 
  to:@return
sprites_init: scope:[sprites_init]  from main
  (byte*) SPRITE#2 ← phi( main/(byte*) SPRITE#3 )
  (byte*) sprites_init::SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
  *((byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255
  (byte*~) sprites_init::$0 ← (byte*) sprites_init::SCREEN#0 + (word/signed word/dword/signed dword) 1016
  (byte*) sprites_init::sprites_ptr#0 ← (byte*~) sprites_init::$0
  (byte) sprites_init::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 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*) SPRITE#1 ← phi( sprites_init/(byte*) SPRITE#2 sprites_init::@1/(byte*) SPRITE#1 )
  (byte*~) sprites_init::$1 ← (byte*) SPRITE#1 / (byte/signed byte/word/signed word/dword/signed dword) 64
  (byte~) sprites_init::$2 ← ((byte)) (byte*~) sprites_init::$1
  *((byte*) sprites_init::sprites_ptr#1 + (byte) sprites_init::i#2) ← (byte~) sprites_init::$2
  *((byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (byte) GREEN#0
  (byte) sprites_init::i#1 ← (byte) sprites_init::i#2 + rangenext(0,7)
  (bool~) sprites_init::$3 ← (byte) sprites_init::i#1 != rangelast(0,7)
  if((bool~) sprites_init::$3) goto sprites_init::@1
  to:sprites_init::@return
sprites_init::@return: scope:[sprites_init]  from sprites_init::@1
  return 
  to:@return
@28: scope:[]  from @24
  (signed byte*) yp#21 ← phi( @24/(signed byte*) yp#22 )
  (signed byte*) xp#21 ← phi( @24/(signed byte*) xp#22 )
  (signed byte*) pp#21 ← phi( @24/(signed byte*) pp#22 )
  (signed byte*) zr#22 ← phi( @24/(signed byte*) zr#23 )
  (signed byte*) yr#22 ← phi( @24/(signed byte*) yr#23 )
  (signed byte*) xr#22 ← phi( @24/(signed byte*) xr#23 )
  (signed byte) sz#28 ← phi( @24/(signed byte) sz#0 )
  (byte*) SCREEN#24 ← phi( @24/(byte*) SCREEN#26 )
  (byte*) print_screen#47 ← phi( @24/(byte*) print_screen#49 )
  (word*) psp2#4 ← phi( @24/(word*) psp2#5 )
  (word*) psp1#4 ← phi( @24/(word*) psp1#5 )
  (signed byte) sy#25 ← phi( @24/(signed byte) sy#2 )
  (signed byte) sx#23 ← phi( @24/(signed byte) sx#2 )
  (byte*) print_char_cursor#21 ← phi( @24/(byte*) print_char_cursor#23 )
  (byte*) print_line_cursor#21 ← phi( @24/(byte*) print_line_cursor#23 )
  (signed byte[9]) rotation_matrix#0 ← { fill( 9, 0) }
  to:@33
calculate_matrix: scope:[calculate_matrix]  from anim::@12
  (signed byte*) SINQ#1 ← phi( anim::@12/(signed byte*) SINQ#2 )
  (signed byte*) COSQ#1 ← phi( anim::@12/(signed byte*) COSQ#2 )
  (signed byte*) SINH#1 ← phi( anim::@12/(signed byte*) SINH#2 )
  (signed byte*) COSH#1 ← phi( anim::@12/(signed byte*) COSH#2 )
  (signed byte) calculate_matrix::sx#1 ← phi( anim::@12/(signed byte) calculate_matrix::sx#0 )
  (signed byte) calculate_matrix::sz#1 ← phi( anim::@12/(signed byte) calculate_matrix::sz#0 )
  (signed byte) calculate_matrix::sy#1 ← phi( anim::@12/(signed byte) calculate_matrix::sy#0 )
  (signed byte~) calculate_matrix::$0 ← (signed byte) calculate_matrix::sy#1 - (signed byte) calculate_matrix::sz#1
  (signed byte) calculate_matrix::t1#0 ← (signed byte~) calculate_matrix::$0
  (signed byte~) calculate_matrix::$1 ← (signed byte) calculate_matrix::sy#1 + (signed byte) calculate_matrix::sz#1
  (signed byte) calculate_matrix::t2#0 ← (signed byte~) calculate_matrix::$1
  (signed byte~) calculate_matrix::$2 ← (signed byte) calculate_matrix::sx#1 + (signed byte) calculate_matrix::sz#1
  (signed byte) calculate_matrix::t3#0 ← (signed byte~) calculate_matrix::$2
  (signed byte~) calculate_matrix::$3 ← (signed byte) calculate_matrix::sx#1 - (signed byte) calculate_matrix::sz#1
  (signed byte) calculate_matrix::t4#0 ← (signed byte~) calculate_matrix::$3
  (signed byte~) calculate_matrix::$4 ← (signed byte) calculate_matrix::sx#1 + (signed byte) calculate_matrix::t2#0
  (signed byte) calculate_matrix::t5#0 ← (signed byte~) calculate_matrix::$4
  (signed byte~) calculate_matrix::$5 ← (signed byte) calculate_matrix::sx#1 - (signed byte) calculate_matrix::t1#0
  (signed byte) calculate_matrix::t6#0 ← (signed byte~) calculate_matrix::$5
  (signed byte~) calculate_matrix::$6 ← (signed byte) calculate_matrix::sx#1 + (signed byte) calculate_matrix::t1#0
  (signed byte) calculate_matrix::t7#0 ← (signed byte~) calculate_matrix::$6
  (signed byte~) calculate_matrix::$7 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#1
  (signed byte) calculate_matrix::t8#0 ← (signed byte~) calculate_matrix::$7
  (signed byte~) calculate_matrix::$8 ← (signed byte) calculate_matrix::sy#1 - (signed byte) calculate_matrix::sx#1
  (signed byte) calculate_matrix::t9#0 ← (signed byte~) calculate_matrix::$8
  (signed byte~) calculate_matrix::$9 ← (signed byte) calculate_matrix::sy#1 + (signed byte) calculate_matrix::sx#1
  (signed byte) calculate_matrix::t10#0 ← (signed byte~) calculate_matrix::$9
  (signed byte~) calculate_matrix::$10 ← *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t1#0) + *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t2#0)
  *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (signed byte~) calculate_matrix::$10
  (signed byte~) calculate_matrix::$11 ← *((signed byte*) SINH#1 + (signed byte) calculate_matrix::t1#0) - *((signed byte*) SINH#1 + (signed byte) calculate_matrix::t2#0)
  *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (signed byte~) calculate_matrix::$11
  (signed byte~) calculate_matrix::$12 ← *((signed byte*) SINH#1 + (signed byte) calculate_matrix::sy#1) + *((signed byte*) SINH#1 + (signed byte) calculate_matrix::sy#1)
  *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (signed byte~) calculate_matrix::$12
  (signed byte~) calculate_matrix::$13 ← *((signed byte*) SINH#1 + (signed byte) calculate_matrix::t3#0) - *((signed byte*) SINH#1 + (signed byte) calculate_matrix::t4#0)
  (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t6#0)
  (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t5#0)
  (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t8#0)
  (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t7#0)
  *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (signed byte~) calculate_matrix::$17
  (signed byte~) calculate_matrix::$18 ← *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t3#0) + *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t4#0)
  (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((signed byte*) SINQ#1 + (signed byte) calculate_matrix::t5#0)
  (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((signed byte*) SINQ#1 + (signed byte) calculate_matrix::t6#0)
  (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((signed byte*) SINQ#1 + (signed byte) calculate_matrix::t7#0)
  (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((signed byte*) SINQ#1 + (signed byte) calculate_matrix::t8#0)
  *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 4) ← (signed byte~) calculate_matrix::$22
  (signed byte~) calculate_matrix::$23 ← *((signed byte*) SINH#1 + (signed byte) calculate_matrix::t9#0) - *((signed byte*) SINH#1 + (signed byte) calculate_matrix::t10#0)
  *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 5) ← (signed byte~) calculate_matrix::$23
  (signed byte~) calculate_matrix::$24 ← *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t4#0) - *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t3#0)
  (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((signed byte*) SINQ#1 + (signed byte) calculate_matrix::t6#0)
  (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((signed byte*) SINQ#1 + (signed byte) calculate_matrix::t5#0)
  (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((signed byte*) SINQ#1 + (signed byte) calculate_matrix::t8#0)
  (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((signed byte*) SINQ#1 + (signed byte) calculate_matrix::t7#0)
  *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 6) ← (signed byte~) calculate_matrix::$28
  (signed byte~) calculate_matrix::$29 ← *((signed byte*) SINH#1 + (signed byte) calculate_matrix::t3#0) + *((signed byte*) SINH#1 + (signed byte) calculate_matrix::t4#0)
  (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t6#0)
  (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t5#0)
  (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t7#0)
  (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((signed byte*) COSQ#1 + (signed byte) calculate_matrix::t8#0)
  *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 7) ← (signed byte~) calculate_matrix::$33
  (signed byte~) calculate_matrix::$34 ← *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t9#0) + *((signed byte*) COSH#1 + (signed byte) calculate_matrix::t10#0)
  *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 8) ← (signed byte~) calculate_matrix::$34
  to:calculate_matrix::@return
calculate_matrix::@return: scope:[calculate_matrix]  from calculate_matrix
  return 
  to:@return
store_matrix: scope:[store_matrix]  from anim::@27
  asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1  }
  to:store_matrix::@return
store_matrix::@return: scope:[store_matrix]  from store_matrix
  return 
  to:@return
rotate_matrix: scope:[rotate_matrix]  from anim::@13
  (signed byte*) zr#2 ← phi( anim::@13/(signed byte*) zr#3 )
  (signed byte) rotate_matrix::z#1 ← phi( anim::@13/(signed byte) rotate_matrix::z#0 )
  (signed byte*) yr#2 ← phi( anim::@13/(signed byte*) yr#3 )
  (signed byte) rotate_matrix::y#1 ← phi( anim::@13/(signed byte) rotate_matrix::y#0 )
  (signed byte*) xr#2 ← phi( anim::@13/(signed byte*) xr#3 )
  (signed byte) rotate_matrix::x#1 ← phi( anim::@13/(signed byte) rotate_matrix::x#0 )
  *((signed byte*) xr#2) ← (signed byte) rotate_matrix::x#1
  *((signed byte*) yr#2) ← (signed byte) rotate_matrix::y#1
  *((signed byte*) zr#2) ← (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
@33: scope:[]  from @28
  (signed byte*) yp#20 ← phi( @28/(signed byte*) yp#21 )
  (signed byte*) xp#20 ← phi( @28/(signed byte*) xp#21 )
  (signed byte*) pp#20 ← phi( @28/(signed byte*) pp#21 )
  (signed byte*) zr#21 ← phi( @28/(signed byte*) zr#22 )
  (signed byte*) yr#21 ← phi( @28/(signed byte*) yr#22 )
  (signed byte*) xr#21 ← phi( @28/(signed byte*) xr#22 )
  (signed byte) sz#25 ← phi( @28/(signed byte) sz#28 )
  (byte*) SCREEN#21 ← phi( @28/(byte*) SCREEN#24 )
  (byte*) print_screen#44 ← phi( @28/(byte*) print_screen#47 )
  (word*) psp2#3 ← phi( @28/(word*) psp2#4 )
  (word*) psp1#3 ← phi( @28/(word*) psp1#4 )
  (signed byte) sy#18 ← phi( @28/(signed byte) sy#25 )
  (signed byte) sx#17 ← phi( @28/(signed byte) sx#23 )
  (byte*) print_char_cursor#18 ← phi( @28/(byte*) print_char_cursor#21 )
  (byte*) print_line_cursor#18 ← phi( @28/(byte*) print_line_cursor#21 )
  (byte*) mulf_sqr1#0 ← ((byte*)) (word/signed word/dword/signed dword) 9216
  (byte*) mulf_sqr2#0 ← ((byte*)) (word/signed word/dword/signed dword) 9728
  kickasm(location (byte*) mulf_sqr1#0) {{ .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) }
    }
 }}
  kickasm(location (byte*) mulf_sqr2#0) {{ .for(var i=0;i<$200;i++) {
    	.if(i<=159) { .byte round((-i-1)*(-i-1)/256) }
    	.if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) }
    	.if(i>351) { .byte round(((i-511)*(i-511))/256) }  
    }
 }}
  (byte*) SPRITE#0 ← ((byte*)) (word/signed word/dword/signed dword) 12288
  kickasm(location (byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))
    .for (var y=0; y<21; y++)
        .for (var x=0;x<3; x++)
            .byte pic.getSinglecolorByte(x,y)
 }}
  (signed byte*) PERSP_Z#0 ← ((signed byte*)) (word/signed word/dword/signed dword) 10240
  kickasm(location (signed byte*) PERSP_Z#0) {{ {
    .var d = 256.0	
    .var z0 = 6.0	
    // These values of d/z0 result in table values from $20 to $40 (effectively max is $3f)
    .for(var z=0;z<$100;z++) {
    	.if(z>127) {
    		.byte round(d / (z0 - ((z - 256) / 64.0)));
    	} else {
    		.byte round(d / (z0 - (z / 64.0)));
    	}
    }
	}
 }}
  (signed byte*) SINH#0 ← ((signed byte*)) (word/signed word/dword/signed dword) 8192
  (signed byte*~) $6 ← (signed byte*) SINH#0 + (byte/signed byte/word/signed word/dword/signed dword) 64
  (signed byte*) COSH#0 ← (signed byte*~) $6
  (signed byte*) SINQ#0 ← ((signed byte*)) (word/signed word/dword/signed dword) 8704
  (signed byte*~) $7 ← (signed byte*) SINQ#0 + (byte/signed byte/word/signed word/dword/signed dword) 64
  (signed byte*) COSQ#0 ← (signed byte*~) $7
  kickasm(location (signed byte*) SINH#0) {{ {
    .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)
    }
    }
 }}
  kickasm(location (signed byte*) SINQ#0) {{ {
    .var min = -$1000
    .var max = $1000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte round((min+(ampl/2)+(ampl/2)*sin(rad))/256)
    }
    }
 }}
  (byte*) SINH_LO#0 ← ((byte*)) (word/signed word/dword/signed dword) 16384
  (byte*~) $8 ← (byte*) SINH_LO#0 + (byte/signed byte/word/signed word/dword/signed dword) 64
  (byte*) COSH_LO#0 ← (byte*~) $8
  (byte*) SINH_HI#0 ← ((byte*)) (word/signed word/dword/signed dword) 16896
  (byte*~) $9 ← (byte*) SINH_HI#0 + (byte/signed byte/word/signed word/dword/signed dword) 64
  (byte*) COSH_HI#0 ← (byte*~) $9
  (byte*) SINQ_LO#0 ← ((byte*)) (word/signed word/dword/signed dword) 17408
  (byte*~) $10 ← (byte*) SINQ_LO#0 + (byte/signed byte/word/signed word/dword/signed dword) 64
  (byte*) COSQ_LO#0 ← (byte*~) $10
  (byte*) SINQ_HI#0 ← ((byte*)) (word/signed word/dword/signed dword) 17920
  (byte*~) $11 ← (byte*) SINQ_HI#0 + (byte/signed byte/word/signed word/dword/signed dword) 64
  (byte*) COSQ_HI#0 ← (byte*~) $11
  kickasm(location (byte*) SINH_LO#0) {{ {
    .var min = -$2000
    .var max = $2000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte <(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }
 }}
  kickasm(location (byte*) SINH_HI#0) {{ {
    .var min = -$2000
    .var max = $2000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte >(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }
 }}
  kickasm(location (byte*) SINQ_LO#0) {{ {
    .var min = -$1000
    .var max = $1000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte <(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }
 }}
  kickasm(location (byte*) SINQ_HI#0) {{ {
    .var min = -$1000
    .var max = $1000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte >(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }
 }}
  call main 
  to:@34
@34: scope:[]  from @33
  (signed byte) sy#12 ← phi( @33/(signed byte) sy#1 )
  (signed byte) sx#12 ← phi( @33/(signed byte) sx#1 )
  (byte*) print_char_cursor#13 ← phi( @33/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#13 ← phi( @33/(byte*) print_line_cursor#4 )
  (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#13
  (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#13
  (signed byte) sx#5 ← (signed byte) sx#12
  (signed byte) sy#5 ← (signed byte) sy#12
  to:@end
@end: scope:[]  from @34

SYMBOL TABLE SSA
(signed byte/signed word/signed dword~) $0
(signed byte/signed word/signed dword~) $1
(byte*~) $10
(byte*~) $11
(const string) $12 = (string) "0123456789abcdef"
(signed byte/signed word/signed dword~) $2
(signed byte/signed word/signed dword~) $3
(signed byte/signed word/signed dword~) $4
(signed byte/signed word/signed dword~) $5
(signed byte*~) $6
(signed byte*~) $7
(byte*~) $8
(byte*~) $9
(label) @16
(label) @23
(label) @24
(label) @28
(label) @33
(label) @34
(label) @4
(label) @begin
(label) @end
(byte*) BGCOL
(byte*) BGCOL#0
(byte*) BGCOL1
(byte*) BGCOL1#0
(byte*) BGCOL2
(byte*) BGCOL2#0
(byte*) BGCOL3
(byte*) BGCOL3#0
(byte*) BGCOL4
(byte*) BGCOL4#0
(byte) BLACK
(byte) BLACK#0
(byte) BLUE
(byte) BLUE#0
(byte*) BORDERCOL
(byte*) BORDERCOL#0
(byte) BROWN
(byte) BROWN#0
(byte*) CHARGEN
(byte*) CHARGEN#0
(byte*) CIA1_INTERRUPT
(byte*) CIA1_INTERRUPT#0
(byte*) CIA1_PORT_A
(byte*) CIA1_PORT_A#0
(byte*) CIA1_PORT_A_DDR
(byte*) CIA1_PORT_A_DDR#0
(byte*) CIA1_PORT_B
(byte*) CIA1_PORT_B#0
(byte*) CIA1_PORT_B_DDR
(byte*) CIA1_PORT_B_DDR#0
(byte*) CIA2_INTERRUPT
(byte*) CIA2_INTERRUPT#0
(byte*) CIA2_PORT_A
(byte*) CIA2_PORT_A#0
(byte*) CIA2_PORT_A_DDR
(byte*) CIA2_PORT_A_DDR#0
(byte*) CIA2_PORT_B
(byte*) CIA2_PORT_B#0
(byte*) CIA2_PORT_B_DDR
(byte*) CIA2_PORT_B_DDR#0
(byte) CIA_INTERRUPT_CLEAR
(byte) CIA_INTERRUPT_CLEAR#0
(byte*) COLS
(byte*) COLS#0
(signed byte*) COSH
(signed byte*) COSH#0
(signed byte*) COSH#1
(signed byte*) COSH#10
(signed byte*) COSH#11
(signed byte*) COSH#12
(signed byte*) COSH#13
(signed byte*) COSH#14
(signed byte*) COSH#15
(signed byte*) COSH#16
(signed byte*) COSH#17
(signed byte*) COSH#18
(signed byte*) COSH#19
(signed byte*) COSH#2
(signed byte*) COSH#20
(signed byte*) COSH#3
(signed byte*) COSH#4
(signed byte*) COSH#5
(signed byte*) COSH#6
(signed byte*) COSH#7
(signed byte*) COSH#8
(signed byte*) COSH#9
(byte*) COSH_HI
(byte*) COSH_HI#0
(byte*) COSH_LO
(byte*) COSH_LO#0
(signed byte*) COSQ
(signed byte*) COSQ#0
(signed byte*) COSQ#1
(signed byte*) COSQ#10
(signed byte*) COSQ#11
(signed byte*) COSQ#12
(signed byte*) COSQ#13
(signed byte*) COSQ#14
(signed byte*) COSQ#15
(signed byte*) COSQ#16
(signed byte*) COSQ#17
(signed byte*) COSQ#18
(signed byte*) COSQ#19
(signed byte*) COSQ#2
(signed byte*) COSQ#20
(signed byte*) COSQ#3
(signed byte*) COSQ#4
(signed byte*) COSQ#5
(signed byte*) COSQ#6
(signed byte*) COSQ#7
(signed byte*) COSQ#8
(signed byte*) COSQ#9
(byte*) COSQ_HI
(byte*) COSQ_HI#0
(byte*) COSQ_LO
(byte*) COSQ_LO#0
(byte) CYAN
(byte) CYAN#0
(byte*) D011
(byte*) D011#0
(byte*) D016
(byte*) D016#0
(byte*) D018
(byte*) D018#0
(byte) DARK_GREY
(byte) DARK_GREY#0
(byte) GREEN
(byte) GREEN#0
(byte) GREY
(byte) GREY#0
(void()**) HARDWARE_IRQ
(void()**) HARDWARE_IRQ#0
(byte) IRQ_COLLISION_BG
(byte) IRQ_COLLISION_BG#0
(byte) IRQ_COLLISION_SPRITE
(byte) IRQ_COLLISION_SPRITE#0
(byte*) IRQ_ENABLE
(byte*) IRQ_ENABLE#0
(byte) IRQ_LIGHTPEN
(byte) IRQ_LIGHTPEN#0
(byte) IRQ_RASTER
(byte) IRQ_RASTER#0
(byte*) IRQ_STATUS
(byte*) IRQ_STATUS#0
(void()**) KERNEL_IRQ
(void()**) KERNEL_IRQ#0
(byte*) LIGHTPEN_X
(byte*) LIGHTPEN_X#0
(byte*) LIGHTPEN_Y
(byte*) LIGHTPEN_Y#0
(byte) LIGHT_BLUE
(byte) LIGHT_BLUE#0
(byte) LIGHT_GREEN
(byte) LIGHT_GREEN#0
(byte) LIGHT_GREY
(byte) LIGHT_GREY#0
(byte) ORANGE
(byte) ORANGE#0
(signed byte*) PERSP_Z
(signed byte*) PERSP_Z#0
(byte) PINK
(byte) PINK#0
(byte*) PROCPORT
(byte*) PROCPORT#0
(byte) PROCPORT_BASIC_KERNEL_IO
(byte) PROCPORT_BASIC_KERNEL_IO#0
(byte*) PROCPORT_DDR
(byte*) PROCPORT_DDR#0
(byte) PROCPORT_DDR_MEMORY_MASK
(byte) PROCPORT_DDR_MEMORY_MASK#0
(byte) PROCPORT_KERNEL_IO
(byte) PROCPORT_KERNEL_IO#0
(byte) PROCPORT_RAM_ALL
(byte) PROCPORT_RAM_ALL#0
(byte) PROCPORT_RAM_CHARROM
(byte) PROCPORT_RAM_CHARROM#0
(byte) PROCPORT_RAM_IO
(byte) PROCPORT_RAM_IO#0
(byte) PURPLE
(byte) PURPLE#0
(byte*) RASTER
(byte*) RASTER#0
(byte) RED
(byte) RED#0
(byte*) SCREEN
(byte*) SCREEN#0
(byte*) SCREEN#1
(byte*) SCREEN#10
(byte*) SCREEN#11
(byte*) SCREEN#12
(byte*) SCREEN#13
(byte*) SCREEN#14
(byte*) SCREEN#15
(byte*) SCREEN#16
(byte*) SCREEN#17
(byte*) SCREEN#18
(byte*) SCREEN#19
(byte*) SCREEN#2
(byte*) SCREEN#20
(byte*) SCREEN#21
(byte*) SCREEN#22
(byte*) SCREEN#23
(byte*) SCREEN#24
(byte*) SCREEN#25
(byte*) SCREEN#26
(byte*) SCREEN#27
(byte*) SCREEN#28
(byte*) SCREEN#29
(byte*) SCREEN#3
(byte*) SCREEN#30
(byte*) SCREEN#31
(byte*) SCREEN#32
(byte*) SCREEN#33
(byte*) SCREEN#34
(byte*) SCREEN#35
(byte*) SCREEN#36
(byte*) SCREEN#37
(byte*) SCREEN#38
(byte*) SCREEN#39
(byte*) SCREEN#4
(byte*) SCREEN#40
(byte*) SCREEN#41
(byte*) SCREEN#42
(byte*) SCREEN#43
(byte*) SCREEN#44
(byte*) SCREEN#45
(byte*) SCREEN#46
(byte*) SCREEN#47
(byte*) SCREEN#48
(byte*) SCREEN#49
(byte*) SCREEN#5
(byte*) SCREEN#50
(byte*) SCREEN#51
(byte*) SCREEN#52
(byte*) SCREEN#53
(byte*) SCREEN#54
(byte*) SCREEN#55
(byte*) SCREEN#56
(byte*) SCREEN#57
(byte*) SCREEN#58
(byte*) SCREEN#59
(byte*) SCREEN#6
(byte*) SCREEN#60
(byte*) SCREEN#61
(byte*) SCREEN#62
(byte*) SCREEN#63
(byte*) SCREEN#64
(byte*) SCREEN#65
(byte*) SCREEN#66
(byte*) SCREEN#67
(byte*) SCREEN#68
(byte*) SCREEN#69
(byte*) SCREEN#7
(byte*) SCREEN#70
(byte*) SCREEN#71
(byte*) SCREEN#72
(byte*) SCREEN#73
(byte*) SCREEN#8
(byte*) SCREEN#9
(signed byte*) SINH
(signed byte*) SINH#0
(signed byte*) SINH#1
(signed byte*) SINH#10
(signed byte*) SINH#11
(signed byte*) SINH#12
(signed byte*) SINH#13
(signed byte*) SINH#14
(signed byte*) SINH#15
(signed byte*) SINH#16
(signed byte*) SINH#17
(signed byte*) SINH#18
(signed byte*) SINH#19
(signed byte*) SINH#2
(signed byte*) SINH#20
(signed byte*) SINH#3
(signed byte*) SINH#4
(signed byte*) SINH#5
(signed byte*) SINH#6
(signed byte*) SINH#7
(signed byte*) SINH#8
(signed byte*) SINH#9
(byte*) SINH_HI
(byte*) SINH_HI#0
(byte*) SINH_LO
(byte*) SINH_LO#0
(signed byte*) SINQ
(signed byte*) SINQ#0
(signed byte*) SINQ#1
(signed byte*) SINQ#10
(signed byte*) SINQ#11
(signed byte*) SINQ#12
(signed byte*) SINQ#13
(signed byte*) SINQ#14
(signed byte*) SINQ#15
(signed byte*) SINQ#16
(signed byte*) SINQ#17
(signed byte*) SINQ#18
(signed byte*) SINQ#19
(signed byte*) SINQ#2
(signed byte*) SINQ#20
(signed byte*) SINQ#3
(signed byte*) SINQ#4
(signed byte*) SINQ#5
(signed byte*) SINQ#6
(signed byte*) SINQ#7
(signed byte*) SINQ#8
(signed byte*) SINQ#9
(byte*) SINQ_HI
(byte*) SINQ_HI#0
(byte*) SINQ_LO
(byte*) SINQ_LO#0
(byte*) SPRITE
(byte*) SPRITE#0
(byte*) SPRITE#1
(byte*) SPRITE#2
(byte*) SPRITE#3
(byte*) SPRITES_COLS
(byte*) SPRITES_COLS#0
(byte*) SPRITES_ENABLE
(byte*) SPRITES_ENABLE#0
(byte*) SPRITES_EXPAND_X
(byte*) SPRITES_EXPAND_X#0
(byte*) SPRITES_EXPAND_Y
(byte*) SPRITES_EXPAND_Y#0
(byte*) SPRITES_MC
(byte*) SPRITES_MC#0
(byte*) SPRITES_MC1
(byte*) SPRITES_MC1#0
(byte*) SPRITES_MC2
(byte*) SPRITES_MC2#0
(byte*) SPRITES_PRIORITY
(byte*) SPRITES_PRIORITY#0
(byte*) SPRITES_XMSB
(byte*) SPRITES_XMSB#0
(byte*) SPRITES_XPOS
(byte*) SPRITES_XPOS#0
(byte*) SPRITES_YPOS
(byte*) SPRITES_YPOS#0
(word) SPRITE_PTRS
(word) SPRITE_PTRS#0
(byte) VIC_BMM
(byte) VIC_BMM#0
(byte*) VIC_CONTROL
(byte*) VIC_CONTROL#0
(byte*) VIC_CONTROL2
(byte*) VIC_CONTROL2#0
(byte) VIC_CSEL
(byte) VIC_CSEL#0
(byte) VIC_DEN
(byte) VIC_DEN#0
(byte) VIC_ECM
(byte) VIC_ECM#0
(byte) VIC_MCM
(byte) VIC_MCM#0
(byte*) VIC_MEMORY
(byte*) VIC_MEMORY#0
(byte) VIC_RSEL
(byte) VIC_RSEL#0
(byte) VIC_RST8
(byte) VIC_RST8#0
(byte) WHITE
(byte) WHITE#0
(byte) YELLOW
(byte) YELLOW#0
(void()) anim()
(bool~) anim::$0
(bool~) anim::$1
(byte/word/signed word/dword/signed dword~) anim::$10
(bool~) anim::$11
(bool~) anim::$2
(byte~) anim::$6
(byte~) anim::$7
(byte/word/signed word/dword/signed dword~) anim::$8
(byte~) anim::$9
(label) anim::@1
(label) anim::@10
(label) anim::@11
(label) anim::@12
(label) anim::@13
(label) anim::@2
(label) anim::@25
(label) anim::@27
(label) anim::@28
(label) anim::@29
(label) anim::@30
(label) anim::@4
(label) anim::@5
(label) anim::@7
(label) anim::@8
(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()
(word/signed word/dword/signed dword~) debug_print::$12
(byte*~) debug_print::$13
(byte/signed byte/word/signed word/dword/signed dword~) debug_print::$14
(byte*~) debug_print::$15
(byte*~) debug_print::$16
(byte/signed byte/word/signed word/dword/signed dword~) debug_print::$18
(byte*~) debug_print::$19
(byte*~) debug_print::$20
(byte/signed byte/word/signed word/dword/signed dword~) debug_print::$22
(byte*~) debug_print::$23
(byte*~) debug_print::$24
(byte/signed byte/word/signed word/dword/signed dword~) debug_print::$26
(byte*~) debug_print::$27
(byte*~) debug_print::$28
(byte/word/signed word/dword/signed dword~) debug_print::$30
(byte*~) debug_print::$31
(byte*~) debug_print::$32
(byte/word/signed word/dword/signed dword~) debug_print::$34
(byte*~) debug_print::$35
(byte*~) debug_print::$36
(bool~) debug_print::$38
(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
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos10_$0
(byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos10_$0#0
(byte*~) debug_print::print_sbyte_pos10_$1
(byte*) debug_print::print_sbyte_pos10_$1#0
(byte*~) debug_print::print_sbyte_pos10_$2
(byte*) debug_print::print_sbyte_pos10_$2#0
(byte) debug_print::print_sbyte_pos10_col
(byte) debug_print::print_sbyte_pos10_col#0
(byte) debug_print::print_sbyte_pos10_col#1
(byte) debug_print::print_sbyte_pos10_row
(byte) debug_print::print_sbyte_pos10_row#0
(byte) debug_print::print_sbyte_pos10_row#1
(signed byte) debug_print::print_sbyte_pos10_sb
(signed byte) debug_print::print_sbyte_pos10_sb#0
(signed byte) debug_print::print_sbyte_pos10_sb#1
(label) debug_print::print_sbyte_pos11
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos11_$0
(byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos11_$0#0
(byte*~) debug_print::print_sbyte_pos11_$1
(byte*) debug_print::print_sbyte_pos11_$1#0
(byte*~) debug_print::print_sbyte_pos11_$2
(byte*) debug_print::print_sbyte_pos11_$2#0
(byte) debug_print::print_sbyte_pos11_col
(byte) debug_print::print_sbyte_pos11_col#0
(byte) debug_print::print_sbyte_pos11_col#1
(byte) debug_print::print_sbyte_pos11_row
(byte) debug_print::print_sbyte_pos11_row#0
(byte) debug_print::print_sbyte_pos11_row#1
(signed byte) debug_print::print_sbyte_pos11_sb
(signed byte) debug_print::print_sbyte_pos11_sb#0
(signed byte) debug_print::print_sbyte_pos11_sb#1
(label) debug_print::print_sbyte_pos12
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos12_$0
(byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos12_$0#0
(byte*~) debug_print::print_sbyte_pos12_$1
(byte*) debug_print::print_sbyte_pos12_$1#0
(byte*~) debug_print::print_sbyte_pos12_$2
(byte*) debug_print::print_sbyte_pos12_$2#0
(byte) debug_print::print_sbyte_pos12_col
(byte) debug_print::print_sbyte_pos12_col#0
(byte) debug_print::print_sbyte_pos12_col#1
(byte) debug_print::print_sbyte_pos12_row
(byte) debug_print::print_sbyte_pos12_row#0
(byte) debug_print::print_sbyte_pos12_row#1
(signed byte) debug_print::print_sbyte_pos12_sb
(signed byte) debug_print::print_sbyte_pos12_sb#0
(signed byte) debug_print::print_sbyte_pos12_sb#1
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos1_$0
(byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos1_$0#0
(byte*~) debug_print::print_sbyte_pos1_$1
(byte*) debug_print::print_sbyte_pos1_$1#0
(byte*~) debug_print::print_sbyte_pos1_$2
(byte*) debug_print::print_sbyte_pos1_$2#0
(byte) debug_print::print_sbyte_pos1_col
(byte) debug_print::print_sbyte_pos1_col#0
(byte) debug_print::print_sbyte_pos1_col#1
(byte) debug_print::print_sbyte_pos1_row
(byte) debug_print::print_sbyte_pos1_row#0
(byte) debug_print::print_sbyte_pos1_row#1
(signed byte) debug_print::print_sbyte_pos1_sb
(signed byte) debug_print::print_sbyte_pos1_sb#0
(signed byte) debug_print::print_sbyte_pos1_sb#1
(label) debug_print::print_sbyte_pos2
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos2_$0
(byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos2_$0#0
(byte*~) debug_print::print_sbyte_pos2_$1
(byte*) debug_print::print_sbyte_pos2_$1#0
(byte*~) debug_print::print_sbyte_pos2_$2
(byte*) debug_print::print_sbyte_pos2_$2#0
(byte) debug_print::print_sbyte_pos2_col
(byte) debug_print::print_sbyte_pos2_col#0
(byte) debug_print::print_sbyte_pos2_col#1
(byte) debug_print::print_sbyte_pos2_row
(byte) debug_print::print_sbyte_pos2_row#0
(byte) debug_print::print_sbyte_pos2_row#1
(signed byte) debug_print::print_sbyte_pos2_sb
(signed byte) debug_print::print_sbyte_pos2_sb#0
(signed byte) debug_print::print_sbyte_pos2_sb#1
(label) debug_print::print_sbyte_pos3
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos3_$0
(byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos3_$0#0
(byte*~) debug_print::print_sbyte_pos3_$1
(byte*) debug_print::print_sbyte_pos3_$1#0
(byte*~) debug_print::print_sbyte_pos3_$2
(byte*) debug_print::print_sbyte_pos3_$2#0
(byte) debug_print::print_sbyte_pos3_col
(byte) debug_print::print_sbyte_pos3_col#0
(byte) debug_print::print_sbyte_pos3_col#1
(byte) debug_print::print_sbyte_pos3_row
(byte) debug_print::print_sbyte_pos3_row#0
(byte) debug_print::print_sbyte_pos3_row#1
(signed byte) debug_print::print_sbyte_pos3_sb
(signed byte) debug_print::print_sbyte_pos3_sb#0
(signed byte) debug_print::print_sbyte_pos3_sb#1
(label) debug_print::print_sbyte_pos4
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos4_$0
(byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos4_$0#0
(byte*~) debug_print::print_sbyte_pos4_$1
(byte*) debug_print::print_sbyte_pos4_$1#0
(byte*~) debug_print::print_sbyte_pos4_$2
(byte*) debug_print::print_sbyte_pos4_$2#0
(byte) debug_print::print_sbyte_pos4_col
(byte) debug_print::print_sbyte_pos4_col#0
(byte) debug_print::print_sbyte_pos4_col#1
(byte) debug_print::print_sbyte_pos4_row
(byte) debug_print::print_sbyte_pos4_row#0
(byte) debug_print::print_sbyte_pos4_row#1
(signed byte) debug_print::print_sbyte_pos4_sb
(signed byte) debug_print::print_sbyte_pos4_sb#0
(signed byte) debug_print::print_sbyte_pos4_sb#1
(label) debug_print::print_sbyte_pos5
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos5_$0
(byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos5_$0#0
(byte*~) debug_print::print_sbyte_pos5_$1
(byte*) debug_print::print_sbyte_pos5_$1#0
(byte*~) debug_print::print_sbyte_pos5_$2
(byte*) debug_print::print_sbyte_pos5_$2#0
(byte) debug_print::print_sbyte_pos5_col
(byte) debug_print::print_sbyte_pos5_col#0
(byte) debug_print::print_sbyte_pos5_col#1
(byte) debug_print::print_sbyte_pos5_row
(byte) debug_print::print_sbyte_pos5_row#0
(byte) debug_print::print_sbyte_pos5_row#1
(signed byte) debug_print::print_sbyte_pos5_sb
(signed byte) debug_print::print_sbyte_pos5_sb#0
(signed byte) debug_print::print_sbyte_pos5_sb#1
(label) debug_print::print_sbyte_pos6
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos6_$0
(byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos6_$0#0
(byte*~) debug_print::print_sbyte_pos6_$1
(byte*) debug_print::print_sbyte_pos6_$1#0
(byte*~) debug_print::print_sbyte_pos6_$2
(byte*) debug_print::print_sbyte_pos6_$2#0
(byte) debug_print::print_sbyte_pos6_col
(byte) debug_print::print_sbyte_pos6_col#0
(byte) debug_print::print_sbyte_pos6_col#1
(byte) debug_print::print_sbyte_pos6_row
(byte) debug_print::print_sbyte_pos6_row#0
(byte) debug_print::print_sbyte_pos6_row#1
(signed byte) debug_print::print_sbyte_pos6_sb
(signed byte) debug_print::print_sbyte_pos6_sb#0
(signed byte) debug_print::print_sbyte_pos6_sb#1
(label) debug_print::print_sbyte_pos7
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos7_$0
(byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos7_$0#0
(byte*~) debug_print::print_sbyte_pos7_$1
(byte*) debug_print::print_sbyte_pos7_$1#0
(byte*~) debug_print::print_sbyte_pos7_$2
(byte*) debug_print::print_sbyte_pos7_$2#0
(byte) debug_print::print_sbyte_pos7_col
(byte) debug_print::print_sbyte_pos7_col#0
(byte) debug_print::print_sbyte_pos7_col#1
(byte) debug_print::print_sbyte_pos7_row
(byte) debug_print::print_sbyte_pos7_row#0
(byte) debug_print::print_sbyte_pos7_row#1
(signed byte) debug_print::print_sbyte_pos7_sb
(signed byte) debug_print::print_sbyte_pos7_sb#0
(signed byte) debug_print::print_sbyte_pos7_sb#1
(label) debug_print::print_sbyte_pos8
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos8_$0
(byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos8_$0#0
(byte*~) debug_print::print_sbyte_pos8_$1
(byte*) debug_print::print_sbyte_pos8_$1#0
(byte*~) debug_print::print_sbyte_pos8_$2
(byte*) debug_print::print_sbyte_pos8_$2#0
(byte) debug_print::print_sbyte_pos8_col
(byte) debug_print::print_sbyte_pos8_col#0
(byte) debug_print::print_sbyte_pos8_col#1
(byte) debug_print::print_sbyte_pos8_row
(byte) debug_print::print_sbyte_pos8_row#0
(byte) debug_print::print_sbyte_pos8_row#1
(signed byte) debug_print::print_sbyte_pos8_sb
(signed byte) debug_print::print_sbyte_pos8_sb#0
(signed byte) debug_print::print_sbyte_pos8_sb#1
(label) debug_print::print_sbyte_pos9
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos9_$0
(byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos9_$0#0
(byte*~) debug_print::print_sbyte_pos9_$1
(byte*) debug_print::print_sbyte_pos9_$1#0
(byte*~) debug_print::print_sbyte_pos9_$2
(byte*) debug_print::print_sbyte_pos9_$2#0
(byte) debug_print::print_sbyte_pos9_col
(byte) debug_print::print_sbyte_pos9_col#0
(byte) debug_print::print_sbyte_pos9_col#1
(byte) debug_print::print_sbyte_pos9_row
(byte) debug_print::print_sbyte_pos9_row#0
(byte) debug_print::print_sbyte_pos9_row#1
(signed byte) debug_print::print_sbyte_pos9_sb
(signed byte) debug_print::print_sbyte_pos9_sb#0
(signed byte) debug_print::print_sbyte_pos9_sb#1
(void()) debug_print_init()
(byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$1
(byte*~) debug_print_init::$10
(byte*~) debug_print_init::$11
(word/signed word/dword/signed dword~) debug_print_init::$13
(byte*~) debug_print_init::$14
(word/signed word/dword/signed dword~) debug_print_init::$16
(byte*~) debug_print_init::$17
(word/signed word/dword/signed dword~) debug_print_init::$19
(byte*~) debug_print_init::$2
(byte*~) debug_print_init::$20
(word/signed word/dword/signed dword~) debug_print_init::$22
(byte*~) debug_print_init::$23
(word/signed word/dword/signed dword~) debug_print_init::$25
(byte*~) debug_print_init::$26
(word/signed word/dword/signed dword~) debug_print_init::$28
(byte*~) debug_print_init::$29
(byte*~) debug_print_init::$3
(word/signed word/dword/signed dword~) debug_print_init::$31
(byte*~) debug_print_init::$32
(word/signed word/dword/signed dword~) debug_print_init::$34
(byte*~) debug_print_init::$35
(word/signed word/dword/signed dword~) debug_print_init::$37
(byte*~) debug_print_init::$38
(word/signed word/dword/signed dword~) debug_print_init::$40
(byte*~) debug_print_init::$41
(word/signed word/dword/signed dword~) debug_print_init::$42
(byte*~) debug_print_init::$43
(byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$44
(byte*~) debug_print_init::$45
(byte*~) debug_print_init::$46
(byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$48
(byte*~) debug_print_init::$49
(byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$5
(byte*~) debug_print_init::$50
(byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$52
(byte*~) debug_print_init::$53
(byte*~) debug_print_init::$54
(byte/signed word/word/dword/signed dword~) debug_print_init::$56
(byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$57
(byte*~) debug_print_init::$58
(byte*~) debug_print_init::$59
(byte*~) debug_print_init::$6
(byte*~) debug_print_init::$60
(byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$61
(byte*~) debug_print_init::$62
(byte*~) debug_print_init::$63
(byte*~) debug_print_init::$64
(byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$65
(byte*~) debug_print_init::$66
(byte*~) debug_print_init::$67
(byte*~) debug_print_init::$68
(byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$69
(byte*~) debug_print_init::$7
(byte*~) debug_print_init::$70
(byte*~) debug_print_init::$71
(byte*~) debug_print_init::$72
(byte/word/signed word/dword/signed dword~) debug_print_init::$73
(byte*~) debug_print_init::$74
(byte*~) debug_print_init::$75
(byte*~) debug_print_init::$76
(byte/word/signed word/dword/signed dword~) debug_print_init::$77
(byte*~) debug_print_init::$78
(byte*~) debug_print_init::$79
(byte*~) debug_print_init::$80
(byte/word/signed word/dword/signed dword~) debug_print_init::$81
(byte*~) debug_print_init::$82
(byte*~) debug_print_init::$83
(byte*~) debug_print_init::$84
(word/signed word/dword/signed dword~) debug_print_init::$85
(byte*~) debug_print_init::$86
(byte*~) debug_print_init::$87
(byte*~) debug_print_init::$88
(word/signed word/dword/signed dword~) debug_print_init::$89
(byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$9
(byte*~) debug_print_init::$90
(byte*~) debug_print_init::$91
(byte*~) debug_print_init::$92
(bool~) debug_print_init::$93
(bool~) debug_print_init::$94
(label) debug_print_init::@1
(label) debug_print_init::@10
(label) debug_print_init::@11
(label) debug_print_init::@12
(label) debug_print_init::@13
(label) debug_print_init::@14
(label) debug_print_init::@15
(label) debug_print_init::@16
(label) debug_print_init::@17
(label) debug_print_init::@18
(label) debug_print_init::@19
(label) debug_print_init::@2
(label) debug_print_init::@20
(label) debug_print_init::@3
(label) debug_print_init::@5
(label) debug_print_init::@6
(label) debug_print_init::@7
(label) debug_print_init::@8
(label) debug_print_init::@9
(label) debug_print_init::@return
(byte*) debug_print_init::COLS
(byte*) debug_print_init::COLS#0
(byte*) debug_print_init::at_cols
(byte*) debug_print_init::at_cols#0
(byte*) debug_print_init::at_cols#1
(byte*) debug_print_init::at_cols#2
(byte*) debug_print_init::at_cols#3
(byte*) debug_print_init::at_cols#4
(byte*) debug_print_init::at_cols#5
(byte*) debug_print_init::at_cols#6
(byte*) debug_print_init::at_line
(byte*) debug_print_init::at_line#0
(byte*) debug_print_init::at_line#1
(byte*) debug_print_init::at_line#2
(byte*) debug_print_init::at_line#3
(byte*) debug_print_init::at_line#4
(byte*) debug_print_init::at_line#5
(byte*) debug_print_init::at_line#6
(byte) debug_print_init::c
(byte) debug_print_init::c#0
(byte) debug_print_init::c#1
(byte) debug_print_init::c#2
(byte) debug_print_init::c#3
(byte) debug_print_init::c#4
(byte) debug_print_init::c#5
(byte) debug_print_init::c#6
(byte) debug_print_init::c#7
(byte) debug_print_init::col
(byte) debug_print_init::col#0
(byte) debug_print_init::i
(byte) debug_print_init::i#0
(byte) debug_print_init::i#1
(byte) debug_print_init::i#2
(byte) debug_print_init::i#3
(byte) debug_print_init::i#4
(byte) debug_print_init::i#5
(byte) debug_print_init::i#6
(byte) debug_print_init::i#7
(byte) debug_print_init::j
(byte) debug_print_init::j#0
(byte) debug_print_init::j#1
(byte) debug_print_init::j#2
(const string) debug_print_init::str = (string) "sx@"
(const string) debug_print_init::str1 = (string) "sy@"
(const string) debug_print_init::str10 = (string) "xp@"
(const string) debug_print_init::str11 = (string) "yp@"
(const string) debug_print_init::str2 = (string) "sz@"
(const string) debug_print_init::str3 = (string) "x@"
(const string) debug_print_init::str4 = (string) "y@"
(const string) debug_print_init::str5 = (string) "z@"
(const string) debug_print_init::str6 = (string) "xr@"
(const string) debug_print_init::str7 = (string) "yr@"
(const string) debug_print_init::str8 = (string) "zr@"
(const string) debug_print_init::str9 = (string) "pp@"
(void()) main()
(word~) main::$1
(word~) main::$2
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@return
(byte*) mulf_sqr1
(byte*) mulf_sqr1#0
(byte*) mulf_sqr1#1
(byte*) mulf_sqr1#2
(byte*) mulf_sqr2
(byte*) mulf_sqr2#0
(byte*) mulf_sqr2#1
(byte*) mulf_sqr2#2
(signed byte*) pp
(signed byte*) pp#0
(signed byte*) pp#1
(signed byte*) pp#10
(signed byte*) pp#11
(signed byte*) pp#12
(signed byte*) pp#13
(signed byte*) pp#14
(signed byte*) pp#15
(signed byte*) pp#16
(signed byte*) pp#17
(signed byte*) pp#18
(signed byte*) pp#19
(signed byte*) pp#2
(signed byte*) pp#20
(signed byte*) pp#21
(signed byte*) pp#22
(signed byte*) pp#3
(signed byte*) pp#4
(signed byte*) pp#5
(signed byte*) pp#6
(signed byte*) pp#7
(signed byte*) pp#8
(signed byte*) pp#9
(signed byte[8]) pps
(signed byte[8]) pps#0
(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at)
(byte~) print_byte_at::$0
(byte~) 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
(byte*) print_char_cursor
(byte*) print_char_cursor#0
(byte*) print_char_cursor#1
(byte*) print_char_cursor#10
(byte*) print_char_cursor#11
(byte*) print_char_cursor#12
(byte*) print_char_cursor#13
(byte*) print_char_cursor#14
(byte*) print_char_cursor#15
(byte*) print_char_cursor#16
(byte*) print_char_cursor#17
(byte*) print_char_cursor#18
(byte*) print_char_cursor#19
(byte*) print_char_cursor#2
(byte*) print_char_cursor#20
(byte*) print_char_cursor#21
(byte*) print_char_cursor#22
(byte*) print_char_cursor#23
(byte*) print_char_cursor#24
(byte*) print_char_cursor#25
(byte*) print_char_cursor#26
(byte*) print_char_cursor#27
(byte*) print_char_cursor#28
(byte*) print_char_cursor#29
(byte*) print_char_cursor#3
(byte*) print_char_cursor#30
(byte*) print_char_cursor#31
(byte*) print_char_cursor#32
(byte*) print_char_cursor#33
(byte*) print_char_cursor#34
(byte*) print_char_cursor#35
(byte*) print_char_cursor#36
(byte*) print_char_cursor#37
(byte*) print_char_cursor#38
(byte*) print_char_cursor#39
(byte*) print_char_cursor#4
(byte*) print_char_cursor#40
(byte*) print_char_cursor#5
(byte*) print_char_cursor#6
(byte*) print_char_cursor#7
(byte*) print_char_cursor#8
(byte*) print_char_cursor#9
(void()) print_cls()
(byte*~) print_cls::$0
(bool~) print_cls::$1
(label) print_cls::@1
(label) print_cls::@2
(label) print_cls::@return
(byte*) print_cls::sc
(byte*) print_cls::sc#0
(byte*) print_cls::sc#1
(byte*) print_cls::sc#2
(byte[]) print_hextab
(byte[]) print_hextab#0
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
(byte*) print_line_cursor#10
(byte*) print_line_cursor#11
(byte*) print_line_cursor#12
(byte*) print_line_cursor#13
(byte*) print_line_cursor#14
(byte*) print_line_cursor#15
(byte*) print_line_cursor#16
(byte*) print_line_cursor#17
(byte*) print_line_cursor#18
(byte*) print_line_cursor#19
(byte*) print_line_cursor#2
(byte*) print_line_cursor#20
(byte*) print_line_cursor#21
(byte*) print_line_cursor#22
(byte*) print_line_cursor#23
(byte*) print_line_cursor#24
(byte*) print_line_cursor#25
(byte*) print_line_cursor#26
(byte*) print_line_cursor#27
(byte*) print_line_cursor#28
(byte*) print_line_cursor#29
(byte*) print_line_cursor#3
(byte*) print_line_cursor#30
(byte*) print_line_cursor#31
(byte*) print_line_cursor#32
(byte*) print_line_cursor#33
(byte*) print_line_cursor#34
(byte*) print_line_cursor#35
(byte*) print_line_cursor#36
(byte*) print_line_cursor#37
(byte*) print_line_cursor#38
(byte*) print_line_cursor#39
(byte*) print_line_cursor#4
(byte*) print_line_cursor#40
(byte*) print_line_cursor#5
(byte*) print_line_cursor#6
(byte*) print_line_cursor#7
(byte*) print_line_cursor#8
(byte*) print_line_cursor#9
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
(bool~) print_sbyte_at::$0
(signed byte~) print_sbyte_at::$3
(byte~) print_sbyte_at::$4
(byte*~) print_sbyte_at::$5
(label) print_sbyte_at::@1
(label) print_sbyte_at::@2
(label) print_sbyte_at::@3
(label) print_sbyte_at::@5
(label) print_sbyte_at::@6
(label) print_sbyte_at::@7
(label) print_sbyte_at::@return
(byte*) print_sbyte_at::at
(byte*) print_sbyte_at::at#0
(byte*) print_sbyte_at::at#1
(byte*) print_sbyte_at::at#10
(byte*) print_sbyte_at::at#11
(byte*) print_sbyte_at::at#12
(byte*) print_sbyte_at::at#13
(byte*) print_sbyte_at::at#14
(byte*) print_sbyte_at::at#15
(byte*) print_sbyte_at::at#16
(byte*) print_sbyte_at::at#17
(byte*) print_sbyte_at::at#18
(byte*) print_sbyte_at::at#19
(byte*) print_sbyte_at::at#2
(byte*) print_sbyte_at::at#20
(byte*) print_sbyte_at::at#21
(byte*) print_sbyte_at::at#22
(byte*) print_sbyte_at::at#23
(byte*) print_sbyte_at::at#24
(byte*) print_sbyte_at::at#25
(byte*) print_sbyte_at::at#26
(byte*) print_sbyte_at::at#3
(byte*) print_sbyte_at::at#4
(byte*) print_sbyte_at::at#5
(byte*) print_sbyte_at::at#6
(byte*) print_sbyte_at::at#7
(byte*) print_sbyte_at::at#8
(byte*) print_sbyte_at::at#9
(signed byte) print_sbyte_at::b
(signed byte) print_sbyte_at::b#0
(signed byte) print_sbyte_at::b#1
(signed byte) print_sbyte_at::b#10
(signed byte) print_sbyte_at::b#11
(signed byte) print_sbyte_at::b#12
(signed byte) print_sbyte_at::b#13
(signed byte) print_sbyte_at::b#14
(signed byte) print_sbyte_at::b#15
(signed byte) print_sbyte_at::b#16
(signed byte) print_sbyte_at::b#17
(signed byte) print_sbyte_at::b#18
(signed byte) print_sbyte_at::b#19
(signed byte) print_sbyte_at::b#2
(signed byte) print_sbyte_at::b#20
(signed byte) print_sbyte_at::b#21
(signed byte) print_sbyte_at::b#22
(signed byte) print_sbyte_at::b#23
(signed byte) print_sbyte_at::b#24
(signed byte) print_sbyte_at::b#25
(signed byte) print_sbyte_at::b#26
(signed byte) print_sbyte_at::b#27
(signed byte) print_sbyte_at::b#3
(signed byte) print_sbyte_at::b#4
(signed byte) print_sbyte_at::b#5
(signed byte) print_sbyte_at::b#6
(signed byte) print_sbyte_at::b#7
(signed byte) print_sbyte_at::b#8
(signed byte) print_sbyte_at::b#9
(byte*) print_screen
(byte*) print_screen#0
(byte*) print_screen#1
(byte*) print_screen#10
(byte*) print_screen#11
(byte*) print_screen#12
(byte*) print_screen#13
(byte*) print_screen#14
(byte*) print_screen#15
(byte*) print_screen#16
(byte*) print_screen#17
(byte*) print_screen#18
(byte*) print_screen#19
(byte*) print_screen#2
(byte*) print_screen#20
(byte*) print_screen#21
(byte*) print_screen#22
(byte*) print_screen#23
(byte*) print_screen#24
(byte*) print_screen#25
(byte*) print_screen#26
(byte*) print_screen#27
(byte*) print_screen#28
(byte*) print_screen#29
(byte*) print_screen#3
(byte*) print_screen#30
(byte*) print_screen#31
(byte*) print_screen#32
(byte*) print_screen#33
(byte*) print_screen#34
(byte*) print_screen#35
(byte*) print_screen#36
(byte*) print_screen#37
(byte*) print_screen#38
(byte*) print_screen#39
(byte*) print_screen#4
(byte*) print_screen#40
(byte*) print_screen#41
(byte*) print_screen#42
(byte*) print_screen#43
(byte*) print_screen#44
(byte*) print_screen#45
(byte*) print_screen#46
(byte*) print_screen#47
(byte*) print_screen#48
(byte*) print_screen#49
(byte*) print_screen#5
(byte*) print_screen#50
(byte*) print_screen#51
(byte*) print_screen#52
(byte*) print_screen#53
(byte*) print_screen#54
(byte*) print_screen#55
(byte*) print_screen#56
(byte*) print_screen#57
(byte*) print_screen#58
(byte*) print_screen#59
(byte*) print_screen#6
(byte*) print_screen#60
(byte*) print_screen#61
(byte*) print_screen#62
(byte*) print_screen#63
(byte*) print_screen#7
(byte*) print_screen#8
(byte*) print_screen#9
(void()) print_str_at((byte*) print_str_at::str , (byte*) print_str_at::at)
(bool~) print_str_at::$0
(label) print_str_at::@1
(label) print_str_at::@2
(label) print_str_at::@return
(byte*) print_str_at::at
(byte*) print_str_at::at#0
(byte*) print_str_at::at#1
(byte*) print_str_at::at#10
(byte*) print_str_at::at#11
(byte*) print_str_at::at#12
(byte*) print_str_at::at#13
(byte*) print_str_at::at#14
(byte*) print_str_at::at#15
(byte*) print_str_at::at#2
(byte*) print_str_at::at#3
(byte*) print_str_at::at#4
(byte*) print_str_at::at#5
(byte*) print_str_at::at#6
(byte*) print_str_at::at#7
(byte*) print_str_at::at#8
(byte*) print_str_at::at#9
(byte*) print_str_at::str
(byte*) print_str_at::str#0
(byte*) print_str_at::str#1
(byte*) print_str_at::str#10
(byte*) print_str_at::str#11
(byte*) print_str_at::str#12
(byte*) print_str_at::str#13
(byte*) print_str_at::str#14
(byte*) print_str_at::str#15
(byte*) print_str_at::str#2
(byte*) print_str_at::str#3
(byte*) print_str_at::str#4
(byte*) print_str_at::str#5
(byte*) print_str_at::str#6
(byte*) print_str_at::str#7
(byte*) print_str_at::str#8
(byte*) print_str_at::str#9
(word*) psp1
(word*) psp1#0
(word*) psp1#1
(word*) psp1#2
(word*) psp1#3
(word*) psp1#4
(word*) psp1#5
(word*) psp2
(word*) psp2#0
(word*) psp2#1
(word*) psp2#2
(word*) psp2#3
(word*) psp2#4
(word*) psp2#5
(void()) rotate_matrix((signed byte) rotate_matrix::x , (signed byte) rotate_matrix::y , (signed byte) rotate_matrix::z)
(label) rotate_matrix::@return
(signed byte) rotate_matrix::x
(signed byte) rotate_matrix::x#0
(signed byte) rotate_matrix::x#1
(signed byte) rotate_matrix::y
(signed byte) rotate_matrix::y#0
(signed byte) rotate_matrix::y#1
(signed byte) rotate_matrix::z
(signed byte) rotate_matrix::z#0
(signed byte) rotate_matrix::z#1
(signed byte[9]) rotation_matrix
(signed byte[9]) rotation_matrix#0
(void()) sprites_init()
(byte*~) sprites_init::$0
(byte*~) sprites_init::$1
(byte~) sprites_init::$2
(bool~) sprites_init::$3
(label) sprites_init::@1
(label) sprites_init::@return
(byte*) sprites_init::SCREEN
(byte*) sprites_init::SCREEN#0
(byte) sprites_init::i
(byte) sprites_init::i#0
(byte) sprites_init::i#1
(byte) sprites_init::i#2
(byte*) sprites_init::sprites_ptr
(byte*) sprites_init::sprites_ptr#0
(byte*) sprites_init::sprites_ptr#1
(void()) store_matrix()
(label) store_matrix::@return
(signed byte) sx
(signed byte) sx#0
(signed byte) sx#1
(signed byte) sx#10
(signed byte) sx#11
(signed byte) sx#12
(signed byte) sx#13
(signed byte) sx#14
(signed byte) sx#15
(signed byte) sx#16
(signed byte) sx#17
(signed byte) sx#18
(signed byte) sx#19
(signed byte) sx#2
(signed byte) sx#20
(signed byte) sx#21
(signed byte) sx#22
(signed byte) sx#23
(signed byte) sx#24
(signed byte) sx#25
(signed byte) sx#26
(signed byte) sx#27
(signed byte) sx#28
(signed byte) sx#29
(signed byte) sx#3
(signed byte) sx#30
(signed byte) sx#31
(signed byte) sx#4
(signed byte) sx#5
(signed byte) sx#6
(signed byte) sx#7
(signed byte) sx#8
(signed byte) sx#9
(signed byte) sy
(signed byte) sy#0
(signed byte) sy#1
(signed byte) sy#10
(signed byte) sy#11
(signed byte) sy#12
(signed byte) sy#13
(signed byte) sy#14
(signed byte) sy#15
(signed byte) sy#16
(signed byte) sy#17
(signed byte) sy#18
(signed byte) sy#19
(signed byte) sy#2
(signed byte) sy#20
(signed byte) sy#21
(signed byte) sy#22
(signed byte) sy#23
(signed byte) sy#24
(signed byte) sy#25
(signed byte) sy#26
(signed byte) sy#27
(signed byte) sy#28
(signed byte) sy#29
(signed byte) sy#3
(signed byte) sy#30
(signed byte) sy#31
(signed byte) sy#32
(signed byte) sy#33
(signed byte) sy#34
(signed byte) sy#4
(signed byte) sy#5
(signed byte) sy#6
(signed byte) sy#7
(signed byte) sy#8
(signed byte) sy#9
(signed byte) sz
(signed byte) sz#0
(signed byte) sz#1
(signed byte) sz#10
(signed byte) sz#11
(signed byte) sz#12
(signed byte) sz#13
(signed byte) sz#14
(signed byte) sz#15
(signed byte) sz#16
(signed byte) sz#17
(signed byte) sz#18
(signed byte) sz#19
(signed byte) sz#2
(signed byte) sz#20
(signed byte) sz#21
(signed byte) sz#22
(signed byte) sz#23
(signed byte) sz#24
(signed byte) sz#25
(signed byte) sz#26
(signed byte) sz#27
(signed byte) sz#28
(signed byte) sz#3
(signed byte) sz#4
(signed byte) sz#5
(signed byte) sz#6
(signed byte) sz#7
(signed byte) sz#8
(signed byte) sz#9
(signed byte*) xp
(signed byte*) xp#0
(signed byte*) xp#1
(signed byte*) xp#10
(signed byte*) xp#11
(signed byte*) xp#12
(signed byte*) xp#13
(signed byte*) xp#14
(signed byte*) xp#15
(signed byte*) xp#16
(signed byte*) xp#17
(signed byte*) xp#18
(signed byte*) xp#19
(signed byte*) xp#2
(signed byte*) xp#20
(signed byte*) xp#21
(signed byte*) xp#22
(signed byte*) xp#3
(signed byte*) xp#4
(signed byte*) xp#5
(signed byte*) xp#6
(signed byte*) xp#7
(signed byte*) xp#8
(signed byte*) xp#9
(signed byte[8]) xps
(signed byte[8]) xps#0
(signed byte*) xr
(signed byte*) xr#0
(signed byte*) xr#1
(signed byte*) xr#10
(signed byte*) xr#11
(signed byte*) xr#12
(signed byte*) xr#13
(signed byte*) xr#14
(signed byte*) xr#15
(signed byte*) xr#16
(signed byte*) xr#17
(signed byte*) xr#18
(signed byte*) xr#19
(signed byte*) xr#2
(signed byte*) xr#20
(signed byte*) xr#21
(signed byte*) xr#22
(signed byte*) xr#23
(signed byte*) xr#3
(signed byte*) xr#4
(signed byte*) xr#5
(signed byte*) xr#6
(signed byte*) xr#7
(signed byte*) xr#8
(signed byte*) xr#9
(signed byte[8]) xrs
(signed byte[8]) xrs#0
(signed byte[8]) xs
(signed byte[8]) xs#0
(signed byte*) yp
(signed byte*) yp#0
(signed byte*) yp#1
(signed byte*) yp#10
(signed byte*) yp#11
(signed byte*) yp#12
(signed byte*) yp#13
(signed byte*) yp#14
(signed byte*) yp#15
(signed byte*) yp#16
(signed byte*) yp#17
(signed byte*) yp#18
(signed byte*) yp#19
(signed byte*) yp#2
(signed byte*) yp#20
(signed byte*) yp#21
(signed byte*) yp#22
(signed byte*) yp#3
(signed byte*) yp#4
(signed byte*) yp#5
(signed byte*) yp#6
(signed byte*) yp#7
(signed byte*) yp#8
(signed byte*) yp#9
(signed byte[8]) yps
(signed byte[8]) yps#0
(signed byte*) yr
(signed byte*) yr#0
(signed byte*) yr#1
(signed byte*) yr#10
(signed byte*) yr#11
(signed byte*) yr#12
(signed byte*) yr#13
(signed byte*) yr#14
(signed byte*) yr#15
(signed byte*) yr#16
(signed byte*) yr#17
(signed byte*) yr#18
(signed byte*) yr#19
(signed byte*) yr#2
(signed byte*) yr#20
(signed byte*) yr#21
(signed byte*) yr#22
(signed byte*) yr#23
(signed byte*) yr#3
(signed byte*) yr#4
(signed byte*) yr#5
(signed byte*) yr#6
(signed byte*) yr#7
(signed byte*) yr#8
(signed byte*) yr#9
(signed byte[8]) yrs
(signed byte[8]) yrs#0
(signed byte[8]) ys
(signed byte[8]) ys#0
(signed byte*) zr
(signed byte*) zr#0
(signed byte*) zr#1
(signed byte*) zr#10
(signed byte*) zr#11
(signed byte*) zr#12
(signed byte*) zr#13
(signed byte*) zr#14
(signed byte*) zr#15
(signed byte*) zr#16
(signed byte*) zr#17
(signed byte*) zr#18
(signed byte*) zr#19
(signed byte*) zr#2
(signed byte*) zr#20
(signed byte*) zr#21
(signed byte*) zr#22
(signed byte*) zr#23
(signed byte*) zr#3
(signed byte*) zr#4
(signed byte*) zr#5
(signed byte*) zr#6
(signed byte*) zr#7
(signed byte*) zr#8
(signed byte*) zr#9
(signed byte[8]) zrs
(signed byte[8]) zrs#0
(signed byte[8]) zs
(signed byte[8]) zs#0

Culled Empty Block (label) print_sbyte_at::@7
Culled Empty Block (label) print_byte_at::@2
Successful SSA optimization Pass2CullEmptyBlocks
Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#26 (byte*) print_char_cursor#26 (byte*) print_screen#52 (byte*) print_line_cursor#24 (byte*) print_char_cursor#24 (byte*) print_screen#50 (byte*) print_line_cursor#23 (byte*) print_char_cursor#23 (byte*) print_screen#49 (byte*) print_line_cursor#21 (byte*) print_char_cursor#21 (byte*) print_screen#47 (byte*) print_line_cursor#18 (byte*) print_char_cursor#18 (byte*) print_screen#44 
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::$3 
Alias (byte) print_byte_at::b#0 = (byte~) print_sbyte_at::$4 
Alias (byte*) print_byte_at::at#0 = (byte*~) print_sbyte_at::$5 
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 (byte*) print_line_cursor#1 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_char_cursor#1 (byte*) print_line_cursor#8 (byte*) print_char_cursor#8 (byte*) print_line_cursor#2 (byte*) print_char_cursor#2 
Alias (byte*) mulf_sqr1#1 = (byte*) mulf_sqr1#2 
Alias (word*) psp1#1 = (word*) psp1#2 
Alias (byte*) mulf_sqr2#1 = (byte*) mulf_sqr2#2 
Alias (word*) psp2#1 = (word*) psp2#2 
Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#19 
Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#19 
Alias (signed byte) sx#13 = (signed byte) sx#18 (signed byte) sx#24 
Alias (signed byte) sy#13 = (signed byte) sy#19 (signed byte) sy#26 
Alias (byte*) print_screen#29 = (byte*) print_screen#42 (byte*) print_screen#63 
Alias (byte*) SCREEN#17 = (byte*) SCREEN#19 (byte*) SCREEN#73 
Alias (signed byte) sz#19 = (signed byte) sz#21 (signed byte) sz#23 
Alias (signed byte*) COSH#13 = (signed byte*) COSH#15 (signed byte*) COSH#17 
Alias (signed byte*) SINH#13 = (signed byte*) SINH#15 (signed byte*) SINH#17 
Alias (signed byte*) COSQ#13 = (signed byte*) COSQ#15 (signed byte*) COSQ#17 
Alias (signed byte*) SINQ#13 = (signed byte*) SINQ#15 (signed byte*) SINQ#17 
Alias (signed byte*) xr#17 = (signed byte*) xr#19 (signed byte*) xr#20 
Alias (signed byte*) yr#17 = (signed byte*) yr#19 (signed byte*) yr#20 
Alias (signed byte*) zr#17 = (signed byte*) zr#19 (signed byte*) zr#20 
Alias (signed byte*) pp#16 = (signed byte*) pp#18 (signed byte*) pp#19 
Alias (signed byte*) xp#16 = (signed byte*) xp#18 (signed byte*) xp#19 
Alias (signed byte*) yp#16 = (signed byte*) yp#18 (signed byte*) yp#19 
Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#3 (byte*) print_line_cursor#9 (byte*) print_line_cursor#15 (byte*) print_line_cursor#4 
Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#3 (byte*) print_char_cursor#9 (byte*) print_char_cursor#15 (byte*) print_char_cursor#4 
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 (word*) psp1#0 = (word*) psp1#5 (word*) psp1#4 (word*) psp1#3 
Alias (word*) psp2#0 = (word*) psp2#5 (word*) psp2#4 (word*) psp2#3 
Alias (byte*) SCREEN#0 = (byte*) SCREEN#26 (byte*) SCREEN#24 (byte*) SCREEN#21 
Alias (signed byte*) xr#0 = (signed byte*) xr#23 (signed byte*) xr#22 (signed byte*) xr#21 
Alias (signed byte*) yr#0 = (signed byte*) yr#23 (signed byte*) yr#22 (signed byte*) yr#21 
Alias (signed byte*) zr#0 = (signed byte*) zr#23 (signed byte*) zr#22 (signed byte*) zr#21 
Alias (signed byte*) pp#0 = (signed byte*) pp#22 (signed byte*) pp#21 (signed byte*) pp#20 
Alias (signed byte*) xp#0 = (signed byte*) xp#22 (signed byte*) xp#21 (signed byte*) xp#20 
Alias (signed byte*) yp#0 = (signed byte*) yp#22 (signed byte*) yp#21 (signed byte*) yp#20 
Alias (signed byte) sx#10 = (signed byte) sx#28 (signed byte) sx#16 (signed byte) sx#4 
Alias (signed byte) sy#10 = (signed byte) sy#31 (signed byte) sy#16 (signed byte) sy#4 
Alias (signed byte) sz#11 = (signed byte) sz#14 
Alias (signed byte*) COSH#10 = (signed byte*) COSH#8 
Alias (signed byte*) SINH#10 = (signed byte*) SINH#8 
Alias (signed byte*) COSQ#10 = (signed byte*) COSQ#8 
Alias (signed byte*) SINQ#10 = (signed byte*) SINQ#8 
Alias (signed byte*) xr#12 = (signed byte*) xr#14 
Alias (signed byte*) yr#12 = (signed byte*) yr#14 
Alias (signed byte*) zr#12 = (signed byte*) zr#14 
Alias (signed byte*) pp#11 = (signed byte*) pp#13 
Alias (signed byte*) xp#11 = (signed byte*) xp#13 
Alias (signed byte*) yp#11 = (signed byte*) yp#13 
Alias (byte*) print_screen#58 = (byte*) print_screen#60 
Alias (byte*) SCREEN#68 = (byte*) SCREEN#70 
Alias (signed byte) sx#25 = (signed byte) sx#29 
Alias (signed byte) sy#27 = (signed byte) sy#32 
Alias (signed byte) sz#12 = (signed byte) sz#8 
Alias (signed byte*) COSH#6 = (signed byte*) COSH#9 
Alias (signed byte*) SINH#6 = (signed byte*) SINH#9 
Alias (signed byte*) COSQ#6 = (signed byte*) COSQ#9 
Alias (signed byte*) SINQ#6 = (signed byte*) SINQ#9 
Alias (signed byte*) xr#10 = (signed byte*) xr#13 
Alias (signed byte*) yr#10 = (signed byte*) yr#13 
Alias (signed byte*) zr#10 = (signed byte*) zr#13 
Alias (signed byte*) pp#12 = (signed byte*) pp#9 
Alias (signed byte*) xp#12 = (signed byte*) xp#9 
Alias (signed byte*) yp#12 = (signed byte*) yp#9 
Alias (byte*) print_screen#56 = (byte*) print_screen#59 
Alias (byte*) SCREEN#66 = (byte*) SCREEN#69 
Alias (signed byte) sx#21 = (signed byte) sx#26 
Alias (signed byte) sy#22 = (signed byte) sy#28 
Alias (signed byte) sz#6 = (signed byte) sz#9 
Alias (signed byte*) COSH#5 = (signed byte*) COSH#7 
Alias (signed byte*) SINH#5 = (signed byte*) SINH#7 
Alias (signed byte*) COSQ#5 = (signed byte*) COSQ#7 
Alias (signed byte*) SINQ#5 = (signed byte*) SINQ#7 
Alias (signed byte*) xr#11 = (signed byte*) xr#9 
Alias (signed byte*) yr#11 = (signed byte*) yr#9 
Alias (signed byte*) zr#11 = (signed byte*) zr#9 
Alias (signed byte*) pp#10 = (signed byte*) pp#8 
Alias (signed byte*) xp#10 = (signed byte*) xp#8 
Alias (signed byte*) yp#10 = (signed byte*) yp#8 
Alias (byte*) print_screen#55 = (byte*) print_screen#57 
Alias (byte*) SCREEN#65 = (byte*) SCREEN#67 
Alias (signed byte) sx#14 = (signed byte) sx#20 (signed byte) sx#8 (signed byte) sx#31 (signed byte) sx#30 
Alias (signed byte) sy#14 = (signed byte) sy#21 (signed byte) sy#8 (signed byte) sy#34 (signed byte) sy#33 
Alias (signed byte) sz#1 = (signed byte) sz#5 (signed byte) sz#3 (signed byte) sz#27 (signed byte) sz#26 
Alias (signed byte*) COSH#19 = (signed byte*) COSH#4 (signed byte*) COSH#3 (signed byte*) COSH#2 (signed byte*) COSH#20 
Alias (signed byte*) SINH#19 = (signed byte*) SINH#4 (signed byte*) SINH#3 (signed byte*) SINH#2 (signed byte*) SINH#20 
Alias (signed byte*) COSQ#19 = (signed byte*) COSQ#4 (signed byte*) COSQ#3 (signed byte*) COSQ#2 (signed byte*) COSQ#20 
Alias (signed byte*) SINQ#19 = (signed byte*) SINQ#4 (signed byte*) SINQ#3 (signed byte*) SINQ#2 (signed byte*) SINQ#20 
Alias (signed byte*) xr#4 = (signed byte*) xr#8 (signed byte*) xr#7 (signed byte*) xr#6 (signed byte*) xr#5 
Alias (signed byte*) yr#4 = (signed byte*) yr#8 (signed byte*) yr#7 (signed byte*) yr#6 (signed byte*) yr#5 
Alias (signed byte*) zr#4 = (signed byte*) zr#8 (signed byte*) zr#7 (signed byte*) zr#6 (signed byte*) zr#5 
Alias (signed byte*) pp#3 = (signed byte*) pp#7 (signed byte*) pp#6 (signed byte*) pp#5 (signed byte*) pp#4 
Alias (signed byte*) xp#3 = (signed byte*) xp#7 (signed byte*) xp#6 (signed byte*) xp#5 (signed byte*) xp#4 
Alias (signed byte*) yp#3 = (signed byte*) yp#7 (signed byte*) yp#6 (signed byte*) yp#5 (signed byte*) yp#4 
Alias (byte*) print_screen#46 = (byte*) print_screen#54 (byte*) print_screen#53 (byte*) print_screen#51 (byte*) print_screen#48 
Alias (byte*) SCREEN#60 = (byte*) SCREEN#64 (byte*) SCREEN#63 (byte*) SCREEN#62 (byte*) SCREEN#61 
Alias (signed byte*) xr#1 = (signed byte*) xr#3 (signed byte*) xr#18 (signed byte*) xr#16 
Alias (byte) anim::i#2 = (byte) anim::i#3 
Alias (signed byte*) yr#1 = (signed byte*) yr#3 (signed byte*) yr#18 (signed byte*) yr#16 
Alias (signed byte*) zr#1 = (signed byte*) zr#3 (signed byte*) zr#18 (signed byte*) zr#16 
Alias (signed byte*) pp#1 = (signed byte*) pp#2 (signed byte*) pp#17 (signed byte*) pp#15 
Alias (signed byte*) xp#1 = (signed byte*) xp#2 (signed byte*) xp#17 (signed byte*) xp#15 
Alias (signed byte*) yp#1 = (signed byte*) yp#2 (signed byte*) yp#17 (signed byte*) yp#15 
Alias (signed byte) sx#15 = (signed byte) sx#22 (signed byte) sx#27 (signed byte) sx#9 
Alias (signed byte) sy#15 = (signed byte) sy#23 (signed byte) sy#29 (signed byte) sy#9 
Alias (byte*) print_screen#30 = (byte*) print_screen#43 (byte*) print_screen#45 (byte*) print_screen#62 
Alias (signed byte) sz#17 = (signed byte) sz#22 (signed byte) sz#24 (signed byte) sz#20 
Alias (signed byte*) COSH#12 = (signed byte*) COSH#16 (signed byte*) COSH#18 (signed byte*) COSH#14 
Alias (signed byte*) SINH#12 = (signed byte*) SINH#16 (signed byte*) SINH#18 (signed byte*) SINH#14 
Alias (signed byte*) COSQ#12 = (signed byte*) COSQ#16 (signed byte*) COSQ#18 (signed byte*) COSQ#14 
Alias (signed byte*) SINQ#12 = (signed byte*) SINQ#16 (signed byte*) SINQ#18 (signed byte*) SINQ#14 
Alias (byte*) SCREEN#57 = (byte*) SCREEN#58 (byte*) SCREEN#59 (byte*) SCREEN#72 
Alias (byte) anim::i2#0 = (byte~) anim::$6 
Alias (byte*) SCREEN#1 = (byte*) SCREEN#15 (byte*) SCREEN#2 (byte*) SCREEN#3 (byte*) SCREEN#4 (byte*) SCREEN#5 (byte*) SCREEN#6 (byte*) SCREEN#7 (byte*) SCREEN#8 (byte*) SCREEN#9 (byte*) SCREEN#10 (byte*) SCREEN#11 (byte*) SCREEN#12 (byte*) SCREEN#13 
Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#40 (byte*) print_line_cursor#39 (byte*) print_line_cursor#38 (byte*) print_line_cursor#37 (byte*) print_line_cursor#36 (byte*) print_line_cursor#35 (byte*) print_line_cursor#34 (byte*) print_line_cursor#33 (byte*) print_line_cursor#32 (byte*) print_line_cursor#31 (byte*) print_line_cursor#30 (byte*) print_line_cursor#29 
Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#40 (byte*) print_char_cursor#39 (byte*) print_char_cursor#38 (byte*) print_char_cursor#37 (byte*) print_char_cursor#36 (byte*) print_char_cursor#35 (byte*) print_char_cursor#34 (byte*) print_char_cursor#33 (byte*) print_char_cursor#32 (byte*) print_char_cursor#31 (byte*) print_char_cursor#30 (byte*) print_char_cursor#29 
Alias (byte*) print_str_at::at#1 = (byte*~) debug_print_init::$3 
Alias (byte*) print_str_at::at#2 = (byte*~) debug_print_init::$7 
Alias (byte*) print_str_at::at#3 = (byte*~) debug_print_init::$11 
Alias (byte*) print_str_at::at#4 = (byte*~) debug_print_init::$14 
Alias (byte*) print_str_at::at#5 = (byte*~) debug_print_init::$17 
Alias (byte*) print_str_at::at#6 = (byte*~) debug_print_init::$20 
Alias (byte*) print_str_at::at#7 = (byte*~) debug_print_init::$23 
Alias (byte*) print_str_at::at#8 = (byte*~) debug_print_init::$26 
Alias (byte*) print_str_at::at#9 = (byte*~) debug_print_init::$29 
Alias (byte*) print_str_at::at#10 = (byte*~) debug_print_init::$32 
Alias (byte*) print_str_at::at#11 = (byte*~) debug_print_init::$35 
Alias (byte*) print_str_at::at#12 = (byte*~) debug_print_init::$38 
Alias (byte*) debug_print_init::at_line#0 = (byte*~) debug_print_init::$41 
Alias (byte*) debug_print_init::at_cols#0 = (byte*~) debug_print_init::$43 
Alias (byte*) print_sbyte_at::at#0 = (byte*~) debug_print_init::$46 
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_line_cursor#22 = (byte*) print_line_cursor#27 (byte*) print_line_cursor#28 (byte*) print_line_cursor#25 
Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#27 (byte*) print_char_cursor#28 (byte*) print_char_cursor#25 
Alias (byte*) print_sbyte_at::at#1 = (byte*~) debug_print_init::$50 
Alias (byte*) print_sbyte_at::at#2 = (byte*~) debug_print_init::$54 
Alias (byte) debug_print_init::col#0 = (byte/signed word/word/dword/signed dword~) debug_print_init::$56 
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*) print_line_cursor#12 = (byte*) print_line_cursor#17 (byte*) print_line_cursor#20 (byte*) print_line_cursor#6 
Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#17 (byte*) print_char_cursor#20 (byte*) print_char_cursor#6 
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#4 (byte*) print_screen#17 (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 (byte*) print_screen#40 (byte*) print_screen#27 (byte*) print_screen#14 (byte*) print_screen#41 (byte*) print_screen#28 (byte*) print_screen#15 
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#24 (signed byte) sy#30 (signed byte) sy#17 
Alias (signed byte) sz#10 = (signed byte) sz#15 (signed byte) sz#18 (signed byte) sz#13 (signed byte) sz#7 (signed byte) sz#4 (signed byte) sz#2 
Alias (byte*) SCREEN#14 = (byte*) SCREEN#55 (byte*) SCREEN#56 (byte*) SCREEN#54 (byte*) SCREEN#53 (byte*) SCREEN#52 (byte*) SCREEN#51 (byte*) SCREEN#50 (byte*) SCREEN#49 (byte*) SCREEN#48 (byte*) SCREEN#47 (byte*) SCREEN#46 (byte*) SCREEN#45 (byte*) SCREEN#44 (byte*) SCREEN#43 (byte*) SCREEN#42 (byte*) SCREEN#41 (byte*) SCREEN#40 (byte*) SCREEN#39 (byte*) SCREEN#38 (byte*) SCREEN#37 (byte*) SCREEN#36 (byte*) SCREEN#35 (byte*) SCREEN#34 (byte*) SCREEN#33 (byte*) SCREEN#32 (byte*) SCREEN#31 (byte*) SCREEN#30 (byte*) SCREEN#29 (byte*) SCREEN#28 (byte*) SCREEN#27 (byte*) SCREEN#25 (byte*) SCREEN#23 (byte*) SCREEN#22 (byte*) SCREEN#20 (byte*) SCREEN#18 (byte*) SCREEN#16 
Alias (byte*) print_sbyte_at::at#3 = (byte*) debug_print::print_sbyte_pos1_$2#0 
Alias (byte) debug_print::print_sbyte_pos2_row#0 = (byte) debug_print::print_sbyte_pos2_row#1 
Alias (byte) debug_print::print_sbyte_pos2_col#0 = (byte) debug_print::print_sbyte_pos2_col#1 
Alias (signed byte) debug_print::print_sbyte_pos2_sb#0 = (signed byte) debug_print::print_sbyte_pos2_sb#1 
Alias (byte*) print_sbyte_at::at#4 = (byte*) debug_print::print_sbyte_pos2_$2#0 
Alias (byte) debug_print::print_sbyte_pos3_row#0 = (byte) debug_print::print_sbyte_pos3_row#1 
Alias (byte) debug_print::print_sbyte_pos3_col#0 = (byte) debug_print::print_sbyte_pos3_col#1 
Alias (signed byte) debug_print::print_sbyte_pos3_sb#0 = (signed byte) debug_print::print_sbyte_pos3_sb#1 
Alias (byte*) print_sbyte_at::at#5 = (byte*) debug_print::print_sbyte_pos3_$2#0 
Alias (byte) debug_print::print_sbyte_pos4_row#0 = (byte) debug_print::print_sbyte_pos4_row#1 
Alias (byte) debug_print::print_sbyte_pos4_col#0 = (byte) debug_print::print_sbyte_pos4_col#1 
Alias (signed byte) debug_print::print_sbyte_pos4_sb#0 = (signed byte) debug_print::print_sbyte_pos4_sb#1 
Alias (byte*) print_sbyte_at::at#6 = (byte*) debug_print::print_sbyte_pos4_$2#0 
Alias (byte) debug_print::print_sbyte_pos5_row#0 = (byte) debug_print::print_sbyte_pos5_row#1 
Alias (byte) debug_print::print_sbyte_pos5_col#0 = (byte) debug_print::print_sbyte_pos5_col#1 
Alias (signed byte) debug_print::print_sbyte_pos5_sb#0 = (signed byte) debug_print::print_sbyte_pos5_sb#1 
Alias (byte*) print_sbyte_at::at#7 = (byte*) debug_print::print_sbyte_pos5_$2#0 
Alias (byte) debug_print::print_sbyte_pos6_row#0 = (byte) debug_print::print_sbyte_pos6_row#1 
Alias (byte) debug_print::print_sbyte_pos6_col#0 = (byte) debug_print::print_sbyte_pos6_col#1 
Alias (signed byte) debug_print::print_sbyte_pos6_sb#0 = (signed byte) debug_print::print_sbyte_pos6_sb#1 
Alias (byte*) print_sbyte_at::at#8 = (byte*) debug_print::print_sbyte_pos6_$2#0 
Alias (byte) debug_print::print_sbyte_pos7_row#0 = (byte) debug_print::print_sbyte_pos7_row#1 
Alias (byte) debug_print::print_sbyte_pos7_col#0 = (byte) debug_print::print_sbyte_pos7_col#1 
Alias (signed byte) debug_print::print_sbyte_pos7_sb#0 = (signed byte) debug_print::print_sbyte_pos7_sb#1 
Alias (byte*) print_sbyte_at::at#9 = (byte*) debug_print::print_sbyte_pos7_$2#0 
Alias (byte) debug_print::print_sbyte_pos8_row#0 = (byte) debug_print::print_sbyte_pos8_row#1 
Alias (byte) debug_print::print_sbyte_pos8_col#0 = (byte) debug_print::print_sbyte_pos8_col#1 
Alias (signed byte) debug_print::print_sbyte_pos8_sb#0 = (signed byte) debug_print::print_sbyte_pos8_sb#1 
Alias (byte*) print_sbyte_at::at#10 = (byte*) debug_print::print_sbyte_pos8_$2#0 
Alias (byte) debug_print::print_sbyte_pos9_row#0 = (byte) debug_print::print_sbyte_pos9_row#1 
Alias (byte) debug_print::print_sbyte_pos9_col#0 = (byte) debug_print::print_sbyte_pos9_col#1 
Alias (signed byte) debug_print::print_sbyte_pos9_sb#0 = (signed byte) debug_print::print_sbyte_pos9_sb#1 
Alias (byte*) print_sbyte_at::at#11 = (byte*) debug_print::print_sbyte_pos9_$2#0 
Alias (byte) debug_print::print_sbyte_pos10_row#0 = (byte) debug_print::print_sbyte_pos10_row#1 
Alias (byte) debug_print::print_sbyte_pos10_col#0 = (byte) debug_print::print_sbyte_pos10_col#1 
Alias (signed byte) debug_print::print_sbyte_pos10_sb#0 = (signed byte) debug_print::print_sbyte_pos10_sb#1 
Alias (byte*) print_sbyte_at::at#12 = (byte*) debug_print::print_sbyte_pos10_$2#0 
Alias (byte) debug_print::print_sbyte_pos11_row#0 = (byte) debug_print::print_sbyte_pos11_row#1 
Alias (byte) debug_print::print_sbyte_pos11_col#0 = (byte) debug_print::print_sbyte_pos11_col#1 
Alias (signed byte) debug_print::print_sbyte_pos11_sb#0 = (signed byte) debug_print::print_sbyte_pos11_sb#1 
Alias (byte*) print_sbyte_at::at#13 = (byte*) debug_print::print_sbyte_pos11_$2#0 
Alias (byte) debug_print::print_sbyte_pos12_row#0 = (byte) debug_print::print_sbyte_pos12_row#1 
Alias (byte) debug_print::print_sbyte_pos12_col#0 = (byte) debug_print::print_sbyte_pos12_col#1 
Alias (signed byte) debug_print::print_sbyte_pos12_sb#0 = (signed byte) debug_print::print_sbyte_pos12_sb#1 
Alias (byte*) print_sbyte_at::at#14 = (byte*) debug_print::print_sbyte_pos12_$2#0 
Alias (byte*) debug_print::at_line#0 = (byte*~) debug_print::$13 
Alias (byte*) print_sbyte_at::at#15 = (byte*~) debug_print::$16 
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::$20 
Alias (byte*) print_sbyte_at::at#17 = (byte*~) debug_print::$24 
Alias (byte*) print_sbyte_at::at#18 = (byte*~) debug_print::$28 
Alias (byte*) print_sbyte_at::at#19 = (byte*~) debug_print::$32 
Alias (byte*) print_sbyte_at::at#20 = (byte*~) debug_print::$36 
Alias (byte*) sprites_init::sprites_ptr#0 = (byte*~) sprites_init::$0 
Alias (signed byte) sx#17 = (signed byte) sx#23 (signed byte) sx#2 
Alias (signed byte) sy#18 = (signed byte) sy#25 (signed byte) sy#2 
Alias (signed byte) sz#0 = (signed byte) sz#28 (signed byte) sz#25 
Alias (signed byte) calculate_matrix::t1#0 = (signed byte~) calculate_matrix::$0 
Alias (signed byte) calculate_matrix::t2#0 = (signed byte~) calculate_matrix::$1 
Alias (signed byte) calculate_matrix::t3#0 = (signed byte~) calculate_matrix::$2 
Alias (signed byte) calculate_matrix::t4#0 = (signed byte~) calculate_matrix::$3 
Alias (signed byte) calculate_matrix::t5#0 = (signed byte~) calculate_matrix::$4 
Alias (signed byte) calculate_matrix::t6#0 = (signed byte~) calculate_matrix::$5 
Alias (signed byte) calculate_matrix::t7#0 = (signed byte~) calculate_matrix::$6 
Alias (signed byte) calculate_matrix::t8#0 = (signed byte~) calculate_matrix::$7 
Alias (signed byte) calculate_matrix::t9#0 = (signed byte~) calculate_matrix::$8 
Alias (signed byte) calculate_matrix::t10#0 = (signed byte~) calculate_matrix::$9 
Alias (signed byte*) COSH#0 = (signed byte*~) $6 
Alias (signed byte*) COSQ#0 = (signed byte*~) $7 
Alias (byte*) COSH_LO#0 = (byte*~) $8 
Alias (byte*) COSH_HI#0 = (byte*~) $9 
Alias (byte*) COSQ_LO#0 = (byte*~) $10 
Alias (byte*) COSQ_HI#0 = (byte*~) $11 
Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#7 
Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#7 
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
Self Phi Eliminated (byte*) print_line_cursor#1
Self Phi Eliminated (signed byte) sx#25
Self Phi Eliminated (signed byte) sy#27
Self Phi Eliminated (signed byte) sz#12
Self Phi Eliminated (signed byte*) COSH#6
Self Phi Eliminated (signed byte*) SINH#6
Self Phi Eliminated (signed byte*) COSQ#6
Self Phi Eliminated (signed byte*) SINQ#6
Self Phi Eliminated (signed byte*) xr#10
Self Phi Eliminated (signed byte*) yr#10
Self Phi Eliminated (signed byte*) zr#10
Self Phi Eliminated (signed byte*) pp#12
Self Phi Eliminated (signed byte*) xp#12
Self Phi Eliminated (signed byte*) yp#12
Self Phi Eliminated (byte*) print_screen#56
Self Phi Eliminated (byte*) SCREEN#66
Self Phi Eliminated (signed byte) sx#21
Self Phi Eliminated (signed byte) sy#22
Self Phi Eliminated (signed byte) sz#6
Self Phi Eliminated (signed byte*) COSH#5
Self Phi Eliminated (signed byte*) SINH#5
Self Phi Eliminated (signed byte*) COSQ#5
Self Phi Eliminated (signed byte*) SINQ#5
Self Phi Eliminated (signed byte*) xr#11
Self Phi Eliminated (signed byte*) yr#11
Self Phi Eliminated (signed byte*) zr#11
Self Phi Eliminated (signed byte*) pp#10
Self Phi Eliminated (signed byte*) xp#10
Self Phi Eliminated (signed byte*) yp#10
Self Phi Eliminated (byte*) print_screen#55
Self Phi Eliminated (byte*) SCREEN#65
Self Phi Eliminated (signed byte) sx#14
Self Phi Eliminated (signed byte) sy#14
Self Phi Eliminated (signed byte) sz#1
Self Phi Eliminated (signed byte*) COSH#19
Self Phi Eliminated (signed byte*) SINH#19
Self Phi Eliminated (signed byte*) COSQ#19
Self Phi Eliminated (signed byte*) SINQ#19
Self Phi Eliminated (signed byte*) xr#4
Self Phi Eliminated (signed byte*) yr#4
Self Phi Eliminated (signed byte*) zr#4
Self Phi Eliminated (signed byte*) pp#3
Self Phi Eliminated (signed byte*) xp#3
Self Phi Eliminated (signed byte*) yp#3
Self Phi Eliminated (byte*) print_screen#46
Self Phi Eliminated (byte*) SCREEN#60
Self Phi Eliminated (signed byte*) xr#1
Self Phi Eliminated (signed byte*) yr#1
Self Phi Eliminated (signed byte*) zr#1
Self Phi Eliminated (signed byte*) pp#1
Self Phi Eliminated (signed byte*) xp#1
Self Phi Eliminated (signed byte*) yp#1
Self Phi Eliminated (signed byte) sx#15
Self Phi Eliminated (signed byte) sy#15
Self Phi Eliminated (byte*) print_screen#30
Self Phi Eliminated (signed byte) sz#17
Self Phi Eliminated (signed byte*) COSH#12
Self Phi Eliminated (signed byte*) SINH#12
Self Phi Eliminated (signed byte*) COSQ#12
Self Phi Eliminated (signed byte*) SINQ#12
Self Phi Eliminated (byte*) SCREEN#57
Self Phi Eliminated (byte) debug_print_init::i#5
Self Phi Eliminated (byte*) debug_print_init::at_cols#1
Self Phi Eliminated (byte) debug_print_init::c#5
Self Phi Eliminated (byte*) debug_print_init::at_line#4
Self Phi Eliminated (byte*) print_line_cursor#12
Self Phi Eliminated (byte*) print_char_cursor#12
Self Phi Eliminated (byte*) debug_print::at_line#1
Self Phi Eliminated (byte*) SPRITE#1
Self Phi Eliminated (byte*) sprites_init::sprites_ptr#1
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) print_byte_at::b#1 (byte) print_byte_at::b#0
Redundant Phi (byte*) print_byte_at::at#1 (byte*) print_byte_at::at#0
Redundant Phi (byte*) print_screen#1 (byte*) print_screen#16
Redundant Phi (byte*) print_line_cursor#1 (byte*) print_screen#1
Redundant Phi (byte*) mulf_sqr1#1 (byte*) mulf_sqr1#0
Redundant Phi (word*) psp1#1 (word*) psp1#0
Redundant Phi (byte*) mulf_sqr2#1 (byte*) mulf_sqr2#0
Redundant Phi (word*) psp2#1 (word*) psp2#0
Redundant Phi (byte*) print_line_cursor#14 (byte*) print_line_cursor#0
Redundant Phi (byte*) print_char_cursor#14 (byte*) print_line_cursor#0
Redundant Phi (byte*) SPRITE#3 (byte*) SPRITE#0
Redundant Phi (signed byte) sx#13 (signed byte) sx#17
Redundant Phi (signed byte) sy#13 (signed byte) sy#18
Redundant Phi (byte*) print_screen#29 (byte*) print_line_cursor#0
Redundant Phi (byte*) SCREEN#17 (byte*) SCREEN#0
Redundant Phi (signed byte) sz#19 (signed byte) sz#0
Redundant Phi (signed byte*) COSH#13 (signed byte*) COSH#0
Redundant Phi (signed byte*) SINH#13 (signed byte*) SINH#0
Redundant Phi (signed byte*) COSQ#13 (signed byte*) COSQ#0
Redundant Phi (signed byte*) SINQ#13 (signed byte*) SINQ#0
Redundant Phi (signed byte*) xr#17 (signed byte*) xr#0
Redundant Phi (signed byte*) yr#17 (signed byte*) yr#0
Redundant Phi (signed byte*) zr#17 (signed byte*) zr#0
Redundant Phi (signed byte*) pp#16 (signed byte*) pp#0
Redundant Phi (signed byte*) xp#16 (signed byte*) xp#0
Redundant Phi (signed byte*) yp#16 (signed byte*) yp#0
Redundant Phi (byte*) print_line_cursor#10 (byte*) print_line_cursor#12
Redundant Phi (byte*) print_char_cursor#10 (byte*) print_char_cursor#12
Redundant Phi (signed byte) sx#0 (signed byte) sx#10
Redundant Phi (signed byte) sy#0 (signed byte) sy#10
Redundant Phi (signed byte) sx#19 (signed byte) sx#13
Redundant Phi (signed byte) sy#20 (signed byte) sy#13
Redundant Phi (signed byte) sz#16 (signed byte) sz#19
Redundant Phi (signed byte*) COSH#11 (signed byte*) COSH#13
Redundant Phi (signed byte*) SINH#11 (signed byte*) SINH#13
Redundant Phi (signed byte*) COSQ#11 (signed byte*) COSQ#13
Redundant Phi (signed byte*) SINQ#11 (signed byte*) SINQ#13
Redundant Phi (signed byte*) xr#15 (signed byte*) xr#17
Redundant Phi (signed byte*) yr#15 (signed byte*) yr#17
Redundant Phi (signed byte*) zr#15 (signed byte*) zr#17
Redundant Phi (signed byte*) pp#14 (signed byte*) pp#16
Redundant Phi (signed byte*) xp#14 (signed byte*) xp#16
Redundant Phi (signed byte*) yp#14 (signed byte*) yp#16
Redundant Phi (byte*) print_screen#61 (byte*) print_screen#29
Redundant Phi (byte*) SCREEN#71 (byte*) SCREEN#17
Redundant Phi (signed byte) sx#25 (signed byte) sx#10
Redundant Phi (signed byte) sy#27 (signed byte) sy#10
Redundant Phi (signed byte) sz#12 (signed byte) sz#11
Redundant Phi (signed byte*) COSH#6 (signed byte*) COSH#10
Redundant Phi (signed byte*) SINH#6 (signed byte*) SINH#10
Redundant Phi (signed byte*) COSQ#6 (signed byte*) COSQ#10
Redundant Phi (signed byte*) SINQ#6 (signed byte*) SINQ#10
Redundant Phi (signed byte*) xr#10 (signed byte*) xr#12
Redundant Phi (signed byte*) yr#10 (signed byte*) yr#12
Redundant Phi (signed byte*) zr#10 (signed byte*) zr#12
Redundant Phi (signed byte*) pp#12 (signed byte*) pp#11
Redundant Phi (signed byte*) xp#12 (signed byte*) xp#11
Redundant Phi (signed byte*) yp#12 (signed byte*) yp#11
Redundant Phi (byte*) print_screen#56 (byte*) print_screen#58
Redundant Phi (byte*) SCREEN#66 (byte*) SCREEN#68
Redundant Phi (signed byte) sx#21 (signed byte) sx#25
Redundant Phi (signed byte) sy#22 (signed byte) sy#27
Redundant Phi (signed byte) sz#6 (signed byte) sz#12
Redundant Phi (signed byte*) COSH#5 (signed byte*) COSH#6
Redundant Phi (signed byte*) SINH#5 (signed byte*) SINH#6
Redundant Phi (signed byte*) COSQ#5 (signed byte*) COSQ#6
Redundant Phi (signed byte*) SINQ#5 (signed byte*) SINQ#6
Redundant Phi (signed byte*) xr#11 (signed byte*) xr#10
Redundant Phi (signed byte*) yr#11 (signed byte*) yr#10
Redundant Phi (signed byte*) zr#11 (signed byte*) zr#10
Redundant Phi (signed byte*) pp#10 (signed byte*) pp#12
Redundant Phi (signed byte*) xp#10 (signed byte*) xp#12
Redundant Phi (signed byte*) yp#10 (signed byte*) yp#12
Redundant Phi (byte*) print_screen#55 (byte*) print_screen#56
Redundant Phi (byte*) SCREEN#65 (byte*) SCREEN#66
Redundant Phi (signed byte) sx#14 (signed byte) sx#21
Redundant Phi (signed byte) sy#14 (signed byte) sy#22
Redundant Phi (signed byte) sz#1 (signed byte) sz#6
Redundant Phi (signed byte*) COSH#19 (signed byte*) COSH#5
Redundant Phi (signed byte*) SINH#19 (signed byte*) SINH#5
Redundant Phi (signed byte*) COSQ#19 (signed byte*) COSQ#5
Redundant Phi (signed byte*) SINQ#19 (signed byte*) SINQ#5
Redundant Phi (signed byte*) xr#4 (signed byte*) xr#11
Redundant Phi (signed byte*) yr#4 (signed byte*) yr#11
Redundant Phi (signed byte*) zr#4 (signed byte*) zr#11
Redundant Phi (signed byte*) pp#3 (signed byte*) pp#10
Redundant Phi (signed byte*) xp#3 (signed byte*) xp#10
Redundant Phi (signed byte*) yp#3 (signed byte*) yp#10
Redundant Phi (byte*) print_screen#46 (byte*) print_screen#55
Redundant Phi (byte*) SCREEN#60 (byte*) SCREEN#65
Redundant Phi (signed byte*) xr#1 (signed byte*) xr#4
Redundant Phi (signed byte*) yr#1 (signed byte*) yr#4
Redundant Phi (signed byte*) zr#1 (signed byte*) zr#4
Redundant Phi (signed byte*) pp#1 (signed byte*) pp#3
Redundant Phi (signed byte*) xp#1 (signed byte*) xp#3
Redundant Phi (signed byte*) yp#1 (signed byte*) yp#3
Redundant Phi (signed byte) sx#15 (signed byte) sx#14
Redundant Phi (signed byte) sy#15 (signed byte) sy#14
Redundant Phi (byte*) print_screen#30 (byte*) print_screen#46
Redundant Phi (signed byte) sz#17 (signed byte) sz#1
Redundant Phi (signed byte*) COSH#12 (signed byte*) COSH#19
Redundant Phi (signed byte*) SINH#12 (signed byte*) SINH#19
Redundant Phi (signed byte*) COSQ#12 (signed byte*) COSQ#19
Redundant Phi (signed byte*) SINQ#12 (signed byte*) SINQ#19
Redundant Phi (byte*) SCREEN#57 (byte*) SCREEN#60
Redundant Phi (byte*) print_screen#16 (byte*) print_screen#29
Redundant Phi (byte*) print_line_cursor#16 (byte*) print_line_cursor#14
Redundant Phi (byte*) print_char_cursor#16 (byte*) print_char_cursor#14
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#17
Redundant Phi (byte*) print_line_cursor#11 (byte*) print_line_cursor#1
Redundant Phi (byte*) print_char_cursor#11 (byte*) print_line_cursor#1
Redundant Phi (byte) debug_print_init::i#5 (byte) debug_print_init::i#2
Redundant Phi (byte*) debug_print_init::at_cols#1 (byte*) debug_print_init::at_cols#2
Redundant Phi (byte) debug_print_init::c#5 (byte) debug_print_init::c#2
Redundant Phi (byte*) debug_print_init::at_line#4 (byte*) debug_print_init::at_line#1
Redundant Phi (byte*) print_line_cursor#12 (byte*) print_line_cursor#22
Redundant Phi (byte*) print_char_cursor#12 (byte*) print_char_cursor#22
Redundant Phi (signed byte) sx#11 (signed byte) sx#15
Redundant Phi (byte*) print_screen#10 (byte*) print_screen#30
Redundant Phi (signed byte) sy#11 (signed byte) sy#15
Redundant Phi (signed byte) sz#10 (signed byte) sz#17
Redundant Phi (byte*) SCREEN#14 (byte*) SCREEN#57
Redundant Phi (byte*) debug_print::at_line#1 (byte*) debug_print::at_line#0
Redundant Phi (byte*) SPRITE#2 (byte*) SPRITE#3
Redundant Phi (byte*) SPRITE#1 (byte*) SPRITE#2
Redundant Phi (byte*) sprites_init::sprites_ptr#1 (byte*) sprites_init::sprites_ptr#0
Redundant Phi (signed byte) calculate_matrix::sy#1 (signed byte) calculate_matrix::sy#0
Redundant Phi (signed byte) calculate_matrix::sz#1 (signed byte) calculate_matrix::sz#0
Redundant Phi (signed byte) calculate_matrix::sx#1 (signed byte) calculate_matrix::sx#0
Redundant Phi (signed byte*) COSH#1 (signed byte*) COSH#19
Redundant Phi (signed byte*) SINH#1 (signed byte*) SINH#19
Redundant Phi (signed byte*) COSQ#1 (signed byte*) COSQ#19
Redundant Phi (signed byte*) SINQ#1 (signed byte*) SINQ#19
Redundant Phi (signed byte) rotate_matrix::x#1 (signed byte) rotate_matrix::x#0
Redundant Phi (signed byte*) xr#2 (signed byte*) xr#1
Redundant Phi (signed byte) rotate_matrix::y#1 (signed byte) rotate_matrix::y#0
Redundant Phi (signed byte*) yr#2 (signed byte*) yr#1
Redundant Phi (signed byte) rotate_matrix::z#1 (signed byte) rotate_matrix::z#0
Redundant Phi (signed byte*) zr#2 (signed byte*) zr#1
Redundant Phi (byte*) print_line_cursor#13 (byte*) print_line_cursor#10
Redundant Phi (byte*) print_char_cursor#13 (byte*) print_char_cursor#10
Redundant Phi (signed byte) sx#12 (signed byte) sx#0
Redundant Phi (signed byte) sy#12 (signed byte) sy#0
Successful SSA optimization Pass2RedundantPhiElimination
Simple Condition (bool~) print_str_at::$0 [85] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2
Simple Condition (bool~) print_sbyte_at::$0 [93] if((signed byte) print_sbyte_at::b#22<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1
Simple Condition (bool~) print_cls::$1 [137] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1
Simple Condition (bool~) anim::$0 [202] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@5
Simple Condition (bool~) anim::$1 [206] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto anim::@8
Simple Condition (bool~) anim::$2 [210] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 253) goto anim::@11
Simple Condition (bool~) anim::$11 [245] if((byte) anim::i#1!=rangelast(0,7)) goto anim::@13
Simple Condition (bool~) debug_print_init::$93 [419] if((byte) debug_print_init::j#1!=rangelast(0,3)) goto debug_print_init::@2
Simple Condition (bool~) debug_print_init::$94 [424] if((byte) debug_print_init::i#1!=rangelast(0,7)) goto debug_print_init::@1
Simple Condition (bool~) debug_print::$38 [625] if((byte) debug_print::i#1!=rangelast(0,7)) goto debug_print::@1
Simple Condition (bool~) sprites_init::$3 [640] if((byte) sprites_init::i#1!=rangelast(0,7)) goto sprites_init::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
Constant (const byte*) PROCPORT#0 = ((byte*))1
Constant (const byte) PROCPORT_RAM_ALL#0 = 48
Constant (const byte) PROCPORT_RAM_IO#0 = 53
Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49
Constant (const byte) PROCPORT_KERNEL_IO#0 = 54
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55
Constant (const byte*) CHARGEN#0 = ((byte*))53248
Constant (const word) SPRITE_PTRS#0 = 1016
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264
Constant (const byte*) RASTER#0 = ((byte*))53266
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275
Constant (const byte*) SPRITES_MC#0 = ((byte*))53276
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277
Constant (const byte*) BORDERCOL#0 = ((byte*))53280
Constant (const byte*) BGCOL#0 = ((byte*))53281
Constant (const byte*) BGCOL1#0 = ((byte*))53281
Constant (const byte*) BGCOL2#0 = ((byte*))53282
Constant (const byte*) BGCOL3#0 = ((byte*))53283
Constant (const byte*) BGCOL4#0 = ((byte*))53284
Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285
Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286
Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287
Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265
Constant (const byte*) D011#0 = ((byte*))53265
Constant (const byte) VIC_RST8#0 = 128
Constant (const byte) VIC_ECM#0 = 64
Constant (const byte) VIC_BMM#0 = 32
Constant (const byte) VIC_DEN#0 = 16
Constant (const byte) VIC_RSEL#0 = 8
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270
Constant (const byte*) D016#0 = ((byte*))53270
Constant (const byte) VIC_MCM#0 = 16
Constant (const byte) VIC_CSEL#0 = 8
Constant (const byte*) D018#0 = ((byte*))53272
Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268
Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274
Constant (const byte) IRQ_RASTER#0 = 1
Constant (const byte) IRQ_COLLISION_BG#0 = 2
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
Constant (const byte) IRQ_LIGHTPEN#0 = 8
Constant (const byte*) COLS#0 = ((byte*))55296
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534
Constant (const byte) BLACK#0 = 0
Constant (const byte) WHITE#0 = 1
Constant (const byte) RED#0 = 2
Constant (const byte) CYAN#0 = 3
Constant (const byte) PURPLE#0 = 4
Constant (const byte) GREEN#0 = 5
Constant (const byte) BLUE#0 = 6
Constant (const byte) YELLOW#0 = 7
Constant (const byte) ORANGE#0 = 8
Constant (const byte) BROWN#0 = 9
Constant (const byte) PINK#0 = 10
Constant (const byte) DARK_GREY#0 = 11
Constant (const byte) GREY#0 = 12
Constant (const byte) LIGHT_GREEN#0 = 13
Constant (const byte) LIGHT_BLUE#0 = 14
Constant (const byte) LIGHT_GREY#0 = 15
Constant (const byte*) print_line_cursor#0 = ((byte*))1024
Constant (const byte) print_char_at::ch#0 = '-'
Constant (const byte) print_char_at::ch#1 = ' '
Constant (const byte[]) print_hextab#0 = $12
Constant (const signed byte*) xr#0 = ((signed byte*))240
Constant (const signed byte*) yr#0 = ((signed byte*))241
Constant (const signed byte*) zr#0 = ((signed byte*))242
Constant (const signed byte*) pp#0 = ((signed byte*))243
Constant (const signed byte*) xp#0 = ((signed byte*))244
Constant (const signed byte*) yp#0 = ((signed byte*))245
Constant (const word*) psp1#0 = ((word*))246
Constant (const word*) psp2#0 = ((word*))248
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const signed byte/signed word/signed dword) $0 = -52
Constant (const signed byte/signed word/signed dword) $1 = -52
Constant (const signed byte/signed word/signed dword) $2 = -52
Constant (const signed byte/signed word/signed dword) $3 = -52
Constant (const signed byte/signed word/signed dword) $4 = -52
Constant (const signed byte/signed word/signed dword) $5 = -52
Constant (const signed byte[8]) zs#0 = { 52, 52, 52, 52, 52, 52, 52, 52 }
Constant (const signed byte[8]) xrs#0 = { fill( 8, 0) }
Constant (const signed byte[8]) yrs#0 = { fill( 8, 0) }
Constant (const signed byte[8]) zrs#0 = { fill( 8, 0) }
Constant (const signed byte[8]) pps#0 = { fill( 8, 0) }
Constant (const signed byte[8]) xps#0 = { fill( 8, 0) }
Constant (const signed byte[8]) yps#0 = { fill( 8, 0) }
Constant (const signed byte) sx#17 = 0
Constant (const signed byte) sy#18 = 0
Constant (const signed byte) sz#0 = 0
Constant (const byte) anim::i#0 = 0
Constant (const byte/signed byte/word/signed word/dword/signed dword) debug_print_init::$1 = 40*0
Constant (const byte*) print_str_at::str#1 = debug_print_init::str
Constant (const byte/signed byte/word/signed word/dword/signed dword) debug_print_init::$5 = 40*1
Constant (const byte*) print_str_at::str#2 = debug_print_init::str1
Constant (const byte/signed byte/word/signed word/dword/signed dword) debug_print_init::$9 = 40*2
Constant (const byte*) print_str_at::str#3 = debug_print_init::str2
Constant (const word/signed word/dword/signed dword) debug_print_init::$13 = 40*16
Constant (const byte*) print_str_at::str#4 = debug_print_init::str3
Constant (const word/signed word/dword/signed dword) debug_print_init::$16 = 40*17
Constant (const byte*) print_str_at::str#5 = debug_print_init::str4
Constant (const word/signed word/dword/signed dword) debug_print_init::$19 = 40*18
Constant (const byte*) print_str_at::str#6 = debug_print_init::str5
Constant (const word/signed word/dword/signed dword) debug_print_init::$22 = 40*19
Constant (const byte*) print_str_at::str#7 = debug_print_init::str6
Constant (const word/signed word/dword/signed dword) debug_print_init::$25 = 40*20
Constant (const byte*) print_str_at::str#8 = debug_print_init::str7
Constant (const word/signed word/dword/signed dword) debug_print_init::$28 = 40*21
Constant (const byte*) print_str_at::str#9 = debug_print_init::str8
Constant (const word/signed word/dword/signed dword) debug_print_init::$31 = 40*22
Constant (const byte*) print_str_at::str#10 = debug_print_init::str9
Constant (const word/signed word/dword/signed dword) debug_print_init::$34 = 40*23
Constant (const byte*) print_str_at::str#11 = debug_print_init::str10
Constant (const word/signed word/dword/signed dword) debug_print_init::$37 = 40*24
Constant (const byte*) print_str_at::str#12 = debug_print_init::str11
Constant (const word/signed word/dword/signed dword) debug_print_init::$40 = 16*40
Constant (const byte) debug_print_init::c#0 = 4
Constant (const byte*) debug_print_init::COLS#0 = ((byte*))55296
Constant (const word/signed word/dword/signed dword) debug_print_init::$42 = 16*40
Constant (const byte) debug_print_init::i#0 = 0
Constant (const byte/signed byte/word/signed word/dword/signed dword) debug_print_init::$44 = 40*0
Constant (const byte/signed byte/word/signed word/dword/signed dword) debug_print_init::$48 = 40*1
Constant (const byte/signed byte/word/signed word/dword/signed dword) debug_print_init::$52 = 40*2
Constant (const byte) debug_print_init::j#0 = 0
Constant (const byte/signed byte/word/signed word/dword/signed dword) debug_print_init::$57 = 40*0
Constant (const byte/signed byte/word/signed word/dword/signed dword) debug_print_init::$61 = 40*1
Constant (const byte/signed byte/word/signed word/dword/signed dword) debug_print_init::$65 = 40*2
Constant (const byte/signed byte/word/signed word/dword/signed dword) debug_print_init::$69 = 40*3
Constant (const byte/word/signed word/dword/signed dword) debug_print_init::$73 = 40*4
Constant (const byte/word/signed word/dword/signed dword) debug_print_init::$77 = 40*5
Constant (const byte/word/signed word/dword/signed dword) debug_print_init::$81 = 40*6
Constant (const word/signed word/dword/signed dword) debug_print_init::$85 = 40*7
Constant (const word/signed word/dword/signed dword) debug_print_init::$89 = 40*8
Constant (const byte) debug_print::print_sbyte_pos1_row#0 = 0
Constant (const byte) debug_print::print_sbyte_pos1_col#0 = 37
Constant (const byte) debug_print::print_sbyte_pos2_row#0 = 1
Constant (const byte) debug_print::print_sbyte_pos2_col#0 = 37
Constant (const byte) debug_print::print_sbyte_pos3_row#0 = 2
Constant (const byte) debug_print::print_sbyte_pos3_col#0 = 37
Constant (const byte) debug_print::print_sbyte_pos4_row#0 = 4
Constant (const byte) debug_print::print_sbyte_pos4_col#0 = 29
Constant (const byte) debug_print::print_sbyte_pos5_row#0 = 4
Constant (const byte) debug_print::print_sbyte_pos5_col#0 = 33
Constant (const byte) debug_print::print_sbyte_pos6_row#0 = 4
Constant (const byte) debug_print::print_sbyte_pos6_col#0 = 37
Constant (const byte) debug_print::print_sbyte_pos7_row#0 = 5
Constant (const byte) debug_print::print_sbyte_pos7_col#0 = 29
Constant (const byte) debug_print::print_sbyte_pos8_row#0 = 5
Constant (const byte) debug_print::print_sbyte_pos8_col#0 = 33
Constant (const byte) debug_print::print_sbyte_pos9_row#0 = 5
Constant (const byte) debug_print::print_sbyte_pos9_col#0 = 37
Constant (const byte) debug_print::print_sbyte_pos10_row#0 = 6
Constant (const byte) debug_print::print_sbyte_pos10_col#0 = 29
Constant (const byte) debug_print::print_sbyte_pos11_row#0 = 6
Constant (const byte) debug_print::print_sbyte_pos11_col#0 = 33
Constant (const byte) debug_print::print_sbyte_pos12_row#0 = 6
Constant (const byte) debug_print::print_sbyte_pos12_col#0 = 37
Constant (const word/signed word/dword/signed dword) debug_print::$12 = 19*40
Constant (const byte) debug_print::c#0 = 4
Constant (const byte) debug_print::i#0 = 0
Constant (const byte/signed byte/word/signed word/dword/signed dword) debug_print::$14 = 40*0
Constant (const byte/signed byte/word/signed word/dword/signed dword) debug_print::$18 = 40*1
Constant (const byte/signed byte/word/signed word/dword/signed dword) debug_print::$22 = 40*2
Constant (const byte/signed byte/word/signed word/dword/signed dword) debug_print::$26 = 40*3
Constant (const byte/word/signed word/dword/signed dword) debug_print::$30 = 40*4
Constant (const byte/word/signed word/dword/signed dword) debug_print::$34 = 40*5
Constant (const byte*) sprites_init::SCREEN#0 = ((byte*))1024
Constant (const byte) sprites_init::i#0 = 0
Constant (const signed byte[9]) rotation_matrix#0 = { fill( 9, 0) }
Constant (const byte*) mulf_sqr1#0 = ((byte*))9216
Constant (const byte*) mulf_sqr2#0 = ((byte*))9728
Constant (const byte*) SPRITE#0 = ((byte*))12288
Constant (const signed byte*) PERSP_Z#0 = ((signed byte*))10240
Constant (const signed byte*) SINH#0 = ((signed byte*))8192
Constant (const signed byte*) SINQ#0 = ((signed byte*))8704
Constant (const byte*) SINH_LO#0 = ((byte*))16384
Constant (const byte*) SINH_HI#0 = ((byte*))16896
Constant (const byte*) SINQ_LO#0 = ((byte*))17408
Constant (const byte*) SINQ_HI#0 = ((byte*))17920
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) print_cls::sc#0 = print_line_cursor#0
Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000
Constant (const word) main::$1 = ((word))mulf_sqr1#0
Constant (const word) main::$2 = ((word))mulf_sqr2#0
Constant (const signed byte[8]) xs#0 = { $0, $1, $2, 0, 0, 52, 52, 52 }
Constant (const signed byte[8]) ys#0 = { $3, 0, 52, $4, 52, $5, 0, 52 }
Constant (const byte*) debug_print_init::$2 = SCREEN#0+debug_print_init::$1
Constant (const byte*) debug_print_init::$6 = SCREEN#0+debug_print_init::$5
Constant (const byte*) debug_print_init::$10 = SCREEN#0+debug_print_init::$9
Constant (const byte*) print_str_at::at#4 = SCREEN#0+debug_print_init::$13
Constant (const byte*) print_str_at::at#5 = SCREEN#0+debug_print_init::$16
Constant (const byte*) print_str_at::at#6 = SCREEN#0+debug_print_init::$19
Constant (const byte*) print_str_at::at#7 = SCREEN#0+debug_print_init::$22
Constant (const byte*) print_str_at::at#8 = SCREEN#0+debug_print_init::$25
Constant (const byte*) print_str_at::at#9 = SCREEN#0+debug_print_init::$28
Constant (const byte*) print_str_at::at#10 = SCREEN#0+debug_print_init::$31
Constant (const byte*) print_str_at::at#11 = SCREEN#0+debug_print_init::$34
Constant (const byte*) print_str_at::at#12 = SCREEN#0+debug_print_init::$37
Constant (const byte*) debug_print_init::at_line#0 = SCREEN#0+debug_print_init::$40
Constant (const byte*) debug_print_init::at_cols#0 = debug_print_init::COLS#0+debug_print_init::$42
Constant (const byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos1_$0#0 = debug_print::print_sbyte_pos1_row#0*40
Constant (const byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos2_$0#0 = debug_print::print_sbyte_pos2_row#0*40
Constant (const byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos3_$0#0 = debug_print::print_sbyte_pos3_row#0*40
Constant (const byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos4_$0#0 = debug_print::print_sbyte_pos4_row#0*40
Constant (const byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos5_$0#0 = debug_print::print_sbyte_pos5_row#0*40
Constant (const byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos6_$0#0 = debug_print::print_sbyte_pos6_row#0*40
Constant (const byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos7_$0#0 = debug_print::print_sbyte_pos7_row#0*40
Constant (const byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos8_$0#0 = debug_print::print_sbyte_pos8_row#0*40
Constant (const byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos9_$0#0 = debug_print::print_sbyte_pos9_row#0*40
Constant (const byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos10_$0#0 = debug_print::print_sbyte_pos10_row#0*40
Constant (const byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos11_$0#0 = debug_print::print_sbyte_pos11_row#0*40
Constant (const byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos12_$0#0 = debug_print::print_sbyte_pos12_row#0*40
Constant (const byte*) sprites_init::sprites_ptr#0 = sprites_init::SCREEN#0+1016
Constant (const byte*) sprites_init::$1 = SPRITE#0/64
Constant (const signed byte*) COSH#0 = SINH#0+64
Constant (const signed byte*) COSQ#0 = SINQ#0+64
Constant (const byte*) COSH_LO#0 = SINH_LO#0+64
Constant (const byte*) COSH_HI#0 = SINH_HI#0+64
Constant (const byte*) COSQ_LO#0 = SINQ_LO#0+64
Constant (const byte*) COSQ_HI#0 = SINQ_HI#0+64
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) print_str_at::at#1 = debug_print_init::$2+34
Constant (const byte*) print_str_at::at#2 = debug_print_init::$6+34
Constant (const byte*) print_str_at::at#3 = debug_print_init::$10+34
Constant (const byte) sprites_init::$2 = ((byte))sprites_init::$1
Successful SSA optimization Pass2ConstantIdentification
Consolidated constant in assignment print_sbyte_at::at#3
Consolidated constant in assignment print_sbyte_at::at#4
Consolidated constant in assignment print_sbyte_at::at#5
Consolidated array index constant in *(rotation_matrix#0+0)
Consolidated constant in assignment print_sbyte_at::at#6
Consolidated array index constant in *(rotation_matrix#0+1)
Consolidated constant in assignment print_sbyte_at::at#7
Consolidated array index constant in *(rotation_matrix#0+2)
Consolidated constant in assignment print_sbyte_at::at#8
Consolidated array index constant in *(rotation_matrix#0+3)
Consolidated constant in assignment print_sbyte_at::at#9
Consolidated array index constant in *(rotation_matrix#0+4)
Consolidated constant in assignment print_sbyte_at::at#10
Consolidated array index constant in *(rotation_matrix#0+5)
Consolidated constant in assignment print_sbyte_at::at#11
Consolidated array index constant in *(rotation_matrix#0+6)
Consolidated constant in assignment print_sbyte_at::at#12
Consolidated array index constant in *(rotation_matrix#0+7)
Consolidated constant in assignment print_sbyte_at::at#13
Consolidated array index constant in *(rotation_matrix#0+8)
Consolidated constant in assignment print_sbyte_at::at#14
Consolidated array index constant in *(rotation_matrix#0+0)
Consolidated array index constant in *(rotation_matrix#0+1)
Consolidated array index constant in *(rotation_matrix#0+2)
Consolidated array index constant in *(rotation_matrix#0+3)
Consolidated array index constant in *(rotation_matrix#0+4)
Consolidated array index constant in *(rotation_matrix#0+5)
Consolidated array index constant in *(rotation_matrix#0+6)
Consolidated array index constant in *(rotation_matrix#0+7)
Consolidated array index constant in *(rotation_matrix#0+8)
Successful SSA optimization Pass2ConstantAdditionElimination
if() condition always true - replacing block destination [44] if(true) goto anim::@2
Successful SSA optimization Pass2ConstantIfs
Successful SSA optimization PassNEliminateUnusedVars
Eliminating Noop Cast (byte) print_byte_at::b#0 ← ((byte)) (signed byte) print_sbyte_at::b#24
Eliminating Noop Cast (byte~) anim::$7 ← ((byte)) *((signed byte*) xp#11)
Eliminating Noop Cast (byte~) anim::$9 ← ((byte)) *((signed byte*) yp#11)
Successful SSA optimization Pass2NopCastElimination
Removing unused block anim::@return
Successful SSA optimization Pass2EliminateUnusedBlocks
Resolved ranged next value anim::i#1 ← ++ anim::i#2 to ++
Resolved ranged comparison value if(anim::i#1!=rangelast(0,7)) goto anim::@13 to (byte/signed byte/word/signed word/dword/signed dword) 8
Resolved ranged next value debug_print_init::j#1 ← ++ debug_print_init::j#2 to ++
Resolved ranged comparison value if(debug_print_init::j#1!=rangelast(0,3)) goto debug_print_init::@2 to (byte/signed byte/word/signed word/dword/signed dword) 4
Resolved ranged next value debug_print_init::i#1 ← ++ debug_print_init::i#2 to ++
Resolved ranged comparison value if(debug_print_init::i#1!=rangelast(0,7)) goto debug_print_init::@1 to (byte/signed byte/word/signed word/dword/signed dword) 8
Resolved ranged next value debug_print::i#1 ← ++ debug_print::i#2 to ++
Resolved ranged comparison value if(debug_print::i#1!=rangelast(0,7)) goto debug_print::@1 to (byte/signed byte/word/signed word/dword/signed dword) 8
Resolved ranged next value sprites_init::i#1 ← ++ sprites_init::i#2 to ++
Resolved ranged comparison value if(sprites_init::i#1!=rangelast(0,7)) goto sprites_init::@1 to (byte/signed byte/word/signed word/dword/signed dword) 8
Culled Empty Block (label) @4
Culled Empty Block (label) print_sbyte_at::@6
Culled Empty Block (label) @16
Culled Empty Block (label) print_cls::@2
Culled Empty Block (label) @23
Culled Empty Block (label) main::@3
Culled Empty Block (label) @24
Culled Empty Block (label) anim::@2
Culled Empty Block (label) anim::@5
Culled Empty Block (label) anim::@8
Culled Empty Block (label) anim::@11
Culled Empty Block (label) anim::@28
Culled Empty Block (label) debug_print_init::@17
Culled Empty Block (label) debug_print_init::@20
Culled Empty Block (label) debug_print::@15
Culled Empty Block (label) debug_print::@16
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) @28
Culled Empty Block (label) @34
Successful SSA optimization Pass2CullEmptyBlocks
Self Phi Eliminated (signed byte) sz#11
Self Phi Eliminated (signed byte*) COSH#10
Self Phi Eliminated (signed byte*) SINH#10
Self Phi Eliminated (signed byte*) COSQ#10
Self Phi Eliminated (signed byte*) SINQ#10
Self Phi Eliminated (signed byte*) xr#12
Self Phi Eliminated (signed byte*) yr#12
Self Phi Eliminated (signed byte*) zr#12
Self Phi Eliminated (signed byte*) pp#11
Self Phi Eliminated (signed byte*) xp#11
Self Phi Eliminated (signed byte*) yp#11
Self Phi Eliminated (byte*) print_screen#58
Self Phi Eliminated (byte*) SCREEN#68
Self Phi Eliminated (byte*) debug_print_init::at_line#1
Self Phi Eliminated (byte*) debug_print_init::at_cols#2
Successful SSA optimization Pass2SelfPhiElimination
Redundant Phi (signed byte) sz#11 (const signed byte) sz#0
Redundant Phi (signed byte*) COSH#10 (const signed byte*) COSH#0
Redundant Phi (signed byte*) SINH#10 (const signed byte*) SINH#0
Redundant Phi (signed byte*) COSQ#10 (const signed byte*) COSQ#0
Redundant Phi (signed byte*) SINQ#10 (const signed byte*) SINQ#0
Redundant Phi (signed byte*) xr#12 (const signed byte*) xr#0
Redundant Phi (signed byte*) yr#12 (const signed byte*) yr#0
Redundant Phi (signed byte*) zr#12 (const signed byte*) zr#0
Redundant Phi (signed byte*) pp#11 (const signed byte*) pp#0
Redundant Phi (signed byte*) xp#11 (const signed byte*) xp#0
Redundant Phi (signed byte*) yp#11 (const signed byte*) yp#0
Redundant Phi (byte*) print_screen#58 (const byte*) print_line_cursor#0
Redundant Phi (byte*) SCREEN#68 (const byte*) SCREEN#0
Redundant Phi (byte*) debug_print_init::at_line#1 (const byte*) debug_print_init::at_line#0
Redundant Phi (byte*) debug_print_init::at_cols#2 (const byte*) debug_print_init::at_cols#0
Successful SSA optimization Pass2RedundantPhiElimination
Constant (const signed byte) calculate_matrix::sz#0 = sz#0
Constant (const byte*) debug_print_init::$45 = debug_print_init::at_line#0+debug_print_init::$44
Constant (const byte*) debug_print_init::$49 = debug_print_init::at_line#0+debug_print_init::$48
Constant (const byte*) debug_print_init::$53 = debug_print_init::at_line#0+debug_print_init::$52
Constant (const byte*) debug_print_init::$58 = debug_print_init::at_cols#0+debug_print_init::$57
Constant (const byte*) debug_print_init::$62 = debug_print_init::at_cols#0+debug_print_init::$61
Constant (const byte*) debug_print_init::$66 = debug_print_init::at_cols#0+debug_print_init::$65
Constant (const byte*) debug_print_init::$70 = debug_print_init::at_cols#0+debug_print_init::$69
Constant (const byte*) debug_print_init::$74 = debug_print_init::at_cols#0+debug_print_init::$73
Constant (const byte*) debug_print_init::$78 = debug_print_init::at_cols#0+debug_print_init::$77
Constant (const byte*) debug_print_init::$82 = debug_print_init::at_cols#0+debug_print_init::$81
Constant (const byte*) debug_print_init::$86 = debug_print_init::at_cols#0+debug_print_init::$85
Constant (const byte*) debug_print_init::$90 = debug_print_init::at_cols#0+debug_print_init::$89
Constant (const byte*) debug_print::print_sbyte_pos1_$1#0 = print_line_cursor#0
Constant (const byte*) debug_print::print_sbyte_pos2_$1#0 = print_line_cursor#0
Constant (const signed byte) debug_print::print_sbyte_pos3_sb#0 = sz#0
Constant (const byte*) debug_print::print_sbyte_pos3_$1#0 = print_line_cursor#0
Constant (const byte*) debug_print::print_sbyte_pos4_$1#0 = print_line_cursor#0
Constant (const byte*) debug_print::print_sbyte_pos5_$1#0 = print_line_cursor#0
Constant (const byte*) debug_print::print_sbyte_pos6_$1#0 = print_line_cursor#0
Constant (const byte*) debug_print::print_sbyte_pos7_$1#0 = print_line_cursor#0
Constant (const byte*) debug_print::print_sbyte_pos8_$1#0 = print_line_cursor#0
Constant (const byte*) debug_print::print_sbyte_pos9_$1#0 = print_line_cursor#0
Constant (const byte*) debug_print::print_sbyte_pos10_$1#0 = print_line_cursor#0
Constant (const byte*) debug_print::print_sbyte_pos11_$1#0 = print_line_cursor#0
Constant (const byte*) debug_print::print_sbyte_pos12_$1#0 = print_line_cursor#0
Constant (const byte*) debug_print::at_line#0 = SCREEN#0+debug_print::$12
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) print_sbyte_at::at#3 = debug_print::print_sbyte_pos1_$1#0+debug_print::print_sbyte_pos1_$0#0+debug_print::print_sbyte_pos1_col#0
Constant (const byte*) print_sbyte_at::at#4 = debug_print::print_sbyte_pos2_$1#0+debug_print::print_sbyte_pos2_$0#0+debug_print::print_sbyte_pos2_col#0
Constant (const byte*) print_sbyte_at::at#5 = debug_print::print_sbyte_pos3_$1#0+debug_print::print_sbyte_pos3_$0#0+debug_print::print_sbyte_pos3_col#0
Constant (const signed byte) print_sbyte_at::b#6 = debug_print::print_sbyte_pos3_sb#0
Constant (const byte*) print_sbyte_at::at#6 = debug_print::print_sbyte_pos4_$1#0+debug_print::print_sbyte_pos4_$0#0+debug_print::print_sbyte_pos4_col#0
Constant (const byte*) print_sbyte_at::at#7 = debug_print::print_sbyte_pos5_$1#0+debug_print::print_sbyte_pos5_$0#0+debug_print::print_sbyte_pos5_col#0
Constant (const byte*) print_sbyte_at::at#8 = debug_print::print_sbyte_pos6_$1#0+debug_print::print_sbyte_pos6_$0#0+debug_print::print_sbyte_pos6_col#0
Constant (const byte*) print_sbyte_at::at#9 = debug_print::print_sbyte_pos7_$1#0+debug_print::print_sbyte_pos7_$0#0+debug_print::print_sbyte_pos7_col#0
Constant (const byte*) print_sbyte_at::at#10 = debug_print::print_sbyte_pos8_$1#0+debug_print::print_sbyte_pos8_$0#0+debug_print::print_sbyte_pos8_col#0
Constant (const byte*) print_sbyte_at::at#11 = debug_print::print_sbyte_pos9_$1#0+debug_print::print_sbyte_pos9_$0#0+debug_print::print_sbyte_pos9_col#0
Constant (const byte*) print_sbyte_at::at#12 = debug_print::print_sbyte_pos10_$1#0+debug_print::print_sbyte_pos10_$0#0+debug_print::print_sbyte_pos10_col#0
Constant (const byte*) print_sbyte_at::at#13 = debug_print::print_sbyte_pos11_$1#0+debug_print::print_sbyte_pos11_$0#0+debug_print::print_sbyte_pos11_col#0
Constant (const byte*) print_sbyte_at::at#14 = debug_print::print_sbyte_pos12_$1#0+debug_print::print_sbyte_pos12_$0#0+debug_print::print_sbyte_pos12_col#0
Constant (const byte*) debug_print::$15 = debug_print::at_line#0+debug_print::$14
Constant (const byte*) debug_print::$19 = debug_print::at_line#0+debug_print::$18
Constant (const byte*) debug_print::$23 = debug_print::at_line#0+debug_print::$22
Constant (const byte*) debug_print::$27 = debug_print::at_line#0+debug_print::$26
Constant (const byte*) debug_print::$31 = debug_print::at_line#0+debug_print::$30
Constant (const byte*) debug_print::$35 = debug_print::at_line#0+debug_print::$34
Successful SSA optimization Pass2ConstantIdentification
Culled Empty Block (label) debug_print::@4
Culled Empty Block (label) debug_print::@14
Successful SSA optimization Pass2CullEmptyBlocks
Inlining constant with var siblings (const byte*) print_str_at::str#1
Inlining constant with var siblings (const byte*) print_str_at::str#2
Inlining constant with var siblings (const byte*) print_str_at::str#3
Inlining constant with var siblings (const byte*) print_str_at::str#4
Inlining constant with var siblings (const byte*) print_str_at::str#5
Inlining constant with var siblings (const byte*) print_str_at::str#6
Inlining constant with var siblings (const byte*) print_str_at::str#7
Inlining constant with var siblings (const byte*) print_str_at::str#8
Inlining constant with var siblings (const byte*) print_str_at::str#9
Inlining constant with var siblings (const byte*) print_str_at::str#10
Inlining constant with var siblings (const byte*) print_str_at::str#11
Inlining constant with var siblings (const byte*) print_str_at::str#12
Inlining constant with var siblings (const byte*) print_str_at::at#4
Inlining constant with var siblings (const byte*) print_str_at::at#5
Inlining constant with var siblings (const byte*) print_str_at::at#6
Inlining constant with var siblings (const byte*) print_str_at::at#7
Inlining constant with var siblings (const byte*) print_str_at::at#8
Inlining constant with var siblings (const byte*) print_str_at::at#9
Inlining constant with var siblings (const byte*) print_str_at::at#10
Inlining constant with var siblings (const byte*) print_str_at::at#11
Inlining constant with var siblings (const byte*) print_str_at::at#12
Inlining constant with var siblings (const byte*) print_str_at::at#1
Inlining constant with var siblings (const byte*) print_str_at::at#2
Inlining constant with var siblings (const byte*) print_str_at::at#3
Inlining constant with var siblings (const 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 signed byte) print_sbyte_at::b#6
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*) print_cls::sc#0
Inlining constant with var siblings (const byte) anim::i#0
Inlining constant with var siblings (const byte) debug_print_init::c#0
Inlining constant with var siblings (const byte) debug_print_init::i#0
Inlining constant with var siblings (const byte) debug_print_init::j#0
Inlining constant with var siblings (const byte) debug_print::c#0
Inlining constant with var siblings (const byte) debug_print::i#0
Inlining constant with var siblings (const byte) sprites_init::i#0
Inlining constant with var siblings (const signed byte) sx#17
Inlining constant with var siblings (const signed byte) sy#18
Constant inlined debug_print::print_sbyte_pos7_$0#0 = (const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40
Constant inlined debug_print::print_sbyte_pos11_$1#0 = (const byte*) print_line_cursor#0
Constant inlined print_str_at::str#12 = (const string) debug_print_init::str11
Constant inlined debug_print::print_sbyte_pos5_$1#0 = (const byte*) print_line_cursor#0
Constant inlined print_str_at::str#11 = (const string) debug_print_init::str10
Constant inlined print_str_at::str#10 = (const string) debug_print_init::str9
Constant inlined debug_print_init::$37 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24
Constant inlined debug_print::print_sbyte_pos6_$0#0 = (const byte) debug_print::print_sbyte_pos6_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40
Constant inlined debug_print_init::$34 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 23
Constant inlined debug_print_init::$31 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 22
Constant inlined debug_print::$18 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined debug_print::$19 = (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined debug_print::$14 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined debug_print::print_sbyte_pos6_$1#0 = (const byte*) print_line_cursor#0
Constant inlined debug_print::print_sbyte_pos3_$1#0 = (const byte*) print_line_cursor#0
Constant inlined debug_print::$15 = (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined debug_print::$12 = (byte/signed byte/word/signed word/dword/signed dword) 19*(byte/signed byte/word/signed word/dword/signed dword) 40
Constant inlined sprites_init::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined debug_print_init::$28 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 21
Constant inlined debug_print_init::$25 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 20
Constant inlined debug_print_init::$22 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 19
Constant inlined debug_print::print_sbyte_pos12_$1#0 = (const byte*) print_line_cursor#0
Constant inlined debug_print_init::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined calculate_matrix::sz#0 = (const signed byte) sz#0
Constant inlined print_str_at::str#1 = (const string) debug_print_init::str
Constant inlined print_str_at::str#2 = (const string) debug_print_init::str1
Constant inlined debug_print::print_sbyte_pos7_$1#0 = (const byte*) print_line_cursor#0
Constant inlined print_str_at::str#3 = (const string) debug_print_init::str2
Constant inlined print_str_at::str#4 = (const string) debug_print_init::str3
Constant inlined print_cls::$0 = (const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000
Constant inlined debug_print::print_sbyte_pos1_$1#0 = (const byte*) print_line_cursor#0
Constant inlined $12 = (const byte[]) print_hextab#0
Constant inlined debug_print::print_sbyte_pos3_sb#0 = (const signed byte) sz#0
Constant inlined print_str_at::at#11 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 23
Constant inlined print_str_at::at#10 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 22
Constant inlined print_str_at::at#12 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24
Constant inlined debug_print_init::$58 = (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined debug_print::print_sbyte_pos11_$0#0 = (const byte) debug_print::print_sbyte_pos11_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40
Constant inlined print_char_at::ch#0 = (byte) '-'
Constant inlined debug_print_init::$57 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_char_at::ch#1 = (byte) ' '
Constant inlined print_str_at::str#9 = (const string) debug_print_init::str8
Constant inlined debug_print_init::$53 = (const byte*) debug_print_init::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined debug_print::print_sbyte_pos9_$0#0 = (const byte) debug_print::print_sbyte_pos9_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40
Constant inlined debug_print_init::$52 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined print_str_at::str#5 = (const string) debug_print_init::str4
Constant inlined print_str_at::str#6 = (const string) debug_print_init::str5
Constant inlined print_str_at::str#7 = (const string) debug_print_init::str6
Constant inlined print_str_at::str#8 = (const string) debug_print_init::str7
Constant inlined debug_print::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 4
Constant inlined print_sbyte_at::at#13 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos11_col#0
Constant inlined print_sbyte_at::at#12 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos10_col#0
Constant inlined print_sbyte_at::at#14 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos12_col#0
Constant inlined debug_print::print_sbyte_pos3_$0#0 = (const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40
Constant inlined print_sbyte_at::at#11 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos9_col#0
Constant inlined print_sbyte_at::at#10 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos8_col#0
Constant inlined print_cls::sc#0 = (const byte*) print_line_cursor#0
Constant inlined print_sbyte_at::at#6 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos4_col#0
Constant inlined print_sbyte_at::at#5 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos3_col#0
Constant inlined print_sbyte_at::at#4 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos2_col#0
Constant inlined print_sbyte_at::at#3 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos1_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos1_col#0
Constant inlined print_sbyte_at::at#9 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos7_col#0
Constant inlined print_sbyte_at::at#8 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos6_col#0
Constant inlined print_sbyte_at::at#7 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos5_col#0
Constant inlined main::$1 = ((word))(const byte*) mulf_sqr1#0
Constant inlined debug_print_init::$49 = (const byte*) debug_print_init::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined main::$2 = ((word))(const byte*) mulf_sqr2#0
Constant inlined debug_print_init::$48 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined debug_print_init::$45 = (const byte*) debug_print_init::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined debug_print_init::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined debug_print_init::$44 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined debug_print_init::$42 = (byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 40
Constant inlined debug_print_init::$40 = (byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 40
Constant inlined debug_print::print_sbyte_pos4_$1#0 = (const byte*) print_line_cursor#0
Constant inlined debug_print_init::$70 = (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3
Constant inlined print_str_at::at#4 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 16
Constant inlined print_str_at::at#3 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 34
Constant inlined print_str_at::at#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 34
Constant inlined print_str_at::at#1 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 0+(byte/signed byte/word/signed word/dword/signed dword) 34
Constant inlined debug_print::print_sbyte_pos1_$0#0 = (const byte) debug_print::print_sbyte_pos1_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40
Constant inlined debug_print_init::$9 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined debug_print_init::$6 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined print_str_at::at#9 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 21
Constant inlined $0 = -(byte/signed byte/word/signed word/dword/signed dword) 52
Constant inlined print_str_at::at#8 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 20
Constant inlined $1 = -(byte/signed byte/word/signed word/dword/signed dword) 52
Constant inlined print_str_at::at#7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 19
Constant inlined $2 = -(byte/signed byte/word/signed word/dword/signed dword) 52
Constant inlined print_str_at::at#6 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 18
Constant inlined anim::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined $3 = -(byte/signed byte/word/signed word/dword/signed dword) 52
Constant inlined print_str_at::at#5 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 17
Constant inlined sx#17 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined $4 = -(byte/signed byte/word/signed word/dword/signed dword) 52
Constant inlined $5 = -(byte/signed byte/word/signed word/dword/signed dword) 52
Constant inlined debug_print::print_sbyte_pos2_$0#0 = (const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40
Constant inlined debug_print_init::$78 = (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5
Constant inlined debug_print_init::$77 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5
Constant inlined debug_print::print_sbyte_pos9_$1#0 = (const byte*) print_line_cursor#0
Constant inlined debug_print_init::$74 = (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4
Constant inlined debug_print_init::$73 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4
Constant inlined debug_print::print_sbyte_pos10_$0#0 = (const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40
Constant inlined debug_print::print_sbyte_pos8_$1#0 = (const byte*) print_line_cursor#0
Constant inlined print_sbyte_at::b#6 = (const signed byte) sz#0
Constant inlined debug_print_init::$1 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined debug_print_init::$5 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined debug_print_init::$69 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3
Constant inlined debug_print_init::$2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined sprites_init::$1 = (const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64
Constant inlined debug_print_init::$66 = (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined sprites_init::$2 = ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64
Constant inlined debug_print_init::$65 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined debug_print_init::$62 = (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined debug_print_init::$61 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined debug_print::print_sbyte_pos4_$0#0 = (const byte) debug_print::print_sbyte_pos4_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40
Constant inlined debug_print_init::$90 = (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8
Constant inlined debug_print::$27 = (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3
Constant inlined debug_print::$26 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3
Constant inlined debug_print::$23 = (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined debug_print::$22 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined debug_print_init::$19 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 18
Constant inlined debug_print::print_sbyte_pos2_$1#0 = (const byte*) print_line_cursor#0
Constant inlined debug_print::print_sbyte_pos5_$0#0 = (const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40
Constant inlined debug_print_init::$16 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 17
Constant inlined debug_print_init::$13 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 16
Constant inlined debug_print_init::$10 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined debug_print_init::$81 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6
Constant inlined debug_print::print_sbyte_pos10_$1#0 = (const byte*) print_line_cursor#0
Constant inlined sy#18 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined debug_print::$34 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5
Constant inlined debug_print::$35 = (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5
Constant inlined debug_print::$30 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4
Constant inlined debug_print::print_sbyte_pos8_$0#0 = (const byte) debug_print::print_sbyte_pos8_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40
Constant inlined debug_print::$31 = (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4
Constant inlined debug_print_init::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 4
Constant inlined debug_print_init::$89 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8
Constant inlined debug_print::print_sbyte_pos12_$0#0 = (const byte) debug_print::print_sbyte_pos12_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40
Constant inlined debug_print::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined debug_print_init::$86 = (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 7
Constant inlined debug_print_init::$85 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 7
Constant inlined debug_print_init::$82 = (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6
Successful SSA optimization Pass2ConstantInlining
Simplifying constant multiply by zero 40*0
Simplifying constant multiply by zero 40*0
Simplifying constant multiply by zero 40*0
Simplifying constant plus zero rotation_matrix#0+0
Simplifying constant multiply by zero 40*0
Simplifying constant plus zero rotation_matrix#0+0
Simplifying constant plus zero SCREEN#0+0
Simplifying constant plus zero debug_print_init::at_line#0+0
Simplifying constant plus zero debug_print_init::at_cols#0+0
Simplifying constant plus zero debug_print::at_line#0+0
Added new block during phi lifting anim::@31(between anim::@29 and anim::@13)
Added new block during phi lifting debug_print::@33(between debug_print::@32 and debug_print::@1)
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 print_cls::@3(between print_cls::@1 and print_cls::@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 @end
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of anim
Adding NOP phi() at start of anim::@27
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::@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 print_cls
CALL GRAPH
Calls in [] to main:11 
Calls in [main] to sprites_init:14 debug_print_init:17 anim:19 
Calls in [anim] to calculate_matrix:29 store_matrix:31 rotate_matrix:37 debug_print:52 
Calls in [debug_print] to print_sbyte_at:62 print_sbyte_at:66 print_sbyte_at:68 print_sbyte_at:72 print_sbyte_at:76 print_sbyte_at:80 print_sbyte_at:84 print_sbyte_at:88 print_sbyte_at:92 print_sbyte_at:96 print_sbyte_at:100 print_sbyte_at:104 print_sbyte_at:110 print_sbyte_at:115 print_sbyte_at:120 print_sbyte_at:125 print_sbyte_at:130 print_sbyte_at:135 
Calls in [print_sbyte_at] to print_char_at:146 print_byte_at:150 print_char_at:154 
Calls in [print_byte_at] to print_char_at:165 print_char_at:171 
Calls in [debug_print_init] to print_cls:226 print_str_at:228 print_str_at:230 print_str_at:232 print_str_at:234 print_str_at:236 print_str_at:238 print_str_at:240 print_str_at:242 print_str_at:244 print_str_at:246 print_str_at:248 print_str_at:250 print_sbyte_at:256 print_sbyte_at:261 print_sbyte_at:266 

Created 19 initial phi equivalence classes
Coalesced [56] sx#32 ← sx#3
Coalesced [57] sy#35 ← sy#3
Coalesced [58] anim::i#4 ← anim::i#1
Coalesced [61] print_sbyte_at::b#34 ← print_sbyte_at::b#4
Coalesced [65] print_sbyte_at::b#38 ← print_sbyte_at::b#5
Coalesced [71] print_sbyte_at::b#39 ← print_sbyte_at::b#7
Coalesced [75] print_sbyte_at::b#40 ← print_sbyte_at::b#8
Coalesced [79] print_sbyte_at::b#41 ← print_sbyte_at::b#9
Coalesced [83] print_sbyte_at::b#42 ← print_sbyte_at::b#10
Coalesced [87] print_sbyte_at::b#43 ← print_sbyte_at::b#11
Coalesced [91] print_sbyte_at::b#44 ← print_sbyte_at::b#12
Coalesced [95] print_sbyte_at::b#35 ← print_sbyte_at::b#13
Coalesced [99] print_sbyte_at::b#36 ← print_sbyte_at::b#14
Coalesced [103] print_sbyte_at::b#37 ← print_sbyte_at::b#15
Coalesced [108] print_sbyte_at::b#28 ← print_sbyte_at::b#16
Coalesced [109] print_sbyte_at::at#27 ← print_sbyte_at::at#15
Coalesced [113] print_sbyte_at::b#29 ← print_sbyte_at::b#17
Coalesced [114] print_sbyte_at::at#28 ← print_sbyte_at::at#16
Coalesced [118] print_sbyte_at::b#30 ← print_sbyte_at::b#18
Coalesced [119] print_sbyte_at::at#29 ← print_sbyte_at::at#17
Coalesced [123] print_sbyte_at::b#31 ← print_sbyte_at::b#19
Coalesced [124] print_sbyte_at::at#30 ← print_sbyte_at::at#18
Coalesced [128] print_sbyte_at::b#32 ← print_sbyte_at::b#20
Coalesced [129] print_sbyte_at::at#31 ← print_sbyte_at::at#19
Coalesced [133] print_sbyte_at::b#33 ← print_sbyte_at::b#21
Coalesced [134] print_sbyte_at::at#32 ← print_sbyte_at::at#20
Coalesced [140] debug_print::c#9 ← debug_print::c#1
Coalesced [141] debug_print::i#9 ← debug_print::i#1
Coalesced [145] print_char_at::at#8 ← print_char_at::at#1
Coalesced [147] print_sbyte_at::b#49 ← print_sbyte_at::b#22
Coalesced [153] print_char_at::at#7 ← print_char_at::at#0
Coalesced [156] print_sbyte_at::b#48 ← print_sbyte_at::b#0
Coalesced [163] print_char_at::ch#5 ← print_char_at::ch#2
Coalesced [164] print_char_at::at#5 ← print_char_at::at#2
Coalesced [169] print_char_at::ch#6 ← print_char_at::ch#3
Coalesced [170] print_char_at::at#6 ← print_char_at::at#3
Coalesced [254] print_sbyte_at::b#45 ← print_sbyte_at::b#1
Coalesced [255] print_sbyte_at::at#33 ← print_sbyte_at::at#0
Coalesced [259] print_sbyte_at::b#46 ← print_sbyte_at::b#2
Coalesced [260] print_sbyte_at::at#34 ← print_sbyte_at::at#1
Coalesced [264] print_sbyte_at::b#47 ← print_sbyte_at::b#3
Coalesced [265] print_sbyte_at::at#35 ← print_sbyte_at::at#2
Coalesced [302] debug_print_init::c#8 ← debug_print_init::c#1
Coalesced [303] debug_print_init::i#8 ← debug_print_init::i#1
Coalesced [304] debug_print_init::j#3 ← debug_print_init::j#1
Coalesced [306] print_str_at::str#16 ← print_str_at::str#15
Coalesced [307] print_str_at::at#16 ← print_str_at::at#15
Coalesced [314] print_str_at::str#17 ← print_str_at::str#0
Coalesced [315] print_str_at::at#17 ← print_str_at::at#0
Coalesced [322] print_cls::sc#3 ← print_cls::sc#1
Coalesced [330] sprites_init::i#3 ← sprites_init::i#1
Coalesced down to 16 phi equivalence classes
Culled Empty Block (label) anim::@31
Culled Empty Block (label) debug_print::@33
Culled Empty Block (label) debug_print_init::@21
Culled Empty Block (label) debug_print_init::@22
Culled Empty Block (label) print_cls::@3
Culled Empty Block (label) sprites_init::@3
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::@27
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::@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 print_cls

FINAL CONTROL FLOW GRAPH
@begin: scope:[]  from
  [0] phi()
  to:@33
@33: scope:[]  from @begin
  kickasm(location (const byte*) mulf_sqr1#0) {{ .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) }
    }
 }}
  kickasm(location (const byte*) mulf_sqr2#0) {{ .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) }  
    }
 }}
  kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))
    .for (var y=0; y<21; y++)
        .for (var x=0;x<3; x++)
            .byte pic.getSinglecolorByte(x,y)
 }}
  kickasm(location (const signed byte*) PERSP_Z#0) {{ {
    .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)));
    	}
    }
	}
 }}
  kickasm(location (const signed byte*) SINH#0) {{ {
    .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)
    }
    }
 }}
  kickasm(location (const signed byte*) SINQ#0) {{ {
    .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)
    }
    }
 }}
  kickasm(location (const byte*) SINH_LO#0) {{ {
    .var min = -$2000
    .var max = $2000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte <(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }
 }}
  kickasm(location (const byte*) SINH_HI#0) {{ {
    .var min = -$2000
    .var max = $2000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte >(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }
 }}
  kickasm(location (const byte*) SINQ_LO#0) {{ {
    .var min = -$1000
    .var max = $1000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte <(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }
 }}
  kickasm(location (const byte*) SINQ_HI#0) {{ {
    .var min = -$1000
    .var max = $1000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte >(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }
 }}
  [11] call main 
  to:@end
@end: scope:[]  from @33
  [12] phi()
main: scope:[main]  from @33
  asm { sei  }
  [14] call sprites_init 
  to:main::@1
main::@1: scope:[main]  from main
  [15] *((const word*) psp1#0) ← ((word))(const byte*) mulf_sqr1#0
  [16] *((const word*) psp2#0) ← ((word))(const byte*) mulf_sqr2#0
  [17] call debug_print_init 
  to:main::@2
main::@2: scope:[main]  from main::@1
  [18] phi()
  [19] call anim 
  to:main::@return
main::@return: scope:[main]  from main::@2
  [20] return 
  to:@return
anim: scope:[anim]  from main::@2
  [21] phi()
  to:anim::@1
anim::@1: scope:[anim]  from anim anim::@30
  [22] (signed byte) sy#10 ← phi( anim/(byte/signed byte/word/signed word/dword/signed dword) 0 anim::@30/(signed byte) sy#3 )
  [22] (signed byte) sx#10 ← phi( anim/(byte/signed byte/word/signed word/dword/signed dword) 0 anim::@30/(signed byte) sx#3 )
  to:anim::@4
anim::@4: scope:[anim]  from anim::@1 anim::@4
  [23] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4
  to:anim::@7
anim::@7: scope:[anim]  from anim::@4 anim::@7
  [24] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto anim::@7
  to:anim::@10
anim::@10: scope:[anim]  from anim::@10 anim::@7
  [25] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 253) goto anim::@10
  to:anim::@12
anim::@12: scope:[anim]  from anim::@10
  [26] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0)
  [27] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10
  [28] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10
  [29] call calculate_matrix 
  to:anim::@27
anim::@27: scope:[anim]  from anim::@12
  [30] phi()
  [31] call store_matrix 
  to:anim::@13
anim::@13: scope:[anim]  from anim::@27 anim::@29
  [32] (byte) anim::i#2 ← phi( anim::@27/(byte/signed byte/word/signed word/dword/signed dword) 0 anim::@29/(byte) anim::i#1 )
  [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0)
  [34] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2)
  [35] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2)
  [36] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2)
  [37] call rotate_matrix 
  to:anim::@29
anim::@29: scope:[anim]  from anim::@13
  [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0)
  [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0)
  [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0)
  [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0)
  [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0)
  [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0)
  [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
  [45] (byte/word/signed word/dword/signed dword~) anim::$8 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) xp#0)
  [46] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$8
  [47] (byte/word/signed word/dword/signed dword~) anim::$10 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) yp#0)
  [48] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$10
  [49] (byte) anim::i#1 ← ++ (byte) anim::i#2
  [50] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@13
  to:anim::@25
anim::@25: scope:[anim]  from anim::@29
  [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0
  [52] call debug_print 
  to:anim::@30
anim::@30: scope:[anim]  from anim::@25
  [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0
  [54] (signed byte) sx#3 ← (signed byte) sx#10 + (byte/signed byte/word/signed word/dword/signed dword) 2
  [55] (signed byte) sy#3 ← (signed byte) sy#10 - (byte/signed byte/word/signed word/dword/signed dword) 3
  to:anim::@1
debug_print: scope:[debug_print]  from anim::@25
  [56] (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
  [57] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0
  [58] call print_sbyte_at 
  to:debug_print::@3
debug_print::@3: scope:[debug_print]  from debug_print::print_sbyte_pos1
  [59] (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::@3
  [60] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0
  [61] call print_sbyte_at 
  to:debug_print::print_sbyte_pos3
debug_print::print_sbyte_pos3: scope:[debug_print]  from debug_print::print_sbyte_pos2
  [62] phi()
  [63] call print_sbyte_at 
  to:debug_print::@5
debug_print::@5: scope:[debug_print]  from debug_print::print_sbyte_pos3
  [64] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0)
  to:debug_print::print_sbyte_pos4
debug_print::print_sbyte_pos4: scope:[debug_print]  from debug_print::@5
  [65] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0
  [66] call print_sbyte_at 
  to:debug_print::@6
debug_print::@6: scope:[debug_print]  from debug_print::print_sbyte_pos4
  [67] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1)
  to:debug_print::print_sbyte_pos5
debug_print::print_sbyte_pos5: scope:[debug_print]  from debug_print::@6
  [68] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0
  [69] call print_sbyte_at 
  to:debug_print::@7
debug_print::@7: scope:[debug_print]  from debug_print::print_sbyte_pos5
  [70] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2)
  to:debug_print::print_sbyte_pos6
debug_print::print_sbyte_pos6: scope:[debug_print]  from debug_print::@7
  [71] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0
  [72] call print_sbyte_at 
  to:debug_print::@8
debug_print::@8: scope:[debug_print]  from debug_print::print_sbyte_pos6
  [73] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3)
  to:debug_print::print_sbyte_pos7
debug_print::print_sbyte_pos7: scope:[debug_print]  from debug_print::@8
  [74] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0
  [75] call print_sbyte_at 
  to:debug_print::@9
debug_print::@9: scope:[debug_print]  from debug_print::print_sbyte_pos7
  [76] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4)
  to:debug_print::print_sbyte_pos8
debug_print::print_sbyte_pos8: scope:[debug_print]  from debug_print::@9
  [77] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0
  [78] call print_sbyte_at 
  to:debug_print::@10
debug_print::@10: scope:[debug_print]  from debug_print::print_sbyte_pos8
  [79] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5)
  to:debug_print::print_sbyte_pos9
debug_print::print_sbyte_pos9: scope:[debug_print]  from debug_print::@10
  [80] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0
  [81] call print_sbyte_at 
  to:debug_print::@11
debug_print::@11: scope:[debug_print]  from debug_print::print_sbyte_pos9
  [82] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6)
  to:debug_print::print_sbyte_pos10
debug_print::print_sbyte_pos10: scope:[debug_print]  from debug_print::@11
  [83] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0
  [84] call print_sbyte_at 
  to:debug_print::@12
debug_print::@12: scope:[debug_print]  from debug_print::print_sbyte_pos10
  [85] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7)
  to:debug_print::print_sbyte_pos11
debug_print::print_sbyte_pos11: scope:[debug_print]  from debug_print::@12
  [86] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0
  [87] call print_sbyte_at 
  to:debug_print::@13
debug_print::@13: scope:[debug_print]  from debug_print::print_sbyte_pos11
  [88] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8)
  to:debug_print::print_sbyte_pos12
debug_print::print_sbyte_pos12: scope:[debug_print]  from debug_print::@13
  [89] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0
  [90] call print_sbyte_at 
  to:debug_print::@1
debug_print::@1: scope:[debug_print]  from debug_print::@32 debug_print::print_sbyte_pos12
  [91] (byte) debug_print::i#2 ← phi( debug_print::print_sbyte_pos12/(byte/signed byte/word/signed word/dword/signed dword) 0 debug_print::@32/(byte) debug_print::i#1 )
  [91] (byte) debug_print::c#2 ← phi( debug_print::print_sbyte_pos12/(byte/signed byte/word/signed word/dword/signed dword) 4 debug_print::@32/(byte) debug_print::c#1 )
  [92] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2
  [93] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2)
  [94] call print_sbyte_at 
  to:debug_print::@27
debug_print::@27: scope:[debug_print]  from debug_print::@1
  [95] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) debug_print::c#2
  [96] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2)
  [97] call print_sbyte_at 
  to:debug_print::@28
debug_print::@28: scope:[debug_print]  from debug_print::@27
  [98] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) debug_print::c#2
  [99] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2)
  [100] call print_sbyte_at 
  to:debug_print::@29
debug_print::@29: scope:[debug_print]  from debug_print::@28
  [101] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) debug_print::c#2
  [102] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2)
  [103] call print_sbyte_at 
  to:debug_print::@30
debug_print::@30: scope:[debug_print]  from debug_print::@29
  [104] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) debug_print::c#2
  [105] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2)
  [106] call print_sbyte_at 
  to:debug_print::@31
debug_print::@31: scope:[debug_print]  from debug_print::@30
  [107] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) debug_print::c#2
  [108] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2)
  [109] call print_sbyte_at 
  to:debug_print::@32
debug_print::@32: scope:[debug_print]  from debug_print::@31
  [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4
  [111] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2
  [112] if((byte) debug_print::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print::@1
  to:debug_print::@return
debug_print::@return: scope:[debug_print]  from debug_print::@32
  [113] return 
  to:@return
print_sbyte_at: scope:[print_sbyte_at]  from debug_print::@1 debug_print::@27 debug_print::@28 debug_print::@29 debug_print::@30 debug_print::@31 debug_print::print_sbyte_pos1 debug_print::print_sbyte_pos10 debug_print::print_sbyte_pos11 debug_print::print_sbyte_pos12 debug_print::print_sbyte_pos2 debug_print::print_sbyte_pos3 debug_print::print_sbyte_pos4 debug_print::print_sbyte_pos5 debug_print::print_sbyte_pos6 debug_print::print_sbyte_pos7 debug_print::print_sbyte_pos8 debug_print::print_sbyte_pos9 debug_print_init::@1 debug_print_init::@18 debug_print_init::@19
  [114] (byte*) print_sbyte_at::at#21 ← 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/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos1_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos1_col#0 debug_print::print_sbyte_pos10/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos10_col#0 debug_print::print_sbyte_pos11/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos11_col#0 debug_print::print_sbyte_pos12/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos12_col#0 debug_print::print_sbyte_pos2/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos2_col#0 debug_print::print_sbyte_pos3/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos3_col#0 debug_print::print_sbyte_pos4/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos4_col#0 debug_print::print_sbyte_pos5/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos5_col#0 debug_print::print_sbyte_pos6/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos6_col#0 debug_print::print_sbyte_pos7/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos7_col#0 debug_print::print_sbyte_pos8/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos8_col#0 debug_print::print_sbyte_pos9/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos9_col#0 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 )
  [114] (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/(const signed byte) sz#0 debug_print::print_sbyte_pos4/(signed byte) print_sbyte_at::b#7 debug_print::print_sbyte_pos5/(signed byte) print_sbyte_at::b#8 debug_print::print_sbyte_pos6/(signed byte) print_sbyte_at::b#9 debug_print::print_sbyte_pos7/(signed byte) print_sbyte_at::b#10 debug_print::print_sbyte_pos8/(signed byte) print_sbyte_at::b#11 debug_print::print_sbyte_pos9/(signed byte) print_sbyte_at::b#12 debug_print_init::@1/(signed byte) print_sbyte_at::b#1 debug_print_init::@18/(signed byte) print_sbyte_at::b#2 debug_print_init::@19/(signed byte) print_sbyte_at::b#3 )
  [115] if((signed byte) print_sbyte_at::b#22<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1
  to:print_sbyte_at::@3
print_sbyte_at::@3: scope:[print_sbyte_at]  from print_sbyte_at
  [116] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21
  [117] 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::@5
  [118] (signed byte) print_sbyte_at::b#24 ← phi( print_sbyte_at::@5/(signed byte) print_sbyte_at::b#0 print_sbyte_at::@3/(signed byte) print_sbyte_at::b#22 )
  [119] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte/signed byte/word/signed word/dword/signed dword) 1
  [120] call print_byte_at 
  to:print_sbyte_at::@return
print_sbyte_at::@return: scope:[print_sbyte_at]  from print_sbyte_at::@2
  [121] return 
  to:@return
print_sbyte_at::@1: scope:[print_sbyte_at]  from print_sbyte_at
  [122] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21
  [123] call print_char_at 
  to:print_sbyte_at::@5
print_sbyte_at::@5: scope:[print_sbyte_at]  from print_sbyte_at::@1
  [124] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22
  to:print_sbyte_at::@2
print_char_at: scope:[print_char_at]  from print_byte_at print_byte_at::@1 print_sbyte_at::@1 print_sbyte_at::@3
  [125] (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 )
  [125] (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) ' ' )
  [126] *((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
  [127] return 
  to:@return
print_byte_at: scope:[print_byte_at]  from print_sbyte_at::@2
  [128] (byte~) print_byte_at::$0 ← (byte)(signed byte) print_sbyte_at::b#24 >> (byte/signed byte/word/signed word/dword/signed dword) 4
  [129] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0)
  [130] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0
  [131] call print_char_at 
  to:print_byte_at::@1
print_byte_at::@1: scope:[print_byte_at]  from print_byte_at
  [132] (byte~) print_byte_at::$2 ← (byte)(signed byte) print_sbyte_at::b#24 & (byte/signed byte/word/signed word/dword/signed dword) 15
  [133] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte/signed byte/word/signed word/dword/signed dword) 1
  [134] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2)
  [135] call print_char_at 
  to:print_byte_at::@return
print_byte_at::@return: scope:[print_byte_at]  from print_byte_at::@1
  [136] return 
  to:@return
rotate_matrix: scope:[rotate_matrix]  from anim::@13
  [137] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0
  [138] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0
  [139] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0
  asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp  }
  to:rotate_matrix::@return
rotate_matrix::@return: scope:[rotate_matrix]  from rotate_matrix
  [141] return 
  to:@return
store_matrix: scope:[store_matrix]  from anim::@27
  asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1  }
  to:store_matrix::@return
store_matrix::@return: scope:[store_matrix]  from store_matrix
  [143] return 
  to:@return
calculate_matrix: scope:[calculate_matrix]  from anim::@12
  [144] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 - (const signed byte) sz#0
  [145] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 + (const signed byte) sz#0
  [146] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 + (const signed byte) sz#0
  [147] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 - (const signed byte) sz#0
  [148] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0
  [149] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0
  [150] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0
  [151] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0
  [152] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0
  [153] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0
  [154] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0)
  [155] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10
  [156] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0)
  [157] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (signed byte~) calculate_matrix::$11
  [158] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0)
  [159] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (signed byte~) calculate_matrix::$12
  [160] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0)
  [161] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0)
  [162] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0)
  [163] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0)
  [164] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0)
  [165] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (signed byte~) calculate_matrix::$17
  [166] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0)
  [167] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0)
  [168] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0)
  [169] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0)
  [170] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0)
  [171] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (signed byte~) calculate_matrix::$22
  [172] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0)
  [173] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (signed byte~) calculate_matrix::$23
  [174] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0)
  [175] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0)
  [176] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0)
  [177] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0)
  [178] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0)
  [179] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (signed byte~) calculate_matrix::$28
  [180] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0)
  [181] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0)
  [182] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0)
  [183] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0)
  [184] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0)
  [185] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (signed byte~) calculate_matrix::$33
  [186] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0)
  [187] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (signed byte~) calculate_matrix::$34
  to:calculate_matrix::@return
calculate_matrix::@return: scope:[calculate_matrix]  from calculate_matrix
  [188] return 
  to:@return
debug_print_init: scope:[debug_print_init]  from main::@1
  [189] phi()
  [190] call print_cls 
  to:debug_print_init::@5
debug_print_init::@5: scope:[debug_print_init]  from debug_print_init
  [191] phi()
  [192] call print_str_at 
  to:debug_print_init::@6
debug_print_init::@6: scope:[debug_print_init]  from debug_print_init::@5
  [193] phi()
  [194] call print_str_at 
  to:debug_print_init::@7
debug_print_init::@7: scope:[debug_print_init]  from debug_print_init::@6
  [195] phi()
  [196] call print_str_at 
  to:debug_print_init::@8
debug_print_init::@8: scope:[debug_print_init]  from debug_print_init::@7
  [197] phi()
  [198] call print_str_at 
  to:debug_print_init::@9
debug_print_init::@9: scope:[debug_print_init]  from debug_print_init::@8
  [199] phi()
  [200] call print_str_at 
  to:debug_print_init::@10
debug_print_init::@10: scope:[debug_print_init]  from debug_print_init::@9
  [201] phi()
  [202] call print_str_at 
  to:debug_print_init::@11
debug_print_init::@11: scope:[debug_print_init]  from debug_print_init::@10
  [203] phi()
  [204] call print_str_at 
  to:debug_print_init::@12
debug_print_init::@12: scope:[debug_print_init]  from debug_print_init::@11
  [205] phi()
  [206] call print_str_at 
  to:debug_print_init::@13
debug_print_init::@13: scope:[debug_print_init]  from debug_print_init::@12
  [207] phi()
  [208] call print_str_at 
  to:debug_print_init::@14
debug_print_init::@14: scope:[debug_print_init]  from debug_print_init::@13
  [209] phi()
  [210] call print_str_at 
  to:debug_print_init::@15
debug_print_init::@15: scope:[debug_print_init]  from debug_print_init::@14
  [211] phi()
  [212] call print_str_at 
  to:debug_print_init::@16
debug_print_init::@16: scope:[debug_print_init]  from debug_print_init::@15
  [213] phi()
  [214] call print_str_at 
  to:debug_print_init::@1
debug_print_init::@1: scope:[debug_print_init]  from debug_print_init::@16 debug_print_init::@3
  [215] (byte) debug_print_init::i#2 ← phi( debug_print_init::@16/(byte/signed byte/word/signed word/dword/signed dword) 0 debug_print_init::@3/(byte) debug_print_init::i#1 )
  [215] (byte) debug_print_init::c#2 ← phi( debug_print_init::@16/(byte/signed byte/word/signed word/dword/signed dword) 4 debug_print_init::@3/(byte) debug_print_init::c#1 )
  [216] (byte*) print_sbyte_at::at#0 ← (const byte*) debug_print_init::at_line#0 + (byte) debug_print_init::c#2
  [217] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2)
  [218] call print_sbyte_at 
  to:debug_print_init::@18
debug_print_init::@18: scope:[debug_print_init]  from debug_print_init::@1
  [219] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) debug_print_init::c#2
  [220] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2)
  [221] call print_sbyte_at 
  to:debug_print_init::@19
debug_print_init::@19: scope:[debug_print_init]  from debug_print_init::@18
  [222] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) debug_print_init::c#2
  [223] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2)
  [224] call print_sbyte_at 
  to:debug_print_init::@2
debug_print_init::@2: scope:[debug_print_init]  from debug_print_init::@19 debug_print_init::@2
  [225] (byte) debug_print_init::j#2 ← phi( debug_print_init::@2/(byte) debug_print_init::j#1 debug_print_init::@19/(byte/signed byte/word/signed word/dword/signed dword) 0 )
  [226] (byte) debug_print_init::col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) debug_print_init::i#2
  [227] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2
  [228] (byte*~) debug_print_init::$60 ← (byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2
  [229] *((byte*~) debug_print_init::$60) ← (byte) debug_print_init::col#0
  [230] (byte*~) debug_print_init::$63 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) debug_print_init::c#2
  [231] (byte*~) debug_print_init::$64 ← (byte*~) debug_print_init::$63 + (byte) debug_print_init::j#2
  [232] *((byte*~) debug_print_init::$64) ← (byte) debug_print_init::col#0
  [233] (byte*~) debug_print_init::$67 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) debug_print_init::c#2
  [234] (byte*~) debug_print_init::$68 ← (byte*~) debug_print_init::$67 + (byte) debug_print_init::j#2
  [235] *((byte*~) debug_print_init::$68) ← (byte) debug_print_init::col#0
  [236] (byte*~) debug_print_init::$71 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) debug_print_init::c#2
  [237] (byte*~) debug_print_init::$72 ← (byte*~) debug_print_init::$71 + (byte) debug_print_init::j#2
  [238] *((byte*~) debug_print_init::$72) ← (byte) debug_print_init::col#0
  [239] (byte*~) debug_print_init::$75 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) debug_print_init::c#2
  [240] (byte*~) debug_print_init::$76 ← (byte*~) debug_print_init::$75 + (byte) debug_print_init::j#2
  [241] *((byte*~) debug_print_init::$76) ← (byte) debug_print_init::col#0
  [242] (byte*~) debug_print_init::$79 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) debug_print_init::c#2
  [243] (byte*~) debug_print_init::$80 ← (byte*~) debug_print_init::$79 + (byte) debug_print_init::j#2
  [244] *((byte*~) debug_print_init::$80) ← (byte) debug_print_init::col#0
  [245] (byte*~) debug_print_init::$83 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) debug_print_init::c#2
  [246] (byte*~) debug_print_init::$84 ← (byte*~) debug_print_init::$83 + (byte) debug_print_init::j#2
  [247] *((byte*~) debug_print_init::$84) ← (byte) debug_print_init::col#0
  [248] (byte*~) debug_print_init::$87 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) debug_print_init::c#2
  [249] (byte*~) debug_print_init::$88 ← (byte*~) debug_print_init::$87 + (byte) debug_print_init::j#2
  [250] *((byte*~) debug_print_init::$88) ← (byte) debug_print_init::col#0
  [251] (byte*~) debug_print_init::$91 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) debug_print_init::c#2
  [252] (byte*~) debug_print_init::$92 ← (byte*~) debug_print_init::$91 + (byte) debug_print_init::j#2
  [253] *((byte*~) debug_print_init::$92) ← (byte) debug_print_init::col#0
  [254] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2
  [255] if((byte) debug_print_init::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto debug_print_init::@2
  to:debug_print_init::@3
debug_print_init::@3: scope:[debug_print_init]  from debug_print_init::@2
  [256] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4
  [257] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2
  [258] if((byte) debug_print_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print_init::@1
  to:debug_print_init::@return
debug_print_init::@return: scope:[debug_print_init]  from debug_print_init::@3
  [259] return 
  to:@return
print_str_at: scope:[print_str_at]  from debug_print_init::@10 debug_print_init::@11 debug_print_init::@12 debug_print_init::@13 debug_print_init::@14 debug_print_init::@15 debug_print_init::@16 debug_print_init::@5 debug_print_init::@6 debug_print_init::@7 debug_print_init::@8 debug_print_init::@9
  [260] (byte*) print_str_at::at#15 ← phi( debug_print_init::@10/(const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 18 debug_print_init::@11/(const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 19 debug_print_init::@12/(const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 20 debug_print_init::@13/(const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 21 debug_print_init::@14/(const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 22 debug_print_init::@15/(const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 23 debug_print_init::@16/(const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24 debug_print_init::@5/(const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 34 debug_print_init::@6/(const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 34 debug_print_init::@7/(const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 34 debug_print_init::@8/(const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 16 debug_print_init::@9/(const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 17 )
  [260] (byte*) print_str_at::str#15 ← phi( debug_print_init::@10/(const string) debug_print_init::str5 debug_print_init::@11/(const string) debug_print_init::str6 debug_print_init::@12/(const string) debug_print_init::str7 debug_print_init::@13/(const string) debug_print_init::str8 debug_print_init::@14/(const string) debug_print_init::str9 debug_print_init::@15/(const string) debug_print_init::str10 debug_print_init::@16/(const string) debug_print_init::str11 debug_print_init::@5/(const string) debug_print_init::str debug_print_init::@6/(const string) debug_print_init::str1 debug_print_init::@7/(const string) debug_print_init::str2 debug_print_init::@8/(const string) debug_print_init::str3 debug_print_init::@9/(const string) debug_print_init::str4 )
  to:print_str_at::@1
print_str_at::@1: scope:[print_str_at]  from print_str_at print_str_at::@2
  [261] (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 )
  [261] (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 )
  [262] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2
  to:print_str_at::@return
print_str_at::@return: scope:[print_str_at]  from print_str_at::@1
  [263] return 
  to:@return
print_str_at::@2: scope:[print_str_at]  from print_str_at::@1
  [264] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13)
  [265] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13
  [266] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13
  to:print_str_at::@1
print_cls: scope:[print_cls]  from debug_print_init
  [267] phi()
  to:print_cls::@1
print_cls::@1: scope:[print_cls]  from print_cls print_cls::@1
  [268] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 )
  [269] *((byte*) print_cls::sc#2) ← (byte) ' '
  [270] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
  [271] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls::@1
  [272] return 
  to:@return
sprites_init: scope:[sprites_init]  from main
  [273] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255
  to:sprites_init::@1
sprites_init::@1: scope:[sprites_init]  from sprites_init sprites_init::@1
  [274] (byte) sprites_init::i#2 ← phi( sprites_init/(byte/signed byte/word/signed word/dword/signed dword) 0 sprites_init::@1/(byte) sprites_init::i#1 )
  [275] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64
  [276] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0
  [277] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2
  [278] if((byte) sprites_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto sprites_init::@1
  to:sprites_init::@return
sprites_init::@return: scope:[sprites_init]  from sprites_init::@1
  [279] return 
  to:@return

null depth in calling loop Loop head: debug_print::@1 tails: debug_print::@32 blocks: debug_print::@32 debug_print::@31 debug_print::@30 debug_print::@29 debug_print::@28 debug_print::@27 debug_print::@1  in scope print_sbyte_at
null depth in calling loop Loop head: debug_print::@1 tails: debug_print::@32 blocks: debug_print::@32 debug_print::@31 debug_print::@30 debug_print::@29 debug_print::@28 debug_print::@27 debug_print::@1  in scope print_sbyte_at
null depth in calling loop Loop head: debug_print::@1 tails: debug_print::@32 blocks: debug_print::@32 debug_print::@31 debug_print::@30 debug_print::@29 debug_print::@28 debug_print::@27 debug_print::@1  in scope print_sbyte_at
null depth in calling loop Loop head: debug_print::@1 tails: debug_print::@32 blocks: debug_print::@32 debug_print::@31 debug_print::@30 debug_print::@29 debug_print::@28 debug_print::@27 debug_print::@1  in scope print_sbyte_at
null depth in calling loop Loop head: debug_print::@1 tails: debug_print::@32 blocks: debug_print::@32 debug_print::@31 debug_print::@30 debug_print::@29 debug_print::@28 debug_print::@27 debug_print::@1  in scope print_sbyte_at
null depth in calling loop Loop head: debug_print::@1 tails: debug_print::@32 blocks: debug_print::@32 debug_print::@31 debug_print::@30 debug_print::@29 debug_print::@28 debug_print::@27 debug_print::@1  in scope print_sbyte_at

VARIABLE REGISTER WEIGHTS
(byte*) BGCOL
(byte*) BGCOL1
(byte*) BGCOL2
(byte*) BGCOL3
(byte*) BGCOL4
(byte) BLACK
(byte) BLUE
(byte*) BORDERCOL
(byte) BROWN
(byte*) CHARGEN
(byte*) CIA1_INTERRUPT
(byte*) CIA1_PORT_A
(byte*) CIA1_PORT_A_DDR
(byte*) CIA1_PORT_B
(byte*) CIA1_PORT_B_DDR
(byte*) CIA2_INTERRUPT
(byte*) CIA2_PORT_A
(byte*) CIA2_PORT_A_DDR
(byte*) CIA2_PORT_B
(byte*) CIA2_PORT_B_DDR
(byte) CIA_INTERRUPT_CLEAR
(byte*) COLS
(signed byte*) COSH
(byte*) COSH_HI
(byte*) COSH_LO
(signed byte*) COSQ
(byte*) COSQ_HI
(byte*) COSQ_LO
(byte) CYAN
(byte*) D011
(byte*) D016
(byte*) D018
(byte) DARK_GREY
(byte) GREEN
(byte) GREY
(void()**) HARDWARE_IRQ
(byte) IRQ_COLLISION_BG
(byte) IRQ_COLLISION_SPRITE
(byte*) IRQ_ENABLE
(byte) IRQ_LIGHTPEN
(byte) IRQ_RASTER
(byte*) IRQ_STATUS
(void()**) KERNEL_IRQ
(byte*) LIGHTPEN_X
(byte*) LIGHTPEN_Y
(byte) LIGHT_BLUE
(byte) LIGHT_GREEN
(byte) LIGHT_GREY
(byte) ORANGE
(signed byte*) PERSP_Z
(byte) PINK
(byte*) PROCPORT
(byte) PROCPORT_BASIC_KERNEL_IO
(byte*) PROCPORT_DDR
(byte) PROCPORT_DDR_MEMORY_MASK
(byte) PROCPORT_KERNEL_IO
(byte) PROCPORT_RAM_ALL
(byte) PROCPORT_RAM_CHARROM
(byte) PROCPORT_RAM_IO
(byte) PURPLE
(byte*) RASTER
(byte) RED
(byte*) SCREEN
(signed byte*) SINH
(byte*) SINH_HI
(byte*) SINH_LO
(signed byte*) SINQ
(byte*) SINQ_HI
(byte*) SINQ_LO
(byte*) SPRITE
(byte*) SPRITES_COLS
(byte*) SPRITES_ENABLE
(byte*) SPRITES_EXPAND_X
(byte*) SPRITES_EXPAND_Y
(byte*) SPRITES_MC
(byte*) SPRITES_MC1
(byte*) SPRITES_MC2
(byte*) SPRITES_PRIORITY
(byte*) SPRITES_XMSB
(byte*) SPRITES_XPOS
(byte*) SPRITES_YPOS
(word) SPRITE_PTRS
(byte) VIC_BMM
(byte*) VIC_CONTROL
(byte*) VIC_CONTROL2
(byte) VIC_CSEL
(byte) VIC_DEN
(byte) VIC_ECM
(byte) VIC_MCM
(byte*) VIC_MEMORY
(byte) VIC_RSEL
(byte) VIC_RST8
(byte) WHITE
(byte) YELLOW
(void()) anim()
(byte/word/signed word/dword/signed dword~) anim::$10 202.0
(byte/word/signed word/dword/signed dword~) anim::$8 202.0
(byte) anim::i
(byte) anim::i#1 151.5
(byte) anim::i#2 71.29411764705881
(byte) anim::i2
(byte) anim::i2#0 75.75
(void()) calculate_matrix((signed byte) calculate_matrix::sx , (signed byte) calculate_matrix::sy , (signed byte) calculate_matrix::sz)
(signed byte~) calculate_matrix::$10 4.0
(signed byte~) calculate_matrix::$11 4.0
(signed byte~) calculate_matrix::$12 4.0
(signed byte~) calculate_matrix::$13 4.0
(signed byte~) calculate_matrix::$14 4.0
(signed byte~) calculate_matrix::$15 4.0
(signed byte~) calculate_matrix::$16 4.0
(signed byte~) calculate_matrix::$17 4.0
(signed byte~) calculate_matrix::$18 4.0
(signed byte~) calculate_matrix::$19 4.0
(signed byte~) calculate_matrix::$20 4.0
(signed byte~) calculate_matrix::$21 4.0
(signed byte~) calculate_matrix::$22 4.0
(signed byte~) calculate_matrix::$23 4.0
(signed byte~) calculate_matrix::$24 4.0
(signed byte~) calculate_matrix::$25 4.0
(signed byte~) calculate_matrix::$26 4.0
(signed byte~) calculate_matrix::$27 4.0
(signed byte~) calculate_matrix::$28 4.0
(signed byte~) calculate_matrix::$29 4.0
(signed byte~) calculate_matrix::$30 4.0
(signed byte~) calculate_matrix::$31 4.0
(signed byte~) calculate_matrix::$32 4.0
(signed byte~) calculate_matrix::$33 4.0
(signed byte~) calculate_matrix::$34 4.0
(signed byte) calculate_matrix::sx
(signed byte) calculate_matrix::sx#0 2.4545454545454546
(signed byte) calculate_matrix::sy
(signed byte) calculate_matrix::sy#0 1.5333333333333332
(signed byte) calculate_matrix::sz
(signed byte) calculate_matrix::t1
(signed byte) calculate_matrix::t1#0 0.8333333333333333
(signed byte) calculate_matrix::t10
(signed byte) calculate_matrix::t10#0 0.18181818181818182
(signed byte) calculate_matrix::t2
(signed byte) calculate_matrix::t2#0 0.9090909090909092
(signed byte) calculate_matrix::t3
(signed byte) calculate_matrix::t3#0 0.29411764705882354
(signed byte) calculate_matrix::t4
(signed byte) calculate_matrix::t4#0 0.30303030303030304
(signed byte) calculate_matrix::t5
(signed byte) calculate_matrix::t5#0 0.29411764705882354
(signed byte) calculate_matrix::t6
(signed byte) calculate_matrix::t6#0 0.3125
(signed byte) calculate_matrix::t7
(signed byte) calculate_matrix::t7#0 0.30303030303030304
(signed byte) calculate_matrix::t8
(signed byte) calculate_matrix::t8#0 0.30303030303030304
(signed byte) calculate_matrix::t9
(signed byte) calculate_matrix::t9#0 0.1764705882352941
(void()) debug_print()
(byte*) debug_print::at_line
(byte) debug_print::c
(byte) debug_print::c#1 67.33333333333333
(byte) debug_print::c#2 42.52631578947369
(byte) debug_print::i
(byte) debug_print::i#1 151.5
(byte) debug_print::i#2 40.4
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos10_$0
(byte*~) debug_print::print_sbyte_pos10_$1
(byte*~) debug_print::print_sbyte_pos10_$2
(byte) debug_print::print_sbyte_pos10_col
(byte) debug_print::print_sbyte_pos10_row
(signed byte) debug_print::print_sbyte_pos10_sb
(signed byte) debug_print::print_sbyte_pos10_sb#0 4.0
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos11_$0
(byte*~) debug_print::print_sbyte_pos11_$1
(byte*~) debug_print::print_sbyte_pos11_$2
(byte) debug_print::print_sbyte_pos11_col
(byte) debug_print::print_sbyte_pos11_row
(signed byte) debug_print::print_sbyte_pos11_sb
(signed byte) debug_print::print_sbyte_pos11_sb#0 4.0
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos12_$0
(byte*~) debug_print::print_sbyte_pos12_$1
(byte*~) debug_print::print_sbyte_pos12_$2
(byte) debug_print::print_sbyte_pos12_col
(byte) debug_print::print_sbyte_pos12_row
(signed byte) debug_print::print_sbyte_pos12_sb
(signed byte) debug_print::print_sbyte_pos12_sb#0 4.0
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos1_$0
(byte*~) debug_print::print_sbyte_pos1_$1
(byte*~) debug_print::print_sbyte_pos1_$2
(byte) debug_print::print_sbyte_pos1_col
(byte) debug_print::print_sbyte_pos1_row
(signed byte) debug_print::print_sbyte_pos1_sb
(signed byte) debug_print::print_sbyte_pos1_sb#0 4.0
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos2_$0
(byte*~) debug_print::print_sbyte_pos2_$1
(byte*~) debug_print::print_sbyte_pos2_$2
(byte) debug_print::print_sbyte_pos2_col
(byte) debug_print::print_sbyte_pos2_row
(signed byte) debug_print::print_sbyte_pos2_sb
(signed byte) debug_print::print_sbyte_pos2_sb#0 4.0
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos3_$0
(byte*~) debug_print::print_sbyte_pos3_$1
(byte*~) debug_print::print_sbyte_pos3_$2
(byte) debug_print::print_sbyte_pos3_col
(byte) debug_print::print_sbyte_pos3_row
(signed byte) debug_print::print_sbyte_pos3_sb
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos4_$0
(byte*~) debug_print::print_sbyte_pos4_$1
(byte*~) debug_print::print_sbyte_pos4_$2
(byte) debug_print::print_sbyte_pos4_col
(byte) debug_print::print_sbyte_pos4_row
(signed byte) debug_print::print_sbyte_pos4_sb
(signed byte) debug_print::print_sbyte_pos4_sb#0 4.0
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos5_$0
(byte*~) debug_print::print_sbyte_pos5_$1
(byte*~) debug_print::print_sbyte_pos5_$2
(byte) debug_print::print_sbyte_pos5_col
(byte) debug_print::print_sbyte_pos5_row
(signed byte) debug_print::print_sbyte_pos5_sb
(signed byte) debug_print::print_sbyte_pos5_sb#0 4.0
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos6_$0
(byte*~) debug_print::print_sbyte_pos6_$1
(byte*~) debug_print::print_sbyte_pos6_$2
(byte) debug_print::print_sbyte_pos6_col
(byte) debug_print::print_sbyte_pos6_row
(signed byte) debug_print::print_sbyte_pos6_sb
(signed byte) debug_print::print_sbyte_pos6_sb#0 4.0
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos7_$0
(byte*~) debug_print::print_sbyte_pos7_$1
(byte*~) debug_print::print_sbyte_pos7_$2
(byte) debug_print::print_sbyte_pos7_col
(byte) debug_print::print_sbyte_pos7_row
(signed byte) debug_print::print_sbyte_pos7_sb
(signed byte) debug_print::print_sbyte_pos7_sb#0 4.0
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos8_$0
(byte*~) debug_print::print_sbyte_pos8_$1
(byte*~) debug_print::print_sbyte_pos8_$2
(byte) debug_print::print_sbyte_pos8_col
(byte) debug_print::print_sbyte_pos8_row
(signed byte) debug_print::print_sbyte_pos8_sb
(signed byte) debug_print::print_sbyte_pos8_sb#0 4.0
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos9_$0
(byte*~) debug_print::print_sbyte_pos9_$1
(byte*~) debug_print::print_sbyte_pos9_$2
(byte) debug_print::print_sbyte_pos9_col
(byte) debug_print::print_sbyte_pos9_row
(signed byte) debug_print::print_sbyte_pos9_sb
(signed byte) debug_print::print_sbyte_pos9_sb#0 4.0
(void()) debug_print_init()
(byte*~) debug_print_init::$59 202.0
(byte*~) debug_print_init::$60 202.0
(byte*~) debug_print_init::$63 202.0
(byte*~) debug_print_init::$64 202.0
(byte*~) debug_print_init::$67 202.0
(byte*~) debug_print_init::$68 202.0
(byte*~) debug_print_init::$71 202.0
(byte*~) debug_print_init::$72 202.0
(byte*~) debug_print_init::$75 202.0
(byte*~) debug_print_init::$76 202.0
(byte*~) debug_print_init::$79 202.0
(byte*~) debug_print_init::$80 202.0
(byte*~) debug_print_init::$83 202.0
(byte*~) debug_print_init::$84 202.0
(byte*~) debug_print_init::$87 202.0
(byte*~) debug_print_init::$88 202.0
(byte*~) debug_print_init::$91 202.0
(byte*~) debug_print_init::$92 202.0
(byte*) debug_print_init::COLS
(byte*) debug_print_init::at_cols
(byte*) debug_print_init::at_line
(byte) debug_print_init::c
(byte) debug_print_init::c#1 7.333333333333333
(byte) debug_print_init::c#2 23.512195121951223
(byte) debug_print_init::col
(byte) debug_print_init::col#0 37.40740740740741
(byte) debug_print_init::i
(byte) debug_print_init::i#1 16.5
(byte) debug_print_init::i#2 3.7142857142857144
(byte) debug_print_init::j
(byte) debug_print_init::j#1 151.5
(byte) debug_print_init::j#2 38.31034482758621
(void()) main()
(byte*) mulf_sqr1
(byte*) mulf_sqr2
(signed byte*) pp
(signed byte[8]) pps
(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at)
(byte~) print_byte_at::$0 4.0
(byte~) print_byte_at::$2 2.0
(byte*) print_byte_at::at
(byte*) print_byte_at::at#0 1.0
(byte) print_byte_at::b
(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
(byte*) print_char_cursor
(void()) print_cls()
(byte*) print_cls::sc
(byte*) print_cls::sc#1 16.5
(byte*) print_cls::sc#2 16.5
(byte[]) print_hextab
(byte*) print_line_cursor
(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 80.625
(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 0.6666666666666666
(signed byte) print_sbyte_at::b#3 22.0
(signed byte) print_sbyte_at::b#4 4.0
(signed byte) print_sbyte_at::b#5 4.0
(signed byte) print_sbyte_at::b#7 4.0
(signed byte) print_sbyte_at::b#8 4.0
(signed byte) print_sbyte_at::b#9 4.0
(byte*) print_screen
(void()) print_str_at((byte*) print_str_at::str , (byte*) print_str_at::at)
(byte*) print_str_at::at
(byte*) print_str_at::at#0 11.0
(byte*) print_str_at::at#13 11.666666666666666
(byte*) print_str_at::at#15 2.0
(byte*) print_str_at::str
(byte*) print_str_at::str#0 22.0
(byte*) print_str_at::str#13 11.5
(byte*) print_str_at::str#15 2.0
(word*) psp1
(word*) psp2
(void()) rotate_matrix((signed byte) rotate_matrix::x , (signed byte) rotate_matrix::y , (signed byte) rotate_matrix::z)
(signed byte) rotate_matrix::x
(signed byte) rotate_matrix::x#0 34.33333333333333
(signed byte) rotate_matrix::y
(signed byte) rotate_matrix::y#0 34.33333333333333
(signed byte) rotate_matrix::z
(signed byte) rotate_matrix::z#0 34.33333333333333
(signed byte[9]) rotation_matrix
(void()) sprites_init()
(byte*) sprites_init::SCREEN
(byte) sprites_init::i
(byte) sprites_init::i#1 16.5
(byte) sprites_init::i#2 14.666666666666666
(byte*) sprites_init::sprites_ptr
(void()) store_matrix()
(signed byte) sx
(signed byte) sx#10 0.38888888888888884
(signed byte) sx#3 11.0
(signed byte) sy
(signed byte) sy#10 0.3846153846153846
(signed byte) sy#3 22.0
(signed byte) sz
(signed byte*) xp
(signed byte[8]) xps
(signed byte*) xr
(signed byte[8]) xrs
(signed byte[8]) xs
(signed byte*) yp
(signed byte[8]) yps
(signed byte*) yr
(signed byte[8]) yrs
(signed byte[8]) ys
(signed byte*) zr
(signed byte[8]) zrs
(signed byte[8]) zs

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

INITIAL ASM
//SEG0 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  
//SEG1 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(bbegin)
.pc = $80d "Program"
//SEG2 Global Constants & labels
  .label SPRITES_XPOS = $d000
  .label SPRITES_YPOS = $d001
  .label RASTER = $d012
  .label SPRITES_ENABLE = $d015
  .label BORDERCOL = $d020
  .label SPRITES_COLS = $d027
  .const GREEN = 5
  .const LIGHT_BLUE = $e
  .const LIGHT_GREY = $f
  .label print_line_cursor = $400
  // The rotated point - updated by calling rotate_matrix()
  .label xr = $f0
  .label yr = $f1
  .label zr = $f2
  // The rotated point with perspective
  .label pp = $f3
  .label xp = $f4
  .label yp = $f5
  // Pointers used to multiply perspective (d/z0-z) onto x- & y-coordinates. Points into mulf_sqr1 / mulf_sqr2  
  .label psp1 = $f6
  .label psp2 = $f8
  .label SCREEN = $400
  .const sz = 0
  // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x).
  // f(x) = >(( x * x ))
  .label mulf_sqr1 = $2400
  // g(x) =  >((( 1 - x ) * ( 1 - x )))
  .label mulf_sqr2 = $2600
  // A single sprite
  .label SPRITE = $3000
  // Perspective multiplication table containing (d/(z0-z)[z] for each z-value   
  .label PERSP_Z = $2800
  // Sine and Cosine Tables   
  // Angles: $00=0, $80=PI,$100=2*PI
  // Half Sine/Cosine: signed fixed [-$20;20]
  .label SINH = $2000
  // sin(x) = cos(x+PI/2)
  // Quarter Sine/Cosine: signed fixed [-$10,$10]
  .label SINQ = $2200
  // 16 bit Sine and Cosine Tables   
  // Angles: $00=0, $80=PI,$100=2*PI
  // Half Sine/Cosine: signed fixed [-$1f,$1f]
  .label SINH_LO = $4000
  // sin(x) = cos(x+PI/2)
  .label SINH_HI = $4200
  // sin(x) = cos(x+PI/2)
  // Quarter Sine/Cosine: signed fixed [-$0f,$0f]
  .label SINQ_LO = $4400
  // sin(x) = cos(x+PI/2)
  .label SINQ_HI = $4600
  .label COSH = SINH+$40
  .label COSQ = SINQ+$40
  .label sx = 2
  .label sy = 3
//SEG3 @begin
bbegin:
  jmp b33
//SEG4 @33
b33:
//SEG5 kickasm(location (const byte*) mulf_sqr1#0) {{ .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) }     }  }}
//SEG6 kickasm(location (const byte*) mulf_sqr2#0) {{ .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) }       }  }}
//SEG7 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))     .for (var y=0; y<21; y++)         .for (var x=0;x<3; x++)             .byte pic.getSinglecolorByte(x,y)  }}
//SEG8 kickasm(location (const signed byte*) PERSP_Z#0) {{ {     .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)));     	}     } 	}  }}
//SEG9 kickasm(location (const signed byte*) SINH#0) {{ {     .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)     }     }  }}
// sin(x) = cos(x+PI/2)
//SEG10 kickasm(location (const signed byte*) SINQ#0) {{ {     .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)     }     }  }}
//SEG11 kickasm(location (const byte*) SINH_LO#0) {{ {     .var min = -$2000     .var max = $2000     .var ampl = max-min;     .for(var i=0;i<$140;i++) {         .var rad = i*2*PI/256;         .byte <(min+(ampl/2)+(ampl/2)*sin(rad))     }     }  }}
// sin(x) = cos(x+PI/2)
//SEG12 kickasm(location (const byte*) SINH_HI#0) {{ {     .var min = -$2000     .var max = $2000     .var ampl = max-min;     .for(var i=0;i<$140;i++) {         .var rad = i*2*PI/256;         .byte >(min+(ampl/2)+(ampl/2)*sin(rad))     }     }  }}
//SEG13 kickasm(location (const byte*) SINQ_LO#0) {{ {     .var min = -$1000     .var max = $1000     .var ampl = max-min;     .for(var i=0;i<$140;i++) {         .var rad = i*2*PI/256;         .byte <(min+(ampl/2)+(ampl/2)*sin(rad))     }     }  }}
//SEG14 kickasm(location (const byte*) SINQ_HI#0) {{ {     .var min = -$1000     .var max = $1000     .var ampl = max-min;     .for(var i=0;i<$140;i++) {         .var rad = i*2*PI/256;         .byte >(min+(ampl/2)+(ampl/2)*sin(rad))     }     }  }}
//SEG15 [11] call main 
  jsr main
//SEG16 [12] phi from @33 to @end [phi:@33->@end]
bend_from_b33:
  jmp bend
//SEG17 @end
bend:
//SEG18 main
main: {
  //SEG19 asm { sei  }
    sei
  //SEG20 [14] call sprites_init 
    jsr sprites_init
    jmp b1
  //SEG21 main::@1
  b1:
  //SEG22 [15] *((const word*) psp1#0) ← ((word))(const byte*) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 
    //mulf_init();
    lda #<mulf_sqr1
    sta psp1
    lda #>mulf_sqr1
    sta psp1+1
  //SEG23 [16] *((const word*) psp2#0) ← ((word))(const byte*) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 
    lda #<mulf_sqr2
    sta psp2
    lda #>mulf_sqr2
    sta psp2+1
  //SEG24 [17] call debug_print_init 
  //SEG25 [189] phi from main::@1 to debug_print_init [phi:main::@1->debug_print_init]
  debug_print_init_from_b1:
    jsr debug_print_init
  //SEG26 [18] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  b2_from_b1:
    jmp b2
  //SEG27 main::@2
  b2:
  //SEG28 [19] call anim 
  //SEG29 [21] phi from main::@2 to anim [phi:main::@2->anim]
  anim_from_b2:
    jsr anim
    jmp breturn
  //SEG30 main::@return
  breturn:
  //SEG31 [20] return 
    rts
}
//SEG32 anim
anim: {
    .label _8 = $1d
    .label _10 = $1e
    .label i2 = $1c
    .label i = 4
  //SEG33 [22] phi from anim to anim::@1 [phi:anim->anim::@1]
  b1_from_anim:
  //SEG34 [22] phi (signed byte) sy#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbsz1=vbuc1 
    lda #0
    sta sy
  //SEG35 [22] phi (signed byte) sx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#1] -- vbsz1=vbuc1 
    lda #0
    sta sx
    jmp b1
  //signed byte xmin = 0;
  //signed byte xmax = 0;
  //SEG36 anim::@1
  b1:
    jmp b4
  //SEG37 anim::@4
  b4:
  //SEG38 [23] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda RASTER
    cmp #$ff
    bne b4
    jmp b7
  //SEG39 anim::@7
  b7:
  //SEG40 [24] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto anim::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda RASTER
    cmp #$fe
    bne b7
    jmp b10
  //SEG41 anim::@10
  b10:
  //SEG42 [25] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 253) goto anim::@10 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda RASTER
    cmp #$fd
    bne b10
    jmp b12
  //SEG43 anim::@12
  b12:
  //SEG44 [26] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
  //SEG45 [27] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 -- vbsz1=vbsz2 
    lda sx
    sta calculate_matrix.sx
  //SEG46 [28] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10 -- vbsz1=vbsz2 
    lda sy
    sta calculate_matrix.sy
  //SEG47 [29] call calculate_matrix 
    jsr calculate_matrix
  //SEG48 [30] phi from anim::@12 to anim::@27 [phi:anim::@12->anim::@27]
  b27_from_b12:
    jmp b27
  //SEG49 anim::@27
  b27:
  //SEG50 [31] call store_matrix 
    jsr store_matrix
  //SEG51 [32] phi from anim::@27 to anim::@13 [phi:anim::@27->anim::@13]
  b13_from_b27:
  //SEG52 [32] phi (byte) anim::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@27->anim::@13#0] -- vbuz1=vbuc1 
    lda #0
    sta i
    jmp b13
  //SEG53 [32] phi from anim::@29 to anim::@13 [phi:anim::@29->anim::@13]
  b13_from_b29:
  //SEG54 [32] phi (byte) anim::i#2 = (byte) anim::i#1 [phi:anim::@29->anim::@13#0] -- register_copy 
    jmp b13
  //SEG55 anim::@13
  b13:
  //SEG56 [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
  //SEG57 [34] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy i
    lda xs,y
    sta rotate_matrix.x
  //SEG58 [35] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy i
    lda ys,y
    sta rotate_matrix.y
  //SEG59 [36] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy i
    lda zs,y
    sta rotate_matrix.z
  //SEG60 [37] call rotate_matrix 
    jsr rotate_matrix
    jmp b29
  //SEG61 anim::@29
  b29:
  //SEG62 [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    //if(*xr<xmin) xmin = *xr;
    //if(*xr>xmax) xmax = *xr;
    ldy i
    lda xr
    sta xrs,y
  //SEG63 [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy i
    lda yr
    sta yrs,y
  //SEG64 [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy i
    lda zr
    sta zrs,y
  //SEG65 [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy i
    lda pp
    sta pps,y
  //SEG66 [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy i
    lda xp
    sta xps,y
  //SEG67 [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy i
    lda yp
    sta yps,y
  //SEG68 [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 
    lda i
    asl
    sta i2
  //SEG69 [45] (byte/word/signed word/dword/signed dword~) anim::$8 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) xp#0) -- vbuz1=vbuc1_plus__deref_pbuc2 
    lda #$80
    clc
    adc xp
    sta _8
  //SEG70 [46] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$8 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda _8
    ldy i2
    sta SPRITES_XPOS,y
  //SEG71 [47] (byte/word/signed word/dword/signed dword~) anim::$10 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) yp#0) -- vbuz1=vbuc1_plus__deref_pbuc2 
    lda #$80
    clc
    adc yp
    sta _10
  //SEG72 [48] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$10 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda _10
    ldy i2
    sta SPRITES_YPOS,y
  //SEG73 [49] (byte) anim::i#1 ← ++ (byte) anim::i#2 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG74 [50] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@13 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #8
    bne b13_from_b29
    jmp b25
  //SEG75 anim::@25
  b25:
  //SEG76 [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 -- _deref_pbuc1=vbuc2 
    lda #LIGHT_GREY
    sta BORDERCOL
  //SEG77 [52] call debug_print 
    jsr debug_print
    jmp b30
  //SEG78 anim::@30
  b30:
  //SEG79 [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 
    lda #LIGHT_BLUE
    sta BORDERCOL
  //SEG80 [54] (signed byte) sx#3 ← (signed byte) sx#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbsz1=vbsz1_plus_2 
    // Increment angles        
    inc sx
    inc sx
  //SEG81 [55] (signed byte) sy#3 ← (signed byte) sy#10 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbsz1=vbsz1_minus_vbuc1 
    lda sy
    sec
    sbc #3
    sta sy
  //SEG82 [22] phi from anim::@30 to anim::@1 [phi:anim::@30->anim::@1]
  b1_from_b30:
  //SEG83 [22] phi (signed byte) sy#10 = (signed byte) sy#3 [phi:anim::@30->anim::@1#0] -- register_copy 
  //SEG84 [22] phi (signed byte) sx#10 = (signed byte) sx#3 [phi:anim::@30->anim::@1#1] -- register_copy 
    jmp b1
}
//SEG85 debug_print
debug_print: {
    .const print_sbyte_pos1_row = 0
    .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
  //SEG86 [56] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsz1=vbsz2 
    lda sx
    sta print_sbyte_pos1_sb
    jmp print_sbyte_pos1
  //SEG87 debug_print::print_sbyte_pos1
  print_sbyte_pos1:
  //SEG88 [57] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0 -- vbsz1=vbsz2 
    lda print_sbyte_pos1_sb
    sta print_sbyte_at.b
  //SEG89 [58] call print_sbyte_at 
  //SEG90 [114] 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:
  //SEG91 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos1_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos1_col#0 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos1_row*$28+print_sbyte_pos1_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos1_row*$28+print_sbyte_pos1_col
    sta print_sbyte_at.at+1
  //SEG92 [114] 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 b3
  //SEG93 debug_print::@3
  b3:
  //SEG94 [59] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsz1=vbsz2 
    lda sy
    sta print_sbyte_pos2_sb
    jmp print_sbyte_pos2
  //SEG95 debug_print::print_sbyte_pos2
  print_sbyte_pos2:
  //SEG96 [60] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 -- vbsz1=vbsz2 
    lda print_sbyte_pos2_sb
    sta print_sbyte_at.b
  //SEG97 [61] call print_sbyte_at 
  //SEG98 [114] 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:
  //SEG99 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos2_col#0 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
    sta print_sbyte_at.at+1
  //SEG100 [114] 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
  //SEG101 [62] 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
  //SEG102 debug_print::print_sbyte_pos3
  print_sbyte_pos3:
  //SEG103 [63] call print_sbyte_at 
  //SEG104 [114] 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:
  //SEG105 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos3_col#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
    sta print_sbyte_at.at+1
  //SEG106 [114] phi (signed byte) print_sbyte_at::b#22 = (const signed byte) sz#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#1] -- vbsz1=vbsc1 
    lda #sz
    sta print_sbyte_at.b
    jsr print_sbyte_at
    jmp b5
  //SEG107 debug_print::@5
  b5:
  //SEG108 [64] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) -- vbsz1=_deref_pbsc1 
    lda rotation_matrix
    sta print_sbyte_pos4_sb
    jmp print_sbyte_pos4
  //SEG109 debug_print::print_sbyte_pos4
  print_sbyte_pos4:
  //SEG110 [65] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 -- vbsz1=vbsz2 
    lda print_sbyte_pos4_sb
    sta print_sbyte_at.b
  //SEG111 [66] call print_sbyte_at 
  //SEG112 [114] 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:
  //SEG113 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos4_col#0 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
    sta print_sbyte_at.at+1
  //SEG114 [114] 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 b6
  //SEG115 debug_print::@6
  b6:
  //SEG116 [67] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbsz1=_deref_pbsc1 
    lda rotation_matrix+1
    sta print_sbyte_pos5_sb
    jmp print_sbyte_pos5
  //SEG117 debug_print::print_sbyte_pos5
  print_sbyte_pos5:
  //SEG118 [68] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0 -- vbsz1=vbsz2 
    lda print_sbyte_pos5_sb
    sta print_sbyte_at.b
  //SEG119 [69] call print_sbyte_at 
  //SEG120 [114] 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:
  //SEG121 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos5_col#0 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
    sta print_sbyte_at.at+1
  //SEG122 [114] 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 b7
  //SEG123 debug_print::@7
  b7:
  //SEG124 [70] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbsz1=_deref_pbsc1 
    lda rotation_matrix+2
    sta print_sbyte_pos6_sb
    jmp print_sbyte_pos6
  //SEG125 debug_print::print_sbyte_pos6
  print_sbyte_pos6:
  //SEG126 [71] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0 -- vbsz1=vbsz2 
    lda print_sbyte_pos6_sb
    sta print_sbyte_at.b
  //SEG127 [72] call print_sbyte_at 
  //SEG128 [114] 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:
  //SEG129 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos6_col#0 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
    sta print_sbyte_at.at+1
  //SEG130 [114] 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 b8
  //SEG131 debug_print::@8
  b8:
  //SEG132 [73] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbsz1=_deref_pbsc1 
    lda rotation_matrix+3
    sta print_sbyte_pos7_sb
    jmp print_sbyte_pos7
  //SEG133 debug_print::print_sbyte_pos7
  print_sbyte_pos7:
  //SEG134 [74] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0 -- vbsz1=vbsz2 
    lda print_sbyte_pos7_sb
    sta print_sbyte_at.b
  //SEG135 [75] call print_sbyte_at 
  //SEG136 [114] 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:
  //SEG137 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos7_col#0 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
    sta print_sbyte_at.at+1
  //SEG138 [114] 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 b9
  //SEG139 debug_print::@9
  b9:
  //SEG140 [76] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbsz1=_deref_pbsc1 
    lda rotation_matrix+4
    sta print_sbyte_pos8_sb
    jmp print_sbyte_pos8
  //SEG141 debug_print::print_sbyte_pos8
  print_sbyte_pos8:
  //SEG142 [77] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0 -- vbsz1=vbsz2 
    lda print_sbyte_pos8_sb
    sta print_sbyte_at.b
  //SEG143 [78] call print_sbyte_at 
  //SEG144 [114] 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:
  //SEG145 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos8_col#0 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
    sta print_sbyte_at.at+1
  //SEG146 [114] 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 b10
  //SEG147 debug_print::@10
  b10:
  //SEG148 [79] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbsz1=_deref_pbsc1 
    lda rotation_matrix+5
    sta print_sbyte_pos9_sb
    jmp print_sbyte_pos9
  //SEG149 debug_print::print_sbyte_pos9
  print_sbyte_pos9:
  //SEG150 [80] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0 -- vbsz1=vbsz2 
    lda print_sbyte_pos9_sb
    sta print_sbyte_at.b
  //SEG151 [81] call print_sbyte_at 
  //SEG152 [114] 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:
  //SEG153 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos9_col#0 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
    sta print_sbyte_at.at+1
  //SEG154 [114] 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 b11
  //SEG155 debug_print::@11
  b11:
  //SEG156 [82] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbsz1=_deref_pbsc1 
    lda rotation_matrix+6
    sta print_sbyte_pos10_sb
    jmp print_sbyte_pos10
  //SEG157 debug_print::print_sbyte_pos10
  print_sbyte_pos10:
  //SEG158 [83] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0 -- vbsz1=vbsz2 
    lda print_sbyte_pos10_sb
    sta print_sbyte_at.b
  //SEG159 [84] call print_sbyte_at 
  //SEG160 [114] 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:
  //SEG161 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos10_col#0 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
    sta print_sbyte_at.at+1
  //SEG162 [114] 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 b12
  //SEG163 debug_print::@12
  b12:
  //SEG164 [85] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbsz1=_deref_pbsc1 
    lda rotation_matrix+7
    sta print_sbyte_pos11_sb
    jmp print_sbyte_pos11
  //SEG165 debug_print::print_sbyte_pos11
  print_sbyte_pos11:
  //SEG166 [86] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0 -- vbsz1=vbsz2 
    lda print_sbyte_pos11_sb
    sta print_sbyte_at.b
  //SEG167 [87] call print_sbyte_at 
  //SEG168 [114] 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:
  //SEG169 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos11_col#0 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
    sta print_sbyte_at.at+1
  //SEG170 [114] 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 b13
  //SEG171 debug_print::@13
  b13:
  //SEG172 [88] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbsz1=_deref_pbsc1 
    lda rotation_matrix+8
    sta print_sbyte_pos12_sb
    jmp print_sbyte_pos12
  //SEG173 debug_print::print_sbyte_pos12
  print_sbyte_pos12:
  //SEG174 [89] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0 -- vbsz1=vbsz2 
    lda print_sbyte_pos12_sb
    sta print_sbyte_at.b
  //SEG175 [90] call print_sbyte_at 
  //SEG176 [114] 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:
  //SEG177 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos12_col#0 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
    sta print_sbyte_at.at+1
  //SEG178 [114] 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
  //SEG179 [91] 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:
  //SEG180 [91] phi (byte) debug_print::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print::print_sbyte_pos12->debug_print::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
  //SEG181 [91] phi (byte) debug_print::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:debug_print::print_sbyte_pos12->debug_print::@1#1] -- vbuz1=vbuc1 
    lda #4
    sta c
    jmp b1
  //SEG182 [91] phi from debug_print::@32 to debug_print::@1 [phi:debug_print::@32->debug_print::@1]
  b1_from_b32:
  //SEG183 [91] phi (byte) debug_print::i#2 = (byte) debug_print::i#1 [phi:debug_print::@32->debug_print::@1#0] -- register_copy 
  //SEG184 [91] phi (byte) debug_print::c#2 = (byte) debug_print::c#1 [phi:debug_print::@32->debug_print::@1#1] -- register_copy 
    jmp b1
  //SEG185 debug_print::@1
  b1:
  //SEG186 [92] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line
    sta print_sbyte_at.at
    lda #>at_line
    adc #0
    sta print_sbyte_at.at+1
  //SEG187 [93] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy i
    lda xrs,y
    sta print_sbyte_at.b
  //SEG188 [94] call print_sbyte_at 
  //SEG189 [114] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at]
  print_sbyte_at_from_b1:
  //SEG190 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#15 [phi:debug_print::@1->print_sbyte_at#0] -- register_copy 
  //SEG191 [114] 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 b27
  //SEG192 debug_print::@27
  b27:
  //SEG193 [95] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*1
    sta print_sbyte_at.at
    lda #>at_line+$28*1
    adc #0
    sta print_sbyte_at.at+1
  //SEG194 [96] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy i
    lda yrs,y
    sta print_sbyte_at.b
  //SEG195 [97] call print_sbyte_at 
  //SEG196 [114] phi from debug_print::@27 to print_sbyte_at [phi:debug_print::@27->print_sbyte_at]
  print_sbyte_at_from_b27:
  //SEG197 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#16 [phi:debug_print::@27->print_sbyte_at#0] -- register_copy 
  //SEG198 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#17 [phi:debug_print::@27->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b28
  //SEG199 debug_print::@28
  b28:
  //SEG200 [98] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*2
    sta print_sbyte_at.at
    lda #>at_line+$28*2
    adc #0
    sta print_sbyte_at.at+1
  //SEG201 [99] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy i
    lda zrs,y
    sta print_sbyte_at.b
  //SEG202 [100] call print_sbyte_at 
  //SEG203 [114] phi from debug_print::@28 to print_sbyte_at [phi:debug_print::@28->print_sbyte_at]
  print_sbyte_at_from_b28:
  //SEG204 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#17 [phi:debug_print::@28->print_sbyte_at#0] -- register_copy 
  //SEG205 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#18 [phi:debug_print::@28->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b29
  //SEG206 debug_print::@29
  b29:
  //SEG207 [101] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*3
    sta print_sbyte_at.at
    lda #>at_line+$28*3
    adc #0
    sta print_sbyte_at.at+1
  //SEG208 [102] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy i
    lda pps,y
    sta print_sbyte_at.b
  //SEG209 [103] call print_sbyte_at 
  //SEG210 [114] phi from debug_print::@29 to print_sbyte_at [phi:debug_print::@29->print_sbyte_at]
  print_sbyte_at_from_b29:
  //SEG211 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#18 [phi:debug_print::@29->print_sbyte_at#0] -- register_copy 
  //SEG212 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#19 [phi:debug_print::@29->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b30
  //SEG213 debug_print::@30
  b30:
  //SEG214 [104] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*4
    sta print_sbyte_at.at
    lda #>at_line+$28*4
    adc #0
    sta print_sbyte_at.at+1
  //SEG215 [105] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy i
    lda xps,y
    sta print_sbyte_at.b
  //SEG216 [106] call print_sbyte_at 
  //SEG217 [114] phi from debug_print::@30 to print_sbyte_at [phi:debug_print::@30->print_sbyte_at]
  print_sbyte_at_from_b30:
  //SEG218 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#19 [phi:debug_print::@30->print_sbyte_at#0] -- register_copy 
  //SEG219 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#20 [phi:debug_print::@30->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b31
  //SEG220 debug_print::@31
  b31:
  //SEG221 [107] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*5
    sta print_sbyte_at.at
    lda #>at_line+$28*5
    adc #0
    sta print_sbyte_at.at+1
  //SEG222 [108] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy i
    lda yps,y
    sta print_sbyte_at.b
  //SEG223 [109] call print_sbyte_at 
  //SEG224 [114] phi from debug_print::@31 to print_sbyte_at [phi:debug_print::@31->print_sbyte_at]
  print_sbyte_at_from_b31:
  //SEG225 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#20 [phi:debug_print::@31->print_sbyte_at#0] -- register_copy 
  //SEG226 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#21 [phi:debug_print::@31->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b32
  //SEG227 debug_print::@32
  b32:
  //SEG228 [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 
    lda #4
    clc
    adc c
    sta c
  //SEG229 [111] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG230 [112] if((byte) debug_print::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #8
    bne b1_from_b32
    jmp breturn
  //SEG231 debug_print::@return
  breturn:
  //SEG232 [113] return 
    rts
}
//SEG233 print_sbyte_at
// Print a signed byte as hex at a specific screen position
// print_sbyte_at(signed byte zeropage(9) b, byte* zeropage(7) at)
print_sbyte_at: {
    .label b = 9
    .label at = 7
  //SEG234 [115] if((signed byte) print_sbyte_at::b#22<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1 -- vbsz1_lt_0_then_la1 
    lda b
    bmi b1
    jmp b3
  //SEG235 print_sbyte_at::@3
  b3:
  //SEG236 [116] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21 -- pbuz1=pbuz2 
    lda at
    sta print_char_at.at
    lda at+1
    sta print_char_at.at+1
  //SEG237 [117] call print_char_at 
  //SEG238 [125] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at]
  print_char_at_from_b3:
  //SEG239 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy 
  //SEG240 [125] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 
    lda #' '
    sta print_char_at.ch
    jsr print_char_at
  //SEG241 [118] phi from print_sbyte_at::@3 print_sbyte_at::@5 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2]
  b2_from_b3:
  b2_from_b5:
  //SEG242 [118] phi (signed byte) print_sbyte_at::b#24 = (signed byte) print_sbyte_at::b#22 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2#0] -- register_copy 
    jmp b2
  //SEG243 print_sbyte_at::@2
  b2:
  //SEG244 [119] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz2_plus_1 
    lda at
    clc
    adc #1
    sta print_byte_at.at
    lda at+1
    adc #0
    sta print_byte_at.at+1
  //SEG245 [120] call print_byte_at 
    jsr print_byte_at
    jmp breturn
  //SEG246 print_sbyte_at::@return
  breturn:
  //SEG247 [121] return 
    rts
  //SEG248 print_sbyte_at::@1
  b1:
  //SEG249 [122] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21 -- pbuz1=pbuz2 
    lda at
    sta print_char_at.at
    lda at+1
    sta print_char_at.at+1
  //SEG250 [123] call print_char_at 
  //SEG251 [125] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at]
  print_char_at_from_b1:
  //SEG252 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy 
  //SEG253 [125] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 
    lda #'-'
    sta print_char_at.ch
    jsr print_char_at
    jmp b5
  //SEG254 print_sbyte_at::@5
  b5:
  //SEG255 [124] (signed byte) print_sbyte_at::b#0 ← - (signed byte) print_sbyte_at::b#22 -- vbsz1=_neg_vbsz1 
    lda b
    eor #$ff
    clc
    adc #1
    sta b
    jmp b2_from_b5
}
//SEG256 print_char_at
// Print a single char
// print_char_at(byte zeropage($a) ch, byte* zeropage($b) at)
print_char_at: {
    .label at = $b
    .label ch = $a
  //SEG257 [126] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 
    lda ch
    ldy #0
    sta (at),y
    jmp breturn
  //SEG258 print_char_at::@return
  breturn:
  //SEG259 [127] return 
    rts
}
//SEG260 print_byte_at
// Print a byte as HEX at a specific position
// print_byte_at(byte* zeropage($2a) at)
print_byte_at: {
    .label _0 = $2c
    .label _2 = $2d
    .label at = $2a
  //SEG261 [128] (byte~) print_byte_at::$0 ← (byte)(signed byte) print_sbyte_at::b#24 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 
    lda print_sbyte_at.b
    lsr
    lsr
    lsr
    lsr
    sta _0
  //SEG262 [129] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy _0
    lda print_hextab,y
    sta print_char_at.ch
  //SEG263 [130] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 -- pbuz1=pbuz2 
    lda at
    sta print_char_at.at
    lda at+1
    sta print_char_at.at+1
  //SEG264 [131] call print_char_at 
  //SEG265 [125] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at]
  print_char_at_from_print_byte_at:
  //SEG266 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy 
  //SEG267 [125] 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
  //SEG268 print_byte_at::@1
  b1:
  //SEG269 [132] (byte~) print_byte_at::$2 ← (byte)(signed byte) print_sbyte_at::b#24 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 
    lda #$f
    and print_sbyte_at.b
    sta _2
  //SEG270 [133] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz2_plus_1 
    lda at
    clc
    adc #1
    sta print_char_at.at
    lda at+1
    adc #0
    sta print_char_at.at+1
  //SEG271 [134] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy _2
    lda print_hextab,y
    sta print_char_at.ch
  //SEG272 [135] call print_char_at 
  //SEG273 [125] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at]
  print_char_at_from_b1:
  //SEG274 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy 
  //SEG275 [125] 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
  //SEG276 print_byte_at::@return
  breturn:
  //SEG277 [136] return 
    rts
}
//SEG278 rotate_matrix
// Rotate a 3D point (x,y,z) using the rotation matrix
// The rotation matrix is prepared by calling prepare_matrix() 
// The passed points must be in the interval [-$3f;$3f].
// Implemented in assembler to utilize seriously fast multiplication 
// rotate_matrix(signed byte zeropage($19) x, signed byte zeropage($1a) y, signed byte zeropage($1b) z)
rotate_matrix: {
    .label x = $19
    .label y = $1a
    .label z = $1b
  //SEG279 [137] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsz1 
    lda x
    sta xr
  //SEG280 [138] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsz1 
    lda y
    sta yr
  //SEG281 [139] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 -- _deref_pbsc1=vbsz1 
    lda z
    sta zr
  //SEG282 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
  //SEG283 rotate_matrix::@return
  breturn:
  //SEG284 [141] return 
    rts
}
//SEG285 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: {
  //SEG286 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
  //SEG287 store_matrix::@return
  breturn:
  //SEG288 [143] return 
    rts
}
//SEG289 calculate_matrix
// Prepare the 3x3 rotation matrix into rotation_matrix[]
// Angles sx, sy, sz are based on 2*PI=$100 
// Method described in C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt
// calculate_matrix(signed byte zeropage($17) sx, signed byte zeropage($18) sy)
calculate_matrix: {
    .label _10 = $38
    .label _11 = $39
    .label _12 = $3a
    .label _13 = $3b
    .label _14 = $3c
    .label _15 = $3d
    .label _16 = $3e
    .label _17 = $3f
    .label _18 = $40
    .label _19 = $41
    .label _20 = $42
    .label _21 = $43
    .label _22 = $44
    .label _23 = $45
    .label _24 = $46
    .label _25 = $47
    .label _26 = $48
    .label _27 = $49
    .label _28 = $4a
    .label _29 = $4b
    .label _30 = $4c
    .label _31 = $4d
    .label _32 = $4e
    .label _33 = $4f
    .label _34 = $50
    .label sx = $17
    .label sy = $18
    .label t1 = $2e
    .label t2 = $2f
    .label t3 = $30
    .label t4 = $31
    .label t5 = $32
    .label t6 = $33
    .label t7 = $34
    .label t8 = $35
    .label t9 = $36
    .label t10 = $37
  //SEG290 [144] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 - (const signed byte) sz#0 -- vbsz1=vbsz2_minus_vbsc1 
    lda sy
    sec
    sbc #sz
    sta t1
  //SEG291 [145] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 + (const signed byte) sz#0 -- vbsz1=vbsz2_plus_vbsc1 
    lda #sz
    clc
    adc sy
    sta t2
  //SEG292 [146] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 + (const signed byte) sz#0 -- vbsz1=vbsz2_plus_vbsc1 
    lda #sz
    clc
    adc sx
    sta t3
  //SEG293 [147] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 - (const signed byte) sz#0 -- vbsz1=vbsz2_minus_vbsc1 
    lda sx
    sec
    sbc #sz
    sta t4
  //SEG294 [148] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 -- vbsz1=vbsz2_plus_vbsz3 
    lda sx
    clc
    adc t2
    sta t5
  //SEG295 [149] (signed byte) calculate_matrix::t6#0 ← (signed byte) calculate_matrix::sx#0 - (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsz2_minus_vbsz3 
    lda sx
    sec
    sbc t1
    sta t6
  //SEG296 [150] (signed byte) calculate_matrix::t7#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t1#0 -- vbsz1=vbsz2_plus_vbsz3 
    lda sx
    clc
    adc t1
    sta t7
  //SEG297 [151] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsz3 
    lda t2
    sec
    sbc sx
    sta t8
  //SEG298 [152] (signed byte) calculate_matrix::t9#0 ← (signed byte) calculate_matrix::sy#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_minus_vbsz3 
    lda sy
    sec
    sbc sx
    sta t9
  //SEG299 [153] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_plus_vbsz3 
    lda sy
    clc
    adc sx
    sta t10
  //SEG300 [154] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 
    ldx t1
    ldy t2
    clc
    lda COSH,x
    adc COSH,y
    sta _10
  //SEG301 [155] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsz1 
    lda _10
    sta rotation_matrix
  //SEG302 [156] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 
    ldx t1
    ldy t2
    sec
    lda SINH,x
    sbc SINH,y
    sta _11
  //SEG303 [157] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (signed byte~) calculate_matrix::$11 -- _deref_pbsc1=vbsz1 
    lda _11
    sta rotation_matrix+1
  //SEG304 [158] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz2 
    ldy sy
    clc
    lda SINH,y
    adc SINH,y
    sta _12
  //SEG305 [159] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (signed byte~) calculate_matrix::$12 -- _deref_pbsc1=vbsz1 
    lda _12
    sta rotation_matrix+2
  //SEG306 [160] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 
    ldx t3
    ldy t4
    sec
    lda SINH,x
    sbc SINH,y
    sta _13
  //SEG307 [161] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 
    lda _13
    ldy t6
    clc
    adc COSQ,y
    sta _14
  //SEG308 [162] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda _14
    ldy t5
    sec
    sbc COSQ,y
    sta _15
  //SEG309 [163] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 
    lda _15
    ldy t8
    clc
    adc COSQ,y
    sta _16
  //SEG310 [164] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda _16
    ldy t7
    sec
    sbc COSQ,y
    sta _17
  //SEG311 [165] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (signed byte~) calculate_matrix::$17 -- _deref_pbsc1=vbsz1 
    lda _17
    sta rotation_matrix+3
  //SEG312 [166] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 
    ldx t3
    ldy t4
    clc
    lda COSH,x
    adc COSH,y
    sta _18
  //SEG313 [167] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 
    lda _18
    ldy t5
    clc
    adc SINQ,y
    sta _19
  //SEG314 [168] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda _19
    ldy t6
    sec
    sbc SINQ,y
    sta _20
  //SEG315 [169] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda _20
    ldy t7
    sec
    sbc SINQ,y
    sta _21
  //SEG316 [170] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda _21
    ldy t8
    sec
    sbc SINQ,y
    sta _22
  //SEG317 [171] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (signed byte~) calculate_matrix::$22 -- _deref_pbsc1=vbsz1 
    lda _22
    sta rotation_matrix+4
  //SEG318 [172] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 
    ldx t9
    ldy t10
    sec
    lda SINH,x
    sbc SINH,y
    sta _23
  //SEG319 [173] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (signed byte~) calculate_matrix::$23 -- _deref_pbsc1=vbsz1 
    lda _23
    sta rotation_matrix+5
  //SEG320 [174] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) -- vbsz1=pbsc1_derefidx_vbsz2_minus_pbsc1_derefidx_vbsz3 
    ldx t4
    ldy t3
    sec
    lda COSH,x
    sbc COSH,y
    sta _24
  //SEG321 [175] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 
    lda _24
    ldy t6
    clc
    adc SINQ,y
    sta _25
  //SEG322 [176] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda _25
    ldy t5
    sec
    sbc SINQ,y
    sta _26
  //SEG323 [177] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda _26
    ldy t8
    sec
    sbc SINQ,y
    sta _27
  //SEG324 [178] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda _27
    ldy t7
    sec
    sbc SINQ,y
    sta _28
  //SEG325 [179] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (signed byte~) calculate_matrix::$28 -- _deref_pbsc1=vbsz1 
    lda _28
    sta rotation_matrix+6
  //SEG326 [180] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 
    ldx t3
    ldy t4
    clc
    lda SINH,x
    adc SINH,y
    sta _29
  //SEG327 [181] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 
    lda _29
    ldy t6
    clc
    adc COSQ,y
    sta _30
  //SEG328 [182] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda _30
    ldy t5
    sec
    sbc COSQ,y
    sta _31
  //SEG329 [183] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsz1=vbsz2_plus_pbsc1_derefidx_vbsz3 
    lda _31
    ldy t7
    clc
    adc COSQ,y
    sta _32
  //SEG330 [184] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsz1=vbsz2_minus_pbsc1_derefidx_vbsz3 
    lda _32
    ldy t8
    sec
    sbc COSQ,y
    sta _33
  //SEG331 [185] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (signed byte~) calculate_matrix::$33 -- _deref_pbsc1=vbsz1 
    lda _33
    sta rotation_matrix+7
  //SEG332 [186] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) -- vbsz1=pbsc1_derefidx_vbsz2_plus_pbsc1_derefidx_vbsz3 
    ldx t9
    ldy t10
    clc
    lda COSH,x
    adc COSH,y
    sta _34
  //SEG333 [187] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (signed byte~) calculate_matrix::$34 -- _deref_pbsc1=vbsz1 
    lda _34
    sta rotation_matrix+8
    jmp breturn
  //SEG334 calculate_matrix::@return
  breturn:
  //SEG335 [188] return 
    rts
}
//SEG336 debug_print_init
debug_print_init: {
    .label COLS = $d800
    .label at_line = SCREEN+$10*$28
    .label at_cols = COLS+$10*$28
    .label _59 = $52
    .label _60 = $54
    .label _63 = $56
    .label _64 = $58
    .label _67 = $5a
    .label _68 = $5c
    .label _71 = $5e
    .label _72 = $60
    .label _75 = $62
    .label _76 = $64
    .label _79 = $66
    .label _80 = $68
    .label _83 = $6a
    .label _84 = $6c
    .label _87 = $6e
    .label _88 = $70
    .label _91 = $72
    .label _92 = $74
    .label col = $51
    .label j = $f
    .label c = $d
    .label i = $e
  //SEG337 [190] call print_cls 
  //SEG338 [267] phi from debug_print_init to print_cls [phi:debug_print_init->print_cls]
  print_cls_from_debug_print_init:
    jsr print_cls
  //SEG339 [191] phi from debug_print_init to debug_print_init::@5 [phi:debug_print_init->debug_print_init::@5]
  b5_from_debug_print_init:
    jmp b5
  //SEG340 debug_print_init::@5
  b5:
  //SEG341 [192] call print_str_at 
  //SEG342 [260] phi from debug_print_init::@5 to print_str_at [phi:debug_print_init::@5->print_str_at]
  print_str_at_from_b5:
  //SEG343 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@5->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$22
    sta print_str_at.at
    lda #>SCREEN+$22
    sta print_str_at.at+1
  //SEG344 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str [phi:debug_print_init::@5->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str_at.str
    lda #>str
    sta print_str_at.str+1
    jsr print_str_at
  //SEG345 [193] 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
  //SEG346 debug_print_init::@6
  b6:
  //SEG347 [194] call print_str_at 
  //SEG348 [260] phi from debug_print_init::@6 to print_str_at [phi:debug_print_init::@6->print_str_at]
  print_str_at_from_b6:
  //SEG349 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@6->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*1+$22
    sta print_str_at.at
    lda #>SCREEN+$28*1+$22
    sta print_str_at.at+1
  //SEG350 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str1 [phi:debug_print_init::@6->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str_at.str
    lda #>str1
    sta print_str_at.str+1
    jsr print_str_at
  //SEG351 [195] 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
  //SEG352 debug_print_init::@7
  b7:
  //SEG353 [196] call print_str_at 
  //SEG354 [260] phi from debug_print_init::@7 to print_str_at [phi:debug_print_init::@7->print_str_at]
  print_str_at_from_b7:
  //SEG355 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@7->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*2+$22
    sta print_str_at.at
    lda #>SCREEN+$28*2+$22
    sta print_str_at.at+1
  //SEG356 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str2 [phi:debug_print_init::@7->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str_at.str
    lda #>str2
    sta print_str_at.str+1
    jsr print_str_at
  //SEG357 [197] 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
  //SEG358 debug_print_init::@8
  b8:
  //SEG359 [198] call print_str_at 
  //SEG360 [260] phi from debug_print_init::@8 to print_str_at [phi:debug_print_init::@8->print_str_at]
  print_str_at_from_b8:
  //SEG361 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:debug_print_init::@8->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$10
    sta print_str_at.at
    lda #>SCREEN+$28*$10
    sta print_str_at.at+1
  //SEG362 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str3 [phi:debug_print_init::@8->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str3
    sta print_str_at.str
    lda #>str3
    sta print_str_at.str+1
    jsr print_str_at
  //SEG363 [199] 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
  //SEG364 debug_print_init::@9
  b9:
  //SEG365 [200] call print_str_at 
  //SEG366 [260] phi from debug_print_init::@9 to print_str_at [phi:debug_print_init::@9->print_str_at]
  print_str_at_from_b9:
  //SEG367 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 17 [phi:debug_print_init::@9->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$11
    sta print_str_at.at
    lda #>SCREEN+$28*$11
    sta print_str_at.at+1
  //SEG368 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str4 [phi:debug_print_init::@9->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str4
    sta print_str_at.str
    lda #>str4
    sta print_str_at.str+1
    jsr print_str_at
  //SEG369 [201] 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
  //SEG370 debug_print_init::@10
  b10:
  //SEG371 [202] call print_str_at 
  //SEG372 [260] phi from debug_print_init::@10 to print_str_at [phi:debug_print_init::@10->print_str_at]
  print_str_at_from_b10:
  //SEG373 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 18 [phi:debug_print_init::@10->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$12
    sta print_str_at.at
    lda #>SCREEN+$28*$12
    sta print_str_at.at+1
  //SEG374 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str5 [phi:debug_print_init::@10->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str5
    sta print_str_at.str
    lda #>str5
    sta print_str_at.str+1
    jsr print_str_at
  //SEG375 [203] 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
  //SEG376 debug_print_init::@11
  b11:
  //SEG377 [204] call print_str_at 
  //SEG378 [260] phi from debug_print_init::@11 to print_str_at [phi:debug_print_init::@11->print_str_at]
  print_str_at_from_b11:
  //SEG379 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 19 [phi:debug_print_init::@11->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$13
    sta print_str_at.at
    lda #>SCREEN+$28*$13
    sta print_str_at.at+1
  //SEG380 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str6 [phi:debug_print_init::@11->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str6
    sta print_str_at.str
    lda #>str6
    sta print_str_at.str+1
    jsr print_str_at
  //SEG381 [205] 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
  //SEG382 debug_print_init::@12
  b12:
  //SEG383 [206] call print_str_at 
  //SEG384 [260] phi from debug_print_init::@12 to print_str_at [phi:debug_print_init::@12->print_str_at]
  print_str_at_from_b12:
  //SEG385 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 20 [phi:debug_print_init::@12->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$14
    sta print_str_at.at
    lda #>SCREEN+$28*$14
    sta print_str_at.at+1
  //SEG386 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str7 [phi:debug_print_init::@12->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str7
    sta print_str_at.str
    lda #>str7
    sta print_str_at.str+1
    jsr print_str_at
  //SEG387 [207] 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
  //SEG388 debug_print_init::@13
  b13:
  //SEG389 [208] call print_str_at 
  //SEG390 [260] phi from debug_print_init::@13 to print_str_at [phi:debug_print_init::@13->print_str_at]
  print_str_at_from_b13:
  //SEG391 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 21 [phi:debug_print_init::@13->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$15
    sta print_str_at.at
    lda #>SCREEN+$28*$15
    sta print_str_at.at+1
  //SEG392 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str8 [phi:debug_print_init::@13->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str8
    sta print_str_at.str
    lda #>str8
    sta print_str_at.str+1
    jsr print_str_at
  //SEG393 [209] 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
  //SEG394 debug_print_init::@14
  b14:
  //SEG395 [210] call print_str_at 
  //SEG396 [260] phi from debug_print_init::@14 to print_str_at [phi:debug_print_init::@14->print_str_at]
  print_str_at_from_b14:
  //SEG397 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 22 [phi:debug_print_init::@14->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$16
    sta print_str_at.at
    lda #>SCREEN+$28*$16
    sta print_str_at.at+1
  //SEG398 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str9 [phi:debug_print_init::@14->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str9
    sta print_str_at.str
    lda #>str9
    sta print_str_at.str+1
    jsr print_str_at
  //SEG399 [211] 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
  //SEG400 debug_print_init::@15
  b15:
  //SEG401 [212] call print_str_at 
  //SEG402 [260] phi from debug_print_init::@15 to print_str_at [phi:debug_print_init::@15->print_str_at]
  print_str_at_from_b15:
  //SEG403 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 23 [phi:debug_print_init::@15->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$17
    sta print_str_at.at
    lda #>SCREEN+$28*$17
    sta print_str_at.at+1
  //SEG404 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str10 [phi:debug_print_init::@15->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str10
    sta print_str_at.str
    lda #>str10
    sta print_str_at.str+1
    jsr print_str_at
  //SEG405 [213] phi from debug_print_init::@15 to debug_print_init::@16 [phi:debug_print_init::@15->debug_print_init::@16]
  b16_from_b15:
    jmp b16
  //SEG406 debug_print_init::@16
  b16:
  //SEG407 [214] call print_str_at 
  //SEG408 [260] phi from debug_print_init::@16 to print_str_at [phi:debug_print_init::@16->print_str_at]
  print_str_at_from_b16:
  //SEG409 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24 [phi:debug_print_init::@16->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$18
    sta print_str_at.at
    lda #>SCREEN+$28*$18
    sta print_str_at.at+1
  //SEG410 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str11 [phi:debug_print_init::@16->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str11
    sta print_str_at.str
    lda #>str11
    sta print_str_at.str+1
    jsr print_str_at
  //SEG411 [215] phi from debug_print_init::@16 to debug_print_init::@1 [phi:debug_print_init::@16->debug_print_init::@1]
  b1_from_b16:
  //SEG412 [215] phi (byte) debug_print_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print_init::@16->debug_print_init::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
  //SEG413 [215] phi (byte) debug_print_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:debug_print_init::@16->debug_print_init::@1#1] -- vbuz1=vbuc1 
    lda #4
    sta c
    jmp b1
  //SEG414 [215] phi from debug_print_init::@3 to debug_print_init::@1 [phi:debug_print_init::@3->debug_print_init::@1]
  b1_from_b3:
  //SEG415 [215] 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 
  //SEG416 [215] 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
  //SEG417 debug_print_init::@1
  b1:
  //SEG418 [216] (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 c
    clc
    adc #<at_line
    sta print_sbyte_at.at
    lda #>at_line
    adc #0
    sta print_sbyte_at.at+1
  //SEG419 [217] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy i
    lda xs,y
    sta print_sbyte_at.b
  //SEG420 [218] call print_sbyte_at 
  //SEG421 [114] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at]
  print_sbyte_at_from_b1:
  //SEG422 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#0 [phi:debug_print_init::@1->print_sbyte_at#0] -- register_copy 
  //SEG423 [114] 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 b18
  //SEG424 debug_print_init::@18
  b18:
  //SEG425 [219] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*1
    sta print_sbyte_at.at
    lda #>at_line+$28*1
    adc #0
    sta print_sbyte_at.at+1
  //SEG426 [220] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy i
    lda ys,y
    sta print_sbyte_at.b
  //SEG427 [221] call print_sbyte_at 
  //SEG428 [114] phi from debug_print_init::@18 to print_sbyte_at [phi:debug_print_init::@18->print_sbyte_at]
  print_sbyte_at_from_b18:
  //SEG429 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#1 [phi:debug_print_init::@18->print_sbyte_at#0] -- register_copy 
  //SEG430 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#2 [phi:debug_print_init::@18->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b19
  //SEG431 debug_print_init::@19
  b19:
  //SEG432 [222] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*2
    sta print_sbyte_at.at
    lda #>at_line+$28*2
    adc #0
    sta print_sbyte_at.at+1
  //SEG433 [223] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy i
    lda zs,y
    sta print_sbyte_at.b
  //SEG434 [224] call print_sbyte_at 
  //SEG435 [114] phi from debug_print_init::@19 to print_sbyte_at [phi:debug_print_init::@19->print_sbyte_at]
  print_sbyte_at_from_b19:
  //SEG436 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#2 [phi:debug_print_init::@19->print_sbyte_at#0] -- register_copy 
  //SEG437 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#3 [phi:debug_print_init::@19->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
  //SEG438 [225] phi from debug_print_init::@19 to debug_print_init::@2 [phi:debug_print_init::@19->debug_print_init::@2]
  b2_from_b19:
  //SEG439 [225] phi (byte) debug_print_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print_init::@19->debug_print_init::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta j
    jmp b2
  //SEG440 [225] phi from debug_print_init::@2 to debug_print_init::@2 [phi:debug_print_init::@2->debug_print_init::@2]
  b2_from_b2:
  //SEG441 [225] 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
  //SEG442 debug_print_init::@2
  b2:
  //SEG443 [226] (byte) debug_print_init::col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) debug_print_init::i#2 -- vbuz1=vbuc1_plus_vbuz2 
    lda #8
    clc
    adc i
    sta col
  //SEG444 [227] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols
    sta _59
    lda #>at_cols
    adc #0
    sta _59+1
  //SEG445 [228] (byte*~) debug_print_init::$60 ← (byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 
    lda j
    clc
    adc _59
    sta _60
    lda #0
    adc _59+1
    sta _60+1
  //SEG446 [229] *((byte*~) debug_print_init::$60) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    ldy #0
    sta (_60),y
  //SEG447 [230] (byte*~) debug_print_init::$63 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*1
    sta _63
    lda #>at_cols+$28*1
    adc #0
    sta _63+1
  //SEG448 [231] (byte*~) debug_print_init::$64 ← (byte*~) debug_print_init::$63 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 
    lda j
    clc
    adc _63
    sta _64
    lda #0
    adc _63+1
    sta _64+1
  //SEG449 [232] *((byte*~) debug_print_init::$64) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    ldy #0
    sta (_64),y
  //SEG450 [233] (byte*~) debug_print_init::$67 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*2
    sta _67
    lda #>at_cols+$28*2
    adc #0
    sta _67+1
  //SEG451 [234] (byte*~) debug_print_init::$68 ← (byte*~) debug_print_init::$67 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 
    lda j
    clc
    adc _67
    sta _68
    lda #0
    adc _67+1
    sta _68+1
  //SEG452 [235] *((byte*~) debug_print_init::$68) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    ldy #0
    sta (_68),y
  //SEG453 [236] (byte*~) debug_print_init::$71 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*3
    sta _71
    lda #>at_cols+$28*3
    adc #0
    sta _71+1
  //SEG454 [237] (byte*~) debug_print_init::$72 ← (byte*~) debug_print_init::$71 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 
    lda j
    clc
    adc _71
    sta _72
    lda #0
    adc _71+1
    sta _72+1
  //SEG455 [238] *((byte*~) debug_print_init::$72) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    ldy #0
    sta (_72),y
  //SEG456 [239] (byte*~) debug_print_init::$75 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*4
    sta _75
    lda #>at_cols+$28*4
    adc #0
    sta _75+1
  //SEG457 [240] (byte*~) debug_print_init::$76 ← (byte*~) debug_print_init::$75 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 
    lda j
    clc
    adc _75
    sta _76
    lda #0
    adc _75+1
    sta _76+1
  //SEG458 [241] *((byte*~) debug_print_init::$76) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    ldy #0
    sta (_76),y
  //SEG459 [242] (byte*~) debug_print_init::$79 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*5
    sta _79
    lda #>at_cols+$28*5
    adc #0
    sta _79+1
  //SEG460 [243] (byte*~) debug_print_init::$80 ← (byte*~) debug_print_init::$79 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 
    lda j
    clc
    adc _79
    sta _80
    lda #0
    adc _79+1
    sta _80+1
  //SEG461 [244] *((byte*~) debug_print_init::$80) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    ldy #0
    sta (_80),y
  //SEG462 [245] (byte*~) debug_print_init::$83 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*6
    sta _83
    lda #>at_cols+$28*6
    adc #0
    sta _83+1
  //SEG463 [246] (byte*~) debug_print_init::$84 ← (byte*~) debug_print_init::$83 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 
    lda j
    clc
    adc _83
    sta _84
    lda #0
    adc _83+1
    sta _84+1
  //SEG464 [247] *((byte*~) debug_print_init::$84) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    ldy #0
    sta (_84),y
  //SEG465 [248] (byte*~) debug_print_init::$87 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*7
    sta _87
    lda #>at_cols+$28*7
    adc #0
    sta _87+1
  //SEG466 [249] (byte*~) debug_print_init::$88 ← (byte*~) debug_print_init::$87 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 
    lda j
    clc
    adc _87
    sta _88
    lda #0
    adc _87+1
    sta _88+1
  //SEG467 [250] *((byte*~) debug_print_init::$88) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    ldy #0
    sta (_88),y
  //SEG468 [251] (byte*~) debug_print_init::$91 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*8
    sta _91
    lda #>at_cols+$28*8
    adc #0
    sta _91+1
  //SEG469 [252] (byte*~) debug_print_init::$92 ← (byte*~) debug_print_init::$91 + (byte) debug_print_init::j#2 -- pbuz1=pbuz2_plus_vbuz3 
    lda j
    clc
    adc _91
    sta _92
    lda #0
    adc _91+1
    sta _92+1
  //SEG470 [253] *((byte*~) debug_print_init::$92) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    ldy #0
    sta (_92),y
  //SEG471 [254] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 -- vbuz1=_inc_vbuz1 
    inc j
  //SEG472 [255] if((byte) debug_print_init::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto debug_print_init::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda j
    cmp #4
    bne b2_from_b2
    jmp b3
  //SEG473 debug_print_init::@3
  b3:
  //SEG474 [256] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 
    lda #4
    clc
    adc c
    sta c
  //SEG475 [257] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG476 [258] if((byte) debug_print_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print_init::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #8
    bne b1_from_b3
    jmp breturn
  //SEG477 debug_print_init::@return
  breturn:
  //SEG478 [259] return 
    rts
    str: .text "sx@"
    str1: .text "sy@"
    str2: .text "sz@"
    str3: .text "x@"
    str4: .text "y@"
    str5: .text "z@"
    str6: .text "xr@"
    str7: .text "yr@"
    str8: .text "zr@"
    str9: .text "pp@"
    str10: .text "xp@"
    str11: .text "yp@"
}
//SEG479 print_str_at
// Print a string at a specific screen position
// print_str_at(byte* zeropage($10) str, byte* zeropage($12) at)
print_str_at: {
    .label at = $12
    .label str = $10
  //SEG480 [261] 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:
  //SEG481 [261] 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 
  //SEG482 [261] 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
  //SEG483 print_str_at::@1
  b1:
  //SEG484 [262] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 
    ldy #0
    lda (str),y
    cmp #'@'
    bne b2
    jmp breturn
  //SEG485 print_str_at::@return
  breturn:
  //SEG486 [263] return 
    rts
  //SEG487 print_str_at::@2
  b2:
  //SEG488 [264] *((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
  //SEG489 [265] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 -- pbuz1=_inc_pbuz1 
    inc at
    bne !+
    inc at+1
  !:
  //SEG490 [266] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 -- pbuz1=_inc_pbuz1 
    inc str
    bne !+
    inc str+1
  !:
    jmp b1_from_b2
}
//SEG491 print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    .label sc = $14
  //SEG492 [268] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
  b1_from_print_cls:
  //SEG493 [268] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor
    sta sc
    lda #>print_line_cursor
    sta sc+1
    jmp b1
  //SEG494 [268] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
  b1_from_b1:
  //SEG495 [268] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy 
    jmp b1
  //SEG496 print_cls::@1
  b1:
  //SEG497 [269] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (sc),y
  //SEG498 [270] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 
    inc sc
    bne !+
    inc sc+1
  !:
  //SEG499 [271] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 
    lda sc+1
    cmp #>print_line_cursor+$3e8
    bne b1_from_b1
    lda sc
    cmp #<print_line_cursor+$3e8
    bne b1_from_b1
    jmp breturn
  //SEG500 print_cls::@return
  breturn:
  //SEG501 [272] return 
    rts
}
//SEG502 sprites_init
// Initialize sprites
sprites_init: {
    .label SCREEN = $400
    .label sprites_ptr = SCREEN+$3f8
    .label i = $16
  //SEG503 [273] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 
    lda #$ff
    sta SPRITES_ENABLE
  //SEG504 [274] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1]
  b1_from_sprites_init:
  //SEG505 [274] phi (byte) sprites_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
    jmp b1
  //SEG506 [274] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1]
  b1_from_b1:
  //SEG507 [274] phi (byte) sprites_init::i#2 = (byte) sprites_init::i#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy 
    jmp b1
  //SEG508 sprites_init::@1
  b1:
  //SEG509 [275] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuz1=vbuc2 
    ldy i
    lda #$ff&SPRITE/$40
    sta sprites_ptr,y
  //SEG510 [276] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2 
    ldy i
    lda #GREEN
    sta SPRITES_COLS,y
  //SEG511 [277] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG512 [278] if((byte) sprites_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto sprites_init::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #8
    bne b1_from_b1
    jmp breturn
  //SEG513 sprites_init::@return
  breturn:
  //SEG514 [279] return 
    rts
}
  print_hextab: .text "0123456789abcdef"
  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
  // Positions to rotate
  xs: .byte -$34, -$34, -$34, 0, 0, $34, $34, $34
  ys: .byte -$34, 0, $34, -$34, $34, -$34, 0, $34
.pc = mulf_sqr1 "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) }
    }

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

.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)

.pc = PERSP_Z "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)));
    	}
    }
	}

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

.pc = SINQ "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 = SINH_LO "SINH_LO"
  {
    .var min = -$2000
    .var max = $2000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte <(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }

.pc = SINH_HI "SINH_HI"
  {
    .var min = -$2000
    .var max = $2000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte >(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }

.pc = SINQ_LO "SINQ_LO"
  {
    .var min = -$1000
    .var max = $1000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte <(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }

.pc = SINQ_HI "SINQ_HI"
  {
    .var min = -$1000
    .var max = $1000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte >(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }


REGISTER UPLIFT POTENTIAL REGISTERS
Statement [15] *((const word*) psp1#0) ← ((word))(const byte*) mulf_sqr1#0 [ ] ( main:11 [ ] ) always clobbers reg byte a 
Statement [16] *((const word*) psp2#0) ← ((word))(const byte*) mulf_sqr2#0 [ ] ( main:11 [ ] ) always clobbers reg byte a 
Statement [23] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ sx#10 sx#3 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ sy#10 sy#3 ]
Statement [24] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto anim::@7 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [25] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 253) goto anim::@10 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ]
Statement [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a 
Statement [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a 
Statement [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a 
Statement [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a 
Statement [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a 
Statement [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ) always clobbers reg byte a 
Statement [45] (byte/word/signed word/dword/signed dword~) anim::$8 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:28 [ anim::i2#0 ]
Statement [47] (byte/word/signed word/dword/signed dword~) anim::$10 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ) always clobbers reg byte a 
Statement [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Potential register analysis [55] sy#3 ← sy#10 - 3 missing fragment vbsxx=vbsxx_minus_vbuc1 allocation: reg byte x [ sy#10 sy#3 ] 
Potential register analysis [55] sy#3 ← sy#10 - 3 missing fragment vbsyy=vbsyy_minus_vbuc1 allocation: reg byte y [ sy#10 sy#3 ] 
MISSING FRAGMENTS
  vbsxx=vbsxx_minus_vbuc1
  vbsyy=vbsyy_minus_vbuc1
Statement [55] (signed byte) sy#3 ← (signed byte) sy#10 - (byte/signed byte/word/signed word/dword/signed dword) 3 [ sx#3 sy#3 ] ( main:11::anim:19 [ sx#3 sy#3 ] ) always clobbers reg byte a 
Statement [92] (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:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ]
Statement [95] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ) always clobbers reg byte a 
Statement [98] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ) always clobbers reg byte a 
Statement [101] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ) always clobbers reg byte a 
Statement [104] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ) always clobbers reg byte a 
Statement [107] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ) always clobbers reg byte a 
Statement [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ) always clobbers reg byte a 
Statement [116] (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:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::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:11::anim:19::debug_print:52::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:11::anim:19::debug_print:52::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:11::anim:19::debug_print:52::print_sbyte_at:103 [ 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:11::anim:19::debug_print:52::print_sbyte_at:106 [ 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:11::anim:19::debug_print:52::print_sbyte_at:109 [ 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:11::debug_print_init:17::print_sbyte_at:218 [ 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:11::debug_print_init:17::print_sbyte_at:221 [ 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:11::debug_print_init:17::print_sbyte_at:224 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ]
Statement [119] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ print_sbyte_at::b#24 print_byte_at::at#0 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:218 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:221 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:224 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] ) always clobbers reg byte a 
Statement [122] (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:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::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:11::anim:19::debug_print:52::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:11::anim:19::debug_print:52::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:11::anim:19::debug_print:52::print_sbyte_at:103 [ 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:11::anim:19::debug_print:52::print_sbyte_at:106 [ 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:11::anim:19::debug_print:52::print_sbyte_at:109 [ 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:11::debug_print_init:17::print_sbyte_at:218 [ 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:11::debug_print_init:17::print_sbyte_at:221 [ 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:11::debug_print_init:17::print_sbyte_at:224 [ 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 [124] (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:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::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:11::anim:19::debug_print:52::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:11::anim:19::debug_print:52::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:11::anim:19::debug_print:52::print_sbyte_at:103 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::debug_print_init:17::print_sbyte_at:218 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::debug_print_init:17::print_sbyte_at:221 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::debug_print_init:17::print_sbyte_at:224 [ 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 [126] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:218::print_char_at:117 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:221::print_char_at:117 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:224::print_char_at:117 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:58::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:218::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:221::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:224::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:218::print_byte_at:120::print_char_at:131 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:221::print_byte_at:120::print_char_at:131 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:224::print_byte_at:120::print_char_at:131 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::debug_print_init:17::print_sbyte_at:218::print_byte_at:120::print_char_at:135 [ debug_print_init::c#2 debug_print_init::i#2 ] main:11::debug_print_init:17::print_sbyte_at:221::print_byte_at:120::print_char_at:135 [ debug_print_init::c#2 debug_print_init::i#2 ] main:11::debug_print_init:17::print_sbyte_at:224::print_byte_at:120::print_char_at:135 [ debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ sx#10 sx#3 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ sy#10 sy#3 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:9 [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ]
Statement [128] (byte~) print_byte_at::$0 ← (byte)(signed byte) print_sbyte_at::b#24 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::debug_print_init:17::print_sbyte_at:218::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::debug_print_init:17::print_sbyte_at:221::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::debug_print_init:17::print_sbyte_at:224::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a 
Statement [130] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::debug_print_init:17::print_sbyte_at:218::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::debug_print_init:17::print_sbyte_at:221::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::debug_print_init:17::print_sbyte_at:224::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ]
Statement [132] (byte~) print_byte_at::$2 ← (byte)(signed byte) print_sbyte_at::b#24 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_byte_at::at#0 print_byte_at::$2 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:218::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:221::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:224::print_byte_at:120 [ 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 [133] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:218::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:221::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:224::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ print_byte_at::$2 ]
Statement asm { ldxzr C1: ldamulf_sqr1,x sec C2: sbcmulf_sqr2,x staC3+1 F1: ldamulf_sqr1,x sec F2: sbcmulf_sqr2,x staF3+1 I1: ldamulf_sqr1,x sec I2: sbcmulf_sqr2,x staI3+1 ldxxr ldyyr I3: lda#0 clc G1: adcmulf_sqr1,x sec G2: sbcmulf_sqr2,x clc H1: adcmulf_sqr1,y sec H2: sbcmulf_sqr2,y stazr staPP+1 PP: ldaPERSP_Z stapp stapsp1 eor#$ff stapsp2 C3: lda#0 clc A1: adcmulf_sqr1,x sec A2: sbcmulf_sqr2,x clc B1: adcmulf_sqr1,y sec B2: sbcmulf_sqr2,y staxr staXX+1 clc F3: lda#0 clc D1: adcmulf_sqr1,x sec D2: sbcmulf_sqr2,x clc E1: adcmulf_sqr1,y sec E2: sbcmulf_sqr2,y stayr tay lda(psp1),y sec sbc(psp2),y stayp XX: ldy#0 lda(psp1),y sec sbc(psp2),y staxp  } always clobbers reg byte a reg byte x reg byte y 
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ sx#10 sx#3 ]
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:3 [ sy#10 sy#3 ]
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ]
Statement asm { ldarotation_matrix+0 starotate_matrix.A1+1 eor#$ff starotate_matrix.A2+1 ldarotation_matrix+1 starotate_matrix.B1+1 eor#$ff starotate_matrix.B2+1 ldarotation_matrix+2 starotate_matrix.C1+1 eor#$ff starotate_matrix.C2+1 ldarotation_matrix+3 starotate_matrix.D1+1 eor#$ff starotate_matrix.D2+1 ldarotation_matrix+4 starotate_matrix.E1+1 eor#$ff starotate_matrix.E2+1 ldarotation_matrix+5 starotate_matrix.F1+1 eor#$ff starotate_matrix.F2+1 ldarotation_matrix+6 starotate_matrix.G1+1 eor#$ff starotate_matrix.G2+1 ldarotation_matrix+7 starotate_matrix.H1+1 eor#$ff starotate_matrix.H2+1 ldarotation_matrix+8 starotate_matrix.I1+1 eor#$ff starotate_matrix.I2+1  } always clobbers reg byte a 
Statement [144] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 - (const signed byte) sz#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ calculate_matrix::sx#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ calculate_matrix::sy#0 ]
Statement [145] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 + (const signed byte) sz#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ calculate_matrix::t1#0 ]
Statement [146] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 + (const signed byte) sz#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ calculate_matrix::t2#0 ]
Statement [147] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 - (const signed byte) sz#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 ] ( main:11::anim:19::calculate_matrix:29 [ 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 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ calculate_matrix::t3#0 ]
Statement [148] (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:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ calculate_matrix::t4#0 ]
Statement [149] (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:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ calculate_matrix::t5#0 ]
Statement [150] (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:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ calculate_matrix::t6#0 ]
Statement [151] (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:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ calculate_matrix::t7#0 ]
Statement [152] (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:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:53 [ calculate_matrix::t8#0 ]
Statement [153] (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:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:54 [ calculate_matrix::t9#0 ]
Statement [154] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:55 [ calculate_matrix::t10#0 ]
Statement [156] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [158] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [160] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [161] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ( main:11::anim:19::calculate_matrix:29 [ 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 
Potential register analysis [162] calculate_matrix::$15 ← calculate_matrix::$14 - *(COSQ#0 + calculate_matrix::t5#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte x [ calculate_matrix::$14 ] reg byte a [ calculate_matrix::$15 ] reg byte x [ calculate_matrix::t5#0 ] 
Potential register analysis [162] calculate_matrix::$15 ← calculate_matrix::$14 - *(COSQ#0 + calculate_matrix::t5#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte y [ calculate_matrix::$14 ] reg byte a [ calculate_matrix::$15 ] reg byte y [ calculate_matrix::t5#0 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [162] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [163] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ( main:11::anim:19::calculate_matrix:29 [ 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 
Potential register analysis [164] calculate_matrix::$17 ← calculate_matrix::$16 - *(COSQ#0 + calculate_matrix::t7#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte x [ calculate_matrix::$16 ] reg byte x [ calculate_matrix::t7#0 ] reg byte a [ calculate_matrix::$17 ] 
Potential register analysis [164] calculate_matrix::$17 ← calculate_matrix::$16 - *(COSQ#0 + calculate_matrix::t7#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte y [ calculate_matrix::$16 ] reg byte y [ calculate_matrix::t7#0 ] reg byte a [ calculate_matrix::$17 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [164] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [166] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [167] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ( main:11::anim:19::calculate_matrix:29 [ 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 
Potential register analysis [168] calculate_matrix::$20 ← calculate_matrix::$19 - *(SINQ#0 + calculate_matrix::t6#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte a [ calculate_matrix::$20 ] reg byte x [ calculate_matrix::t6#0 ] reg byte x [ calculate_matrix::$19 ] 
Potential register analysis [168] calculate_matrix::$20 ← calculate_matrix::$19 - *(SINQ#0 + calculate_matrix::t6#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte a [ calculate_matrix::$20 ] reg byte y [ calculate_matrix::t6#0 ] reg byte y [ calculate_matrix::$19 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [168] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ( main:11::anim:19::calculate_matrix:29 [ 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 
Potential register analysis [169] calculate_matrix::$21 ← calculate_matrix::$20 - *(SINQ#0 + calculate_matrix::t7#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte a [ calculate_matrix::$21 ] reg byte x [ calculate_matrix::$20 ] reg byte x [ calculate_matrix::t7#0 ] 
Potential register analysis [169] calculate_matrix::$21 ← calculate_matrix::$20 - *(SINQ#0 + calculate_matrix::t7#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte a [ calculate_matrix::$21 ] reg byte y [ calculate_matrix::$20 ] reg byte y [ calculate_matrix::t7#0 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [169] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ( main:11::anim:19::calculate_matrix:29 [ 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 
Potential register analysis [170] calculate_matrix::$22 ← calculate_matrix::$21 - *(SINQ#0 + calculate_matrix::t8#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte x [ calculate_matrix::$21 ] reg byte a [ calculate_matrix::$22 ] reg byte x [ calculate_matrix::t8#0 ] 
Potential register analysis [170] calculate_matrix::$22 ← calculate_matrix::$21 - *(SINQ#0 + calculate_matrix::t8#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte y [ calculate_matrix::$21 ] reg byte a [ calculate_matrix::$22 ] reg byte y [ calculate_matrix::t8#0 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [170] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [172] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [174] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [175] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ( main:11::anim:19::calculate_matrix:29 [ 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 
Potential register analysis [176] calculate_matrix::$26 ← calculate_matrix::$25 - *(SINQ#0 + calculate_matrix::t5#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte x [ calculate_matrix::$25 ] reg byte a [ calculate_matrix::$26 ] reg byte x [ calculate_matrix::t5#0 ] 
Potential register analysis [176] calculate_matrix::$26 ← calculate_matrix::$25 - *(SINQ#0 + calculate_matrix::t5#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte y [ calculate_matrix::$25 ] reg byte a [ calculate_matrix::$26 ] reg byte y [ calculate_matrix::t5#0 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [176] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ( main:11::anim:19::calculate_matrix:29 [ 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 
Potential register analysis [177] calculate_matrix::$27 ← calculate_matrix::$26 - *(SINQ#0 + calculate_matrix::t8#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte a [ calculate_matrix::$27 ] reg byte x [ calculate_matrix::$26 ] reg byte x [ calculate_matrix::t8#0 ] 
Potential register analysis [177] calculate_matrix::$27 ← calculate_matrix::$26 - *(SINQ#0 + calculate_matrix::t8#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte a [ calculate_matrix::$27 ] reg byte y [ calculate_matrix::$26 ] reg byte y [ calculate_matrix::t8#0 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [177] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ( main:11::anim:19::calculate_matrix:29 [ 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 
Potential register analysis [178] calculate_matrix::$28 ← calculate_matrix::$27 - *(SINQ#0 + calculate_matrix::t7#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte x [ calculate_matrix::$27 ] reg byte x [ calculate_matrix::t7#0 ] reg byte a [ calculate_matrix::$28 ] 
Potential register analysis [178] calculate_matrix::$28 ← calculate_matrix::$27 - *(SINQ#0 + calculate_matrix::t7#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte y [ calculate_matrix::$27 ] reg byte y [ calculate_matrix::t7#0 ] reg byte a [ calculate_matrix::$28 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [178] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [180] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [181] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ( main:11::anim:19::calculate_matrix:29 [ 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 
Potential register analysis [182] calculate_matrix::$31 ← calculate_matrix::$30 - *(COSQ#0 + calculate_matrix::t5#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte a [ calculate_matrix::$31 ] reg byte x [ calculate_matrix::t5#0 ] reg byte x [ calculate_matrix::$30 ] 
Potential register analysis [182] calculate_matrix::$31 ← calculate_matrix::$30 - *(COSQ#0 + calculate_matrix::t5#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte a [ calculate_matrix::$31 ] reg byte y [ calculate_matrix::t5#0 ] reg byte y [ calculate_matrix::$30 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [182] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [183] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ) always clobbers reg byte a 
Potential register analysis [184] calculate_matrix::$33 ← calculate_matrix::$32 - *(COSQ#0 + calculate_matrix::t8#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte x [ calculate_matrix::$32 ] reg byte a [ calculate_matrix::$33 ] reg byte x [ calculate_matrix::t8#0 ] 
Potential register analysis [184] calculate_matrix::$33 ← calculate_matrix::$32 - *(COSQ#0 + calculate_matrix::t8#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte y [ calculate_matrix::$32 ] reg byte a [ calculate_matrix::$33 ] reg byte y [ calculate_matrix::t8#0 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [184] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ) always clobbers reg byte a 
Statement [186] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::$34 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::$34 ] ) always clobbers reg byte a 
Statement [216] (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:11::debug_print_init:17 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [217] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [219] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [220] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [222] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [223] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [226] (byte) debug_print_init::col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 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:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ debug_print_init::j#2 debug_print_init::j#1 ]
Statement [227] (byte*~) debug_print_init::$59 ← (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::$59 ] ( main:11::debug_print_init:17 [ 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 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:81 [ debug_print_init::col#0 ]
Statement [228] (byte*~) debug_print_init::$60 ← (byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$60 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$60 ] ) always clobbers reg byte a 
Statement [229] *((byte*~) debug_print_init::$60) ← (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:11::debug_print_init:17 [ 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 reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:15 [ debug_print_init::j#2 debug_print_init::j#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:81 [ debug_print_init::col#0 ]
Statement [230] (byte*~) debug_print_init::$63 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 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::$63 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$63 ] ) always clobbers reg byte a 
Statement [231] (byte*~) debug_print_init::$64 ← (byte*~) debug_print_init::$63 + (byte) debug_print_init::j#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$64 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$64 ] ) always clobbers reg byte a 
Statement [232] *((byte*~) debug_print_init::$64) ← (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:11::debug_print_init:17 [ 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 reg byte y 
Statement [233] (byte*~) debug_print_init::$67 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 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::$67 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$67 ] ) always clobbers reg byte a 
Statement [234] (byte*~) debug_print_init::$68 ← (byte*~) debug_print_init::$67 + (byte) debug_print_init::j#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$68 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$68 ] ) always clobbers reg byte a 
Statement [235] *((byte*~) debug_print_init::$68) ← (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:11::debug_print_init:17 [ 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 reg byte y 
Statement [236] (byte*~) debug_print_init::$71 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 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::$71 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$71 ] ) always clobbers reg byte a 
Statement [237] (byte*~) debug_print_init::$72 ← (byte*~) debug_print_init::$71 + (byte) debug_print_init::j#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$72 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$72 ] ) always clobbers reg byte a 
Statement [238] *((byte*~) debug_print_init::$72) ← (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:11::debug_print_init:17 [ 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 reg byte y 
Statement [239] (byte*~) debug_print_init::$75 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 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::$75 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$75 ] ) always clobbers reg byte a 
Statement [240] (byte*~) debug_print_init::$76 ← (byte*~) debug_print_init::$75 + (byte) debug_print_init::j#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$76 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$76 ] ) always clobbers reg byte a 
Statement [241] *((byte*~) debug_print_init::$76) ← (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:11::debug_print_init:17 [ 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 reg byte y 
Statement [242] (byte*~) debug_print_init::$79 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 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::$79 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$79 ] ) always clobbers reg byte a 
Statement [243] (byte*~) debug_print_init::$80 ← (byte*~) debug_print_init::$79 + (byte) debug_print_init::j#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$80 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$80 ] ) always clobbers reg byte a 
Statement [244] *((byte*~) debug_print_init::$80) ← (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:11::debug_print_init:17 [ 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 reg byte y 
Statement [245] (byte*~) debug_print_init::$83 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 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::$83 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$83 ] ) always clobbers reg byte a 
Statement [246] (byte*~) debug_print_init::$84 ← (byte*~) debug_print_init::$83 + (byte) debug_print_init::j#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$84 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$84 ] ) always clobbers reg byte a 
Statement [247] *((byte*~) debug_print_init::$84) ← (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:11::debug_print_init:17 [ 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 reg byte y 
Statement [248] (byte*~) debug_print_init::$87 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 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::$87 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$87 ] ) always clobbers reg byte a 
Statement [249] (byte*~) debug_print_init::$88 ← (byte*~) debug_print_init::$87 + (byte) debug_print_init::j#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$88 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$88 ] ) always clobbers reg byte a 
Statement [250] *((byte*~) debug_print_init::$88) ← (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:11::debug_print_init:17 [ 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 reg byte y 
Statement [251] (byte*~) debug_print_init::$91 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 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::$91 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$91 ] ) always clobbers reg byte a 
Statement [252] (byte*~) debug_print_init::$92 ← (byte*~) debug_print_init::$91 + (byte) debug_print_init::j#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$92 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$92 ] ) always clobbers reg byte a 
Statement [253] *((byte*~) debug_print_init::$92) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ) always clobbers reg byte a reg byte y 
Statement [256] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ debug_print_init::i#2 debug_print_init::c#1 ] ( main:11::debug_print_init:17 [ debug_print_init::i#2 debug_print_init::c#1 ] ) always clobbers reg byte a 
Statement [262] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 [ print_str_at::str#13 print_str_at::at#13 ] ( main:11::debug_print_init:17::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:208 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:210 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:212 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:214 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y 
Statement [264] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) [ print_str_at::str#13 print_str_at::at#13 ] ( main:11::debug_print_init:17::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:208 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:210 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:212 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:214 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y 
Statement [269] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:11::debug_print_init:17::print_cls:190 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y 
Statement [271] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:11::debug_print_init:17::print_cls:190 [ print_cls::sc#1 ] ) always clobbers reg byte a 
Statement [273] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:11::sprites_init:14 [ ] ) always clobbers reg byte a 
Statement [275] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ sprites_init::i#2 ] ( main:11::sprites_init:14 [ sprites_init::i#2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ sprites_init::i#2 sprites_init::i#1 ]
Statement [276] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 [ sprites_init::i#2 ] ( main:11::sprites_init:14 [ sprites_init::i#2 ] ) always clobbers reg byte a 
Statement [15] *((const word*) psp1#0) ← ((word))(const byte*) mulf_sqr1#0 [ ] ( main:11 [ ] ) always clobbers reg byte a 
Statement [16] *((const word*) psp2#0) ← ((word))(const byte*) mulf_sqr2#0 [ ] ( main:11 [ ] ) always clobbers reg byte a 
Statement [23] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [24] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto anim::@7 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [25] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 253) goto anim::@10 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 anim::i2#0 ] ) always clobbers reg byte a 
Statement [45] (byte/word/signed word/dword/signed dword~) anim::$8 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) xp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$8 ] ) always clobbers reg byte a 
Statement [47] (byte/word/signed word/dword/signed dword~) anim::$10 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) yp#0) [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#2 anim::i2#0 anim::$10 ] ) always clobbers reg byte a 
Statement [50] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@13 [ sx#10 sy#10 anim::i#1 ] ( main:11::anim:19 [ sx#10 sy#10 anim::i#1 ] ) always clobbers reg byte a 
Statement [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ sx#10 sy#10 ] ( main:11::anim:19 [ sx#10 sy#10 ] ) always clobbers reg byte a 
Statement [55] (signed byte) sy#3 ← (signed byte) sy#10 - (byte/signed byte/word/signed word/dword/signed dword) 3 [ sx#3 sy#3 ] ( main:11::anim:19 [ sx#3 sy#3 ] ) always clobbers reg byte a 
Statement [92] (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:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 ] ) always clobbers reg byte a 
Statement [93] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#15 print_sbyte_at::b#16 ] ( main:11::anim:19::debug_print:52 [ 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 a 
Statement [95] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 ] ) always clobbers reg byte a 
Statement [96] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#16 print_sbyte_at::b#17 ] ( main:11::anim:19::debug_print:52 [ 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 a 
Statement [98] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 ] ) always clobbers reg byte a 
Statement [99] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#17 print_sbyte_at::b#18 ] ( main:11::anim:19::debug_print:52 [ 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 a 
Statement [101] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 ] ) always clobbers reg byte a 
Statement [102] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#18 print_sbyte_at::b#19 ] ( main:11::anim:19::debug_print:52 [ 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 a 
Statement [104] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 ] ) always clobbers reg byte a 
Statement [105] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#19 print_sbyte_at::b#20 ] ( main:11::anim:19::debug_print:52 [ 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 a 
Statement [107] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) debug_print::c#2 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 ] ) always clobbers reg byte a 
Statement [108] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#20 print_sbyte_at::b#21 ] ( main:11::anim:19::debug_print:52 [ 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 a 
Statement [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ( main:11::anim:19::debug_print:52 [ sx#10 sy#10 debug_print::i#2 debug_print::c#1 ] ) always clobbers reg byte a 
Statement [116] (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:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#1 ] main:11::anim:19::debug_print:52::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:11::anim:19::debug_print:52::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:11::anim:19::debug_print:52::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:11::anim:19::debug_print:52::print_sbyte_at:103 [ 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:11::anim:19::debug_print:52::print_sbyte_at:106 [ 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:11::anim:19::debug_print:52::print_sbyte_at:109 [ 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:11::debug_print_init:17::print_sbyte_at:218 [ 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:11::debug_print_init:17::print_sbyte_at:221 [ 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:11::debug_print_init:17::print_sbyte_at:224 [ 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 [119] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ print_sbyte_at::b#24 print_byte_at::at#0 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:218 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:221 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:224 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] ) always clobbers reg byte a 
Statement [122] (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:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 print_char_at::at#0 ] main:11::anim:19::debug_print:52::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:11::anim:19::debug_print:52::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:11::anim:19::debug_print:52::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:11::anim:19::debug_print:52::print_sbyte_at:103 [ 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:11::anim:19::debug_print:52::print_sbyte_at:106 [ 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:11::anim:19::debug_print:52::print_sbyte_at:109 [ 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:11::debug_print_init:17::print_sbyte_at:218 [ 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:11::debug_print_init:17::print_sbyte_at:221 [ 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:11::debug_print_init:17::print_sbyte_at:224 [ 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 [124] (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:11::anim:19::debug_print:52::print_sbyte_at:58 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90 [ sx#10 sy#10 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::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:11::anim:19::debug_print:52::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:11::anim:19::debug_print:52::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:11::anim:19::debug_print:52::print_sbyte_at:103 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::debug_print_init:17::print_sbyte_at:218 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::debug_print_init:17::print_sbyte_at:221 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::at#21 print_sbyte_at::b#0 ] main:11::debug_print_init:17::print_sbyte_at:224 [ 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 [126] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 [ ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_char_at:117 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_char_at:117 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:218::print_char_at:117 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:221::print_char_at:117 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:224::print_char_at:117 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:58::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_char_at:123 [ sx#10 sy#10 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_char_at:123 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:218::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:221::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::debug_print_init:17::print_sbyte_at:224::print_char_at:123 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#22 print_sbyte_at::at#21 ] main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:120::print_char_at:131 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:218::print_byte_at:120::print_char_at:131 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:221::print_byte_at:120::print_char_at:131 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::debug_print_init:17::print_sbyte_at:224::print_byte_at:120::print_char_at:131 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 ] main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:120::print_char_at:135 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 ] main:11::debug_print_init:17::print_sbyte_at:218::print_byte_at:120::print_char_at:135 [ debug_print_init::c#2 debug_print_init::i#2 ] main:11::debug_print_init:17::print_sbyte_at:221::print_byte_at:120::print_char_at:135 [ debug_print_init::c#2 debug_print_init::i#2 ] main:11::debug_print_init:17::print_sbyte_at:224::print_byte_at:120::print_char_at:135 [ debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [128] (byte~) print_byte_at::$0 ← (byte)(signed byte) print_sbyte_at::b#24 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::debug_print_init:17::print_sbyte_at:218::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::debug_print_init:17::print_sbyte_at:221::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] main:11::debug_print_init:17::print_sbyte_at:224::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_byte_at::$0 ] ) always clobbers reg byte a 
Statement [130] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0 [ print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:120 [ sx#10 sy#10 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::debug_print_init:17::print_sbyte_at:218::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::debug_print_init:17::print_sbyte_at:221::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] main:11::debug_print_init:17::print_sbyte_at:224::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_sbyte_at::b#24 print_byte_at::at#0 print_char_at::ch#2 print_char_at::at#2 ] ) always clobbers reg byte a 
Statement [132] (byte~) print_byte_at::$2 ← (byte)(signed byte) print_sbyte_at::b#24 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_byte_at::at#0 print_byte_at::$2 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:120 [ sx#10 sy#10 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:218::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:221::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_byte_at::at#0 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:224::print_byte_at:120 [ 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 [133] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ print_char_at::at#3 print_byte_at::$2 ] ( main:11::anim:19::debug_print:52::print_sbyte_at:58::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:61::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:63::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:66::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:69::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:72::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:75::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:78::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:81::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:84::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:87::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:90::print_byte_at:120 [ sx#10 sy#10 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:94::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:97::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:100::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:103::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:106::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::anim:19::debug_print:52::print_sbyte_at:109::print_byte_at:120 [ sx#10 sy#10 debug_print::c#2 debug_print::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:218::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:221::print_byte_at:120 [ debug_print_init::c#2 debug_print_init::i#2 print_char_at::at#3 print_byte_at::$2 ] main:11::debug_print_init:17::print_sbyte_at:224::print_byte_at:120 [ 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 [144] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 - (const signed byte) sz#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 ] ) always clobbers reg byte a 
Statement [145] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 + (const signed byte) sz#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 ] ) always clobbers reg byte a 
Statement [146] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 + (const signed byte) sz#0 [ calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::sx#0 calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 ] ) always clobbers reg byte a 
Statement [147] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 - (const signed byte) sz#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 ] ( main:11::anim:19::calculate_matrix:29 [ 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 ] ) always clobbers reg byte a 
Statement [148] (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:11::anim:19::calculate_matrix:29 [ 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 [149] (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:11::anim:19::calculate_matrix:29 [ 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 [150] (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:11::anim:19::calculate_matrix:29 [ 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 [151] (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:11::anim:19::calculate_matrix:29 [ 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 [152] (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:11::anim:19::calculate_matrix:29 [ 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 [153] (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:11::anim:19::calculate_matrix:29 [ 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 [154] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t1#0 calculate_matrix::t2#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$10 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [156] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) [ calculate_matrix::sy#0 calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$11 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [158] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$12 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [160] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$13 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [161] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$14 ] ( main:11::anim:19::calculate_matrix:29 [ 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 
Potential register analysis [162] calculate_matrix::$15 ← calculate_matrix::$14 - *(COSQ#0 + calculate_matrix::t5#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte x [ calculate_matrix::$14 ] reg byte a [ calculate_matrix::$15 ] reg byte x [ calculate_matrix::t5#0 ] 
Potential register analysis [162] calculate_matrix::$15 ← calculate_matrix::$14 - *(COSQ#0 + calculate_matrix::t5#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte y [ calculate_matrix::$14 ] reg byte a [ calculate_matrix::$15 ] reg byte y [ calculate_matrix::t5#0 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [162] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$15 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [163] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$16 ] ( main:11::anim:19::calculate_matrix:29 [ 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 
Potential register analysis [164] calculate_matrix::$17 ← calculate_matrix::$16 - *(COSQ#0 + calculate_matrix::t7#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte x [ calculate_matrix::$16 ] reg byte x [ calculate_matrix::t7#0 ] reg byte a [ calculate_matrix::$17 ] 
Potential register analysis [164] calculate_matrix::$17 ← calculate_matrix::$16 - *(COSQ#0 + calculate_matrix::t7#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte y [ calculate_matrix::$16 ] reg byte y [ calculate_matrix::t7#0 ] reg byte a [ calculate_matrix::$17 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [164] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$17 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [166] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$18 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [167] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$19 ] ( main:11::anim:19::calculate_matrix:29 [ 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 
Potential register analysis [168] calculate_matrix::$20 ← calculate_matrix::$19 - *(SINQ#0 + calculate_matrix::t6#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte a [ calculate_matrix::$20 ] reg byte x [ calculate_matrix::t6#0 ] reg byte x [ calculate_matrix::$19 ] 
Potential register analysis [168] calculate_matrix::$20 ← calculate_matrix::$19 - *(SINQ#0 + calculate_matrix::t6#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte a [ calculate_matrix::$20 ] reg byte y [ calculate_matrix::t6#0 ] reg byte y [ calculate_matrix::$19 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [168] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$20 ] ( main:11::anim:19::calculate_matrix:29 [ 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 
Potential register analysis [169] calculate_matrix::$21 ← calculate_matrix::$20 - *(SINQ#0 + calculate_matrix::t7#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte a [ calculate_matrix::$21 ] reg byte x [ calculate_matrix::$20 ] reg byte x [ calculate_matrix::t7#0 ] 
Potential register analysis [169] calculate_matrix::$21 ← calculate_matrix::$20 - *(SINQ#0 + calculate_matrix::t7#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte a [ calculate_matrix::$21 ] reg byte y [ calculate_matrix::$20 ] reg byte y [ calculate_matrix::t7#0 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [169] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$21 ] ( main:11::anim:19::calculate_matrix:29 [ 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 
Potential register analysis [170] calculate_matrix::$22 ← calculate_matrix::$21 - *(SINQ#0 + calculate_matrix::t8#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte x [ calculate_matrix::$21 ] reg byte a [ calculate_matrix::$22 ] reg byte x [ calculate_matrix::t8#0 ] 
Potential register analysis [170] calculate_matrix::$22 ← calculate_matrix::$21 - *(SINQ#0 + calculate_matrix::t8#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte y [ calculate_matrix::$21 ] reg byte a [ calculate_matrix::$22 ] reg byte y [ calculate_matrix::t8#0 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [170] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$22 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [172] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$23 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [174] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$24 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [175] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$25 ] ( main:11::anim:19::calculate_matrix:29 [ 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 
Potential register analysis [176] calculate_matrix::$26 ← calculate_matrix::$25 - *(SINQ#0 + calculate_matrix::t5#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte x [ calculate_matrix::$25 ] reg byte a [ calculate_matrix::$26 ] reg byte x [ calculate_matrix::t5#0 ] 
Potential register analysis [176] calculate_matrix::$26 ← calculate_matrix::$25 - *(SINQ#0 + calculate_matrix::t5#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte y [ calculate_matrix::$25 ] reg byte a [ calculate_matrix::$26 ] reg byte y [ calculate_matrix::t5#0 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [176] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$26 ] ( main:11::anim:19::calculate_matrix:29 [ 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 
Potential register analysis [177] calculate_matrix::$27 ← calculate_matrix::$26 - *(SINQ#0 + calculate_matrix::t8#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte a [ calculate_matrix::$27 ] reg byte x [ calculate_matrix::$26 ] reg byte x [ calculate_matrix::t8#0 ] 
Potential register analysis [177] calculate_matrix::$27 ← calculate_matrix::$26 - *(SINQ#0 + calculate_matrix::t8#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte a [ calculate_matrix::$27 ] reg byte y [ calculate_matrix::$26 ] reg byte y [ calculate_matrix::t8#0 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [177] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$27 ] ( main:11::anim:19::calculate_matrix:29 [ 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 
Potential register analysis [178] calculate_matrix::$28 ← calculate_matrix::$27 - *(SINQ#0 + calculate_matrix::t7#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte x [ calculate_matrix::$27 ] reg byte x [ calculate_matrix::t7#0 ] reg byte a [ calculate_matrix::$28 ] 
Potential register analysis [178] calculate_matrix::$28 ← calculate_matrix::$27 - *(SINQ#0 + calculate_matrix::t7#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte y [ calculate_matrix::$27 ] reg byte y [ calculate_matrix::t7#0 ] reg byte a [ calculate_matrix::$28 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [178] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t3#0 calculate_matrix::t4#0 calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$28 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [180] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) [ calculate_matrix::t5#0 calculate_matrix::t6#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$29 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [181] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) [ calculate_matrix::t5#0 calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$30 ] ( main:11::anim:19::calculate_matrix:29 [ 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 
Potential register analysis [182] calculate_matrix::$31 ← calculate_matrix::$30 - *(COSQ#0 + calculate_matrix::t5#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte a [ calculate_matrix::$31 ] reg byte x [ calculate_matrix::t5#0 ] reg byte x [ calculate_matrix::$30 ] 
Potential register analysis [182] calculate_matrix::$31 ← calculate_matrix::$30 - *(COSQ#0 + calculate_matrix::t5#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte a [ calculate_matrix::$31 ] reg byte y [ calculate_matrix::t5#0 ] reg byte y [ calculate_matrix::$30 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [182] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) [ calculate_matrix::t7#0 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$31 ] ( main:11::anim:19::calculate_matrix:29 [ 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 [183] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) [ calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t8#0 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$32 ] ) always clobbers reg byte a 
Potential register analysis [184] calculate_matrix::$33 ← calculate_matrix::$32 - *(COSQ#0 + calculate_matrix::t8#0) missing fragment vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx allocation: reg byte x [ calculate_matrix::$32 ] reg byte a [ calculate_matrix::$33 ] reg byte x [ calculate_matrix::t8#0 ] 
Potential register analysis [184] calculate_matrix::$33 ← calculate_matrix::$32 - *(COSQ#0 + calculate_matrix::t8#0) missing fragment vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy allocation: reg byte y [ calculate_matrix::$32 ] reg byte a [ calculate_matrix::$33 ] reg byte y [ calculate_matrix::t8#0 ] 
MISSING FRAGMENTS
  vbsaa=vbsxx_minus_pbsc1_derefidx_vbsxx
  vbsaa=vbsyy_minus_pbsc1_derefidx_vbsyy
Statement [184] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) [ calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::t9#0 calculate_matrix::t10#0 calculate_matrix::$33 ] ) always clobbers reg byte a 
Statement [186] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) [ calculate_matrix::$34 ] ( main:11::anim:19::calculate_matrix:29 [ sx#10 sy#10 calculate_matrix::$34 ] ) always clobbers reg byte a 
Statement [216] (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:11::debug_print_init:17 [ print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [217] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::b#1 print_sbyte_at::at#0 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [219] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [220] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::b#2 print_sbyte_at::at#1 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [222] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) debug_print_init::c#2 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [223] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ( main:11::debug_print_init:17 [ print_sbyte_at::b#3 print_sbyte_at::at#2 debug_print_init::c#2 debug_print_init::i#2 ] ) always clobbers reg byte a 
Statement [226] (byte) debug_print_init::col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 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:11::debug_print_init:17 [ 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::$59 ← (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::$59 ] ( main:11::debug_print_init:17 [ 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 [228] (byte*~) debug_print_init::$60 ← (byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$60 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$60 ] ) always clobbers reg byte a 
Statement [229] *((byte*~) debug_print_init::$60) ← (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:11::debug_print_init:17 [ 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 reg byte y 
Statement [230] (byte*~) debug_print_init::$63 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 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::$63 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$63 ] ) always clobbers reg byte a 
Statement [231] (byte*~) debug_print_init::$64 ← (byte*~) debug_print_init::$63 + (byte) debug_print_init::j#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$64 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$64 ] ) always clobbers reg byte a 
Statement [232] *((byte*~) debug_print_init::$64) ← (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:11::debug_print_init:17 [ 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 reg byte y 
Statement [233] (byte*~) debug_print_init::$67 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 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::$67 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$67 ] ) always clobbers reg byte a 
Statement [234] (byte*~) debug_print_init::$68 ← (byte*~) debug_print_init::$67 + (byte) debug_print_init::j#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$68 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$68 ] ) always clobbers reg byte a 
Statement [235] *((byte*~) debug_print_init::$68) ← (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:11::debug_print_init:17 [ 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 reg byte y 
Statement [236] (byte*~) debug_print_init::$71 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 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::$71 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$71 ] ) always clobbers reg byte a 
Statement [237] (byte*~) debug_print_init::$72 ← (byte*~) debug_print_init::$71 + (byte) debug_print_init::j#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$72 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$72 ] ) always clobbers reg byte a 
Statement [238] *((byte*~) debug_print_init::$72) ← (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:11::debug_print_init:17 [ 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 reg byte y 
Statement [239] (byte*~) debug_print_init::$75 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 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::$75 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$75 ] ) always clobbers reg byte a 
Statement [240] (byte*~) debug_print_init::$76 ← (byte*~) debug_print_init::$75 + (byte) debug_print_init::j#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$76 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$76 ] ) always clobbers reg byte a 
Statement [241] *((byte*~) debug_print_init::$76) ← (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:11::debug_print_init:17 [ 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 reg byte y 
Statement [242] (byte*~) debug_print_init::$79 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 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::$79 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$79 ] ) always clobbers reg byte a 
Statement [243] (byte*~) debug_print_init::$80 ← (byte*~) debug_print_init::$79 + (byte) debug_print_init::j#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$80 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$80 ] ) always clobbers reg byte a 
Statement [244] *((byte*~) debug_print_init::$80) ← (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:11::debug_print_init:17 [ 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 reg byte y 
Statement [245] (byte*~) debug_print_init::$83 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 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::$83 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$83 ] ) always clobbers reg byte a 
Statement [246] (byte*~) debug_print_init::$84 ← (byte*~) debug_print_init::$83 + (byte) debug_print_init::j#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$84 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$84 ] ) always clobbers reg byte a 
Statement [247] *((byte*~) debug_print_init::$84) ← (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:11::debug_print_init:17 [ 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 reg byte y 
Statement [248] (byte*~) debug_print_init::$87 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 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::$87 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$87 ] ) always clobbers reg byte a 
Statement [249] (byte*~) debug_print_init::$88 ← (byte*~) debug_print_init::$87 + (byte) debug_print_init::j#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$88 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$88 ] ) always clobbers reg byte a 
Statement [250] *((byte*~) debug_print_init::$88) ← (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:11::debug_print_init:17 [ 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 reg byte y 
Statement [251] (byte*~) debug_print_init::$91 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 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::$91 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$91 ] ) always clobbers reg byte a 
Statement [252] (byte*~) debug_print_init::$92 ← (byte*~) debug_print_init::$91 + (byte) debug_print_init::j#2 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$92 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 debug_print_init::col#0 debug_print_init::$92 ] ) always clobbers reg byte a 
Statement [253] *((byte*~) debug_print_init::$92) ← (byte) debug_print_init::col#0 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ( main:11::debug_print_init:17 [ debug_print_init::c#2 debug_print_init::i#2 debug_print_init::j#2 ] ) always clobbers reg byte a reg byte y 
Statement [256] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ debug_print_init::i#2 debug_print_init::c#1 ] ( main:11::debug_print_init:17 [ debug_print_init::i#2 debug_print_init::c#1 ] ) always clobbers reg byte a 
Statement [262] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 [ print_str_at::str#13 print_str_at::at#13 ] ( main:11::debug_print_init:17::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:208 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:210 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:212 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:214 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y 
Statement [264] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) [ print_str_at::str#13 print_str_at::at#13 ] ( main:11::debug_print_init:17::print_str_at:192 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:194 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:196 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:198 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:200 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:202 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:204 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:206 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:208 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:210 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:212 [ print_str_at::str#13 print_str_at::at#13 ] main:11::debug_print_init:17::print_str_at:214 [ print_str_at::str#13 print_str_at::at#13 ] ) always clobbers reg byte a reg byte y 
Statement [269] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:11::debug_print_init:17::print_cls:190 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y 
Statement [271] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:11::debug_print_init:17::print_cls:190 [ print_cls::sc#1 ] ) always clobbers reg byte a 
Statement [273] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:11::sprites_init:14 [ ] ) always clobbers reg byte a 
Statement [275] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ sprites_init::i#2 ] ( main:11::sprites_init:14 [ sprites_init::i#2 ] ) always clobbers reg byte a 
Statement [276] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 [ sprites_init::i#2 ] ( main:11::sprites_init:14 [ sprites_init::i#2 ] ) always clobbers reg byte a 
Potential registers zp ZP_BYTE:2 [ sx#10 sx#3 ] : zp ZP_BYTE:2 , 
Potential registers zp ZP_BYTE:3 [ sy#10 sy#3 ] : zp ZP_BYTE:3 , 
Potential registers zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ] : zp ZP_BYTE:4 , 
Potential registers zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ] : zp ZP_BYTE:5 , reg byte x , 
Potential registers zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ] : zp ZP_BYTE:6 , reg byte x , 
Potential registers zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 ] : zp ZP_WORD:7 , 
Potential registers zp ZP_BYTE:9 [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] : zp ZP_BYTE:9 , reg byte x , 
Potential registers zp ZP_BYTE:10 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] : zp ZP_BYTE:10 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:11 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] : zp ZP_WORD:11 , 
Potential registers zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ] : zp ZP_BYTE:13 , reg byte x , 
Potential registers zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ] : zp ZP_BYTE:14 , reg byte x , 
Potential registers zp ZP_BYTE:15 [ debug_print_init::j#2 debug_print_init::j#1 ] : zp ZP_BYTE:15 , reg byte x , 
Potential registers zp ZP_WORD:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] : zp ZP_WORD:16 , 
Potential registers zp ZP_WORD:18 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] : zp ZP_WORD:18 , 
Potential registers zp ZP_WORD:20 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:20 , 
Potential registers zp ZP_BYTE:22 [ sprites_init::i#2 sprites_init::i#1 ] : zp ZP_BYTE:22 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:23 [ calculate_matrix::sx#0 ] : zp ZP_BYTE:23 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:24 [ calculate_matrix::sy#0 ] : zp ZP_BYTE:24 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:25 [ rotate_matrix::x#0 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:26 [ rotate_matrix::y#0 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:27 [ rotate_matrix::z#0 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:28 [ anim::i2#0 ] : zp ZP_BYTE:28 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:29 [ anim::$8 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:30 [ anim::$10 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:31 [ debug_print::print_sbyte_pos1_sb#0 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:32 [ debug_print::print_sbyte_pos2_sb#0 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:33 [ debug_print::print_sbyte_pos4_sb#0 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:34 [ debug_print::print_sbyte_pos5_sb#0 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:35 [ debug_print::print_sbyte_pos6_sb#0 ] : zp ZP_BYTE:35 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:36 [ debug_print::print_sbyte_pos7_sb#0 ] : zp ZP_BYTE:36 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:37 [ debug_print::print_sbyte_pos8_sb#0 ] : zp ZP_BYTE:37 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:38 [ debug_print::print_sbyte_pos9_sb#0 ] : zp ZP_BYTE:38 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:39 [ debug_print::print_sbyte_pos10_sb#0 ] : zp ZP_BYTE:39 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:40 [ debug_print::print_sbyte_pos11_sb#0 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:41 [ debug_print::print_sbyte_pos12_sb#0 ] : zp ZP_BYTE:41 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:42 [ print_byte_at::at#0 ] : zp ZP_WORD:42 , 
Potential registers zp ZP_BYTE:44 [ print_byte_at::$0 ] : zp ZP_BYTE:44 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:45 [ print_byte_at::$2 ] : zp ZP_BYTE:45 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:46 [ calculate_matrix::t1#0 ] : zp ZP_BYTE:46 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:47 [ calculate_matrix::t2#0 ] : zp ZP_BYTE:47 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:48 [ calculate_matrix::t3#0 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:49 [ calculate_matrix::t4#0 ] : zp ZP_BYTE:49 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:50 [ calculate_matrix::t5#0 ] : zp ZP_BYTE:50 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:51 [ calculate_matrix::t6#0 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:52 [ calculate_matrix::t7#0 ] : zp ZP_BYTE:52 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:53 [ calculate_matrix::t8#0 ] : zp ZP_BYTE:53 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:54 [ calculate_matrix::t9#0 ] : zp ZP_BYTE:54 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:55 [ calculate_matrix::t10#0 ] : zp ZP_BYTE:55 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:56 [ calculate_matrix::$10 ] : zp ZP_BYTE:56 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:57 [ calculate_matrix::$11 ] : zp ZP_BYTE:57 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:58 [ calculate_matrix::$12 ] : zp ZP_BYTE:58 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:59 [ calculate_matrix::$13 ] : zp ZP_BYTE:59 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:60 [ calculate_matrix::$14 ] : zp ZP_BYTE:60 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:61 [ calculate_matrix::$15 ] : zp ZP_BYTE:61 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:62 [ calculate_matrix::$16 ] : zp ZP_BYTE:62 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:63 [ calculate_matrix::$17 ] : zp ZP_BYTE:63 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:64 [ calculate_matrix::$18 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:65 [ calculate_matrix::$19 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:66 [ calculate_matrix::$20 ] : zp ZP_BYTE:66 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:67 [ calculate_matrix::$21 ] : zp ZP_BYTE:67 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:68 [ calculate_matrix::$22 ] : zp ZP_BYTE:68 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:69 [ calculate_matrix::$23 ] : zp ZP_BYTE:69 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:70 [ calculate_matrix::$24 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:71 [ calculate_matrix::$25 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:72 [ calculate_matrix::$26 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:73 [ calculate_matrix::$27 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:74 [ calculate_matrix::$28 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:75 [ calculate_matrix::$29 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:76 [ calculate_matrix::$30 ] : zp ZP_BYTE:76 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:77 [ calculate_matrix::$31 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:78 [ calculate_matrix::$32 ] : zp ZP_BYTE:78 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:79 [ calculate_matrix::$33 ] : zp ZP_BYTE:79 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:80 [ calculate_matrix::$34 ] : zp ZP_BYTE:80 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:81 [ debug_print_init::col#0 ] : zp ZP_BYTE:81 , reg byte x , 
Potential registers zp ZP_WORD:82 [ debug_print_init::$59 ] : zp ZP_WORD:82 , 
Potential registers zp ZP_WORD:84 [ debug_print_init::$60 ] : zp ZP_WORD:84 , 
Potential registers zp ZP_WORD:86 [ debug_print_init::$63 ] : zp ZP_WORD:86 , 
Potential registers zp ZP_WORD:88 [ debug_print_init::$64 ] : zp ZP_WORD:88 , 
Potential registers zp ZP_WORD:90 [ debug_print_init::$67 ] : zp ZP_WORD:90 , 
Potential registers zp ZP_WORD:92 [ debug_print_init::$68 ] : zp ZP_WORD:92 , 
Potential registers zp ZP_WORD:94 [ debug_print_init::$71 ] : zp ZP_WORD:94 , 
Potential registers zp ZP_WORD:96 [ debug_print_init::$72 ] : zp ZP_WORD:96 , 
Potential registers zp ZP_WORD:98 [ debug_print_init::$75 ] : zp ZP_WORD:98 , 
Potential registers zp ZP_WORD:100 [ debug_print_init::$76 ] : zp ZP_WORD:100 , 
Potential registers zp ZP_WORD:102 [ debug_print_init::$79 ] : zp ZP_WORD:102 , 
Potential registers zp ZP_WORD:104 [ debug_print_init::$80 ] : zp ZP_WORD:104 , 
Potential registers zp ZP_WORD:106 [ debug_print_init::$83 ] : zp ZP_WORD:106 , 
Potential registers zp ZP_WORD:108 [ debug_print_init::$84 ] : zp ZP_WORD:108 , 
Potential registers zp ZP_WORD:110 [ debug_print_init::$87 ] : zp ZP_WORD:110 , 
Potential registers zp ZP_WORD:112 [ debug_print_init::$88 ] : zp ZP_WORD:112 , 
Potential registers zp ZP_WORD:114 [ debug_print_init::$91 ] : zp ZP_WORD:114 , 
Potential registers zp ZP_WORD:116 [ debug_print_init::$92 ] : zp ZP_WORD:116 , 

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

Uplifting [debug_print_init] best 96498 combination zp ZP_WORD:82 [ debug_print_init::$59 ] zp ZP_WORD:84 [ debug_print_init::$60 ] zp ZP_WORD:86 [ debug_print_init::$63 ] zp ZP_WORD:88 [ debug_print_init::$64 ] zp ZP_WORD:90 [ debug_print_init::$67 ] zp ZP_WORD:92 [ debug_print_init::$68 ] zp ZP_WORD:94 [ debug_print_init::$71 ] zp ZP_WORD:96 [ debug_print_init::$72 ] zp ZP_WORD:98 [ debug_print_init::$75 ] zp ZP_WORD:100 [ debug_print_init::$76 ] zp ZP_WORD:102 [ debug_print_init::$79 ] zp ZP_WORD:104 [ debug_print_init::$80 ] zp ZP_WORD:106 [ debug_print_init::$83 ] zp ZP_WORD:108 [ debug_print_init::$84 ] zp ZP_WORD:110 [ debug_print_init::$87 ] zp ZP_WORD:112 [ debug_print_init::$88 ] zp ZP_WORD:114 [ debug_print_init::$91 ] zp ZP_WORD:116 [ debug_print_init::$92 ] reg byte x [ debug_print_init::j#2 debug_print_init::j#1 ] zp ZP_BYTE:81 [ debug_print_init::col#0 ] zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ] zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ] 
Uplifting [print_sbyte_at] best 95827 combination reg byte x [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ] zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 ] 
Uplifting [anim] best 93927 combination zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ] reg byte a [ anim::$8 ] reg byte a [ anim::$10 ] reg byte x [ anim::i2#0 ] 
Uplifting [debug_print] best 93913 combination zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ] zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ] reg byte x [ debug_print::print_sbyte_pos1_sb#0 ] reg byte a [ debug_print::print_sbyte_pos2_sb#0 ] reg byte a [ debug_print::print_sbyte_pos4_sb#0 ] zp ZP_BYTE:34 [ debug_print::print_sbyte_pos5_sb#0 ] zp ZP_BYTE:35 [ debug_print::print_sbyte_pos6_sb#0 ] zp ZP_BYTE:36 [ debug_print::print_sbyte_pos7_sb#0 ] zp ZP_BYTE:37 [ debug_print::print_sbyte_pos8_sb#0 ] zp ZP_BYTE:38 [ debug_print::print_sbyte_pos9_sb#0 ] zp ZP_BYTE:39 [ debug_print::print_sbyte_pos10_sb#0 ] zp ZP_BYTE:40 [ debug_print::print_sbyte_pos11_sb#0 ] zp ZP_BYTE:41 [ debug_print::print_sbyte_pos12_sb#0 ] 
Limited combination testing to 100 combinations of 16777216 possible.
Uplifting [rotate_matrix] best 93511 combination zp ZP_BYTE:25 [ rotate_matrix::x#0 ] reg byte y [ rotate_matrix::y#0 ] reg byte x [ rotate_matrix::z#0 ] 
Uplifting [print_str_at] best 93511 combination zp ZP_WORD:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] zp ZP_WORD:18 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ] 
Uplifting [print_char_at] best 93511 combination zp ZP_WORD:11 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] zp ZP_BYTE:10 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] 
Uplifting [] best 93511 combination zp ZP_BYTE:3 [ sy#10 sy#3 ] zp ZP_BYTE:2 [ sx#10 sx#3 ] 
Uplifting [print_cls] best 93511 combination zp ZP_WORD:20 [ print_cls::sc#2 print_cls::sc#1 ] 
Uplifting [sprites_init] best 93361 combination reg byte x [ sprites_init::i#2 sprites_init::i#1 ] 
Uplifting [print_byte_at] best 93353 combination reg byte a [ print_byte_at::$0 ] reg byte x [ print_byte_at::$2 ] zp ZP_WORD:42 [ print_byte_at::at#0 ] 
Uplifting [main] best 93353 combination 
Uplifting [store_matrix] best 93353 combination 
Attempting to uplift remaining variables inzp ZP_BYTE:4 [ anim::i#2 anim::i#1 ]
Uplifting [anim] best 93353 combination zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ]
Uplifting [debug_print] best 93353 combination zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ]
Uplifting [debug_print] best 93353 combination zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:81 [ debug_print_init::col#0 ]
Uplifting [debug_print_init] best 93353 combination zp ZP_BYTE:81 [ debug_print_init::col#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:25 [ rotate_matrix::x#0 ]
Uplifting [rotate_matrix] best 93353 combination zp ZP_BYTE:25 [ rotate_matrix::x#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ]
Uplifting [debug_print_init] best 93353 combination zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ sy#10 sy#3 ]
Uplifting [] best 93353 combination zp ZP_BYTE:3 [ sy#10 sy#3 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ]
Uplifting [debug_print_init] best 93353 combination zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:10 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ]
Uplifting [print_char_at] best 93353 combination zp ZP_BYTE:10 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ sx#10 sx#3 ]
Uplifting [] best 93353 combination zp ZP_BYTE:2 [ sx#10 sx#3 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:34 [ debug_print::print_sbyte_pos5_sb#0 ]
Uplifting [debug_print] best 93347 combination reg byte x [ debug_print::print_sbyte_pos5_sb#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:35 [ debug_print::print_sbyte_pos6_sb#0 ]
Uplifting [debug_print] best 93341 combination reg byte x [ debug_print::print_sbyte_pos6_sb#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:36 [ debug_print::print_sbyte_pos7_sb#0 ]
Uplifting [debug_print] best 93335 combination reg byte x [ debug_print::print_sbyte_pos7_sb#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:37 [ debug_print::print_sbyte_pos8_sb#0 ]
Uplifting [debug_print] best 93329 combination reg byte x [ debug_print::print_sbyte_pos8_sb#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:38 [ debug_print::print_sbyte_pos9_sb#0 ]
Uplifting [debug_print] best 93323 combination reg byte x [ debug_print::print_sbyte_pos9_sb#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:39 [ debug_print::print_sbyte_pos10_sb#0 ]
Uplifting [debug_print] best 93317 combination reg byte x [ debug_print::print_sbyte_pos10_sb#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:40 [ debug_print::print_sbyte_pos11_sb#0 ]
Uplifting [debug_print] best 93311 combination reg byte x [ debug_print::print_sbyte_pos11_sb#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:41 [ debug_print::print_sbyte_pos12_sb#0 ]
Uplifting [debug_print] best 93305 combination reg byte x [ debug_print::print_sbyte_pos12_sb#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:56 [ calculate_matrix::$10 ]
Uplifting [calculate_matrix] best 93299 combination reg byte a [ calculate_matrix::$10 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:57 [ calculate_matrix::$11 ]
Uplifting [calculate_matrix] best 93293 combination reg byte a [ calculate_matrix::$11 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:58 [ calculate_matrix::$12 ]
Uplifting [calculate_matrix] best 93287 combination reg byte a [ calculate_matrix::$12 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:59 [ calculate_matrix::$13 ]
Uplifting [calculate_matrix] best 93281 combination reg byte a [ calculate_matrix::$13 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:60 [ calculate_matrix::$14 ]
Uplifting [calculate_matrix] best 93275 combination reg byte a [ calculate_matrix::$14 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:61 [ calculate_matrix::$15 ]
Uplifting [calculate_matrix] best 93269 combination reg byte a [ calculate_matrix::$15 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:62 [ calculate_matrix::$16 ]
Uplifting [calculate_matrix] best 93263 combination reg byte a [ calculate_matrix::$16 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:63 [ calculate_matrix::$17 ]
Uplifting [calculate_matrix] best 93257 combination reg byte a [ calculate_matrix::$17 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:64 [ calculate_matrix::$18 ]
Uplifting [calculate_matrix] best 93251 combination reg byte a [ calculate_matrix::$18 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:65 [ calculate_matrix::$19 ]
Uplifting [calculate_matrix] best 93245 combination reg byte a [ calculate_matrix::$19 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:66 [ calculate_matrix::$20 ]
Uplifting [calculate_matrix] best 93239 combination reg byte a [ calculate_matrix::$20 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:67 [ calculate_matrix::$21 ]
Uplifting [calculate_matrix] best 93233 combination reg byte a [ calculate_matrix::$21 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:68 [ calculate_matrix::$22 ]
Uplifting [calculate_matrix] best 93227 combination reg byte a [ calculate_matrix::$22 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:69 [ calculate_matrix::$23 ]
Uplifting [calculate_matrix] best 93221 combination reg byte a [ calculate_matrix::$23 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:70 [ calculate_matrix::$24 ]
Uplifting [calculate_matrix] best 93215 combination reg byte a [ calculate_matrix::$24 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:71 [ calculate_matrix::$25 ]
Uplifting [calculate_matrix] best 93209 combination reg byte a [ calculate_matrix::$25 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:72 [ calculate_matrix::$26 ]
Uplifting [calculate_matrix] best 93203 combination reg byte a [ calculate_matrix::$26 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:73 [ calculate_matrix::$27 ]
Uplifting [calculate_matrix] best 93197 combination reg byte a [ calculate_matrix::$27 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:74 [ calculate_matrix::$28 ]
Uplifting [calculate_matrix] best 93191 combination reg byte a [ calculate_matrix::$28 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:75 [ calculate_matrix::$29 ]
Uplifting [calculate_matrix] best 93185 combination reg byte a [ calculate_matrix::$29 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:76 [ calculate_matrix::$30 ]
Uplifting [calculate_matrix] best 93179 combination reg byte a [ calculate_matrix::$30 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:77 [ calculate_matrix::$31 ]
Uplifting [calculate_matrix] best 93173 combination reg byte a [ calculate_matrix::$31 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:78 [ calculate_matrix::$32 ]
Uplifting [calculate_matrix] best 93167 combination reg byte a [ calculate_matrix::$32 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:79 [ calculate_matrix::$33 ]
Uplifting [calculate_matrix] best 93161 combination reg byte a [ calculate_matrix::$33 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:80 [ calculate_matrix::$34 ]
Uplifting [calculate_matrix] best 93155 combination reg byte a [ calculate_matrix::$34 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:23 [ calculate_matrix::sx#0 ]
Uplifting [calculate_matrix] best 93121 combination reg byte x [ calculate_matrix::sx#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:24 [ calculate_matrix::sy#0 ]
Uplifting [calculate_matrix] best 93121 combination zp ZP_BYTE:24 [ calculate_matrix::sy#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:47 [ calculate_matrix::t2#0 ]
Uplifting [calculate_matrix] best 93118 combination reg byte y [ calculate_matrix::t2#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:46 [ calculate_matrix::t1#0 ]
Uplifting [calculate_matrix] best 93118 combination zp ZP_BYTE:46 [ calculate_matrix::t1#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:51 [ calculate_matrix::t6#0 ]
Uplifting [calculate_matrix] best 93118 combination zp ZP_BYTE:51 [ calculate_matrix::t6#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:49 [ calculate_matrix::t4#0 ]
Uplifting [calculate_matrix] best 93118 combination zp ZP_BYTE:49 [ calculate_matrix::t4#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:52 [ calculate_matrix::t7#0 ]
Uplifting [calculate_matrix] best 93118 combination zp ZP_BYTE:52 [ calculate_matrix::t7#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:53 [ calculate_matrix::t8#0 ]
Uplifting [calculate_matrix] best 93118 combination zp ZP_BYTE:53 [ calculate_matrix::t8#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:48 [ calculate_matrix::t3#0 ]
Uplifting [calculate_matrix] best 93118 combination zp ZP_BYTE:48 [ calculate_matrix::t3#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:50 [ calculate_matrix::t5#0 ]
Uplifting [calculate_matrix] best 93118 combination zp ZP_BYTE:50 [ calculate_matrix::t5#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:55 [ calculate_matrix::t10#0 ]
Uplifting [calculate_matrix] best 93118 combination zp ZP_BYTE:55 [ calculate_matrix::t10#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:54 [ calculate_matrix::t9#0 ]
Uplifting [calculate_matrix] best 93118 combination zp ZP_BYTE:54 [ calculate_matrix::t9#0 ] 
Coalescing zero page register with common assignment [ zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 ] ] with [ zp ZP_WORD:11 [ print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] ] - score: 2
Coalescing zero page register with common assignment [ zp ZP_BYTE:3 [ sy#10 sy#3 ] ] with [ zp ZP_BYTE:24 [ calculate_matrix::sy#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 ] ] with [ zp ZP_WORD:42 [ print_byte_at::at#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:82 [ debug_print_init::$59 ] ] with [ zp ZP_WORD:84 [ debug_print_init::$60 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:86 [ debug_print_init::$63 ] ] with [ zp ZP_WORD:88 [ debug_print_init::$64 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:90 [ debug_print_init::$67 ] ] with [ zp ZP_WORD:92 [ debug_print_init::$68 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:94 [ debug_print_init::$71 ] ] with [ zp ZP_WORD:96 [ debug_print_init::$72 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:98 [ debug_print_init::$75 ] ] with [ zp ZP_WORD:100 [ debug_print_init::$76 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:102 [ debug_print_init::$79 ] ] with [ zp ZP_WORD:104 [ debug_print_init::$80 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:106 [ debug_print_init::$83 ] ] with [ zp ZP_WORD:108 [ debug_print_init::$84 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:110 [ debug_print_init::$87 ] ] with [ zp ZP_WORD:112 [ debug_print_init::$88 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:114 [ debug_print_init::$91 ] ] with [ zp ZP_WORD:116 [ debug_print_init::$92 ] ] - score: 1
Coalescing zero page register [ zp ZP_BYTE:2 [ sx#10 sx#3 ] ] with [ zp ZP_BYTE:13 [ debug_print_init::c#2 debug_print_init::c#1 ] ]
Coalescing zero page register [ zp ZP_BYTE:3 [ sy#10 sy#3 calculate_matrix::sy#0 ] ] with [ zp ZP_BYTE:14 [ debug_print_init::i#2 debug_print_init::i#1 ] ]
Coalescing zero page register [ zp ZP_BYTE:4 [ anim::i#2 anim::i#1 ] ] with [ zp ZP_BYTE:5 [ debug_print::c#2 debug_print::c#1 ] ]
Coalescing zero page register [ zp ZP_BYTE:4 [ anim::i#2 anim::i#1 debug_print::c#2 debug_print::c#1 ] ] with [ zp ZP_BYTE:46 [ calculate_matrix::t1#0 ] ]
Coalescing zero page register [ zp ZP_BYTE:4 [ anim::i#2 anim::i#1 debug_print::c#2 debug_print::c#1 calculate_matrix::t1#0 ] ] with [ zp ZP_BYTE:81 [ debug_print_init::col#0 ] ]
Coalescing zero page register [ zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 ] ] with [ zp ZP_BYTE:25 [ rotate_matrix::x#0 ] ]
Coalescing zero page register [ zp ZP_BYTE:6 [ debug_print::i#2 debug_print::i#1 rotate_matrix::x#0 ] ] with [ zp ZP_BYTE:48 [ calculate_matrix::t3#0 ] ]
Coalescing zero page register [ zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 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 ] ] with [ zp ZP_WORD:16 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] ]
Coalescing zero page register [ zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 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 print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] ] with [ zp ZP_WORD:20 [ print_cls::sc#2 print_cls::sc#1 ] ]
Coalescing zero page register [ zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 print_cls::sc#2 print_cls::sc#1 ] ] with [ zp ZP_WORD:82 [ debug_print_init::$59 debug_print_init::$60 ] ]
Coalescing zero page register [ zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 print_cls::sc#2 print_cls::sc#1 debug_print_init::$59 debug_print_init::$60 ] ] with [ zp ZP_WORD:86 [ debug_print_init::$63 debug_print_init::$64 ] ]
Coalescing zero page register [ zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 print_cls::sc#2 print_cls::sc#1 debug_print_init::$59 debug_print_init::$60 debug_print_init::$63 debug_print_init::$64 ] ] with [ zp ZP_WORD:90 [ debug_print_init::$67 debug_print_init::$68 ] ]
Coalescing zero page register [ zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 print_cls::sc#2 print_cls::sc#1 debug_print_init::$59 debug_print_init::$60 debug_print_init::$63 debug_print_init::$64 debug_print_init::$67 debug_print_init::$68 ] ] with [ zp ZP_WORD:94 [ debug_print_init::$71 debug_print_init::$72 ] ]
Coalescing zero page register [ zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 print_cls::sc#2 print_cls::sc#1 debug_print_init::$59 debug_print_init::$60 debug_print_init::$63 debug_print_init::$64 debug_print_init::$67 debug_print_init::$68 debug_print_init::$71 debug_print_init::$72 ] ] with [ zp ZP_WORD:98 [ debug_print_init::$75 debug_print_init::$76 ] ]
Coalescing zero page register [ zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 print_cls::sc#2 print_cls::sc#1 debug_print_init::$59 debug_print_init::$60 debug_print_init::$63 debug_print_init::$64 debug_print_init::$67 debug_print_init::$68 debug_print_init::$71 debug_print_init::$72 debug_print_init::$75 debug_print_init::$76 ] ] with [ zp ZP_WORD:102 [ debug_print_init::$79 debug_print_init::$80 ] ]
Coalescing zero page register [ zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 print_cls::sc#2 print_cls::sc#1 debug_print_init::$59 debug_print_init::$60 debug_print_init::$63 debug_print_init::$64 debug_print_init::$67 debug_print_init::$68 debug_print_init::$71 debug_print_init::$72 debug_print_init::$75 debug_print_init::$76 debug_print_init::$79 debug_print_init::$80 ] ] with [ zp ZP_WORD:106 [ debug_print_init::$83 debug_print_init::$84 ] ]
Coalescing zero page register [ zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 print_cls::sc#2 print_cls::sc#1 debug_print_init::$59 debug_print_init::$60 debug_print_init::$63 debug_print_init::$64 debug_print_init::$67 debug_print_init::$68 debug_print_init::$71 debug_print_init::$72 debug_print_init::$75 debug_print_init::$76 debug_print_init::$79 debug_print_init::$80 debug_print_init::$83 debug_print_init::$84 ] ] with [ zp ZP_WORD:110 [ debug_print_init::$87 debug_print_init::$88 ] ]
Coalescing zero page register [ zp ZP_WORD:7 [ print_sbyte_at::at#21 print_sbyte_at::at#15 print_sbyte_at::at#16 print_sbyte_at::at#17 print_sbyte_at::at#18 print_sbyte_at::at#19 print_sbyte_at::at#20 print_sbyte_at::at#0 print_sbyte_at::at#1 print_sbyte_at::at#2 print_char_at::at#4 print_char_at::at#2 print_char_at::at#3 print_char_at::at#0 print_char_at::at#1 print_byte_at::at#0 print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 print_cls::sc#2 print_cls::sc#1 debug_print_init::$59 debug_print_init::$60 debug_print_init::$63 debug_print_init::$64 debug_print_init::$67 debug_print_init::$68 debug_print_init::$71 debug_print_init::$72 debug_print_init::$75 debug_print_init::$76 debug_print_init::$79 debug_print_init::$80 debug_print_init::$83 debug_print_init::$84 debug_print_init::$87 debug_print_init::$88 ] ] with [ zp ZP_WORD:114 [ debug_print_init::$91 debug_print_init::$92 ] ]
Coalescing zero page register [ zp ZP_BYTE:10 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ] ] with [ zp ZP_BYTE:49 [ calculate_matrix::t4#0 ] ]
Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:5 [ debug_print::i#2 debug_print::i#1 rotate_matrix::x#0 calculate_matrix::t3#0 ]
Allocated (was zp ZP_WORD:7) zp ZP_WORD:6 [ 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 print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 print_cls::sc#2 print_cls::sc#1 debug_print_init::$59 debug_print_init::$60 debug_print_init::$63 debug_print_init::$64 debug_print_init::$67 debug_print_init::$68 debug_print_init::$71 debug_print_init::$72 debug_print_init::$75 debug_print_init::$76 debug_print_init::$79 debug_print_init::$80 debug_print_init::$83 debug_print_init::$84 debug_print_init::$87 debug_print_init::$88 debug_print_init::$91 debug_print_init::$92 ]
Allocated (was zp ZP_BYTE:10) zp ZP_BYTE:8 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 calculate_matrix::t4#0 ]
Allocated (was zp ZP_WORD:18) zp ZP_WORD:9 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ]
Allocated (was zp ZP_BYTE:50) zp ZP_BYTE:11 [ calculate_matrix::t5#0 ]
Allocated (was zp ZP_BYTE:51) zp ZP_BYTE:12 [ calculate_matrix::t6#0 ]
Allocated (was zp ZP_BYTE:52) zp ZP_BYTE:13 [ calculate_matrix::t7#0 ]
Allocated (was zp ZP_BYTE:53) zp ZP_BYTE:14 [ calculate_matrix::t8#0 ]
Allocated (was zp ZP_BYTE:54) zp ZP_BYTE:15 [ calculate_matrix::t9#0 ]
Allocated (was zp ZP_BYTE:55) zp ZP_BYTE:16 [ calculate_matrix::t10#0 ]

ASSEMBLER BEFORE OPTIMIZATION
//SEG0 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  
//SEG1 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(bbegin)
.pc = $80d "Program"
//SEG2 Global Constants & labels
  .label SPRITES_XPOS = $d000
  .label SPRITES_YPOS = $d001
  .label RASTER = $d012
  .label SPRITES_ENABLE = $d015
  .label BORDERCOL = $d020
  .label SPRITES_COLS = $d027
  .const GREEN = 5
  .const LIGHT_BLUE = $e
  .const LIGHT_GREY = $f
  .label print_line_cursor = $400
  // The rotated point - updated by calling rotate_matrix()
  .label xr = $f0
  .label yr = $f1
  .label zr = $f2
  // The rotated point with perspective
  .label pp = $f3
  .label xp = $f4
  .label yp = $f5
  // Pointers used to multiply perspective (d/z0-z) onto x- & y-coordinates. Points into mulf_sqr1 / mulf_sqr2  
  .label psp1 = $f6
  .label psp2 = $f8
  .label SCREEN = $400
  .const sz = 0
  // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x).
  // f(x) = >(( x * x ))
  .label mulf_sqr1 = $2400
  // g(x) =  >((( 1 - x ) * ( 1 - x )))
  .label mulf_sqr2 = $2600
  // A single sprite
  .label SPRITE = $3000
  // Perspective multiplication table containing (d/(z0-z)[z] for each z-value   
  .label PERSP_Z = $2800
  // Sine and Cosine Tables   
  // Angles: $00=0, $80=PI,$100=2*PI
  // Half Sine/Cosine: signed fixed [-$20;20]
  .label SINH = $2000
  // sin(x) = cos(x+PI/2)
  // Quarter Sine/Cosine: signed fixed [-$10,$10]
  .label SINQ = $2200
  // 16 bit Sine and Cosine Tables   
  // Angles: $00=0, $80=PI,$100=2*PI
  // Half Sine/Cosine: signed fixed [-$1f,$1f]
  .label SINH_LO = $4000
  // sin(x) = cos(x+PI/2)
  .label SINH_HI = $4200
  // sin(x) = cos(x+PI/2)
  // Quarter Sine/Cosine: signed fixed [-$0f,$0f]
  .label SINQ_LO = $4400
  // sin(x) = cos(x+PI/2)
  .label SINQ_HI = $4600
  .label COSH = SINH+$40
  .label COSQ = SINQ+$40
  .label sx = 2
  .label sy = 3
//SEG3 @begin
bbegin:
  jmp b33
//SEG4 @33
b33:
//SEG5 kickasm(location (const byte*) mulf_sqr1#0) {{ .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) }     }  }}
//SEG6 kickasm(location (const byte*) mulf_sqr2#0) {{ .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) }       }  }}
//SEG7 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))     .for (var y=0; y<21; y++)         .for (var x=0;x<3; x++)             .byte pic.getSinglecolorByte(x,y)  }}
//SEG8 kickasm(location (const signed byte*) PERSP_Z#0) {{ {     .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)));     	}     } 	}  }}
//SEG9 kickasm(location (const signed byte*) SINH#0) {{ {     .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)     }     }  }}
// sin(x) = cos(x+PI/2)
//SEG10 kickasm(location (const signed byte*) SINQ#0) {{ {     .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)     }     }  }}
//SEG11 kickasm(location (const byte*) SINH_LO#0) {{ {     .var min = -$2000     .var max = $2000     .var ampl = max-min;     .for(var i=0;i<$140;i++) {         .var rad = i*2*PI/256;         .byte <(min+(ampl/2)+(ampl/2)*sin(rad))     }     }  }}
// sin(x) = cos(x+PI/2)
//SEG12 kickasm(location (const byte*) SINH_HI#0) {{ {     .var min = -$2000     .var max = $2000     .var ampl = max-min;     .for(var i=0;i<$140;i++) {         .var rad = i*2*PI/256;         .byte >(min+(ampl/2)+(ampl/2)*sin(rad))     }     }  }}
//SEG13 kickasm(location (const byte*) SINQ_LO#0) {{ {     .var min = -$1000     .var max = $1000     .var ampl = max-min;     .for(var i=0;i<$140;i++) {         .var rad = i*2*PI/256;         .byte <(min+(ampl/2)+(ampl/2)*sin(rad))     }     }  }}
//SEG14 kickasm(location (const byte*) SINQ_HI#0) {{ {     .var min = -$1000     .var max = $1000     .var ampl = max-min;     .for(var i=0;i<$140;i++) {         .var rad = i*2*PI/256;         .byte >(min+(ampl/2)+(ampl/2)*sin(rad))     }     }  }}
//SEG15 [11] call main 
  jsr main
//SEG16 [12] phi from @33 to @end [phi:@33->@end]
bend_from_b33:
  jmp bend
//SEG17 @end
bend:
//SEG18 main
main: {
  //SEG19 asm { sei  }
    sei
  //SEG20 [14] call sprites_init 
    jsr sprites_init
    jmp b1
  //SEG21 main::@1
  b1:
  //SEG22 [15] *((const word*) psp1#0) ← ((word))(const byte*) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 
    //mulf_init();
    lda #<mulf_sqr1
    sta psp1
    lda #>mulf_sqr1
    sta psp1+1
  //SEG23 [16] *((const word*) psp2#0) ← ((word))(const byte*) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 
    lda #<mulf_sqr2
    sta psp2
    lda #>mulf_sqr2
    sta psp2+1
  //SEG24 [17] call debug_print_init 
  //SEG25 [189] phi from main::@1 to debug_print_init [phi:main::@1->debug_print_init]
  debug_print_init_from_b1:
    jsr debug_print_init
  //SEG26 [18] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  b2_from_b1:
    jmp b2
  //SEG27 main::@2
  b2:
  //SEG28 [19] call anim 
  //SEG29 [21] phi from main::@2 to anim [phi:main::@2->anim]
  anim_from_b2:
    jsr anim
    jmp breturn
  //SEG30 main::@return
  breturn:
  //SEG31 [20] return 
    rts
}
//SEG32 anim
anim: {
    .label i = 4
  //SEG33 [22] phi from anim to anim::@1 [phi:anim->anim::@1]
  b1_from_anim:
  //SEG34 [22] phi (signed byte) sy#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbsz1=vbuc1 
    lda #0
    sta sy
  //SEG35 [22] phi (signed byte) sx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#1] -- vbsz1=vbuc1 
    lda #0
    sta sx
    jmp b1
  //signed byte xmin = 0;
  //signed byte xmax = 0;
  //SEG36 anim::@1
  b1:
    jmp b4
  //SEG37 anim::@4
  b4:
  //SEG38 [23] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda RASTER
    cmp #$ff
    bne b4
    jmp b7
  //SEG39 anim::@7
  b7:
  //SEG40 [24] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto anim::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda RASTER
    cmp #$fe
    bne b7
    jmp b10
  //SEG41 anim::@10
  b10:
  //SEG42 [25] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 253) goto anim::@10 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda RASTER
    cmp #$fd
    bne b10
    jmp b12
  //SEG43 anim::@12
  b12:
  //SEG44 [26] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
  //SEG45 [27] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 
    ldx sx
  //SEG46 [28] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10
  //SEG47 [29] call calculate_matrix 
    jsr calculate_matrix
  //SEG48 [30] phi from anim::@12 to anim::@27 [phi:anim::@12->anim::@27]
  b27_from_b12:
    jmp b27
  //SEG49 anim::@27
  b27:
  //SEG50 [31] call store_matrix 
    jsr store_matrix
  //SEG51 [32] phi from anim::@27 to anim::@13 [phi:anim::@27->anim::@13]
  b13_from_b27:
  //SEG52 [32] phi (byte) anim::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@27->anim::@13#0] -- vbuz1=vbuc1 
    lda #0
    sta i
    jmp b13
  //SEG53 [32] phi from anim::@29 to anim::@13 [phi:anim::@29->anim::@13]
  b13_from_b29:
  //SEG54 [32] phi (byte) anim::i#2 = (byte) anim::i#1 [phi:anim::@29->anim::@13#0] -- register_copy 
    jmp b13
  //SEG55 anim::@13
  b13:
  //SEG56 [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
  //SEG57 [34] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy i
    lda xs,y
    sta rotate_matrix.x
  //SEG58 [35] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) -- vbsyy=pbsc1_derefidx_vbuz1 
    ldx i
    ldy ys,x
  //SEG59 [36] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldx i
    lda zs,x
    tax
  //SEG60 [37] call rotate_matrix 
    jsr rotate_matrix
    jmp b29
  //SEG61 anim::@29
  b29:
  //SEG62 [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    //if(*xr<xmin) xmin = *xr;
    //if(*xr>xmax) xmax = *xr;
    ldy i
    lda xr
    sta xrs,y
  //SEG63 [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy i
    lda yr
    sta yrs,y
  //SEG64 [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy i
    lda zr
    sta zrs,y
  //SEG65 [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy i
    lda pp
    sta pps,y
  //SEG66 [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy i
    lda xp
    sta xps,y
  //SEG67 [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    ldy i
    lda yp
    sta yps,y
  //SEG68 [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_rol_1 
    lda i
    asl
    tax
  //SEG69 [45] (byte/word/signed word/dword/signed dword~) anim::$8 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) xp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 
    lda #$80
    clc
    adc xp
  //SEG70 [46] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$8 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SPRITES_XPOS,x
  //SEG71 [47] (byte/word/signed word/dword/signed dword~) anim::$10 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) yp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 
    lda #$80
    clc
    adc yp
  //SEG72 [48] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$10 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SPRITES_YPOS,x
  //SEG73 [49] (byte) anim::i#1 ← ++ (byte) anim::i#2 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG74 [50] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@13 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #8
    bne b13_from_b29
    jmp b25
  //SEG75 anim::@25
  b25:
  //SEG76 [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 -- _deref_pbuc1=vbuc2 
    lda #LIGHT_GREY
    sta BORDERCOL
  //SEG77 [52] call debug_print 
    jsr debug_print
    jmp b30
  //SEG78 anim::@30
  b30:
  //SEG79 [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 
    lda #LIGHT_BLUE
    sta BORDERCOL
  //SEG80 [54] (signed byte) sx#3 ← (signed byte) sx#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbsz1=vbsz1_plus_2 
    // Increment angles        
    inc sx
    inc sx
  //SEG81 [55] (signed byte) sy#3 ← (signed byte) sy#10 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbsz1=vbsz1_minus_vbuc1 
    lda sy
    sec
    sbc #3
    sta sy
  //SEG82 [22] phi from anim::@30 to anim::@1 [phi:anim::@30->anim::@1]
  b1_from_b30:
  //SEG83 [22] phi (signed byte) sy#10 = (signed byte) sy#3 [phi:anim::@30->anim::@1#0] -- register_copy 
  //SEG84 [22] phi (signed byte) sx#10 = (signed byte) sx#3 [phi:anim::@30->anim::@1#1] -- register_copy 
    jmp b1
}
//SEG85 debug_print
debug_print: {
    .const print_sbyte_pos1_row = 0
    .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 = 4
    .label i = 5
  //SEG86 [56] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 
    ldx sx
    jmp print_sbyte_pos1
  //SEG87 debug_print::print_sbyte_pos1
  print_sbyte_pos1:
  //SEG88 [57] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0
  //SEG89 [58] call print_sbyte_at 
  //SEG90 [114] 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:
  //SEG91 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos1_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos1_col#0 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos1_row*$28+print_sbyte_pos1_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos1_row*$28+print_sbyte_pos1_col
    sta print_sbyte_at.at+1
  //SEG92 [114] 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 b3
  //SEG93 debug_print::@3
  b3:
  //SEG94 [59] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsaa=vbsz1 
    lda sy
    jmp print_sbyte_pos2
  //SEG95 debug_print::print_sbyte_pos2
  print_sbyte_pos2:
  //SEG96 [60] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 -- vbsxx=vbsaa 
    tax
  //SEG97 [61] call print_sbyte_at 
  //SEG98 [114] 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:
  //SEG99 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos2_col#0 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
    sta print_sbyte_at.at+1
  //SEG100 [114] 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
  //SEG101 [62] 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
  //SEG102 debug_print::print_sbyte_pos3
  print_sbyte_pos3:
  //SEG103 [63] call print_sbyte_at 
  //SEG104 [114] 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:
  //SEG105 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos3_col#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
    sta print_sbyte_at.at+1
  //SEG106 [114] phi (signed byte) print_sbyte_at::b#22 = (const signed byte) sz#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#1] -- vbsxx=vbsc1 
    ldx #sz
    jsr print_sbyte_at
    jmp b5
  //SEG107 debug_print::@5
  b5:
  //SEG108 [64] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) -- vbsaa=_deref_pbsc1 
    lda rotation_matrix
    jmp print_sbyte_pos4
  //SEG109 debug_print::print_sbyte_pos4
  print_sbyte_pos4:
  //SEG110 [65] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 -- vbsxx=vbsaa 
    tax
  //SEG111 [66] call print_sbyte_at 
  //SEG112 [114] 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:
  //SEG113 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos4_col#0 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
    sta print_sbyte_at.at+1
  //SEG114 [114] 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 b6
  //SEG115 debug_print::@6
  b6:
  //SEG116 [67] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+1
    jmp print_sbyte_pos5
  //SEG117 debug_print::print_sbyte_pos5
  print_sbyte_pos5:
  //SEG118 [68] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0
  //SEG119 [69] call print_sbyte_at 
  //SEG120 [114] 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:
  //SEG121 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos5_col#0 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
    sta print_sbyte_at.at+1
  //SEG122 [114] 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 b7
  //SEG123 debug_print::@7
  b7:
  //SEG124 [70] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+2
    jmp print_sbyte_pos6
  //SEG125 debug_print::print_sbyte_pos6
  print_sbyte_pos6:
  //SEG126 [71] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0
  //SEG127 [72] call print_sbyte_at 
  //SEG128 [114] 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:
  //SEG129 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos6_col#0 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
    sta print_sbyte_at.at+1
  //SEG130 [114] 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 b8
  //SEG131 debug_print::@8
  b8:
  //SEG132 [73] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+3
    jmp print_sbyte_pos7
  //SEG133 debug_print::print_sbyte_pos7
  print_sbyte_pos7:
  //SEG134 [74] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0
  //SEG135 [75] call print_sbyte_at 
  //SEG136 [114] 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:
  //SEG137 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos7_col#0 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
    sta print_sbyte_at.at+1
  //SEG138 [114] 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 b9
  //SEG139 debug_print::@9
  b9:
  //SEG140 [76] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+4
    jmp print_sbyte_pos8
  //SEG141 debug_print::print_sbyte_pos8
  print_sbyte_pos8:
  //SEG142 [77] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0
  //SEG143 [78] call print_sbyte_at 
  //SEG144 [114] 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:
  //SEG145 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos8_col#0 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
    sta print_sbyte_at.at+1
  //SEG146 [114] 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 b10
  //SEG147 debug_print::@10
  b10:
  //SEG148 [79] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+5
    jmp print_sbyte_pos9
  //SEG149 debug_print::print_sbyte_pos9
  print_sbyte_pos9:
  //SEG150 [80] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0
  //SEG151 [81] call print_sbyte_at 
  //SEG152 [114] 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:
  //SEG153 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos9_col#0 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
    sta print_sbyte_at.at+1
  //SEG154 [114] 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 b11
  //SEG155 debug_print::@11
  b11:
  //SEG156 [82] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+6
    jmp print_sbyte_pos10
  //SEG157 debug_print::print_sbyte_pos10
  print_sbyte_pos10:
  //SEG158 [83] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0
  //SEG159 [84] call print_sbyte_at 
  //SEG160 [114] 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:
  //SEG161 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos10_col#0 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
    sta print_sbyte_at.at+1
  //SEG162 [114] 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 b12
  //SEG163 debug_print::@12
  b12:
  //SEG164 [85] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+7
    jmp print_sbyte_pos11
  //SEG165 debug_print::print_sbyte_pos11
  print_sbyte_pos11:
  //SEG166 [86] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0
  //SEG167 [87] call print_sbyte_at 
  //SEG168 [114] 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:
  //SEG169 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos11_col#0 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
    sta print_sbyte_at.at+1
  //SEG170 [114] 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 b13
  //SEG171 debug_print::@13
  b13:
  //SEG172 [88] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+8
    jmp print_sbyte_pos12
  //SEG173 debug_print::print_sbyte_pos12
  print_sbyte_pos12:
  //SEG174 [89] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0
  //SEG175 [90] call print_sbyte_at 
  //SEG176 [114] 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:
  //SEG177 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos12_col#0 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
    sta print_sbyte_at.at+1
  //SEG178 [114] 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
  //SEG179 [91] 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:
  //SEG180 [91] phi (byte) debug_print::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print::print_sbyte_pos12->debug_print::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
  //SEG181 [91] phi (byte) debug_print::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:debug_print::print_sbyte_pos12->debug_print::@1#1] -- vbuz1=vbuc1 
    lda #4
    sta c
    jmp b1
  //SEG182 [91] phi from debug_print::@32 to debug_print::@1 [phi:debug_print::@32->debug_print::@1]
  b1_from_b32:
  //SEG183 [91] phi (byte) debug_print::i#2 = (byte) debug_print::i#1 [phi:debug_print::@32->debug_print::@1#0] -- register_copy 
  //SEG184 [91] phi (byte) debug_print::c#2 = (byte) debug_print::c#1 [phi:debug_print::@32->debug_print::@1#1] -- register_copy 
    jmp b1
  //SEG185 debug_print::@1
  b1:
  //SEG186 [92] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line
    sta print_sbyte_at.at
    lda #>at_line
    adc #0
    sta print_sbyte_at.at+1
  //SEG187 [93] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldx i
    lda xrs,x
    tax
  //SEG188 [94] call print_sbyte_at 
  //SEG189 [114] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at]
  print_sbyte_at_from_b1:
  //SEG190 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#15 [phi:debug_print::@1->print_sbyte_at#0] -- register_copy 
  //SEG191 [114] 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 b27
  //SEG192 debug_print::@27
  b27:
  //SEG193 [95] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*1
    sta print_sbyte_at.at
    lda #>at_line+$28*1
    adc #0
    sta print_sbyte_at.at+1
  //SEG194 [96] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldx i
    lda yrs,x
    tax
  //SEG195 [97] call print_sbyte_at 
  //SEG196 [114] phi from debug_print::@27 to print_sbyte_at [phi:debug_print::@27->print_sbyte_at]
  print_sbyte_at_from_b27:
  //SEG197 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#16 [phi:debug_print::@27->print_sbyte_at#0] -- register_copy 
  //SEG198 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#17 [phi:debug_print::@27->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b28
  //SEG199 debug_print::@28
  b28:
  //SEG200 [98] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*2
    sta print_sbyte_at.at
    lda #>at_line+$28*2
    adc #0
    sta print_sbyte_at.at+1
  //SEG201 [99] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldx i
    lda zrs,x
    tax
  //SEG202 [100] call print_sbyte_at 
  //SEG203 [114] phi from debug_print::@28 to print_sbyte_at [phi:debug_print::@28->print_sbyte_at]
  print_sbyte_at_from_b28:
  //SEG204 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#17 [phi:debug_print::@28->print_sbyte_at#0] -- register_copy 
  //SEG205 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#18 [phi:debug_print::@28->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b29
  //SEG206 debug_print::@29
  b29:
  //SEG207 [101] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*3
    sta print_sbyte_at.at
    lda #>at_line+$28*3
    adc #0
    sta print_sbyte_at.at+1
  //SEG208 [102] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldx i
    lda pps,x
    tax
  //SEG209 [103] call print_sbyte_at 
  //SEG210 [114] phi from debug_print::@29 to print_sbyte_at [phi:debug_print::@29->print_sbyte_at]
  print_sbyte_at_from_b29:
  //SEG211 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#18 [phi:debug_print::@29->print_sbyte_at#0] -- register_copy 
  //SEG212 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#19 [phi:debug_print::@29->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b30
  //SEG213 debug_print::@30
  b30:
  //SEG214 [104] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*4
    sta print_sbyte_at.at
    lda #>at_line+$28*4
    adc #0
    sta print_sbyte_at.at+1
  //SEG215 [105] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldx i
    lda xps,x
    tax
  //SEG216 [106] call print_sbyte_at 
  //SEG217 [114] phi from debug_print::@30 to print_sbyte_at [phi:debug_print::@30->print_sbyte_at]
  print_sbyte_at_from_b30:
  //SEG218 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#19 [phi:debug_print::@30->print_sbyte_at#0] -- register_copy 
  //SEG219 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#20 [phi:debug_print::@30->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b31
  //SEG220 debug_print::@31
  b31:
  //SEG221 [107] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*5
    sta print_sbyte_at.at
    lda #>at_line+$28*5
    adc #0
    sta print_sbyte_at.at+1
  //SEG222 [108] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldx i
    lda yps,x
    tax
  //SEG223 [109] call print_sbyte_at 
  //SEG224 [114] phi from debug_print::@31 to print_sbyte_at [phi:debug_print::@31->print_sbyte_at]
  print_sbyte_at_from_b31:
  //SEG225 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#20 [phi:debug_print::@31->print_sbyte_at#0] -- register_copy 
  //SEG226 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#21 [phi:debug_print::@31->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b32
  //SEG227 debug_print::@32
  b32:
  //SEG228 [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 
    lda #4
    clc
    adc c
    sta c
  //SEG229 [111] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG230 [112] if((byte) debug_print::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #8
    bne b1_from_b32
    jmp breturn
  //SEG231 debug_print::@return
  breturn:
  //SEG232 [113] return 
    rts
}
//SEG233 print_sbyte_at
// Print a signed byte as hex at a specific screen position
// print_sbyte_at(signed byte register(X) b, byte* zeropage(6) at)
print_sbyte_at: {
    .label at = 6
  //SEG234 [115] if((signed byte) print_sbyte_at::b#22<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1 -- vbsxx_lt_0_then_la1 
    cpx #0
    bmi b1
    jmp b3
  //SEG235 print_sbyte_at::@3
  b3:
  //SEG236 [116] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21
  //SEG237 [117] call print_char_at 
  //SEG238 [125] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at]
  print_char_at_from_b3:
  //SEG239 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy 
  //SEG240 [125] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 
    lda #' '
    sta print_char_at.ch
    jsr print_char_at
  //SEG241 [118] phi from print_sbyte_at::@3 print_sbyte_at::@5 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2]
  b2_from_b3:
  b2_from_b5:
  //SEG242 [118] phi (signed byte) print_sbyte_at::b#24 = (signed byte) print_sbyte_at::b#22 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2#0] -- register_copy 
    jmp b2
  //SEG243 print_sbyte_at::@2
  b2:
  //SEG244 [119] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 
    inc print_byte_at.at
    bne !+
    inc print_byte_at.at+1
  !:
  //SEG245 [120] call print_byte_at 
    jsr print_byte_at
    jmp breturn
  //SEG246 print_sbyte_at::@return
  breturn:
  //SEG247 [121] return 
    rts
  //SEG248 print_sbyte_at::@1
  b1:
  //SEG249 [122] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21
  //SEG250 [123] call print_char_at 
  //SEG251 [125] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at]
  print_char_at_from_b1:
  //SEG252 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy 
  //SEG253 [125] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 
    lda #'-'
    sta print_char_at.ch
    jsr print_char_at
    jmp b5
  //SEG254 print_sbyte_at::@5
  b5:
  //SEG255 [124] (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_b5
}
//SEG256 print_char_at
// Print a single char
// print_char_at(byte zeropage(8) ch, byte* zeropage(6) at)
print_char_at: {
    .label at = 6
    .label ch = 8
  //SEG257 [126] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 
    lda ch
    ldy #0
    sta (at),y
    jmp breturn
  //SEG258 print_char_at::@return
  breturn:
  //SEG259 [127] return 
    rts
}
//SEG260 print_byte_at
// Print a byte as HEX at a specific position
// print_byte_at(byte* zeropage(6) at)
print_byte_at: {
    .label at = 6
  //SEG261 [128] (byte~) print_byte_at::$0 ← (byte)(signed byte) print_sbyte_at::b#24 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 
    txa
    lsr
    lsr
    lsr
    lsr
  //SEG262 [129] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuaa 
    tay
    lda print_hextab,y
    sta print_char_at.ch
  //SEG263 [130] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0
  //SEG264 [131] call print_char_at 
  //SEG265 [125] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at]
  print_char_at_from_print_byte_at:
  //SEG266 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy 
  //SEG267 [125] 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
  //SEG268 print_byte_at::@1
  b1:
  //SEG269 [132] (byte~) print_byte_at::$2 ← (byte)(signed byte) print_sbyte_at::b#24 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuxx=vbuxx_band_vbuc1 
    txa
    and #$f
    tax
  //SEG270 [133] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 
    inc print_char_at.at
    bne !+
    inc print_char_at.at+1
  !:
  //SEG271 [134] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuxx 
    lda print_hextab,x
    sta print_char_at.ch
  //SEG272 [135] call print_char_at 
  //SEG273 [125] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at]
  print_char_at_from_b1:
  //SEG274 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy 
  //SEG275 [125] 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
  //SEG276 print_byte_at::@return
  breturn:
  //SEG277 [136] return 
    rts
}
//SEG278 rotate_matrix
// Rotate a 3D point (x,y,z) using the rotation matrix
// The rotation matrix is prepared by calling prepare_matrix() 
// The passed points must be in the interval [-$3f;$3f].
// Implemented in assembler to utilize seriously fast multiplication 
// rotate_matrix(signed byte zeropage(5) x, signed byte register(Y) y, signed byte register(X) z)
rotate_matrix: {
    .label x = 5
  //SEG279 [137] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsz1 
    lda x
    sta xr
  //SEG280 [138] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsyy 
    tya
    sta yr
  //SEG281 [139] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 -- _deref_pbsc1=vbsxx 
    txa
    sta zr
  //SEG282 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
  //SEG283 rotate_matrix::@return
  breturn:
  //SEG284 [141] return 
    rts
}
//SEG285 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: {
  //SEG286 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
  //SEG287 store_matrix::@return
  breturn:
  //SEG288 [143] return 
    rts
}
//SEG289 calculate_matrix
// Prepare the 3x3 rotation matrix into rotation_matrix[]
// Angles sx, sy, sz are based on 2*PI=$100 
// Method described in C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt
// calculate_matrix(signed byte register(X) sx, signed byte zeropage(3) sy)
calculate_matrix: {
    .label sy = 3
    .label t1 = 4
    .label t3 = 5
    .label t4 = 8
    .label t5 = $b
    .label t6 = $c
    .label t7 = $d
    .label t8 = $e
    .label t9 = $f
    .label t10 = $10
  //SEG290 [144] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 - (const signed byte) sz#0 -- vbsz1=vbsz2_minus_vbsc1 
    lda sy
    sec
    sbc #sz
    sta t1
  //SEG291 [145] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 + (const signed byte) sz#0 -- vbsyy=vbsz1_plus_vbsc1 
    lda #sz
    clc
    adc sy
    tay
  //SEG292 [146] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 + (const signed byte) sz#0 -- vbsz1=vbsxx_plus_vbsc1 
    txa
    clc
    adc #sz
    sta t3
  //SEG293 [147] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 - (const signed byte) sz#0 -- vbsz1=vbsxx_minus_vbsc1 
    txa
    sec
    sbc #sz
    sta t4
  //SEG294 [148] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 -- vbsz1=vbsxx_plus_vbsyy 
    txa
    sty $ff
    clc
    adc $ff
    sta t5
  //SEG295 [149] (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 t1
    sta t6
  //SEG296 [150] (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 t1
    sta t7
  //SEG297 [151] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsyy_minus_vbsxx 
    tya
    stx $ff
    sec
    sbc $ff
    sta t8
  //SEG298 [152] (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 sy
    sta t9
  //SEG299 [153] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_plus_vbsxx 
    txa
    clc
    adc sy
    sta t10
  //SEG300 [154] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsyy 
    ldx t1
    clc
    lda COSH,x
    adc COSH,y
  //SEG301 [155] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix
  //SEG302 [156] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsyy 
    ldx t1
    sec
    lda SINH,x
    sbc SINH,y
  //SEG303 [157] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (signed byte~) calculate_matrix::$11 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+1
  //SEG304 [158] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz1 
    ldy sy
    clc
    lda SINH,y
    adc SINH,y
  //SEG305 [159] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (signed byte~) calculate_matrix::$12 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+2
  //SEG306 [160] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 
    ldx t3
    ldy t4
    sec
    lda SINH,x
    sbc SINH,y
  //SEG307 [161] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy t6
    clc
    adc COSQ,y
  //SEG308 [162] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t5
    sec
    sbc COSQ,y
  //SEG309 [163] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy t8
    clc
    adc COSQ,y
  //SEG310 [164] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t7
    sec
    sbc COSQ,y
  //SEG311 [165] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (signed byte~) calculate_matrix::$17 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+3
  //SEG312 [166] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 
    ldx t3
    ldy t4
    clc
    lda COSH,x
    adc COSH,y
  //SEG313 [167] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy t5
    clc
    adc SINQ,y
  //SEG314 [168] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t6
    sec
    sbc SINQ,y
  //SEG315 [169] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t7
    sec
    sbc SINQ,y
  //SEG316 [170] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t8
    sec
    sbc SINQ,y
  //SEG317 [171] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (signed byte~) calculate_matrix::$22 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+4
  //SEG318 [172] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 
    ldx t9
    ldy t10
    sec
    lda SINH,x
    sbc SINH,y
  //SEG319 [173] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (signed byte~) calculate_matrix::$23 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+5
  //SEG320 [174] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 
    ldx t4
    ldy t3
    sec
    lda COSH,x
    sbc COSH,y
  //SEG321 [175] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy t6
    clc
    adc SINQ,y
  //SEG322 [176] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t5
    sec
    sbc SINQ,y
  //SEG323 [177] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t8
    sec
    sbc SINQ,y
  //SEG324 [178] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t7
    sec
    sbc SINQ,y
  //SEG325 [179] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (signed byte~) calculate_matrix::$28 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+6
  //SEG326 [180] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 
    ldx t3
    ldy t4
    clc
    lda SINH,x
    adc SINH,y
  //SEG327 [181] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy t6
    clc
    adc COSQ,y
  //SEG328 [182] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t5
    sec
    sbc COSQ,y
  //SEG329 [183] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy t7
    clc
    adc COSQ,y
  //SEG330 [184] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t8
    sec
    sbc COSQ,y
  //SEG331 [185] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (signed byte~) calculate_matrix::$33 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+7
  //SEG332 [186] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 
    ldx t9
    ldy t10
    clc
    lda COSH,x
    adc COSH,y
  //SEG333 [187] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (signed byte~) calculate_matrix::$34 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+8
    jmp breturn
  //SEG334 calculate_matrix::@return
  breturn:
  //SEG335 [188] return 
    rts
}
//SEG336 debug_print_init
debug_print_init: {
    .label COLS = $d800
    .label at_line = SCREEN+$10*$28
    .label at_cols = COLS+$10*$28
    .label _59 = 6
    .label _60 = 6
    .label _63 = 6
    .label _64 = 6
    .label _67 = 6
    .label _68 = 6
    .label _71 = 6
    .label _72 = 6
    .label _75 = 6
    .label _76 = 6
    .label _79 = 6
    .label _80 = 6
    .label _83 = 6
    .label _84 = 6
    .label _87 = 6
    .label _88 = 6
    .label _91 = 6
    .label _92 = 6
    .label col = 4
    .label c = 2
    .label i = 3
  //SEG337 [190] call print_cls 
  //SEG338 [267] phi from debug_print_init to print_cls [phi:debug_print_init->print_cls]
  print_cls_from_debug_print_init:
    jsr print_cls
  //SEG339 [191] phi from debug_print_init to debug_print_init::@5 [phi:debug_print_init->debug_print_init::@5]
  b5_from_debug_print_init:
    jmp b5
  //SEG340 debug_print_init::@5
  b5:
  //SEG341 [192] call print_str_at 
  //SEG342 [260] phi from debug_print_init::@5 to print_str_at [phi:debug_print_init::@5->print_str_at]
  print_str_at_from_b5:
  //SEG343 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@5->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$22
    sta print_str_at.at
    lda #>SCREEN+$22
    sta print_str_at.at+1
  //SEG344 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str [phi:debug_print_init::@5->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str_at.str
    lda #>str
    sta print_str_at.str+1
    jsr print_str_at
  //SEG345 [193] 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
  //SEG346 debug_print_init::@6
  b6:
  //SEG347 [194] call print_str_at 
  //SEG348 [260] phi from debug_print_init::@6 to print_str_at [phi:debug_print_init::@6->print_str_at]
  print_str_at_from_b6:
  //SEG349 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@6->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*1+$22
    sta print_str_at.at
    lda #>SCREEN+$28*1+$22
    sta print_str_at.at+1
  //SEG350 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str1 [phi:debug_print_init::@6->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str_at.str
    lda #>str1
    sta print_str_at.str+1
    jsr print_str_at
  //SEG351 [195] 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
  //SEG352 debug_print_init::@7
  b7:
  //SEG353 [196] call print_str_at 
  //SEG354 [260] phi from debug_print_init::@7 to print_str_at [phi:debug_print_init::@7->print_str_at]
  print_str_at_from_b7:
  //SEG355 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@7->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*2+$22
    sta print_str_at.at
    lda #>SCREEN+$28*2+$22
    sta print_str_at.at+1
  //SEG356 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str2 [phi:debug_print_init::@7->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str_at.str
    lda #>str2
    sta print_str_at.str+1
    jsr print_str_at
  //SEG357 [197] 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
  //SEG358 debug_print_init::@8
  b8:
  //SEG359 [198] call print_str_at 
  //SEG360 [260] phi from debug_print_init::@8 to print_str_at [phi:debug_print_init::@8->print_str_at]
  print_str_at_from_b8:
  //SEG361 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:debug_print_init::@8->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$10
    sta print_str_at.at
    lda #>SCREEN+$28*$10
    sta print_str_at.at+1
  //SEG362 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str3 [phi:debug_print_init::@8->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str3
    sta print_str_at.str
    lda #>str3
    sta print_str_at.str+1
    jsr print_str_at
  //SEG363 [199] 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
  //SEG364 debug_print_init::@9
  b9:
  //SEG365 [200] call print_str_at 
  //SEG366 [260] phi from debug_print_init::@9 to print_str_at [phi:debug_print_init::@9->print_str_at]
  print_str_at_from_b9:
  //SEG367 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 17 [phi:debug_print_init::@9->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$11
    sta print_str_at.at
    lda #>SCREEN+$28*$11
    sta print_str_at.at+1
  //SEG368 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str4 [phi:debug_print_init::@9->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str4
    sta print_str_at.str
    lda #>str4
    sta print_str_at.str+1
    jsr print_str_at
  //SEG369 [201] 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
  //SEG370 debug_print_init::@10
  b10:
  //SEG371 [202] call print_str_at 
  //SEG372 [260] phi from debug_print_init::@10 to print_str_at [phi:debug_print_init::@10->print_str_at]
  print_str_at_from_b10:
  //SEG373 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 18 [phi:debug_print_init::@10->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$12
    sta print_str_at.at
    lda #>SCREEN+$28*$12
    sta print_str_at.at+1
  //SEG374 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str5 [phi:debug_print_init::@10->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str5
    sta print_str_at.str
    lda #>str5
    sta print_str_at.str+1
    jsr print_str_at
  //SEG375 [203] 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
  //SEG376 debug_print_init::@11
  b11:
  //SEG377 [204] call print_str_at 
  //SEG378 [260] phi from debug_print_init::@11 to print_str_at [phi:debug_print_init::@11->print_str_at]
  print_str_at_from_b11:
  //SEG379 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 19 [phi:debug_print_init::@11->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$13
    sta print_str_at.at
    lda #>SCREEN+$28*$13
    sta print_str_at.at+1
  //SEG380 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str6 [phi:debug_print_init::@11->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str6
    sta print_str_at.str
    lda #>str6
    sta print_str_at.str+1
    jsr print_str_at
  //SEG381 [205] 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
  //SEG382 debug_print_init::@12
  b12:
  //SEG383 [206] call print_str_at 
  //SEG384 [260] phi from debug_print_init::@12 to print_str_at [phi:debug_print_init::@12->print_str_at]
  print_str_at_from_b12:
  //SEG385 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 20 [phi:debug_print_init::@12->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$14
    sta print_str_at.at
    lda #>SCREEN+$28*$14
    sta print_str_at.at+1
  //SEG386 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str7 [phi:debug_print_init::@12->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str7
    sta print_str_at.str
    lda #>str7
    sta print_str_at.str+1
    jsr print_str_at
  //SEG387 [207] 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
  //SEG388 debug_print_init::@13
  b13:
  //SEG389 [208] call print_str_at 
  //SEG390 [260] phi from debug_print_init::@13 to print_str_at [phi:debug_print_init::@13->print_str_at]
  print_str_at_from_b13:
  //SEG391 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 21 [phi:debug_print_init::@13->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$15
    sta print_str_at.at
    lda #>SCREEN+$28*$15
    sta print_str_at.at+1
  //SEG392 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str8 [phi:debug_print_init::@13->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str8
    sta print_str_at.str
    lda #>str8
    sta print_str_at.str+1
    jsr print_str_at
  //SEG393 [209] 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
  //SEG394 debug_print_init::@14
  b14:
  //SEG395 [210] call print_str_at 
  //SEG396 [260] phi from debug_print_init::@14 to print_str_at [phi:debug_print_init::@14->print_str_at]
  print_str_at_from_b14:
  //SEG397 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 22 [phi:debug_print_init::@14->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$16
    sta print_str_at.at
    lda #>SCREEN+$28*$16
    sta print_str_at.at+1
  //SEG398 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str9 [phi:debug_print_init::@14->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str9
    sta print_str_at.str
    lda #>str9
    sta print_str_at.str+1
    jsr print_str_at
  //SEG399 [211] 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
  //SEG400 debug_print_init::@15
  b15:
  //SEG401 [212] call print_str_at 
  //SEG402 [260] phi from debug_print_init::@15 to print_str_at [phi:debug_print_init::@15->print_str_at]
  print_str_at_from_b15:
  //SEG403 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 23 [phi:debug_print_init::@15->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$17
    sta print_str_at.at
    lda #>SCREEN+$28*$17
    sta print_str_at.at+1
  //SEG404 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str10 [phi:debug_print_init::@15->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str10
    sta print_str_at.str
    lda #>str10
    sta print_str_at.str+1
    jsr print_str_at
  //SEG405 [213] phi from debug_print_init::@15 to debug_print_init::@16 [phi:debug_print_init::@15->debug_print_init::@16]
  b16_from_b15:
    jmp b16
  //SEG406 debug_print_init::@16
  b16:
  //SEG407 [214] call print_str_at 
  //SEG408 [260] phi from debug_print_init::@16 to print_str_at [phi:debug_print_init::@16->print_str_at]
  print_str_at_from_b16:
  //SEG409 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24 [phi:debug_print_init::@16->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$18
    sta print_str_at.at
    lda #>SCREEN+$28*$18
    sta print_str_at.at+1
  //SEG410 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str11 [phi:debug_print_init::@16->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str11
    sta print_str_at.str
    lda #>str11
    sta print_str_at.str+1
    jsr print_str_at
  //SEG411 [215] phi from debug_print_init::@16 to debug_print_init::@1 [phi:debug_print_init::@16->debug_print_init::@1]
  b1_from_b16:
  //SEG412 [215] phi (byte) debug_print_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print_init::@16->debug_print_init::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
  //SEG413 [215] phi (byte) debug_print_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:debug_print_init::@16->debug_print_init::@1#1] -- vbuz1=vbuc1 
    lda #4
    sta c
    jmp b1
  //SEG414 [215] phi from debug_print_init::@3 to debug_print_init::@1 [phi:debug_print_init::@3->debug_print_init::@1]
  b1_from_b3:
  //SEG415 [215] 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 
  //SEG416 [215] 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
  //SEG417 debug_print_init::@1
  b1:
  //SEG418 [216] (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 c
    clc
    adc #<at_line
    sta print_sbyte_at.at
    lda #>at_line
    adc #0
    sta print_sbyte_at.at+1
  //SEG419 [217] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldx i
    lda xs,x
    tax
  //SEG420 [218] call print_sbyte_at 
  //SEG421 [114] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at]
  print_sbyte_at_from_b1:
  //SEG422 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#0 [phi:debug_print_init::@1->print_sbyte_at#0] -- register_copy 
  //SEG423 [114] 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 b18
  //SEG424 debug_print_init::@18
  b18:
  //SEG425 [219] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*1
    sta print_sbyte_at.at
    lda #>at_line+$28*1
    adc #0
    sta print_sbyte_at.at+1
  //SEG426 [220] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldx i
    lda ys,x
    tax
  //SEG427 [221] call print_sbyte_at 
  //SEG428 [114] phi from debug_print_init::@18 to print_sbyte_at [phi:debug_print_init::@18->print_sbyte_at]
  print_sbyte_at_from_b18:
  //SEG429 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#1 [phi:debug_print_init::@18->print_sbyte_at#0] -- register_copy 
  //SEG430 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#2 [phi:debug_print_init::@18->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
    jmp b19
  //SEG431 debug_print_init::@19
  b19:
  //SEG432 [222] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*2
    sta print_sbyte_at.at
    lda #>at_line+$28*2
    adc #0
    sta print_sbyte_at.at+1
  //SEG433 [223] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldx i
    lda zs,x
    tax
  //SEG434 [224] call print_sbyte_at 
  //SEG435 [114] phi from debug_print_init::@19 to print_sbyte_at [phi:debug_print_init::@19->print_sbyte_at]
  print_sbyte_at_from_b19:
  //SEG436 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#2 [phi:debug_print_init::@19->print_sbyte_at#0] -- register_copy 
  //SEG437 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#3 [phi:debug_print_init::@19->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
  //SEG438 [225] phi from debug_print_init::@19 to debug_print_init::@2 [phi:debug_print_init::@19->debug_print_init::@2]
  b2_from_b19:
  //SEG439 [225] phi (byte) debug_print_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print_init::@19->debug_print_init::@2#0] -- vbuxx=vbuc1 
    ldx #0
    jmp b2
  //SEG440 [225] phi from debug_print_init::@2 to debug_print_init::@2 [phi:debug_print_init::@2->debug_print_init::@2]
  b2_from_b2:
  //SEG441 [225] 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
  //SEG442 debug_print_init::@2
  b2:
  //SEG443 [226] (byte) debug_print_init::col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) debug_print_init::i#2 -- vbuz1=vbuc1_plus_vbuz2 
    lda #8
    clc
    adc i
    sta col
  //SEG444 [227] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols
    sta _59
    lda #>at_cols
    adc #0
    sta _59+1
  //SEG445 [228] (byte*~) debug_print_init::$60 ← (byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx 
    txa
    clc
    adc _60
    sta _60
    lda #0
    adc _60+1
    sta _60+1
  //SEG446 [229] *((byte*~) debug_print_init::$60) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    ldy #0
    sta (_60),y
  //SEG447 [230] (byte*~) debug_print_init::$63 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*1
    sta _63
    lda #>at_cols+$28*1
    adc #0
    sta _63+1
  //SEG448 [231] (byte*~) debug_print_init::$64 ← (byte*~) debug_print_init::$63 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx 
    txa
    clc
    adc _64
    sta _64
    lda #0
    adc _64+1
    sta _64+1
  //SEG449 [232] *((byte*~) debug_print_init::$64) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    ldy #0
    sta (_64),y
  //SEG450 [233] (byte*~) debug_print_init::$67 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*2
    sta _67
    lda #>at_cols+$28*2
    adc #0
    sta _67+1
  //SEG451 [234] (byte*~) debug_print_init::$68 ← (byte*~) debug_print_init::$67 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx 
    txa
    clc
    adc _68
    sta _68
    lda #0
    adc _68+1
    sta _68+1
  //SEG452 [235] *((byte*~) debug_print_init::$68) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    ldy #0
    sta (_68),y
  //SEG453 [236] (byte*~) debug_print_init::$71 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*3
    sta _71
    lda #>at_cols+$28*3
    adc #0
    sta _71+1
  //SEG454 [237] (byte*~) debug_print_init::$72 ← (byte*~) debug_print_init::$71 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx 
    txa
    clc
    adc _72
    sta _72
    lda #0
    adc _72+1
    sta _72+1
  //SEG455 [238] *((byte*~) debug_print_init::$72) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    ldy #0
    sta (_72),y
  //SEG456 [239] (byte*~) debug_print_init::$75 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*4
    sta _75
    lda #>at_cols+$28*4
    adc #0
    sta _75+1
  //SEG457 [240] (byte*~) debug_print_init::$76 ← (byte*~) debug_print_init::$75 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx 
    txa
    clc
    adc _76
    sta _76
    lda #0
    adc _76+1
    sta _76+1
  //SEG458 [241] *((byte*~) debug_print_init::$76) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    ldy #0
    sta (_76),y
  //SEG459 [242] (byte*~) debug_print_init::$79 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*5
    sta _79
    lda #>at_cols+$28*5
    adc #0
    sta _79+1
  //SEG460 [243] (byte*~) debug_print_init::$80 ← (byte*~) debug_print_init::$79 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx 
    txa
    clc
    adc _80
    sta _80
    lda #0
    adc _80+1
    sta _80+1
  //SEG461 [244] *((byte*~) debug_print_init::$80) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    ldy #0
    sta (_80),y
  //SEG462 [245] (byte*~) debug_print_init::$83 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*6
    sta _83
    lda #>at_cols+$28*6
    adc #0
    sta _83+1
  //SEG463 [246] (byte*~) debug_print_init::$84 ← (byte*~) debug_print_init::$83 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx 
    txa
    clc
    adc _84
    sta _84
    lda #0
    adc _84+1
    sta _84+1
  //SEG464 [247] *((byte*~) debug_print_init::$84) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    ldy #0
    sta (_84),y
  //SEG465 [248] (byte*~) debug_print_init::$87 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*7
    sta _87
    lda #>at_cols+$28*7
    adc #0
    sta _87+1
  //SEG466 [249] (byte*~) debug_print_init::$88 ← (byte*~) debug_print_init::$87 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx 
    txa
    clc
    adc _88
    sta _88
    lda #0
    adc _88+1
    sta _88+1
  //SEG467 [250] *((byte*~) debug_print_init::$88) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    ldy #0
    sta (_88),y
  //SEG468 [251] (byte*~) debug_print_init::$91 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*8
    sta _91
    lda #>at_cols+$28*8
    adc #0
    sta _91+1
  //SEG469 [252] (byte*~) debug_print_init::$92 ← (byte*~) debug_print_init::$91 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx 
    txa
    clc
    adc _92
    sta _92
    lda #0
    adc _92+1
    sta _92+1
  //SEG470 [253] *((byte*~) debug_print_init::$92) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    ldy #0
    sta (_92),y
  //SEG471 [254] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG472 [255] if((byte) debug_print_init::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto debug_print_init::@2 -- vbuxx_neq_vbuc1_then_la1 
    cpx #4
    bne b2_from_b2
    jmp b3
  //SEG473 debug_print_init::@3
  b3:
  //SEG474 [256] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 
    lda #4
    clc
    adc c
    sta c
  //SEG475 [257] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG476 [258] if((byte) debug_print_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print_init::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #8
    bne b1_from_b3
    jmp breturn
  //SEG477 debug_print_init::@return
  breturn:
  //SEG478 [259] return 
    rts
    str: .text "sx@"
    str1: .text "sy@"
    str2: .text "sz@"
    str3: .text "x@"
    str4: .text "y@"
    str5: .text "z@"
    str6: .text "xr@"
    str7: .text "yr@"
    str8: .text "zr@"
    str9: .text "pp@"
    str10: .text "xp@"
    str11: .text "yp@"
}
//SEG479 print_str_at
// Print a string at a specific screen position
// print_str_at(byte* zeropage(6) str, byte* zeropage(9) at)
print_str_at: {
    .label at = 9
    .label str = 6
  //SEG480 [261] 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:
  //SEG481 [261] 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 
  //SEG482 [261] 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
  //SEG483 print_str_at::@1
  b1:
  //SEG484 [262] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 
    ldy #0
    lda (str),y
    cmp #'@'
    bne b2
    jmp breturn
  //SEG485 print_str_at::@return
  breturn:
  //SEG486 [263] return 
    rts
  //SEG487 print_str_at::@2
  b2:
  //SEG488 [264] *((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
  //SEG489 [265] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 -- pbuz1=_inc_pbuz1 
    inc at
    bne !+
    inc at+1
  !:
  //SEG490 [266] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 -- pbuz1=_inc_pbuz1 
    inc str
    bne !+
    inc str+1
  !:
    jmp b1_from_b2
}
//SEG491 print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    .label sc = 6
  //SEG492 [268] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
  b1_from_print_cls:
  //SEG493 [268] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor
    sta sc
    lda #>print_line_cursor
    sta sc+1
    jmp b1
  //SEG494 [268] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
  b1_from_b1:
  //SEG495 [268] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy 
    jmp b1
  //SEG496 print_cls::@1
  b1:
  //SEG497 [269] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (sc),y
  //SEG498 [270] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 
    inc sc
    bne !+
    inc sc+1
  !:
  //SEG499 [271] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 
    lda sc+1
    cmp #>print_line_cursor+$3e8
    bne b1_from_b1
    lda sc
    cmp #<print_line_cursor+$3e8
    bne b1_from_b1
    jmp breturn
  //SEG500 print_cls::@return
  breturn:
  //SEG501 [272] return 
    rts
}
//SEG502 sprites_init
// Initialize sprites
sprites_init: {
    .label SCREEN = $400
    .label sprites_ptr = SCREEN+$3f8
  //SEG503 [273] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 
    lda #$ff
    sta SPRITES_ENABLE
  //SEG504 [274] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1]
  b1_from_sprites_init:
  //SEG505 [274] phi (byte) sprites_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#0] -- vbuxx=vbuc1 
    ldx #0
    jmp b1
  //SEG506 [274] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1]
  b1_from_b1:
  //SEG507 [274] phi (byte) sprites_init::i#2 = (byte) sprites_init::i#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy 
    jmp b1
  //SEG508 sprites_init::@1
  b1:
  //SEG509 [275] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #$ff&SPRITE/$40
    sta sprites_ptr,x
  //SEG510 [276] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #GREEN
    sta SPRITES_COLS,x
  //SEG511 [277] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG512 [278] if((byte) sprites_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #8
    bne b1_from_b1
    jmp breturn
  //SEG513 sprites_init::@return
  breturn:
  //SEG514 [279] return 
    rts
}
  print_hextab: .text "0123456789abcdef"
  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
  // Positions to rotate
  xs: .byte -$34, -$34, -$34, 0, 0, $34, $34, $34
  ys: .byte -$34, 0, $34, -$34, $34, -$34, 0, $34
.pc = mulf_sqr1 "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) }
    }

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

.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)

.pc = PERSP_Z "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)));
    	}
    }
	}

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

.pc = SINQ "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 = SINH_LO "SINH_LO"
  {
    .var min = -$2000
    .var max = $2000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte <(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }

.pc = SINH_HI "SINH_HI"
  {
    .var min = -$2000
    .var max = $2000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte >(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }

.pc = SINQ_LO "SINQ_LO"
  {
    .var min = -$1000
    .var max = $1000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte <(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }

.pc = SINQ_HI "SINQ_HI"
  {
    .var min = -$1000
    .var max = $1000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte >(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }


ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b33
Removing instruction jmp bend
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b4
Removing instruction jmp b7
Removing instruction jmp b10
Removing instruction jmp b12
Removing instruction jmp b27
Removing instruction jmp b13
Removing instruction jmp b29
Removing instruction jmp b25
Removing instruction jmp b30
Removing instruction jmp print_sbyte_pos1
Removing instruction jmp b3
Removing instruction jmp print_sbyte_pos2
Removing instruction jmp print_sbyte_pos3
Removing instruction jmp b5
Removing instruction jmp print_sbyte_pos4
Removing instruction jmp b6
Removing instruction jmp print_sbyte_pos5
Removing instruction jmp b7
Removing instruction jmp print_sbyte_pos6
Removing instruction jmp b8
Removing instruction jmp print_sbyte_pos7
Removing instruction jmp b9
Removing instruction jmp print_sbyte_pos8
Removing instruction jmp b10
Removing instruction jmp print_sbyte_pos9
Removing instruction jmp b11
Removing instruction jmp print_sbyte_pos10
Removing instruction jmp b12
Removing instruction jmp print_sbyte_pos11
Removing instruction jmp b13
Removing instruction jmp print_sbyte_pos12
Removing instruction jmp b1
Removing instruction jmp b27
Removing instruction jmp b28
Removing instruction jmp b29
Removing instruction jmp b30
Removing instruction jmp b31
Removing instruction jmp b32
Removing instruction jmp breturn
Removing instruction jmp b3
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp b5
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 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 b16
Removing instruction jmp b1
Removing instruction jmp b18
Removing instruction jmp b19
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp breturn
Removing instruction jmp b1
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 ldx i
Removing instruction ldy i
Removing instruction ldy i
Removing instruction ldy i
Removing instruction ldy i
Removing instruction ldy i
Replacing instruction lda i with TYA
Replacing instruction ldx zr with TAX
Removing instruction ldx t1
Removing instruction ldx t3
Replacing instruction lda #0 with TYA
Removing instruction ldy #0
Replacing instruction lda #0 with TYA
Removing instruction ldy #0
Replacing instruction lda #0 with TYA
Removing instruction ldy #0
Replacing instruction lda #0 with TYA
Removing instruction ldy #0
Replacing instruction lda #0 with TYA
Removing instruction ldy #0
Replacing instruction lda #0 with TYA
Removing instruction ldy #0
Replacing instruction lda #0 with TYA
Removing instruction ldy #0
Replacing instruction lda #0 with TYA
Removing instruction ldy #0
Removing instruction ldy #0
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label b13_from_b29 with b13
Replacing label b1 with b4
Replacing label b1_from_b32 with b1
Replacing label b2_from_b5 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
Replacing label b1_from_b1 with b1
Replacing label b1_from_b1 with b1
Removing instruction b33:
Removing instruction bend_from_b33:
Removing instruction b2_from_b1:
Removing instruction anim_from_b2:
Removing instruction b1:
Removing instruction b27_from_b12:
Removing instruction b13_from_b29:
Removing instruction print_sbyte_at_from_print_sbyte_pos1:
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_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_b32:
Removing instruction print_char_at_from_b3:
Removing instruction b2_from_b3:
Removing instruction b2_from_b5:
Removing instruction print_char_at_from_b1:
Removing instruction b5_from_debug_print_init:
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 b16_from_b15:
Removing instruction print_str_at_from_b16:
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:
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 b12:
Removing instruction b27:
Removing instruction b13_from_b27:
Removing instruction b29:
Removing instruction b25:
Removing instruction b30:
Removing instruction b1_from_b30:
Removing instruction print_sbyte_pos1:
Removing instruction b3:
Removing instruction print_sbyte_pos2:
Removing instruction print_sbyte_at_from_print_sbyte_pos2:
Removing instruction print_sbyte_pos3:
Removing instruction b5:
Removing instruction print_sbyte_pos4:
Removing instruction print_sbyte_at_from_print_sbyte_pos4:
Removing instruction b6:
Removing instruction print_sbyte_pos5:
Removing instruction b7:
Removing instruction print_sbyte_pos6:
Removing instruction b8:
Removing instruction print_sbyte_pos7:
Removing instruction b9:
Removing instruction print_sbyte_pos8:
Removing instruction b10:
Removing instruction print_sbyte_pos9:
Removing instruction b11:
Removing instruction print_sbyte_pos10:
Removing instruction b12:
Removing instruction print_sbyte_pos11:
Removing instruction b13:
Removing instruction print_sbyte_pos12:
Removing instruction b1_from_print_sbyte_pos12:
Removing instruction print_sbyte_at_from_b1:
Removing instruction b27:
Removing instruction print_sbyte_at_from_b27:
Removing instruction b28:
Removing instruction print_sbyte_at_from_b28:
Removing instruction b29:
Removing instruction print_sbyte_at_from_b29:
Removing instruction b30:
Removing instruction print_sbyte_at_from_b30:
Removing instruction b31:
Removing instruction print_sbyte_at_from_b31:
Removing instruction b32:
Removing instruction breturn:
Removing instruction b3:
Removing instruction breturn:
Removing instruction b5:
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 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 b16:
Removing instruction b1_from_b16:
Removing instruction print_sbyte_at_from_b1:
Removing instruction b18:
Removing instruction print_sbyte_at_from_b18:
Removing instruction b19:
Removing instruction print_sbyte_at_from_b19:
Removing instruction b2_from_b19:
Removing instruction b3:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction b1_from_print_cls:
Removing instruction breturn:
Removing instruction b1_from_sprites_init:
Removing instruction breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Updating BasicUpstart to call main directly
Removing instruction jsr main
Succesful ASM optimization Pass5SkipBegin
Removing instruction jmp b13
Removing instruction jmp b1
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b1
Removing instruction jmp b1
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction bbegin:
Succesful ASM optimization Pass5UnusedLabelElimination
Fixing long branch [338] bne b1 to beq
Fixing long branch [1030] bne b2 to beq
Fixing long branch [1040] bne b1 to beq

FINAL SYMBOL TABLE
(label) @33
(label) @begin
(label) @end
(byte*) BGCOL
(byte*) BGCOL1
(byte*) BGCOL2
(byte*) BGCOL3
(byte*) BGCOL4
(byte) BLACK
(byte) BLUE
(byte*) BORDERCOL
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
(byte) BROWN
(byte*) CHARGEN
(byte*) CIA1_INTERRUPT
(byte*) CIA1_PORT_A
(byte*) CIA1_PORT_A_DDR
(byte*) CIA1_PORT_B
(byte*) CIA1_PORT_B_DDR
(byte*) CIA2_INTERRUPT
(byte*) CIA2_PORT_A
(byte*) CIA2_PORT_A_DDR
(byte*) CIA2_PORT_B
(byte*) CIA2_PORT_B_DDR
(byte) CIA_INTERRUPT_CLEAR
(byte*) COLS
(signed byte*) COSH
(const signed byte*) COSH#0 COSH = (const signed byte*) SINH#0+(byte/signed byte/word/signed word/dword/signed dword) 64
(byte*) COSH_HI
(byte*) COSH_LO
(signed byte*) COSQ
(const signed byte*) COSQ#0 COSQ = (const signed byte*) SINQ#0+(byte/signed byte/word/signed word/dword/signed dword) 64
(byte*) COSQ_HI
(byte*) COSQ_LO
(byte) CYAN
(byte*) D011
(byte*) D016
(byte*) D018
(byte) DARK_GREY
(byte) GREEN
(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5
(byte) GREY
(void()**) HARDWARE_IRQ
(byte) IRQ_COLLISION_BG
(byte) IRQ_COLLISION_SPRITE
(byte*) IRQ_ENABLE
(byte) IRQ_LIGHTPEN
(byte) IRQ_RASTER
(byte*) IRQ_STATUS
(void()**) KERNEL_IRQ
(byte*) LIGHTPEN_X
(byte*) LIGHTPEN_Y
(byte) LIGHT_BLUE
(const byte) LIGHT_BLUE#0 LIGHT_BLUE = (byte/signed byte/word/signed word/dword/signed dword) 14
(byte) LIGHT_GREEN
(byte) LIGHT_GREY
(const byte) LIGHT_GREY#0 LIGHT_GREY = (byte/signed byte/word/signed word/dword/signed dword) 15
(byte) ORANGE
(signed byte*) PERSP_Z
(const signed byte*) PERSP_Z#0 PERSP_Z = ((signed byte*))(word/signed word/dword/signed dword) 10240
(byte) PINK
(byte*) PROCPORT
(byte) PROCPORT_BASIC_KERNEL_IO
(byte*) PROCPORT_DDR
(byte) PROCPORT_DDR_MEMORY_MASK
(byte) PROCPORT_KERNEL_IO
(byte) PROCPORT_RAM_ALL
(byte) PROCPORT_RAM_CHARROM
(byte) PROCPORT_RAM_IO
(byte) PURPLE
(byte*) RASTER
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
(byte) RED
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
(signed byte*) SINH
(const signed byte*) SINH#0 SINH = ((signed byte*))(word/signed word/dword/signed dword) 8192
(byte*) SINH_HI
(const byte*) SINH_HI#0 SINH_HI = ((byte*))(word/signed word/dword/signed dword) 16896
(byte*) SINH_LO
(const byte*) SINH_LO#0 SINH_LO = ((byte*))(word/signed word/dword/signed dword) 16384
(signed byte*) SINQ
(const signed byte*) SINQ#0 SINQ = ((signed byte*))(word/signed word/dword/signed dword) 8704
(byte*) SINQ_HI
(const byte*) SINQ_HI#0 SINQ_HI = ((byte*))(word/signed word/dword/signed dword) 17920
(byte*) SINQ_LO
(const byte*) SINQ_LO#0 SINQ_LO = ((byte*))(word/signed word/dword/signed dword) 17408
(byte*) SPRITE
(const byte*) SPRITE#0 SPRITE = ((byte*))(word/signed word/dword/signed dword) 12288
(byte*) SPRITES_COLS
(const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) 53287
(byte*) SPRITES_ENABLE
(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) 53269
(byte*) SPRITES_EXPAND_X
(byte*) SPRITES_EXPAND_Y
(byte*) SPRITES_MC
(byte*) SPRITES_MC1
(byte*) SPRITES_MC2
(byte*) SPRITES_PRIORITY
(byte*) SPRITES_XMSB
(byte*) SPRITES_XPOS
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248
(byte*) SPRITES_YPOS
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249
(word) SPRITE_PTRS
(byte) VIC_BMM
(byte*) VIC_CONTROL
(byte*) VIC_CONTROL2
(byte) VIC_CSEL
(byte) VIC_DEN
(byte) VIC_ECM
(byte) VIC_MCM
(byte*) VIC_MEMORY
(byte) VIC_RSEL
(byte) VIC_RST8
(byte) WHITE
(byte) YELLOW
(void()) anim()
(byte/word/signed word/dword/signed dword~) anim::$10 reg byte a 202.0
(byte/word/signed word/dword/signed dword~) anim::$8 reg byte a 202.0
(label) anim::@1
(label) anim::@10
(label) anim::@12
(label) anim::@13
(label) anim::@25
(label) anim::@27
(label) anim::@29
(label) anim::@30
(label) anim::@4
(label) anim::@7
(byte) anim::i
(byte) anim::i#1 i zp ZP_BYTE:4 151.5
(byte) anim::i#2 i zp ZP_BYTE:4 71.29411764705881
(byte) anim::i2
(byte) anim::i2#0 reg byte x 75.75
(void()) calculate_matrix((signed byte) calculate_matrix::sx , (signed byte) calculate_matrix::sy , (signed byte) calculate_matrix::sz)
(signed byte~) calculate_matrix::$10 reg byte a 4.0
(signed byte~) calculate_matrix::$11 reg byte a 4.0
(signed byte~) calculate_matrix::$12 reg byte a 4.0
(signed byte~) calculate_matrix::$13 reg byte a 4.0
(signed byte~) calculate_matrix::$14 reg byte a 4.0
(signed byte~) calculate_matrix::$15 reg byte a 4.0
(signed byte~) calculate_matrix::$16 reg byte a 4.0
(signed byte~) calculate_matrix::$17 reg byte a 4.0
(signed byte~) calculate_matrix::$18 reg byte a 4.0
(signed byte~) calculate_matrix::$19 reg byte a 4.0
(signed byte~) calculate_matrix::$20 reg byte a 4.0
(signed byte~) calculate_matrix::$21 reg byte a 4.0
(signed byte~) calculate_matrix::$22 reg byte a 4.0
(signed byte~) calculate_matrix::$23 reg byte a 4.0
(signed byte~) calculate_matrix::$24 reg byte a 4.0
(signed byte~) calculate_matrix::$25 reg byte a 4.0
(signed byte~) calculate_matrix::$26 reg byte a 4.0
(signed byte~) calculate_matrix::$27 reg byte a 4.0
(signed byte~) calculate_matrix::$28 reg byte a 4.0
(signed byte~) calculate_matrix::$29 reg byte a 4.0
(signed byte~) calculate_matrix::$30 reg byte a 4.0
(signed byte~) calculate_matrix::$31 reg byte a 4.0
(signed byte~) calculate_matrix::$32 reg byte a 4.0
(signed byte~) calculate_matrix::$33 reg byte a 4.0
(signed byte~) calculate_matrix::$34 reg byte a 4.0
(label) calculate_matrix::@return
(signed byte) calculate_matrix::sx
(signed byte) calculate_matrix::sx#0 reg byte x 2.4545454545454546
(signed byte) calculate_matrix::sy
(signed byte) calculate_matrix::sy#0 sy zp ZP_BYTE:3 1.5333333333333332
(signed byte) calculate_matrix::sz
(signed byte) calculate_matrix::t1
(signed byte) calculate_matrix::t1#0 t1 zp ZP_BYTE:4 0.8333333333333333
(signed byte) calculate_matrix::t10
(signed byte) calculate_matrix::t10#0 t10 zp ZP_BYTE:16 0.18181818181818182
(signed byte) calculate_matrix::t2
(signed byte) calculate_matrix::t2#0 reg byte y 0.9090909090909092
(signed byte) calculate_matrix::t3
(signed byte) calculate_matrix::t3#0 t3 zp ZP_BYTE:5 0.29411764705882354
(signed byte) calculate_matrix::t4
(signed byte) calculate_matrix::t4#0 t4 zp ZP_BYTE:8 0.30303030303030304
(signed byte) calculate_matrix::t5
(signed byte) calculate_matrix::t5#0 t5 zp ZP_BYTE:11 0.29411764705882354
(signed byte) calculate_matrix::t6
(signed byte) calculate_matrix::t6#0 t6 zp ZP_BYTE:12 0.3125
(signed byte) calculate_matrix::t7
(signed byte) calculate_matrix::t7#0 t7 zp ZP_BYTE:13 0.30303030303030304
(signed byte) calculate_matrix::t8
(signed byte) calculate_matrix::t8#0 t8 zp ZP_BYTE:14 0.30303030303030304
(signed byte) calculate_matrix::t9
(signed byte) calculate_matrix::t9#0 t9 zp ZP_BYTE:15 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::@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::@5
(label) debug_print::@6
(label) debug_print::@7
(label) debug_print::@8
(label) debug_print::@9
(label) debug_print::@return
(byte*) debug_print::at_line
(const byte*) debug_print::at_line#0 at_line = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 19*(byte/signed byte/word/signed word/dword/signed dword) 40
(byte) debug_print::c
(byte) debug_print::c#1 c zp ZP_BYTE:4 67.33333333333333
(byte) debug_print::c#2 c zp ZP_BYTE:4 42.52631578947369
(byte) debug_print::i
(byte) debug_print::i#1 i zp ZP_BYTE:5 151.5
(byte) debug_print::i#2 i zp ZP_BYTE:5 40.4
(label) debug_print::print_sbyte_pos1
(label) debug_print::print_sbyte_pos10
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos10_$0
(byte*~) debug_print::print_sbyte_pos10_$1
(byte*~) debug_print::print_sbyte_pos10_$2
(byte) debug_print::print_sbyte_pos10_col
(const byte) debug_print::print_sbyte_pos10_col#0 print_sbyte_pos10_col = (byte/signed byte/word/signed word/dword/signed dword) 29
(byte) debug_print::print_sbyte_pos10_row
(const byte) debug_print::print_sbyte_pos10_row#0 print_sbyte_pos10_row = (byte/signed byte/word/signed word/dword/signed dword) 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/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos11_$0
(byte*~) debug_print::print_sbyte_pos11_$1
(byte*~) debug_print::print_sbyte_pos11_$2
(byte) debug_print::print_sbyte_pos11_col
(const byte) debug_print::print_sbyte_pos11_col#0 print_sbyte_pos11_col = (byte/signed byte/word/signed word/dword/signed dword) 33
(byte) debug_print::print_sbyte_pos11_row
(const byte) debug_print::print_sbyte_pos11_row#0 print_sbyte_pos11_row = (byte/signed byte/word/signed word/dword/signed dword) 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/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos12_$0
(byte*~) debug_print::print_sbyte_pos12_$1
(byte*~) debug_print::print_sbyte_pos12_$2
(byte) debug_print::print_sbyte_pos12_col
(const byte) debug_print::print_sbyte_pos12_col#0 print_sbyte_pos12_col = (byte/signed byte/word/signed word/dword/signed dword) 37
(byte) debug_print::print_sbyte_pos12_row
(const byte) debug_print::print_sbyte_pos12_row#0 print_sbyte_pos12_row = (byte/signed byte/word/signed word/dword/signed dword) 6
(signed byte) debug_print::print_sbyte_pos12_sb
(signed byte) debug_print::print_sbyte_pos12_sb#0 reg byte x 4.0
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos1_$0
(byte*~) debug_print::print_sbyte_pos1_$1
(byte*~) debug_print::print_sbyte_pos1_$2
(byte) debug_print::print_sbyte_pos1_col
(const byte) debug_print::print_sbyte_pos1_col#0 print_sbyte_pos1_col = (byte/signed byte/word/signed word/dword/signed dword) 37
(byte) debug_print::print_sbyte_pos1_row
(const byte) debug_print::print_sbyte_pos1_row#0 print_sbyte_pos1_row = (byte/signed byte/word/signed word/dword/signed dword) 0
(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/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos2_$0
(byte*~) debug_print::print_sbyte_pos2_$1
(byte*~) debug_print::print_sbyte_pos2_$2
(byte) debug_print::print_sbyte_pos2_col
(const byte) debug_print::print_sbyte_pos2_col#0 print_sbyte_pos2_col = (byte/signed byte/word/signed word/dword/signed dword) 37
(byte) debug_print::print_sbyte_pos2_row
(const byte) debug_print::print_sbyte_pos2_row#0 print_sbyte_pos2_row = (byte/signed byte/word/signed word/dword/signed dword) 1
(signed byte) debug_print::print_sbyte_pos2_sb
(signed byte) debug_print::print_sbyte_pos2_sb#0 reg byte a 4.0
(label) debug_print::print_sbyte_pos3
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos3_$0
(byte*~) debug_print::print_sbyte_pos3_$1
(byte*~) debug_print::print_sbyte_pos3_$2
(byte) debug_print::print_sbyte_pos3_col
(const byte) debug_print::print_sbyte_pos3_col#0 print_sbyte_pos3_col = (byte/signed byte/word/signed word/dword/signed dword) 37
(byte) debug_print::print_sbyte_pos3_row
(const byte) debug_print::print_sbyte_pos3_row#0 print_sbyte_pos3_row = (byte/signed byte/word/signed word/dword/signed dword) 2
(signed byte) debug_print::print_sbyte_pos3_sb
(label) debug_print::print_sbyte_pos4
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos4_$0
(byte*~) debug_print::print_sbyte_pos4_$1
(byte*~) debug_print::print_sbyte_pos4_$2
(byte) debug_print::print_sbyte_pos4_col
(const byte) debug_print::print_sbyte_pos4_col#0 print_sbyte_pos4_col = (byte/signed byte/word/signed word/dword/signed dword) 29
(byte) debug_print::print_sbyte_pos4_row
(const byte) debug_print::print_sbyte_pos4_row#0 print_sbyte_pos4_row = (byte/signed byte/word/signed word/dword/signed dword) 4
(signed byte) debug_print::print_sbyte_pos4_sb
(signed byte) debug_print::print_sbyte_pos4_sb#0 reg byte a 4.0
(label) debug_print::print_sbyte_pos5
(byte/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos5_$0
(byte*~) debug_print::print_sbyte_pos5_$1
(byte*~) debug_print::print_sbyte_pos5_$2
(byte) debug_print::print_sbyte_pos5_col
(const byte) debug_print::print_sbyte_pos5_col#0 print_sbyte_pos5_col = (byte/signed byte/word/signed word/dword/signed dword) 33
(byte) debug_print::print_sbyte_pos5_row
(const byte) debug_print::print_sbyte_pos5_row#0 print_sbyte_pos5_row = (byte/signed byte/word/signed word/dword/signed dword) 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/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos6_$0
(byte*~) debug_print::print_sbyte_pos6_$1
(byte*~) debug_print::print_sbyte_pos6_$2
(byte) debug_print::print_sbyte_pos6_col
(const byte) debug_print::print_sbyte_pos6_col#0 print_sbyte_pos6_col = (byte/signed byte/word/signed word/dword/signed dword) 37
(byte) debug_print::print_sbyte_pos6_row
(const byte) debug_print::print_sbyte_pos6_row#0 print_sbyte_pos6_row = (byte/signed byte/word/signed word/dword/signed dword) 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/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos7_$0
(byte*~) debug_print::print_sbyte_pos7_$1
(byte*~) debug_print::print_sbyte_pos7_$2
(byte) debug_print::print_sbyte_pos7_col
(const byte) debug_print::print_sbyte_pos7_col#0 print_sbyte_pos7_col = (byte/signed byte/word/signed word/dword/signed dword) 29
(byte) debug_print::print_sbyte_pos7_row
(const byte) debug_print::print_sbyte_pos7_row#0 print_sbyte_pos7_row = (byte/signed byte/word/signed word/dword/signed dword) 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/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos8_$0
(byte*~) debug_print::print_sbyte_pos8_$1
(byte*~) debug_print::print_sbyte_pos8_$2
(byte) debug_print::print_sbyte_pos8_col
(const byte) debug_print::print_sbyte_pos8_col#0 print_sbyte_pos8_col = (byte/signed byte/word/signed word/dword/signed dword) 33
(byte) debug_print::print_sbyte_pos8_row
(const byte) debug_print::print_sbyte_pos8_row#0 print_sbyte_pos8_row = (byte/signed byte/word/signed word/dword/signed dword) 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/signed word/word/dword/signed dword~) debug_print::print_sbyte_pos9_$0
(byte*~) debug_print::print_sbyte_pos9_$1
(byte*~) debug_print::print_sbyte_pos9_$2
(byte) debug_print::print_sbyte_pos9_col
(const byte) debug_print::print_sbyte_pos9_col#0 print_sbyte_pos9_col = (byte/signed byte/word/signed word/dword/signed dword) 37
(byte) debug_print::print_sbyte_pos9_row
(const byte) debug_print::print_sbyte_pos9_row#0 print_sbyte_pos9_row = (byte/signed byte/word/signed word/dword/signed dword) 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::$59 $59 zp ZP_WORD:6 202.0
(byte*~) debug_print_init::$60 $60 zp ZP_WORD:6 202.0
(byte*~) debug_print_init::$63 $63 zp ZP_WORD:6 202.0
(byte*~) debug_print_init::$64 $64 zp ZP_WORD:6 202.0
(byte*~) debug_print_init::$67 $67 zp ZP_WORD:6 202.0
(byte*~) debug_print_init::$68 $68 zp ZP_WORD:6 202.0
(byte*~) debug_print_init::$71 $71 zp ZP_WORD:6 202.0
(byte*~) debug_print_init::$72 $72 zp ZP_WORD:6 202.0
(byte*~) debug_print_init::$75 $75 zp ZP_WORD:6 202.0
(byte*~) debug_print_init::$76 $76 zp ZP_WORD:6 202.0
(byte*~) debug_print_init::$79 $79 zp ZP_WORD:6 202.0
(byte*~) debug_print_init::$80 $80 zp ZP_WORD:6 202.0
(byte*~) debug_print_init::$83 $83 zp ZP_WORD:6 202.0
(byte*~) debug_print_init::$84 $84 zp ZP_WORD:6 202.0
(byte*~) debug_print_init::$87 $87 zp ZP_WORD:6 202.0
(byte*~) debug_print_init::$88 $88 zp ZP_WORD:6 202.0
(byte*~) debug_print_init::$91 $91 zp ZP_WORD:6 202.0
(byte*~) debug_print_init::$92 $92 zp ZP_WORD:6 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::@18
(label) debug_print_init::@19
(label) debug_print_init::@2
(label) debug_print_init::@3
(label) debug_print_init::@5
(label) debug_print_init::@6
(label) debug_print_init::@7
(label) debug_print_init::@8
(label) debug_print_init::@9
(label) debug_print_init::@return
(byte*) debug_print_init::COLS
(const byte*) debug_print_init::COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296
(byte*) debug_print_init::at_cols
(const byte*) debug_print_init::at_cols#0 at_cols = (const byte*) debug_print_init::COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 40
(byte*) debug_print_init::at_line
(const byte*) debug_print_init::at_line#0 at_line = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 40
(byte) debug_print_init::c
(byte) debug_print_init::c#1 c zp ZP_BYTE:2 7.333333333333333
(byte) debug_print_init::c#2 c zp ZP_BYTE:2 23.512195121951223
(byte) debug_print_init::col
(byte) debug_print_init::col#0 col zp ZP_BYTE:4 37.40740740740741
(byte) debug_print_init::i
(byte) debug_print_init::i#1 i zp ZP_BYTE:3 16.5
(byte) debug_print_init::i#2 i zp ZP_BYTE:3 3.7142857142857144
(byte) debug_print_init::j
(byte) debug_print_init::j#1 reg byte x 151.5
(byte) debug_print_init::j#2 reg byte x 38.31034482758621
(const string) debug_print_init::str str = (string) "sx@"
(const string) debug_print_init::str1 str1 = (string) "sy@"
(const string) debug_print_init::str10 str10 = (string) "xp@"
(const string) debug_print_init::str11 str11 = (string) "yp@"
(const string) debug_print_init::str2 str2 = (string) "sz@"
(const string) debug_print_init::str3 str3 = (string) "x@"
(const string) debug_print_init::str4 str4 = (string) "y@"
(const string) debug_print_init::str5 str5 = (string) "z@"
(const string) debug_print_init::str6 str6 = (string) "xr@"
(const string) debug_print_init::str7 str7 = (string) "yr@"
(const string) debug_print_init::str8 str8 = (string) "zr@"
(const string) debug_print_init::str9 str9 = (string) "pp@"
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@return
(byte*) mulf_sqr1
(const byte*) mulf_sqr1#0 mulf_sqr1 = ((byte*))(word/signed word/dword/signed dword) 9216
(byte*) mulf_sqr2
(const byte*) mulf_sqr2#0 mulf_sqr2 = ((byte*))(word/signed word/dword/signed dword) 9728
(signed byte*) pp
(const signed byte*) pp#0 pp = ((signed byte*))(byte/word/signed word/dword/signed dword) 243
(signed byte[8]) pps
(const signed byte[8]) pps#0 pps = { fill( 8, 0) }
(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at)
(byte~) print_byte_at::$0 reg byte a 4.0
(byte~) print_byte_at::$2 reg byte x 2.0
(label) print_byte_at::@1
(label) print_byte_at::@return
(byte*) print_byte_at::at
(byte*) print_byte_at::at#0 at zp ZP_WORD:6 1.0
(byte) print_byte_at::b
(void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at)
(label) print_char_at::@return
(byte*) print_char_at::at
(byte*) print_char_at::at#0 at zp ZP_WORD:6 4.0
(byte*) print_char_at::at#1 at zp ZP_WORD:6 4.0
(byte*) print_char_at::at#2 at zp ZP_WORD:6 4.0
(byte*) print_char_at::at#3 at zp ZP_WORD:6 2.0
(byte*) print_char_at::at#4 at zp ZP_WORD:6 10.0
(byte) print_char_at::ch
(byte) print_char_at::ch#2 ch zp ZP_BYTE:8 2.0
(byte) print_char_at::ch#3 ch zp ZP_BYTE:8 4.0
(byte) print_char_at::ch#4 ch zp ZP_BYTE:8 6.0
(byte*) print_char_cursor
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
(byte*) print_cls::sc
(byte*) print_cls::sc#1 sc zp ZP_WORD:6 16.5
(byte*) print_cls::sc#2 sc zp ZP_WORD:6 16.5
(byte[]) print_hextab
(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef"
(byte*) print_line_cursor
(const byte*) print_line_cursor#0 print_line_cursor = ((byte*))(word/signed word/dword/signed dword) 1024
(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::@5
(label) print_sbyte_at::@return
(byte*) print_sbyte_at::at
(byte*) print_sbyte_at::at#0 at zp ZP_WORD:6 11.0
(byte*) print_sbyte_at::at#1 at zp ZP_WORD:6 11.0
(byte*) print_sbyte_at::at#15 at zp ZP_WORD:6 101.0
(byte*) print_sbyte_at::at#16 at zp ZP_WORD:6 101.0
(byte*) print_sbyte_at::at#17 at zp ZP_WORD:6 101.0
(byte*) print_sbyte_at::at#18 at zp ZP_WORD:6 101.0
(byte*) print_sbyte_at::at#19 at zp ZP_WORD:6 101.0
(byte*) print_sbyte_at::at#2 at zp ZP_WORD:6 11.0
(byte*) print_sbyte_at::at#20 at zp ZP_WORD:6 101.0
(byte*) print_sbyte_at::at#21 at zp ZP_WORD:6 80.625
(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 0.6666666666666666
(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
(void()) print_str_at((byte*) print_str_at::str , (byte*) print_str_at::at)
(label) print_str_at::@1
(label) print_str_at::@2
(label) print_str_at::@return
(byte*) print_str_at::at
(byte*) print_str_at::at#0 at zp ZP_WORD:9 11.0
(byte*) print_str_at::at#13 at zp ZP_WORD:9 11.666666666666666
(byte*) print_str_at::at#15 at zp ZP_WORD:9 2.0
(byte*) print_str_at::str
(byte*) print_str_at::str#0 str zp ZP_WORD:6 22.0
(byte*) print_str_at::str#13 str zp ZP_WORD:6 11.5
(byte*) print_str_at::str#15 str zp ZP_WORD:6 2.0
(word*) psp1
(const word*) psp1#0 psp1 = ((word*))(byte/word/signed word/dword/signed dword) 246
(word*) psp2
(const word*) psp2#0 psp2 = ((word*))(byte/word/signed word/dword/signed dword) 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 x zp ZP_BYTE:5 34.33333333333333
(signed byte) rotate_matrix::y
(signed byte) rotate_matrix::y#0 reg byte y 34.33333333333333
(signed byte) rotate_matrix::z
(signed byte) rotate_matrix::z#0 reg byte x 34.33333333333333
(signed byte[9]) rotation_matrix
(const signed byte[9]) rotation_matrix#0 rotation_matrix = { fill( 9, 0) }
(void()) sprites_init()
(label) sprites_init::@1
(label) sprites_init::@return
(byte*) sprites_init::SCREEN
(const byte*) sprites_init::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
(byte) sprites_init::i
(byte) sprites_init::i#1 reg byte x 16.5
(byte) sprites_init::i#2 reg byte x 14.666666666666666
(byte*) sprites_init::sprites_ptr
(const byte*) sprites_init::sprites_ptr#0 sprites_ptr = (const byte*) sprites_init::SCREEN#0+(word/signed word/dword/signed dword) 1016
(void()) store_matrix()
(label) store_matrix::@return
(signed byte) sx
(signed byte) sx#10 sx zp ZP_BYTE:2 0.38888888888888884
(signed byte) sx#3 sx zp ZP_BYTE:2 11.0
(signed byte) sy
(signed byte) sy#10 sy zp ZP_BYTE:3 0.3846153846153846
(signed byte) sy#3 sy zp ZP_BYTE:3 22.0
(signed byte) sz
(const signed byte) sz#0 sz = (byte/signed byte/word/signed word/dword/signed dword) 0
(signed byte*) xp
(const signed byte*) xp#0 xp = ((signed byte*))(byte/word/signed word/dword/signed dword) 244
(signed byte[8]) xps
(const signed byte[8]) xps#0 xps = { fill( 8, 0) }
(signed byte*) xr
(const signed byte*) xr#0 xr = ((signed byte*))(byte/word/signed word/dword/signed dword) 240
(signed byte[8]) xrs
(const signed byte[8]) xrs#0 xrs = { fill( 8, 0) }
(signed byte[8]) xs
(const signed byte[8]) xs#0 xs = { -(byte/signed byte/word/signed word/dword/signed dword) 52, -(byte/signed byte/word/signed word/dword/signed dword) 52, -(byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 52 }
(signed byte*) yp
(const signed byte*) yp#0 yp = ((signed byte*))(byte/word/signed word/dword/signed dword) 245
(signed byte[8]) yps
(const signed byte[8]) yps#0 yps = { fill( 8, 0) }
(signed byte*) yr
(const signed byte*) yr#0 yr = ((signed byte*))(byte/word/signed word/dword/signed dword) 241
(signed byte[8]) yrs
(const signed byte[8]) yrs#0 yrs = { fill( 8, 0) }
(signed byte[8]) ys
(const signed byte[8]) ys#0 ys = { -(byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 52, -(byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 52, -(byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 52 }
(signed byte*) zr
(const signed byte*) zr#0 zr = ((signed byte*))(byte/word/signed word/dword/signed dword) 242
(signed byte[8]) zrs
(const signed byte[8]) zrs#0 zrs = { fill( 8, 0) }
(signed byte[8]) zs
(const signed byte[8]) zs#0 zs = { (byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 52, (byte/signed byte/word/signed word/dword/signed dword) 52 }

zp ZP_BYTE:2 [ sx#10 sx#3 debug_print_init::c#2 debug_print_init::c#1 ]
zp ZP_BYTE:3 [ sy#10 sy#3 calculate_matrix::sy#0 debug_print_init::i#2 debug_print_init::i#1 ]
zp ZP_BYTE:4 [ anim::i#2 anim::i#1 debug_print::c#2 debug_print::c#1 calculate_matrix::t1#0 debug_print_init::col#0 ]
zp ZP_BYTE:5 [ debug_print::i#2 debug_print::i#1 rotate_matrix::x#0 calculate_matrix::t3#0 ]
zp ZP_WORD:6 [ 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 print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 print_cls::sc#2 print_cls::sc#1 debug_print_init::$59 debug_print_init::$60 debug_print_init::$63 debug_print_init::$64 debug_print_init::$67 debug_print_init::$68 debug_print_init::$71 debug_print_init::$72 debug_print_init::$75 debug_print_init::$76 debug_print_init::$79 debug_print_init::$80 debug_print_init::$83 debug_print_init::$84 debug_print_init::$87 debug_print_init::$88 debug_print_init::$91 debug_print_init::$92 ]
reg byte x [ print_sbyte_at::b#24 print_sbyte_at::b#0 print_sbyte_at::b#22 print_sbyte_at::b#16 print_sbyte_at::b#17 print_sbyte_at::b#18 print_sbyte_at::b#19 print_sbyte_at::b#20 print_sbyte_at::b#21 print_sbyte_at::b#4 print_sbyte_at::b#13 print_sbyte_at::b#14 print_sbyte_at::b#15 print_sbyte_at::b#5 print_sbyte_at::b#7 print_sbyte_at::b#8 print_sbyte_at::b#9 print_sbyte_at::b#10 print_sbyte_at::b#11 print_sbyte_at::b#12 print_sbyte_at::b#1 print_sbyte_at::b#2 print_sbyte_at::b#3 ]
zp ZP_BYTE:8 [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 calculate_matrix::t4#0 ]
reg byte x [ debug_print_init::j#2 debug_print_init::j#1 ]
zp ZP_WORD:9 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ]
reg byte x [ sprites_init::i#2 sprites_init::i#1 ]
reg byte x [ calculate_matrix::sx#0 ]
reg byte y [ rotate_matrix::y#0 ]
reg byte x [ rotate_matrix::z#0 ]
reg byte x [ anim::i2#0 ]
reg byte a [ anim::$8 ]
reg byte a [ anim::$10 ]
reg byte x [ debug_print::print_sbyte_pos1_sb#0 ]
reg byte a [ debug_print::print_sbyte_pos2_sb#0 ]
reg byte a [ 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 a [ print_byte_at::$0 ]
reg byte x [ print_byte_at::$2 ]
reg byte y [ calculate_matrix::t2#0 ]
zp ZP_BYTE:11 [ calculate_matrix::t5#0 ]
zp ZP_BYTE:12 [ calculate_matrix::t6#0 ]
zp ZP_BYTE:13 [ calculate_matrix::t7#0 ]
zp ZP_BYTE:14 [ calculate_matrix::t8#0 ]
zp ZP_BYTE:15 [ calculate_matrix::t9#0 ]
zp ZP_BYTE:16 [ 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 ]


FINAL ASSEMBLER
Score: 85538

//SEG0 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  
//SEG1 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG2 Global Constants & labels
  .label SPRITES_XPOS = $d000
  .label SPRITES_YPOS = $d001
  .label RASTER = $d012
  .label SPRITES_ENABLE = $d015
  .label BORDERCOL = $d020
  .label SPRITES_COLS = $d027
  .const GREEN = 5
  .const LIGHT_BLUE = $e
  .const LIGHT_GREY = $f
  .label print_line_cursor = $400
  // The rotated point - updated by calling rotate_matrix()
  .label xr = $f0
  .label yr = $f1
  .label zr = $f2
  // The rotated point with perspective
  .label pp = $f3
  .label xp = $f4
  .label yp = $f5
  // Pointers used to multiply perspective (d/z0-z) onto x- & y-coordinates. Points into mulf_sqr1 / mulf_sqr2  
  .label psp1 = $f6
  .label psp2 = $f8
  .label SCREEN = $400
  .const sz = 0
  // mulf_sqr tables will contain f(x)=int(x*x) and g(x) = f(1-x).
  // f(x) = >(( x * x ))
  .label mulf_sqr1 = $2400
  // g(x) =  >((( 1 - x ) * ( 1 - x )))
  .label mulf_sqr2 = $2600
  // A single sprite
  .label SPRITE = $3000
  // Perspective multiplication table containing (d/(z0-z)[z] for each z-value   
  .label PERSP_Z = $2800
  // Sine and Cosine Tables   
  // Angles: $00=0, $80=PI,$100=2*PI
  // Half Sine/Cosine: signed fixed [-$20;20]
  .label SINH = $2000
  // sin(x) = cos(x+PI/2)
  // Quarter Sine/Cosine: signed fixed [-$10,$10]
  .label SINQ = $2200
  // 16 bit Sine and Cosine Tables   
  // Angles: $00=0, $80=PI,$100=2*PI
  // Half Sine/Cosine: signed fixed [-$1f,$1f]
  .label SINH_LO = $4000
  // sin(x) = cos(x+PI/2)
  .label SINH_HI = $4200
  // sin(x) = cos(x+PI/2)
  // Quarter Sine/Cosine: signed fixed [-$0f,$0f]
  .label SINQ_LO = $4400
  // sin(x) = cos(x+PI/2)
  .label SINQ_HI = $4600
  .label COSH = SINH+$40
  .label COSQ = SINQ+$40
  .label sx = 2
  .label sy = 3
//SEG3 @begin
//SEG4 @33
//SEG5 kickasm(location (const byte*) mulf_sqr1#0) {{ .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) }     }  }}
//SEG6 kickasm(location (const byte*) mulf_sqr2#0) {{ .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) }       }  }}
//SEG7 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))     .for (var y=0; y<21; y++)         .for (var x=0;x<3; x++)             .byte pic.getSinglecolorByte(x,y)  }}
//SEG8 kickasm(location (const signed byte*) PERSP_Z#0) {{ {     .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)));     	}     } 	}  }}
//SEG9 kickasm(location (const signed byte*) SINH#0) {{ {     .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)     }     }  }}
// sin(x) = cos(x+PI/2)
//SEG10 kickasm(location (const signed byte*) SINQ#0) {{ {     .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)     }     }  }}
//SEG11 kickasm(location (const byte*) SINH_LO#0) {{ {     .var min = -$2000     .var max = $2000     .var ampl = max-min;     .for(var i=0;i<$140;i++) {         .var rad = i*2*PI/256;         .byte <(min+(ampl/2)+(ampl/2)*sin(rad))     }     }  }}
// sin(x) = cos(x+PI/2)
//SEG12 kickasm(location (const byte*) SINH_HI#0) {{ {     .var min = -$2000     .var max = $2000     .var ampl = max-min;     .for(var i=0;i<$140;i++) {         .var rad = i*2*PI/256;         .byte >(min+(ampl/2)+(ampl/2)*sin(rad))     }     }  }}
//SEG13 kickasm(location (const byte*) SINQ_LO#0) {{ {     .var min = -$1000     .var max = $1000     .var ampl = max-min;     .for(var i=0;i<$140;i++) {         .var rad = i*2*PI/256;         .byte <(min+(ampl/2)+(ampl/2)*sin(rad))     }     }  }}
//SEG14 kickasm(location (const byte*) SINQ_HI#0) {{ {     .var min = -$1000     .var max = $1000     .var ampl = max-min;     .for(var i=0;i<$140;i++) {         .var rad = i*2*PI/256;         .byte >(min+(ampl/2)+(ampl/2)*sin(rad))     }     }  }}
//SEG15 [11] call main 
//SEG16 [12] phi from @33 to @end [phi:@33->@end]
//SEG17 @end
//SEG18 main
main: {
  //SEG19 asm { sei  }
    sei
  //SEG20 [14] call sprites_init 
    jsr sprites_init
  //SEG21 main::@1
  //SEG22 [15] *((const word*) psp1#0) ← ((word))(const byte*) mulf_sqr1#0 -- _deref_pwuc1=vwuc2 
    //mulf_init();
    lda #<mulf_sqr1
    sta psp1
    lda #>mulf_sqr1
    sta psp1+1
  //SEG23 [16] *((const word*) psp2#0) ← ((word))(const byte*) mulf_sqr2#0 -- _deref_pwuc1=vwuc2 
    lda #<mulf_sqr2
    sta psp2
    lda #>mulf_sqr2
    sta psp2+1
  //SEG24 [17] call debug_print_init 
  //SEG25 [189] phi from main::@1 to debug_print_init [phi:main::@1->debug_print_init]
    jsr debug_print_init
  //SEG26 [18] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  //SEG27 main::@2
  //SEG28 [19] call anim 
  //SEG29 [21] phi from main::@2 to anim [phi:main::@2->anim]
    jsr anim
  //SEG30 main::@return
  //SEG31 [20] return 
    rts
}
//SEG32 anim
anim: {
    .label i = 4
  //SEG33 [22] phi from anim to anim::@1 [phi:anim->anim::@1]
  //SEG34 [22] phi (signed byte) sy#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#0] -- vbsz1=vbuc1 
    lda #0
    sta sy
  //SEG35 [22] phi (signed byte) sx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim->anim::@1#1] -- vbsz1=vbuc1 
    sta sx
  //signed byte xmin = 0;
  //signed byte xmax = 0;
  //SEG36 anim::@1
  //SEG37 anim::@4
  b4:
  //SEG38 [23] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda RASTER
    cmp #$ff
    bne b4
  //SEG39 anim::@7
  b7:
  //SEG40 [24] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto anim::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda RASTER
    cmp #$fe
    bne b7
  //SEG41 anim::@10
  b10:
  //SEG42 [25] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 253) goto anim::@10 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda RASTER
    cmp #$fd
    bne b10
  //SEG43 anim::@12
  //SEG44 [26] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
  //SEG45 [27] (signed byte) calculate_matrix::sx#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 
    ldx sx
  //SEG46 [28] (signed byte) calculate_matrix::sy#0 ← (signed byte) sy#10
  //SEG47 [29] call calculate_matrix 
    jsr calculate_matrix
  //SEG48 [30] phi from anim::@12 to anim::@27 [phi:anim::@12->anim::@27]
  //SEG49 anim::@27
  //SEG50 [31] call store_matrix 
    jsr store_matrix
  //SEG51 [32] phi from anim::@27 to anim::@13 [phi:anim::@27->anim::@13]
  //SEG52 [32] phi (byte) anim::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@27->anim::@13#0] -- vbuz1=vbuc1 
    lda #0
    sta i
  //SEG53 [32] phi from anim::@29 to anim::@13 [phi:anim::@29->anim::@13]
  //SEG54 [32] phi (byte) anim::i#2 = (byte) anim::i#1 [phi:anim::@29->anim::@13#0] -- register_copy 
  //SEG55 anim::@13
  b13:
  //SEG56 [33] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
  //SEG57 [34] (signed byte) rotate_matrix::x#0 ← *((const signed byte[8]) xs#0 + (byte) anim::i#2) -- vbsz1=pbsc1_derefidx_vbuz2 
    ldy i
    lda xs,y
    sta rotate_matrix.x
  //SEG58 [35] (signed byte) rotate_matrix::y#0 ← *((const signed byte[8]) ys#0 + (byte) anim::i#2) -- vbsyy=pbsc1_derefidx_vbuz1 
    ldx i
    ldy ys,x
  //SEG59 [36] (signed byte) rotate_matrix::z#0 ← *((const signed byte[8]) zs#0 + (byte) anim::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    lda zs,x
    tax
  //SEG60 [37] call rotate_matrix 
    jsr rotate_matrix
  //SEG61 anim::@29
  //SEG62 [38] *((const signed byte[8]) xrs#0 + (byte) anim::i#2) ← *((const signed byte*) xr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    //if(*xr<xmin) xmin = *xr;
    //if(*xr>xmax) xmax = *xr;
    ldy i
    lda xr
    sta xrs,y
  //SEG63 [39] *((const signed byte[8]) yrs#0 + (byte) anim::i#2) ← *((const signed byte*) yr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda yr
    sta yrs,y
  //SEG64 [40] *((const signed byte[8]) zrs#0 + (byte) anim::i#2) ← *((const signed byte*) zr#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda zr
    sta zrs,y
  //SEG65 [41] *((const signed byte[8]) pps#0 + (byte) anim::i#2) ← *((const signed byte*) pp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda pp
    sta pps,y
  //SEG66 [42] *((const signed byte[8]) xps#0 + (byte) anim::i#2) ← *((const signed byte*) xp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda xp
    sta xps,y
  //SEG67 [43] *((const signed byte[8]) yps#0 + (byte) anim::i#2) ← *((const signed byte*) yp#0) -- pbsc1_derefidx_vbuz1=_deref_pbsc2 
    lda yp
    sta yps,y
  //SEG68 [44] (byte) anim::i2#0 ← (byte) anim::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_rol_1 
    tya
    asl
    tax
  //SEG69 [45] (byte/word/signed word/dword/signed dword~) anim::$8 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) xp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 
    lda #$80
    clc
    adc xp
  //SEG70 [46] *((const byte*) SPRITES_XPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$8 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SPRITES_XPOS,x
  //SEG71 [47] (byte/word/signed word/dword/signed dword~) anim::$10 ← (byte/word/signed word/dword/signed dword) 128 + (byte)*((const signed byte*) yp#0) -- vbuaa=vbuc1_plus__deref_pbuc2 
    lda #$80
    clc
    adc yp
  //SEG72 [48] *((const byte*) SPRITES_YPOS#0 + (byte) anim::i2#0) ← (byte/word/signed word/dword/signed dword~) anim::$10 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta SPRITES_YPOS,x
  //SEG73 [49] (byte) anim::i#1 ← ++ (byte) anim::i#2 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG74 [50] if((byte) anim::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto anim::@13 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #8
    bne b13
  //SEG75 anim::@25
  //SEG76 [51] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_GREY#0 -- _deref_pbuc1=vbuc2 
    lda #LIGHT_GREY
    sta BORDERCOL
  //SEG77 [52] call debug_print 
    jsr debug_print
  //SEG78 anim::@30
  //SEG79 [53] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 -- _deref_pbuc1=vbuc2 
    lda #LIGHT_BLUE
    sta BORDERCOL
  //SEG80 [54] (signed byte) sx#3 ← (signed byte) sx#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbsz1=vbsz1_plus_2 
    // Increment angles        
    inc sx
    inc sx
  //SEG81 [55] (signed byte) sy#3 ← (signed byte) sy#10 - (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbsz1=vbsz1_minus_vbuc1 
    lda sy
    sec
    sbc #3
    sta sy
  //SEG82 [22] phi from anim::@30 to anim::@1 [phi:anim::@30->anim::@1]
  //SEG83 [22] phi (signed byte) sy#10 = (signed byte) sy#3 [phi:anim::@30->anim::@1#0] -- register_copy 
  //SEG84 [22] phi (signed byte) sx#10 = (signed byte) sx#3 [phi:anim::@30->anim::@1#1] -- register_copy 
    jmp b4
}
//SEG85 debug_print
debug_print: {
    .const print_sbyte_pos1_row = 0
    .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 = 4
    .label i = 5
  //SEG86 [56] (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#10 -- vbsxx=vbsz1 
    ldx sx
  //SEG87 debug_print::print_sbyte_pos1
  //SEG88 [57] (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#0
  //SEG89 [58] call print_sbyte_at 
  //SEG90 [114] phi from debug_print::print_sbyte_pos1 to print_sbyte_at [phi:debug_print::print_sbyte_pos1->print_sbyte_at]
  //SEG91 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos1_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos1_col#0 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos1_row*$28+print_sbyte_pos1_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos1_row*$28+print_sbyte_pos1_col
    sta print_sbyte_at.at+1
  //SEG92 [114] 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
  //SEG93 debug_print::@3
  //SEG94 [59] (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#10 -- vbsaa=vbsz1 
    lda sy
  //SEG95 debug_print::print_sbyte_pos2
  //SEG96 [60] (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#0 -- vbsxx=vbsaa 
    tax
  //SEG97 [61] call print_sbyte_at 
  //SEG98 [114] phi from debug_print::print_sbyte_pos2 to print_sbyte_at [phi:debug_print::print_sbyte_pos2->print_sbyte_at]
  //SEG99 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos2_col#0 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
    sta print_sbyte_at.at+1
  //SEG100 [114] 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
  //SEG101 [62] phi from debug_print::print_sbyte_pos2 to debug_print::print_sbyte_pos3 [phi:debug_print::print_sbyte_pos2->debug_print::print_sbyte_pos3]
  //SEG102 debug_print::print_sbyte_pos3
  //SEG103 [63] call print_sbyte_at 
  //SEG104 [114] phi from debug_print::print_sbyte_pos3 to print_sbyte_at [phi:debug_print::print_sbyte_pos3->print_sbyte_at]
  //SEG105 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos3_col#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
    sta print_sbyte_at.at+1
  //SEG106 [114] phi (signed byte) print_sbyte_at::b#22 = (const signed byte) sz#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#1] -- vbsxx=vbsc1 
    ldx #sz
    jsr print_sbyte_at
  //SEG107 debug_print::@5
  //SEG108 [64] (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((const signed byte[9]) rotation_matrix#0) -- vbsaa=_deref_pbsc1 
    lda rotation_matrix
  //SEG109 debug_print::print_sbyte_pos4
  //SEG110 [65] (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#0 -- vbsxx=vbsaa 
    tax
  //SEG111 [66] call print_sbyte_at 
  //SEG112 [114] phi from debug_print::print_sbyte_pos4 to print_sbyte_at [phi:debug_print::print_sbyte_pos4->print_sbyte_at]
  //SEG113 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos4_col#0 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
    sta print_sbyte_at.at+1
  //SEG114 [114] 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
  //SEG115 debug_print::@6
  //SEG116 [67] (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+1
  //SEG117 debug_print::print_sbyte_pos5
  //SEG118 [68] (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#0
  //SEG119 [69] call print_sbyte_at 
  //SEG120 [114] phi from debug_print::print_sbyte_pos5 to print_sbyte_at [phi:debug_print::print_sbyte_pos5->print_sbyte_at]
  //SEG121 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos5_col#0 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
    sta print_sbyte_at.at+1
  //SEG122 [114] 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
  //SEG123 debug_print::@7
  //SEG124 [70] (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+2
  //SEG125 debug_print::print_sbyte_pos6
  //SEG126 [71] (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#0
  //SEG127 [72] call print_sbyte_at 
  //SEG128 [114] phi from debug_print::print_sbyte_pos6 to print_sbyte_at [phi:debug_print::print_sbyte_pos6->print_sbyte_at]
  //SEG129 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos6_col#0 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
    sta print_sbyte_at.at+1
  //SEG130 [114] 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
  //SEG131 debug_print::@8
  //SEG132 [73] (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+3
  //SEG133 debug_print::print_sbyte_pos7
  //SEG134 [74] (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#0
  //SEG135 [75] call print_sbyte_at 
  //SEG136 [114] phi from debug_print::print_sbyte_pos7 to print_sbyte_at [phi:debug_print::print_sbyte_pos7->print_sbyte_at]
  //SEG137 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos7_col#0 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
    sta print_sbyte_at.at+1
  //SEG138 [114] 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
  //SEG139 debug_print::@9
  //SEG140 [76] (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+4
  //SEG141 debug_print::print_sbyte_pos8
  //SEG142 [77] (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#0
  //SEG143 [78] call print_sbyte_at 
  //SEG144 [114] phi from debug_print::print_sbyte_pos8 to print_sbyte_at [phi:debug_print::print_sbyte_pos8->print_sbyte_at]
  //SEG145 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos8_col#0 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
    sta print_sbyte_at.at+1
  //SEG146 [114] 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
  //SEG147 debug_print::@10
  //SEG148 [79] (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+5
  //SEG149 debug_print::print_sbyte_pos9
  //SEG150 [80] (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#0
  //SEG151 [81] call print_sbyte_at 
  //SEG152 [114] phi from debug_print::print_sbyte_pos9 to print_sbyte_at [phi:debug_print::print_sbyte_pos9->print_sbyte_at]
  //SEG153 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos9_col#0 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
    sta print_sbyte_at.at+1
  //SEG154 [114] 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
  //SEG155 debug_print::@11
  //SEG156 [82] (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+6
  //SEG157 debug_print::print_sbyte_pos10
  //SEG158 [83] (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#0
  //SEG159 [84] call print_sbyte_at 
  //SEG160 [114] phi from debug_print::print_sbyte_pos10 to print_sbyte_at [phi:debug_print::print_sbyte_pos10->print_sbyte_at]
  //SEG161 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos10_col#0 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
    sta print_sbyte_at.at+1
  //SEG162 [114] 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
  //SEG163 debug_print::@12
  //SEG164 [85] (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+7
  //SEG165 debug_print::print_sbyte_pos11
  //SEG166 [86] (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#0
  //SEG167 [87] call print_sbyte_at 
  //SEG168 [114] phi from debug_print::print_sbyte_pos11 to print_sbyte_at [phi:debug_print::print_sbyte_pos11->print_sbyte_at]
  //SEG169 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos11_col#0 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
    sta print_sbyte_at.at+1
  //SEG170 [114] 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
  //SEG171 debug_print::@13
  //SEG172 [88] (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) -- vbsxx=_deref_pbsc1 
    ldx rotation_matrix+8
  //SEG173 debug_print::print_sbyte_pos12
  //SEG174 [89] (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#0
  //SEG175 [90] call print_sbyte_at 
  //SEG176 [114] phi from debug_print::print_sbyte_pos12 to print_sbyte_at [phi:debug_print::print_sbyte_pos12->print_sbyte_at]
  //SEG177 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos12_col#0 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
    sta print_sbyte_at.at
    lda #>print_line_cursor+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
    sta print_sbyte_at.at+1
  //SEG178 [114] 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
  //SEG179 [91] phi from debug_print::print_sbyte_pos12 to debug_print::@1 [phi:debug_print::print_sbyte_pos12->debug_print::@1]
  //SEG180 [91] phi (byte) debug_print::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print::print_sbyte_pos12->debug_print::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
  //SEG181 [91] phi (byte) debug_print::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:debug_print::print_sbyte_pos12->debug_print::@1#1] -- vbuz1=vbuc1 
    lda #4
    sta c
  //SEG182 [91] phi from debug_print::@32 to debug_print::@1 [phi:debug_print::@32->debug_print::@1]
  //SEG183 [91] phi (byte) debug_print::i#2 = (byte) debug_print::i#1 [phi:debug_print::@32->debug_print::@1#0] -- register_copy 
  //SEG184 [91] phi (byte) debug_print::c#2 = (byte) debug_print::c#1 [phi:debug_print::@32->debug_print::@1#1] -- register_copy 
  //SEG185 debug_print::@1
  b1:
  //SEG186 [92] (byte*) print_sbyte_at::at#15 ← (const byte*) debug_print::at_line#0 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line
    sta print_sbyte_at.at
    lda #>at_line
    adc #0
    sta print_sbyte_at.at+1
  //SEG187 [93] (signed byte) print_sbyte_at::b#16 ← *((const signed byte[8]) xrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldx i
    lda xrs,x
    tax
  //SEG188 [94] call print_sbyte_at 
  //SEG189 [114] phi from debug_print::@1 to print_sbyte_at [phi:debug_print::@1->print_sbyte_at]
  //SEG190 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#15 [phi:debug_print::@1->print_sbyte_at#0] -- register_copy 
  //SEG191 [114] 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
  //SEG192 debug_print::@27
  //SEG193 [95] (byte*) print_sbyte_at::at#16 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*1
    sta print_sbyte_at.at
    lda #>at_line+$28*1
    adc #0
    sta print_sbyte_at.at+1
  //SEG194 [96] (signed byte) print_sbyte_at::b#17 ← *((const signed byte[8]) yrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldx i
    lda yrs,x
    tax
  //SEG195 [97] call print_sbyte_at 
  //SEG196 [114] phi from debug_print::@27 to print_sbyte_at [phi:debug_print::@27->print_sbyte_at]
  //SEG197 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#16 [phi:debug_print::@27->print_sbyte_at#0] -- register_copy 
  //SEG198 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#17 [phi:debug_print::@27->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
  //SEG199 debug_print::@28
  //SEG200 [98] (byte*) print_sbyte_at::at#17 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*2
    sta print_sbyte_at.at
    lda #>at_line+$28*2
    adc #0
    sta print_sbyte_at.at+1
  //SEG201 [99] (signed byte) print_sbyte_at::b#18 ← *((const signed byte[8]) zrs#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldx i
    lda zrs,x
    tax
  //SEG202 [100] call print_sbyte_at 
  //SEG203 [114] phi from debug_print::@28 to print_sbyte_at [phi:debug_print::@28->print_sbyte_at]
  //SEG204 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#17 [phi:debug_print::@28->print_sbyte_at#0] -- register_copy 
  //SEG205 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#18 [phi:debug_print::@28->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
  //SEG206 debug_print::@29
  //SEG207 [101] (byte*) print_sbyte_at::at#18 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*3
    sta print_sbyte_at.at
    lda #>at_line+$28*3
    adc #0
    sta print_sbyte_at.at+1
  //SEG208 [102] (signed byte) print_sbyte_at::b#19 ← *((const signed byte[8]) pps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldx i
    lda pps,x
    tax
  //SEG209 [103] call print_sbyte_at 
  //SEG210 [114] phi from debug_print::@29 to print_sbyte_at [phi:debug_print::@29->print_sbyte_at]
  //SEG211 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#18 [phi:debug_print::@29->print_sbyte_at#0] -- register_copy 
  //SEG212 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#19 [phi:debug_print::@29->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
  //SEG213 debug_print::@30
  //SEG214 [104] (byte*) print_sbyte_at::at#19 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*4
    sta print_sbyte_at.at
    lda #>at_line+$28*4
    adc #0
    sta print_sbyte_at.at+1
  //SEG215 [105] (signed byte) print_sbyte_at::b#20 ← *((const signed byte[8]) xps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldx i
    lda xps,x
    tax
  //SEG216 [106] call print_sbyte_at 
  //SEG217 [114] phi from debug_print::@30 to print_sbyte_at [phi:debug_print::@30->print_sbyte_at]
  //SEG218 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#19 [phi:debug_print::@30->print_sbyte_at#0] -- register_copy 
  //SEG219 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#20 [phi:debug_print::@30->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
  //SEG220 debug_print::@31
  //SEG221 [107] (byte*) print_sbyte_at::at#20 ← (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) debug_print::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*5
    sta print_sbyte_at.at
    lda #>at_line+$28*5
    adc #0
    sta print_sbyte_at.at+1
  //SEG222 [108] (signed byte) print_sbyte_at::b#21 ← *((const signed byte[8]) yps#0 + (byte) debug_print::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldx i
    lda yps,x
    tax
  //SEG223 [109] call print_sbyte_at 
  //SEG224 [114] phi from debug_print::@31 to print_sbyte_at [phi:debug_print::@31->print_sbyte_at]
  //SEG225 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#20 [phi:debug_print::@31->print_sbyte_at#0] -- register_copy 
  //SEG226 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#21 [phi:debug_print::@31->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
  //SEG227 debug_print::@32
  //SEG228 [110] (byte) debug_print::c#1 ← (byte) debug_print::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 
    lda #4
    clc
    adc c
    sta c
  //SEG229 [111] (byte) debug_print::i#1 ← ++ (byte) debug_print::i#2 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG230 [112] if((byte) debug_print::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #8
    beq !b1+
    jmp b1
  !b1:
  //SEG231 debug_print::@return
  //SEG232 [113] return 
    rts
}
//SEG233 print_sbyte_at
// Print a signed byte as hex at a specific screen position
// print_sbyte_at(signed byte register(X) b, byte* zeropage(6) at)
print_sbyte_at: {
    .label at = 6
  //SEG234 [115] if((signed byte) print_sbyte_at::b#22<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1 -- vbsxx_lt_0_then_la1 
    cpx #0
    bmi b1
  //SEG235 print_sbyte_at::@3
  //SEG236 [116] (byte*) print_char_at::at#1 ← (byte*) print_sbyte_at::at#21
  //SEG237 [117] call print_char_at 
  //SEG238 [125] phi from print_sbyte_at::@3 to print_char_at [phi:print_sbyte_at::@3->print_char_at]
  //SEG239 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#1 [phi:print_sbyte_at::@3->print_char_at#0] -- register_copy 
  //SEG240 [125] phi (byte) print_char_at::ch#4 = (byte) ' ' [phi:print_sbyte_at::@3->print_char_at#1] -- vbuz1=vbuc1 
    lda #' '
    sta print_char_at.ch
    jsr print_char_at
  //SEG241 [118] phi from print_sbyte_at::@3 print_sbyte_at::@5 to print_sbyte_at::@2 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2]
  //SEG242 [118] phi (signed byte) print_sbyte_at::b#24 = (signed byte) print_sbyte_at::b#22 [phi:print_sbyte_at::@3/print_sbyte_at::@5->print_sbyte_at::@2#0] -- register_copy 
  //SEG243 print_sbyte_at::@2
  b2:
  //SEG244 [119] (byte*) print_byte_at::at#0 ← (byte*) print_sbyte_at::at#21 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 
    inc print_byte_at.at
    bne !+
    inc print_byte_at.at+1
  !:
  //SEG245 [120] call print_byte_at 
    jsr print_byte_at
  //SEG246 print_sbyte_at::@return
  //SEG247 [121] return 
    rts
  //SEG248 print_sbyte_at::@1
  b1:
  //SEG249 [122] (byte*) print_char_at::at#0 ← (byte*) print_sbyte_at::at#21
  //SEG250 [123] call print_char_at 
  //SEG251 [125] phi from print_sbyte_at::@1 to print_char_at [phi:print_sbyte_at::@1->print_char_at]
  //SEG252 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#0 [phi:print_sbyte_at::@1->print_char_at#0] -- register_copy 
  //SEG253 [125] phi (byte) print_char_at::ch#4 = (byte) '-' [phi:print_sbyte_at::@1->print_char_at#1] -- vbuz1=vbuc1 
    lda #'-'
    sta print_char_at.ch
    jsr print_char_at
  //SEG254 print_sbyte_at::@5
  //SEG255 [124] (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
}
//SEG256 print_char_at
// Print a single char
// print_char_at(byte zeropage(8) ch, byte* zeropage(6) at)
print_char_at: {
    .label at = 6
    .label ch = 8
  //SEG257 [126] *((byte*) print_char_at::at#4) ← (byte) print_char_at::ch#4 -- _deref_pbuz1=vbuz2 
    lda ch
    ldy #0
    sta (at),y
  //SEG258 print_char_at::@return
  //SEG259 [127] return 
    rts
}
//SEG260 print_byte_at
// Print a byte as HEX at a specific position
// print_byte_at(byte* zeropage(6) at)
print_byte_at: {
    .label at = 6
  //SEG261 [128] (byte~) print_byte_at::$0 ← (byte)(signed byte) print_sbyte_at::b#24 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 
    txa
    lsr
    lsr
    lsr
    lsr
  //SEG262 [129] (byte) print_char_at::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuaa 
    tay
    lda print_hextab,y
    sta print_char_at.ch
  //SEG263 [130] (byte*) print_char_at::at#2 ← (byte*) print_byte_at::at#0
  //SEG264 [131] call print_char_at 
  //SEG265 [125] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at]
  //SEG266 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#2 [phi:print_byte_at->print_char_at#0] -- register_copy 
  //SEG267 [125] 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
  //SEG268 print_byte_at::@1
  //SEG269 [132] (byte~) print_byte_at::$2 ← (byte)(signed byte) print_sbyte_at::b#24 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuxx=vbuxx_band_vbuc1 
    txa
    and #$f
    tax
  //SEG270 [133] (byte*) print_char_at::at#3 ← (byte*) print_byte_at::at#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- pbuz1=pbuz1_plus_1 
    inc print_char_at.at
    bne !+
    inc print_char_at.at+1
  !:
  //SEG271 [134] (byte) print_char_at::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuxx 
    lda print_hextab,x
    sta print_char_at.ch
  //SEG272 [135] call print_char_at 
  //SEG273 [125] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at]
  //SEG274 [125] phi (byte*) print_char_at::at#4 = (byte*) print_char_at::at#3 [phi:print_byte_at::@1->print_char_at#0] -- register_copy 
  //SEG275 [125] 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
  //SEG276 print_byte_at::@return
  //SEG277 [136] return 
    rts
}
//SEG278 rotate_matrix
// Rotate a 3D point (x,y,z) using the rotation matrix
// The rotation matrix is prepared by calling prepare_matrix() 
// The passed points must be in the interval [-$3f;$3f].
// Implemented in assembler to utilize seriously fast multiplication 
// rotate_matrix(signed byte zeropage(5) x, signed byte register(Y) y, signed byte register(X) z)
rotate_matrix: {
    .label x = 5
  //SEG279 [137] *((const signed byte*) xr#0) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsz1 
    lda x
    sta xr
  //SEG280 [138] *((const signed byte*) yr#0) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsyy 
    tya
    sta yr
  //SEG281 [139] *((const signed byte*) zr#0) ← (signed byte) rotate_matrix::z#0 -- _deref_pbsc1=vbsxx 
    txa
    sta zr
  //SEG282 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
  //SEG283 rotate_matrix::@return
  //SEG284 [141] return 
    rts
}
//SEG285 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: {
  //SEG286 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
  //SEG287 store_matrix::@return
  //SEG288 [143] return 
    rts
}
//SEG289 calculate_matrix
// Prepare the 3x3 rotation matrix into rotation_matrix[]
// Angles sx, sy, sz are based on 2*PI=$100 
// Method described in C= Hacking Magazine Issue 8. http://www.ffd2.com/fridge/chacking/c=hacking8.txt
// calculate_matrix(signed byte register(X) sx, signed byte zeropage(3) sy)
calculate_matrix: {
    .label sy = 3
    .label t1 = 4
    .label t3 = 5
    .label t4 = 8
    .label t5 = $b
    .label t6 = $c
    .label t7 = $d
    .label t8 = $e
    .label t9 = $f
    .label t10 = $10
  //SEG290 [144] (signed byte) calculate_matrix::t1#0 ← (signed byte) calculate_matrix::sy#0 - (const signed byte) sz#0 -- vbsz1=vbsz2_minus_vbsc1 
    lda sy
    sec
    sbc #sz
    sta t1
  //SEG291 [145] (signed byte) calculate_matrix::t2#0 ← (signed byte) calculate_matrix::sy#0 + (const signed byte) sz#0 -- vbsyy=vbsz1_plus_vbsc1 
    lda #sz
    clc
    adc sy
    tay
  //SEG292 [146] (signed byte) calculate_matrix::t3#0 ← (signed byte) calculate_matrix::sx#0 + (const signed byte) sz#0 -- vbsz1=vbsxx_plus_vbsc1 
    txa
    clc
    adc #sz
    sta t3
  //SEG293 [147] (signed byte) calculate_matrix::t4#0 ← (signed byte) calculate_matrix::sx#0 - (const signed byte) sz#0 -- vbsz1=vbsxx_minus_vbsc1 
    txa
    sec
    sbc #sz
    sta t4
  //SEG294 [148] (signed byte) calculate_matrix::t5#0 ← (signed byte) calculate_matrix::sx#0 + (signed byte) calculate_matrix::t2#0 -- vbsz1=vbsxx_plus_vbsyy 
    txa
    sty $ff
    clc
    adc $ff
    sta t5
  //SEG295 [149] (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 t1
    sta t6
  //SEG296 [150] (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 t1
    sta t7
  //SEG297 [151] (signed byte) calculate_matrix::t8#0 ← (signed byte) calculate_matrix::t2#0 - (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsyy_minus_vbsxx 
    tya
    stx $ff
    sec
    sbc $ff
    sta t8
  //SEG298 [152] (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 sy
    sta t9
  //SEG299 [153] (signed byte) calculate_matrix::t10#0 ← (signed byte) calculate_matrix::sy#0 + (signed byte) calculate_matrix::sx#0 -- vbsz1=vbsz2_plus_vbsxx 
    txa
    clc
    adc sy
    sta t10
  //SEG300 [154] (signed byte~) calculate_matrix::$10 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t1#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsyy 
    ldx t1
    clc
    lda COSH,x
    adc COSH,y
  //SEG301 [155] *((const signed byte[9]) rotation_matrix#0) ← (signed byte~) calculate_matrix::$10 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix
  //SEG302 [156] (signed byte~) calculate_matrix::$11 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t1#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t2#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsyy 
    sec
    lda SINH,x
    sbc SINH,y
  //SEG303 [157] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (signed byte~) calculate_matrix::$11 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+1
  //SEG304 [158] (signed byte~) calculate_matrix::$12 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::sy#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz1 
    ldy sy
    clc
    lda SINH,y
    adc SINH,y
  //SEG305 [159] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (signed byte~) calculate_matrix::$12 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+2
  //SEG306 [160] (signed byte~) calculate_matrix::$13 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 
    ldx t3
    ldy t4
    sec
    lda SINH,x
    sbc SINH,y
  //SEG307 [161] (signed byte~) calculate_matrix::$14 ← (signed byte~) calculate_matrix::$13 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy t6
    clc
    adc COSQ,y
  //SEG308 [162] (signed byte~) calculate_matrix::$15 ← (signed byte~) calculate_matrix::$14 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t5
    sec
    sbc COSQ,y
  //SEG309 [163] (signed byte~) calculate_matrix::$16 ← (signed byte~) calculate_matrix::$15 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy t8
    clc
    adc COSQ,y
  //SEG310 [164] (signed byte~) calculate_matrix::$17 ← (signed byte~) calculate_matrix::$16 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t7
    sec
    sbc COSQ,y
  //SEG311 [165] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (signed byte~) calculate_matrix::$17 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+3
  //SEG312 [166] (signed byte~) calculate_matrix::$18 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 
    ldy t4
    clc
    lda COSH,x
    adc COSH,y
  //SEG313 [167] (signed byte~) calculate_matrix::$19 ← (signed byte~) calculate_matrix::$18 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy t5
    clc
    adc SINQ,y
  //SEG314 [168] (signed byte~) calculate_matrix::$20 ← (signed byte~) calculate_matrix::$19 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t6
    sec
    sbc SINQ,y
  //SEG315 [169] (signed byte~) calculate_matrix::$21 ← (signed byte~) calculate_matrix::$20 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t7
    sec
    sbc SINQ,y
  //SEG316 [170] (signed byte~) calculate_matrix::$22 ← (signed byte~) calculate_matrix::$21 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t8
    sec
    sbc SINQ,y
  //SEG317 [171] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (signed byte~) calculate_matrix::$22 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+4
  //SEG318 [172] (signed byte~) calculate_matrix::$23 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t9#0) - *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 
    ldx t9
    ldy t10
    sec
    lda SINH,x
    sbc SINH,y
  //SEG319 [173] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 5) ← (signed byte~) calculate_matrix::$23 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+5
  //SEG320 [174] (signed byte~) calculate_matrix::$24 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t4#0) - *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t3#0) -- vbsaa=pbsc1_derefidx_vbsz1_minus_pbsc1_derefidx_vbsz2 
    ldx t4
    ldy t3
    sec
    lda COSH,x
    sbc COSH,y
  //SEG321 [175] (signed byte~) calculate_matrix::$25 ← (signed byte~) calculate_matrix::$24 + *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy t6
    clc
    adc SINQ,y
  //SEG322 [176] (signed byte~) calculate_matrix::$26 ← (signed byte~) calculate_matrix::$25 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t5
    sec
    sbc SINQ,y
  //SEG323 [177] (signed byte~) calculate_matrix::$27 ← (signed byte~) calculate_matrix::$26 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t8
    sec
    sbc SINQ,y
  //SEG324 [178] (signed byte~) calculate_matrix::$28 ← (signed byte~) calculate_matrix::$27 - *((const signed byte*) SINQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t7
    sec
    sbc SINQ,y
  //SEG325 [179] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (signed byte~) calculate_matrix::$28 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+6
  //SEG326 [180] (signed byte~) calculate_matrix::$29 ← *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t3#0) + *((const signed byte*) SINH#0 + (signed byte) calculate_matrix::t4#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 
    ldx t3
    ldy t4
    clc
    lda SINH,x
    adc SINH,y
  //SEG327 [181] (signed byte~) calculate_matrix::$30 ← (signed byte~) calculate_matrix::$29 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t6#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy t6
    clc
    adc COSQ,y
  //SEG328 [182] (signed byte~) calculate_matrix::$31 ← (signed byte~) calculate_matrix::$30 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t5#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t5
    sec
    sbc COSQ,y
  //SEG329 [183] (signed byte~) calculate_matrix::$32 ← (signed byte~) calculate_matrix::$31 + *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t7#0) -- vbsaa=vbsaa_plus_pbsc1_derefidx_vbsz1 
    ldy t7
    clc
    adc COSQ,y
  //SEG330 [184] (signed byte~) calculate_matrix::$33 ← (signed byte~) calculate_matrix::$32 - *((const signed byte*) COSQ#0 + (signed byte) calculate_matrix::t8#0) -- vbsaa=vbsaa_minus_pbsc1_derefidx_vbsz1 
    ldy t8
    sec
    sbc COSQ,y
  //SEG331 [185] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 7) ← (signed byte~) calculate_matrix::$33 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+7
  //SEG332 [186] (signed byte~) calculate_matrix::$34 ← *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t9#0) + *((const signed byte*) COSH#0 + (signed byte) calculate_matrix::t10#0) -- vbsaa=pbsc1_derefidx_vbsz1_plus_pbsc1_derefidx_vbsz2 
    ldx t9
    ldy t10
    clc
    lda COSH,x
    adc COSH,y
  //SEG333 [187] *((const signed byte[9]) rotation_matrix#0+(byte/signed byte/word/signed word/dword/signed dword) 8) ← (signed byte~) calculate_matrix::$34 -- _deref_pbsc1=vbsaa 
    sta rotation_matrix+8
  //SEG334 calculate_matrix::@return
  //SEG335 [188] return 
    rts
}
//SEG336 debug_print_init
debug_print_init: {
    .label COLS = $d800
    .label at_line = SCREEN+$10*$28
    .label at_cols = COLS+$10*$28
    .label _59 = 6
    .label _60 = 6
    .label _63 = 6
    .label _64 = 6
    .label _67 = 6
    .label _68 = 6
    .label _71 = 6
    .label _72 = 6
    .label _75 = 6
    .label _76 = 6
    .label _79 = 6
    .label _80 = 6
    .label _83 = 6
    .label _84 = 6
    .label _87 = 6
    .label _88 = 6
    .label _91 = 6
    .label _92 = 6
    .label col = 4
    .label c = 2
    .label i = 3
  //SEG337 [190] call print_cls 
  //SEG338 [267] phi from debug_print_init to print_cls [phi:debug_print_init->print_cls]
    jsr print_cls
  //SEG339 [191] phi from debug_print_init to debug_print_init::@5 [phi:debug_print_init->debug_print_init::@5]
  //SEG340 debug_print_init::@5
  //SEG341 [192] call print_str_at 
  //SEG342 [260] phi from debug_print_init::@5 to print_str_at [phi:debug_print_init::@5->print_str_at]
  //SEG343 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@5->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$22
    sta print_str_at.at
    lda #>SCREEN+$22
    sta print_str_at.at+1
  //SEG344 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str [phi:debug_print_init::@5->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str
    sta print_str_at.str
    lda #>str
    sta print_str_at.str+1
    jsr print_str_at
  //SEG345 [193] phi from debug_print_init::@5 to debug_print_init::@6 [phi:debug_print_init::@5->debug_print_init::@6]
  //SEG346 debug_print_init::@6
  //SEG347 [194] call print_str_at 
  //SEG348 [260] phi from debug_print_init::@6 to print_str_at [phi:debug_print_init::@6->print_str_at]
  //SEG349 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@6->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*1+$22
    sta print_str_at.at
    lda #>SCREEN+$28*1+$22
    sta print_str_at.at+1
  //SEG350 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str1 [phi:debug_print_init::@6->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str1
    sta print_str_at.str
    lda #>str1
    sta print_str_at.str+1
    jsr print_str_at
  //SEG351 [195] phi from debug_print_init::@6 to debug_print_init::@7 [phi:debug_print_init::@6->debug_print_init::@7]
  //SEG352 debug_print_init::@7
  //SEG353 [196] call print_str_at 
  //SEG354 [260] phi from debug_print_init::@7 to print_str_at [phi:debug_print_init::@7->print_str_at]
  //SEG355 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 34 [phi:debug_print_init::@7->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*2+$22
    sta print_str_at.at
    lda #>SCREEN+$28*2+$22
    sta print_str_at.at+1
  //SEG356 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str2 [phi:debug_print_init::@7->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str2
    sta print_str_at.str
    lda #>str2
    sta print_str_at.str+1
    jsr print_str_at
  //SEG357 [197] phi from debug_print_init::@7 to debug_print_init::@8 [phi:debug_print_init::@7->debug_print_init::@8]
  //SEG358 debug_print_init::@8
  //SEG359 [198] call print_str_at 
  //SEG360 [260] phi from debug_print_init::@8 to print_str_at [phi:debug_print_init::@8->print_str_at]
  //SEG361 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 16 [phi:debug_print_init::@8->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$10
    sta print_str_at.at
    lda #>SCREEN+$28*$10
    sta print_str_at.at+1
  //SEG362 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str3 [phi:debug_print_init::@8->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str3
    sta print_str_at.str
    lda #>str3
    sta print_str_at.str+1
    jsr print_str_at
  //SEG363 [199] phi from debug_print_init::@8 to debug_print_init::@9 [phi:debug_print_init::@8->debug_print_init::@9]
  //SEG364 debug_print_init::@9
  //SEG365 [200] call print_str_at 
  //SEG366 [260] phi from debug_print_init::@9 to print_str_at [phi:debug_print_init::@9->print_str_at]
  //SEG367 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 17 [phi:debug_print_init::@9->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$11
    sta print_str_at.at
    lda #>SCREEN+$28*$11
    sta print_str_at.at+1
  //SEG368 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str4 [phi:debug_print_init::@9->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str4
    sta print_str_at.str
    lda #>str4
    sta print_str_at.str+1
    jsr print_str_at
  //SEG369 [201] phi from debug_print_init::@9 to debug_print_init::@10 [phi:debug_print_init::@9->debug_print_init::@10]
  //SEG370 debug_print_init::@10
  //SEG371 [202] call print_str_at 
  //SEG372 [260] phi from debug_print_init::@10 to print_str_at [phi:debug_print_init::@10->print_str_at]
  //SEG373 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 18 [phi:debug_print_init::@10->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$12
    sta print_str_at.at
    lda #>SCREEN+$28*$12
    sta print_str_at.at+1
  //SEG374 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str5 [phi:debug_print_init::@10->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str5
    sta print_str_at.str
    lda #>str5
    sta print_str_at.str+1
    jsr print_str_at
  //SEG375 [203] phi from debug_print_init::@10 to debug_print_init::@11 [phi:debug_print_init::@10->debug_print_init::@11]
  //SEG376 debug_print_init::@11
  //SEG377 [204] call print_str_at 
  //SEG378 [260] phi from debug_print_init::@11 to print_str_at [phi:debug_print_init::@11->print_str_at]
  //SEG379 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 19 [phi:debug_print_init::@11->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$13
    sta print_str_at.at
    lda #>SCREEN+$28*$13
    sta print_str_at.at+1
  //SEG380 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str6 [phi:debug_print_init::@11->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str6
    sta print_str_at.str
    lda #>str6
    sta print_str_at.str+1
    jsr print_str_at
  //SEG381 [205] phi from debug_print_init::@11 to debug_print_init::@12 [phi:debug_print_init::@11->debug_print_init::@12]
  //SEG382 debug_print_init::@12
  //SEG383 [206] call print_str_at 
  //SEG384 [260] phi from debug_print_init::@12 to print_str_at [phi:debug_print_init::@12->print_str_at]
  //SEG385 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 20 [phi:debug_print_init::@12->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$14
    sta print_str_at.at
    lda #>SCREEN+$28*$14
    sta print_str_at.at+1
  //SEG386 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str7 [phi:debug_print_init::@12->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str7
    sta print_str_at.str
    lda #>str7
    sta print_str_at.str+1
    jsr print_str_at
  //SEG387 [207] phi from debug_print_init::@12 to debug_print_init::@13 [phi:debug_print_init::@12->debug_print_init::@13]
  //SEG388 debug_print_init::@13
  //SEG389 [208] call print_str_at 
  //SEG390 [260] phi from debug_print_init::@13 to print_str_at [phi:debug_print_init::@13->print_str_at]
  //SEG391 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 21 [phi:debug_print_init::@13->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$15
    sta print_str_at.at
    lda #>SCREEN+$28*$15
    sta print_str_at.at+1
  //SEG392 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str8 [phi:debug_print_init::@13->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str8
    sta print_str_at.str
    lda #>str8
    sta print_str_at.str+1
    jsr print_str_at
  //SEG393 [209] phi from debug_print_init::@13 to debug_print_init::@14 [phi:debug_print_init::@13->debug_print_init::@14]
  //SEG394 debug_print_init::@14
  //SEG395 [210] call print_str_at 
  //SEG396 [260] phi from debug_print_init::@14 to print_str_at [phi:debug_print_init::@14->print_str_at]
  //SEG397 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 22 [phi:debug_print_init::@14->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$16
    sta print_str_at.at
    lda #>SCREEN+$28*$16
    sta print_str_at.at+1
  //SEG398 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str9 [phi:debug_print_init::@14->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str9
    sta print_str_at.str
    lda #>str9
    sta print_str_at.str+1
    jsr print_str_at
  //SEG399 [211] phi from debug_print_init::@14 to debug_print_init::@15 [phi:debug_print_init::@14->debug_print_init::@15]
  //SEG400 debug_print_init::@15
  //SEG401 [212] call print_str_at 
  //SEG402 [260] phi from debug_print_init::@15 to print_str_at [phi:debug_print_init::@15->print_str_at]
  //SEG403 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 23 [phi:debug_print_init::@15->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$17
    sta print_str_at.at
    lda #>SCREEN+$28*$17
    sta print_str_at.at+1
  //SEG404 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str10 [phi:debug_print_init::@15->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str10
    sta print_str_at.str
    lda #>str10
    sta print_str_at.str+1
    jsr print_str_at
  //SEG405 [213] phi from debug_print_init::@15 to debug_print_init::@16 [phi:debug_print_init::@15->debug_print_init::@16]
  //SEG406 debug_print_init::@16
  //SEG407 [214] call print_str_at 
  //SEG408 [260] phi from debug_print_init::@16 to print_str_at [phi:debug_print_init::@16->print_str_at]
  //SEG409 [260] phi (byte*) print_str_at::at#15 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24 [phi:debug_print_init::@16->print_str_at#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$18
    sta print_str_at.at
    lda #>SCREEN+$28*$18
    sta print_str_at.at+1
  //SEG410 [260] phi (byte*) print_str_at::str#15 = (const string) debug_print_init::str11 [phi:debug_print_init::@16->print_str_at#1] -- pbuz1=pbuc1 
    lda #<str11
    sta print_str_at.str
    lda #>str11
    sta print_str_at.str+1
    jsr print_str_at
  //SEG411 [215] phi from debug_print_init::@16 to debug_print_init::@1 [phi:debug_print_init::@16->debug_print_init::@1]
  //SEG412 [215] phi (byte) debug_print_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print_init::@16->debug_print_init::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
  //SEG413 [215] phi (byte) debug_print_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:debug_print_init::@16->debug_print_init::@1#1] -- vbuz1=vbuc1 
    lda #4
    sta c
  //SEG414 [215] phi from debug_print_init::@3 to debug_print_init::@1 [phi:debug_print_init::@3->debug_print_init::@1]
  //SEG415 [215] 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 
  //SEG416 [215] 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 
  //SEG417 debug_print_init::@1
  b1:
  //SEG418 [216] (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 c
    clc
    adc #<at_line
    sta print_sbyte_at.at
    lda #>at_line
    adc #0
    sta print_sbyte_at.at+1
  //SEG419 [217] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[8]) xs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldx i
    lda xs,x
    tax
  //SEG420 [218] call print_sbyte_at 
  //SEG421 [114] phi from debug_print_init::@1 to print_sbyte_at [phi:debug_print_init::@1->print_sbyte_at]
  //SEG422 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#0 [phi:debug_print_init::@1->print_sbyte_at#0] -- register_copy 
  //SEG423 [114] 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
  //SEG424 debug_print_init::@18
  //SEG425 [219] (byte*) print_sbyte_at::at#1 ← (const byte*) debug_print_init::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*1
    sta print_sbyte_at.at
    lda #>at_line+$28*1
    adc #0
    sta print_sbyte_at.at+1
  //SEG426 [220] (signed byte) print_sbyte_at::b#2 ← *((const signed byte[8]) ys#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldx i
    lda ys,x
    tax
  //SEG427 [221] call print_sbyte_at 
  //SEG428 [114] phi from debug_print_init::@18 to print_sbyte_at [phi:debug_print_init::@18->print_sbyte_at]
  //SEG429 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#1 [phi:debug_print_init::@18->print_sbyte_at#0] -- register_copy 
  //SEG430 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#2 [phi:debug_print_init::@18->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
  //SEG431 debug_print_init::@19
  //SEG432 [222] (byte*) print_sbyte_at::at#2 ← (const byte*) debug_print_init::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_line+$28*2
    sta print_sbyte_at.at
    lda #>at_line+$28*2
    adc #0
    sta print_sbyte_at.at+1
  //SEG433 [223] (signed byte) print_sbyte_at::b#3 ← *((const signed byte[8]) zs#0 + (byte) debug_print_init::i#2) -- vbsxx=pbsc1_derefidx_vbuz1 
    ldx i
    lda zs,x
    tax
  //SEG434 [224] call print_sbyte_at 
  //SEG435 [114] phi from debug_print_init::@19 to print_sbyte_at [phi:debug_print_init::@19->print_sbyte_at]
  //SEG436 [114] phi (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#2 [phi:debug_print_init::@19->print_sbyte_at#0] -- register_copy 
  //SEG437 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#3 [phi:debug_print_init::@19->print_sbyte_at#1] -- register_copy 
    jsr print_sbyte_at
  //SEG438 [225] phi from debug_print_init::@19 to debug_print_init::@2 [phi:debug_print_init::@19->debug_print_init::@2]
  //SEG439 [225] phi (byte) debug_print_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:debug_print_init::@19->debug_print_init::@2#0] -- vbuxx=vbuc1 
    ldx #0
  //SEG440 [225] phi from debug_print_init::@2 to debug_print_init::@2 [phi:debug_print_init::@2->debug_print_init::@2]
  //SEG441 [225] 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 
  //SEG442 debug_print_init::@2
  b2:
  //SEG443 [226] (byte) debug_print_init::col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) debug_print_init::i#2 -- vbuz1=vbuc1_plus_vbuz2 
    lda #8
    clc
    adc i
    sta col
  //SEG444 [227] (byte*~) debug_print_init::$59 ← (const byte*) debug_print_init::at_cols#0 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols
    sta _59
    lda #>at_cols
    adc #0
    sta _59+1
  //SEG445 [228] (byte*~) debug_print_init::$60 ← (byte*~) debug_print_init::$59 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx 
    txa
    clc
    adc _60
    sta _60
    lda #0
    adc _60+1
    sta _60+1
  //SEG446 [229] *((byte*~) debug_print_init::$60) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    ldy #0
    sta (_60),y
  //SEG447 [230] (byte*~) debug_print_init::$63 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*1
    sta _63
    lda #>at_cols+$28*1
    adc #0
    sta _63+1
  //SEG448 [231] (byte*~) debug_print_init::$64 ← (byte*~) debug_print_init::$63 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx 
    txa
    clc
    adc _64
    sta _64
    tya
    adc _64+1
    sta _64+1
  //SEG449 [232] *((byte*~) debug_print_init::$64) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    sta (_64),y
  //SEG450 [233] (byte*~) debug_print_init::$67 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*2
    sta _67
    lda #>at_cols+$28*2
    adc #0
    sta _67+1
  //SEG451 [234] (byte*~) debug_print_init::$68 ← (byte*~) debug_print_init::$67 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx 
    txa
    clc
    adc _68
    sta _68
    tya
    adc _68+1
    sta _68+1
  //SEG452 [235] *((byte*~) debug_print_init::$68) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    sta (_68),y
  //SEG453 [236] (byte*~) debug_print_init::$71 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*3
    sta _71
    lda #>at_cols+$28*3
    adc #0
    sta _71+1
  //SEG454 [237] (byte*~) debug_print_init::$72 ← (byte*~) debug_print_init::$71 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx 
    txa
    clc
    adc _72
    sta _72
    tya
    adc _72+1
    sta _72+1
  //SEG455 [238] *((byte*~) debug_print_init::$72) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    sta (_72),y
  //SEG456 [239] (byte*~) debug_print_init::$75 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*4
    sta _75
    lda #>at_cols+$28*4
    adc #0
    sta _75+1
  //SEG457 [240] (byte*~) debug_print_init::$76 ← (byte*~) debug_print_init::$75 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx 
    txa
    clc
    adc _76
    sta _76
    tya
    adc _76+1
    sta _76+1
  //SEG458 [241] *((byte*~) debug_print_init::$76) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    sta (_76),y
  //SEG459 [242] (byte*~) debug_print_init::$79 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*5
    sta _79
    lda #>at_cols+$28*5
    adc #0
    sta _79+1
  //SEG460 [243] (byte*~) debug_print_init::$80 ← (byte*~) debug_print_init::$79 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx 
    txa
    clc
    adc _80
    sta _80
    tya
    adc _80+1
    sta _80+1
  //SEG461 [244] *((byte*~) debug_print_init::$80) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    sta (_80),y
  //SEG462 [245] (byte*~) debug_print_init::$83 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*6
    sta _83
    lda #>at_cols+$28*6
    adc #0
    sta _83+1
  //SEG463 [246] (byte*~) debug_print_init::$84 ← (byte*~) debug_print_init::$83 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx 
    txa
    clc
    adc _84
    sta _84
    tya
    adc _84+1
    sta _84+1
  //SEG464 [247] *((byte*~) debug_print_init::$84) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    sta (_84),y
  //SEG465 [248] (byte*~) debug_print_init::$87 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*7
    sta _87
    lda #>at_cols+$28*7
    adc #0
    sta _87+1
  //SEG466 [249] (byte*~) debug_print_init::$88 ← (byte*~) debug_print_init::$87 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx 
    txa
    clc
    adc _88
    sta _88
    tya
    adc _88+1
    sta _88+1
  //SEG467 [250] *((byte*~) debug_print_init::$88) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    sta (_88),y
  //SEG468 [251] (byte*~) debug_print_init::$91 ← (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) debug_print_init::c#2 -- pbuz1=pbuc1_plus_vbuz2 
    lda c
    clc
    adc #<at_cols+$28*8
    sta _91
    lda #>at_cols+$28*8
    adc #0
    sta _91+1
  //SEG469 [252] (byte*~) debug_print_init::$92 ← (byte*~) debug_print_init::$91 + (byte) debug_print_init::j#2 -- pbuz1=pbuz1_plus_vbuxx 
    txa
    clc
    adc _92
    sta _92
    tya
    adc _92+1
    sta _92+1
  //SEG470 [253] *((byte*~) debug_print_init::$92) ← (byte) debug_print_init::col#0 -- _deref_pbuz1=vbuz2 
    lda col
    sta (_92),y
  //SEG471 [254] (byte) debug_print_init::j#1 ← ++ (byte) debug_print_init::j#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG472 [255] if((byte) debug_print_init::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto debug_print_init::@2 -- vbuxx_neq_vbuc1_then_la1 
    cpx #4
    beq !b2+
    jmp b2
  !b2:
  //SEG473 debug_print_init::@3
  //SEG474 [256] (byte) debug_print_init::c#1 ← (byte) debug_print_init::c#2 + (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz1_plus_vbuc1 
    lda #4
    clc
    adc c
    sta c
  //SEG475 [257] (byte) debug_print_init::i#1 ← ++ (byte) debug_print_init::i#2 -- vbuz1=_inc_vbuz1 
    inc i
  //SEG476 [258] if((byte) debug_print_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto debug_print_init::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda i
    cmp #8
    beq !b1+
    jmp b1
  !b1:
  //SEG477 debug_print_init::@return
  //SEG478 [259] return 
    rts
    str: .text "sx@"
    str1: .text "sy@"
    str2: .text "sz@"
    str3: .text "x@"
    str4: .text "y@"
    str5: .text "z@"
    str6: .text "xr@"
    str7: .text "yr@"
    str8: .text "zr@"
    str9: .text "pp@"
    str10: .text "xp@"
    str11: .text "yp@"
}
//SEG479 print_str_at
// Print a string at a specific screen position
// print_str_at(byte* zeropage(6) str, byte* zeropage(9) at)
print_str_at: {
    .label at = 9
    .label str = 6
  //SEG480 [261] 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]
  //SEG481 [261] 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 
  //SEG482 [261] 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 
  //SEG483 print_str_at::@1
  b1:
  //SEG484 [262] if(*((byte*) print_str_at::str#13)!=(byte) '@') goto print_str_at::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 
    ldy #0
    lda (str),y
    cmp #'@'
    bne b2
  //SEG485 print_str_at::@return
  //SEG486 [263] return 
    rts
  //SEG487 print_str_at::@2
  b2:
  //SEG488 [264] *((byte*) print_str_at::at#13) ← *((byte*) print_str_at::str#13) -- _deref_pbuz1=_deref_pbuz2 
    ldy #0
    lda (str),y
    sta (at),y
  //SEG489 [265] (byte*) print_str_at::at#0 ← ++ (byte*) print_str_at::at#13 -- pbuz1=_inc_pbuz1 
    inc at
    bne !+
    inc at+1
  !:
  //SEG490 [266] (byte*) print_str_at::str#0 ← ++ (byte*) print_str_at::str#13 -- pbuz1=_inc_pbuz1 
    inc str
    bne !+
    inc str+1
  !:
    jmp b1
}
//SEG491 print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    .label sc = 6
  //SEG492 [268] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
  //SEG493 [268] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor
    sta sc
    lda #>print_line_cursor
    sta sc+1
  //SEG494 [268] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
  //SEG495 [268] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy 
  //SEG496 print_cls::@1
  b1:
  //SEG497 [269] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (sc),y
  //SEG498 [270] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 
    inc sc
    bne !+
    inc sc+1
  !:
  //SEG499 [271] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 
    lda sc+1
    cmp #>print_line_cursor+$3e8
    bne b1
    lda sc
    cmp #<print_line_cursor+$3e8
    bne b1
  //SEG500 print_cls::@return
  //SEG501 [272] return 
    rts
}
//SEG502 sprites_init
// Initialize sprites
sprites_init: {
    .label SCREEN = $400
    .label sprites_ptr = SCREEN+$3f8
  //SEG503 [273] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 
    lda #$ff
    sta SPRITES_ENABLE
  //SEG504 [274] phi from sprites_init to sprites_init::@1 [phi:sprites_init->sprites_init::@1]
  //SEG505 [274] phi (byte) sprites_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sprites_init->sprites_init::@1#0] -- vbuxx=vbuc1 
    ldx #0
  //SEG506 [274] phi from sprites_init::@1 to sprites_init::@1 [phi:sprites_init::@1->sprites_init::@1]
  //SEG507 [274] phi (byte) sprites_init::i#2 = (byte) sprites_init::i#1 [phi:sprites_init::@1->sprites_init::@1#0] -- register_copy 
  //SEG508 sprites_init::@1
  b1:
  //SEG509 [275] *((const byte*) sprites_init::sprites_ptr#0 + (byte) sprites_init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #$ff&SPRITE/$40
    sta sprites_ptr,x
  //SEG510 [276] *((const byte*) SPRITES_COLS#0 + (byte) sprites_init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #GREEN
    sta SPRITES_COLS,x
  //SEG511 [277] (byte) sprites_init::i#1 ← ++ (byte) sprites_init::i#2 -- vbuxx=_inc_vbuxx 
    inx
  //SEG512 [278] if((byte) sprites_init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto sprites_init::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #8
    bne b1
  //SEG513 sprites_init::@return
  //SEG514 [279] return 
    rts
}
  print_hextab: .text "0123456789abcdef"
  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
  // Positions to rotate
  xs: .byte -$34, -$34, -$34, 0, 0, $34, $34, $34
  ys: .byte -$34, 0, $34, -$34, $34, -$34, 0, $34
.pc = mulf_sqr1 "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) }
    }

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

.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)

.pc = PERSP_Z "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)));
    	}
    }
	}

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

.pc = SINQ "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 = SINH_LO "SINH_LO"
  {
    .var min = -$2000
    .var max = $2000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte <(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }

.pc = SINH_HI "SINH_HI"
  {
    .var min = -$2000
    .var max = $2000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte >(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }

.pc = SINQ_LO "SINQ_LO"
  {
    .var min = -$1000
    .var max = $1000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte <(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }

.pc = SINQ_HI "SINQ_HI"
  {
    .var min = -$1000
    .var max = $1000
    .var ampl = max-min;
    .for(var i=0;i<$140;i++) {
        .var rad = i*2*PI/256;
        .byte >(min+(ampl/2)+(ampl/2)*sin(rad))
    }
    }


