Fixing pointer addition (word*~) bsearch16u::$7 ← (word*) bsearch16u::items + (byte~) bsearch16u::$6
Fixing pointer addition (word*~) bsearch16u::$15 ← (word*) bsearch16u::pivot + (number) 1
Fixing pointer addition (word*~) bsearch16u::$1 ← (word*) bsearch16u::items - (number) 1
Fixing pointer array-indexing *((word*) utoa::digit_values + (byte) utoa::digit)
Fixing pointer array-indexing *((dword*) ultoa::digit_values + (byte) ultoa::digit)
Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src)
Warning! Adding boolean cast to non-boolean condition *((byte*) strlen::str)
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_lines::str)
Warning! Adding boolean cast to non-boolean condition (byte) print_str_lines::ch
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str::str)
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_at::str)
Warning! Adding boolean cast to non-boolean sub-expression (byte) print_str_lines::ch
Identified constant variable (byte*) HEAP_TOP
Identified constant variable (byte*) place_sprites::sprites_ptr
Identified constant variable (byte*) gen_sintab::f_2pi
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx 
Inlined call call prepareMEM (word) setFAC::w 
Inlined call call prepareMEM (word~) setMEMtoFAC::$0 
Inlined call call prepareMEM (word~) setFACtoMEM::$0 
Inlined call call prepareMEM (word~) setARGtoMEM::$0 
Inlined call call prepareMEM (word~) addMEMtoFAC::$0 
Inlined call call prepareMEM (word~) subFACfromMEM::$0 
Inlined call call prepareMEM (word~) divMEMbyFAC::$0 
Inlined call call prepareMEM (word~) mulFACbyMEM::$0 
Inlined call call prepareMEM (word~) pwrMEMbyFAC::$0 
Culled Empty Block (label) @1
Culled Empty Block (label) @2
Culled Empty Block (label) @3
Culled Empty Block (label) @4
Culled Empty Block (label) @5
Culled Empty Block (label) setFAC::prepareMEM1_@return
Culled Empty Block (label) @6
Culled Empty Block (label) getFAC::@1
Culled Empty Block (label) @7
Culled Empty Block (label) @8
Culled Empty Block (label) @9
Culled Empty Block (label) setMEMtoFAC::prepareMEM1_@return
Culled Empty Block (label) @10
Culled Empty Block (label) @11
Culled Empty Block (label) @12
Culled Empty Block (label) @13
Culled Empty Block (label) @14
Culled Empty Block (label) addMEMtoFAC::prepareMEM1_@return
Culled Empty Block (label) @15
Culled Empty Block (label) @16
Culled Empty Block (label) @17
Culled Empty Block (label) @18
Culled Empty Block (label) divMEMbyFAC::prepareMEM1_@return
Culled Empty Block (label) @19
Culled Empty Block (label) mulFACbyMEM::prepareMEM1_@return
Culled Empty Block (label) @20
Culled Empty Block (label) @21
Culled Empty Block (label) @22
Culled Empty Block (label) @23
Culled Empty Block (label) @24
Culled Empty Block (label) @25
Culled Empty Block (label) @26
Culled Empty Block (label) @27
Culled Empty Block (label) @28
Culled Empty Block (label) @29
Culled Empty Block (label) @30
Culled Empty Block (label) @31
Culled Empty Block (label) @32
Culled Empty Block (label) @33
Culled Empty Block (label) @34
Culled Empty Block (label) @35
Culled Empty Block (label) @36
Culled Empty Block (label) @37
Culled Empty Block (label) @38
Culled Empty Block (label) @39
Culled Empty Block (label) @40
Culled Empty Block (label) @41
Culled Empty Block (label) @42
Culled Empty Block (label) @43
Culled Empty Block (label) @44
Culled Empty Block (label) @45
Culled Empty Block (label) @46
Culled Empty Block (label) @47
Culled Empty Block (label) @48
Culled Empty Block (label) @49
Culled Empty Block (label) @50
Culled Empty Block (label) @51
Culled Empty Block (label) @52
Culled Empty Block (label) @53
Culled Empty Block (label) @54
Culled Empty Block (label) @55
Culled Empty Block (label) @56
Culled Empty Block (label) @57
Culled Empty Block (label) @58
Culled Empty Block (label) @59
Culled Empty Block (label) @60
Culled Empty Block (label) @61
Culled Empty Block (label) @62
Culled Empty Block (label) @63
Culled Empty Block (label) @64
Culled Empty Block (label) @65
Culled Empty Block (label) @66
Culled Empty Block (label) @67
Culled Empty Block (label) @68
Culled Empty Block (label) main::@1
Culled Empty Block (label) main::@4
Culled Empty Block (label) @69
Culled Empty Block (label) @70
Culled Empty Block (label) clear_screen::@4
Culled Empty Block (label) clear_screen::@3
Culled Empty Block (label) clear_screen::@5
Culled Empty Block (label) clear_screen::@6
Culled Empty Block (label) @72
Culled Empty Block (label) @74
Culled Empty Block (label) place_sprites::@2
Culled Empty Block (label) @75
Culled Empty Block (label) gen_sprites::@2
Culled Empty Block (label) @76
Culled Empty Block (label) @77
Culled Empty Block (label) gen_sintab::@4
Culled Empty Block (label) gen_sintab::@3
Culled Empty Block (label) gen_sintab::@5
Culled Empty Block (label) gen_sintab::@6

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

(void()) setFAC((word) setFAC::w)
setFAC: scope:[setFAC]  from gen_sintab gen_sintab::@12 gen_sintab::@2 gen_sintab::@20 gen_sintab::@8
  (word) setFAC::w#5 ← phi( gen_sintab/(word) setFAC::w#0 gen_sintab::@12/(word) setFAC::w#2 gen_sintab::@2/(word) setFAC::w#3 gen_sintab::@20/(word) setFAC::w#4 gen_sintab::@8/(word) setFAC::w#1 )
  (word) setFAC::prepareMEM1_mem#0 ← (word) setFAC::w#5
  to:setFAC::prepareMEM1
setFAC::prepareMEM1: scope:[setFAC]  from setFAC
  (word) setFAC::prepareMEM1_mem#1 ← phi( setFAC/(word) setFAC::prepareMEM1_mem#0 )
  (byte~) setFAC::prepareMEM1_$0 ← < (word) setFAC::prepareMEM1_mem#1
  *((const byte*) memLo) ← (byte~) setFAC::prepareMEM1_$0
  (byte~) setFAC::prepareMEM1_$1 ← > (word) setFAC::prepareMEM1_mem#1
  *((const byte*) memHi) ← (byte~) setFAC::prepareMEM1_$1
  to:setFAC::@1
setFAC::@1: scope:[setFAC]  from setFAC::prepareMEM1
  asm { ldymemLo ldamemHi jsr$b391  }
  to:setFAC::@return
setFAC::@return: scope:[setFAC]  from setFAC::@1
  return 
  to:@return

(word()) getFAC()
getFAC: scope:[getFAC]  from gen_sintab::@25
  asm { jsr$b1aa stymemLo stamemHi  }
  (word) getFAC::w#0 ← (word){ *((const byte*) memHi), *((const byte*) memLo) }
  (word) getFAC::return#0 ← (word) getFAC::w#0
  to:getFAC::@return
getFAC::@return: scope:[getFAC]  from getFAC
  (word) getFAC::return#3 ← phi( getFAC/(word) getFAC::return#0 )
  (word) getFAC::return#1 ← (word) getFAC::return#3
  return 
  to:@return

(void()) setARGtoFAC()
setARGtoFAC: scope:[setARGtoFAC]  from gen_sintab::@7
  asm { jsr$bc0f  }
  to:setARGtoFAC::@return
setARGtoFAC::@return: scope:[setARGtoFAC]  from setARGtoFAC
  return 
  to:@return

(void()) setMEMtoFAC((byte*) setMEMtoFAC::mem)
setMEMtoFAC: scope:[setMEMtoFAC]  from gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@19 gen_sintab::@9
  (byte*) setMEMtoFAC::mem#5 ← phi( gen_sintab::@11/(byte*) setMEMtoFAC::mem#1 gen_sintab::@14/(byte*) setMEMtoFAC::mem#2 gen_sintab::@16/(byte*) setMEMtoFAC::mem#3 gen_sintab::@19/(byte*) setMEMtoFAC::mem#4 gen_sintab::@9/(byte*) setMEMtoFAC::mem#0 )
  (word~) setMEMtoFAC::$0 ← ((word)) (byte*) setMEMtoFAC::mem#5
  (word) setMEMtoFAC::prepareMEM1_mem#0 ← (word~) setMEMtoFAC::$0
  to:setMEMtoFAC::prepareMEM1
setMEMtoFAC::prepareMEM1: scope:[setMEMtoFAC]  from setMEMtoFAC
  (word) setMEMtoFAC::prepareMEM1_mem#1 ← phi( setMEMtoFAC/(word) setMEMtoFAC::prepareMEM1_mem#0 )
  (byte~) setMEMtoFAC::prepareMEM1_$0 ← < (word) setMEMtoFAC::prepareMEM1_mem#1
  *((const byte*) memLo) ← (byte~) setMEMtoFAC::prepareMEM1_$0
  (byte~) setMEMtoFAC::prepareMEM1_$1 ← > (word) setMEMtoFAC::prepareMEM1_mem#1
  *((const byte*) memHi) ← (byte~) setMEMtoFAC::prepareMEM1_$1
  to:setMEMtoFAC::@1
setMEMtoFAC::@1: scope:[setMEMtoFAC]  from setMEMtoFAC::prepareMEM1
  asm { ldxmemLo ldymemHi jsr$bbd4  }
  to:setMEMtoFAC::@return
setMEMtoFAC::@return: scope:[setMEMtoFAC]  from setMEMtoFAC::@1
  return 
  to:@return

(void()) addMEMtoFAC((byte*) addMEMtoFAC::mem)
addMEMtoFAC: scope:[addMEMtoFAC]  from gen_sintab::@15 gen_sintab::@24
  (byte*) addMEMtoFAC::mem#2 ← phi( gen_sintab::@15/(byte*) addMEMtoFAC::mem#0 gen_sintab::@24/(byte*) addMEMtoFAC::mem#1 )
  (word~) addMEMtoFAC::$0 ← ((word)) (byte*) addMEMtoFAC::mem#2
  (word) addMEMtoFAC::prepareMEM1_mem#0 ← (word~) addMEMtoFAC::$0
  to:addMEMtoFAC::prepareMEM1
addMEMtoFAC::prepareMEM1: scope:[addMEMtoFAC]  from addMEMtoFAC
  (word) addMEMtoFAC::prepareMEM1_mem#1 ← phi( addMEMtoFAC/(word) addMEMtoFAC::prepareMEM1_mem#0 )
  (byte~) addMEMtoFAC::prepareMEM1_$0 ← < (word) addMEMtoFAC::prepareMEM1_mem#1
  *((const byte*) memLo) ← (byte~) addMEMtoFAC::prepareMEM1_$0
  (byte~) addMEMtoFAC::prepareMEM1_$1 ← > (word) addMEMtoFAC::prepareMEM1_mem#1
  *((const byte*) memHi) ← (byte~) addMEMtoFAC::prepareMEM1_$1
  to:addMEMtoFAC::@1
addMEMtoFAC::@1: scope:[addMEMtoFAC]  from addMEMtoFAC::prepareMEM1
  asm { ldamemLo ldymemHi jsr$b867  }
  to:addMEMtoFAC::@return
addMEMtoFAC::@return: scope:[addMEMtoFAC]  from addMEMtoFAC::@1
  return 
  to:@return

(void()) subFACfromARG()
subFACfromARG: scope:[subFACfromARG]  from gen_sintab::@10
  asm { jsr$b853  }
  to:subFACfromARG::@return
subFACfromARG::@return: scope:[subFACfromARG]  from subFACfromARG
  return 
  to:@return

(void()) divMEMbyFAC((byte*) divMEMbyFAC::mem)
divMEMbyFAC: scope:[divMEMbyFAC]  from gen_sintab::@13 gen_sintab::@21
  (byte*) divMEMbyFAC::mem#2 ← phi( gen_sintab::@13/(byte*) divMEMbyFAC::mem#0 gen_sintab::@21/(byte*) divMEMbyFAC::mem#1 )
  (word~) divMEMbyFAC::$0 ← ((word)) (byte*) divMEMbyFAC::mem#2
  (word) divMEMbyFAC::prepareMEM1_mem#0 ← (word~) divMEMbyFAC::$0
  to:divMEMbyFAC::prepareMEM1
divMEMbyFAC::prepareMEM1: scope:[divMEMbyFAC]  from divMEMbyFAC
  (word) divMEMbyFAC::prepareMEM1_mem#1 ← phi( divMEMbyFAC/(word) divMEMbyFAC::prepareMEM1_mem#0 )
  (byte~) divMEMbyFAC::prepareMEM1_$0 ← < (word) divMEMbyFAC::prepareMEM1_mem#1
  *((const byte*) memLo) ← (byte~) divMEMbyFAC::prepareMEM1_$0
  (byte~) divMEMbyFAC::prepareMEM1_$1 ← > (word) divMEMbyFAC::prepareMEM1_mem#1
  *((const byte*) memHi) ← (byte~) divMEMbyFAC::prepareMEM1_$1
  to:divMEMbyFAC::@1
divMEMbyFAC::@1: scope:[divMEMbyFAC]  from divMEMbyFAC::prepareMEM1
  asm { ldamemLo ldymemHi jsr$bb0f  }
  to:divMEMbyFAC::@return
divMEMbyFAC::@return: scope:[divMEMbyFAC]  from divMEMbyFAC::@1
  return 
  to:@return

(void()) mulFACbyMEM((byte*) mulFACbyMEM::mem)
mulFACbyMEM: scope:[mulFACbyMEM]  from gen_sintab::@18 gen_sintab::@23
  (byte*) mulFACbyMEM::mem#2 ← phi( gen_sintab::@18/(byte*) mulFACbyMEM::mem#0 gen_sintab::@23/(byte*) mulFACbyMEM::mem#1 )
  (word~) mulFACbyMEM::$0 ← ((word)) (byte*) mulFACbyMEM::mem#2
  (word) mulFACbyMEM::prepareMEM1_mem#0 ← (word~) mulFACbyMEM::$0
  to:mulFACbyMEM::prepareMEM1
mulFACbyMEM::prepareMEM1: scope:[mulFACbyMEM]  from mulFACbyMEM
  (word) mulFACbyMEM::prepareMEM1_mem#1 ← phi( mulFACbyMEM/(word) mulFACbyMEM::prepareMEM1_mem#0 )
  (byte~) mulFACbyMEM::prepareMEM1_$0 ← < (word) mulFACbyMEM::prepareMEM1_mem#1
  *((const byte*) memLo) ← (byte~) mulFACbyMEM::prepareMEM1_$0
  (byte~) mulFACbyMEM::prepareMEM1_$1 ← > (word) mulFACbyMEM::prepareMEM1_mem#1
  *((const byte*) memHi) ← (byte~) mulFACbyMEM::prepareMEM1_$1
  to:mulFACbyMEM::@1
mulFACbyMEM::@1: scope:[mulFACbyMEM]  from mulFACbyMEM::prepareMEM1
  asm { ldamemLo ldymemHi jsr$ba28  }
  to:mulFACbyMEM::@return
mulFACbyMEM::@return: scope:[mulFACbyMEM]  from mulFACbyMEM::@1
  return 
  to:@return

(void()) sinFAC()
sinFAC: scope:[sinFAC]  from gen_sintab::@22
  asm { jsr$e26b  }
  to:sinFAC::@return
sinFAC::@return: scope:[sinFAC]  from sinFAC
  return 
  to:@return

(void()) main()
main: scope:[main]  from @78
  (byte) sin_idx_y#23 ← phi( @78/(byte) sin_idx_y#17 )
  (byte) sin_idx_x#25 ← phi( @78/(byte) sin_idx_x#16 )
  (byte) progress_idx#30 ← phi( @78/(byte) progress_idx#36 )
  (byte*) progress_cursor#29 ← phi( @78/(byte*) progress_cursor#36 )
  call init 
  to:main::@5
main::@5: scope:[main]  from main
  (byte) sin_idx_y#20 ← phi( main/(byte) sin_idx_y#23 )
  (byte) sin_idx_x#22 ← phi( main/(byte) sin_idx_x#25 )
  (byte) progress_idx#16 ← phi( main/(byte) progress_idx#6 )
  (byte*) progress_cursor#15 ← phi( main/(byte*) progress_cursor#6 )
  (byte*) progress_cursor#0 ← (byte*) progress_cursor#15
  (byte) progress_idx#0 ← (byte) progress_idx#16
  to:main::@2
main::@2: scope:[main]  from main::@2 main::@5 main::@6
  (byte) progress_idx#42 ← phi( main::@2/(byte) progress_idx#42 main::@5/(byte) progress_idx#0 main::@6/(byte) progress_idx#31 )
  (byte*) progress_cursor#42 ← phi( main::@2/(byte*) progress_cursor#42 main::@5/(byte*) progress_cursor#0 main::@6/(byte*) progress_cursor#30 )
  (byte) sin_idx_y#18 ← phi( main::@2/(byte) sin_idx_y#18 main::@5/(byte) sin_idx_y#20 main::@6/(byte) sin_idx_y#0 )
  (byte) sin_idx_x#17 ← phi( main::@2/(byte) sin_idx_x#17 main::@5/(byte) sin_idx_x#22 main::@6/(byte) sin_idx_x#0 )
  (bool~) main::$1 ← *((const byte*) RASTER) != (number) $ff
  if((bool~) main::$1) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@2
  (byte) progress_idx#37 ← phi( main::@2/(byte) progress_idx#42 )
  (byte*) progress_cursor#37 ← phi( main::@2/(byte*) progress_cursor#42 )
  (byte) sin_idx_y#13 ← phi( main::@2/(byte) sin_idx_y#18 )
  (byte) sin_idx_x#13 ← phi( main::@2/(byte) sin_idx_x#17 )
  call anim 
  to:main::@6
main::@6: scope:[main]  from main::@3
  (byte) progress_idx#31 ← phi( main::@3/(byte) progress_idx#37 )
  (byte*) progress_cursor#30 ← phi( main::@3/(byte*) progress_cursor#37 )
  (byte) sin_idx_y#7 ← phi( main::@3/(byte) sin_idx_y#5 )
  (byte) sin_idx_x#7 ← phi( main::@3/(byte) sin_idx_x#5 )
  (byte) sin_idx_x#0 ← (byte) sin_idx_x#7
  (byte) sin_idx_y#0 ← (byte) sin_idx_y#7
  if(true) goto main::@2
  to:main::@return
main::@return: scope:[main]  from main::@6
  (byte) sin_idx_y#8 ← phi( main::@6/(byte) sin_idx_y#0 )
  (byte) sin_idx_x#8 ← phi( main::@6/(byte) sin_idx_x#0 )
  (byte) progress_idx#17 ← phi( main::@6/(byte) progress_idx#31 )
  (byte*) progress_cursor#16 ← phi( main::@6/(byte*) progress_cursor#30 )
  (byte*) progress_cursor#1 ← (byte*) progress_cursor#16
  (byte) progress_idx#1 ← (byte) progress_idx#17
  (byte) sin_idx_x#1 ← (byte) sin_idx_x#8
  (byte) sin_idx_y#1 ← (byte) sin_idx_y#8
  return 
  to:@return

(void()) init()
init: scope:[init]  from main
  (byte) progress_idx#52 ← phi( main/(byte) progress_idx#30 )
  (byte*) progress_cursor#52 ← phi( main/(byte*) progress_cursor#29 )
  call clear_screen 
  to:init::@3
init::@3: scope:[init]  from init
  (byte) progress_idx#49 ← phi( init/(byte) progress_idx#52 )
  (byte*) progress_cursor#49 ← phi( init/(byte*) progress_cursor#52 )
  (byte) init::i#0 ← (byte) 0
  to:init::@1
init::@1: scope:[init]  from init::@1 init::@3
  (byte) progress_idx#46 ← phi( init::@1/(byte) progress_idx#46 init::@3/(byte) progress_idx#49 )
  (byte*) progress_cursor#46 ← phi( init::@1/(byte*) progress_cursor#46 init::@3/(byte*) progress_cursor#49 )
  (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@3/(byte) init::i#0 )
  *((const byte*) COLS + (byte) init::i#2) ← (number) 0
  (number~) init::$8 ← (number) $28 + (byte) init::i#2
  *((const byte*) COLS + (number~) init::$8) ← (number) $b
  (byte) init::i#1 ← (byte) init::i#2 + rangenext(0,$27)
  (bool~) init::$9 ← (byte) init::i#1 != rangelast(0,$27)
  if((bool~) init::$9) goto init::@1
  to:init::@2
init::@2: scope:[init]  from init::@1
  (byte) progress_idx#43 ← phi( init::@1/(byte) progress_idx#46 )
  (byte*) progress_cursor#43 ← phi( init::@1/(byte*) progress_cursor#46 )
  call place_sprites 
  to:init::@4
init::@4: scope:[init]  from init::@2
  (byte) progress_idx#38 ← phi( init::@2/(byte) progress_idx#43 )
  (byte*) progress_cursor#38 ← phi( init::@2/(byte*) progress_cursor#43 )
  call gen_sprites 
  to:init::@5
init::@5: scope:[init]  from init::@4
  (byte) progress_idx#32 ← phi( init::@4/(byte) progress_idx#38 )
  (byte*) progress_cursor#31 ← phi( init::@4/(byte*) progress_cursor#38 )
  (byte*) progress_init::line#0 ← (const byte*) SCREEN
  call progress_init 
  to:init::@6
init::@6: scope:[init]  from init::@5
  (byte) progress_idx#18 ← phi( init::@5/(byte) progress_idx#9 )
  (byte*) progress_cursor#17 ← phi( init::@5/(byte*) progress_cursor#9 )
  (byte*) progress_cursor#2 ← (byte*) progress_cursor#17
  (byte) progress_idx#2 ← (byte) progress_idx#18
  (byte*) gen_sintab::sintab#0 ← (const byte*) sintab_x
  (byte) gen_sintab::length#0 ← (const byte) sinlen_x
  (byte) gen_sintab::min#0 ← (number) 0
  (byte) gen_sintab::max#0 ← (number) $ff
  call gen_sintab 
  to:init::@7
init::@7: scope:[init]  from init::@6
  (byte*) progress_cursor#18 ← phi( init::@6/(byte*) progress_cursor#13 )
  (byte) progress_idx#19 ← phi( init::@6/(byte) progress_idx#14 )
  (byte) progress_idx#3 ← (byte) progress_idx#19
  (byte*) progress_cursor#3 ← (byte*) progress_cursor#18
  (byte*) progress_init::line#1 ← (const byte*) SCREEN+(number) $28
  call progress_init 
  to:init::@8
init::@8: scope:[init]  from init::@7
  (byte) progress_idx#20 ← phi( init::@7/(byte) progress_idx#9 )
  (byte*) progress_cursor#19 ← phi( init::@7/(byte*) progress_cursor#9 )
  (byte*) progress_cursor#4 ← (byte*) progress_cursor#19
  (byte) progress_idx#4 ← (byte) progress_idx#20
  (byte*) gen_sintab::sintab#1 ← (const byte*) sintab_y
  (byte) gen_sintab::length#1 ← (const byte) sinlen_y
  (byte) gen_sintab::min#1 ← (number) $32
  (byte) gen_sintab::max#1 ← (number) $d0
  call gen_sintab 
  to:init::@9
init::@9: scope:[init]  from init::@8
  (byte*) progress_cursor#20 ← phi( init::@8/(byte*) progress_cursor#13 )
  (byte) progress_idx#21 ← phi( init::@8/(byte) progress_idx#14 )
  (byte) progress_idx#5 ← (byte) progress_idx#21
  (byte*) progress_cursor#5 ← (byte*) progress_cursor#20
  call clear_screen 
  to:init::@10
init::@10: scope:[init]  from init::@9
  (byte) progress_idx#33 ← phi( init::@9/(byte) progress_idx#5 )
  (byte*) progress_cursor#32 ← phi( init::@9/(byte*) progress_cursor#5 )
  to:init::@return
init::@return: scope:[init]  from init::@10
  (byte) progress_idx#22 ← phi( init::@10/(byte) progress_idx#33 )
  (byte*) progress_cursor#21 ← phi( init::@10/(byte*) progress_cursor#32 )
  (byte*) progress_cursor#6 ← (byte*) progress_cursor#21
  (byte) progress_idx#6 ← (byte) progress_idx#22
  return 
  to:@return

(void()) clear_screen()
clear_screen: scope:[clear_screen]  from init init::@9
  (byte*) clear_screen::sc#0 ← (const byte*) SCREEN
  to:clear_screen::@1
clear_screen::@1: scope:[clear_screen]  from clear_screen clear_screen::@2
  (byte*) clear_screen::sc#2 ← phi( clear_screen/(byte*) clear_screen::sc#0 clear_screen::@2/(byte*) clear_screen::sc#1 )
  (bool~) clear_screen::$0 ← (byte*) clear_screen::sc#2 < (const byte*) SCREEN+(number) $3e8
  if((bool~) clear_screen::$0) goto clear_screen::@2
  to:clear_screen::@return
clear_screen::@2: scope:[clear_screen]  from clear_screen::@1
  (byte*) clear_screen::sc#3 ← phi( clear_screen::@1/(byte*) clear_screen::sc#2 )
  *((byte*) clear_screen::sc#3) ← (byte) ' '
  (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#3
  to:clear_screen::@1
clear_screen::@return: scope:[clear_screen]  from clear_screen::@1
  return 
  to:@return
@71: scope:[]  from @begin
  (byte*) progress_cursor#7 ← (const byte*) SCREEN
  (byte) progress_idx#7 ← (byte) 0
  to:@73

(void()) progress_init((byte*) progress_init::line)
progress_init: scope:[progress_init]  from init::@5 init::@7
  (byte*) progress_init::line#2 ← phi( init::@5/(byte*) progress_init::line#0 init::@7/(byte*) progress_init::line#1 )
  (byte*) progress_cursor#8 ← (byte*) progress_init::line#2
  (byte) progress_idx#8 ← (number) 0
  to:progress_init::@return
progress_init::@return: scope:[progress_init]  from progress_init
  (byte) progress_idx#23 ← phi( progress_init/(byte) progress_idx#8 )
  (byte*) progress_cursor#22 ← phi( progress_init/(byte*) progress_cursor#8 )
  (byte*) progress_cursor#9 ← (byte*) progress_cursor#22
  (byte) progress_idx#9 ← (byte) progress_idx#23
  return 
  to:@return

(void()) progress_inc()
progress_inc: scope:[progress_inc]  from gen_sintab::@26
  (byte*) progress_cursor#33 ← phi( gen_sintab::@26/(byte*) progress_cursor#34 )
  (byte) progress_idx#24 ← phi( gen_sintab::@26/(byte) progress_idx#34 )
  (byte) progress_idx#10 ← ++ (byte) progress_idx#24
  (bool~) progress_inc::$0 ← (byte) progress_idx#10 == (number) 8
  (bool~) progress_inc::$1 ← ! (bool~) progress_inc::$0
  if((bool~) progress_inc::$1) goto progress_inc::@1
  to:progress_inc::@2
progress_inc::@1: scope:[progress_inc]  from progress_inc progress_inc::@2
  (byte*) progress_cursor#23 ← phi( progress_inc/(byte*) progress_cursor#33 progress_inc::@2/(byte*) progress_cursor#10 )
  (byte) progress_idx#25 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(byte) progress_idx#11 )
  *((byte*) progress_cursor#23) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#25)
  to:progress_inc::@return
progress_inc::@2: scope:[progress_inc]  from progress_inc
  (byte*) progress_cursor#24 ← phi( progress_inc/(byte*) progress_cursor#33 )
  *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars + (number) 8)
  (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#24
  (byte) progress_idx#11 ← (number) 0
  to:progress_inc::@1
progress_inc::@return: scope:[progress_inc]  from progress_inc::@1
  (byte*) progress_cursor#25 ← phi( progress_inc::@1/(byte*) progress_cursor#23 )
  (byte) progress_idx#26 ← phi( progress_inc::@1/(byte) progress_idx#25 )
  (byte) progress_idx#12 ← (byte) progress_idx#26
  (byte*) progress_cursor#11 ← (byte*) progress_cursor#25
  return 
  to:@return
@73: scope:[]  from @71
  (byte) progress_idx#41 ← phi( @71/(byte) progress_idx#7 )
  (byte*) progress_cursor#41 ← phi( @71/(byte*) progress_cursor#7 )
  (byte) sin_idx_x#2 ← (byte) 0
  (byte) sin_idx_y#2 ← (byte) 0
  to:@78

(void()) anim()
anim: scope:[anim]  from main::@3
  (byte) sin_idx_y#9 ← phi( main::@3/(byte) sin_idx_y#13 )
  (byte) sin_idx_x#9 ← phi( main::@3/(byte) sin_idx_x#13 )
  *((const byte*) BORDERCOL) ← ++ *((const byte*) BORDERCOL)
  (byte) anim::xidx#0 ← (byte) sin_idx_x#9
  (byte) anim::yidx#0 ← (byte) sin_idx_y#9
  (byte) anim::j2#0 ← (byte) $c
  (byte) anim::x_msb#0 ← (byte) 0
  (byte) anim::j#0 ← (byte) 0
  to:anim::@4
anim::@4: scope:[anim]  from anim anim::@6
  (byte) sin_idx_y#24 ← phi( anim/(byte) sin_idx_y#9 anim::@6/(byte) sin_idx_y#19 )
  (byte) sin_idx_x#23 ← phi( anim/(byte) sin_idx_x#9 anim::@6/(byte) sin_idx_x#14 )
  (byte) anim::j#5 ← phi( anim/(byte) anim::j#0 anim::@6/(byte) anim::j#1 )
  (byte) anim::yidx#3 ← phi( anim/(byte) anim::yidx#0 anim::@6/(byte) anim::yidx#6 )
  (byte) anim::j2#2 ← phi( anim/(byte) anim::j2#0 anim::@6/(byte) anim::j2#1 )
  (byte) anim::x_msb#2 ← phi( anim/(byte) anim::x_msb#0 anim::@6/(byte) anim::x_msb#4 )
  (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@6/(byte) anim::xidx#5 )
  (word~) anim::$6 ← (word)(number) $1e + *((const byte*) sintab_x + (byte) anim::xidx#3)
  (word) anim::x#0 ← (word~) anim::$6
  (number~) anim::$7 ← (byte) anim::x_msb#2 * (number) 2
  (byte~) anim::$8 ← > (word) anim::x#0
  (number~) anim::$9 ← (number~) anim::$7 | (byte~) anim::$8
  (byte) anim::x_msb#1 ← (number~) anim::$9
  (byte~) anim::$10 ← < (word) anim::x#0
  *((const byte*) SPRITES_XPOS + (byte) anim::j2#2) ← (byte~) anim::$10
  *((const byte*) SPRITES_YPOS + (byte) anim::j2#2) ← *((const byte*) sintab_y + (byte) anim::yidx#3)
  (number~) anim::$11 ← (byte) anim::xidx#3 + (number) $a
  (byte) anim::xidx#1 ← (number~) anim::$11
  (bool~) anim::$12 ← (byte) anim::xidx#1 >= (const byte) sinlen_x
  (bool~) anim::$13 ← ! (bool~) anim::$12
  if((bool~) anim::$13) goto anim::@5
  to:anim::@7
anim::@5: scope:[anim]  from anim::@4 anim::@7
  (byte) sin_idx_y#21 ← phi( anim::@4/(byte) sin_idx_y#24 anim::@7/(byte) sin_idx_y#25 )
  (byte) sin_idx_x#18 ← phi( anim::@4/(byte) sin_idx_x#23 anim::@7/(byte) sin_idx_x#24 )
  (byte) anim::x_msb#5 ← phi( anim::@4/(byte) anim::x_msb#1 anim::@7/(byte) anim::x_msb#7 )
  (byte) anim::xidx#6 ← phi( anim::@4/(byte) anim::xidx#1 anim::@7/(byte) anim::xidx#2 )
  (byte) anim::j#3 ← phi( anim::@4/(byte) anim::j#5 anim::@7/(byte) anim::j#6 )
  (byte) anim::j2#4 ← phi( anim::@4/(byte) anim::j2#2 anim::@7/(byte) anim::j2#6 )
  (byte) anim::yidx#4 ← phi( anim::@4/(byte) anim::yidx#3 anim::@7/(byte) anim::yidx#7 )
  (number~) anim::$15 ← (byte) anim::yidx#4 + (number) 8
  (byte) anim::yidx#1 ← (number~) anim::$15
  (bool~) anim::$16 ← (byte) anim::yidx#1 >= (const byte) sinlen_y
  (bool~) anim::$17 ← ! (bool~) anim::$16
  if((bool~) anim::$17) goto anim::@6
  to:anim::@8
anim::@7: scope:[anim]  from anim::@4
  (byte) sin_idx_y#25 ← phi( anim::@4/(byte) sin_idx_y#24 )
  (byte) sin_idx_x#24 ← phi( anim::@4/(byte) sin_idx_x#23 )
  (byte) anim::x_msb#7 ← phi( anim::@4/(byte) anim::x_msb#1 )
  (byte) anim::j#6 ← phi( anim::@4/(byte) anim::j#5 )
  (byte) anim::j2#6 ← phi( anim::@4/(byte) anim::j2#2 )
  (byte) anim::yidx#7 ← phi( anim::@4/(byte) anim::yidx#3 )
  (byte) anim::xidx#4 ← phi( anim::@4/(byte) anim::xidx#1 )
  (byte~) anim::$14 ← (byte) anim::xidx#4 - (const byte) sinlen_x
  (byte) anim::xidx#2 ← (byte~) anim::$14
  to:anim::@5
anim::@6: scope:[anim]  from anim::@5 anim::@8
  (byte) sin_idx_y#19 ← phi( anim::@5/(byte) sin_idx_y#21 anim::@8/(byte) sin_idx_y#22 )
  (byte) sin_idx_x#14 ← phi( anim::@5/(byte) sin_idx_x#18 anim::@8/(byte) sin_idx_x#19 )
  (byte) anim::yidx#6 ← phi( anim::@5/(byte) anim::yidx#1 anim::@8/(byte) anim::yidx#2 )
  (byte) anim::x_msb#4 ← phi( anim::@5/(byte) anim::x_msb#5 anim::@8/(byte) anim::x_msb#6 )
  (byte) anim::xidx#5 ← phi( anim::@5/(byte) anim::xidx#6 anim::@8/(byte) anim::xidx#7 )
  (byte) anim::j#2 ← phi( anim::@5/(byte) anim::j#3 anim::@8/(byte) anim::j#4 )
  (byte) anim::j2#3 ← phi( anim::@5/(byte) anim::j2#4 anim::@8/(byte) anim::j2#5 )
  (number~) anim::$19 ← (byte) anim::j2#3 - (number) 2
  (byte) anim::j2#1 ← (number~) anim::$19
  (byte) anim::j#1 ← (byte) anim::j#2 + rangenext(0,6)
  (bool~) anim::$20 ← (byte) anim::j#1 != rangelast(0,6)
  if((bool~) anim::$20) goto anim::@4
  to:anim::@9
anim::@8: scope:[anim]  from anim::@5
  (byte) sin_idx_y#22 ← phi( anim::@5/(byte) sin_idx_y#21 )
  (byte) sin_idx_x#19 ← phi( anim::@5/(byte) sin_idx_x#18 )
  (byte) anim::x_msb#6 ← phi( anim::@5/(byte) anim::x_msb#5 )
  (byte) anim::xidx#7 ← phi( anim::@5/(byte) anim::xidx#6 )
  (byte) anim::j#4 ← phi( anim::@5/(byte) anim::j#3 )
  (byte) anim::j2#5 ← phi( anim::@5/(byte) anim::j2#4 )
  (byte) anim::yidx#5 ← phi( anim::@5/(byte) anim::yidx#1 )
  (byte~) anim::$18 ← (byte) anim::yidx#5 - (const byte) sinlen_y
  (byte) anim::yidx#2 ← (byte~) anim::$18
  to:anim::@6
anim::@9: scope:[anim]  from anim::@6
  (byte) sin_idx_y#15 ← phi( anim::@6/(byte) sin_idx_y#19 )
  (byte) sin_idx_x#10 ← phi( anim::@6/(byte) sin_idx_x#14 )
  (byte) anim::x_msb#3 ← phi( anim::@6/(byte) anim::x_msb#4 )
  *((const byte*) SPRITES_XMSB) ← (byte) anim::x_msb#3
  (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#10
  (bool~) anim::$1 ← (byte) sin_idx_x#3 >= (const byte) sinlen_x
  (bool~) anim::$2 ← ! (bool~) anim::$1
  if((bool~) anim::$2) goto anim::@1
  to:anim::@10
anim::@1: scope:[anim]  from anim::@10 anim::@9
  (byte) sin_idx_x#20 ← phi( anim::@10/(byte) sin_idx_x#4 anim::@9/(byte) sin_idx_x#3 )
  (byte) sin_idx_y#10 ← phi( anim::@10/(byte) sin_idx_y#14 anim::@9/(byte) sin_idx_y#15 )
  (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#10
  (bool~) anim::$3 ← (byte) sin_idx_y#3 >= (const byte) sinlen_y
  (bool~) anim::$4 ← ! (bool~) anim::$3
  if((bool~) anim::$4) goto anim::@2
  to:anim::@3
anim::@10: scope:[anim]  from anim::@9
  (byte) sin_idx_y#14 ← phi( anim::@9/(byte) sin_idx_y#15 )
  (byte) sin_idx_x#4 ← (number) 0
  to:anim::@1
anim::@2: scope:[anim]  from anim::@1 anim::@3
  (byte) sin_idx_y#16 ← phi( anim::@1/(byte) sin_idx_y#3 anim::@3/(byte) sin_idx_y#4 )
  (byte) sin_idx_x#15 ← phi( anim::@1/(byte) sin_idx_x#20 anim::@3/(byte) sin_idx_x#21 )
  *((const byte*) BORDERCOL) ← -- *((const byte*) BORDERCOL)
  to:anim::@return
anim::@3: scope:[anim]  from anim::@1
  (byte) sin_idx_x#21 ← phi( anim::@1/(byte) sin_idx_x#20 )
  (byte) sin_idx_y#4 ← (number) 0
  to:anim::@2
anim::@return: scope:[anim]  from anim::@2
  (byte) sin_idx_y#11 ← phi( anim::@2/(byte) sin_idx_y#16 )
  (byte) sin_idx_x#11 ← phi( anim::@2/(byte) sin_idx_x#15 )
  (byte) sin_idx_x#5 ← (byte) sin_idx_x#11
  (byte) sin_idx_y#5 ← (byte) sin_idx_y#11
  return 
  to:@return

(void()) place_sprites()
place_sprites: scope:[place_sprites]  from init::@2
  *((const byte*) SPRITES_ENABLE) ← (number) $7f
  *((const byte*) SPRITES_EXPAND_X) ← (number) $7f
  *((const byte*) SPRITES_EXPAND_Y) ← (number) $7f
  (byte) place_sprites::spr_id#0 ← (byte)(word)(const byte*) sprites/(number) $40
  (byte) place_sprites::spr_x#0 ← (byte) $3c
  (byte) place_sprites::j2#0 ← (byte) 0
  (byte) place_sprites::col#0 ← (byte) 5
  (byte) place_sprites::j#0 ← (byte) 0
  to:place_sprites::@1
place_sprites::@1: scope:[place_sprites]  from place_sprites place_sprites::@1
  (byte) place_sprites::col#2 ← phi( place_sprites/(byte) place_sprites::col#0 place_sprites::@1/(byte) place_sprites::col#1 )
  (byte) place_sprites::j2#3 ← phi( place_sprites/(byte) place_sprites::j2#0 place_sprites::@1/(byte) place_sprites::j2#2 )
  (byte) place_sprites::spr_x#2 ← phi( place_sprites/(byte) place_sprites::spr_x#0 place_sprites::@1/(byte) place_sprites::spr_x#1 )
  (byte) place_sprites::j#2 ← phi( place_sprites/(byte) place_sprites::j#0 place_sprites::@1/(byte) place_sprites::j#1 )
  (byte) place_sprites::spr_id#2 ← phi( place_sprites/(byte) place_sprites::spr_id#0 place_sprites::@1/(byte) place_sprites::spr_id#1 )
  *((const byte*) place_sprites::sprites_ptr + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2
  (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2
  *((const byte*) SPRITES_XPOS + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2
  *((const byte*) SPRITES_YPOS + (byte) place_sprites::j2#3) ← (number) $50
  *((const byte*) SPRITES_COLS + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2
  (number~) place_sprites::$0 ← (byte) place_sprites::spr_x#2 + (number) $20
  (byte) place_sprites::spr_x#1 ← (number~) place_sprites::$0
  (number~) place_sprites::$1 ← (byte) place_sprites::col#2 ^ (number) 7^(number) 5
  (byte) place_sprites::col#1 ← (number~) place_sprites::$1
  (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3
  (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1
  (byte) place_sprites::j#1 ← (byte) place_sprites::j#2 + rangenext(0,6)
  (bool~) place_sprites::$2 ← (byte) place_sprites::j#1 != rangelast(0,6)
  if((bool~) place_sprites::$2) goto place_sprites::@1
  to:place_sprites::@return
place_sprites::@return: scope:[place_sprites]  from place_sprites::@1
  return 
  to:@return

(void()) gen_sprites()
gen_sprites: scope:[gen_sprites]  from init::@4
  (byte*) gen_sprites::spr#0 ← (const byte*) sprites
  (byte) gen_sprites::i#0 ← (byte) 0
  to:gen_sprites::@1
gen_sprites::@1: scope:[gen_sprites]  from gen_sprites gen_sprites::@3
  (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 )
  (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 )
  (byte) gen_chargen_sprite::ch#0 ← *((const byte*) gen_sprites::cml + (byte) gen_sprites::i#2)
  (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2
  call gen_chargen_sprite 
  to:gen_sprites::@3
gen_sprites::@3: scope:[gen_sprites]  from gen_sprites::@1
  (byte) gen_sprites::i#3 ← phi( gen_sprites::@1/(byte) gen_sprites::i#2 )
  (byte*) gen_sprites::spr#3 ← phi( gen_sprites::@1/(byte*) gen_sprites::spr#2 )
  (byte*~) gen_sprites::$1 ← (byte*) gen_sprites::spr#3 + (number) $40
  (byte*) gen_sprites::spr#1 ← (byte*~) gen_sprites::$1
  (byte) gen_sprites::i#1 ← (byte) gen_sprites::i#3 + rangenext(0,6)
  (bool~) gen_sprites::$2 ← (byte) gen_sprites::i#1 != rangelast(0,6)
  if((bool~) gen_sprites::$2) goto gen_sprites::@1
  to:gen_sprites::@return
gen_sprites::@return: scope:[gen_sprites]  from gen_sprites::@3
  return 
  to:@return

(void()) gen_chargen_sprite((byte) gen_chargen_sprite::ch , (byte*) gen_chargen_sprite::sprite)
gen_chargen_sprite: scope:[gen_chargen_sprite]  from gen_sprites::@1
  (byte*) gen_chargen_sprite::sprite#12 ← phi( gen_sprites::@1/(byte*) gen_chargen_sprite::sprite#0 )
  (byte) gen_chargen_sprite::ch#1 ← phi( gen_sprites::@1/(byte) gen_chargen_sprite::ch#0 )
  (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#1
  (number~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 * (number) 8
  (byte*~) gen_chargen_sprite::$2 ← (const byte*) CHARGEN + (number~) gen_chargen_sprite::$1
  (byte*) gen_chargen_sprite::chargen#0 ← (byte*~) gen_chargen_sprite::$2
  asm { sei  }
  *((const byte*) PROCPORT) ← (number) $32
  (byte) gen_chargen_sprite::y#0 ← (byte) 0
  to:gen_chargen_sprite::@1
gen_chargen_sprite::@1: scope:[gen_chargen_sprite]  from gen_chargen_sprite gen_chargen_sprite::@8
  (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#12 gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::sprite#2 )
  (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::y#1 )
  (byte*) gen_chargen_sprite::chargen#1 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::chargen#0 gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::chargen#2 )
  (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#1 + (byte) gen_chargen_sprite::y#2)
  (byte) gen_chargen_sprite::s_gen#0 ← (byte) 0
  (byte) gen_chargen_sprite::s_gen_cnt#0 ← (byte) 0
  (byte) gen_chargen_sprite::x#0 ← (byte) 0
  to:gen_chargen_sprite::@2
gen_chargen_sprite::@2: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@1 gen_chargen_sprite::@7
  (byte*) gen_chargen_sprite::chargen#9 ← phi( gen_chargen_sprite::@1/(byte*) gen_chargen_sprite::chargen#1 gen_chargen_sprite::@7/(byte*) gen_chargen_sprite::chargen#3 )
  (byte) gen_chargen_sprite::y#10 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::y#2 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::y#4 )
  (byte) gen_chargen_sprite::x#8 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::x#0 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::x#1 )
  (byte*) gen_chargen_sprite::sprite#10 ← phi( gen_chargen_sprite::@1/(byte*) gen_chargen_sprite::sprite#11 gen_chargen_sprite::@7/(byte*) gen_chargen_sprite::sprite#6 )
  (byte) gen_chargen_sprite::s_gen_cnt#7 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::s_gen_cnt#0 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::s_gen_cnt#8 )
  (byte) gen_chargen_sprite::s_gen#8 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::s_gen#9 )
  (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::bits#1 )
  (byte) gen_chargen_sprite::c#0 ← (byte) 0
  (number~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (number) $80
  (bool~) gen_chargen_sprite::$4 ← (number~) gen_chargen_sprite::$3 != (number) 0
  (bool~) gen_chargen_sprite::$5 ← ! (bool~) gen_chargen_sprite::$4
  if((bool~) gen_chargen_sprite::$5) goto gen_chargen_sprite::@3
  to:gen_chargen_sprite::@10
gen_chargen_sprite::@3: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@10 gen_chargen_sprite::@2
  (byte*) gen_chargen_sprite::chargen#7 ← phi( gen_chargen_sprite::@10/(byte*) gen_chargen_sprite::chargen#8 gen_chargen_sprite::@2/(byte*) gen_chargen_sprite::chargen#9 )
  (byte) gen_chargen_sprite::y#8 ← phi( gen_chargen_sprite::@10/(byte) gen_chargen_sprite::y#9 gen_chargen_sprite::@2/(byte) gen_chargen_sprite::y#10 )
  (byte) gen_chargen_sprite::x#6 ← phi( gen_chargen_sprite::@10/(byte) gen_chargen_sprite::x#7 gen_chargen_sprite::@2/(byte) gen_chargen_sprite::x#8 )
  (byte) gen_chargen_sprite::bits#7 ← phi( gen_chargen_sprite::@10/(byte) gen_chargen_sprite::bits#8 gen_chargen_sprite::@2/(byte) gen_chargen_sprite::bits#2 )
  (byte*) gen_chargen_sprite::sprite#7 ← phi( gen_chargen_sprite::@10/(byte*) gen_chargen_sprite::sprite#9 gen_chargen_sprite::@2/(byte*) gen_chargen_sprite::sprite#10 )
  (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@10/(byte) gen_chargen_sprite::s_gen_cnt#6 gen_chargen_sprite::@2/(byte) gen_chargen_sprite::s_gen_cnt#7 )
  (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@10/(byte) gen_chargen_sprite::c#1 gen_chargen_sprite::@2/(byte) gen_chargen_sprite::c#0 )
  (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@10/(byte) gen_chargen_sprite::s_gen#7 gen_chargen_sprite::@2/(byte) gen_chargen_sprite::s_gen#8 )
  (byte) gen_chargen_sprite::b#0 ← (byte) 0
  to:gen_chargen_sprite::@4
gen_chargen_sprite::@10: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@2
  (byte*) gen_chargen_sprite::chargen#8 ← phi( gen_chargen_sprite::@2/(byte*) gen_chargen_sprite::chargen#9 )
  (byte) gen_chargen_sprite::y#9 ← phi( gen_chargen_sprite::@2/(byte) gen_chargen_sprite::y#10 )
  (byte) gen_chargen_sprite::x#7 ← phi( gen_chargen_sprite::@2/(byte) gen_chargen_sprite::x#8 )
  (byte) gen_chargen_sprite::bits#8 ← phi( gen_chargen_sprite::@2/(byte) gen_chargen_sprite::bits#2 )
  (byte*) gen_chargen_sprite::sprite#9 ← phi( gen_chargen_sprite::@2/(byte*) gen_chargen_sprite::sprite#10 )
  (byte) gen_chargen_sprite::s_gen_cnt#6 ← phi( gen_chargen_sprite::@2/(byte) gen_chargen_sprite::s_gen_cnt#7 )
  (byte) gen_chargen_sprite::s_gen#7 ← phi( gen_chargen_sprite::@2/(byte) gen_chargen_sprite::s_gen#8 )
  (byte) gen_chargen_sprite::c#1 ← (number) 1
  to:gen_chargen_sprite::@3
gen_chargen_sprite::@4: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@3 gen_chargen_sprite::@5
  (byte*) gen_chargen_sprite::chargen#5 ← phi( gen_chargen_sprite::@3/(byte*) gen_chargen_sprite::chargen#7 gen_chargen_sprite::@5/(byte*) gen_chargen_sprite::chargen#4 )
  (byte) gen_chargen_sprite::y#6 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::y#8 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::y#5 )
  (byte) gen_chargen_sprite::x#4 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::x#6 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::x#3 )
  (byte) gen_chargen_sprite::bits#5 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::bits#7 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::bits#4 )
  (byte*) gen_chargen_sprite::sprite#5 ← phi( gen_chargen_sprite::@3/(byte*) gen_chargen_sprite::sprite#7 gen_chargen_sprite::@5/(byte*) gen_chargen_sprite::sprite#8 )
  (byte) gen_chargen_sprite::b#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::b#0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 )
  (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 )
  (byte) gen_chargen_sprite::c#2 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::c#3 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::c#4 )
  (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 )
  (number~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 * (number) 2
  (number~) gen_chargen_sprite::$7 ← (number~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#2
  (byte) gen_chargen_sprite::s_gen#1 ← (number~) gen_chargen_sprite::$7
  (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3
  (bool~) gen_chargen_sprite::$8 ← (byte) gen_chargen_sprite::s_gen_cnt#1 == (number) 8
  (bool~) gen_chargen_sprite::$9 ← ! (bool~) gen_chargen_sprite::$8
  if((bool~) gen_chargen_sprite::$9) goto gen_chargen_sprite::@5
  to:gen_chargen_sprite::@6
gen_chargen_sprite::@5: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@4 gen_chargen_sprite::@6
  (byte*) gen_chargen_sprite::chargen#4 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::chargen#5 gen_chargen_sprite::@6/(byte*) gen_chargen_sprite::chargen#6 )
  (byte) gen_chargen_sprite::y#5 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::y#6 gen_chargen_sprite::@6/(byte) gen_chargen_sprite::y#7 )
  (byte*) gen_chargen_sprite::sprite#8 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::sprite#5 gen_chargen_sprite::@6/(byte*) gen_chargen_sprite::sprite#1 )
  (byte) gen_chargen_sprite::x#3 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::x#4 gen_chargen_sprite::@6/(byte) gen_chargen_sprite::x#5 )
  (byte) gen_chargen_sprite::bits#4 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::bits#5 gen_chargen_sprite::@6/(byte) gen_chargen_sprite::bits#6 )
  (byte) gen_chargen_sprite::s_gen_cnt#5 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen_cnt#1 gen_chargen_sprite::@6/(byte) gen_chargen_sprite::s_gen_cnt#2 )
  (byte) gen_chargen_sprite::c#4 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::c#2 gen_chargen_sprite::@6/(byte) gen_chargen_sprite::c#5 )
  (byte) gen_chargen_sprite::s_gen#6 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen#1 gen_chargen_sprite::@6/(byte) gen_chargen_sprite::s_gen#2 )
  (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::b#3 gen_chargen_sprite::@6/(byte) gen_chargen_sprite::b#4 )
  (byte) gen_chargen_sprite::b#1 ← (byte) gen_chargen_sprite::b#2 + rangenext(0,2)
  (bool~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::b#1 != rangelast(0,2)
  if((bool~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@4
  to:gen_chargen_sprite::@7
gen_chargen_sprite::@6: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@4
  (byte*) gen_chargen_sprite::chargen#6 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::chargen#5 )
  (byte) gen_chargen_sprite::y#7 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::y#6 )
  (byte) gen_chargen_sprite::x#5 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::x#4 )
  (byte) gen_chargen_sprite::bits#6 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::bits#5 )
  (byte) gen_chargen_sprite::c#5 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::c#2 )
  (byte) gen_chargen_sprite::b#4 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::b#3 )
  (byte*) gen_chargen_sprite::sprite#3 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::sprite#5 )
  (byte) gen_chargen_sprite::s_gen#4 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen#1 )
  *((byte*) gen_chargen_sprite::sprite#3 + (number) 0) ← (byte) gen_chargen_sprite::s_gen#4
  *((byte*) gen_chargen_sprite::sprite#3 + (number) 3) ← (byte) gen_chargen_sprite::s_gen#4
  *((byte*) gen_chargen_sprite::sprite#3 + (number) 6) ← (byte) gen_chargen_sprite::s_gen#4
  (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3
  (byte) gen_chargen_sprite::s_gen#2 ← (number) 0
  (byte) gen_chargen_sprite::s_gen_cnt#2 ← (number) 0
  to:gen_chargen_sprite::@5
gen_chargen_sprite::@7: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@5
  (byte) gen_chargen_sprite::s_gen_cnt#8 ← phi( gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 )
  (byte) gen_chargen_sprite::s_gen#9 ← phi( gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 )
  (byte*) gen_chargen_sprite::chargen#3 ← phi( gen_chargen_sprite::@5/(byte*) gen_chargen_sprite::chargen#4 )
  (byte) gen_chargen_sprite::y#4 ← phi( gen_chargen_sprite::@5/(byte) gen_chargen_sprite::y#5 )
  (byte*) gen_chargen_sprite::sprite#6 ← phi( gen_chargen_sprite::@5/(byte*) gen_chargen_sprite::sprite#8 )
  (byte) gen_chargen_sprite::x#2 ← phi( gen_chargen_sprite::@5/(byte) gen_chargen_sprite::x#3 )
  (byte) gen_chargen_sprite::bits#3 ← phi( gen_chargen_sprite::@5/(byte) gen_chargen_sprite::bits#4 )
  (number~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::bits#3 * (number) 2
  (byte) gen_chargen_sprite::bits#1 ← (number~) gen_chargen_sprite::$11
  (byte) gen_chargen_sprite::x#1 ← (byte) gen_chargen_sprite::x#2 + rangenext(0,7)
  (bool~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::x#1 != rangelast(0,7)
  if((bool~) gen_chargen_sprite::$12) goto gen_chargen_sprite::@2
  to:gen_chargen_sprite::@8
gen_chargen_sprite::@8: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@7
  (byte*) gen_chargen_sprite::chargen#2 ← phi( gen_chargen_sprite::@7/(byte*) gen_chargen_sprite::chargen#3 )
  (byte) gen_chargen_sprite::y#3 ← phi( gen_chargen_sprite::@7/(byte) gen_chargen_sprite::y#4 )
  (byte*) gen_chargen_sprite::sprite#4 ← phi( gen_chargen_sprite::@7/(byte*) gen_chargen_sprite::sprite#6 )
  (byte*~) gen_chargen_sprite::$13 ← (byte*) gen_chargen_sprite::sprite#4 + (number) 6
  (byte*) gen_chargen_sprite::sprite#2 ← (byte*~) gen_chargen_sprite::$13
  (byte) gen_chargen_sprite::y#1 ← (byte) gen_chargen_sprite::y#3 + rangenext(0,7)
  (bool~) gen_chargen_sprite::$14 ← (byte) gen_chargen_sprite::y#1 != rangelast(0,7)
  if((bool~) gen_chargen_sprite::$14) goto gen_chargen_sprite::@1
  to:gen_chargen_sprite::@9
gen_chargen_sprite::@9: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@8
  *((const byte*) PROCPORT) ← (number) $37
  asm { cli  }
  to:gen_chargen_sprite::@return
gen_chargen_sprite::@return: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@9
  return 
  to:@return

(void()) gen_sintab((byte*) gen_sintab::sintab , (byte) gen_sintab::length , (byte) gen_sintab::min , (byte) gen_sintab::max)
gen_sintab: scope:[gen_sintab]  from init::@6 init::@8
  (byte*) gen_sintab::sintab#25 ← phi( init::@6/(byte*) gen_sintab::sintab#0 init::@8/(byte*) gen_sintab::sintab#1 )
  (byte*) progress_cursor#65 ← phi( init::@6/(byte*) progress_cursor#2 init::@8/(byte*) progress_cursor#4 )
  (byte) progress_idx#65 ← phi( init::@6/(byte) progress_idx#2 init::@8/(byte) progress_idx#4 )
  (byte) gen_sintab::length#25 ← phi( init::@6/(byte) gen_sintab::length#0 init::@8/(byte) gen_sintab::length#1 )
  (byte) gen_sintab::min#4 ← phi( init::@6/(byte) gen_sintab::min#0 init::@8/(byte) gen_sintab::min#1 )
  (byte) gen_sintab::max#2 ← phi( init::@6/(byte) gen_sintab::max#0 init::@8/(byte) gen_sintab::max#1 )
  (word~) gen_sintab::$0 ← ((word)) (byte) gen_sintab::max#2
  (word) setFAC::w#0 ← (word~) gen_sintab::$0
  call setFAC 
  to:gen_sintab::@7
gen_sintab::@7: scope:[gen_sintab]  from gen_sintab
  (byte*) gen_sintab::sintab#24 ← phi( gen_sintab/(byte*) gen_sintab::sintab#25 )
  (byte*) progress_cursor#64 ← phi( gen_sintab/(byte*) progress_cursor#65 )
  (byte) progress_idx#64 ← phi( gen_sintab/(byte) progress_idx#65 )
  (byte) gen_sintab::length#24 ← phi( gen_sintab/(byte) gen_sintab::length#25 )
  (byte) gen_sintab::min#3 ← phi( gen_sintab/(byte) gen_sintab::min#4 )
  call setARGtoFAC 
  to:gen_sintab::@8
gen_sintab::@8: scope:[gen_sintab]  from gen_sintab::@7
  (byte*) gen_sintab::sintab#23 ← phi( gen_sintab::@7/(byte*) gen_sintab::sintab#24 )
  (byte*) progress_cursor#63 ← phi( gen_sintab::@7/(byte*) progress_cursor#64 )
  (byte) progress_idx#63 ← phi( gen_sintab::@7/(byte) progress_idx#64 )
  (byte) gen_sintab::length#23 ← phi( gen_sintab::@7/(byte) gen_sintab::length#24 )
  (byte) gen_sintab::min#2 ← phi( gen_sintab::@7/(byte) gen_sintab::min#3 )
  (word~) gen_sintab::$3 ← ((word)) (byte) gen_sintab::min#2
  (word) setFAC::w#1 ← (word~) gen_sintab::$3
  call setFAC 
  to:gen_sintab::@9
gen_sintab::@9: scope:[gen_sintab]  from gen_sintab::@8
  (byte*) gen_sintab::sintab#22 ← phi( gen_sintab::@8/(byte*) gen_sintab::sintab#23 )
  (byte*) progress_cursor#61 ← phi( gen_sintab::@8/(byte*) progress_cursor#63 )
  (byte) progress_idx#61 ← phi( gen_sintab::@8/(byte) progress_idx#63 )
  (byte) gen_sintab::length#22 ← phi( gen_sintab::@8/(byte) gen_sintab::length#23 )
  (byte*) setMEMtoFAC::mem#0 ← (const byte*) gen_sintab::f_min
  call setMEMtoFAC 
  to:gen_sintab::@10
gen_sintab::@10: scope:[gen_sintab]  from gen_sintab::@9
  (byte*) gen_sintab::sintab#21 ← phi( gen_sintab::@9/(byte*) gen_sintab::sintab#22 )
  (byte*) progress_cursor#59 ← phi( gen_sintab::@9/(byte*) progress_cursor#61 )
  (byte) progress_idx#59 ← phi( gen_sintab::@9/(byte) progress_idx#61 )
  (byte) gen_sintab::length#21 ← phi( gen_sintab::@9/(byte) gen_sintab::length#22 )
  call subFACfromARG 
  to:gen_sintab::@11
gen_sintab::@11: scope:[gen_sintab]  from gen_sintab::@10
  (byte*) gen_sintab::sintab#20 ← phi( gen_sintab::@10/(byte*) gen_sintab::sintab#21 )
  (byte*) progress_cursor#57 ← phi( gen_sintab::@10/(byte*) progress_cursor#59 )
  (byte) progress_idx#57 ← phi( gen_sintab::@10/(byte) progress_idx#59 )
  (byte) gen_sintab::length#19 ← phi( gen_sintab::@10/(byte) gen_sintab::length#21 )
  (byte*) setMEMtoFAC::mem#1 ← (const byte*) gen_sintab::f_amp
  call setMEMtoFAC 
  to:gen_sintab::@12
gen_sintab::@12: scope:[gen_sintab]  from gen_sintab::@11
  (byte*) gen_sintab::sintab#19 ← phi( gen_sintab::@11/(byte*) gen_sintab::sintab#20 )
  (byte*) progress_cursor#55 ← phi( gen_sintab::@11/(byte*) progress_cursor#57 )
  (byte) progress_idx#55 ← phi( gen_sintab::@11/(byte) progress_idx#57 )
  (byte) gen_sintab::length#17 ← phi( gen_sintab::@11/(byte) gen_sintab::length#19 )
  (word) setFAC::w#2 ← (number) 2
  call setFAC 
  to:gen_sintab::@13
gen_sintab::@13: scope:[gen_sintab]  from gen_sintab::@12
  (byte*) gen_sintab::sintab#18 ← phi( gen_sintab::@12/(byte*) gen_sintab::sintab#19 )
  (byte*) progress_cursor#53 ← phi( gen_sintab::@12/(byte*) progress_cursor#55 )
  (byte) progress_idx#53 ← phi( gen_sintab::@12/(byte) progress_idx#55 )
  (byte) gen_sintab::length#15 ← phi( gen_sintab::@12/(byte) gen_sintab::length#17 )
  (byte*) divMEMbyFAC::mem#0 ← (const byte*) gen_sintab::f_amp
  call divMEMbyFAC 
  to:gen_sintab::@14
gen_sintab::@14: scope:[gen_sintab]  from gen_sintab::@13
  (byte*) gen_sintab::sintab#17 ← phi( gen_sintab::@13/(byte*) gen_sintab::sintab#18 )
  (byte*) progress_cursor#50 ← phi( gen_sintab::@13/(byte*) progress_cursor#53 )
  (byte) progress_idx#50 ← phi( gen_sintab::@13/(byte) progress_idx#53 )
  (byte) gen_sintab::length#13 ← phi( gen_sintab::@13/(byte) gen_sintab::length#15 )
  (byte*) setMEMtoFAC::mem#2 ← (const byte*) gen_sintab::f_amp
  call setMEMtoFAC 
  to:gen_sintab::@15
gen_sintab::@15: scope:[gen_sintab]  from gen_sintab::@14
  (byte*) gen_sintab::sintab#16 ← phi( gen_sintab::@14/(byte*) gen_sintab::sintab#17 )
  (byte*) progress_cursor#47 ← phi( gen_sintab::@14/(byte*) progress_cursor#50 )
  (byte) progress_idx#47 ← phi( gen_sintab::@14/(byte) progress_idx#50 )
  (byte) gen_sintab::length#10 ← phi( gen_sintab::@14/(byte) gen_sintab::length#13 )
  (byte*) addMEMtoFAC::mem#0 ← (const byte*) gen_sintab::f_min
  call addMEMtoFAC 
  to:gen_sintab::@16
gen_sintab::@16: scope:[gen_sintab]  from gen_sintab::@15
  (byte*) gen_sintab::sintab#15 ← phi( gen_sintab::@15/(byte*) gen_sintab::sintab#16 )
  (byte*) progress_cursor#44 ← phi( gen_sintab::@15/(byte*) progress_cursor#47 )
  (byte) progress_idx#44 ← phi( gen_sintab::@15/(byte) progress_idx#47 )
  (byte) gen_sintab::length#7 ← phi( gen_sintab::@15/(byte) gen_sintab::length#10 )
  (byte*) setMEMtoFAC::mem#3 ← (const byte*) gen_sintab::f_min
  call setMEMtoFAC 
  to:gen_sintab::@17
gen_sintab::@17: scope:[gen_sintab]  from gen_sintab::@16
  (byte*) gen_sintab::sintab#13 ← phi( gen_sintab::@16/(byte*) gen_sintab::sintab#15 )
  (byte*) progress_cursor#39 ← phi( gen_sintab::@16/(byte*) progress_cursor#44 )
  (byte) progress_idx#39 ← phi( gen_sintab::@16/(byte) progress_idx#44 )
  (byte) gen_sintab::length#4 ← phi( gen_sintab::@16/(byte) gen_sintab::length#7 )
  (byte) gen_sintab::i#0 ← (byte) 0
  to:gen_sintab::@1
gen_sintab::@1: scope:[gen_sintab]  from gen_sintab::@17 gen_sintab::@27
  (byte*) gen_sintab::sintab#12 ← phi( gen_sintab::@17/(byte*) gen_sintab::sintab#13 gen_sintab::@27/(byte*) gen_sintab::sintab#14 )
  (byte*) progress_cursor#35 ← phi( gen_sintab::@17/(byte*) progress_cursor#39 gen_sintab::@27/(byte*) progress_cursor#12 )
  (byte) progress_idx#35 ← phi( gen_sintab::@17/(byte) progress_idx#39 gen_sintab::@27/(byte) progress_idx#13 )
  (byte) gen_sintab::length#2 ← phi( gen_sintab::@17/(byte) gen_sintab::length#4 gen_sintab::@27/(byte) gen_sintab::length#5 )
  (byte) gen_sintab::i#2 ← phi( gen_sintab::@17/(byte) gen_sintab::i#0 gen_sintab::@27/(byte) gen_sintab::i#1 )
  (bool~) gen_sintab::$13 ← (byte) gen_sintab::i#2 < (byte) gen_sintab::length#2
  if((bool~) gen_sintab::$13) goto gen_sintab::@2
  to:gen_sintab::@return
gen_sintab::@2: scope:[gen_sintab]  from gen_sintab::@1
  (byte*) progress_cursor#62 ← phi( gen_sintab::@1/(byte*) progress_cursor#35 )
  (byte) progress_idx#62 ← phi( gen_sintab::@1/(byte) progress_idx#35 )
  (byte*) gen_sintab::sintab#11 ← phi( gen_sintab::@1/(byte*) gen_sintab::sintab#12 )
  (byte) gen_sintab::length#11 ← phi( gen_sintab::@1/(byte) gen_sintab::length#2 )
  (byte) gen_sintab::i#3 ← phi( gen_sintab::@1/(byte) gen_sintab::i#2 )
  (word~) gen_sintab::$14 ← ((word)) (byte) gen_sintab::i#3
  (word) setFAC::w#3 ← (word~) gen_sintab::$14
  call setFAC 
  to:gen_sintab::@18
gen_sintab::@18: scope:[gen_sintab]  from gen_sintab::@2
  (byte*) progress_cursor#60 ← phi( gen_sintab::@2/(byte*) progress_cursor#62 )
  (byte) progress_idx#60 ← phi( gen_sintab::@2/(byte) progress_idx#62 )
  (byte) gen_sintab::i#13 ← phi( gen_sintab::@2/(byte) gen_sintab::i#3 )
  (byte*) gen_sintab::sintab#10 ← phi( gen_sintab::@2/(byte*) gen_sintab::sintab#11 )
  (byte) gen_sintab::length#8 ← phi( gen_sintab::@2/(byte) gen_sintab::length#11 )
  (byte*) mulFACbyMEM::mem#0 ← (const byte*) gen_sintab::f_2pi
  call mulFACbyMEM 
  to:gen_sintab::@19
gen_sintab::@19: scope:[gen_sintab]  from gen_sintab::@18
  (byte*) progress_cursor#58 ← phi( gen_sintab::@18/(byte*) progress_cursor#60 )
  (byte) progress_idx#58 ← phi( gen_sintab::@18/(byte) progress_idx#60 )
  (byte) gen_sintab::i#12 ← phi( gen_sintab::@18/(byte) gen_sintab::i#13 )
  (byte*) gen_sintab::sintab#9 ← phi( gen_sintab::@18/(byte*) gen_sintab::sintab#10 )
  (byte) gen_sintab::length#6 ← phi( gen_sintab::@18/(byte) gen_sintab::length#8 )
  (byte*) setMEMtoFAC::mem#4 ← (const byte*) gen_sintab::f_i
  call setMEMtoFAC 
  to:gen_sintab::@20
gen_sintab::@20: scope:[gen_sintab]  from gen_sintab::@19
  (byte*) progress_cursor#56 ← phi( gen_sintab::@19/(byte*) progress_cursor#58 )
  (byte) progress_idx#56 ← phi( gen_sintab::@19/(byte) progress_idx#58 )
  (byte) gen_sintab::i#11 ← phi( gen_sintab::@19/(byte) gen_sintab::i#12 )
  (byte*) gen_sintab::sintab#8 ← phi( gen_sintab::@19/(byte*) gen_sintab::sintab#9 )
  (byte) gen_sintab::length#3 ← phi( gen_sintab::@19/(byte) gen_sintab::length#6 )
  (word~) gen_sintab::$18 ← ((word)) (byte) gen_sintab::length#3
  (word) setFAC::w#4 ← (word~) gen_sintab::$18
  call setFAC 
  to:gen_sintab::@21
gen_sintab::@21: scope:[gen_sintab]  from gen_sintab::@20
  (byte) gen_sintab::length#20 ← phi( gen_sintab::@20/(byte) gen_sintab::length#3 )
  (byte*) progress_cursor#54 ← phi( gen_sintab::@20/(byte*) progress_cursor#56 )
  (byte) progress_idx#54 ← phi( gen_sintab::@20/(byte) progress_idx#56 )
  (byte) gen_sintab::i#10 ← phi( gen_sintab::@20/(byte) gen_sintab::i#11 )
  (byte*) gen_sintab::sintab#7 ← phi( gen_sintab::@20/(byte*) gen_sintab::sintab#8 )
  (byte*) divMEMbyFAC::mem#1 ← (const byte*) gen_sintab::f_i
  call divMEMbyFAC 
  to:gen_sintab::@22
gen_sintab::@22: scope:[gen_sintab]  from gen_sintab::@21
  (byte) gen_sintab::length#18 ← phi( gen_sintab::@21/(byte) gen_sintab::length#20 )
  (byte*) progress_cursor#51 ← phi( gen_sintab::@21/(byte*) progress_cursor#54 )
  (byte) progress_idx#51 ← phi( gen_sintab::@21/(byte) progress_idx#54 )
  (byte) gen_sintab::i#9 ← phi( gen_sintab::@21/(byte) gen_sintab::i#10 )
  (byte*) gen_sintab::sintab#6 ← phi( gen_sintab::@21/(byte*) gen_sintab::sintab#7 )
  call sinFAC 
  to:gen_sintab::@23
gen_sintab::@23: scope:[gen_sintab]  from gen_sintab::@22
  (byte) gen_sintab::length#16 ← phi( gen_sintab::@22/(byte) gen_sintab::length#18 )
  (byte*) progress_cursor#48 ← phi( gen_sintab::@22/(byte*) progress_cursor#51 )
  (byte) progress_idx#48 ← phi( gen_sintab::@22/(byte) progress_idx#51 )
  (byte) gen_sintab::i#8 ← phi( gen_sintab::@22/(byte) gen_sintab::i#9 )
  (byte*) gen_sintab::sintab#5 ← phi( gen_sintab::@22/(byte*) gen_sintab::sintab#6 )
  (byte*) mulFACbyMEM::mem#1 ← (const byte*) gen_sintab::f_amp
  call mulFACbyMEM 
  to:gen_sintab::@24
gen_sintab::@24: scope:[gen_sintab]  from gen_sintab::@23
  (byte) gen_sintab::length#14 ← phi( gen_sintab::@23/(byte) gen_sintab::length#16 )
  (byte*) progress_cursor#45 ← phi( gen_sintab::@23/(byte*) progress_cursor#48 )
  (byte) progress_idx#45 ← phi( gen_sintab::@23/(byte) progress_idx#48 )
  (byte) gen_sintab::i#7 ← phi( gen_sintab::@23/(byte) gen_sintab::i#8 )
  (byte*) gen_sintab::sintab#4 ← phi( gen_sintab::@23/(byte*) gen_sintab::sintab#5 )
  (byte*) addMEMtoFAC::mem#1 ← (const byte*) gen_sintab::f_min
  call addMEMtoFAC 
  to:gen_sintab::@25
gen_sintab::@25: scope:[gen_sintab]  from gen_sintab::@24
  (byte) gen_sintab::length#12 ← phi( gen_sintab::@24/(byte) gen_sintab::length#14 )
  (byte*) progress_cursor#40 ← phi( gen_sintab::@24/(byte*) progress_cursor#45 )
  (byte) progress_idx#40 ← phi( gen_sintab::@24/(byte) progress_idx#45 )
  (byte) gen_sintab::i#6 ← phi( gen_sintab::@24/(byte) gen_sintab::i#7 )
  (byte*) gen_sintab::sintab#3 ← phi( gen_sintab::@24/(byte*) gen_sintab::sintab#4 )
  call getFAC 
  (word) getFAC::return#2 ← (word) getFAC::return#1
  to:gen_sintab::@26
gen_sintab::@26: scope:[gen_sintab]  from gen_sintab::@25
  (byte) gen_sintab::length#9 ← phi( gen_sintab::@25/(byte) gen_sintab::length#12 )
  (byte*) progress_cursor#34 ← phi( gen_sintab::@25/(byte*) progress_cursor#40 )
  (byte) progress_idx#34 ← phi( gen_sintab::@25/(byte) progress_idx#40 )
  (byte) gen_sintab::i#4 ← phi( gen_sintab::@25/(byte) gen_sintab::i#6 )
  (byte*) gen_sintab::sintab#2 ← phi( gen_sintab::@25/(byte*) gen_sintab::sintab#3 )
  (word) getFAC::return#4 ← phi( gen_sintab::@25/(word) getFAC::return#2 )
  (word~) gen_sintab::$24 ← (word) getFAC::return#4
  (byte~) gen_sintab::$25 ← ((byte)) (word~) gen_sintab::$24
  *((byte*) gen_sintab::sintab#2 + (byte) gen_sintab::i#4) ← (byte~) gen_sintab::$25
  call progress_inc 
  to:gen_sintab::@27
gen_sintab::@27: scope:[gen_sintab]  from gen_sintab::@26
  (byte*) gen_sintab::sintab#14 ← phi( gen_sintab::@26/(byte*) gen_sintab::sintab#2 )
  (byte) gen_sintab::length#5 ← phi( gen_sintab::@26/(byte) gen_sintab::length#9 )
  (byte) gen_sintab::i#5 ← phi( gen_sintab::@26/(byte) gen_sintab::i#4 )
  (byte*) progress_cursor#26 ← phi( gen_sintab::@26/(byte*) progress_cursor#11 )
  (byte) progress_idx#27 ← phi( gen_sintab::@26/(byte) progress_idx#12 )
  (byte) progress_idx#13 ← (byte) progress_idx#27
  (byte*) progress_cursor#12 ← (byte*) progress_cursor#26
  (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#5
  to:gen_sintab::@1
gen_sintab::@return: scope:[gen_sintab]  from gen_sintab::@1
  (byte*) progress_cursor#27 ← phi( gen_sintab::@1/(byte*) progress_cursor#35 )
  (byte) progress_idx#28 ← phi( gen_sintab::@1/(byte) progress_idx#35 )
  (byte) progress_idx#14 ← (byte) progress_idx#28
  (byte*) progress_cursor#13 ← (byte*) progress_cursor#27
  return 
  to:@return
@78: scope:[]  from @73
  (byte) sin_idx_y#17 ← phi( @73/(byte) sin_idx_y#2 )
  (byte) sin_idx_x#16 ← phi( @73/(byte) sin_idx_x#2 )
  (byte) progress_idx#36 ← phi( @73/(byte) progress_idx#41 )
  (byte*) progress_cursor#36 ← phi( @73/(byte*) progress_cursor#41 )
  call main 
  to:@79
@79: scope:[]  from @78
  (byte) sin_idx_y#12 ← phi( @78/(byte) sin_idx_y#1 )
  (byte) sin_idx_x#12 ← phi( @78/(byte) sin_idx_x#1 )
  (byte) progress_idx#29 ← phi( @78/(byte) progress_idx#1 )
  (byte*) progress_cursor#28 ← phi( @78/(byte*) progress_cursor#1 )
  (byte*) progress_cursor#14 ← (byte*) progress_cursor#28
  (byte) progress_idx#15 ← (byte) progress_idx#29
  (byte) sin_idx_x#6 ← (byte) sin_idx_x#12
  (byte) sin_idx_y#6 ← (byte) sin_idx_y#12
  to:@end
@end: scope:[]  from @79

SYMBOL TABLE SSA
(label) @71
(label) @73
(label) @78
(label) @79
(label) @begin
(label) @end
(const byte*) BORDERCOL = (byte*)(number) $d020
(const byte*) CHARGEN = (byte*)(number) $d000
(const byte*) COLS = (byte*)(number) $d800
(const byte*) PROCPORT = (byte*)(number) 1
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*)(number) $d012
(const byte*) SCREEN = (byte*)(number) $400
(const byte*) SPRITES_COLS = (byte*)(number) $d027
(const byte*) SPRITES_ENABLE = (byte*)(number) $d015
(const byte*) SPRITES_EXPAND_X = (byte*)(number) $d01d
(const byte*) SPRITES_EXPAND_Y = (byte*)(number) $d017
(const byte*) SPRITES_XMSB = (byte*)(number) $d010
(const byte*) SPRITES_XPOS = (byte*)(number) $d000
(const byte*) SPRITES_YPOS = (byte*)(number) $d001
(void()) addMEMtoFAC((byte*) addMEMtoFAC::mem)
(word~) addMEMtoFAC::$0
(label) addMEMtoFAC::@1
(label) addMEMtoFAC::@return
(byte*) addMEMtoFAC::mem
(byte*) addMEMtoFAC::mem#0
(byte*) addMEMtoFAC::mem#1
(byte*) addMEMtoFAC::mem#2
(label) addMEMtoFAC::prepareMEM1
(byte~) addMEMtoFAC::prepareMEM1_$0
(byte~) addMEMtoFAC::prepareMEM1_$1
(word) addMEMtoFAC::prepareMEM1_mem
(word) addMEMtoFAC::prepareMEM1_mem#0
(word) addMEMtoFAC::prepareMEM1_mem#1
(void()) anim()
(bool~) anim::$1
(byte~) anim::$10
(number~) anim::$11
(bool~) anim::$12
(bool~) anim::$13
(byte~) anim::$14
(number~) anim::$15
(bool~) anim::$16
(bool~) anim::$17
(byte~) anim::$18
(number~) anim::$19
(bool~) anim::$2
(bool~) anim::$20
(bool~) anim::$3
(bool~) anim::$4
(word~) anim::$6
(number~) anim::$7
(byte~) anim::$8
(number~) anim::$9
(label) anim::@1
(label) anim::@10
(label) anim::@2
(label) anim::@3
(label) anim::@4
(label) anim::@5
(label) anim::@6
(label) anim::@7
(label) anim::@8
(label) anim::@9
(label) anim::@return
(byte) anim::j
(byte) anim::j#0
(byte) anim::j#1
(byte) anim::j#2
(byte) anim::j#3
(byte) anim::j#4
(byte) anim::j#5
(byte) anim::j#6
(byte) anim::j2
(byte) anim::j2#0
(byte) anim::j2#1
(byte) anim::j2#2
(byte) anim::j2#3
(byte) anim::j2#4
(byte) anim::j2#5
(byte) anim::j2#6
(word) anim::x
(word) anim::x#0
(byte) anim::x_msb
(byte) anim::x_msb#0
(byte) anim::x_msb#1
(byte) anim::x_msb#2
(byte) anim::x_msb#3
(byte) anim::x_msb#4
(byte) anim::x_msb#5
(byte) anim::x_msb#6
(byte) anim::x_msb#7
(byte) anim::xidx
(byte) anim::xidx#0
(byte) anim::xidx#1
(byte) anim::xidx#2
(byte) anim::xidx#3
(byte) anim::xidx#4
(byte) anim::xidx#5
(byte) anim::xidx#6
(byte) anim::xidx#7
(byte) anim::yidx
(byte) anim::yidx#0
(byte) anim::yidx#1
(byte) anim::yidx#2
(byte) anim::yidx#3
(byte) anim::yidx#4
(byte) anim::yidx#5
(byte) anim::yidx#6
(byte) anim::yidx#7
(void()) clear_screen()
(bool~) clear_screen::$0
(label) clear_screen::@1
(label) clear_screen::@2
(label) clear_screen::@return
(byte*) clear_screen::sc
(byte*) clear_screen::sc#0
(byte*) clear_screen::sc#1
(byte*) clear_screen::sc#2
(byte*) clear_screen::sc#3
(void()) divMEMbyFAC((byte*) divMEMbyFAC::mem)
(word~) divMEMbyFAC::$0
(label) divMEMbyFAC::@1
(label) divMEMbyFAC::@return
(byte*) divMEMbyFAC::mem
(byte*) divMEMbyFAC::mem#0
(byte*) divMEMbyFAC::mem#1
(byte*) divMEMbyFAC::mem#2
(label) divMEMbyFAC::prepareMEM1
(byte~) divMEMbyFAC::prepareMEM1_$0
(byte~) divMEMbyFAC::prepareMEM1_$1
(word) divMEMbyFAC::prepareMEM1_mem
(word) divMEMbyFAC::prepareMEM1_mem#0
(word) divMEMbyFAC::prepareMEM1_mem#1
(void()) gen_chargen_sprite((byte) gen_chargen_sprite::ch , (byte*) gen_chargen_sprite::sprite)
(word~) gen_chargen_sprite::$0
(number~) gen_chargen_sprite::$1
(bool~) gen_chargen_sprite::$10
(number~) gen_chargen_sprite::$11
(bool~) gen_chargen_sprite::$12
(byte*~) gen_chargen_sprite::$13
(bool~) gen_chargen_sprite::$14
(byte*~) gen_chargen_sprite::$2
(number~) gen_chargen_sprite::$3
(bool~) gen_chargen_sprite::$4
(bool~) gen_chargen_sprite::$5
(number~) gen_chargen_sprite::$6
(number~) gen_chargen_sprite::$7
(bool~) gen_chargen_sprite::$8
(bool~) gen_chargen_sprite::$9
(label) gen_chargen_sprite::@1
(label) gen_chargen_sprite::@10
(label) gen_chargen_sprite::@2
(label) gen_chargen_sprite::@3
(label) gen_chargen_sprite::@4
(label) gen_chargen_sprite::@5
(label) gen_chargen_sprite::@6
(label) gen_chargen_sprite::@7
(label) gen_chargen_sprite::@8
(label) gen_chargen_sprite::@9
(label) gen_chargen_sprite::@return
(byte) gen_chargen_sprite::b
(byte) gen_chargen_sprite::b#0
(byte) gen_chargen_sprite::b#1
(byte) gen_chargen_sprite::b#2
(byte) gen_chargen_sprite::b#3
(byte) gen_chargen_sprite::b#4
(byte) gen_chargen_sprite::bits
(byte) gen_chargen_sprite::bits#0
(byte) gen_chargen_sprite::bits#1
(byte) gen_chargen_sprite::bits#2
(byte) gen_chargen_sprite::bits#3
(byte) gen_chargen_sprite::bits#4
(byte) gen_chargen_sprite::bits#5
(byte) gen_chargen_sprite::bits#6
(byte) gen_chargen_sprite::bits#7
(byte) gen_chargen_sprite::bits#8
(byte) gen_chargen_sprite::c
(byte) gen_chargen_sprite::c#0
(byte) gen_chargen_sprite::c#1
(byte) gen_chargen_sprite::c#2
(byte) gen_chargen_sprite::c#3
(byte) gen_chargen_sprite::c#4
(byte) gen_chargen_sprite::c#5
(byte) gen_chargen_sprite::ch
(byte) gen_chargen_sprite::ch#0
(byte) gen_chargen_sprite::ch#1
(byte*) gen_chargen_sprite::chargen
(byte*) gen_chargen_sprite::chargen#0
(byte*) gen_chargen_sprite::chargen#1
(byte*) gen_chargen_sprite::chargen#2
(byte*) gen_chargen_sprite::chargen#3
(byte*) gen_chargen_sprite::chargen#4
(byte*) gen_chargen_sprite::chargen#5
(byte*) gen_chargen_sprite::chargen#6
(byte*) gen_chargen_sprite::chargen#7
(byte*) gen_chargen_sprite::chargen#8
(byte*) gen_chargen_sprite::chargen#9
(byte) gen_chargen_sprite::s_gen
(byte) gen_chargen_sprite::s_gen#0
(byte) gen_chargen_sprite::s_gen#1
(byte) gen_chargen_sprite::s_gen#2
(byte) gen_chargen_sprite::s_gen#3
(byte) gen_chargen_sprite::s_gen#4
(byte) gen_chargen_sprite::s_gen#5
(byte) gen_chargen_sprite::s_gen#6
(byte) gen_chargen_sprite::s_gen#7
(byte) gen_chargen_sprite::s_gen#8
(byte) gen_chargen_sprite::s_gen#9
(byte) gen_chargen_sprite::s_gen_cnt
(byte) gen_chargen_sprite::s_gen_cnt#0
(byte) gen_chargen_sprite::s_gen_cnt#1
(byte) gen_chargen_sprite::s_gen_cnt#2
(byte) gen_chargen_sprite::s_gen_cnt#3
(byte) gen_chargen_sprite::s_gen_cnt#4
(byte) gen_chargen_sprite::s_gen_cnt#5
(byte) gen_chargen_sprite::s_gen_cnt#6
(byte) gen_chargen_sprite::s_gen_cnt#7
(byte) gen_chargen_sprite::s_gen_cnt#8
(byte*) gen_chargen_sprite::sprite
(byte*) gen_chargen_sprite::sprite#0
(byte*) gen_chargen_sprite::sprite#1
(byte*) gen_chargen_sprite::sprite#10
(byte*) gen_chargen_sprite::sprite#11
(byte*) gen_chargen_sprite::sprite#12
(byte*) gen_chargen_sprite::sprite#2
(byte*) gen_chargen_sprite::sprite#3
(byte*) gen_chargen_sprite::sprite#4
(byte*) gen_chargen_sprite::sprite#5
(byte*) gen_chargen_sprite::sprite#6
(byte*) gen_chargen_sprite::sprite#7
(byte*) gen_chargen_sprite::sprite#8
(byte*) gen_chargen_sprite::sprite#9
(byte) gen_chargen_sprite::x
(byte) gen_chargen_sprite::x#0
(byte) gen_chargen_sprite::x#1
(byte) gen_chargen_sprite::x#2
(byte) gen_chargen_sprite::x#3
(byte) gen_chargen_sprite::x#4
(byte) gen_chargen_sprite::x#5
(byte) gen_chargen_sprite::x#6
(byte) gen_chargen_sprite::x#7
(byte) gen_chargen_sprite::x#8
(byte) gen_chargen_sprite::y
(byte) gen_chargen_sprite::y#0
(byte) gen_chargen_sprite::y#1
(byte) gen_chargen_sprite::y#10
(byte) gen_chargen_sprite::y#2
(byte) gen_chargen_sprite::y#3
(byte) gen_chargen_sprite::y#4
(byte) gen_chargen_sprite::y#5
(byte) gen_chargen_sprite::y#6
(byte) gen_chargen_sprite::y#7
(byte) gen_chargen_sprite::y#8
(byte) gen_chargen_sprite::y#9
(void()) gen_sintab((byte*) gen_sintab::sintab , (byte) gen_sintab::length , (byte) gen_sintab::min , (byte) gen_sintab::max)
(word~) gen_sintab::$0
(bool~) gen_sintab::$13
(word~) gen_sintab::$14
(word~) gen_sintab::$18
(word~) gen_sintab::$24
(byte~) gen_sintab::$25
(word~) gen_sintab::$3
(label) gen_sintab::@1
(label) gen_sintab::@10
(label) gen_sintab::@11
(label) gen_sintab::@12
(label) gen_sintab::@13
(label) gen_sintab::@14
(label) gen_sintab::@15
(label) gen_sintab::@16
(label) gen_sintab::@17
(label) gen_sintab::@18
(label) gen_sintab::@19
(label) gen_sintab::@2
(label) gen_sintab::@20
(label) gen_sintab::@21
(label) gen_sintab::@22
(label) gen_sintab::@23
(label) gen_sintab::@24
(label) gen_sintab::@25
(label) gen_sintab::@26
(label) gen_sintab::@27
(label) gen_sintab::@7
(label) gen_sintab::@8
(label) gen_sintab::@9
(label) gen_sintab::@return
(const byte*) gen_sintab::f_2pi = (byte*)(number) $e2e5
(const byte*) gen_sintab::f_amp[]  = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(const byte*) gen_sintab::f_i[]  = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(const byte*) gen_sintab::f_min[]  = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(byte) gen_sintab::i
(byte) gen_sintab::i#0
(byte) gen_sintab::i#1
(byte) gen_sintab::i#10
(byte) gen_sintab::i#11
(byte) gen_sintab::i#12
(byte) gen_sintab::i#13
(byte) gen_sintab::i#2
(byte) gen_sintab::i#3
(byte) gen_sintab::i#4
(byte) gen_sintab::i#5
(byte) gen_sintab::i#6
(byte) gen_sintab::i#7
(byte) gen_sintab::i#8
(byte) gen_sintab::i#9
(byte) gen_sintab::length
(byte) gen_sintab::length#0
(byte) gen_sintab::length#1
(byte) gen_sintab::length#10
(byte) gen_sintab::length#11
(byte) gen_sintab::length#12
(byte) gen_sintab::length#13
(byte) gen_sintab::length#14
(byte) gen_sintab::length#15
(byte) gen_sintab::length#16
(byte) gen_sintab::length#17
(byte) gen_sintab::length#18
(byte) gen_sintab::length#19
(byte) gen_sintab::length#2
(byte) gen_sintab::length#20
(byte) gen_sintab::length#21
(byte) gen_sintab::length#22
(byte) gen_sintab::length#23
(byte) gen_sintab::length#24
(byte) gen_sintab::length#25
(byte) gen_sintab::length#3
(byte) gen_sintab::length#4
(byte) gen_sintab::length#5
(byte) gen_sintab::length#6
(byte) gen_sintab::length#7
(byte) gen_sintab::length#8
(byte) gen_sintab::length#9
(byte) gen_sintab::max
(byte) gen_sintab::max#0
(byte) gen_sintab::max#1
(byte) gen_sintab::max#2
(byte) gen_sintab::min
(byte) gen_sintab::min#0
(byte) gen_sintab::min#1
(byte) gen_sintab::min#2
(byte) gen_sintab::min#3
(byte) gen_sintab::min#4
(byte*) gen_sintab::sintab
(byte*) gen_sintab::sintab#0
(byte*) gen_sintab::sintab#1
(byte*) gen_sintab::sintab#10
(byte*) gen_sintab::sintab#11
(byte*) gen_sintab::sintab#12
(byte*) gen_sintab::sintab#13
(byte*) gen_sintab::sintab#14
(byte*) gen_sintab::sintab#15
(byte*) gen_sintab::sintab#16
(byte*) gen_sintab::sintab#17
(byte*) gen_sintab::sintab#18
(byte*) gen_sintab::sintab#19
(byte*) gen_sintab::sintab#2
(byte*) gen_sintab::sintab#20
(byte*) gen_sintab::sintab#21
(byte*) gen_sintab::sintab#22
(byte*) gen_sintab::sintab#23
(byte*) gen_sintab::sintab#24
(byte*) gen_sintab::sintab#25
(byte*) gen_sintab::sintab#3
(byte*) gen_sintab::sintab#4
(byte*) gen_sintab::sintab#5
(byte*) gen_sintab::sintab#6
(byte*) gen_sintab::sintab#7
(byte*) gen_sintab::sintab#8
(byte*) gen_sintab::sintab#9
(void()) gen_sprites()
(byte*~) gen_sprites::$1
(bool~) gen_sprites::$2
(label) gen_sprites::@1
(label) gen_sprites::@3
(label) gen_sprites::@return
(const byte*) gen_sprites::cml[]  = (byte*) "camelot"z
(byte) gen_sprites::i
(byte) gen_sprites::i#0
(byte) gen_sprites::i#1
(byte) gen_sprites::i#2
(byte) gen_sprites::i#3
(byte*) gen_sprites::spr
(byte*) gen_sprites::spr#0
(byte*) gen_sprites::spr#1
(byte*) gen_sprites::spr#2
(byte*) gen_sprites::spr#3
(word()) getFAC()
(label) getFAC::@return
(word) getFAC::return
(word) getFAC::return#0
(word) getFAC::return#1
(word) getFAC::return#2
(word) getFAC::return#3
(word) getFAC::return#4
(word) getFAC::w
(word) getFAC::w#0
(void()) init()
(number~) init::$8
(bool~) init::$9
(label) init::@1
(label) init::@10
(label) init::@2
(label) init::@3
(label) init::@4
(label) init::@5
(label) init::@6
(label) init::@7
(label) init::@8
(label) init::@9
(label) init::@return
(byte) init::i
(byte) init::i#0
(byte) init::i#1
(byte) init::i#2
(void()) main()
(bool~) main::$1
(label) main::@2
(label) main::@3
(label) main::@5
(label) main::@6
(label) main::@return
(const byte*) memHi = (byte*)(number) $ff
(const byte*) memLo = (byte*)(number) $fe
(void()) mulFACbyMEM((byte*) mulFACbyMEM::mem)
(word~) mulFACbyMEM::$0
(label) mulFACbyMEM::@1
(label) mulFACbyMEM::@return
(byte*) mulFACbyMEM::mem
(byte*) mulFACbyMEM::mem#0
(byte*) mulFACbyMEM::mem#1
(byte*) mulFACbyMEM::mem#2
(label) mulFACbyMEM::prepareMEM1
(byte~) mulFACbyMEM::prepareMEM1_$0
(byte~) mulFACbyMEM::prepareMEM1_$1
(word) mulFACbyMEM::prepareMEM1_mem
(word) mulFACbyMEM::prepareMEM1_mem#0
(word) mulFACbyMEM::prepareMEM1_mem#1
(void()) place_sprites()
(number~) place_sprites::$0
(number~) place_sprites::$1
(bool~) place_sprites::$2
(label) place_sprites::@1
(label) place_sprites::@return
(byte) place_sprites::col
(byte) place_sprites::col#0
(byte) place_sprites::col#1
(byte) place_sprites::col#2
(byte) place_sprites::j
(byte) place_sprites::j#0
(byte) place_sprites::j#1
(byte) place_sprites::j#2
(byte) place_sprites::j2
(byte) place_sprites::j2#0
(byte) place_sprites::j2#1
(byte) place_sprites::j2#2
(byte) place_sprites::j2#3
(byte) place_sprites::spr_id
(byte) place_sprites::spr_id#0
(byte) place_sprites::spr_id#1
(byte) place_sprites::spr_id#2
(byte) place_sprites::spr_x
(byte) place_sprites::spr_x#0
(byte) place_sprites::spr_x#1
(byte) place_sprites::spr_x#2
(const byte*) place_sprites::sprites_ptr = (const byte*) SCREEN+(number) $3f8
(byte*) progress_cursor
(byte*) progress_cursor#0
(byte*) progress_cursor#1
(byte*) progress_cursor#10
(byte*) progress_cursor#11
(byte*) progress_cursor#12
(byte*) progress_cursor#13
(byte*) progress_cursor#14
(byte*) progress_cursor#15
(byte*) progress_cursor#16
(byte*) progress_cursor#17
(byte*) progress_cursor#18
(byte*) progress_cursor#19
(byte*) progress_cursor#2
(byte*) progress_cursor#20
(byte*) progress_cursor#21
(byte*) progress_cursor#22
(byte*) progress_cursor#23
(byte*) progress_cursor#24
(byte*) progress_cursor#25
(byte*) progress_cursor#26
(byte*) progress_cursor#27
(byte*) progress_cursor#28
(byte*) progress_cursor#29
(byte*) progress_cursor#3
(byte*) progress_cursor#30
(byte*) progress_cursor#31
(byte*) progress_cursor#32
(byte*) progress_cursor#33
(byte*) progress_cursor#34
(byte*) progress_cursor#35
(byte*) progress_cursor#36
(byte*) progress_cursor#37
(byte*) progress_cursor#38
(byte*) progress_cursor#39
(byte*) progress_cursor#4
(byte*) progress_cursor#40
(byte*) progress_cursor#41
(byte*) progress_cursor#42
(byte*) progress_cursor#43
(byte*) progress_cursor#44
(byte*) progress_cursor#45
(byte*) progress_cursor#46
(byte*) progress_cursor#47
(byte*) progress_cursor#48
(byte*) progress_cursor#49
(byte*) progress_cursor#5
(byte*) progress_cursor#50
(byte*) progress_cursor#51
(byte*) progress_cursor#52
(byte*) progress_cursor#53
(byte*) progress_cursor#54
(byte*) progress_cursor#55
(byte*) progress_cursor#56
(byte*) progress_cursor#57
(byte*) progress_cursor#58
(byte*) progress_cursor#59
(byte*) progress_cursor#6
(byte*) progress_cursor#60
(byte*) progress_cursor#61
(byte*) progress_cursor#62
(byte*) progress_cursor#63
(byte*) progress_cursor#64
(byte*) progress_cursor#65
(byte*) progress_cursor#7
(byte*) progress_cursor#8
(byte*) progress_cursor#9
(byte) progress_idx
(byte) progress_idx#0
(byte) progress_idx#1
(byte) progress_idx#10
(byte) progress_idx#11
(byte) progress_idx#12
(byte) progress_idx#13
(byte) progress_idx#14
(byte) progress_idx#15
(byte) progress_idx#16
(byte) progress_idx#17
(byte) progress_idx#18
(byte) progress_idx#19
(byte) progress_idx#2
(byte) progress_idx#20
(byte) progress_idx#21
(byte) progress_idx#22
(byte) progress_idx#23
(byte) progress_idx#24
(byte) progress_idx#25
(byte) progress_idx#26
(byte) progress_idx#27
(byte) progress_idx#28
(byte) progress_idx#29
(byte) progress_idx#3
(byte) progress_idx#30
(byte) progress_idx#31
(byte) progress_idx#32
(byte) progress_idx#33
(byte) progress_idx#34
(byte) progress_idx#35
(byte) progress_idx#36
(byte) progress_idx#37
(byte) progress_idx#38
(byte) progress_idx#39
(byte) progress_idx#4
(byte) progress_idx#40
(byte) progress_idx#41
(byte) progress_idx#42
(byte) progress_idx#43
(byte) progress_idx#44
(byte) progress_idx#45
(byte) progress_idx#46
(byte) progress_idx#47
(byte) progress_idx#48
(byte) progress_idx#49
(byte) progress_idx#5
(byte) progress_idx#50
(byte) progress_idx#51
(byte) progress_idx#52
(byte) progress_idx#53
(byte) progress_idx#54
(byte) progress_idx#55
(byte) progress_idx#56
(byte) progress_idx#57
(byte) progress_idx#58
(byte) progress_idx#59
(byte) progress_idx#6
(byte) progress_idx#60
(byte) progress_idx#61
(byte) progress_idx#62
(byte) progress_idx#63
(byte) progress_idx#64
(byte) progress_idx#65
(byte) progress_idx#7
(byte) progress_idx#8
(byte) progress_idx#9
(void()) progress_inc()
(bool~) progress_inc::$0
(bool~) progress_inc::$1
(label) progress_inc::@1
(label) progress_inc::@2
(label) progress_inc::@return
(const byte*) progress_inc::progress_chars[]  = { (byte) $20, (byte) $65, (byte) $74, (byte) $75, (byte) $61, (byte) $f6, (byte) $e7, (byte) $ea, (byte) $e0 }
(void()) progress_init((byte*) progress_init::line)
(label) progress_init::@return
(byte*) progress_init::line
(byte*) progress_init::line#0
(byte*) progress_init::line#1
(byte*) progress_init::line#2
(void()) setARGtoFAC()
(label) setARGtoFAC::@return
(void()) setFAC((word) setFAC::w)
(label) setFAC::@1
(label) setFAC::@return
(label) setFAC::prepareMEM1
(byte~) setFAC::prepareMEM1_$0
(byte~) setFAC::prepareMEM1_$1
(word) setFAC::prepareMEM1_mem
(word) setFAC::prepareMEM1_mem#0
(word) setFAC::prepareMEM1_mem#1
(word) setFAC::w
(word) setFAC::w#0
(word) setFAC::w#1
(word) setFAC::w#2
(word) setFAC::w#3
(word) setFAC::w#4
(word) setFAC::w#5
(void()) setMEMtoFAC((byte*) setMEMtoFAC::mem)
(word~) setMEMtoFAC::$0
(label) setMEMtoFAC::@1
(label) setMEMtoFAC::@return
(byte*) setMEMtoFAC::mem
(byte*) setMEMtoFAC::mem#0
(byte*) setMEMtoFAC::mem#1
(byte*) setMEMtoFAC::mem#2
(byte*) setMEMtoFAC::mem#3
(byte*) setMEMtoFAC::mem#4
(byte*) setMEMtoFAC::mem#5
(label) setMEMtoFAC::prepareMEM1
(byte~) setMEMtoFAC::prepareMEM1_$0
(byte~) setMEMtoFAC::prepareMEM1_$1
(word) setMEMtoFAC::prepareMEM1_mem
(word) setMEMtoFAC::prepareMEM1_mem#0
(word) setMEMtoFAC::prepareMEM1_mem#1
(void()) sinFAC()
(label) sinFAC::@return
(byte) sin_idx_x
(byte) sin_idx_x#0
(byte) sin_idx_x#1
(byte) sin_idx_x#10
(byte) sin_idx_x#11
(byte) sin_idx_x#12
(byte) sin_idx_x#13
(byte) sin_idx_x#14
(byte) sin_idx_x#15
(byte) sin_idx_x#16
(byte) sin_idx_x#17
(byte) sin_idx_x#18
(byte) sin_idx_x#19
(byte) sin_idx_x#2
(byte) sin_idx_x#20
(byte) sin_idx_x#21
(byte) sin_idx_x#22
(byte) sin_idx_x#23
(byte) sin_idx_x#24
(byte) sin_idx_x#25
(byte) sin_idx_x#3
(byte) sin_idx_x#4
(byte) sin_idx_x#5
(byte) sin_idx_x#6
(byte) sin_idx_x#7
(byte) sin_idx_x#8
(byte) sin_idx_x#9
(byte) sin_idx_y
(byte) sin_idx_y#0
(byte) sin_idx_y#1
(byte) sin_idx_y#10
(byte) sin_idx_y#11
(byte) sin_idx_y#12
(byte) sin_idx_y#13
(byte) sin_idx_y#14
(byte) sin_idx_y#15
(byte) sin_idx_y#16
(byte) sin_idx_y#17
(byte) sin_idx_y#18
(byte) sin_idx_y#19
(byte) sin_idx_y#2
(byte) sin_idx_y#20
(byte) sin_idx_y#21
(byte) sin_idx_y#22
(byte) sin_idx_y#23
(byte) sin_idx_y#24
(byte) sin_idx_y#25
(byte) sin_idx_y#3
(byte) sin_idx_y#4
(byte) sin_idx_y#5
(byte) sin_idx_y#6
(byte) sin_idx_y#7
(byte) sin_idx_y#8
(byte) sin_idx_y#9
(const byte) sinlen_x = (byte) $dd
(const byte) sinlen_y = (byte) $c5
(const byte*) sintab_x[(number) $dd]  = { fill( $dd, 0) }
(const byte*) sintab_y[(number) $c5]  = { fill( $c5, 0) }
(const byte*) sprites = (byte*)(number) $2000
(void()) subFACfromARG()
(label) subFACfromARG::@return

Fixing inline constructor with getFAC::$0 ← (byte)*(memHi) w= (byte)*(memLo)
Successful SSA optimization Pass2FixInlineConstructors
Adding number conversion cast (unumber) $3f8 in 
Adding number conversion cast (unumber) $ff in (bool~) main::$1 ← *((const byte*) RASTER) != (number) $ff
Adding number conversion cast (unumber) 0 in *((const byte*) COLS + (byte) init::i#2) ← (number) 0
Adding number conversion cast (unumber) $28 in (number~) init::$8 ← (number) $28 + (byte) init::i#2
Adding number conversion cast (unumber) init::$8 in (number~) init::$8 ← (unumber)(number) $28 + (byte) init::i#2
Adding number conversion cast (unumber) $b in *((const byte*) COLS + (unumber~) init::$8) ← (number) $b
Adding number conversion cast (unumber) 0 in (byte) gen_sintab::min#0 ← (number) 0
Adding number conversion cast (unumber) $ff in (byte) gen_sintab::max#0 ← (number) $ff
Adding number conversion cast (unumber) $28 in (byte*) progress_init::line#1 ← (const byte*) SCREEN+(number) $28
Adding number conversion cast (unumber) $32 in (byte) gen_sintab::min#1 ← (number) $32
Adding number conversion cast (unumber) $d0 in (byte) gen_sintab::max#1 ← (number) $d0
Adding number conversion cast (unumber) $3e8 in (bool~) clear_screen::$0 ← (byte*) clear_screen::sc#2 < (const byte*) SCREEN+(number) $3e8
Adding number conversion cast (unumber) 0 in (byte) progress_idx#8 ← (number) 0
Adding number conversion cast (unumber) 8 in (bool~) progress_inc::$0 ← (byte) progress_idx#10 == (number) 8
Adding number conversion cast (unumber) 8 in *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars + (number) 8)
Adding number conversion cast (unumber) 0 in (byte) progress_idx#11 ← (number) 0
Adding number conversion cast (unumber) 2 in (number~) anim::$7 ← (byte) anim::x_msb#2 * (number) 2
Adding number conversion cast (unumber) anim::$7 in (number~) anim::$7 ← (byte) anim::x_msb#2 * (unumber)(number) 2
Adding number conversion cast (unumber) anim::$9 in (number~) anim::$9 ← (unumber~) anim::$7 | (byte~) anim::$8
Adding number conversion cast (unumber) $a in (number~) anim::$11 ← (byte) anim::xidx#3 + (number) $a
Adding number conversion cast (unumber) anim::$11 in (number~) anim::$11 ← (byte) anim::xidx#3 + (unumber)(number) $a
Adding number conversion cast (unumber) 8 in (number~) anim::$15 ← (byte) anim::yidx#4 + (number) 8
Adding number conversion cast (unumber) anim::$15 in (number~) anim::$15 ← (byte) anim::yidx#4 + (unumber)(number) 8
Adding number conversion cast (unumber) 2 in (number~) anim::$19 ← (byte) anim::j2#3 - (number) 2
Adding number conversion cast (unumber) anim::$19 in (number~) anim::$19 ← (byte) anim::j2#3 - (unumber)(number) 2
Adding number conversion cast (unumber) 0 in (byte) sin_idx_x#4 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) sin_idx_y#4 ← (number) 0
Adding number conversion cast (unumber) $7f in *((const byte*) SPRITES_ENABLE) ← (number) $7f
Adding number conversion cast (unumber) $7f in *((const byte*) SPRITES_EXPAND_X) ← (number) $7f
Adding number conversion cast (unumber) $7f in *((const byte*) SPRITES_EXPAND_Y) ← (number) $7f
Adding number conversion cast (unumber) $40 in (byte) place_sprites::spr_id#0 ← (byte)(word)(const byte*) sprites/(number) $40
Adding number conversion cast (unumber) $50 in *((const byte*) SPRITES_YPOS + (byte) place_sprites::j2#3) ← (number) $50
Adding number conversion cast (unumber) $20 in (number~) place_sprites::$0 ← (byte) place_sprites::spr_x#2 + (number) $20
Adding number conversion cast (unumber) place_sprites::$0 in (number~) place_sprites::$0 ← (byte) place_sprites::spr_x#2 + (unumber)(number) $20
Adding number conversion cast (unumber) 7^5 in (number~) place_sprites::$1 ← (byte) place_sprites::col#2 ^ (number) 7^(number) 5
Adding number conversion cast (unumber) place_sprites::$1 in (number~) place_sprites::$1 ← (byte) place_sprites::col#2 ^ (unumber)(number) 7^(number) 5
Adding number conversion cast (unumber) $40 in (byte*~) gen_sprites::$1 ← (byte*) gen_sprites::spr#3 + (number) $40
Adding number conversion cast (unumber) 8 in (number~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 * (number) 8
Adding number conversion cast (unumber) gen_chargen_sprite::$1 in (number~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 * (unumber)(number) 8
Adding number conversion cast (unumber) $32 in *((const byte*) PROCPORT) ← (number) $32
Adding number conversion cast (unumber) $80 in (number~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (number) $80
Adding number conversion cast (unumber) gen_chargen_sprite::$3 in (number~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (unumber)(number) $80
Adding number conversion cast (unumber) 0 in (bool~) gen_chargen_sprite::$4 ← (unumber~) gen_chargen_sprite::$3 != (number) 0
Adding number conversion cast (unumber) 1 in (byte) gen_chargen_sprite::c#1 ← (number) 1
Adding number conversion cast (unumber) 2 in (number~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 * (number) 2
Adding number conversion cast (unumber) gen_chargen_sprite::$6 in (number~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 * (unumber)(number) 2
Adding number conversion cast (unumber) gen_chargen_sprite::$7 in (number~) gen_chargen_sprite::$7 ← (unumber~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#2
Adding number conversion cast (unumber) 8 in (bool~) gen_chargen_sprite::$8 ← (byte) gen_chargen_sprite::s_gen_cnt#1 == (number) 8
Adding number conversion cast (unumber) 0 in *((byte*) gen_chargen_sprite::sprite#3 + (number) 0) ← (byte) gen_chargen_sprite::s_gen#4
Adding number conversion cast (unumber) 3 in *((byte*) gen_chargen_sprite::sprite#3 + (number) 3) ← (byte) gen_chargen_sprite::s_gen#4
Adding number conversion cast (unumber) 6 in *((byte*) gen_chargen_sprite::sprite#3 + (number) 6) ← (byte) gen_chargen_sprite::s_gen#4
Adding number conversion cast (unumber) 0 in (byte) gen_chargen_sprite::s_gen#2 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) gen_chargen_sprite::s_gen_cnt#2 ← (number) 0
Adding number conversion cast (unumber) 2 in (number~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::bits#3 * (number) 2
Adding number conversion cast (unumber) gen_chargen_sprite::$11 in (number~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::bits#3 * (unumber)(number) 2
Adding number conversion cast (unumber) 6 in (byte*~) gen_chargen_sprite::$13 ← (byte*) gen_chargen_sprite::sprite#4 + (number) 6
Adding number conversion cast (unumber) $37 in *((const byte*) PROCPORT) ← (number) $37
Adding number conversion cast (unumber) 2 in (word) setFAC::w#2 ← (number) 2
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (word~) setMEMtoFAC::$0 ← (word)(byte*) setMEMtoFAC::mem#5
Inlining cast (word~) addMEMtoFAC::$0 ← (word)(byte*) addMEMtoFAC::mem#2
Inlining cast (word~) divMEMbyFAC::$0 ← (word)(byte*) divMEMbyFAC::mem#2
Inlining cast (word~) mulFACbyMEM::$0 ← (word)(byte*) mulFACbyMEM::mem#2
Inlining cast *((const byte*) COLS + (byte) init::i#2) ← (unumber)(number) 0
Inlining cast *((const byte*) COLS + (unumber~) init::$8) ← (unumber)(number) $b
Inlining cast (byte) gen_sintab::min#0 ← (unumber)(number) 0
Inlining cast (byte) gen_sintab::max#0 ← (unumber)(number) $ff
Inlining cast (byte) gen_sintab::min#1 ← (unumber)(number) $32
Inlining cast (byte) gen_sintab::max#1 ← (unumber)(number) $d0
Inlining cast (byte) progress_idx#8 ← (unumber)(number) 0
Inlining cast (byte) progress_idx#11 ← (unumber)(number) 0
Inlining cast (byte) sin_idx_x#4 ← (unumber)(number) 0
Inlining cast (byte) sin_idx_y#4 ← (unumber)(number) 0
Inlining cast *((const byte*) SPRITES_ENABLE) ← (unumber)(number) $7f
Inlining cast *((const byte*) SPRITES_EXPAND_X) ← (unumber)(number) $7f
Inlining cast *((const byte*) SPRITES_EXPAND_Y) ← (unumber)(number) $7f
Inlining cast *((const byte*) SPRITES_YPOS + (byte) place_sprites::j2#3) ← (unumber)(number) $50
Inlining cast (word~) gen_chargen_sprite::$0 ← (word)(byte) gen_chargen_sprite::ch#1
Inlining cast *((const byte*) PROCPORT) ← (unumber)(number) $32
Inlining cast (byte) gen_chargen_sprite::c#1 ← (unumber)(number) 1
Inlining cast (byte) gen_chargen_sprite::s_gen#2 ← (unumber)(number) 0
Inlining cast (byte) gen_chargen_sprite::s_gen_cnt#2 ← (unumber)(number) 0
Inlining cast *((const byte*) PROCPORT) ← (unumber)(number) $37
Inlining cast (word~) gen_sintab::$0 ← (word)(byte) gen_sintab::max#2
Inlining cast (word~) gen_sintab::$3 ← (word)(byte) gen_sintab::min#2
Inlining cast (word) setFAC::w#2 ← (unumber)(number) 2
Inlining cast (word~) gen_sintab::$14 ← (word)(byte) gen_sintab::i#3
Inlining cast (word~) gen_sintab::$18 ← (word)(byte) gen_sintab::length#3
Inlining cast (byte~) gen_sintab::$25 ← (byte)(word~) gen_sintab::$24
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 1
Simplifying constant pointer cast (byte*) 53248
Simplifying constant pointer cast (byte*) 53248
Simplifying constant pointer cast (byte*) 53249
Simplifying constant pointer cast (byte*) 53264
Simplifying constant pointer cast (byte*) 53266
Simplifying constant pointer cast (byte*) 53269
Simplifying constant pointer cast (byte*) 53271
Simplifying constant pointer cast (byte*) 53277
Simplifying constant pointer cast (byte*) 53280
Simplifying constant pointer cast (byte*) 53287
Simplifying constant pointer cast (byte*) 55296
Simplifying constant pointer cast (byte*) 254
Simplifying constant pointer cast (byte*) 255
Simplifying constant pointer cast (byte*) 8192
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast $3f8
Simplifying constant pointer cast (byte*) 58085
Simplifying constant integer cast *((const byte*) memHi)
Simplifying constant integer cast *((const byte*) memLo)
Simplifying constant integer cast $ff
Simplifying constant integer cast 0
Simplifying constant integer cast $28
Simplifying constant integer cast $b
Simplifying constant integer cast 0
Simplifying constant integer cast $ff
Simplifying constant integer cast $28
Simplifying constant integer cast $32
Simplifying constant integer cast $d0
Simplifying constant integer cast $3e8
Simplifying constant integer cast 0
Simplifying constant integer cast 8
Simplifying constant integer cast 8
Simplifying constant integer cast 0
Simplifying constant integer cast $1e
Simplifying constant integer cast 2
Simplifying constant integer cast $a
Simplifying constant integer cast 8
Simplifying constant integer cast 2
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $7f
Simplifying constant integer cast $7f
Simplifying constant integer cast $7f
Simplifying constant integer cast $40
Simplifying constant integer cast $50
Simplifying constant integer cast $20
Simplifying constant integer cast $40
Simplifying constant integer cast 8
Simplifying constant integer cast $32
Simplifying constant integer cast $80
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 8
Simplifying constant integer cast 0
Simplifying constant integer cast 3
Simplifying constant integer cast 6
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 6
Simplifying constant integer cast $37
Simplifying constant integer cast 2
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (word) $3f8
Finalized unsigned number type (byte) $ff
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) $b
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $ff
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) $32
Finalized unsigned number type (byte) $d0
Finalized unsigned number type (word) $3e8
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $a
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $7f
Finalized unsigned number type (byte) $7f
Finalized unsigned number type (byte) $7f
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) $50
Finalized unsigned number type (byte) $20
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) $32
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 6
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 6
Finalized unsigned number type (byte) $37
Finalized unsigned number type (byte) 2
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to byte in (unumber~) init::$8 ← (byte) $28 + (byte) init::i#2
Inferred type updated to byte in (unumber~) anim::$7 ← (byte) anim::x_msb#2 * (byte) 2
Inferred type updated to byte in (unumber~) anim::$9 ← (byte~) anim::$7 | (byte~) anim::$8
Inferred type updated to byte in (unumber~) anim::$11 ← (byte) anim::xidx#3 + (byte) $a
Inferred type updated to byte in (unumber~) anim::$15 ← (byte) anim::yidx#4 + (byte) 8
Inferred type updated to byte in (unumber~) anim::$19 ← (byte) anim::j2#3 - (byte) 2
Inferred type updated to byte in (unumber~) place_sprites::$0 ← (byte) place_sprites::spr_x#2 + (byte) $20
Inferred type updated to byte in (unumber~) place_sprites::$1 ← (byte) place_sprites::col#2 ^ (byte)(number) 7^(number) 5
Inferred type updated to word in (unumber~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 * (byte) 8
Inferred type updated to byte in (unumber~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte) $80
Inferred type updated to byte in (unumber~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 * (byte) 2
Inferred type updated to byte in (unumber~) gen_chargen_sprite::$7 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#2
Inferred type updated to byte in (unumber~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::bits#3 * (byte) 2
Inversing boolean not [150] (bool~) progress_inc::$1 ← (byte) progress_idx#10 != (byte) 8 from [149] (bool~) progress_inc::$0 ← (byte) progress_idx#10 == (byte) 8
Inversing boolean not [185] (bool~) anim::$13 ← (byte) anim::xidx#1 < (const byte) sinlen_x from [184] (bool~) anim::$12 ← (byte) anim::xidx#1 >= (const byte) sinlen_x
Inversing boolean not [191] (bool~) anim::$17 ← (byte) anim::yidx#1 < (const byte) sinlen_y from [190] (bool~) anim::$16 ← (byte) anim::yidx#1 >= (const byte) sinlen_y
Inversing boolean not [209] (bool~) anim::$2 ← (byte) sin_idx_x#3 < (const byte) sinlen_x from [208] (bool~) anim::$1 ← (byte) sin_idx_x#3 >= (const byte) sinlen_x
Inversing boolean not [214] (bool~) anim::$4 ← (byte) sin_idx_y#3 < (const byte) sinlen_y from [213] (bool~) anim::$3 ← (byte) sin_idx_y#3 >= (const byte) sinlen_y
Inversing boolean not [280] (bool~) gen_chargen_sprite::$5 ← (byte~) gen_chargen_sprite::$3 == (byte) 0 from [279] (bool~) gen_chargen_sprite::$4 ← (byte~) gen_chargen_sprite::$3 != (byte) 0
Inversing boolean not [292] (bool~) gen_chargen_sprite::$9 ← (byte) gen_chargen_sprite::s_gen_cnt#1 != (byte) 8 from [291] (bool~) gen_chargen_sprite::$8 ← (byte) gen_chargen_sprite::s_gen_cnt#1 == (byte) 8
Successful SSA optimization Pass2UnaryNotSimplification
Alias (word) setFAC::prepareMEM1_mem#0 = (word) setFAC::w#5 (word) setFAC::prepareMEM1_mem#1 
Alias (word) getFAC::return#0 = (word) getFAC::w#0 (word~) getFAC::$0 (word) getFAC::return#3 (word) getFAC::return#1 
Alias (word) setMEMtoFAC::prepareMEM1_mem#0 = (word~) setMEMtoFAC::$0 (word) setMEMtoFAC::prepareMEM1_mem#1 
Alias (word) addMEMtoFAC::prepareMEM1_mem#0 = (word~) addMEMtoFAC::$0 (word) addMEMtoFAC::prepareMEM1_mem#1 
Alias (word) divMEMbyFAC::prepareMEM1_mem#0 = (word~) divMEMbyFAC::$0 (word) divMEMbyFAC::prepareMEM1_mem#1 
Alias (word) mulFACbyMEM::prepareMEM1_mem#0 = (word~) mulFACbyMEM::$0 (word) mulFACbyMEM::prepareMEM1_mem#1 
Alias (byte) sin_idx_x#22 = (byte) sin_idx_x#25 
Alias (byte) sin_idx_y#20 = (byte) sin_idx_y#23 
Alias (byte*) progress_cursor#0 = (byte*) progress_cursor#15 
Alias (byte) progress_idx#0 = (byte) progress_idx#16 
Alias (byte) sin_idx_x#13 = (byte) sin_idx_x#17 
Alias (byte) sin_idx_y#13 = (byte) sin_idx_y#18 
Alias (byte*) progress_cursor#1 = (byte*) progress_cursor#37 (byte*) progress_cursor#42 (byte*) progress_cursor#30 (byte*) progress_cursor#16 
Alias (byte) progress_idx#1 = (byte) progress_idx#37 (byte) progress_idx#42 (byte) progress_idx#31 (byte) progress_idx#17 
Alias (byte) sin_idx_x#0 = (byte) sin_idx_x#7 (byte) sin_idx_x#8 (byte) sin_idx_x#1 
Alias (byte) sin_idx_y#0 = (byte) sin_idx_y#7 (byte) sin_idx_y#8 (byte) sin_idx_y#1 
Alias (byte*) progress_cursor#49 = (byte*) progress_cursor#52 
Alias (byte) progress_idx#49 = (byte) progress_idx#52 
Alias (byte*) progress_cursor#31 = (byte*) progress_cursor#43 (byte*) progress_cursor#46 (byte*) progress_cursor#38 
Alias (byte) progress_idx#32 = (byte) progress_idx#43 (byte) progress_idx#46 (byte) progress_idx#38 
Alias (byte*) progress_cursor#17 = (byte*) progress_cursor#2 
Alias (byte) progress_idx#18 = (byte) progress_idx#2 
Alias (byte) progress_idx#19 = (byte) progress_idx#3 
Alias (byte*) progress_cursor#18 = (byte*) progress_cursor#3 
Alias (byte*) progress_cursor#19 = (byte*) progress_cursor#4 
Alias (byte) progress_idx#20 = (byte) progress_idx#4 
Alias (byte) progress_idx#21 = (byte) progress_idx#5 (byte) progress_idx#33 (byte) progress_idx#22 (byte) progress_idx#6 
Alias (byte*) progress_cursor#20 = (byte*) progress_cursor#5 (byte*) progress_cursor#32 (byte*) progress_cursor#21 (byte*) progress_cursor#6 
Alias (byte*) clear_screen::sc#2 = (byte*) clear_screen::sc#3 
Alias (byte*) progress_cursor#22 = (byte*) progress_cursor#8 (byte*) progress_cursor#9 
Alias (byte) progress_idx#23 = (byte) progress_idx#8 (byte) progress_idx#9 
Alias (byte*) progress_cursor#24 = (byte*) progress_cursor#33 
Alias (byte) progress_idx#12 = (byte) progress_idx#26 (byte) progress_idx#25 
Alias (byte*) progress_cursor#11 = (byte*) progress_cursor#25 (byte*) progress_cursor#23 
Alias (byte*) progress_cursor#36 = (byte*) progress_cursor#41 (byte*) progress_cursor#7 
Alias (byte) progress_idx#36 = (byte) progress_idx#41 (byte) progress_idx#7 
Alias (word) anim::x#0 = (word~) anim::$6 
Alias (byte) anim::x_msb#1 = (byte~) anim::$9 (byte) anim::x_msb#7 
Alias (byte) anim::xidx#1 = (byte~) anim::$11 (byte) anim::xidx#4 
Alias (byte) anim::yidx#1 = (byte~) anim::$15 (byte) anim::yidx#5 
Alias (byte) anim::yidx#3 = (byte) anim::yidx#7 
Alias (byte) anim::j2#2 = (byte) anim::j2#6 
Alias (byte) anim::j#5 = (byte) anim::j#6 
Alias (byte) sin_idx_x#23 = (byte) sin_idx_x#24 
Alias (byte) sin_idx_y#24 = (byte) sin_idx_y#25 
Alias (byte) anim::xidx#2 = (byte~) anim::$14 
Alias (byte) anim::j2#1 = (byte~) anim::$19 
Alias (byte) anim::j2#4 = (byte) anim::j2#5 
Alias (byte) anim::j#3 = (byte) anim::j#4 
Alias (byte) anim::xidx#6 = (byte) anim::xidx#7 
Alias (byte) anim::x_msb#5 = (byte) anim::x_msb#6 
Alias (byte) sin_idx_x#18 = (byte) sin_idx_x#19 
Alias (byte) sin_idx_y#21 = (byte) sin_idx_y#22 
Alias (byte) anim::yidx#2 = (byte~) anim::$18 
Alias (byte) anim::x_msb#3 = (byte) anim::x_msb#4 
Alias (byte) sin_idx_x#10 = (byte) sin_idx_x#14 
Alias (byte) sin_idx_y#14 = (byte) sin_idx_y#15 (byte) sin_idx_y#19 
Alias (byte) sin_idx_x#20 = (byte) sin_idx_x#21 
Alias (byte) sin_idx_x#11 = (byte) sin_idx_x#15 (byte) sin_idx_x#5 
Alias (byte) sin_idx_y#11 = (byte) sin_idx_y#16 (byte) sin_idx_y#5 
Alias (byte) place_sprites::spr_x#1 = (byte~) place_sprites::$0 
Alias (byte) place_sprites::col#1 = (byte~) place_sprites::$1 
Alias (byte*) gen_sprites::spr#2 = (byte*) gen_sprites::spr#3 
Alias (byte) gen_sprites::i#2 = (byte) gen_sprites::i#3 
Alias (byte*) gen_sprites::spr#1 = (byte*~) gen_sprites::$1 
Alias (byte*) gen_chargen_sprite::chargen#0 = (byte*~) gen_chargen_sprite::$2 
Alias (byte) gen_chargen_sprite::s_gen#7 = (byte) gen_chargen_sprite::s_gen#8 
Alias (byte) gen_chargen_sprite::s_gen_cnt#6 = (byte) gen_chargen_sprite::s_gen_cnt#7 
Alias (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#9 
Alias (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#8 
Alias (byte) gen_chargen_sprite::x#7 = (byte) gen_chargen_sprite::x#8 
Alias (byte) gen_chargen_sprite::y#10 = (byte) gen_chargen_sprite::y#9 
Alias (byte*) gen_chargen_sprite::chargen#8 = (byte*) gen_chargen_sprite::chargen#9 
Alias (byte) gen_chargen_sprite::s_gen#1 = (byte~) gen_chargen_sprite::$7 (byte) gen_chargen_sprite::s_gen#4 
Alias (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#5 
Alias (byte) gen_chargen_sprite::b#3 = (byte) gen_chargen_sprite::b#4 
Alias (byte) gen_chargen_sprite::c#2 = (byte) gen_chargen_sprite::c#5 
Alias (byte) gen_chargen_sprite::bits#5 = (byte) gen_chargen_sprite::bits#6 
Alias (byte) gen_chargen_sprite::x#4 = (byte) gen_chargen_sprite::x#5 
Alias (byte) gen_chargen_sprite::y#6 = (byte) gen_chargen_sprite::y#7 
Alias (byte*) gen_chargen_sprite::chargen#5 = (byte*) gen_chargen_sprite::chargen#6 
Alias (byte) gen_chargen_sprite::bits#3 = (byte) gen_chargen_sprite::bits#4 
Alias (byte) gen_chargen_sprite::x#2 = (byte) gen_chargen_sprite::x#3 
Alias (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#6 (byte*) gen_chargen_sprite::sprite#8 
Alias (byte) gen_chargen_sprite::y#3 = (byte) gen_chargen_sprite::y#4 (byte) gen_chargen_sprite::y#5 
Alias (byte*) gen_chargen_sprite::chargen#2 = (byte*) gen_chargen_sprite::chargen#3 (byte*) gen_chargen_sprite::chargen#4 
Alias (byte) gen_chargen_sprite::s_gen#6 = (byte) gen_chargen_sprite::s_gen#9 
Alias (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) gen_chargen_sprite::s_gen_cnt#8 
Alias (byte) gen_chargen_sprite::bits#1 = (byte~) gen_chargen_sprite::$11 
Alias (byte*) gen_chargen_sprite::sprite#2 = (byte*~) gen_chargen_sprite::$13 
Alias (word) setFAC::w#0 = (word~) gen_sintab::$0 
Alias (byte) gen_sintab::min#2 = (byte) gen_sintab::min#3 (byte) gen_sintab::min#4 
Alias (byte) gen_sintab::length#10 = (byte) gen_sintab::length#24 (byte) gen_sintab::length#25 (byte) gen_sintab::length#23 (byte) gen_sintab::length#22 (byte) gen_sintab::length#21 (byte) gen_sintab::length#19 (byte) gen_sintab::length#17 (byte) gen_sintab::length#15 (byte) gen_sintab::length#13 (byte) gen_sintab::length#7 (byte) gen_sintab::length#4 
Alias (byte) progress_idx#39 = (byte) progress_idx#64 (byte) progress_idx#65 (byte) progress_idx#63 (byte) progress_idx#61 (byte) progress_idx#59 (byte) progress_idx#57 (byte) progress_idx#55 (byte) progress_idx#53 (byte) progress_idx#50 (byte) progress_idx#47 (byte) progress_idx#44 
Alias (byte*) progress_cursor#39 = (byte*) progress_cursor#64 (byte*) progress_cursor#65 (byte*) progress_cursor#63 (byte*) progress_cursor#61 (byte*) progress_cursor#59 (byte*) progress_cursor#57 (byte*) progress_cursor#55 (byte*) progress_cursor#53 (byte*) progress_cursor#50 (byte*) progress_cursor#47 (byte*) progress_cursor#44 
Alias (byte*) gen_sintab::sintab#13 = (byte*) gen_sintab::sintab#24 (byte*) gen_sintab::sintab#25 (byte*) gen_sintab::sintab#23 (byte*) gen_sintab::sintab#22 (byte*) gen_sintab::sintab#21 (byte*) gen_sintab::sintab#20 (byte*) gen_sintab::sintab#19 (byte*) gen_sintab::sintab#18 (byte*) gen_sintab::sintab#17 (byte*) gen_sintab::sintab#16 (byte*) gen_sintab::sintab#15 
Alias (word) setFAC::w#1 = (word~) gen_sintab::$3 
Alias (byte) gen_sintab::i#10 = (byte) gen_sintab::i#3 (byte) gen_sintab::i#2 (byte) gen_sintab::i#13 (byte) gen_sintab::i#12 (byte) gen_sintab::i#11 (byte) gen_sintab::i#9 (byte) gen_sintab::i#8 (byte) gen_sintab::i#7 (byte) gen_sintab::i#6 (byte) gen_sintab::i#4 (byte) gen_sintab::i#5 
Alias (byte) gen_sintab::length#11 = (byte) gen_sintab::length#2 (byte) gen_sintab::length#8 (byte) gen_sintab::length#6 (byte) gen_sintab::length#3 (byte) gen_sintab::length#20 (byte) gen_sintab::length#18 (byte) gen_sintab::length#16 (byte) gen_sintab::length#14 (byte) gen_sintab::length#12 (byte) gen_sintab::length#9 (byte) gen_sintab::length#5 
Alias (byte*) gen_sintab::sintab#10 = (byte*) gen_sintab::sintab#11 (byte*) gen_sintab::sintab#12 (byte*) gen_sintab::sintab#9 (byte*) gen_sintab::sintab#8 (byte*) gen_sintab::sintab#7 (byte*) gen_sintab::sintab#6 (byte*) gen_sintab::sintab#5 (byte*) gen_sintab::sintab#4 (byte*) gen_sintab::sintab#3 (byte*) gen_sintab::sintab#2 (byte*) gen_sintab::sintab#14 
Alias (byte) progress_idx#14 = (byte) progress_idx#62 (byte) progress_idx#35 (byte) progress_idx#60 (byte) progress_idx#58 (byte) progress_idx#56 (byte) progress_idx#54 (byte) progress_idx#51 (byte) progress_idx#48 (byte) progress_idx#45 (byte) progress_idx#40 (byte) progress_idx#34 (byte) progress_idx#28 
Alias (byte*) progress_cursor#13 = (byte*) progress_cursor#62 (byte*) progress_cursor#35 (byte*) progress_cursor#60 (byte*) progress_cursor#58 (byte*) progress_cursor#56 (byte*) progress_cursor#54 (byte*) progress_cursor#51 (byte*) progress_cursor#48 (byte*) progress_cursor#45 (byte*) progress_cursor#40 (byte*) progress_cursor#34 (byte*) progress_cursor#27 
Alias (word) setFAC::w#3 = (word~) gen_sintab::$14 
Alias (word) setFAC::w#4 = (word~) gen_sintab::$18 
Alias (word) getFAC::return#2 = (word) getFAC::return#4 
Alias (byte) progress_idx#13 = (byte) progress_idx#27 
Alias (byte*) progress_cursor#12 = (byte*) progress_cursor#26 
Alias (byte) sin_idx_x#16 = (byte) sin_idx_x#2 
Alias (byte) sin_idx_y#17 = (byte) sin_idx_y#2 
Alias (byte*) progress_cursor#14 = (byte*) progress_cursor#28 
Alias (byte) progress_idx#15 = (byte) progress_idx#29 
Alias (byte) sin_idx_x#12 = (byte) sin_idx_x#6 
Alias (byte) sin_idx_y#12 = (byte) sin_idx_y#6 
Successful SSA optimization Pass2AliasElimination
Alias (byte) anim::yidx#3 = (byte) anim::yidx#4 
Alias (byte) anim::j2#2 = (byte) anim::j2#4 (byte) anim::j2#3 
Alias (byte) anim::j#2 = (byte) anim::j#3 (byte) anim::j#5 
Alias (byte) anim::x_msb#1 = (byte) anim::x_msb#5 (byte) anim::x_msb#3 
Alias (byte) sin_idx_x#10 = (byte) sin_idx_x#18 (byte) sin_idx_x#23 
Alias (byte) sin_idx_y#10 = (byte) sin_idx_y#21 (byte) sin_idx_y#24 (byte) sin_idx_y#14 
Alias (byte) anim::xidx#5 = (byte) anim::xidx#6 
Alias (byte) sin_idx_x#11 = (byte) sin_idx_x#20 
Alias (byte) gen_chargen_sprite::s_gen#5 = (byte) gen_chargen_sprite::s_gen#7 
Alias (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte) gen_chargen_sprite::s_gen_cnt#6 
Alias (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#7 
Alias (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#7 
Alias (byte) gen_chargen_sprite::x#6 = (byte) gen_chargen_sprite::x#7 
Alias (byte) gen_chargen_sprite::y#10 = (byte) gen_chargen_sprite::y#8 
Alias (byte*) gen_chargen_sprite::chargen#7 = (byte*) gen_chargen_sprite::chargen#8 
Alias (byte) gen_chargen_sprite::b#2 = (byte) gen_chargen_sprite::b#3 
Alias (byte) gen_chargen_sprite::c#2 = (byte) gen_chargen_sprite::c#4 
Alias (byte) gen_chargen_sprite::bits#3 = (byte) gen_chargen_sprite::bits#5 
Alias (byte) gen_chargen_sprite::x#2 = (byte) gen_chargen_sprite::x#4 
Alias (byte) gen_chargen_sprite::y#3 = (byte) gen_chargen_sprite::y#6 
Alias (byte*) gen_chargen_sprite::chargen#2 = (byte*) gen_chargen_sprite::chargen#5 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte*) progress_cursor#29 (byte*) progress_cursor#36
Identical Phi Values (byte) progress_idx#30 (byte) progress_idx#36
Identical Phi Values (byte) sin_idx_x#22 (byte) sin_idx_x#16
Identical Phi Values (byte) sin_idx_y#20 (byte) sin_idx_y#17
Identical Phi Values (byte*) progress_cursor#0 (byte*) progress_cursor#20
Identical Phi Values (byte) progress_idx#0 (byte) progress_idx#21
Identical Phi Values (byte*) progress_cursor#1 (byte*) progress_cursor#0
Identical Phi Values (byte) progress_idx#1 (byte) progress_idx#0
Identical Phi Values (byte) sin_idx_x#0 (byte) sin_idx_x#11
Identical Phi Values (byte) sin_idx_y#0 (byte) sin_idx_y#11
Identical Phi Values (byte*) progress_cursor#49 (byte*) progress_cursor#29
Identical Phi Values (byte) progress_idx#49 (byte) progress_idx#30
Identical Phi Values (byte*) progress_cursor#31 (byte*) progress_cursor#49
Identical Phi Values (byte) progress_idx#32 (byte) progress_idx#49
Identical Phi Values (byte*) progress_cursor#17 (byte*) progress_cursor#22
Identical Phi Values (byte) progress_idx#18 (byte) progress_idx#23
Identical Phi Values (byte) progress_idx#19 (byte) progress_idx#14
Identical Phi Values (byte*) progress_cursor#18 (byte*) progress_cursor#13
Identical Phi Values (byte*) progress_cursor#19 (byte*) progress_cursor#22
Identical Phi Values (byte) progress_idx#20 (byte) progress_idx#23
Identical Phi Values (byte) progress_idx#21 (byte) progress_idx#14
Identical Phi Values (byte*) progress_cursor#20 (byte*) progress_cursor#13
Identical Phi Values (byte) progress_idx#24 (byte) progress_idx#14
Identical Phi Values (byte*) progress_cursor#24 (byte*) progress_cursor#13
Identical Phi Values (byte) sin_idx_x#9 (byte) sin_idx_x#13
Identical Phi Values (byte) sin_idx_y#9 (byte) sin_idx_y#13
Identical Phi Values (byte) sin_idx_x#10 (byte) sin_idx_x#9
Identical Phi Values (byte) sin_idx_y#10 (byte) sin_idx_y#9
Identical Phi Values (byte) gen_chargen_sprite::ch#1 (byte) gen_chargen_sprite::ch#0
Identical Phi Values (byte*) gen_chargen_sprite::sprite#12 (byte*) gen_chargen_sprite::sprite#0
Identical Phi Values (byte) gen_chargen_sprite::c#2 (byte) gen_chargen_sprite::c#3
Identical Phi Values (byte) gen_chargen_sprite::bits#3 (byte) gen_chargen_sprite::bits#2
Identical Phi Values (byte) gen_chargen_sprite::x#2 (byte) gen_chargen_sprite::x#6
Identical Phi Values (byte) gen_chargen_sprite::y#3 (byte) gen_chargen_sprite::y#10
Identical Phi Values (byte*) gen_chargen_sprite::chargen#2 (byte*) gen_chargen_sprite::chargen#7
Identical Phi Values (byte) gen_sintab::length#11 (byte) gen_sintab::length#10
Identical Phi Values (byte*) gen_sintab::sintab#10 (byte*) gen_sintab::sintab#13
Identical Phi Values (byte) progress_idx#13 (byte) progress_idx#12
Identical Phi Values (byte*) progress_cursor#12 (byte*) progress_cursor#11
Identical Phi Values (byte*) progress_cursor#14 (byte*) progress_cursor#1
Identical Phi Values (byte) progress_idx#15 (byte) progress_idx#1
Identical Phi Values (byte) sin_idx_x#12 (byte) sin_idx_x#0
Identical Phi Values (byte) sin_idx_y#12 (byte) sin_idx_y#0
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values (byte) gen_chargen_sprite::y#10 (byte) gen_chargen_sprite::y#2
Identical Phi Values (byte*) gen_chargen_sprite::chargen#7 (byte*) gen_chargen_sprite::chargen#1
Identical Phi Values (byte) progress_idx#39 (byte) progress_idx#23
Identical Phi Values (byte*) progress_cursor#39 (byte*) progress_cursor#22
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values (byte*) gen_chargen_sprite::chargen#1 (byte*) gen_chargen_sprite::chargen#0
Successful SSA optimization Pass2IdenticalPhiElimination
Simple Condition (bool~) main::$1 [53] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2
Simple Condition (bool~) init::$9 [67] if((byte) init::i#1!=rangelast(0,$27)) goto init::@1
Simple Condition (bool~) clear_screen::$0 [93] if((byte*) clear_screen::sc#2<(const byte*) SCREEN+(word) $3e8) goto clear_screen::@2
Simple Condition (bool~) progress_inc::$1 [106] if((byte) progress_idx#10!=(byte) 8) goto progress_inc::@1
Simple Condition (bool~) anim::$13 [132] if((byte) anim::xidx#1<(const byte) sinlen_x) goto anim::@5
Simple Condition (bool~) anim::$17 [136] if((byte) anim::yidx#1<(const byte) sinlen_y) goto anim::@6
Simple Condition (bool~) anim::$20 [142] if((byte) anim::j#1!=rangelast(0,6)) goto anim::@4
Simple Condition (bool~) anim::$2 [147] if((byte) sin_idx_x#3<(const byte) sinlen_x) goto anim::@1
Simple Condition (bool~) anim::$4 [151] if((byte) sin_idx_y#3<(const byte) sinlen_y) goto anim::@2
Simple Condition (bool~) place_sprites::$2 [177] if((byte) place_sprites::j#1!=rangelast(0,6)) goto place_sprites::@1
Simple Condition (bool~) gen_sprites::$2 [188] if((byte) gen_sprites::i#1!=rangelast(0,6)) goto gen_sprites::@1
Simple Condition (bool~) gen_chargen_sprite::$5 [206] if((byte~) gen_chargen_sprite::$3==(byte) 0) goto gen_chargen_sprite::@3
Simple Condition (bool~) gen_chargen_sprite::$9 [215] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte) 8) goto gen_chargen_sprite::@5
Simple Condition (bool~) gen_chargen_sprite::$10 [219] if((byte) gen_chargen_sprite::b#1!=rangelast(0,2)) goto gen_chargen_sprite::@4
Simple Condition (bool~) gen_chargen_sprite::$12 [229] if((byte) gen_chargen_sprite::x#1!=rangelast(0,7)) goto gen_chargen_sprite::@2
Simple Condition (bool~) gen_chargen_sprite::$14 [233] if((byte) gen_chargen_sprite::y#1!=rangelast(0,7)) goto gen_chargen_sprite::@1
Simple Condition (bool~) gen_sintab::$13 [261] if((byte) gen_sintab::i#10<(byte) gen_sintab::length#10) goto gen_sintab::@2
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte) init::i#0 = 0
Constant (const byte*) progress_init::line#0 = SCREEN
Constant (const byte*) gen_sintab::sintab#0 = sintab_x
Constant (const byte) gen_sintab::length#0 = sinlen_x
Constant (const byte) gen_sintab::min#0 = 0
Constant (const byte) gen_sintab::max#0 = $ff
Constant (const byte*) progress_init::line#1 = SCREEN+$28
Constant (const byte*) gen_sintab::sintab#1 = sintab_y
Constant (const byte) gen_sintab::length#1 = sinlen_y
Constant (const byte) gen_sintab::min#1 = $32
Constant (const byte) gen_sintab::max#1 = $d0
Constant (const byte*) clear_screen::sc#0 = SCREEN
Constant (const byte*) progress_cursor#36 = SCREEN
Constant (const byte) progress_idx#36 = 0
Constant (const byte) progress_idx#23 = 0
Constant (const byte) progress_idx#11 = 0
Constant (const byte) sin_idx_x#16 = 0
Constant (const byte) sin_idx_y#17 = 0
Constant (const byte) anim::j2#0 = $c
Constant (const byte) anim::x_msb#0 = 0
Constant (const byte) anim::j#0 = 0
Constant (const byte) sin_idx_x#4 = 0
Constant (const byte) sin_idx_y#4 = 0
Constant (const byte) place_sprites::spr_id#0 = (byte)(word)sprites/$40
Constant (const byte) place_sprites::spr_x#0 = $3c
Constant (const byte) place_sprites::j2#0 = 0
Constant (const byte) place_sprites::col#0 = 5
Constant (const byte) place_sprites::j#0 = 0
Constant (const byte*) gen_sprites::spr#0 = sprites
Constant (const byte) gen_sprites::i#0 = 0
Constant (const byte) gen_chargen_sprite::y#0 = 0
Constant (const byte) gen_chargen_sprite::s_gen#0 = 0
Constant (const byte) gen_chargen_sprite::s_gen_cnt#0 = 0
Constant (const byte) gen_chargen_sprite::x#0 = 0
Constant (const byte) gen_chargen_sprite::c#0 = 0
Constant (const byte) gen_chargen_sprite::b#0 = 0
Constant (const byte) gen_chargen_sprite::c#1 = 1
Constant (const byte) gen_chargen_sprite::s_gen#2 = 0
Constant (const byte) gen_chargen_sprite::s_gen_cnt#2 = 0
Constant (const byte*) setMEMtoFAC::mem#0 = gen_sintab::f_min
Constant (const byte*) setMEMtoFAC::mem#1 = gen_sintab::f_amp
Constant (const word) setFAC::w#2 = 2
Constant (const byte*) divMEMbyFAC::mem#0 = gen_sintab::f_amp
Constant (const byte*) setMEMtoFAC::mem#2 = gen_sintab::f_amp
Constant (const byte*) addMEMtoFAC::mem#0 = gen_sintab::f_min
Constant (const byte*) setMEMtoFAC::mem#3 = gen_sintab::f_min
Constant (const byte) gen_sintab::i#0 = 0
Constant (const byte*) mulFACbyMEM::mem#0 = gen_sintab::f_2pi
Constant (const byte*) setMEMtoFAC::mem#4 = gen_sintab::f_i
Constant (const byte*) divMEMbyFAC::mem#1 = gen_sintab::f_i
Constant (const byte*) mulFACbyMEM::mem#1 = gen_sintab::f_amp
Constant (const byte*) addMEMtoFAC::mem#1 = gen_sintab::f_min
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [56] if(true) goto main::@2
Successful SSA optimization Pass2ConstantIfs
Resolved ranged next value [65] init::i#1 ← ++ init::i#2 to ++
Resolved ranged comparison value [67] if(init::i#1!=rangelast(0,$27)) goto init::@1 to (number) $28
Resolved ranged next value [140] anim::j#1 ← ++ anim::j#2 to ++
Resolved ranged comparison value [142] if(anim::j#1!=rangelast(0,6)) goto anim::@4 to (number) 7
Resolved ranged next value [175] place_sprites::j#1 ← ++ place_sprites::j#2 to ++
Resolved ranged comparison value [177] if(place_sprites::j#1!=rangelast(0,6)) goto place_sprites::@1 to (number) 7
Resolved ranged next value [186] gen_sprites::i#1 ← ++ gen_sprites::i#2 to ++
Resolved ranged comparison value [188] if(gen_sprites::i#1!=rangelast(0,6)) goto gen_sprites::@1 to (number) 7
Resolved ranged next value [217] gen_chargen_sprite::b#1 ← ++ gen_chargen_sprite::b#2 to ++
Resolved ranged comparison value [219] if(gen_chargen_sprite::b#1!=rangelast(0,2)) goto gen_chargen_sprite::@4 to (number) 3
Resolved ranged next value [227] gen_chargen_sprite::x#1 ← ++ gen_chargen_sprite::x#6 to ++
Resolved ranged comparison value [229] if(gen_chargen_sprite::x#1!=rangelast(0,7)) goto gen_chargen_sprite::@2 to (number) 8
Resolved ranged next value [231] gen_chargen_sprite::y#1 ← ++ gen_chargen_sprite::y#2 to ++
Resolved ranged comparison value [233] if(gen_chargen_sprite::y#1!=rangelast(0,7)) goto gen_chargen_sprite::@1 to (number) 8
Simplifying expression containing zero gen_chargen_sprite::sprite#3 in [220] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 0) ← (byte) gen_chargen_sprite::s_gen#1
Successful SSA optimization PassNSimplifyExpressionWithZero
Eliminating unused constant (const byte*) progress_cursor#36
Eliminating unused constant (const byte) progress_idx#36
Successful SSA optimization PassNEliminateUnusedVars
Removing unused block main::@return
Successful SSA optimization Pass2EliminateUnusedBlocks
Adding number conversion cast (unumber) $28 in if((byte) init::i#1!=(number) $28) goto init::@1
Adding number conversion cast (unumber) 7 in if((byte) anim::j#1!=(number) 7) goto anim::@4
Adding number conversion cast (unumber) 7 in if((byte) place_sprites::j#1!=(number) 7) goto place_sprites::@1
Adding number conversion cast (unumber) 7 in if((byte) gen_sprites::i#1!=(number) 7) goto gen_sprites::@1
Adding number conversion cast (unumber) 3 in if((byte) gen_chargen_sprite::b#1!=(number) 3) goto gen_chargen_sprite::@4
Adding number conversion cast (unumber) 8 in if((byte) gen_chargen_sprite::x#1!=(number) 8) goto gen_chargen_sprite::@2
Adding number conversion cast (unumber) 8 in if((byte) gen_chargen_sprite::y#1!=(number) 8) goto gen_chargen_sprite::@1
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast $28
Simplifying constant integer cast 7
Simplifying constant integer cast 7
Simplifying constant integer cast 7
Simplifying constant integer cast 3
Simplifying constant integer cast 8
Simplifying constant integer cast 8
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 8
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inlining Noop Cast [13] (word) setMEMtoFAC::prepareMEM1_mem#0 ← (word)(byte*) setMEMtoFAC::mem#5 keeping setMEMtoFAC::mem#5
Inlining Noop Cast [21] (word) addMEMtoFAC::prepareMEM1_mem#0 ← (word)(byte*) addMEMtoFAC::mem#2 keeping addMEMtoFAC::mem#2
Inlining Noop Cast [31] (word) divMEMbyFAC::prepareMEM1_mem#0 ← (word)(byte*) divMEMbyFAC::mem#2 keeping divMEMbyFAC::mem#2
Inlining Noop Cast [39] (word) mulFACbyMEM::prepareMEM1_mem#0 ← (word)(byte*) mulFACbyMEM::mem#2 keeping mulFACbyMEM::mem#2
Successful SSA optimization Pass2NopCastInlining
Rewriting multiplication to use shift [87] (byte~) anim::$7 ← (byte) anim::x_msb#2 * (byte) 2
Rewriting multiplication to use shift [138] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 * (byte) 8
Rewriting multiplication to use shift [149] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 * (byte) 2
Rewriting multiplication to use shift [160] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 * (byte) 2
Successful SSA optimization Pass2MultiplyToShiftRewriting
Inlining constant with var siblings (const word) setFAC::w#2
Inlining constant with var siblings (const byte*) setMEMtoFAC::mem#0
Inlining constant with var siblings (const byte*) setMEMtoFAC::mem#1
Inlining constant with var siblings (const byte*) setMEMtoFAC::mem#2
Inlining constant with var siblings (const byte*) setMEMtoFAC::mem#3
Inlining constant with var siblings (const byte*) setMEMtoFAC::mem#4
Inlining constant with var siblings (const byte*) addMEMtoFAC::mem#0
Inlining constant with var siblings (const byte*) addMEMtoFAC::mem#1
Inlining constant with var siblings (const byte*) divMEMbyFAC::mem#0
Inlining constant with var siblings (const byte*) divMEMbyFAC::mem#1
Inlining constant with var siblings (const byte*) mulFACbyMEM::mem#0
Inlining constant with var siblings (const byte*) mulFACbyMEM::mem#1
Inlining constant with var siblings (const byte) init::i#0
Inlining constant with var siblings (const byte*) clear_screen::sc#0
Inlining constant with var siblings (const byte*) progress_init::line#0
Inlining constant with var siblings (const byte*) progress_init::line#1
Inlining constant with var siblings (const byte) anim::j2#0
Inlining constant with var siblings (const byte) anim::x_msb#0
Inlining constant with var siblings (const byte) anim::j#0
Inlining constant with var siblings (const byte) place_sprites::spr_id#0
Inlining constant with var siblings (const byte) place_sprites::spr_x#0
Inlining constant with var siblings (const byte) place_sprites::j2#0
Inlining constant with var siblings (const byte) place_sprites::col#0
Inlining constant with var siblings (const byte) place_sprites::j#0
Inlining constant with var siblings (const byte*) gen_sprites::spr#0
Inlining constant with var siblings (const byte) gen_sprites::i#0
Inlining constant with var siblings (const byte) gen_chargen_sprite::y#0
Inlining constant with var siblings (const byte) gen_chargen_sprite::s_gen#0
Inlining constant with var siblings (const byte) gen_chargen_sprite::s_gen_cnt#0
Inlining constant with var siblings (const byte) gen_chargen_sprite::x#0
Inlining constant with var siblings (const byte) gen_chargen_sprite::c#0
Inlining constant with var siblings (const byte) gen_chargen_sprite::b#0
Inlining constant with var siblings (const byte) gen_chargen_sprite::c#1
Inlining constant with var siblings (const byte) gen_chargen_sprite::s_gen#2
Inlining constant with var siblings (const byte) gen_chargen_sprite::s_gen_cnt#2
Inlining constant with var siblings (const byte*) gen_sintab::sintab#0
Inlining constant with var siblings (const byte) gen_sintab::length#0
Inlining constant with var siblings (const byte) gen_sintab::min#0
Inlining constant with var siblings (const byte) gen_sintab::max#0
Inlining constant with var siblings (const byte*) gen_sintab::sintab#1
Inlining constant with var siblings (const byte) gen_sintab::length#1
Inlining constant with var siblings (const byte) gen_sintab::min#1
Inlining constant with var siblings (const byte) gen_sintab::max#1
Inlining constant with var siblings (const byte) gen_sintab::i#0
Inlining constant with var siblings (const byte) progress_idx#23
Inlining constant with var siblings (const byte) progress_idx#11
Inlining constant with var siblings (const byte) sin_idx_x#16
Inlining constant with var siblings (const byte) sin_idx_y#17
Inlining constant with var siblings (const byte) sin_idx_x#4
Inlining constant with var siblings (const byte) sin_idx_y#4
Constant inlined setFAC::w#2 = (byte) 2
Constant inlined place_sprites::j#0 = (byte) 0
Constant inlined gen_sintab::length#1 = (const byte) sinlen_y
Constant inlined progress_idx#23 = (byte) 0
Constant inlined gen_chargen_sprite::c#0 = (byte) 0
Constant inlined place_sprites::spr_id#0 = (byte)(word)(const byte*) sprites/(byte) $40
Constant inlined divMEMbyFAC::mem#1 = (const byte*) gen_sintab::f_i
Constant inlined divMEMbyFAC::mem#0 = (const byte*) gen_sintab::f_amp
Constant inlined setMEMtoFAC::mem#3 = (const byte*) gen_sintab::f_min
Constant inlined setMEMtoFAC::mem#2 = (const byte*) gen_sintab::f_amp
Constant inlined setMEMtoFAC::mem#1 = (const byte*) gen_sintab::f_amp
Constant inlined setMEMtoFAC::mem#0 = (const byte*) gen_sintab::f_min
Constant inlined gen_chargen_sprite::c#1 = (byte) 1
Constant inlined setMEMtoFAC::mem#4 = (const byte*) gen_sintab::f_i
Constant inlined addMEMtoFAC::mem#0 = (const byte*) gen_sintab::f_min
Constant inlined addMEMtoFAC::mem#1 = (const byte*) gen_sintab::f_min
Constant inlined gen_sprites::spr#0 = (const byte*) sprites
Constant inlined clear_screen::sc#0 = (const byte*) SCREEN
Constant inlined sin_idx_y#17 = (byte) 0
Constant inlined gen_chargen_sprite::x#0 = (byte) 0
Constant inlined gen_sintab::sintab#0 = (const byte*) sintab_x
Constant inlined place_sprites::j2#0 = (byte) 0
Constant inlined gen_sintab::sintab#1 = (const byte*) sintab_y
Constant inlined sin_idx_x#4 = (byte) 0
Constant inlined gen_sintab::length#0 = (const byte) sinlen_x
Constant inlined gen_sintab::max#0 = (byte) $ff
Constant inlined gen_sintab::max#1 = (byte) $d0
Constant inlined mulFACbyMEM::mem#0 = (const byte*) gen_sintab::f_2pi
Constant inlined mulFACbyMEM::mem#1 = (const byte*) gen_sintab::f_amp
Constant inlined gen_sintab::min#1 = (byte) $32
Constant inlined init::i#0 = (byte) 0
Constant inlined gen_sintab::min#0 = (byte) 0
Constant inlined sin_idx_x#16 = (byte) 0
Constant inlined progress_init::line#0 = (const byte*) SCREEN
Constant inlined gen_chargen_sprite::s_gen_cnt#2 = (byte) 0
Constant inlined gen_chargen_sprite::s_gen_cnt#0 = (byte) 0
Constant inlined progress_init::line#1 = (const byte*) SCREEN+(byte) $28
Constant inlined anim::j#0 = (byte) 0
Constant inlined gen_chargen_sprite::b#0 = (byte) 0
Constant inlined gen_sintab::i#0 = (byte) 0
Constant inlined gen_chargen_sprite::s_gen#2 = (byte) 0
Constant inlined place_sprites::spr_x#0 = (byte) $3c
Constant inlined gen_chargen_sprite::s_gen#0 = (byte) 0
Constant inlined anim::x_msb#0 = (byte) 0
Constant inlined gen_sprites::i#0 = (byte) 0
Constant inlined place_sprites::col#0 = (byte) 5
Constant inlined gen_chargen_sprite::y#0 = (byte) 0
Constant inlined sin_idx_y#4 = (byte) 0
Constant inlined progress_idx#11 = (byte) 0
Constant inlined anim::j2#0 = (byte) $c
Successful SSA optimization Pass2ConstantInlining
Consolidated array index constant in assignment *(COLS+$28 + init::$8)
Consolidated array index constant in *(progress_inc::progress_chars+8)
Successful SSA optimization Pass2ConstantAdditionElimination
Alias (byte) init::i#2 = (byte~) init::$8 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte*) addMEMtoFAC::mem#2 (const byte*) gen_sintab::f_min
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [20] (byte~) addMEMtoFAC::prepareMEM1_$0 ← < (word)(const byte*) gen_sintab::f_min
Constant right-side identified [22] (byte~) addMEMtoFAC::prepareMEM1_$1 ← > (word)(const byte*) gen_sintab::f_min
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) addMEMtoFAC::prepareMEM1_$0 = <(word)gen_sintab::f_min
Constant (const byte) addMEMtoFAC::prepareMEM1_$1 = >(word)gen_sintab::f_min
Successful SSA optimization Pass2ConstantIdentification
Constant inlined addMEMtoFAC::prepareMEM1_$0 = <(word)(const byte*) gen_sintab::f_min
Constant inlined addMEMtoFAC::prepareMEM1_$1 = >(word)(const byte*) gen_sintab::f_min
Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@7(between main::@2 and main::@2)
Added new block during phi lifting init::@11(between init::@1 and init::@1)
Added new block during phi lifting progress_inc::@3(between progress_inc and progress_inc::@1)
Added new block during phi lifting anim::@11(between anim::@6 and anim::@4)
Added new block during phi lifting anim::@12(between anim::@4 and anim::@5)
Added new block during phi lifting anim::@13(between anim::@5 and anim::@6)
Added new block during phi lifting anim::@14(between anim::@9 and anim::@1)
Added new block during phi lifting anim::@15(between anim::@1 and anim::@2)
Added new block during phi lifting place_sprites::@3(between place_sprites::@1 and place_sprites::@1)
Added new block during phi lifting gen_sprites::@4(between gen_sprites::@3 and gen_sprites::@1)
Added new block during phi lifting gen_chargen_sprite::@11(between gen_chargen_sprite::@8 and gen_chargen_sprite::@1)
Added new block during phi lifting gen_chargen_sprite::@12(between gen_chargen_sprite::@7 and gen_chargen_sprite::@2)
Added new block during phi lifting gen_chargen_sprite::@13(between gen_chargen_sprite::@5 and gen_chargen_sprite::@4)
Added new block during phi lifting gen_chargen_sprite::@14(between gen_chargen_sprite::@4 and gen_chargen_sprite::@5)
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @71
Adding NOP phi() at start of @73
Adding NOP phi() at start of @78
Adding NOP phi() at start of @79
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@5
Adding NOP phi() at start of main::@3
Adding NOP phi() at start of anim::@10
Adding NOP phi() at start of anim::@3
Adding NOP phi() at start of init
Adding NOP phi() at start of init::@3
Adding NOP phi() at start of init::@2
Adding NOP phi() at start of init::@4
Adding NOP phi() at start of init::@5
Adding NOP phi() at start of init::@6
Adding NOP phi() at start of init::@7
Adding NOP phi() at start of init::@8
Adding NOP phi() at start of init::@9
Adding NOP phi() at start of init::@10
Adding NOP phi() at start of clear_screen
Adding NOP phi() at start of gen_sintab::@7
Adding NOP phi() at start of gen_sintab::@9
Adding NOP phi() at start of gen_sintab::@10
Adding NOP phi() at start of gen_sintab::@11
Adding NOP phi() at start of gen_sintab::@12
Adding NOP phi() at start of gen_sintab::@13
Adding NOP phi() at start of gen_sintab::@14
Adding NOP phi() at start of gen_sintab::@15
Adding NOP phi() at start of gen_sintab::@16
Adding NOP phi() at start of gen_sintab::@18
Adding NOP phi() at start of gen_sintab::@19
Adding NOP phi() at start of gen_sintab::@21
Adding NOP phi() at start of gen_sintab::@22
Adding NOP phi() at start of gen_sintab::@23
Adding NOP phi() at start of gen_sintab::@24
Adding NOP phi() at start of gen_sintab::@25
Adding NOP phi() at start of addMEMtoFAC
Adding NOP phi() at start of gen_sprites
Adding NOP phi() at start of gen_chargen_sprite::@10
CALL GRAPH
Calls in [] to main:4 
Calls in [main] to init:8 anim:13 
Calls in [init] to clear_screen:65 place_sprites:73 gen_sprites:75 progress_init:77 gen_sintab:79 progress_init:81 gen_sintab:83 clear_screen:85 
Calls in [gen_sintab] to setFAC:99 setARGtoFAC:101 setFAC:104 setMEMtoFAC:106 subFACfromARG:108 setMEMtoFAC:110 setFAC:112 divMEMbyFAC:114 setMEMtoFAC:116 addMEMtoFAC:118 setMEMtoFAC:120 setFAC:127 mulFACbyMEM:129 setMEMtoFAC:131 setFAC:134 divMEMbyFAC:136 sinFAC:138 mulFACbyMEM:140 addMEMtoFAC:142 getFAC:144 progress_inc:149 
Calls in [gen_sprites] to gen_chargen_sprite:213 

Created 49 initial phi equivalence classes
Coalesced [14] sin_idx_x#27 ← sin_idx_x#11
Coalesced [15] sin_idx_y#27 ← sin_idx_y#11
Coalesced (already) [16] sin_idx_x#26 ← sin_idx_x#13
Coalesced (already) [17] sin_idx_y#26 ← sin_idx_y#13
Coalesced [21] anim::xidx#8 ← anim::xidx#0
Coalesced [22] anim::yidx#8 ← anim::yidx#0
Coalesced [34] anim::xidx#11 ← anim::xidx#2
Coalesced [39] anim::yidx#11 ← anim::yidx#2
Coalesced [55] sin_idx_y#28 ← sin_idx_y#3
Coalesced [56] sin_idx_x#28 ← sin_idx_x#3
Coalesced [57] anim::xidx#9 ← anim::xidx#5
Coalesced [58] anim::x_msb#8 ← anim::x_msb#1
Coalesced [59] anim::j2#7 ← anim::j2#1
Coalesced [60] anim::yidx#9 ← anim::yidx#6
Coalesced [61] anim::j#7 ← anim::j#1
Coalesced [62] anim::yidx#10 ← anim::yidx#1
Coalesced [63] anim::xidx#10 ← anim::xidx#1
Coalesced [88] init::i#3 ← init::i#1
Coalesced [95] clear_screen::sc#4 ← clear_screen::sc#1
Coalesced [98] setFAC::prepareMEM1_mem#2 ← setFAC::w#0
Coalesced [103] setFAC::prepareMEM1_mem#5 ← setFAC::w#1
Coalesced [121] progress_cursor#68 ← progress_cursor#22
Coalesced [126] setFAC::prepareMEM1_mem#3 ← setFAC::w#3
Coalesced [133] setFAC::prepareMEM1_mem#4 ← setFAC::w#4
Coalesced [151] gen_sintab::i#14 ← gen_sintab::i#1
Coalesced [152] progress_idx#67 ← progress_idx#12
Coalesced [153] progress_cursor#69 ← progress_cursor#11
Coalesced [158] progress_cursor#67 ← progress_cursor#10
Coalesced [162] progress_idx#66 ← progress_idx#10
Coalesced (already) [163] progress_cursor#66 ← progress_cursor#13
Coalesced [207] progress_cursor#22 ← progress_init::line#2
Coalesced [218] gen_sprites::i#4 ← gen_sprites::i#1
Coalesced [219] gen_sprites::spr#4 ← gen_sprites::spr#1
Coalesced [225] gen_chargen_sprite::sprite#13 ← gen_chargen_sprite::sprite#0
Coalesced [228] gen_chargen_sprite::bits#9 ← gen_chargen_sprite::bits#0
Coalesced [229] gen_chargen_sprite::sprite#15 ← gen_chargen_sprite::sprite#11
Coalesced [235] gen_chargen_sprite::s_gen#11 ← gen_chargen_sprite::s_gen#5
Coalesced [236] gen_chargen_sprite::s_gen_cnt#10 ← gen_chargen_sprite::s_gen_cnt#4
Coalesced [237] gen_chargen_sprite::sprite#17 ← gen_chargen_sprite::sprite#10
Coalesced [247] gen_chargen_sprite::sprite#20 ← gen_chargen_sprite::sprite#1
Coalesced [260] gen_chargen_sprite::y#11 ← gen_chargen_sprite::y#1
Coalesced [261] gen_chargen_sprite::sprite#14 ← gen_chargen_sprite::sprite#2
Coalesced [262] gen_chargen_sprite::bits#10 ← gen_chargen_sprite::bits#1
Coalesced [263] gen_chargen_sprite::s_gen#10 ← gen_chargen_sprite::s_gen#6
Coalesced [264] gen_chargen_sprite::s_gen_cnt#9 ← gen_chargen_sprite::s_gen_cnt#5
Coalesced [265] gen_chargen_sprite::sprite#16 ← gen_chargen_sprite::sprite#4
Coalesced [266] gen_chargen_sprite::x#9 ← gen_chargen_sprite::x#1
Coalesced (already) [267] gen_chargen_sprite::s_gen#12 ← gen_chargen_sprite::s_gen#6
Coalesced (already) [268] gen_chargen_sprite::s_gen_cnt#11 ← gen_chargen_sprite::s_gen_cnt#5
Coalesced [269] gen_chargen_sprite::b#5 ← gen_chargen_sprite::b#1
Coalesced (already) [270] gen_chargen_sprite::sprite#18 ← gen_chargen_sprite::sprite#4
Coalesced [271] gen_chargen_sprite::s_gen#13 ← gen_chargen_sprite::s_gen#1
Coalesced [272] gen_chargen_sprite::s_gen_cnt#12 ← gen_chargen_sprite::s_gen_cnt#1
Coalesced (already) [273] gen_chargen_sprite::sprite#19 ← gen_chargen_sprite::sprite#3
Coalesced [290] place_sprites::spr_id#3 ← place_sprites::spr_id#1
Coalesced [291] place_sprites::j#3 ← place_sprites::j#1
Coalesced [292] place_sprites::spr_x#3 ← place_sprites::spr_x#1
Coalesced [293] place_sprites::j2#4 ← place_sprites::j2#2
Coalesced [294] place_sprites::col#3 ← place_sprites::col#1
Coalesced down to 35 phi equivalence classes
Culled Empty Block (label) @71
Culled Empty Block (label) @73
Culled Empty Block (label) @79
Culled Empty Block (label) main::@5
Culled Empty Block (label) main::@6
Culled Empty Block (label) main::@7
Culled Empty Block (label) anim::@10
Culled Empty Block (label) anim::@3
Culled Empty Block (label) anim::@11
Culled Empty Block (label) anim::@13
Culled Empty Block (label) anim::@12
Culled Empty Block (label) init::@3
Culled Empty Block (label) init::@10
Culled Empty Block (label) init::@11
Culled Empty Block (label) gen_sintab::@17
Culled Empty Block (label) progress_inc::@3
Culled Empty Block (label) gen_sprites::@4
Culled Empty Block (label) gen_chargen_sprite::@11
Culled Empty Block (label) gen_chargen_sprite::@12
Culled Empty Block (label) gen_chargen_sprite::@13
Culled Empty Block (label) gen_chargen_sprite::@14
Culled Empty Block (label) place_sprites::@3
Renumbering block @78 to @1
Renumbering block main::@2 to main::@1
Renumbering block main::@3 to main::@2
Renumbering block init::@4 to init::@3
Renumbering block init::@5 to init::@4
Renumbering block init::@6 to init::@5
Renumbering block init::@7 to init::@6
Renumbering block init::@8 to init::@7
Renumbering block init::@9 to init::@8
Renumbering block anim::@4 to anim::@3
Renumbering block anim::@5 to anim::@4
Renumbering block anim::@6 to anim::@5
Renumbering block anim::@7 to anim::@6
Renumbering block anim::@8 to anim::@7
Renumbering block anim::@9 to anim::@8
Renumbering block anim::@14 to anim::@9
Renumbering block anim::@15 to anim::@10
Renumbering block gen_sprites::@3 to gen_sprites::@2
Renumbering block gen_sintab::@7 to gen_sintab::@3
Renumbering block gen_sintab::@8 to gen_sintab::@4
Renumbering block gen_sintab::@9 to gen_sintab::@5
Renumbering block gen_sintab::@10 to gen_sintab::@6
Renumbering block gen_sintab::@11 to gen_sintab::@7
Renumbering block gen_sintab::@12 to gen_sintab::@8
Renumbering block gen_sintab::@13 to gen_sintab::@9
Renumbering block gen_sintab::@14 to gen_sintab::@10
Renumbering block gen_sintab::@15 to gen_sintab::@11
Renumbering block gen_sintab::@16 to gen_sintab::@12
Renumbering block gen_sintab::@18 to gen_sintab::@13
Renumbering block gen_sintab::@19 to gen_sintab::@14
Renumbering block gen_sintab::@20 to gen_sintab::@15
Renumbering block gen_sintab::@21 to gen_sintab::@16
Renumbering block gen_sintab::@22 to gen_sintab::@17
Renumbering block gen_sintab::@23 to gen_sintab::@18
Renumbering block gen_sintab::@24 to gen_sintab::@19
Renumbering block gen_sintab::@25 to gen_sintab::@20
Renumbering block gen_sintab::@26 to gen_sintab::@21
Renumbering block gen_sintab::@27 to gen_sintab::@22
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of anim::@9
Adding NOP phi() at start of anim::@10
Adding NOP phi() at start of init
Adding NOP phi() at start of init::@2
Adding NOP phi() at start of init::@3
Adding NOP phi() at start of init::@4
Adding NOP phi() at start of init::@5
Adding NOP phi() at start of init::@6
Adding NOP phi() at start of init::@7
Adding NOP phi() at start of init::@8
Adding NOP phi() at start of clear_screen
Adding NOP phi() at start of gen_sintab::@3
Adding NOP phi() at start of gen_sintab::@5
Adding NOP phi() at start of gen_sintab::@6
Adding NOP phi() at start of gen_sintab::@7
Adding NOP phi() at start of gen_sintab::@8
Adding NOP phi() at start of gen_sintab::@9
Adding NOP phi() at start of gen_sintab::@10
Adding NOP phi() at start of gen_sintab::@11
Adding NOP phi() at start of gen_sintab::@12
Adding NOP phi() at start of gen_sintab::@13
Adding NOP phi() at start of gen_sintab::@14
Adding NOP phi() at start of gen_sintab::@16
Adding NOP phi() at start of gen_sintab::@17
Adding NOP phi() at start of gen_sintab::@18
Adding NOP phi() at start of gen_sintab::@19
Adding NOP phi() at start of gen_sintab::@20
Adding NOP phi() at start of addMEMtoFAC
Adding NOP phi() at start of gen_sprites
Adding NOP phi() at start of gen_chargen_sprite::@10

FINAL CONTROL FLOW GRAPH
@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] phi()
  [2] call main 
  to:@end
@end: scope:[]  from @1
  [3] phi()

(void()) main()
main: scope:[main]  from @1
  [4] phi()
  [5] call init 
  to:main::@1
main::@1: scope:[main]  from main main::@1 main::@2
  [6] (byte) sin_idx_y#13 ← phi( main::@1/(byte) sin_idx_y#13 main/(byte) 0 main::@2/(byte) sin_idx_y#11 )
  [6] (byte) sin_idx_x#13 ← phi( main::@1/(byte) sin_idx_x#13 main/(byte) 0 main::@2/(byte) sin_idx_x#11 )
  [7] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1
  to:main::@2
main::@2: scope:[main]  from main::@1
  [8] phi()
  [9] call anim 
  to:main::@1

(void()) anim()
anim: scope:[anim]  from main::@2
  [10] *((const byte*) BORDERCOL) ← ++ *((const byte*) BORDERCOL)
  [11] (byte) anim::xidx#0 ← (byte) sin_idx_x#13
  [12] (byte) anim::yidx#0 ← (byte) sin_idx_y#13
  to:anim::@3
anim::@3: scope:[anim]  from anim anim::@5
  [13] (byte) anim::j#2 ← phi( anim/(byte) 0 anim::@5/(byte) anim::j#1 )
  [13] (byte) anim::yidx#3 ← phi( anim/(byte) anim::yidx#0 anim::@5/(byte) anim::yidx#6 )
  [13] (byte) anim::j2#2 ← phi( anim/(byte) $c anim::@5/(byte) anim::j2#1 )
  [13] (byte) anim::x_msb#2 ← phi( anim/(byte) 0 anim::@5/(byte) anim::x_msb#1 )
  [13] (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@5/(byte) anim::xidx#5 )
  [14] (word) anim::x#0 ← (word) $1e + *((const byte*) sintab_x + (byte) anim::xidx#3)
  [15] (byte~) anim::$7 ← (byte) anim::x_msb#2 << (byte) 1
  [16] (byte~) anim::$8 ← > (word) anim::x#0
  [17] (byte) anim::x_msb#1 ← (byte~) anim::$7 | (byte~) anim::$8
  [18] (byte~) anim::$10 ← < (word) anim::x#0
  [19] *((const byte*) SPRITES_XPOS + (byte) anim::j2#2) ← (byte~) anim::$10
  [20] *((const byte*) SPRITES_YPOS + (byte) anim::j2#2) ← *((const byte*) sintab_y + (byte) anim::yidx#3)
  [21] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte) $a
  [22] if((byte) anim::xidx#1<(const byte) sinlen_x) goto anim::@4
  to:anim::@6
anim::@6: scope:[anim]  from anim::@3
  [23] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x
  to:anim::@4
anim::@4: scope:[anim]  from anim::@3 anim::@6
  [24] (byte) anim::xidx#5 ← phi( anim::@3/(byte) anim::xidx#1 anim::@6/(byte) anim::xidx#2 )
  [25] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte) 8
  [26] if((byte) anim::yidx#1<(const byte) sinlen_y) goto anim::@5
  to:anim::@7
anim::@7: scope:[anim]  from anim::@4
  [27] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y
  to:anim::@5
anim::@5: scope:[anim]  from anim::@4 anim::@7
  [28] (byte) anim::yidx#6 ← phi( anim::@4/(byte) anim::yidx#1 anim::@7/(byte) anim::yidx#2 )
  [29] (byte) anim::j2#1 ← (byte) anim::j2#2 - (byte) 2
  [30] (byte) anim::j#1 ← ++ (byte) anim::j#2
  [31] if((byte) anim::j#1!=(byte) 7) goto anim::@3
  to:anim::@8
anim::@8: scope:[anim]  from anim::@5
  [32] *((const byte*) SPRITES_XMSB) ← (byte) anim::x_msb#1
  [33] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13
  [34] if((byte) sin_idx_x#3<(const byte) sinlen_x) goto anim::@9
  to:anim::@1
anim::@9: scope:[anim]  from anim::@8
  [35] phi()
  to:anim::@1
anim::@1: scope:[anim]  from anim::@8 anim::@9
  [36] (byte) sin_idx_x#11 ← phi( anim::@8/(byte) 0 anim::@9/(byte) sin_idx_x#3 )
  [37] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13
  [38] if((byte) sin_idx_y#3<(const byte) sinlen_y) goto anim::@10
  to:anim::@2
anim::@10: scope:[anim]  from anim::@1
  [39] phi()
  to:anim::@2
anim::@2: scope:[anim]  from anim::@1 anim::@10
  [40] (byte) sin_idx_y#11 ← phi( anim::@10/(byte) sin_idx_y#3 anim::@1/(byte) 0 )
  [41] *((const byte*) BORDERCOL) ← -- *((const byte*) BORDERCOL)
  to:anim::@return
anim::@return: scope:[anim]  from anim::@2
  [42] return 
  to:@return

(void()) init()
init: scope:[init]  from main
  [43] phi()
  [44] call clear_screen 
  to:init::@1
init::@1: scope:[init]  from init init::@1
  [45] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init/(byte) 0 )
  [46] *((const byte*) COLS + (byte) init::i#2) ← (byte) 0
  [47] *((const byte*) COLS+(byte) $28 + (byte) init::i#2) ← (byte) $b
  [48] (byte) init::i#1 ← ++ (byte) init::i#2
  [49] if((byte) init::i#1!=(byte) $28) goto init::@1
  to:init::@2
init::@2: scope:[init]  from init::@1
  [50] phi()
  [51] call place_sprites 
  to:init::@3
init::@3: scope:[init]  from init::@2
  [52] phi()
  [53] call gen_sprites 
  to:init::@4
init::@4: scope:[init]  from init::@3
  [54] phi()
  [55] call progress_init 
  to:init::@5
init::@5: scope:[init]  from init::@4
  [56] phi()
  [57] call gen_sintab 
  to:init::@6
init::@6: scope:[init]  from init::@5
  [58] phi()
  [59] call progress_init 
  to:init::@7
init::@7: scope:[init]  from init::@6
  [60] phi()
  [61] call gen_sintab 
  to:init::@8
init::@8: scope:[init]  from init::@7
  [62] phi()
  [63] call clear_screen 
  to:init::@return
init::@return: scope:[init]  from init::@8
  [64] return 
  to:@return

(void()) clear_screen()
clear_screen: scope:[clear_screen]  from init init::@8
  [65] phi()
  to:clear_screen::@1
clear_screen::@1: scope:[clear_screen]  from clear_screen clear_screen::@2
  [66] (byte*) clear_screen::sc#2 ← phi( clear_screen/(const byte*) SCREEN clear_screen::@2/(byte*) clear_screen::sc#1 )
  [67] if((byte*) clear_screen::sc#2<(const byte*) SCREEN+(word) $3e8) goto clear_screen::@2
  to:clear_screen::@return
clear_screen::@return: scope:[clear_screen]  from clear_screen::@1
  [68] return 
  to:@return
clear_screen::@2: scope:[clear_screen]  from clear_screen::@1
  [69] *((byte*) clear_screen::sc#2) ← (byte) ' '
  [70] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2
  to:clear_screen::@1

(void()) gen_sintab((byte*) gen_sintab::sintab , (byte) gen_sintab::length , (byte) gen_sintab::min , (byte) gen_sintab::max)
gen_sintab: scope:[gen_sintab]  from init::@5 init::@7
  [71] (byte*) gen_sintab::sintab#13 ← phi( init::@5/(const byte*) sintab_x init::@7/(const byte*) sintab_y )
  [71] (byte) gen_sintab::length#10 ← phi( init::@5/(const byte) sinlen_x init::@7/(const byte) sinlen_y )
  [71] (byte) gen_sintab::min#2 ← phi( init::@5/(byte) 0 init::@7/(byte) $32 )
  [71] (byte) gen_sintab::max#2 ← phi( init::@5/(byte) $ff init::@7/(byte) $d0 )
  [72] (word) setFAC::w#0 ← (word)(byte) gen_sintab::max#2
  [73] call setFAC 
  to:gen_sintab::@3
gen_sintab::@3: scope:[gen_sintab]  from gen_sintab
  [74] phi()
  [75] call setARGtoFAC 
  to:gen_sintab::@4
gen_sintab::@4: scope:[gen_sintab]  from gen_sintab::@3
  [76] (word) setFAC::w#1 ← (word)(byte) gen_sintab::min#2
  [77] call setFAC 
  to:gen_sintab::@5
gen_sintab::@5: scope:[gen_sintab]  from gen_sintab::@4
  [78] phi()
  [79] call setMEMtoFAC 
  to:gen_sintab::@6
gen_sintab::@6: scope:[gen_sintab]  from gen_sintab::@5
  [80] phi()
  [81] call subFACfromARG 
  to:gen_sintab::@7
gen_sintab::@7: scope:[gen_sintab]  from gen_sintab::@6
  [82] phi()
  [83] call setMEMtoFAC 
  to:gen_sintab::@8
gen_sintab::@8: scope:[gen_sintab]  from gen_sintab::@7
  [84] phi()
  [85] call setFAC 
  to:gen_sintab::@9
gen_sintab::@9: scope:[gen_sintab]  from gen_sintab::@8
  [86] phi()
  [87] call divMEMbyFAC 
  to:gen_sintab::@10
gen_sintab::@10: scope:[gen_sintab]  from gen_sintab::@9
  [88] phi()
  [89] call setMEMtoFAC 
  to:gen_sintab::@11
gen_sintab::@11: scope:[gen_sintab]  from gen_sintab::@10
  [90] phi()
  [91] call addMEMtoFAC 
  to:gen_sintab::@12
gen_sintab::@12: scope:[gen_sintab]  from gen_sintab::@11
  [92] phi()
  [93] call setMEMtoFAC 
  to:gen_sintab::@1
gen_sintab::@1: scope:[gen_sintab]  from gen_sintab::@12 gen_sintab::@22
  [94] (byte*) progress_cursor#13 ← phi( gen_sintab::@12/(byte*) progress_init::line#2 gen_sintab::@22/(byte*) progress_cursor#11 )
  [94] (byte) progress_idx#14 ← phi( gen_sintab::@12/(byte) 0 gen_sintab::@22/(byte) progress_idx#12 )
  [94] (byte) gen_sintab::i#10 ← phi( gen_sintab::@12/(byte) 0 gen_sintab::@22/(byte) gen_sintab::i#1 )
  [95] if((byte) gen_sintab::i#10<(byte) gen_sintab::length#10) goto gen_sintab::@2
  to:gen_sintab::@return
gen_sintab::@return: scope:[gen_sintab]  from gen_sintab::@1
  [96] return 
  to:@return
gen_sintab::@2: scope:[gen_sintab]  from gen_sintab::@1
  [97] (word) setFAC::w#3 ← (word)(byte) gen_sintab::i#10
  [98] call setFAC 
  to:gen_sintab::@13
gen_sintab::@13: scope:[gen_sintab]  from gen_sintab::@2
  [99] phi()
  [100] call mulFACbyMEM 
  to:gen_sintab::@14
gen_sintab::@14: scope:[gen_sintab]  from gen_sintab::@13
  [101] phi()
  [102] call setMEMtoFAC 
  to:gen_sintab::@15
gen_sintab::@15: scope:[gen_sintab]  from gen_sintab::@14
  [103] (word) setFAC::w#4 ← (word)(byte) gen_sintab::length#10
  [104] call setFAC 
  to:gen_sintab::@16
gen_sintab::@16: scope:[gen_sintab]  from gen_sintab::@15
  [105] phi()
  [106] call divMEMbyFAC 
  to:gen_sintab::@17
gen_sintab::@17: scope:[gen_sintab]  from gen_sintab::@16
  [107] phi()
  [108] call sinFAC 
  to:gen_sintab::@18
gen_sintab::@18: scope:[gen_sintab]  from gen_sintab::@17
  [109] phi()
  [110] call mulFACbyMEM 
  to:gen_sintab::@19
gen_sintab::@19: scope:[gen_sintab]  from gen_sintab::@18
  [111] phi()
  [112] call addMEMtoFAC 
  to:gen_sintab::@20
gen_sintab::@20: scope:[gen_sintab]  from gen_sintab::@19
  [113] phi()
  [114] call getFAC 
  [115] (word) getFAC::return#2 ← (word) getFAC::return#0
  to:gen_sintab::@21
gen_sintab::@21: scope:[gen_sintab]  from gen_sintab::@20
  [116] (word~) gen_sintab::$24 ← (word) getFAC::return#2
  [117] (byte~) gen_sintab::$25 ← (byte)(word~) gen_sintab::$24
  [118] *((byte*) gen_sintab::sintab#13 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$25
  [119] call progress_inc 
  to:gen_sintab::@22
gen_sintab::@22: scope:[gen_sintab]  from gen_sintab::@21
  [120] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10
  to:gen_sintab::@1

(void()) progress_inc()
progress_inc: scope:[progress_inc]  from gen_sintab::@21
  [121] (byte) progress_idx#10 ← ++ (byte) progress_idx#14
  [122] if((byte) progress_idx#10!=(byte) 8) goto progress_inc::@1
  to:progress_inc::@2
progress_inc::@2: scope:[progress_inc]  from progress_inc
  [123] *((byte*) progress_cursor#13) ← *((const byte*) progress_inc::progress_chars+(byte) 8)
  [124] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#13
  to:progress_inc::@1
progress_inc::@1: scope:[progress_inc]  from progress_inc progress_inc::@2
  [125] (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#13 progress_inc::@2/(byte*) progress_cursor#10 )
  [125] (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(byte) 0 )
  [126] *((byte*) progress_cursor#11) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#12)
  to:progress_inc::@return
progress_inc::@return: scope:[progress_inc]  from progress_inc::@1
  [127] return 
  to:@return

(word()) getFAC()
getFAC: scope:[getFAC]  from gen_sintab::@20
  asm { jsr$b1aa stymemLo stamemHi  }
  [129] (word) getFAC::return#0 ← *((const byte*) memHi) w= *((const byte*) memLo)
  to:getFAC::@return
getFAC::@return: scope:[getFAC]  from getFAC
  [130] return 
  to:@return

(void()) addMEMtoFAC((byte*) addMEMtoFAC::mem)
addMEMtoFAC: scope:[addMEMtoFAC]  from gen_sintab::@11 gen_sintab::@19
  [131] phi()
  to:addMEMtoFAC::prepareMEM1
addMEMtoFAC::prepareMEM1: scope:[addMEMtoFAC]  from addMEMtoFAC
  [132] *((const byte*) memLo) ← <(word)(const byte*) gen_sintab::f_min
  [133] *((const byte*) memHi) ← >(word)(const byte*) gen_sintab::f_min
  to:addMEMtoFAC::@1
addMEMtoFAC::@1: scope:[addMEMtoFAC]  from addMEMtoFAC::prepareMEM1
  asm { ldamemLo ldymemHi jsr$b867  }
  to:addMEMtoFAC::@return
addMEMtoFAC::@return: scope:[addMEMtoFAC]  from addMEMtoFAC::@1
  [135] return 
  to:@return

(void()) mulFACbyMEM((byte*) mulFACbyMEM::mem)
mulFACbyMEM: scope:[mulFACbyMEM]  from gen_sintab::@13 gen_sintab::@18
  [136] (byte*) mulFACbyMEM::mem#2 ← phi( gen_sintab::@13/(const byte*) gen_sintab::f_2pi gen_sintab::@18/(const byte*) gen_sintab::f_amp )
  to:mulFACbyMEM::prepareMEM1
mulFACbyMEM::prepareMEM1: scope:[mulFACbyMEM]  from mulFACbyMEM
  [137] (byte~) mulFACbyMEM::prepareMEM1_$0 ← < (word)(byte*) mulFACbyMEM::mem#2
  [138] *((const byte*) memLo) ← (byte~) mulFACbyMEM::prepareMEM1_$0
  [139] (byte~) mulFACbyMEM::prepareMEM1_$1 ← > (word)(byte*) mulFACbyMEM::mem#2
  [140] *((const byte*) memHi) ← (byte~) mulFACbyMEM::prepareMEM1_$1
  to:mulFACbyMEM::@1
mulFACbyMEM::@1: scope:[mulFACbyMEM]  from mulFACbyMEM::prepareMEM1
  asm { ldamemLo ldymemHi jsr$ba28  }
  to:mulFACbyMEM::@return
mulFACbyMEM::@return: scope:[mulFACbyMEM]  from mulFACbyMEM::@1
  [142] return 
  to:@return

(void()) sinFAC()
sinFAC: scope:[sinFAC]  from gen_sintab::@17
  asm { jsr$e26b  }
  to:sinFAC::@return
sinFAC::@return: scope:[sinFAC]  from sinFAC
  [144] return 
  to:@return

(void()) divMEMbyFAC((byte*) divMEMbyFAC::mem)
divMEMbyFAC: scope:[divMEMbyFAC]  from gen_sintab::@16 gen_sintab::@9
  [145] (byte*) divMEMbyFAC::mem#2 ← phi( gen_sintab::@9/(const byte*) gen_sintab::f_amp gen_sintab::@16/(const byte*) gen_sintab::f_i )
  to:divMEMbyFAC::prepareMEM1
divMEMbyFAC::prepareMEM1: scope:[divMEMbyFAC]  from divMEMbyFAC
  [146] (byte~) divMEMbyFAC::prepareMEM1_$0 ← < (word)(byte*) divMEMbyFAC::mem#2
  [147] *((const byte*) memLo) ← (byte~) divMEMbyFAC::prepareMEM1_$0
  [148] (byte~) divMEMbyFAC::prepareMEM1_$1 ← > (word)(byte*) divMEMbyFAC::mem#2
  [149] *((const byte*) memHi) ← (byte~) divMEMbyFAC::prepareMEM1_$1
  to:divMEMbyFAC::@1
divMEMbyFAC::@1: scope:[divMEMbyFAC]  from divMEMbyFAC::prepareMEM1
  asm { ldamemLo ldymemHi jsr$bb0f  }
  to:divMEMbyFAC::@return
divMEMbyFAC::@return: scope:[divMEMbyFAC]  from divMEMbyFAC::@1
  [151] return 
  to:@return

(void()) setFAC((word) setFAC::w)
setFAC: scope:[setFAC]  from gen_sintab gen_sintab::@15 gen_sintab::@2 gen_sintab::@4 gen_sintab::@8
  [152] (word) setFAC::prepareMEM1_mem#0 ← phi( gen_sintab/(word) setFAC::w#0 gen_sintab::@8/(byte) 2 gen_sintab::@2/(word) setFAC::w#3 gen_sintab::@15/(word) setFAC::w#4 gen_sintab::@4/(word) setFAC::w#1 )
  to:setFAC::prepareMEM1
setFAC::prepareMEM1: scope:[setFAC]  from setFAC
  [153] (byte~) setFAC::prepareMEM1_$0 ← < (word) setFAC::prepareMEM1_mem#0
  [154] *((const byte*) memLo) ← (byte~) setFAC::prepareMEM1_$0
  [155] (byte~) setFAC::prepareMEM1_$1 ← > (word) setFAC::prepareMEM1_mem#0
  [156] *((const byte*) memHi) ← (byte~) setFAC::prepareMEM1_$1
  to:setFAC::@1
setFAC::@1: scope:[setFAC]  from setFAC::prepareMEM1
  asm { ldymemLo ldamemHi jsr$b391  }
  to:setFAC::@return
setFAC::@return: scope:[setFAC]  from setFAC::@1
  [158] return 
  to:@return

(void()) setMEMtoFAC((byte*) setMEMtoFAC::mem)
setMEMtoFAC: scope:[setMEMtoFAC]  from gen_sintab::@10 gen_sintab::@12 gen_sintab::@14 gen_sintab::@5 gen_sintab::@7
  [159] (byte*) setMEMtoFAC::mem#5 ← phi( gen_sintab::@7/(const byte*) gen_sintab::f_amp gen_sintab::@10/(const byte*) gen_sintab::f_amp gen_sintab::@12/(const byte*) gen_sintab::f_min gen_sintab::@14/(const byte*) gen_sintab::f_i gen_sintab::@5/(const byte*) gen_sintab::f_min )
  to:setMEMtoFAC::prepareMEM1
setMEMtoFAC::prepareMEM1: scope:[setMEMtoFAC]  from setMEMtoFAC
  [160] (byte~) setMEMtoFAC::prepareMEM1_$0 ← < (word)(byte*) setMEMtoFAC::mem#5
  [161] *((const byte*) memLo) ← (byte~) setMEMtoFAC::prepareMEM1_$0
  [162] (byte~) setMEMtoFAC::prepareMEM1_$1 ← > (word)(byte*) setMEMtoFAC::mem#5
  [163] *((const byte*) memHi) ← (byte~) setMEMtoFAC::prepareMEM1_$1
  to:setMEMtoFAC::@1
setMEMtoFAC::@1: scope:[setMEMtoFAC]  from setMEMtoFAC::prepareMEM1
  asm { ldxmemLo ldymemHi jsr$bbd4  }
  to:setMEMtoFAC::@return
setMEMtoFAC::@return: scope:[setMEMtoFAC]  from setMEMtoFAC::@1
  [165] return 
  to:@return

(void()) subFACfromARG()
subFACfromARG: scope:[subFACfromARG]  from gen_sintab::@6
  asm { jsr$b853  }
  to:subFACfromARG::@return
subFACfromARG::@return: scope:[subFACfromARG]  from subFACfromARG
  [167] return 
  to:@return

(void()) setARGtoFAC()
setARGtoFAC: scope:[setARGtoFAC]  from gen_sintab::@3
  asm { jsr$bc0f  }
  to:setARGtoFAC::@return
setARGtoFAC::@return: scope:[setARGtoFAC]  from setARGtoFAC
  [169] return 
  to:@return

(void()) progress_init((byte*) progress_init::line)
progress_init: scope:[progress_init]  from init::@4 init::@6
  [170] (byte*) progress_init::line#2 ← phi( init::@4/(const byte*) SCREEN init::@6/(const byte*) SCREEN+(byte) $28 )
  to:progress_init::@return
progress_init::@return: scope:[progress_init]  from progress_init
  [171] return 
  to:@return

(void()) gen_sprites()
gen_sprites: scope:[gen_sprites]  from init::@3
  [172] phi()
  to:gen_sprites::@1
gen_sprites::@1: scope:[gen_sprites]  from gen_sprites gen_sprites::@2
  [173] (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte*) sprites gen_sprites::@2/(byte*) gen_sprites::spr#1 )
  [173] (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte) 0 gen_sprites::@2/(byte) gen_sprites::i#1 )
  [174] (byte) gen_chargen_sprite::ch#0 ← *((const byte*) gen_sprites::cml + (byte) gen_sprites::i#2)
  [175] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2
  [176] call gen_chargen_sprite 
  to:gen_sprites::@2
gen_sprites::@2: scope:[gen_sprites]  from gen_sprites::@1
  [177] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte) $40
  [178] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2
  [179] if((byte) gen_sprites::i#1!=(byte) 7) goto gen_sprites::@1
  to:gen_sprites::@return
gen_sprites::@return: scope:[gen_sprites]  from gen_sprites::@2
  [180] return 
  to:@return

(void()) gen_chargen_sprite((byte) gen_chargen_sprite::ch , (byte*) gen_chargen_sprite::sprite)
gen_chargen_sprite: scope:[gen_chargen_sprite]  from gen_sprites::@1
  [181] (word~) gen_chargen_sprite::$0 ← (word)(byte) gen_chargen_sprite::ch#0
  [182] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte) 3
  [183] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN + (word~) gen_chargen_sprite::$1
  asm { sei  }
  [185] *((const byte*) PROCPORT) ← (byte) $32
  to:gen_chargen_sprite::@1
gen_chargen_sprite::@1: scope:[gen_chargen_sprite]  from gen_chargen_sprite gen_chargen_sprite::@8
  [186] (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::sprite#2 )
  [186] (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::y#1 )
  [187] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2)
  to:gen_chargen_sprite::@2
gen_chargen_sprite::@2: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@1 gen_chargen_sprite::@7
  [188] (byte) gen_chargen_sprite::x#6 ← phi( gen_chargen_sprite::@1/(byte) 0 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::x#1 )
  [188] (byte*) gen_chargen_sprite::sprite#10 ← phi( gen_chargen_sprite::@1/(byte*) gen_chargen_sprite::sprite#11 gen_chargen_sprite::@7/(byte*) gen_chargen_sprite::sprite#4 )
  [188] (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(byte) 0 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::s_gen_cnt#5 )
  [188] (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(byte) 0 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::s_gen#6 )
  [188] (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::bits#1 )
  [189] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte) $80
  [190] if((byte~) gen_chargen_sprite::$3==(byte) 0) goto gen_chargen_sprite::@3
  to:gen_chargen_sprite::@10
gen_chargen_sprite::@10: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@2
  [191] phi()
  to:gen_chargen_sprite::@3
gen_chargen_sprite::@3: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@10 gen_chargen_sprite::@2
  [192] (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@10/(byte) 1 gen_chargen_sprite::@2/(byte) 0 )
  to:gen_chargen_sprite::@4
gen_chargen_sprite::@4: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@3 gen_chargen_sprite::@5
  [193] (byte*) gen_chargen_sprite::sprite#3 ← phi( gen_chargen_sprite::@3/(byte*) gen_chargen_sprite::sprite#10 gen_chargen_sprite::@5/(byte*) gen_chargen_sprite::sprite#4 )
  [193] (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(byte) 0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 )
  [193] (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 )
  [193] (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 )
  [194] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte) 1
  [195] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3
  [196] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3
  [197] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte) 8) goto gen_chargen_sprite::@5
  to:gen_chargen_sprite::@6
gen_chargen_sprite::@6: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@4
  [198] *((byte*) gen_chargen_sprite::sprite#3) ← (byte) gen_chargen_sprite::s_gen#1
  [199] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 3) ← (byte) gen_chargen_sprite::s_gen#1
  [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 6) ← (byte) gen_chargen_sprite::s_gen#1
  [201] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3
  to:gen_chargen_sprite::@5
gen_chargen_sprite::@5: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@4 gen_chargen_sprite::@6
  [202] (byte*) gen_chargen_sprite::sprite#4 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::sprite#3 gen_chargen_sprite::@6/(byte*) gen_chargen_sprite::sprite#1 )
  [202] (byte) gen_chargen_sprite::s_gen_cnt#5 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen_cnt#1 gen_chargen_sprite::@6/(byte) 0 )
  [202] (byte) gen_chargen_sprite::s_gen#6 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen#1 gen_chargen_sprite::@6/(byte) 0 )
  [203] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2
  [204] if((byte) gen_chargen_sprite::b#1!=(byte) 3) goto gen_chargen_sprite::@4
  to:gen_chargen_sprite::@7
gen_chargen_sprite::@7: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@5
  [205] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte) 1
  [206] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6
  [207] if((byte) gen_chargen_sprite::x#1!=(byte) 8) goto gen_chargen_sprite::@2
  to:gen_chargen_sprite::@8
gen_chargen_sprite::@8: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@7
  [208] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte) 6
  [209] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2
  [210] if((byte) gen_chargen_sprite::y#1!=(byte) 8) goto gen_chargen_sprite::@1
  to:gen_chargen_sprite::@9
gen_chargen_sprite::@9: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@8
  [211] *((const byte*) PROCPORT) ← (byte) $37
  asm { cli  }
  to:gen_chargen_sprite::@return
gen_chargen_sprite::@return: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@9
  [213] return 
  to:@return

(void()) place_sprites()
place_sprites: scope:[place_sprites]  from init::@2
  [214] *((const byte*) SPRITES_ENABLE) ← (byte) $7f
  [215] *((const byte*) SPRITES_EXPAND_X) ← (byte) $7f
  [216] *((const byte*) SPRITES_EXPAND_Y) ← (byte) $7f
  to:place_sprites::@1
place_sprites::@1: scope:[place_sprites]  from place_sprites place_sprites::@1
  [217] (byte) place_sprites::col#2 ← phi( place_sprites/(byte) 5 place_sprites::@1/(byte) place_sprites::col#1 )
  [217] (byte) place_sprites::j2#3 ← phi( place_sprites/(byte) 0 place_sprites::@1/(byte) place_sprites::j2#2 )
  [217] (byte) place_sprites::spr_x#2 ← phi( place_sprites/(byte) $3c place_sprites::@1/(byte) place_sprites::spr_x#1 )
  [217] (byte) place_sprites::j#2 ← phi( place_sprites/(byte) 0 place_sprites::@1/(byte) place_sprites::j#1 )
  [217] (byte) place_sprites::spr_id#2 ← phi( place_sprites/(byte)(word)(const byte*) sprites/(byte) $40 place_sprites::@1/(byte) place_sprites::spr_id#1 )
  [218] *((const byte*) place_sprites::sprites_ptr + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2
  [219] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2
  [220] *((const byte*) SPRITES_XPOS + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2
  [221] *((const byte*) SPRITES_YPOS + (byte) place_sprites::j2#3) ← (byte) $50
  [222] *((const byte*) SPRITES_COLS + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2
  [223] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte) $20
  [224] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte)(number) 7^(number) 5
  [225] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3
  [226] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1
  [227] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2
  [228] if((byte) place_sprites::j#1!=(byte) 7) goto place_sprites::@1
  to:place_sprites::@return
place_sprites::@return: scope:[place_sprites]  from place_sprites::@1
  [229] return 
  to:@return


VARIABLE REGISTER WEIGHTS
(void()) addMEMtoFAC((byte*) addMEMtoFAC::mem)
(byte*) addMEMtoFAC::mem
(word) addMEMtoFAC::prepareMEM1_mem
(void()) anim()
(byte~) anim::$10 202.0
(byte~) anim::$7 101.0
(byte~) anim::$8 202.0
(byte) anim::j
(byte) anim::j#1 151.5
(byte) anim::j#2 11.882352941176471
(byte) anim::j2
(byte) anim::j2#1 67.33333333333333
(byte) anim::j2#2 25.25
(word) anim::x
(word) anim::x#0 75.75
(byte) anim::x_msb
(byte) anim::x_msb#1 13.6
(byte) anim::x_msb#2 101.0
(byte) anim::xidx
(byte) anim::xidx#0 2.0
(byte) anim::xidx#1 202.0
(byte) anim::xidx#2 202.0
(byte) anim::xidx#3 38.125
(byte) anim::xidx#5 37.875
(byte) anim::yidx
(byte) anim::yidx#0 4.0
(byte) anim::yidx#1 202.0
(byte) anim::yidx#2 202.0
(byte) anim::yidx#3 25.416666666666664
(byte) anim::yidx#6 75.75
(void()) clear_screen()
(byte*) clear_screen::sc
(byte*) clear_screen::sc#1 22.0
(byte*) clear_screen::sc#2 14.666666666666666
(void()) divMEMbyFAC((byte*) divMEMbyFAC::mem)
(byte*) divMEMbyFAC::mem
(byte*) divMEMbyFAC::mem#2
(byte~) divMEMbyFAC::prepareMEM1_$0 4.0
(byte~) divMEMbyFAC::prepareMEM1_$1 4.0
(word) divMEMbyFAC::prepareMEM1_mem
(void()) gen_chargen_sprite((byte) gen_chargen_sprite::ch , (byte*) gen_chargen_sprite::sprite)
(word~) gen_chargen_sprite::$0 4.0
(word~) gen_chargen_sprite::$1 4.0
(byte~) gen_chargen_sprite::$3 2002.0
(byte~) gen_chargen_sprite::$6 20002.0
(byte) gen_chargen_sprite::b
(byte) gen_chargen_sprite::b#1 15001.5
(byte) gen_chargen_sprite::b#2 2000.2
(byte) gen_chargen_sprite::bits
(byte) gen_chargen_sprite::bits#0 202.0
(byte) gen_chargen_sprite::bits#1 667.3333333333334
(byte) gen_chargen_sprite::bits#2 182.58823529411765
(byte) gen_chargen_sprite::c
(byte) gen_chargen_sprite::c#3 769.3076923076923
(byte) gen_chargen_sprite::ch
(byte) gen_chargen_sprite::ch#0 5.5
(byte*) gen_chargen_sprite::chargen
(byte*) gen_chargen_sprite::chargen#0 3.678571428571429
(byte) gen_chargen_sprite::s_gen
(byte) gen_chargen_sprite::s_gen#1 10001.0
(byte) gen_chargen_sprite::s_gen#3 21003.0
(byte) gen_chargen_sprite::s_gen#5 400.4
(byte) gen_chargen_sprite::s_gen#6 3500.5
(byte) gen_chargen_sprite::s_gen_cnt
(byte) gen_chargen_sprite::s_gen_cnt#1 15001.5
(byte) gen_chargen_sprite::s_gen_cnt#3 7001.0
(byte) gen_chargen_sprite::s_gen_cnt#4 400.4
(byte) gen_chargen_sprite::s_gen_cnt#5 3500.5
(byte*) gen_chargen_sprite::sprite
(byte*) gen_chargen_sprite::sprite#0 2.1666666666666665
(byte*) gen_chargen_sprite::sprite#1 20002.0
(byte*) gen_chargen_sprite::sprite#10 420.59999999999997
(byte*) gen_chargen_sprite::sprite#11 102.0
(byte*) gen_chargen_sprite::sprite#2 67.33333333333333
(byte*) gen_chargen_sprite::sprite#3 7625.875
(byte*) gen_chargen_sprite::sprite#4 5184.166666666666
(byte) gen_chargen_sprite::x
(byte) gen_chargen_sprite::x#1 1501.5
(byte) gen_chargen_sprite::x#6 111.22222222222223
(byte) gen_chargen_sprite::y
(byte) gen_chargen_sprite::y#1 151.5
(byte) gen_chargen_sprite::y#2 13.173913043478262
(void()) gen_sintab((byte*) gen_sintab::sintab , (byte) gen_sintab::length , (byte) gen_sintab::min , (byte) gen_sintab::max)
(word~) gen_sintab::$24 11.0
(byte~) gen_sintab::$25 22.0
(byte) gen_sintab::i
(byte) gen_sintab::i#1 22.0
(byte) gen_sintab::i#10 1.76
(byte) gen_sintab::length
(byte) gen_sintab::length#10 0.22448979591836735
(byte) gen_sintab::max
(byte) gen_sintab::max#2
(byte) gen_sintab::min
(byte) gen_sintab::min#2
(byte*) gen_sintab::sintab
(byte*) gen_sintab::sintab#13 0.22448979591836735
(void()) gen_sprites()
(byte) gen_sprites::i
(byte) gen_sprites::i#1 16.5
(byte) gen_sprites::i#2 6.6000000000000005
(byte*) gen_sprites::spr
(byte*) gen_sprites::spr#1 7.333333333333333
(byte*) gen_sprites::spr#2 8.25
(word()) getFAC()
(word) getFAC::return
(word) getFAC::return#0 4.333333333333333
(word) getFAC::return#2 22.0
(word) getFAC::w
(void()) init()
(byte) init::i
(byte) init::i#1 16.5
(byte) init::i#2 14.666666666666666
(void()) main()
(void()) mulFACbyMEM((byte*) mulFACbyMEM::mem)
(byte*) mulFACbyMEM::mem
(byte*) mulFACbyMEM::mem#2
(byte~) mulFACbyMEM::prepareMEM1_$0 4.0
(byte~) mulFACbyMEM::prepareMEM1_$1 4.0
(word) mulFACbyMEM::prepareMEM1_mem
(void()) place_sprites()
(byte) place_sprites::col
(byte) place_sprites::col#1 4.4
(byte) place_sprites::col#2 4.714285714285714
(byte) place_sprites::j
(byte) place_sprites::j#1 16.5
(byte) place_sprites::j#2 4.4
(byte) place_sprites::j2
(byte) place_sprites::j2#1 22.0
(byte) place_sprites::j2#2 7.333333333333333
(byte) place_sprites::j2#3 5.5
(byte) place_sprites::spr_id
(byte) place_sprites::spr_id#1 2.2
(byte) place_sprites::spr_id#2 16.5
(byte) place_sprites::spr_x
(byte) place_sprites::spr_x#1 3.6666666666666665
(byte) place_sprites::spr_x#2 5.5
(byte*) progress_cursor
(byte*) progress_cursor#10 4.0
(byte*) progress_cursor#11 3.4
(byte*) progress_cursor#13 0.7037037037037037
(byte) progress_idx
(byte) progress_idx#10 3.0
(byte) progress_idx#12 3.0
(byte) progress_idx#14 0.5416666666666666
(void()) progress_inc()
(void()) progress_init((byte*) progress_init::line)
(byte*) progress_init::line
(byte*) progress_init::line#2 0.06896551724137931
(void()) setARGtoFAC()
(void()) setFAC((word) setFAC::w)
(byte~) setFAC::prepareMEM1_$0 4.0
(byte~) setFAC::prepareMEM1_$1 4.0
(word) setFAC::prepareMEM1_mem
(word) setFAC::prepareMEM1_mem#0 9.999999999999998
(word) setFAC::w
(word) setFAC::w#0 4.0
(word) setFAC::w#1 4.0
(word) setFAC::w#3 22.0
(word) setFAC::w#4 22.0
(void()) setMEMtoFAC((byte*) setMEMtoFAC::mem)
(byte*) setMEMtoFAC::mem
(byte*) setMEMtoFAC::mem#5
(byte~) setMEMtoFAC::prepareMEM1_$0 4.0
(byte~) setMEMtoFAC::prepareMEM1_$1 4.0
(word) setMEMtoFAC::prepareMEM1_mem
(void()) sinFAC()
(byte) sin_idx_x
(byte) sin_idx_x#11 1.625
(byte) sin_idx_x#13 8.346153846153845
(byte) sin_idx_x#3 2.0
(byte) sin_idx_y
(byte) sin_idx_y#11 3.25
(byte) sin_idx_y#13 7.2333333333333325
(byte) sin_idx_y#3 2.0
(void()) subFACfromARG()

Initial phi equivalence classes
[ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ]
[ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ]
[ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ]
[ anim::x_msb#2 anim::x_msb#1 ]
[ anim::j2#2 anim::j2#1 ]
[ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ]
[ anim::j#2 anim::j#1 ]
[ init::i#2 init::i#1 ]
[ clear_screen::sc#2 clear_screen::sc#1 ]
[ gen_sintab::max#2 ]
[ gen_sintab::min#2 ]
[ gen_sintab::length#10 ]
[ gen_sintab::sintab#13 ]
[ gen_sintab::i#10 gen_sintab::i#1 ]
[ progress_idx#14 progress_idx#12 progress_idx#10 ]
[ progress_cursor#13 progress_init::line#2 progress_cursor#11 progress_cursor#10 ]
[ mulFACbyMEM::mem#2 ]
[ divMEMbyFAC::mem#2 ]
[ setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ]
[ setMEMtoFAC::mem#5 ]
[ gen_sprites::i#2 gen_sprites::i#1 ]
[ gen_sprites::spr#2 gen_sprites::spr#1 ]
[ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ]
[ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ]
[ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ]
[ gen_chargen_sprite::c#3 ]
[ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ]
[ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ]
[ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ]
[ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ]
[ place_sprites::spr_id#2 place_sprites::spr_id#1 ]
[ place_sprites::j#2 place_sprites::j#1 ]
[ place_sprites::spr_x#2 place_sprites::spr_x#1 ]
[ place_sprites::j2#3 place_sprites::j2#2 ]
[ place_sprites::col#2 place_sprites::col#1 ]
Added variable anim::x#0 to live range equivalence class [ anim::x#0 ]
Added variable anim::$7 to live range equivalence class [ anim::$7 ]
Added variable anim::$8 to live range equivalence class [ anim::$8 ]
Added variable anim::$10 to live range equivalence class [ anim::$10 ]
Added variable getFAC::return#2 to live range equivalence class [ getFAC::return#2 ]
Added variable gen_sintab::$24 to live range equivalence class [ gen_sintab::$24 ]
Added variable gen_sintab::$25 to live range equivalence class [ gen_sintab::$25 ]
Added variable getFAC::return#0 to live range equivalence class [ getFAC::return#0 ]
Added variable mulFACbyMEM::prepareMEM1_$0 to live range equivalence class [ mulFACbyMEM::prepareMEM1_$0 ]
Added variable mulFACbyMEM::prepareMEM1_$1 to live range equivalence class [ mulFACbyMEM::prepareMEM1_$1 ]
Added variable divMEMbyFAC::prepareMEM1_$0 to live range equivalence class [ divMEMbyFAC::prepareMEM1_$0 ]
Added variable divMEMbyFAC::prepareMEM1_$1 to live range equivalence class [ divMEMbyFAC::prepareMEM1_$1 ]
Added variable setFAC::prepareMEM1_$0 to live range equivalence class [ setFAC::prepareMEM1_$0 ]
Added variable setFAC::prepareMEM1_$1 to live range equivalence class [ setFAC::prepareMEM1_$1 ]
Added variable setMEMtoFAC::prepareMEM1_$0 to live range equivalence class [ setMEMtoFAC::prepareMEM1_$0 ]
Added variable setMEMtoFAC::prepareMEM1_$1 to live range equivalence class [ setMEMtoFAC::prepareMEM1_$1 ]
Added variable gen_chargen_sprite::ch#0 to live range equivalence class [ gen_chargen_sprite::ch#0 ]
Added variable gen_chargen_sprite::$0 to live range equivalence class [ gen_chargen_sprite::$0 ]
Added variable gen_chargen_sprite::$1 to live range equivalence class [ gen_chargen_sprite::$1 ]
Added variable gen_chargen_sprite::chargen#0 to live range equivalence class [ gen_chargen_sprite::chargen#0 ]
Added variable gen_chargen_sprite::$3 to live range equivalence class [ gen_chargen_sprite::$3 ]
Added variable gen_chargen_sprite::$6 to live range equivalence class [ gen_chargen_sprite::$6 ]
Added variable place_sprites::j2#1 to live range equivalence class [ place_sprites::j2#1 ]
Complete equivalence classes
[ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ]
[ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ]
[ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ]
[ anim::x_msb#2 anim::x_msb#1 ]
[ anim::j2#2 anim::j2#1 ]
[ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ]
[ anim::j#2 anim::j#1 ]
[ init::i#2 init::i#1 ]
[ clear_screen::sc#2 clear_screen::sc#1 ]
[ gen_sintab::max#2 ]
[ gen_sintab::min#2 ]
[ gen_sintab::length#10 ]
[ gen_sintab::sintab#13 ]
[ gen_sintab::i#10 gen_sintab::i#1 ]
[ progress_idx#14 progress_idx#12 progress_idx#10 ]
[ progress_cursor#13 progress_init::line#2 progress_cursor#11 progress_cursor#10 ]
[ mulFACbyMEM::mem#2 ]
[ divMEMbyFAC::mem#2 ]
[ setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ]
[ setMEMtoFAC::mem#5 ]
[ gen_sprites::i#2 gen_sprites::i#1 ]
[ gen_sprites::spr#2 gen_sprites::spr#1 ]
[ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ]
[ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ]
[ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ]
[ gen_chargen_sprite::c#3 ]
[ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ]
[ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ]
[ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ]
[ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ]
[ place_sprites::spr_id#2 place_sprites::spr_id#1 ]
[ place_sprites::j#2 place_sprites::j#1 ]
[ place_sprites::spr_x#2 place_sprites::spr_x#1 ]
[ place_sprites::j2#3 place_sprites::j2#2 ]
[ place_sprites::col#2 place_sprites::col#1 ]
[ anim::x#0 ]
[ anim::$7 ]
[ anim::$8 ]
[ anim::$10 ]
[ getFAC::return#2 ]
[ gen_sintab::$24 ]
[ gen_sintab::$25 ]
[ getFAC::return#0 ]
[ mulFACbyMEM::prepareMEM1_$0 ]
[ mulFACbyMEM::prepareMEM1_$1 ]
[ divMEMbyFAC::prepareMEM1_$0 ]
[ divMEMbyFAC::prepareMEM1_$1 ]
[ setFAC::prepareMEM1_$0 ]
[ setFAC::prepareMEM1_$1 ]
[ setMEMtoFAC::prepareMEM1_$0 ]
[ setMEMtoFAC::prepareMEM1_$1 ]
[ gen_chargen_sprite::ch#0 ]
[ gen_chargen_sprite::$0 ]
[ gen_chargen_sprite::$1 ]
[ gen_chargen_sprite::chargen#0 ]
[ gen_chargen_sprite::$3 ]
[ gen_chargen_sprite::$6 ]
[ place_sprites::j2#1 ]
Allocated zp[1]:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ]
Allocated zp[1]:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ]
Allocated zp[1]:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ]
Allocated zp[1]:5 [ anim::x_msb#2 anim::x_msb#1 ]
Allocated zp[1]:6 [ anim::j2#2 anim::j2#1 ]
Allocated zp[1]:8 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ]
Allocated zp[1]:9 [ anim::j#2 anim::j#1 ]
Allocated zp[1]:10 [ init::i#2 init::i#1 ]
Allocated zp[2]:11 [ clear_screen::sc#2 clear_screen::sc#1 ]
Allocated zp[1]:15 [ gen_sintab::max#2 ]
Allocated zp[1]:16 [ gen_sintab::min#2 ]
Allocated zp[1]:17 [ gen_sintab::length#10 ]
Allocated zp[2]:19 [ gen_sintab::sintab#13 ]
Allocated zp[1]:21 [ gen_sintab::i#10 gen_sintab::i#1 ]
Allocated zp[1]:22 [ progress_idx#14 progress_idx#12 progress_idx#10 ]
Allocated zp[2]:23 [ progress_cursor#13 progress_init::line#2 progress_cursor#11 progress_cursor#10 ]
Allocated zp[2]:25 [ mulFACbyMEM::mem#2 ]
Allocated zp[2]:27 [ divMEMbyFAC::mem#2 ]
Allocated zp[2]:29 [ setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ]
Allocated zp[2]:31 [ setMEMtoFAC::mem#5 ]
Allocated zp[1]:33 [ gen_sprites::i#2 gen_sprites::i#1 ]
Allocated zp[2]:34 [ gen_sprites::spr#2 gen_sprites::spr#1 ]
Allocated zp[1]:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ]
Allocated zp[1]:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ]
Allocated zp[1]:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ]
Allocated zp[1]:39 [ gen_chargen_sprite::c#3 ]
Allocated zp[1]:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ]
Allocated zp[1]:41 [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ]
Allocated zp[1]:42 [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ]
Allocated zp[2]:43 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ]
Allocated zp[1]:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ]
Allocated zp[1]:46 [ place_sprites::j#2 place_sprites::j#1 ]
Allocated zp[1]:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ]
Allocated zp[1]:48 [ place_sprites::j2#3 place_sprites::j2#2 ]
Allocated zp[1]:49 [ place_sprites::col#2 place_sprites::col#1 ]
Allocated zp[2]:50 [ anim::x#0 ]
Allocated zp[1]:52 [ anim::$7 ]
Allocated zp[1]:53 [ anim::$8 ]
Allocated zp[1]:54 [ anim::$10 ]
Allocated zp[2]:55 [ getFAC::return#2 ]
Allocated zp[2]:57 [ gen_sintab::$24 ]
Allocated zp[1]:59 [ gen_sintab::$25 ]
Allocated zp[2]:60 [ getFAC::return#0 ]
Allocated zp[1]:62 [ mulFACbyMEM::prepareMEM1_$0 ]
Allocated zp[1]:63 [ mulFACbyMEM::prepareMEM1_$1 ]
Allocated zp[1]:64 [ divMEMbyFAC::prepareMEM1_$0 ]
Allocated zp[1]:65 [ divMEMbyFAC::prepareMEM1_$1 ]
Allocated zp[1]:66 [ setFAC::prepareMEM1_$0 ]
Allocated zp[1]:67 [ setFAC::prepareMEM1_$1 ]
Allocated zp[1]:68 [ setMEMtoFAC::prepareMEM1_$0 ]
Allocated zp[1]:69 [ setMEMtoFAC::prepareMEM1_$1 ]
Allocated zp[1]:70 [ gen_chargen_sprite::ch#0 ]
Allocated zp[2]:71 [ gen_chargen_sprite::$0 ]
Allocated zp[2]:73 [ gen_chargen_sprite::$1 ]
Allocated zp[2]:75 [ gen_chargen_sprite::chargen#0 ]
Allocated zp[1]:77 [ gen_chargen_sprite::$3 ]
Allocated zp[1]:78 [ gen_chargen_sprite::$6 ]
Allocated zp[1]:79 [ place_sprites::j2#1 ]

INITIAL ASM
Target platform is c64basic / MOS6502X
  // File Comments
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(__bbegin)
.pc = $80d "Program"
  // Global Constants & labels
  // Processor Port Register controlling RAM/ROM configuration and the datasette
  .label PROCPORT = 1
  // The address of the CHARGEN character set
  .label CHARGEN = $d000
  .label SPRITES_XPOS = $d000
  .label SPRITES_YPOS = $d001
  .label SPRITES_XMSB = $d010
  .label RASTER = $d012
  .label SPRITES_ENABLE = $d015
  .label SPRITES_EXPAND_Y = $d017
  .label SPRITES_EXPAND_X = $d01d
  .label BORDERCOL = $d020
  .label SPRITES_COLS = $d027
  // Color Ram
  .label COLS = $d800
  // Zeropage addresses used to hold lo/hi-bytes of addresses of float numbers in MEM
  .label memLo = $fe
  .label memHi = $ff
  .const sinlen_x = $dd
  .const sinlen_y = $c5
  .label sprites = $2000
  .label SCREEN = $400
  // Current index within the progress cursor (0-7)
  .label progress_idx = $16
  // Current position of the progress cursor
  .label progress_cursor = $17
  .label sin_idx_x = 2
  .label sin_idx_y = 3
  // @begin
__bbegin:
  // [1] phi from @begin to @1 [phi:@begin->@1]
__b1_from___bbegin:
  jmp __b1
  // @1
__b1:
  // [2] call main 
  // [4] phi from @1 to main [phi:@1->main]
main_from___b1:
  jsr main
  // [3] phi from @1 to @end [phi:@1->@end]
__bend_from___b1:
  jmp __bend
  // @end
__bend:
  // main
main: {
    // [5] call init 
    // [43] phi from main to init [phi:main->init]
  init_from_main:
    jsr init
    // [6] phi from main to main::@1 [phi:main->main::@1]
  __b1_from_main:
    // [6] phi (byte) sin_idx_y#13 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_idx_y
    // [6] phi (byte) sin_idx_x#13 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_idx_x
    jmp __b1
    // [6] phi from main::@1 main::@2 to main::@1 [phi:main::@1/main::@2->main::@1]
  __b1_from___b1:
  __b1_from___b2:
    // [6] phi (byte) sin_idx_y#13 = (byte) sin_idx_y#13 [phi:main::@1/main::@2->main::@1#0] -- register_copy 
    // [6] phi (byte) sin_idx_x#13 = (byte) sin_idx_x#13 [phi:main::@1/main::@2->main::@1#1] -- register_copy 
    jmp __b1
    // main::@1
  __b1:
    // [7] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda #$ff
    cmp RASTER
    bne __b1_from___b1
    // [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  __b2_from___b1:
    jmp __b2
    // main::@2
  __b2:
    // [9] call anim 
    jsr anim
    jmp __b1_from___b2
}
  // anim
anim: {
    .label __7 = $34
    .label __8 = $35
    .label __10 = $36
    .label xidx = 4
    .label yidx = 8
    .label x = $32
    .label x_msb = 5
    .label j2 = 6
    .label j = 9
    // [10] *((const byte*) BORDERCOL) ← ++ *((const byte*) BORDERCOL) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
    // [11] (byte) anim::xidx#0 ← (byte) sin_idx_x#13 -- vbuz1=vbuz2 
    lda.z sin_idx_x
    sta.z xidx
    // [12] (byte) anim::yidx#0 ← (byte) sin_idx_y#13 -- vbuz1=vbuz2 
    lda.z sin_idx_y
    sta.z yidx
    // [13] phi from anim to anim::@3 [phi:anim->anim::@3]
  __b3_from_anim:
    // [13] phi (byte) anim::j#2 = (byte) 0 [phi:anim->anim::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z j
    // [13] phi (byte) anim::yidx#3 = (byte) anim::yidx#0 [phi:anim->anim::@3#1] -- register_copy 
    // [13] phi (byte) anim::j2#2 = (byte) $c [phi:anim->anim::@3#2] -- vbuz1=vbuc1 
    lda #$c
    sta.z j2
    // [13] phi (byte) anim::x_msb#2 = (byte) 0 [phi:anim->anim::@3#3] -- vbuz1=vbuc1 
    lda #0
    sta.z x_msb
    // [13] phi (byte) anim::xidx#3 = (byte) anim::xidx#0 [phi:anim->anim::@3#4] -- register_copy 
    jmp __b3
    // [13] phi from anim::@5 to anim::@3 [phi:anim::@5->anim::@3]
  __b3_from___b5:
    // [13] phi (byte) anim::j#2 = (byte) anim::j#1 [phi:anim::@5->anim::@3#0] -- register_copy 
    // [13] phi (byte) anim::yidx#3 = (byte) anim::yidx#6 [phi:anim::@5->anim::@3#1] -- register_copy 
    // [13] phi (byte) anim::j2#2 = (byte) anim::j2#1 [phi:anim::@5->anim::@3#2] -- register_copy 
    // [13] phi (byte) anim::x_msb#2 = (byte) anim::x_msb#1 [phi:anim::@5->anim::@3#3] -- register_copy 
    // [13] phi (byte) anim::xidx#3 = (byte) anim::xidx#5 [phi:anim::@5->anim::@3#4] -- register_copy 
    jmp __b3
    // anim::@3
  __b3:
    // [14] (word) anim::x#0 ← (word) $1e + *((const byte*) sintab_x + (byte) anim::xidx#3) -- vwuz1=vwuc1_plus_pbuc2_derefidx_vbuz2 
    ldy.z xidx
    lda sintab_x,y
    clc
    adc #<$1e
    sta.z x
    lda #>$1e
    adc #0
    sta.z x+1
    // [15] (byte~) anim::$7 ← (byte) anim::x_msb#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 
    lda.z x_msb
    asl
    sta.z __7
    // [16] (byte~) anim::$8 ← > (word) anim::x#0 -- vbuz1=_hi_vwuz2 
    lda.z x+1
    sta.z __8
    // [17] (byte) anim::x_msb#1 ← (byte~) anim::$7 | (byte~) anim::$8 -- vbuz1=vbuz2_bor_vbuz3 
    lda.z __7
    ora.z __8
    sta.z x_msb
    // [18] (byte~) anim::$10 ← < (word) anim::x#0 -- vbuz1=_lo_vwuz2 
    lda.z x
    sta.z __10
    // [19] *((const byte*) SPRITES_XPOS + (byte) anim::j2#2) ← (byte~) anim::$10 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z __10
    ldy.z j2
    sta SPRITES_XPOS,y
    // [20] *((const byte*) SPRITES_YPOS + (byte) anim::j2#2) ← *((const byte*) sintab_y + (byte) anim::yidx#3) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 
    ldy.z yidx
    lda sintab_y,y
    ldy.z j2
    sta SPRITES_YPOS,y
    // [21] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte) $a -- vbuz1=vbuz1_plus_vbuc1 
    lax.z xidx
    axs #-[$a]
    stx.z xidx
    // [22] if((byte) anim::xidx#1<(const byte) sinlen_x) goto anim::@4 -- vbuz1_lt_vbuc1_then_la1 
    lda.z xidx
    cmp #sinlen_x
    bcc __b4_from___b3
    jmp __b6
    // anim::@6
  __b6:
    // [23] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x -- vbuz1=vbuz1_minus_vbuc1 
    lax.z xidx
    axs #sinlen_x
    stx.z xidx
    // [24] phi from anim::@3 anim::@6 to anim::@4 [phi:anim::@3/anim::@6->anim::@4]
  __b4_from___b3:
  __b4_from___b6:
    // [24] phi (byte) anim::xidx#5 = (byte) anim::xidx#1 [phi:anim::@3/anim::@6->anim::@4#0] -- register_copy 
    jmp __b4
    // anim::@4
  __b4:
    // [25] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte) 8 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z yidx
    axs #-[8]
    stx.z yidx
    // [26] if((byte) anim::yidx#1<(const byte) sinlen_y) goto anim::@5 -- vbuz1_lt_vbuc1_then_la1 
    lda.z yidx
    cmp #sinlen_y
    bcc __b5_from___b4
    jmp __b7
    // anim::@7
  __b7:
    // [27] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y -- vbuz1=vbuz1_minus_vbuc1 
    lax.z yidx
    axs #sinlen_y
    stx.z yidx
    // [28] phi from anim::@4 anim::@7 to anim::@5 [phi:anim::@4/anim::@7->anim::@5]
  __b5_from___b4:
  __b5_from___b7:
    // [28] phi (byte) anim::yidx#6 = (byte) anim::yidx#1 [phi:anim::@4/anim::@7->anim::@5#0] -- register_copy 
    jmp __b5
    // anim::@5
  __b5:
    // [29] (byte) anim::j2#1 ← (byte) anim::j2#2 - (byte) 2 -- vbuz1=vbuz1_minus_2 
    dec.z j2
    dec.z j2
    // [30] (byte) anim::j#1 ← ++ (byte) anim::j#2 -- vbuz1=_inc_vbuz1 
    inc.z j
    // [31] if((byte) anim::j#1!=(byte) 7) goto anim::@3 -- vbuz1_neq_vbuc1_then_la1 
    lda #7
    cmp.z j
    bne __b3_from___b5
    jmp __b8
    // anim::@8
  __b8:
    // [32] *((const byte*) SPRITES_XMSB) ← (byte) anim::x_msb#1 -- _deref_pbuc1=vbuz1 
    lda.z x_msb
    sta SPRITES_XMSB
    // [33] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 -- vbuz1=_inc_vbuz1 
    inc.z sin_idx_x
    // [34] if((byte) sin_idx_x#3<(const byte) sinlen_x) goto anim::@9 -- vbuz1_lt_vbuc1_then_la1 
    lda.z sin_idx_x
    cmp #sinlen_x
    bcc __b9_from___b8
    // [36] phi from anim::@8 to anim::@1 [phi:anim::@8->anim::@1]
  __b1_from___b8:
    // [36] phi (byte) sin_idx_x#11 = (byte) 0 [phi:anim::@8->anim::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_idx_x
    jmp __b1
    // [35] phi from anim::@8 to anim::@9 [phi:anim::@8->anim::@9]
  __b9_from___b8:
    jmp __b9
    // anim::@9
  __b9:
    // [36] phi from anim::@9 to anim::@1 [phi:anim::@9->anim::@1]
  __b1_from___b9:
    // [36] phi (byte) sin_idx_x#11 = (byte) sin_idx_x#3 [phi:anim::@9->anim::@1#0] -- register_copy 
    jmp __b1
    // anim::@1
  __b1:
    // [37] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 -- vbuz1=_inc_vbuz1 
    inc.z sin_idx_y
    // [38] if((byte) sin_idx_y#3<(const byte) sinlen_y) goto anim::@10 -- vbuz1_lt_vbuc1_then_la1 
    lda.z sin_idx_y
    cmp #sinlen_y
    bcc __b10_from___b1
    // [40] phi from anim::@1 to anim::@2 [phi:anim::@1->anim::@2]
  __b2_from___b1:
    // [40] phi (byte) sin_idx_y#11 = (byte) 0 [phi:anim::@1->anim::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_idx_y
    jmp __b2
    // [39] phi from anim::@1 to anim::@10 [phi:anim::@1->anim::@10]
  __b10_from___b1:
    jmp __b10
    // anim::@10
  __b10:
    // [40] phi from anim::@10 to anim::@2 [phi:anim::@10->anim::@2]
  __b2_from___b10:
    // [40] phi (byte) sin_idx_y#11 = (byte) sin_idx_y#3 [phi:anim::@10->anim::@2#0] -- register_copy 
    jmp __b2
    // anim::@2
  __b2:
    // [41] *((const byte*) BORDERCOL) ← -- *((const byte*) BORDERCOL) -- _deref_pbuc1=_dec__deref_pbuc1 
    dec BORDERCOL
    jmp __breturn
    // anim::@return
  __breturn:
    // [42] return 
    rts
}
  // init
init: {
    .label i = $a
    // [44] call clear_screen 
    // [65] phi from init to clear_screen [phi:init->clear_screen]
  clear_screen_from_init:
    jsr clear_screen
    // [45] phi from init to init::@1 [phi:init->init::@1]
  __b1_from_init:
    // [45] phi (byte) init::i#2 = (byte) 0 [phi:init->init::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp __b1
    // [45] phi from init::@1 to init::@1 [phi:init::@1->init::@1]
  __b1_from___b1:
    // [45] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy 
    jmp __b1
    // init::@1
  __b1:
    // [46] *((const byte*) COLS + (byte) init::i#2) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2 
    lda #0
    ldy.z i
    sta COLS,y
    // [47] *((const byte*) COLS+(byte) $28 + (byte) init::i#2) ← (byte) $b -- pbuc1_derefidx_vbuz1=vbuc2 
    lda #$b
    ldy.z i
    sta COLS+$28,y
    // [48] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [49] if((byte) init::i#1!=(byte) $28) goto init::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$28
    cmp.z i
    bne __b1_from___b1
    // [50] phi from init::@1 to init::@2 [phi:init::@1->init::@2]
  __b2_from___b1:
    jmp __b2
    // init::@2
  __b2:
    // [51] call place_sprites 
    jsr place_sprites
    // [52] phi from init::@2 to init::@3 [phi:init::@2->init::@3]
  __b3_from___b2:
    jmp __b3
    // init::@3
  __b3:
    // [53] call gen_sprites 
    // [172] phi from init::@3 to gen_sprites [phi:init::@3->gen_sprites]
  gen_sprites_from___b3:
    jsr gen_sprites
    // [54] phi from init::@3 to init::@4 [phi:init::@3->init::@4]
  __b4_from___b3:
    jmp __b4
    // init::@4
  __b4:
    // [55] call progress_init 
    // [170] phi from init::@4 to progress_init [phi:init::@4->progress_init]
  progress_init_from___b4:
    // [170] phi (byte*) progress_init::line#2 = (const byte*) SCREEN [phi:init::@4->progress_init#0] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta.z progress_init.line
    lda #>SCREEN
    sta.z progress_init.line+1
    jsr progress_init
    // [56] phi from init::@4 to init::@5 [phi:init::@4->init::@5]
  __b5_from___b4:
    jmp __b5
    // init::@5
  __b5:
    // [57] call gen_sintab 
    // [71] phi from init::@5 to gen_sintab [phi:init::@5->gen_sintab]
  gen_sintab_from___b5:
    // [71] phi (byte*) gen_sintab::sintab#13 = (const byte*) sintab_x [phi:init::@5->gen_sintab#0] -- pbuz1=pbuc1 
    lda #<sintab_x
    sta.z gen_sintab.sintab
    lda #>sintab_x
    sta.z gen_sintab.sintab+1
    // [71] phi (byte) gen_sintab::length#10 = (const byte) sinlen_x [phi:init::@5->gen_sintab#1] -- vbuz1=vbuc1 
    lda #sinlen_x
    sta.z gen_sintab.length
    // [71] phi (byte) gen_sintab::min#2 = (byte) 0 [phi:init::@5->gen_sintab#2] -- vbuz1=vbuc1 
    lda #0
    sta.z gen_sintab.min
    // [71] phi (byte) gen_sintab::max#2 = (byte) $ff [phi:init::@5->gen_sintab#3] -- vbuz1=vbuc1 
    lda #$ff
    sta.z gen_sintab.max
    jsr gen_sintab
    // [58] phi from init::@5 to init::@6 [phi:init::@5->init::@6]
  __b6_from___b5:
    jmp __b6
    // init::@6
  __b6:
    // [59] call progress_init 
    // [170] phi from init::@6 to progress_init [phi:init::@6->progress_init]
  progress_init_from___b6:
    // [170] phi (byte*) progress_init::line#2 = (const byte*) SCREEN+(byte) $28 [phi:init::@6->progress_init#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28
    sta.z progress_init.line
    lda #>SCREEN+$28
    sta.z progress_init.line+1
    jsr progress_init
    // [60] phi from init::@6 to init::@7 [phi:init::@6->init::@7]
  __b7_from___b6:
    jmp __b7
    // init::@7
  __b7:
    // [61] call gen_sintab 
    // [71] phi from init::@7 to gen_sintab [phi:init::@7->gen_sintab]
  gen_sintab_from___b7:
    // [71] phi (byte*) gen_sintab::sintab#13 = (const byte*) sintab_y [phi:init::@7->gen_sintab#0] -- pbuz1=pbuc1 
    lda #<sintab_y
    sta.z gen_sintab.sintab
    lda #>sintab_y
    sta.z gen_sintab.sintab+1
    // [71] phi (byte) gen_sintab::length#10 = (const byte) sinlen_y [phi:init::@7->gen_sintab#1] -- vbuz1=vbuc1 
    lda #sinlen_y
    sta.z gen_sintab.length
    // [71] phi (byte) gen_sintab::min#2 = (byte) $32 [phi:init::@7->gen_sintab#2] -- vbuz1=vbuc1 
    lda #$32
    sta.z gen_sintab.min
    // [71] phi (byte) gen_sintab::max#2 = (byte) $d0 [phi:init::@7->gen_sintab#3] -- vbuz1=vbuc1 
    lda #$d0
    sta.z gen_sintab.max
    jsr gen_sintab
    // [62] phi from init::@7 to init::@8 [phi:init::@7->init::@8]
  __b8_from___b7:
    jmp __b8
    // init::@8
  __b8:
    // [63] call clear_screen 
    // [65] phi from init::@8 to clear_screen [phi:init::@8->clear_screen]
  clear_screen_from___b8:
    jsr clear_screen
    jmp __breturn
    // init::@return
  __breturn:
    // [64] return 
    rts
}
  // clear_screen
clear_screen: {
    .label sc = $b
    // [66] phi from clear_screen to clear_screen::@1 [phi:clear_screen->clear_screen::@1]
  __b1_from_clear_screen:
    // [66] phi (byte*) clear_screen::sc#2 = (const byte*) SCREEN [phi:clear_screen->clear_screen::@1#0] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta.z sc
    lda #>SCREEN
    sta.z sc+1
    jmp __b1
    // clear_screen::@1
  __b1:
    // [67] if((byte*) clear_screen::sc#2<(const byte*) SCREEN+(word) $3e8) goto clear_screen::@2 -- pbuz1_lt_pbuc1_then_la1 
    lda.z sc+1
    cmp #>SCREEN+$3e8
    bcc __b2
    bne !+
    lda.z sc
    cmp #<SCREEN+$3e8
    bcc __b2
  !:
    jmp __breturn
    // clear_screen::@return
  __breturn:
    // [68] return 
    rts
    // clear_screen::@2
  __b2:
    // [69] *((byte*) clear_screen::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (sc),y
    // [70] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 -- pbuz1=_inc_pbuz1 
    inc.z sc
    bne !+
    inc.z sc+1
  !:
    // [66] phi from clear_screen::@2 to clear_screen::@1 [phi:clear_screen::@2->clear_screen::@1]
  __b1_from___b2:
    // [66] phi (byte*) clear_screen::sc#2 = (byte*) clear_screen::sc#1 [phi:clear_screen::@2->clear_screen::@1#0] -- register_copy 
    jmp __b1
}
  // gen_sintab
// Generate a sinus table using BASIC floats
// - sintab is a pointer to the table to fill
// - length is the length of the sine table
// - min is the minimum value of the generated sinus
// - max is the maximum value of the generated sinus
// gen_sintab(byte* zp($13) sintab, byte zp($11) length, byte zp($10) min, byte zp($f) max)
gen_sintab: {
    // amplitude/2
    .label f_2pi = $e2e5
    .label __24 = $39
    .label __25 = $3b
    .label i = $15
    .label max = $f
    .label min = $10
    .label length = $11
    .label sintab = $13
    // [72] (word) setFAC::w#0 ← (word)(byte) gen_sintab::max#2 -- vwuz1=_word_vbuz2 
    lda.z max
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [73] call setFAC 
    // [152] phi from gen_sintab to setFAC [phi:gen_sintab->setFAC]
  setFAC_from_gen_sintab:
    // [152] phi (word) setFAC::prepareMEM1_mem#0 = (word) setFAC::w#0 [phi:gen_sintab->setFAC#0] -- register_copy 
    jsr setFAC
    // [74] phi from gen_sintab to gen_sintab::@3 [phi:gen_sintab->gen_sintab::@3]
  __b3_from_gen_sintab:
    jmp __b3
    // gen_sintab::@3
  __b3:
    // [75] call setARGtoFAC 
    jsr setARGtoFAC
    jmp __b4
    // gen_sintab::@4
  __b4:
    // [76] (word) setFAC::w#1 ← (word)(byte) gen_sintab::min#2 -- vwuz1=_word_vbuz2 
    lda.z min
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [77] call setFAC 
    // [152] phi from gen_sintab::@4 to setFAC [phi:gen_sintab::@4->setFAC]
  setFAC_from___b4:
    // [152] phi (word) setFAC::prepareMEM1_mem#0 = (word) setFAC::w#1 [phi:gen_sintab::@4->setFAC#0] -- register_copy 
    jsr setFAC
    // [78] phi from gen_sintab::@4 to gen_sintab::@5 [phi:gen_sintab::@4->gen_sintab::@5]
  __b5_from___b4:
    jmp __b5
    // gen_sintab::@5
  __b5:
    // [79] call setMEMtoFAC 
    // [159] phi from gen_sintab::@5 to setMEMtoFAC [phi:gen_sintab::@5->setMEMtoFAC]
  setMEMtoFAC_from___b5:
    // [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte*) gen_sintab::f_min [phi:gen_sintab::@5->setMEMtoFAC#0] -- pbuz1=pbuc1 
    lda #<f_min
    sta.z setMEMtoFAC.mem
    lda #>f_min
    sta.z setMEMtoFAC.mem+1
    jsr setMEMtoFAC
    // [80] phi from gen_sintab::@5 to gen_sintab::@6 [phi:gen_sintab::@5->gen_sintab::@6]
  __b6_from___b5:
    jmp __b6
    // gen_sintab::@6
  __b6:
    // [81] call subFACfromARG 
    jsr subFACfromARG
    // [82] phi from gen_sintab::@6 to gen_sintab::@7 [phi:gen_sintab::@6->gen_sintab::@7]
  __b7_from___b6:
    jmp __b7
    // gen_sintab::@7
  __b7:
    // [83] call setMEMtoFAC 
    // [159] phi from gen_sintab::@7 to setMEMtoFAC [phi:gen_sintab::@7->setMEMtoFAC]
  setMEMtoFAC_from___b7:
    // [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte*) gen_sintab::f_amp [phi:gen_sintab::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 
    lda #<f_amp
    sta.z setMEMtoFAC.mem
    lda #>f_amp
    sta.z setMEMtoFAC.mem+1
    jsr setMEMtoFAC
    // [84] phi from gen_sintab::@7 to gen_sintab::@8 [phi:gen_sintab::@7->gen_sintab::@8]
  __b8_from___b7:
    jmp __b8
    // gen_sintab::@8
  __b8:
    // [85] call setFAC 
    // [152] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC]
  setFAC_from___b8:
    // [152] phi (word) setFAC::prepareMEM1_mem#0 = (byte) 2 [phi:gen_sintab::@8->setFAC#0] -- vwuz1=vbuc1 
    lda #<2
    sta.z setFAC.prepareMEM1_mem
    lda #>2
    sta.z setFAC.prepareMEM1_mem+1
    jsr setFAC
    // [86] phi from gen_sintab::@8 to gen_sintab::@9 [phi:gen_sintab::@8->gen_sintab::@9]
  __b9_from___b8:
    jmp __b9
    // gen_sintab::@9
  __b9:
    // [87] call divMEMbyFAC 
    // [145] phi from gen_sintab::@9 to divMEMbyFAC [phi:gen_sintab::@9->divMEMbyFAC]
  divMEMbyFAC_from___b9:
    // [145] phi (byte*) divMEMbyFAC::mem#2 = (const byte*) gen_sintab::f_amp [phi:gen_sintab::@9->divMEMbyFAC#0] -- pbuz1=pbuc1 
    lda #<f_amp
    sta.z divMEMbyFAC.mem
    lda #>f_amp
    sta.z divMEMbyFAC.mem+1
    jsr divMEMbyFAC
    // [88] phi from gen_sintab::@9 to gen_sintab::@10 [phi:gen_sintab::@9->gen_sintab::@10]
  __b10_from___b9:
    jmp __b10
    // gen_sintab::@10
  __b10:
    // [89] call setMEMtoFAC 
    // [159] phi from gen_sintab::@10 to setMEMtoFAC [phi:gen_sintab::@10->setMEMtoFAC]
  setMEMtoFAC_from___b10:
    // [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte*) gen_sintab::f_amp [phi:gen_sintab::@10->setMEMtoFAC#0] -- pbuz1=pbuc1 
    lda #<f_amp
    sta.z setMEMtoFAC.mem
    lda #>f_amp
    sta.z setMEMtoFAC.mem+1
    jsr setMEMtoFAC
    // [90] phi from gen_sintab::@10 to gen_sintab::@11 [phi:gen_sintab::@10->gen_sintab::@11]
  __b11_from___b10:
    jmp __b11
    // gen_sintab::@11
  __b11:
    // [91] call addMEMtoFAC 
    // [131] phi from gen_sintab::@11 to addMEMtoFAC [phi:gen_sintab::@11->addMEMtoFAC]
  addMEMtoFAC_from___b11:
    jsr addMEMtoFAC
    // [92] phi from gen_sintab::@11 to gen_sintab::@12 [phi:gen_sintab::@11->gen_sintab::@12]
  __b12_from___b11:
    jmp __b12
    // gen_sintab::@12
  __b12:
    // [93] call setMEMtoFAC 
    // [159] phi from gen_sintab::@12 to setMEMtoFAC [phi:gen_sintab::@12->setMEMtoFAC]
  setMEMtoFAC_from___b12:
    // [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte*) gen_sintab::f_min [phi:gen_sintab::@12->setMEMtoFAC#0] -- pbuz1=pbuc1 
    lda #<f_min
    sta.z setMEMtoFAC.mem
    lda #>f_min
    sta.z setMEMtoFAC.mem+1
    jsr setMEMtoFAC
    // [94] phi from gen_sintab::@12 to gen_sintab::@1 [phi:gen_sintab::@12->gen_sintab::@1]
  __b1_from___b12:
    // [94] phi (byte*) progress_cursor#13 = (byte*) progress_init::line#2 [phi:gen_sintab::@12->gen_sintab::@1#0] -- register_copy 
    // [94] phi (byte) progress_idx#14 = (byte) 0 [phi:gen_sintab::@12->gen_sintab::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z progress_idx
    // [94] phi (byte) gen_sintab::i#10 = (byte) 0 [phi:gen_sintab::@12->gen_sintab::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp __b1
  // f_min = min + (max - min) / 2
    // gen_sintab::@1
  __b1:
    // [95] if((byte) gen_sintab::i#10<(byte) gen_sintab::length#10) goto gen_sintab::@2 -- vbuz1_lt_vbuz2_then_la1 
    lda.z i
    cmp.z length
    bcc __b2
    jmp __breturn
    // gen_sintab::@return
  __breturn:
    // [96] return 
    rts
    // gen_sintab::@2
  __b2:
    // [97] (word) setFAC::w#3 ← (word)(byte) gen_sintab::i#10 -- vwuz1=_word_vbuz2 
    lda.z i
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [98] call setFAC 
    // [152] phi from gen_sintab::@2 to setFAC [phi:gen_sintab::@2->setFAC]
  setFAC_from___b2:
    // [152] phi (word) setFAC::prepareMEM1_mem#0 = (word) setFAC::w#3 [phi:gen_sintab::@2->setFAC#0] -- register_copy 
    jsr setFAC
    // [99] phi from gen_sintab::@2 to gen_sintab::@13 [phi:gen_sintab::@2->gen_sintab::@13]
  __b13_from___b2:
    jmp __b13
    // gen_sintab::@13
  __b13:
    // [100] call mulFACbyMEM 
    // [136] phi from gen_sintab::@13 to mulFACbyMEM [phi:gen_sintab::@13->mulFACbyMEM]
  mulFACbyMEM_from___b13:
    // [136] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) gen_sintab::f_2pi [phi:gen_sintab::@13->mulFACbyMEM#0] -- pbuz1=pbuc1 
    lda #<f_2pi
    sta.z mulFACbyMEM.mem
    lda #>f_2pi
    sta.z mulFACbyMEM.mem+1
    jsr mulFACbyMEM
    // [101] phi from gen_sintab::@13 to gen_sintab::@14 [phi:gen_sintab::@13->gen_sintab::@14]
  __b14_from___b13:
    jmp __b14
    // gen_sintab::@14
  __b14:
    // [102] call setMEMtoFAC 
    // [159] phi from gen_sintab::@14 to setMEMtoFAC [phi:gen_sintab::@14->setMEMtoFAC]
  setMEMtoFAC_from___b14:
    // [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte*) gen_sintab::f_i [phi:gen_sintab::@14->setMEMtoFAC#0] -- pbuz1=pbuc1 
    lda #<f_i
    sta.z setMEMtoFAC.mem
    lda #>f_i
    sta.z setMEMtoFAC.mem+1
    jsr setMEMtoFAC
    jmp __b15
    // gen_sintab::@15
  __b15:
    // [103] (word) setFAC::w#4 ← (word)(byte) gen_sintab::length#10 -- vwuz1=_word_vbuz2 
    lda.z length
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [104] call setFAC 
    // [152] phi from gen_sintab::@15 to setFAC [phi:gen_sintab::@15->setFAC]
  setFAC_from___b15:
    // [152] phi (word) setFAC::prepareMEM1_mem#0 = (word) setFAC::w#4 [phi:gen_sintab::@15->setFAC#0] -- register_copy 
    jsr setFAC
    // [105] phi from gen_sintab::@15 to gen_sintab::@16 [phi:gen_sintab::@15->gen_sintab::@16]
  __b16_from___b15:
    jmp __b16
    // gen_sintab::@16
  __b16:
    // [106] call divMEMbyFAC 
    // [145] phi from gen_sintab::@16 to divMEMbyFAC [phi:gen_sintab::@16->divMEMbyFAC]
  divMEMbyFAC_from___b16:
    // [145] phi (byte*) divMEMbyFAC::mem#2 = (const byte*) gen_sintab::f_i [phi:gen_sintab::@16->divMEMbyFAC#0] -- pbuz1=pbuc1 
    lda #<f_i
    sta.z divMEMbyFAC.mem
    lda #>f_i
    sta.z divMEMbyFAC.mem+1
    jsr divMEMbyFAC
    // [107] phi from gen_sintab::@16 to gen_sintab::@17 [phi:gen_sintab::@16->gen_sintab::@17]
  __b17_from___b16:
    jmp __b17
    // gen_sintab::@17
  __b17:
    // [108] call sinFAC 
    jsr sinFAC
    // [109] phi from gen_sintab::@17 to gen_sintab::@18 [phi:gen_sintab::@17->gen_sintab::@18]
  __b18_from___b17:
    jmp __b18
    // gen_sintab::@18
  __b18:
    // [110] call mulFACbyMEM 
    // [136] phi from gen_sintab::@18 to mulFACbyMEM [phi:gen_sintab::@18->mulFACbyMEM]
  mulFACbyMEM_from___b18:
    // [136] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) gen_sintab::f_amp [phi:gen_sintab::@18->mulFACbyMEM#0] -- pbuz1=pbuc1 
    lda #<f_amp
    sta.z mulFACbyMEM.mem
    lda #>f_amp
    sta.z mulFACbyMEM.mem+1
    jsr mulFACbyMEM
    // [111] phi from gen_sintab::@18 to gen_sintab::@19 [phi:gen_sintab::@18->gen_sintab::@19]
  __b19_from___b18:
    jmp __b19
    // gen_sintab::@19
  __b19:
    // [112] call addMEMtoFAC 
    // [131] phi from gen_sintab::@19 to addMEMtoFAC [phi:gen_sintab::@19->addMEMtoFAC]
  addMEMtoFAC_from___b19:
    jsr addMEMtoFAC
    // [113] phi from gen_sintab::@19 to gen_sintab::@20 [phi:gen_sintab::@19->gen_sintab::@20]
  __b20_from___b19:
    jmp __b20
    // gen_sintab::@20
  __b20:
    // [114] call getFAC 
    jsr getFAC
    // [115] (word) getFAC::return#2 ← (word) getFAC::return#0 -- vwuz1=vwuz2 
    lda.z getFAC.return
    sta.z getFAC.return_1
    lda.z getFAC.return+1
    sta.z getFAC.return_1+1
    jmp __b21
    // gen_sintab::@21
  __b21:
    // [116] (word~) gen_sintab::$24 ← (word) getFAC::return#2 -- vwuz1=vwuz2 
    lda.z getFAC.return_1
    sta.z __24
    lda.z getFAC.return_1+1
    sta.z __24+1
    // [117] (byte~) gen_sintab::$25 ← (byte)(word~) gen_sintab::$24 -- vbuz1=_byte_vwuz2 
    lda.z __24
    sta.z __25
    // [118] *((byte*) gen_sintab::sintab#13 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$25 -- pbuz1_derefidx_vbuz2=vbuz3 
    // fac =  sin( i * 2 * PI / length ) * (max - min) / 2 + min + (max - min) / 2
    lda.z __25
    ldy.z i
    sta (sintab),y
    // [119] call progress_inc 
    jsr progress_inc
    jmp __b22
    // gen_sintab::@22
  __b22:
    // [120] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [94] phi from gen_sintab::@22 to gen_sintab::@1 [phi:gen_sintab::@22->gen_sintab::@1]
  __b1_from___b22:
    // [94] phi (byte*) progress_cursor#13 = (byte*) progress_cursor#11 [phi:gen_sintab::@22->gen_sintab::@1#0] -- register_copy 
    // [94] phi (byte) progress_idx#14 = (byte) progress_idx#12 [phi:gen_sintab::@22->gen_sintab::@1#1] -- register_copy 
    // [94] phi (byte) gen_sintab::i#10 = (byte) gen_sintab::i#1 [phi:gen_sintab::@22->gen_sintab::@1#2] -- register_copy 
    jmp __b1
    f_i: .byte 0, 0, 0, 0, 0
    // i * 2 * PI
    f_min: .byte 0, 0, 0, 0, 0
    // amplitude/2 + min
    f_amp: .byte 0, 0, 0, 0, 0
}
  // progress_inc
// Increase PETSCII progress one bit
// Done by increasing the character until the idx is 8 and then moving to the next char
progress_inc: {
    // [121] (byte) progress_idx#10 ← ++ (byte) progress_idx#14 -- vbuz1=_inc_vbuz1 
    inc.z progress_idx
    // [122] if((byte) progress_idx#10!=(byte) 8) goto progress_inc::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z progress_idx
    bne __b1_from_progress_inc
    jmp __b2
    // progress_inc::@2
  __b2:
    // [123] *((byte*) progress_cursor#13) ← *((const byte*) progress_inc::progress_chars+(byte) 8) -- _deref_pbuz1=_deref_pbuc1 
    lda progress_chars+8
    ldy #0
    sta (progress_cursor),y
    // [124] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#13 -- pbuz1=_inc_pbuz1 
    inc.z progress_cursor
    bne !+
    inc.z progress_cursor+1
  !:
    // [125] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1]
  __b1_from___b2:
    // [125] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#10 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy 
    // [125] phi (byte) progress_idx#12 = (byte) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z progress_idx
    jmp __b1
    // [125] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1]
  __b1_from_progress_inc:
    // [125] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#13 [phi:progress_inc->progress_inc::@1#0] -- register_copy 
    // [125] phi (byte) progress_idx#12 = (byte) progress_idx#10 [phi:progress_inc->progress_inc::@1#1] -- register_copy 
    jmp __b1
    // progress_inc::@1
  __b1:
    // [126] *((byte*) progress_cursor#11) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#12) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 
    ldy.z progress_idx
    lda progress_chars,y
    ldy #0
    sta (progress_cursor),y
    jmp __breturn
    // progress_inc::@return
  __breturn:
    // [127] return 
    rts
    // Progress characters
    progress_chars: .byte $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0
}
  // getFAC
// word = FAC
// Get the value of the FAC (floating point accumulator) as an integer 16bit word
// Destroys the value in the FAC in the process
getFAC: {
    .label return = $3c
    .label return_1 = $37
    // asm { jsr$b1aa stymemLo stamemHi  }
    // Load FAC (floating point accumulator) integer part into word register Y,A
    jsr $b1aa
    sty memLo
    sta memHi
    // [129] (word) getFAC::return#0 ← *((const byte*) memHi) w= *((const byte*) memLo) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 
    lda memLo
    sta.z return
    lda memHi
    sta.z return+1
    jmp __breturn
    // getFAC::@return
  __breturn:
    // [130] return 
    rts
}
  // addMEMtoFAC
// FAC = MEM+FAC
// Set FAC to MEM (float saved in memory) plus FAC (float accumulator)
// Reads 5 bytes from memory
addMEMtoFAC: {
    jmp prepareMEM1
    // addMEMtoFAC::prepareMEM1
  prepareMEM1:
    // [132] *((const byte*) memLo) ← <(word)(const byte*) gen_sintab::f_min -- _deref_pbuc1=vbuc2 
    lda #<gen_sintab.f_min
    sta memLo
    // [133] *((const byte*) memHi) ← >(word)(const byte*) gen_sintab::f_min -- _deref_pbuc1=vbuc2 
    lda #>gen_sintab.f_min
    sta memHi
    jmp __b1
    // addMEMtoFAC::@1
  __b1:
    // asm { ldamemLo ldymemHi jsr$b867  }
    lda memLo
    ldy memHi
    jsr $b867
    jmp __breturn
    // addMEMtoFAC::@return
  __breturn:
    // [135] return 
    rts
}
  // mulFACbyMEM
// FAC = MEM*FAC
// Set FAC to MEM (float saved in memory) multiplied by FAC (float accumulator)
// Reads 5 bytes from memory
// mulFACbyMEM(byte* zp($19) mem)
mulFACbyMEM: {
    .label prepareMEM1___0 = $3e
    .label prepareMEM1___1 = $3f
    .label mem = $19
    jmp prepareMEM1
    // mulFACbyMEM::prepareMEM1
  prepareMEM1:
    // [137] (byte~) mulFACbyMEM::prepareMEM1_$0 ← < (word)(byte*) mulFACbyMEM::mem#2 -- vbuz1=_lo_vwuz2 
    lda.z mem
    sta.z prepareMEM1___0
    // [138] *((const byte*) memLo) ← (byte~) mulFACbyMEM::prepareMEM1_$0 -- _deref_pbuc1=vbuz1 
    lda.z prepareMEM1___0
    sta memLo
    // [139] (byte~) mulFACbyMEM::prepareMEM1_$1 ← > (word)(byte*) mulFACbyMEM::mem#2 -- vbuz1=_hi_vwuz2 
    lda.z mem+1
    sta.z prepareMEM1___1
    // [140] *((const byte*) memHi) ← (byte~) mulFACbyMEM::prepareMEM1_$1 -- _deref_pbuc1=vbuz1 
    lda.z prepareMEM1___1
    sta memHi
    jmp __b1
    // mulFACbyMEM::@1
  __b1:
    // asm { ldamemLo ldymemHi jsr$ba28  }
    lda memLo
    ldy memHi
    jsr $ba28
    jmp __breturn
    // mulFACbyMEM::@return
  __breturn:
    // [142] return 
    rts
}
  // sinFAC
// FAC = sin(FAC)
// Set FAC to sinus of the FAC - sin(FAC)
// Sinus is calculated on radians (0-2*PI)
sinFAC: {
    // asm { jsr$e26b  }
    jsr $e26b
    jmp __breturn
    // sinFAC::@return
  __breturn:
    // [144] return 
    rts
}
  // divMEMbyFAC
// FAC = MEM/FAC
// Set FAC to MEM (float saved in memory) divided by FAC (float accumulator)
// Reads 5 bytes from memory
// divMEMbyFAC(byte* zp($1b) mem)
divMEMbyFAC: {
    .label prepareMEM1___0 = $40
    .label prepareMEM1___1 = $41
    .label mem = $1b
    jmp prepareMEM1
    // divMEMbyFAC::prepareMEM1
  prepareMEM1:
    // [146] (byte~) divMEMbyFAC::prepareMEM1_$0 ← < (word)(byte*) divMEMbyFAC::mem#2 -- vbuz1=_lo_vwuz2 
    lda.z mem
    sta.z prepareMEM1___0
    // [147] *((const byte*) memLo) ← (byte~) divMEMbyFAC::prepareMEM1_$0 -- _deref_pbuc1=vbuz1 
    lda.z prepareMEM1___0
    sta memLo
    // [148] (byte~) divMEMbyFAC::prepareMEM1_$1 ← > (word)(byte*) divMEMbyFAC::mem#2 -- vbuz1=_hi_vwuz2 
    lda.z mem+1
    sta.z prepareMEM1___1
    // [149] *((const byte*) memHi) ← (byte~) divMEMbyFAC::prepareMEM1_$1 -- _deref_pbuc1=vbuz1 
    lda.z prepareMEM1___1
    sta memHi
    jmp __b1
    // divMEMbyFAC::@1
  __b1:
    // asm { ldamemLo ldymemHi jsr$bb0f  }
    lda memLo
    ldy memHi
    jsr $bb0f
    jmp __breturn
    // divMEMbyFAC::@return
  __breturn:
    // [151] return 
    rts
}
  // setFAC
// FAC = word
// Set the FAC (floating point accumulator) to the integer value of a 16bit word
// setFAC(word zp($1d) w)
setFAC: {
    .label prepareMEM1___0 = $42
    .label prepareMEM1___1 = $43
    .label prepareMEM1_mem = $1d
    .label w = $1d
    jmp prepareMEM1
    // setFAC::prepareMEM1
  prepareMEM1:
    // [153] (byte~) setFAC::prepareMEM1_$0 ← < (word) setFAC::prepareMEM1_mem#0 -- vbuz1=_lo_vwuz2 
    lda.z prepareMEM1_mem
    sta.z prepareMEM1___0
    // [154] *((const byte*) memLo) ← (byte~) setFAC::prepareMEM1_$0 -- _deref_pbuc1=vbuz1 
    lda.z prepareMEM1___0
    sta memLo
    // [155] (byte~) setFAC::prepareMEM1_$1 ← > (word) setFAC::prepareMEM1_mem#0 -- vbuz1=_hi_vwuz2 
    lda.z prepareMEM1_mem+1
    sta.z prepareMEM1___1
    // [156] *((const byte*) memHi) ← (byte~) setFAC::prepareMEM1_$1 -- _deref_pbuc1=vbuz1 
    lda.z prepareMEM1___1
    sta memHi
    jmp __b1
    // setFAC::@1
  __b1:
    // asm { ldymemLo ldamemHi jsr$b391  }
    // Load word register Y,A into FAC (floating point accumulator)
    ldy memLo
    lda memHi
    jsr $b391
    jmp __breturn
    // setFAC::@return
  __breturn:
    // [158] return 
    rts
}
  // setMEMtoFAC
// MEM = FAC
// Stores the value of the FAC to memory
// Stores 5 bytes (means it is necessary to allocate 5 bytes to avoid clobbering other data using eg. byte[] mem = {0, 0, 0, 0, 0};)
// setMEMtoFAC(byte* zp($1f) mem)
setMEMtoFAC: {
    .label prepareMEM1___0 = $44
    .label prepareMEM1___1 = $45
    .label mem = $1f
    jmp prepareMEM1
    // setMEMtoFAC::prepareMEM1
  prepareMEM1:
    // [160] (byte~) setMEMtoFAC::prepareMEM1_$0 ← < (word)(byte*) setMEMtoFAC::mem#5 -- vbuz1=_lo_vwuz2 
    lda.z mem
    sta.z prepareMEM1___0
    // [161] *((const byte*) memLo) ← (byte~) setMEMtoFAC::prepareMEM1_$0 -- _deref_pbuc1=vbuz1 
    lda.z prepareMEM1___0
    sta memLo
    // [162] (byte~) setMEMtoFAC::prepareMEM1_$1 ← > (word)(byte*) setMEMtoFAC::mem#5 -- vbuz1=_hi_vwuz2 
    lda.z mem+1
    sta.z prepareMEM1___1
    // [163] *((const byte*) memHi) ← (byte~) setMEMtoFAC::prepareMEM1_$1 -- _deref_pbuc1=vbuz1 
    lda.z prepareMEM1___1
    sta memHi
    jmp __b1
    // setMEMtoFAC::@1
  __b1:
    // asm { ldxmemLo ldymemHi jsr$bbd4  }
    ldx memLo
    ldy memHi
    jsr $bbd4
    jmp __breturn
    // setMEMtoFAC::@return
  __breturn:
    // [165] return 
    rts
}
  // subFACfromARG
// FAC = ARG-FAC
// Set FAC to ARG minus FAC
subFACfromARG: {
    // asm { jsr$b853  }
    jsr $b853
    jmp __breturn
    // subFACfromARG::@return
  __breturn:
    // [167] return 
    rts
}
  // setARGtoFAC
// ARG = FAC
// Set the ARG (floating point argument) to the value of the FAC (floating point accumulator)
setARGtoFAC: {
    // asm { jsr$bc0f  }
    jsr $bc0f
    jmp __breturn
    // setARGtoFAC::@return
  __breturn:
    // [169] return 
    rts
}
  // progress_init
// Initialize the PETSCII progress bar
// progress_init(byte* zp($17) line)
progress_init: {
    .label line = $17
    jmp __breturn
    // progress_init::@return
  __breturn:
    // [171] return 
    rts
}
  // gen_sprites
gen_sprites: {
    .label spr = $22
    .label i = $21
    // [173] phi from gen_sprites to gen_sprites::@1 [phi:gen_sprites->gen_sprites::@1]
  __b1_from_gen_sprites:
    // [173] phi (byte*) gen_sprites::spr#2 = (const byte*) sprites [phi:gen_sprites->gen_sprites::@1#0] -- pbuz1=pbuc1 
    lda #<sprites
    sta.z spr
    lda #>sprites
    sta.z spr+1
    // [173] phi (byte) gen_sprites::i#2 = (byte) 0 [phi:gen_sprites->gen_sprites::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp __b1
    // [173] phi from gen_sprites::@2 to gen_sprites::@1 [phi:gen_sprites::@2->gen_sprites::@1]
  __b1_from___b2:
    // [173] phi (byte*) gen_sprites::spr#2 = (byte*) gen_sprites::spr#1 [phi:gen_sprites::@2->gen_sprites::@1#0] -- register_copy 
    // [173] phi (byte) gen_sprites::i#2 = (byte) gen_sprites::i#1 [phi:gen_sprites::@2->gen_sprites::@1#1] -- register_copy 
    jmp __b1
    // gen_sprites::@1
  __b1:
    // [174] (byte) gen_chargen_sprite::ch#0 ← *((const byte*) gen_sprites::cml + (byte) gen_sprites::i#2) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy.z i
    lda cml,y
    sta.z gen_chargen_sprite.ch
    // [175] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 -- pbuz1=pbuz2 
    lda.z spr
    sta.z gen_chargen_sprite.sprite
    lda.z spr+1
    sta.z gen_chargen_sprite.sprite+1
    // [176] call gen_chargen_sprite 
    jsr gen_chargen_sprite
    jmp __b2
    // gen_sprites::@2
  __b2:
    // [177] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte) $40 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$40
    clc
    adc.z spr
    sta.z spr
    bcc !+
    inc.z spr+1
  !:
    // [178] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [179] if((byte) gen_sprites::i#1!=(byte) 7) goto gen_sprites::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #7
    cmp.z i
    bne __b1_from___b2
    jmp __breturn
    // gen_sprites::@return
  __breturn:
    // [180] return 
    rts
    cml: .text "camelot"
}
  // gen_chargen_sprite
// Generate a sprite from a C64 CHARGEN character (by making each pixel 3x3 pixels large)
// - c is the character to generate
// - sprite is a pointer to the position of the sprite to generate
// gen_chargen_sprite(byte zp($46) ch, byte* zp($2b) sprite)
gen_chargen_sprite: {
    .label __0 = $47
    .label __1 = $49
    .label __3 = $4d
    .label __6 = $4e
    .label ch = $46
    .label sprite = $2b
    .label chargen = $4b
    .label bits = $25
    // current sprite byte
    .label s_gen = $28
    // #bits filled into current sprite byte
    .label s_gen_cnt = $29
    .label b = $2a
    .label x = $26
    .label y = $24
    // Find the current chargen pixel (c)
    .label c = $27
    // [181] (word~) gen_chargen_sprite::$0 ← (word)(byte) gen_chargen_sprite::ch#0 -- vwuz1=_word_vbuz2 
    lda.z ch
    sta.z __0
    lda #0
    sta.z __0+1
    // [182] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte) 3 -- vwuz1=vwuz2_rol_3 
    lda.z __0
    asl
    sta.z __1
    lda.z __0+1
    rol
    sta.z __1+1
    asl.z __1
    rol.z __1+1
    asl.z __1
    rol.z __1+1
    // [183] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN + (word~) gen_chargen_sprite::$1 -- pbuz1=pbuc1_plus_vwuz2 
    lda.z __1
    clc
    adc #<CHARGEN
    sta.z chargen
    lda.z __1+1
    adc #>CHARGEN
    sta.z chargen+1
    // asm { sei  }
    sei
    // [185] *((const byte*) PROCPORT) ← (byte) $32 -- _deref_pbuc1=vbuc2 
    lda #$32
    sta PROCPORT
    // [186] phi from gen_chargen_sprite to gen_chargen_sprite::@1 [phi:gen_chargen_sprite->gen_chargen_sprite::@1]
  __b1_from_gen_chargen_sprite:
    // [186] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#0] -- register_copy 
    // [186] phi (byte) gen_chargen_sprite::y#2 = (byte) 0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z y
    jmp __b1
    // [186] phi from gen_chargen_sprite::@8 to gen_chargen_sprite::@1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@1]
  __b1_from___b8:
    // [186] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#2 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@1#0] -- register_copy 
    // [186] phi (byte) gen_chargen_sprite::y#2 = (byte) gen_chargen_sprite::y#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@1#1] -- register_copy 
    jmp __b1
    // gen_chargen_sprite::@1
  __b1:
    // [187] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) -- vbuz1=pbuz2_derefidx_vbuz3 
    // current chargen line
    ldy.z y
    lda (chargen),y
    sta.z bits
    // [188] phi from gen_chargen_sprite::@1 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2]
  __b2_from___b1:
    // [188] phi (byte) gen_chargen_sprite::x#6 = (byte) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z x
    // [188] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#11 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#1] -- register_copy 
    // [188] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#2] -- vbuz1=vbuc1 
    lda #0
    sta.z s_gen_cnt
    // [188] phi (byte) gen_chargen_sprite::s_gen#5 = (byte) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#3] -- vbuz1=vbuc1 
    lda #0
    sta.z s_gen
    // [188] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#4] -- register_copy 
    jmp __b2
    // [188] phi from gen_chargen_sprite::@7 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2]
  __b2_from___b7:
    // [188] phi (byte) gen_chargen_sprite::x#6 = (byte) gen_chargen_sprite::x#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#0] -- register_copy 
    // [188] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#1] -- register_copy 
    // [188] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#2] -- register_copy 
    // [188] phi (byte) gen_chargen_sprite::s_gen#5 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#3] -- register_copy 
    // [188] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#4] -- register_copy 
    jmp __b2
    // gen_chargen_sprite::@2
  __b2:
    // [189] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 
    lda #$80
    and.z bits
    sta.z __3
    // [190] if((byte~) gen_chargen_sprite::$3==(byte) 0) goto gen_chargen_sprite::@3 -- vbuz1_eq_0_then_la1 
    lda.z __3
    cmp #0
    beq __b3_from___b2
    // [191] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@10 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@10]
  __b10_from___b2:
    jmp __b10
    // gen_chargen_sprite::@10
  __b10:
    // [192] phi from gen_chargen_sprite::@10 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@10->gen_chargen_sprite::@3]
  __b3_from___b10:
    // [192] phi (byte) gen_chargen_sprite::c#3 = (byte) 1 [phi:gen_chargen_sprite::@10->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 
    lda #1
    sta.z c
    jmp __b3
    // [192] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3]
  __b3_from___b2:
    // [192] phi (byte) gen_chargen_sprite::c#3 = (byte) 0 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z c
    jmp __b3
    // gen_chargen_sprite::@3
  __b3:
    // [193] phi from gen_chargen_sprite::@3 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4]
  __b4_from___b3:
    // [193] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#10 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#0] -- register_copy 
    // [193] phi (byte) gen_chargen_sprite::b#2 = (byte) 0 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#1] -- vbuz1=vbuc1 
    lda #0
    sta.z b
    // [193] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#2] -- register_copy 
    // [193] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#5 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#3] -- register_copy 
    jmp __b4
  // generate 3 pixels in the sprite byte (s_gen)
    // [193] phi from gen_chargen_sprite::@5 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4]
  __b4_from___b5:
    // [193] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#0] -- register_copy 
    // [193] phi (byte) gen_chargen_sprite::b#2 = (byte) gen_chargen_sprite::b#1 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#1] -- register_copy 
    // [193] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#2] -- register_copy 
    // [193] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#3] -- register_copy 
    jmp __b4
    // gen_chargen_sprite::@4
  __b4:
    // [194] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte) 1 -- vbuz1=vbuz2_rol_1 
    lda.z s_gen
    asl
    sta.z __6
    // [195] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 -- vbuz1=vbuz2_bor_vbuz3 
    lda.z __6
    ora.z c
    sta.z s_gen
    // [196] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 -- vbuz1=_inc_vbuz1 
    inc.z s_gen_cnt
    // [197] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte) 8) goto gen_chargen_sprite::@5 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z s_gen_cnt
    bne __b5_from___b4
    jmp __b6
    // gen_chargen_sprite::@6
  __b6:
    // [198] *((byte*) gen_chargen_sprite::sprite#3) ← (byte) gen_chargen_sprite::s_gen#1 -- _deref_pbuz1=vbuz2 
    // sprite byte filled - store and move to next byte
    lda.z s_gen
    ldy #0
    sta (sprite),y
    // [199] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 3) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 
    lda.z s_gen
    ldy #3
    sta (sprite),y
    // [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 6) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 
    lda.z s_gen
    ldy #6
    sta (sprite),y
    // [201] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 -- pbuz1=_inc_pbuz1 
    inc.z sprite
    bne !+
    inc.z sprite+1
  !:
    // [202] phi from gen_chargen_sprite::@6 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5]
  __b5_from___b6:
    // [202] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#1 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5#0] -- register_copy 
    // [202] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) 0 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5#1] -- vbuz1=vbuc1 
    lda #0
    sta.z s_gen_cnt
    // [202] phi (byte) gen_chargen_sprite::s_gen#6 = (byte) 0 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5#2] -- vbuz1=vbuc1 
    lda #0
    sta.z s_gen
    jmp __b5
    // [202] phi from gen_chargen_sprite::@4 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5]
  __b5_from___b4:
    // [202] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#3 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#0] -- register_copy 
    // [202] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) gen_chargen_sprite::s_gen_cnt#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#1] -- register_copy 
    // [202] phi (byte) gen_chargen_sprite::s_gen#6 = (byte) gen_chargen_sprite::s_gen#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#2] -- register_copy 
    jmp __b5
    // gen_chargen_sprite::@5
  __b5:
    // [203] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 -- vbuz1=_inc_vbuz1 
    inc.z b
    // [204] if((byte) gen_chargen_sprite::b#1!=(byte) 3) goto gen_chargen_sprite::@4 -- vbuz1_neq_vbuc1_then_la1 
    lda #3
    cmp.z b
    bne __b4_from___b5
    jmp __b7
    // gen_chargen_sprite::@7
  __b7:
    // [205] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte) 1 -- vbuz1=vbuz1_rol_1 
    asl.z bits
    // [206] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 -- vbuz1=_inc_vbuz1 
    inc.z x
    // [207] if((byte) gen_chargen_sprite::x#1!=(byte) 8) goto gen_chargen_sprite::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z x
    bne __b2_from___b7
    jmp __b8
    // gen_chargen_sprite::@8
  __b8:
    // [208] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte) 6 -- pbuz1=pbuz1_plus_vbuc1 
    lda #6
    clc
    adc.z sprite
    sta.z sprite
    bcc !+
    inc.z sprite+1
  !:
    // [209] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [210] if((byte) gen_chargen_sprite::y#1!=(byte) 8) goto gen_chargen_sprite::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z y
    bne __b1_from___b8
    jmp __b9
    // gen_chargen_sprite::@9
  __b9:
    // [211] *((const byte*) PROCPORT) ← (byte) $37 -- _deref_pbuc1=vbuc2 
    lda #$37
    sta PROCPORT
    // asm { cli  }
    cli
    jmp __breturn
    // gen_chargen_sprite::@return
  __breturn:
    // [213] return 
    rts
}
  // place_sprites
place_sprites: {
    .label sprites_ptr = SCREEN+$3f8
    .label spr_id = $2d
    .label spr_x = $2f
    .label col = $31
    .label j2 = $4f
    .label j2_1 = $30
    .label j = $2e
    // [214] *((const byte*) SPRITES_ENABLE) ← (byte) $7f -- _deref_pbuc1=vbuc2 
    lda #$7f
    sta SPRITES_ENABLE
    // [215] *((const byte*) SPRITES_EXPAND_X) ← (byte) $7f -- _deref_pbuc1=vbuc2 
    lda #$7f
    sta SPRITES_EXPAND_X
    // [216] *((const byte*) SPRITES_EXPAND_Y) ← (byte) $7f -- _deref_pbuc1=vbuc2 
    lda #$7f
    sta SPRITES_EXPAND_Y
    // [217] phi from place_sprites to place_sprites::@1 [phi:place_sprites->place_sprites::@1]
  __b1_from_place_sprites:
    // [217] phi (byte) place_sprites::col#2 = (byte) 5 [phi:place_sprites->place_sprites::@1#0] -- vbuz1=vbuc1 
    lda #5
    sta.z col
    // [217] phi (byte) place_sprites::j2#3 = (byte) 0 [phi:place_sprites->place_sprites::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z j2_1
    // [217] phi (byte) place_sprites::spr_x#2 = (byte) $3c [phi:place_sprites->place_sprites::@1#2] -- vbuz1=vbuc1 
    lda #$3c
    sta.z spr_x
    // [217] phi (byte) place_sprites::j#2 = (byte) 0 [phi:place_sprites->place_sprites::@1#3] -- vbuz1=vbuc1 
    lda #0
    sta.z j
    // [217] phi (byte) place_sprites::spr_id#2 = (byte)(word)(const byte*) sprites/(byte) $40 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1 
    lda #sprites/$40
    sta.z spr_id
    jmp __b1
    // [217] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1]
  __b1_from___b1:
    // [217] phi (byte) place_sprites::col#2 = (byte) place_sprites::col#1 [phi:place_sprites::@1->place_sprites::@1#0] -- register_copy 
    // [217] phi (byte) place_sprites::j2#3 = (byte) place_sprites::j2#2 [phi:place_sprites::@1->place_sprites::@1#1] -- register_copy 
    // [217] phi (byte) place_sprites::spr_x#2 = (byte) place_sprites::spr_x#1 [phi:place_sprites::@1->place_sprites::@1#2] -- register_copy 
    // [217] phi (byte) place_sprites::j#2 = (byte) place_sprites::j#1 [phi:place_sprites::@1->place_sprites::@1#3] -- register_copy 
    // [217] phi (byte) place_sprites::spr_id#2 = (byte) place_sprites::spr_id#1 [phi:place_sprites::@1->place_sprites::@1#4] -- register_copy 
    jmp __b1
    // place_sprites::@1
  __b1:
    // [218] *((const byte*) place_sprites::sprites_ptr + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z spr_id
    ldy.z j
    sta sprites_ptr,y
    // [219] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 -- vbuz1=_inc_vbuz1 
    inc.z spr_id
    // [220] *((const byte*) SPRITES_XPOS + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z spr_x
    ldy.z j2_1
    sta SPRITES_XPOS,y
    // [221] *((const byte*) SPRITES_YPOS + (byte) place_sprites::j2#3) ← (byte) $50 -- pbuc1_derefidx_vbuz1=vbuc2 
    lda #$50
    ldy.z j2_1
    sta SPRITES_YPOS,y
    // [222] *((const byte*) SPRITES_COLS + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z col
    ldy.z j
    sta SPRITES_COLS,y
    // [223] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte) $20 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z spr_x
    axs #-[$20]
    stx.z spr_x
    // [224] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte)(number) 7^(number) 5 -- vbuz1=vbuz1_bxor_vbuc1 
    lda #7^5
    eor.z col
    sta.z col
    // [225] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 -- vbuz1=_inc_vbuz2 
    ldy.z j2_1
    iny
    sty.z j2
    // [226] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 -- vbuz1=_inc_vbuz2 
    ldy.z j2
    iny
    sty.z j2_1
    // [227] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 -- vbuz1=_inc_vbuz1 
    inc.z j
    // [228] if((byte) place_sprites::j#1!=(byte) 7) goto place_sprites::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #7
    cmp.z j
    bne __b1_from___b1
    jmp __breturn
    // place_sprites::@return
  __breturn:
    // [229] return 
    rts
}
  // File Data
  sintab_x: .fill $dd, 0
  sintab_y: .fill $c5, 0

REGISTER UPLIFT POTENTIAL REGISTERS
Equivalence Class zp[1]:53 [ anim::$8 ] has ALU potential.
Statement [7] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ sin_idx_x#13 sin_idx_y#13 ] ( main:2 [ sin_idx_x#13 sin_idx_y#13 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ]
Removing always clobbered register reg byte a as potential for zp[1]:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ]
Statement [14] (word) anim::x#0 ← (word) $1e + *((const byte*) sintab_x + (byte) anim::xidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ]
Removing always clobbered register reg byte a as potential for zp[1]:5 [ anim::x_msb#2 anim::x_msb#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:6 [ anim::j2#2 anim::j2#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:8 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ]
Removing always clobbered register reg byte a as potential for zp[1]:9 [ anim::j#2 anim::j#1 ]
Statement [15] (byte~) anim::$7 ← (byte) anim::x_msb#2 << (byte) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] ) always clobbers reg byte a 
Statement [18] (byte~) anim::$10 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$10 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$10 ] ) always clobbers reg byte a 
Statement [20] *((const byte*) SPRITES_YPOS + (byte) anim::j2#2) ← *((const byte*) sintab_y + (byte) anim::yidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) always clobbers reg byte a 
Statement [21] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte) $a [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) always clobbers reg byte a 
Statement [23] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ) always clobbers reg byte a 
Statement [25] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) always clobbers reg byte a 
Statement [27] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ) always clobbers reg byte a 
Statement [46] *((const byte*) COLS + (byte) init::i#2) ← (byte) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:10 [ init::i#2 init::i#1 ]
Statement [47] *((const byte*) COLS+(byte) $28 + (byte) init::i#2) ← (byte) $b [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a 
Statement [67] if((byte*) clear_screen::sc#2<(const byte*) SCREEN+(word) $3e8) goto clear_screen::@2 [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:44 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:63 [ clear_screen::sc#2 ] ) always clobbers reg byte a 
Statement [69] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:44 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:63 [ clear_screen::sc#2 ] ) always clobbers reg byte a reg byte y 
Statement [72] (word) setFAC::w#0 ← (word)(byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:61 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:16 [ gen_sintab::min#2 ]
Removing always clobbered register reg byte a as potential for zp[1]:17 [ gen_sintab::length#10 ]
Statement [76] (word) setFAC::w#1 ← (word)(byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] ) always clobbers reg byte a 
Statement [97] (word) setFAC::w#3 ← (word)(byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:21 [ gen_sintab::i#10 gen_sintab::i#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:22 [ progress_idx#14 progress_idx#12 progress_idx#10 ]
Statement [103] (word) setFAC::w#4 ← (word)(byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] ) always clobbers reg byte a 
Statement [115] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] ) always clobbers reg byte a 
Statement [116] (word~) gen_sintab::$24 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] ) always clobbers reg byte a 
Statement [117] (byte~) gen_sintab::$25 ← (byte)(word~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] ) always clobbers reg byte a 
Statement [123] *((byte*) progress_cursor#13) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#13 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 ] main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:17 [ gen_sintab::length#10 ]
Removing always clobbered register reg byte y as potential for zp[1]:21 [ gen_sintab::i#10 gen_sintab::i#1 ]
Statement [126] *((byte*) progress_cursor#11) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#12) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:22 [ progress_idx#14 progress_idx#12 progress_idx#10 ]
Statement asm { jsr$b1aa stymemLo stamemHi  } always clobbers reg byte a reg byte x reg byte y 
Removing always clobbered register reg byte x as potential for zp[1]:17 [ gen_sintab::length#10 ]
Removing always clobbered register reg byte x as potential for zp[1]:21 [ gen_sintab::i#10 gen_sintab::i#1 ]
Removing always clobbered register reg byte x as potential for zp[1]:22 [ progress_idx#14 progress_idx#12 progress_idx#10 ]
Statement [129] (word) getFAC::return#0 ← *((const byte*) memHi) w= *((const byte*) memLo) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:57::getFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#0 ] main:2::init:5::gen_sintab:61::getFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#0 ] ) always clobbers reg byte a 
Statement [132] *((const byte*) memLo) ← <(word)(const byte*) gen_sintab::f_min [ ] ( main:2::init:5::gen_sintab:57::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:57::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ) always clobbers reg byte a 
Statement [133] *((const byte*) memHi) ← >(word)(const byte*) gen_sintab::f_min [ ] ( main:2::init:5::gen_sintab:57::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:57::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ) always clobbers reg byte a 
Statement asm { ldamemLo ldymemHi jsr$b867  } always clobbers reg byte a reg byte x reg byte y 
Statement [137] (byte~) mulFACbyMEM::prepareMEM1_$0 ← < (word)(byte*) mulFACbyMEM::mem#2 [ mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] ) always clobbers reg byte a 
Statement [139] (byte~) mulFACbyMEM::prepareMEM1_$1 ← > (word)(byte*) mulFACbyMEM::mem#2 [ mulFACbyMEM::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] ) always clobbers reg byte a 
Statement asm { ldamemLo ldymemHi jsr$ba28  } always clobbers reg byte a reg byte x reg byte y 
Statement asm { jsr$e26b  } always clobbers reg byte a reg byte x reg byte y 
Statement [146] (byte~) divMEMbyFAC::prepareMEM1_$0 ← < (word)(byte*) divMEMbyFAC::mem#2 [ divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] ) always clobbers reg byte a 
Statement [148] (byte~) divMEMbyFAC::prepareMEM1_$1 ← > (word)(byte*) divMEMbyFAC::mem#2 [ divMEMbyFAC::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::prepareMEM1_$1 ] ) always clobbers reg byte a 
Statement asm { ldamemLo ldymemHi jsr$bb0f  } always clobbers reg byte a reg byte x reg byte y 
Statement [153] (byte~) setFAC::prepareMEM1_$0 ← < (word) setFAC::prepareMEM1_mem#0 [ setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] ) always clobbers reg byte a 
Statement [155] (byte~) setFAC::prepareMEM1_$1 ← > (word) setFAC::prepareMEM1_mem#0 [ setFAC::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] ) always clobbers reg byte a 
Statement asm { ldymemLo ldamemHi jsr$b391  } always clobbers reg byte a reg byte x reg byte y 
Removing always clobbered register reg byte x as potential for zp[1]:16 [ gen_sintab::min#2 ]
Removing always clobbered register reg byte y as potential for zp[1]:16 [ gen_sintab::min#2 ]
Statement [160] (byte~) setMEMtoFAC::prepareMEM1_$0 ← < (word)(byte*) setMEMtoFAC::mem#5 [ setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] ) always clobbers reg byte a 
Statement [162] (byte~) setMEMtoFAC::prepareMEM1_$1 ← > (word)(byte*) setMEMtoFAC::mem#5 [ setMEMtoFAC::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::prepareMEM1_$1 ] ) always clobbers reg byte a 
Statement asm { ldxmemLo ldymemHi jsr$bbd4  } always clobbers reg byte a reg byte x reg byte y 
Statement asm { jsr$b853  } always clobbers reg byte a reg byte x reg byte y 
Statement asm { jsr$bc0f  } always clobbers reg byte a reg byte x 
Statement [175] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:33 [ gen_sprites::i#2 gen_sprites::i#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:70 [ gen_chargen_sprite::ch#0 ]
Statement [177] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte) $40 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) always clobbers reg byte a 
Statement [181] (word~) gen_chargen_sprite::$0 ← (word)(byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) always clobbers reg byte a 
Statement [182] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) always clobbers reg byte a 
Statement [183] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a 
Statement [185] *((const byte*) PROCPORT) ← (byte) $32 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a 
Statement [187] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ]
Statement [194] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:39 [ gen_chargen_sprite::c#3 ]
Removing always clobbered register reg byte a as potential for zp[1]:41 [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:42 [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ]
Statement [198] *((byte*) gen_chargen_sprite::sprite#3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:33 [ gen_sprites::i#2 gen_sprites::i#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:39 [ gen_chargen_sprite::c#3 ]
Removing always clobbered register reg byte y as potential for zp[1]:42 [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ]
Statement [199] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte y 
Statement [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) always clobbers reg byte y 
Statement [208] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) always clobbers reg byte a 
Statement [211] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) always clobbers reg byte a 
Statement [214] *((const byte*) SPRITES_ENABLE) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] ) always clobbers reg byte a 
Statement [215] *((const byte*) SPRITES_EXPAND_X) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] ) always clobbers reg byte a 
Statement [216] *((const byte*) SPRITES_EXPAND_Y) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] ) always clobbers reg byte a 
Statement [221] *((const byte*) SPRITES_YPOS + (byte) place_sprites::j2#3) ← (byte) $50 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:46 [ place_sprites::j#2 place_sprites::j#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:48 [ place_sprites::j2#3 place_sprites::j2#2 ]
Removing always clobbered register reg byte a as potential for zp[1]:49 [ place_sprites::col#2 place_sprites::col#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ]
Statement [222] *((const byte*) SPRITES_COLS + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a 
Statement [223] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte) $20 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) always clobbers reg byte a 
Statement [224] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte)(number) 7^(number) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) always clobbers reg byte a 
Statement [7] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ sin_idx_x#13 sin_idx_y#13 ] ( main:2 [ sin_idx_x#13 sin_idx_y#13 ] ) always clobbers reg byte a 
Statement [14] (word) anim::x#0 ← (word) $1e + *((const byte*) sintab_x + (byte) anim::xidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 ] ) always clobbers reg byte a 
Statement [15] (byte~) anim::$7 ← (byte) anim::x_msb#2 << (byte) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] ) always clobbers reg byte a 
Statement [18] (byte~) anim::$10 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$10 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$10 ] ) always clobbers reg byte a 
Statement [20] *((const byte*) SPRITES_YPOS + (byte) anim::j2#2) ← *((const byte*) sintab_y + (byte) anim::yidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) always clobbers reg byte a 
Statement [21] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte) $a [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) always clobbers reg byte a 
Statement [23] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ) always clobbers reg byte a 
Statement [25] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) always clobbers reg byte a 
Statement [27] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ) always clobbers reg byte a 
Statement [46] *((const byte*) COLS + (byte) init::i#2) ← (byte) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a 
Statement [47] *((const byte*) COLS+(byte) $28 + (byte) init::i#2) ← (byte) $b [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a 
Statement [67] if((byte*) clear_screen::sc#2<(const byte*) SCREEN+(word) $3e8) goto clear_screen::@2 [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:44 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:63 [ clear_screen::sc#2 ] ) always clobbers reg byte a 
Statement [69] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:44 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:63 [ clear_screen::sc#2 ] ) always clobbers reg byte a reg byte y 
Statement [72] (word) setFAC::w#0 ← (word)(byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:61 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] ) always clobbers reg byte a 
Statement [76] (word) setFAC::w#1 ← (word)(byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] ) always clobbers reg byte a 
Statement [95] if((byte) gen_sintab::i#10<(byte) gen_sintab::length#10) goto gen_sintab::@2 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ) always clobbers reg byte a 
Statement [97] (word) setFAC::w#3 ← (word)(byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] ) always clobbers reg byte a 
Statement [103] (word) setFAC::w#4 ← (word)(byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] ) always clobbers reg byte a 
Statement [115] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] ) always clobbers reg byte a 
Statement [116] (word~) gen_sintab::$24 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] ) always clobbers reg byte a 
Statement [117] (byte~) gen_sintab::$25 ← (byte)(word~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] ) always clobbers reg byte a 
Statement [118] *((byte*) gen_sintab::sintab#13 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$25 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ) always clobbers reg byte y 
Statement [122] if((byte) progress_idx#10!=(byte) 8) goto progress_inc::@1 [ progress_cursor#13 progress_idx#10 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 progress_idx#10 ] main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 progress_idx#10 ] ) always clobbers reg byte a 
Statement [123] *((byte*) progress_cursor#13) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#13 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 ] main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 ] ) always clobbers reg byte a reg byte y 
Statement [126] *((byte*) progress_cursor#11) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#12) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) always clobbers reg byte a reg byte y 
Statement asm { jsr$b1aa stymemLo stamemHi  } always clobbers reg byte a reg byte x reg byte y 
Statement [129] (word) getFAC::return#0 ← *((const byte*) memHi) w= *((const byte*) memLo) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:57::getFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#0 ] main:2::init:5::gen_sintab:61::getFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#0 ] ) always clobbers reg byte a 
Statement [132] *((const byte*) memLo) ← <(word)(const byte*) gen_sintab::f_min [ ] ( main:2::init:5::gen_sintab:57::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:57::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ) always clobbers reg byte a 
Statement [133] *((const byte*) memHi) ← >(word)(const byte*) gen_sintab::f_min [ ] ( main:2::init:5::gen_sintab:57::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:57::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ) always clobbers reg byte a 
Statement asm { ldamemLo ldymemHi jsr$b867  } always clobbers reg byte a reg byte x reg byte y 
Statement [137] (byte~) mulFACbyMEM::prepareMEM1_$0 ← < (word)(byte*) mulFACbyMEM::mem#2 [ mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] ) always clobbers reg byte a 
Statement [139] (byte~) mulFACbyMEM::prepareMEM1_$1 ← > (word)(byte*) mulFACbyMEM::mem#2 [ mulFACbyMEM::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] ) always clobbers reg byte a 
Statement asm { ldamemLo ldymemHi jsr$ba28  } always clobbers reg byte a reg byte x reg byte y 
Statement asm { jsr$e26b  } always clobbers reg byte a reg byte x reg byte y 
Statement [146] (byte~) divMEMbyFAC::prepareMEM1_$0 ← < (word)(byte*) divMEMbyFAC::mem#2 [ divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] ) always clobbers reg byte a 
Statement [148] (byte~) divMEMbyFAC::prepareMEM1_$1 ← > (word)(byte*) divMEMbyFAC::mem#2 [ divMEMbyFAC::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::prepareMEM1_$1 ] ) always clobbers reg byte a 
Statement asm { ldamemLo ldymemHi jsr$bb0f  } always clobbers reg byte a reg byte x reg byte y 
Statement [153] (byte~) setFAC::prepareMEM1_$0 ← < (word) setFAC::prepareMEM1_mem#0 [ setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] ) always clobbers reg byte a 
Statement [155] (byte~) setFAC::prepareMEM1_$1 ← > (word) setFAC::prepareMEM1_mem#0 [ setFAC::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] ) always clobbers reg byte a 
Statement asm { ldymemLo ldamemHi jsr$b391  } always clobbers reg byte a reg byte x reg byte y 
Statement [160] (byte~) setMEMtoFAC::prepareMEM1_$0 ← < (word)(byte*) setMEMtoFAC::mem#5 [ setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] ) always clobbers reg byte a 
Statement [162] (byte~) setMEMtoFAC::prepareMEM1_$1 ← > (word)(byte*) setMEMtoFAC::mem#5 [ setMEMtoFAC::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::prepareMEM1_$1 ] ) always clobbers reg byte a 
Statement asm { ldxmemLo ldymemHi jsr$bbd4  } always clobbers reg byte a reg byte x reg byte y 
Statement asm { jsr$b853  } always clobbers reg byte a reg byte x reg byte y 
Statement asm { jsr$bc0f  } always clobbers reg byte a reg byte x 
Statement [175] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) always clobbers reg byte a 
Statement [177] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte) $40 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) always clobbers reg byte a 
Statement [181] (word~) gen_chargen_sprite::$0 ← (word)(byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) always clobbers reg byte a 
Statement [182] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) always clobbers reg byte a 
Statement [183] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a 
Statement [185] *((const byte*) PROCPORT) ← (byte) $32 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a 
Statement [187] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) always clobbers reg byte a reg byte y 
Statement [189] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte) $80 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ]
Statement [194] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ) always clobbers reg byte a 
Statement [198] *((byte*) gen_chargen_sprite::sprite#3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a reg byte y 
Statement [199] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a reg byte y 
Statement [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) always clobbers reg byte a reg byte y 
Statement [208] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) always clobbers reg byte a 
Statement [211] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) always clobbers reg byte a 
Statement [214] *((const byte*) SPRITES_ENABLE) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] ) always clobbers reg byte a 
Statement [215] *((const byte*) SPRITES_EXPAND_X) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] ) always clobbers reg byte a 
Statement [216] *((const byte*) SPRITES_EXPAND_Y) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] ) always clobbers reg byte a 
Statement [218] *((const byte*) place_sprites::sprites_ptr + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:51 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) always clobbers reg byte a 
Statement [220] *((const byte*) SPRITES_XPOS + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a 
Statement [221] *((const byte*) SPRITES_YPOS + (byte) place_sprites::j2#3) ← (byte) $50 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a 
Statement [222] *((const byte*) SPRITES_COLS + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a 
Statement [223] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte) $20 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) always clobbers reg byte a 
Statement [224] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte)(number) 7^(number) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) always clobbers reg byte a 
Statement [7] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ sin_idx_x#13 sin_idx_y#13 ] ( main:2 [ sin_idx_x#13 sin_idx_y#13 ] ) always clobbers reg byte a 
Statement [14] (word) anim::x#0 ← (word) $1e + *((const byte*) sintab_x + (byte) anim::xidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 ] ) always clobbers reg byte a 
Statement [15] (byte~) anim::$7 ← (byte) anim::x_msb#2 << (byte) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] ) always clobbers reg byte a 
Statement [18] (byte~) anim::$10 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$10 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$10 ] ) always clobbers reg byte a 
Statement [20] *((const byte*) SPRITES_YPOS + (byte) anim::j2#2) ← *((const byte*) sintab_y + (byte) anim::yidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) always clobbers reg byte a 
Statement [21] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte) $a [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) always clobbers reg byte a 
Statement [23] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ) always clobbers reg byte a 
Statement [25] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) always clobbers reg byte a 
Statement [27] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ) always clobbers reg byte a 
Statement [46] *((const byte*) COLS + (byte) init::i#2) ← (byte) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a 
Statement [47] *((const byte*) COLS+(byte) $28 + (byte) init::i#2) ← (byte) $b [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a 
Statement [67] if((byte*) clear_screen::sc#2<(const byte*) SCREEN+(word) $3e8) goto clear_screen::@2 [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:44 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:63 [ clear_screen::sc#2 ] ) always clobbers reg byte a 
Statement [69] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:44 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:63 [ clear_screen::sc#2 ] ) always clobbers reg byte a reg byte y 
Statement [72] (word) setFAC::w#0 ← (word)(byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:61 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 progress_init::line#2 ] ) always clobbers reg byte a 
Statement [76] (word) setFAC::w#1 ← (word)(byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 progress_init::line#2 ] ) always clobbers reg byte a 
Statement [95] if((byte) gen_sintab::i#10<(byte) gen_sintab::length#10) goto gen_sintab::@2 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ) always clobbers reg byte a 
Statement [97] (word) setFAC::w#3 ← (word)(byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#3 ] ) always clobbers reg byte a 
Statement [103] (word) setFAC::w#4 ← (word)(byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::w#4 ] ) always clobbers reg byte a 
Statement [115] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#2 ] ) always clobbers reg byte a 
Statement [116] (word~) gen_sintab::$24 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$24 ] ) always clobbers reg byte a 
Statement [117] (byte~) gen_sintab::$25 ← (byte)(word~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 gen_sintab::$25 ] ) always clobbers reg byte a 
Statement [118] *((byte*) gen_sintab::sintab#13 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$25 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ( main:2::init:5::gen_sintab:57 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] main:2::init:5::gen_sintab:61 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ) always clobbers reg byte y 
Statement [122] if((byte) progress_idx#10!=(byte) 8) goto progress_inc::@1 [ progress_cursor#13 progress_idx#10 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 progress_idx#10 ] main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 progress_idx#10 ] ) always clobbers reg byte a 
Statement [123] *((byte*) progress_cursor#13) ← *((const byte*) progress_inc::progress_chars+(byte) 8) [ progress_cursor#13 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 ] main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#13 ] ) always clobbers reg byte a reg byte y 
Statement [126] *((byte*) progress_cursor#11) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#12) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:57::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:61::progress_inc:119 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) always clobbers reg byte a reg byte y 
Statement asm { jsr$b1aa stymemLo stamemHi  } always clobbers reg byte a reg byte x reg byte y 
Statement [129] (word) getFAC::return#0 ← *((const byte*) memHi) w= *((const byte*) memLo) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:57::getFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#0 ] main:2::init:5::gen_sintab:61::getFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 getFAC::return#0 ] ) always clobbers reg byte a 
Statement [132] *((const byte*) memLo) ← <(word)(const byte*) gen_sintab::f_min [ ] ( main:2::init:5::gen_sintab:57::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:57::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ) always clobbers reg byte a 
Statement [133] *((const byte*) memHi) ← >(word)(const byte*) gen_sintab::f_min [ ] ( main:2::init:5::gen_sintab:57::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 ] main:2::init:5::gen_sintab:57::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] main:2::init:5::gen_sintab:61::addMEMtoFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 ] ) always clobbers reg byte a 
Statement asm { ldamemLo ldymemHi jsr$b867  } always clobbers reg byte a reg byte x reg byte y 
Statement [137] (byte~) mulFACbyMEM::prepareMEM1_$0 ← < (word)(byte*) mulFACbyMEM::mem#2 [ mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::mem#2 mulFACbyMEM::prepareMEM1_$0 ] ) always clobbers reg byte a 
Statement [139] (byte~) mulFACbyMEM::prepareMEM1_$1 ← > (word)(byte*) mulFACbyMEM::mem#2 [ mulFACbyMEM::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:100 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::mulFACbyMEM:110 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 mulFACbyMEM::prepareMEM1_$1 ] ) always clobbers reg byte a 
Statement asm { ldamemLo ldymemHi jsr$ba28  } always clobbers reg byte a reg byte x reg byte y 
Statement asm { jsr$e26b  } always clobbers reg byte a reg byte x reg byte y 
Statement [146] (byte~) divMEMbyFAC::prepareMEM1_$0 ← < (word)(byte*) divMEMbyFAC::mem#2 [ divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::mem#2 divMEMbyFAC::prepareMEM1_$0 ] ) always clobbers reg byte a 
Statement [148] (byte~) divMEMbyFAC::prepareMEM1_$1 ← > (word)(byte*) divMEMbyFAC::mem#2 [ divMEMbyFAC::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 divMEMbyFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::divMEMbyFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 divMEMbyFAC::prepareMEM1_$1 ] ) always clobbers reg byte a 
Statement asm { ldamemLo ldymemHi jsr$bb0f  } always clobbers reg byte a reg byte x reg byte y 
Statement [153] (byte~) setFAC::prepareMEM1_$0 ← < (word) setFAC::prepareMEM1_mem#0 [ setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_mem#0 setFAC::prepareMEM1_$0 ] ) always clobbers reg byte a 
Statement [155] (byte~) setFAC::prepareMEM1_$1 ← > (word) setFAC::prepareMEM1_mem#0 [ setFAC::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:73 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:77 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:98 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setFAC::prepareMEM1_$1 ] ) always clobbers reg byte a 
Statement asm { ldymemLo ldamemHi jsr$b391  } always clobbers reg byte a reg byte x reg byte y 
Statement [160] (byte~) setMEMtoFAC::prepareMEM1_$0 ← < (word)(byte*) setMEMtoFAC::mem#5 [ setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] ( main:2::init:5::gen_sintab:57::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::mem#5 setMEMtoFAC::prepareMEM1_$0 ] ) always clobbers reg byte a 
Statement [162] (byte~) setMEMtoFAC::prepareMEM1_$1 ← > (word)(byte*) setMEMtoFAC::mem#5 [ setMEMtoFAC::prepareMEM1_$1 ] ( main:2::init:5::gen_sintab:57::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:79 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#13 progress_init::line#2 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:57::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::prepareMEM1_$1 ] main:2::init:5::gen_sintab:61::setMEMtoFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#14 progress_cursor#13 setMEMtoFAC::prepareMEM1_$1 ] ) always clobbers reg byte a 
Statement asm { ldxmemLo ldymemHi jsr$bbd4  } always clobbers reg byte a reg byte x reg byte y 
Statement asm { jsr$b853  } always clobbers reg byte a reg byte x reg byte y 
Statement asm { jsr$bc0f  } always clobbers reg byte a reg byte x 
Statement [175] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) always clobbers reg byte a 
Statement [177] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte) $40 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) always clobbers reg byte a 
Statement [181] (word~) gen_chargen_sprite::$0 ← (word)(byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) always clobbers reg byte a 
Statement [182] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) always clobbers reg byte a 
Statement [183] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a 
Statement [185] *((const byte*) PROCPORT) ← (byte) $32 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a 
Statement [187] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) always clobbers reg byte a reg byte y 
Statement [189] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte) $80 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ) always clobbers reg byte a 
Statement [194] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ) always clobbers reg byte a 
Statement [198] *((byte*) gen_chargen_sprite::sprite#3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a reg byte y 
Statement [199] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a reg byte y 
Statement [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) always clobbers reg byte a reg byte y 
Statement [208] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) always clobbers reg byte a 
Statement [211] *((const byte*) PROCPORT) ← (byte) $37 [ ] ( main:2::init:5::gen_sprites:53::gen_chargen_sprite:176 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) always clobbers reg byte a 
Statement [214] *((const byte*) SPRITES_ENABLE) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] ) always clobbers reg byte a 
Statement [215] *((const byte*) SPRITES_EXPAND_X) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] ) always clobbers reg byte a 
Statement [216] *((const byte*) SPRITES_EXPAND_Y) ← (byte) $7f [ ] ( main:2::init:5::place_sprites:51 [ ] ) always clobbers reg byte a 
Statement [218] *((const byte*) place_sprites::sprites_ptr + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:51 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) always clobbers reg byte a 
Statement [220] *((const byte*) SPRITES_XPOS + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a 
Statement [221] *((const byte*) SPRITES_YPOS + (byte) place_sprites::j2#3) ← (byte) $50 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a 
Statement [222] *((const byte*) SPRITES_COLS + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a 
Statement [223] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte) $20 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) always clobbers reg byte a 
Statement [224] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte)(number) 7^(number) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:51 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) always clobbers reg byte a 
Potential registers zp[1]:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] : zp[1]:2 , reg byte x , reg byte y , 
Potential registers zp[1]:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] : zp[1]:3 , reg byte x , reg byte y , 
Potential registers zp[1]:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] : zp[1]:4 , reg byte x , reg byte y , 
Potential registers zp[1]:5 [ anim::x_msb#2 anim::x_msb#1 ] : zp[1]:5 , reg byte x , reg byte y , 
Potential registers zp[1]:6 [ anim::j2#2 anim::j2#1 ] : zp[1]:6 , reg byte x , reg byte y , 
Potential registers zp[1]:8 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] : zp[1]:8 , reg byte x , reg byte y , 
Potential registers zp[1]:9 [ anim::j#2 anim::j#1 ] : zp[1]:9 , reg byte x , reg byte y , 
Potential registers zp[1]:10 [ init::i#2 init::i#1 ] : zp[1]:10 , reg byte x , reg byte y , 
Potential registers zp[2]:11 [ clear_screen::sc#2 clear_screen::sc#1 ] : zp[2]:11 , 
Potential registers zp[1]:15 [ gen_sintab::max#2 ] : zp[1]:15 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:16 [ gen_sintab::min#2 ] : zp[1]:16 , 
Potential registers zp[1]:17 [ gen_sintab::length#10 ] : zp[1]:17 , 
Potential registers zp[2]:19 [ gen_sintab::sintab#13 ] : zp[2]:19 , 
Potential registers zp[1]:21 [ gen_sintab::i#10 gen_sintab::i#1 ] : zp[1]:21 , 
Potential registers zp[1]:22 [ progress_idx#14 progress_idx#12 progress_idx#10 ] : zp[1]:22 , 
Potential registers zp[2]:23 [ progress_cursor#13 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] : zp[2]:23 , 
Potential registers zp[2]:25 [ mulFACbyMEM::mem#2 ] : zp[2]:25 , 
Potential registers zp[2]:27 [ divMEMbyFAC::mem#2 ] : zp[2]:27 , 
Potential registers zp[2]:29 [ setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ] : zp[2]:29 , 
Potential registers zp[2]:31 [ setMEMtoFAC::mem#5 ] : zp[2]:31 , 
Potential registers zp[1]:33 [ gen_sprites::i#2 gen_sprites::i#1 ] : zp[1]:33 , reg byte x , 
Potential registers zp[2]:34 [ gen_sprites::spr#2 gen_sprites::spr#1 ] : zp[2]:34 , 
Potential registers zp[1]:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] : zp[1]:36 , reg byte x , 
Potential registers zp[1]:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] : zp[1]:37 , reg byte x , 
Potential registers zp[1]:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] : zp[1]:38 , reg byte x , 
Potential registers zp[1]:39 [ gen_chargen_sprite::c#3 ] : zp[1]:39 , reg byte x , 
Potential registers zp[1]:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] : zp[1]:40 , reg byte x , 
Potential registers zp[1]:41 [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] : zp[1]:41 , reg byte x , reg byte y , 
Potential registers zp[1]:42 [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] : zp[1]:42 , reg byte x , 
Potential registers zp[2]:43 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] : zp[2]:43 , 
Potential registers zp[1]:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] : zp[1]:45 , reg byte x , reg byte y , 
Potential registers zp[1]:46 [ place_sprites::j#2 place_sprites::j#1 ] : zp[1]:46 , reg byte x , reg byte y , 
Potential registers zp[1]:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] : zp[1]:47 , reg byte x , reg byte y , 
Potential registers zp[1]:48 [ place_sprites::j2#3 place_sprites::j2#2 ] : zp[1]:48 , reg byte x , reg byte y , 
Potential registers zp[1]:49 [ place_sprites::col#2 place_sprites::col#1 ] : zp[1]:49 , reg byte x , reg byte y , 
Potential registers zp[2]:50 [ anim::x#0 ] : zp[2]:50 , 
Potential registers zp[1]:52 [ anim::$7 ] : zp[1]:52 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:53 [ anim::$8 ] : zp[1]:53 , reg byte a , reg byte x , reg byte y , reg byte alu , 
Potential registers zp[1]:54 [ anim::$10 ] : zp[1]:54 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:55 [ getFAC::return#2 ] : zp[2]:55 , 
Potential registers zp[2]:57 [ gen_sintab::$24 ] : zp[2]:57 , 
Potential registers zp[1]:59 [ gen_sintab::$25 ] : zp[1]:59 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:60 [ getFAC::return#0 ] : zp[2]:60 , 
Potential registers zp[1]:62 [ mulFACbyMEM::prepareMEM1_$0 ] : zp[1]:62 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:63 [ mulFACbyMEM::prepareMEM1_$1 ] : zp[1]:63 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:64 [ divMEMbyFAC::prepareMEM1_$0 ] : zp[1]:64 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:65 [ divMEMbyFAC::prepareMEM1_$1 ] : zp[1]:65 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:66 [ setFAC::prepareMEM1_$0 ] : zp[1]:66 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:67 [ setFAC::prepareMEM1_$1 ] : zp[1]:67 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:68 [ setMEMtoFAC::prepareMEM1_$0 ] : zp[1]:68 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:69 [ setMEMtoFAC::prepareMEM1_$1 ] : zp[1]:69 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:70 [ gen_chargen_sprite::ch#0 ] : zp[1]:70 , reg byte x , reg byte y , 
Potential registers zp[2]:71 [ gen_chargen_sprite::$0 ] : zp[2]:71 , 
Potential registers zp[2]:73 [ gen_chargen_sprite::$1 ] : zp[2]:73 , 
Potential registers zp[2]:75 [ gen_chargen_sprite::chargen#0 ] : zp[2]:75 , 
Potential registers zp[1]:77 [ gen_chargen_sprite::$3 ] : zp[1]:77 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:78 [ gen_chargen_sprite::$6 ] : zp[1]:78 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:79 [ place_sprites::j2#1 ] : zp[1]:79 , reg byte a , reg byte x , reg byte y , 

REGISTER UPLIFT SCOPES
Uplift Scope [gen_chargen_sprite] 34,904.9: zp[1]:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] 33,404.14: zp[2]:43 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] 25,903.4: zp[1]:41 [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] 20,002: zp[1]:78 [ gen_chargen_sprite::$6 ] 17,001.7: zp[1]:42 [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] 2,002: zp[1]:77 [ gen_chargen_sprite::$3 ] 1,612.72: zp[1]:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] 1,051.92: zp[1]:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] 769.31: zp[1]:39 [ gen_chargen_sprite::c#3 ] 164.67: zp[1]:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] 5.5: zp[1]:70 [ gen_chargen_sprite::ch#0 ] 4: zp[2]:71 [ gen_chargen_sprite::$0 ] 4: zp[2]:73 [ gen_chargen_sprite::$1 ] 3.68: zp[2]:75 [ gen_chargen_sprite::chargen#0 ] 
Uplift Scope [anim] 509.17: zp[1]:8 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] 482: zp[1]:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] 202: zp[1]:53 [ anim::$8 ] 202: zp[1]:54 [ anim::$10 ] 163.38: zp[1]:9 [ anim::j#2 anim::j#1 ] 114.6: zp[1]:5 [ anim::x_msb#2 anim::x_msb#1 ] 101: zp[1]:52 [ anim::$7 ] 92.58: zp[1]:6 [ anim::j2#2 anim::j2#1 ] 75.75: zp[2]:50 [ anim::x#0 ] 
Uplift Scope [place_sprites] 22: zp[1]:79 [ place_sprites::j2#1 ] 20.9: zp[1]:46 [ place_sprites::j#2 place_sprites::j#1 ] 18.7: zp[1]:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] 12.83: zp[1]:48 [ place_sprites::j2#3 place_sprites::j2#2 ] 9.17: zp[1]:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] 9.11: zp[1]:49 [ place_sprites::col#2 place_sprites::col#1 ] 
Uplift Scope [setFAC] 62: zp[2]:29 [ setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ] 4: zp[1]:66 [ setFAC::prepareMEM1_$0 ] 4: zp[1]:67 [ setFAC::prepareMEM1_$1 ] 
Uplift Scope [gen_sintab] 23.76: zp[1]:21 [ gen_sintab::i#10 gen_sintab::i#1 ] 22: zp[1]:59 [ gen_sintab::$25 ] 11: zp[2]:57 [ gen_sintab::$24 ] 0.22: zp[1]:17 [ gen_sintab::length#10 ] 0.22: zp[2]:19 [ gen_sintab::sintab#13 ] 0: zp[1]:15 [ gen_sintab::max#2 ] 0: zp[1]:16 [ gen_sintab::min#2 ] 
Uplift Scope [] 12.48: zp[1]:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] 11.97: zp[1]:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] 8.17: zp[2]:23 [ progress_cursor#13 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] 6.54: zp[1]:22 [ progress_idx#14 progress_idx#12 progress_idx#10 ] 
Uplift Scope [gen_sprites] 23.1: zp[1]:33 [ gen_sprites::i#2 gen_sprites::i#1 ] 15.58: zp[2]:34 [ gen_sprites::spr#2 gen_sprites::spr#1 ] 
Uplift Scope [clear_screen] 36.67: zp[2]:11 [ clear_screen::sc#2 clear_screen::sc#1 ] 
Uplift Scope [init] 31.17: zp[1]:10 [ init::i#2 init::i#1 ] 
Uplift Scope [getFAC] 22: zp[2]:55 [ getFAC::return#2 ] 4.33: zp[2]:60 [ getFAC::return#0 ] 
Uplift Scope [setMEMtoFAC] 4: zp[1]:68 [ setMEMtoFAC::prepareMEM1_$0 ] 4: zp[1]:69 [ setMEMtoFAC::prepareMEM1_$1 ] 0: zp[2]:31 [ setMEMtoFAC::mem#5 ] 
Uplift Scope [divMEMbyFAC] 4: zp[1]:64 [ divMEMbyFAC::prepareMEM1_$0 ] 4: zp[1]:65 [ divMEMbyFAC::prepareMEM1_$1 ] 0: zp[2]:27 [ divMEMbyFAC::mem#2 ] 
Uplift Scope [mulFACbyMEM] 4: zp[1]:62 [ mulFACbyMEM::prepareMEM1_$0 ] 4: zp[1]:63 [ mulFACbyMEM::prepareMEM1_$1 ] 0: zp[2]:25 [ mulFACbyMEM::mem#2 ] 
Uplift Scope [setARGtoFAC] 
Uplift Scope [addMEMtoFAC] 
Uplift Scope [subFACfromARG] 
Uplift Scope [sinFAC] 
Uplift Scope [RADIX] 
Uplift Scope [main] 
Uplift Scope [progress_init] 
Uplift Scope [progress_inc] 

Uplifting [gen_chargen_sprite] best 1064171 combination zp[1]:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] zp[2]:43 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] reg byte a [ gen_chargen_sprite::$6 ] reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] reg byte a [ gen_chargen_sprite::$3 ] zp[1]:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] zp[1]:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] zp[1]:39 [ gen_chargen_sprite::c#3 ] zp[1]:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] zp[1]:70 [ gen_chargen_sprite::ch#0 ] zp[2]:71 [ gen_chargen_sprite::$0 ] zp[2]:73 [ gen_chargen_sprite::$1 ] zp[2]:75 [ gen_chargen_sprite::chargen#0 ] 
Limited combination testing to 100 combinations of 9216 possible.
Uplifting [anim] best 1062971 combination zp[1]:8 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] zp[1]:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] reg byte a [ anim::$8 ] reg byte a [ anim::$10 ] zp[1]:9 [ anim::j#2 anim::j#1 ] zp[1]:5 [ anim::x_msb#2 anim::x_msb#1 ] zp[1]:52 [ anim::$7 ] zp[1]:6 [ anim::j2#2 anim::j2#1 ] zp[2]:50 [ anim::x#0 ] 
Limited combination testing to 100 combinations of 19440 possible.
Uplifting [place_sprites] best 1062911 combination reg byte x [ place_sprites::j2#1 ] zp[1]:46 [ place_sprites::j#2 place_sprites::j#1 ] zp[1]:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] zp[1]:48 [ place_sprites::j2#3 place_sprites::j2#2 ] zp[1]:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] zp[1]:49 [ place_sprites::col#2 place_sprites::col#1 ] 
Limited combination testing to 100 combinations of 972 possible.
Uplifting [setFAC] best 1062899 combination zp[2]:29 [ setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ] reg byte a [ setFAC::prepareMEM1_$0 ] reg byte a [ setFAC::prepareMEM1_$1 ] 
Uplifting [gen_sintab] best 1062832 combination zp[1]:21 [ gen_sintab::i#10 gen_sintab::i#1 ] reg byte a [ gen_sintab::$25 ] zp[2]:57 [ gen_sintab::$24 ] zp[1]:17 [ gen_sintab::length#10 ] zp[2]:19 [ gen_sintab::sintab#13 ] reg byte x [ gen_sintab::max#2 ] zp[1]:16 [ gen_sintab::min#2 ] 
Uplifting [] best 1062832 combination zp[1]:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] zp[1]:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] zp[2]:23 [ progress_cursor#13 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] zp[1]:22 [ progress_idx#14 progress_idx#12 progress_idx#10 ] 
Uplifting [gen_sprites] best 1062832 combination zp[1]:33 [ gen_sprites::i#2 gen_sprites::i#1 ] zp[2]:34 [ gen_sprites::spr#2 gen_sprites::spr#1 ] 
Uplifting [clear_screen] best 1062832 combination zp[2]:11 [ clear_screen::sc#2 clear_screen::sc#1 ] 
Uplifting [init] best 1062682 combination reg byte x [ init::i#2 init::i#1 ] 
Uplifting [getFAC] best 1062682 combination zp[2]:55 [ getFAC::return#2 ] zp[2]:60 [ getFAC::return#0 ] 
Uplifting [setMEMtoFAC] best 1062670 combination reg byte a [ setMEMtoFAC::prepareMEM1_$0 ] reg byte a [ setMEMtoFAC::prepareMEM1_$1 ] zp[2]:31 [ setMEMtoFAC::mem#5 ] 
Uplifting [divMEMbyFAC] best 1062658 combination reg byte a [ divMEMbyFAC::prepareMEM1_$0 ] reg byte a [ divMEMbyFAC::prepareMEM1_$1 ] zp[2]:27 [ divMEMbyFAC::mem#2 ] 
Uplifting [mulFACbyMEM] best 1062646 combination reg byte a [ mulFACbyMEM::prepareMEM1_$0 ] reg byte a [ mulFACbyMEM::prepareMEM1_$1 ] zp[2]:25 [ mulFACbyMEM::mem#2 ] 
Uplifting [setARGtoFAC] best 1062646 combination 
Uplifting [addMEMtoFAC] best 1062646 combination 
Uplifting [subFACfromARG] best 1062646 combination 
Uplifting [sinFAC] best 1062646 combination 
Uplifting [RADIX] best 1062646 combination 
Uplifting [main] best 1062646 combination 
Uplifting [progress_init] best 1062646 combination 
Uplifting [progress_inc] best 1062646 combination 
Attempting to uplift remaining variables inzp[1]:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ]
Uplifting [gen_chargen_sprite] best 1062646 combination zp[1]:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] 
Attempting to uplift remaining variables inzp[1]:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ]
Uplifting [gen_chargen_sprite] best 1062646 combination zp[1]:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] 
Attempting to uplift remaining variables inzp[1]:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ]
Uplifting [gen_chargen_sprite] best 1062646 combination zp[1]:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] 
Attempting to uplift remaining variables inzp[1]:39 [ gen_chargen_sprite::c#3 ]
Uplifting [gen_chargen_sprite] best 1062646 combination zp[1]:39 [ gen_chargen_sprite::c#3 ] 
Attempting to uplift remaining variables inzp[1]:8 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ]
Uplifting [anim] best 1062646 combination zp[1]:8 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] 
Attempting to uplift remaining variables inzp[1]:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ]
Uplifting [anim] best 1062646 combination zp[1]:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] 
Attempting to uplift remaining variables inzp[1]:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ]
Uplifting [gen_chargen_sprite] best 1062646 combination zp[1]:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] 
Attempting to uplift remaining variables inzp[1]:9 [ anim::j#2 anim::j#1 ]
Uplifting [anim] best 1062646 combination zp[1]:9 [ anim::j#2 anim::j#1 ] 
Attempting to uplift remaining variables inzp[1]:5 [ anim::x_msb#2 anim::x_msb#1 ]
Uplifting [anim] best 1062646 combination zp[1]:5 [ anim::x_msb#2 anim::x_msb#1 ] 
Attempting to uplift remaining variables inzp[1]:52 [ anim::$7 ]
Uplifting [anim] best 1062646 combination zp[1]:52 [ anim::$7 ] 
Attempting to uplift remaining variables inzp[1]:6 [ anim::j2#2 anim::j2#1 ]
Uplifting [anim] best 1062646 combination zp[1]:6 [ anim::j2#2 anim::j2#1 ] 
Attempting to uplift remaining variables inzp[1]:21 [ gen_sintab::i#10 gen_sintab::i#1 ]
Uplifting [gen_sintab] best 1062646 combination zp[1]:21 [ gen_sintab::i#10 gen_sintab::i#1 ] 
Attempting to uplift remaining variables inzp[1]:33 [ gen_sprites::i#2 gen_sprites::i#1 ]
Uplifting [gen_sprites] best 1062646 combination zp[1]:33 [ gen_sprites::i#2 gen_sprites::i#1 ] 
Attempting to uplift remaining variables inzp[1]:46 [ place_sprites::j#2 place_sprites::j#1 ]
Uplifting [place_sprites] best 1062646 combination zp[1]:46 [ place_sprites::j#2 place_sprites::j#1 ] 
Attempting to uplift remaining variables inzp[1]:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ]
Uplifting [place_sprites] best 1062646 combination zp[1]:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] 
Attempting to uplift remaining variables inzp[1]:48 [ place_sprites::j2#3 place_sprites::j2#2 ]
Uplifting [place_sprites] best 1062646 combination zp[1]:48 [ place_sprites::j2#3 place_sprites::j2#2 ] 
Attempting to uplift remaining variables inzp[1]:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ]
Uplifting [] best 1062646 combination zp[1]:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] 
Attempting to uplift remaining variables inzp[1]:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ]
Uplifting [] best 1062646 combination zp[1]:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] 
Attempting to uplift remaining variables inzp[1]:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ]
Uplifting [place_sprites] best 1062646 combination zp[1]:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] 
Attempting to uplift remaining variables inzp[1]:49 [ place_sprites::col#2 place_sprites::col#1 ]
Uplifting [place_sprites] best 1062646 combination zp[1]:49 [ place_sprites::col#2 place_sprites::col#1 ] 
Attempting to uplift remaining variables inzp[1]:22 [ progress_idx#14 progress_idx#12 progress_idx#10 ]
Uplifting [] best 1062646 combination zp[1]:22 [ progress_idx#14 progress_idx#12 progress_idx#10 ] 
Attempting to uplift remaining variables inzp[1]:70 [ gen_chargen_sprite::ch#0 ]
Uplifting [gen_chargen_sprite] best 1062615 combination reg byte x [ gen_chargen_sprite::ch#0 ] 
Attempting to uplift remaining variables inzp[1]:17 [ gen_sintab::length#10 ]
Uplifting [gen_sintab] best 1062615 combination zp[1]:17 [ gen_sintab::length#10 ] 
Attempting to uplift remaining variables inzp[1]:16 [ gen_sintab::min#2 ]
Uplifting [gen_sintab] best 1062615 combination zp[1]:16 [ gen_sintab::min#2 ] 
Coalescing zero page register [ zp[1]:5 [ anim::x_msb#2 anim::x_msb#1 ] ] with [ zp[1]:52 [ anim::$7 ] ] - score: 2
Coalescing zero page register [ zp[2]:55 [ getFAC::return#2 ] ] with [ zp[2]:57 [ gen_sintab::$24 ] ] - score: 1
Coalescing zero page register [ zp[2]:55 [ getFAC::return#2 gen_sintab::$24 ] ] with [ zp[2]:60 [ getFAC::return#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:71 [ gen_chargen_sprite::$0 ] ] with [ zp[2]:73 [ gen_chargen_sprite::$1 ] ] - score: 1
Coalescing zero page register [ zp[2]:71 [ gen_chargen_sprite::$0 gen_chargen_sprite::$1 ] ] with [ zp[2]:75 [ gen_chargen_sprite::chargen#0 ] ] - score: 1
Coalescing zero page register [ zp[1]:16 [ gen_sintab::min#2 ] ] with [ zp[1]:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] ]
Coalescing zero page register [ zp[1]:17 [ gen_sintab::length#10 ] ] with [ zp[1]:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] ]
Coalescing zero page register [ zp[2]:19 [ gen_sintab::sintab#13 ] ] with [ zp[2]:11 [ clear_screen::sc#2 clear_screen::sc#1 ] ]
Coalescing zero page register [ zp[1]:21 [ gen_sintab::i#10 gen_sintab::i#1 ] ] with [ zp[1]:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] ]
Coalescing zero page register [ zp[1]:22 [ progress_idx#14 progress_idx#12 progress_idx#10 ] ] with [ zp[1]:5 [ anim::x_msb#2 anim::x_msb#1 anim::$7 ] ]
Coalescing zero page register [ zp[2]:27 [ divMEMbyFAC::mem#2 ] ] with [ zp[2]:25 [ mulFACbyMEM::mem#2 ] ]
Coalescing zero page register [ zp[2]:31 [ setMEMtoFAC::mem#5 ] ] with [ zp[2]:29 [ setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ] ]
Coalescing zero page register [ zp[1]:33 [ gen_sprites::i#2 gen_sprites::i#1 ] ] with [ zp[1]:6 [ anim::j2#2 anim::j2#1 ] ]
Coalescing zero page register [ zp[2]:34 [ gen_sprites::spr#2 gen_sprites::spr#1 ] ] with [ zp[2]:23 [ progress_cursor#13 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] ]
Coalescing zero page register [ zp[1]:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] ] with [ zp[1]:8 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] ]
Coalescing zero page register [ zp[1]:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] ] with [ zp[1]:9 [ anim::j#2 anim::j#1 ] ]
Coalescing zero page register [ zp[1]:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] ] with [ zp[1]:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] ]
Coalescing zero page register [ zp[1]:46 [ place_sprites::j#2 place_sprites::j#1 ] ] with [ zp[1]:39 [ gen_chargen_sprite::c#3 ] ]
Coalescing zero page register [ zp[1]:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] ] with [ zp[1]:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] ]
Coalescing zero page register [ zp[2]:50 [ anim::x#0 ] ] with [ zp[2]:43 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] ]
Coalescing zero page register [ zp[2]:71 [ gen_chargen_sprite::$0 gen_chargen_sprite::$1 gen_chargen_sprite::chargen#0 ] ] with [ zp[2]:55 [ getFAC::return#2 gen_sintab::$24 getFAC::return#0 ] ]
Coalescing zero page register [ zp[2]:31 [ setMEMtoFAC::mem#5 setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ] ] with [ zp[2]:27 [ divMEMbyFAC::mem#2 mulFACbyMEM::mem#2 ] ]
Coalescing zero page register [ zp[1]:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] ] with [ zp[1]:16 [ gen_sintab::min#2 sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] ]
Coalescing zero page register [ zp[1]:46 [ place_sprites::j#2 place_sprites::j#1 gen_chargen_sprite::c#3 ] ] with [ zp[1]:17 [ gen_sintab::length#10 sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] ]
Coalescing zero page register [ zp[1]:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] ] with [ zp[1]:21 [ gen_sintab::i#10 gen_sintab::i#1 anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] ]
Coalescing zero page register [ zp[1]:48 [ place_sprites::j2#3 place_sprites::j2#2 ] ] with [ zp[1]:22 [ progress_idx#14 progress_idx#12 progress_idx#10 anim::x_msb#2 anim::x_msb#1 anim::$7 ] ]
Coalescing zero page register [ zp[1]:49 [ place_sprites::col#2 place_sprites::col#1 ] ] with [ zp[1]:33 [ gen_sprites::i#2 gen_sprites::i#1 anim::j2#2 anim::j2#1 ] ]
Coalescing zero page register [ zp[2]:50 [ anim::x#0 gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] ] with [ zp[2]:19 [ gen_sintab::sintab#13 clear_screen::sc#2 clear_screen::sc#1 ] ]
Coalescing zero page register [ zp[2]:71 [ gen_chargen_sprite::$0 gen_chargen_sprite::$1 gen_chargen_sprite::chargen#0 getFAC::return#2 gen_sintab::$24 getFAC::return#0 ] ] with [ zp[2]:31 [ setMEMtoFAC::mem#5 setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 divMEMbyFAC::mem#2 mulFACbyMEM::mem#2 ] ]
Allocated (was zp[2]:34) zp[2]:2 [ gen_sprites::spr#2 gen_sprites::spr#1 progress_cursor#13 progress_init::line#2 progress_cursor#11 progress_cursor#10 ]
Allocated (was zp[1]:36) zp[1]:4 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ]
Allocated (was zp[1]:37) zp[1]:5 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 anim::j#2 anim::j#1 ]
Allocated (was zp[1]:45) zp[1]:6 [ place_sprites::spr_id#2 place_sprites::spr_id#1 gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 gen_sintab::min#2 sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ]
Allocated (was zp[1]:46) zp[1]:8 [ place_sprites::j#2 place_sprites::j#1 gen_chargen_sprite::c#3 gen_sintab::length#10 sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ]
Allocated (was zp[1]:47) zp[1]:9 [ place_sprites::spr_x#2 place_sprites::spr_x#1 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 gen_sintab::i#10 gen_sintab::i#1 anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ]
Allocated (was zp[1]:48) zp[1]:10 [ place_sprites::j2#3 place_sprites::j2#2 progress_idx#14 progress_idx#12 progress_idx#10 anim::x_msb#2 anim::x_msb#1 anim::$7 ]
Allocated (was zp[1]:49) zp[1]:11 [ place_sprites::col#2 place_sprites::col#1 gen_sprites::i#2 gen_sprites::i#1 anim::j2#2 anim::j2#1 ]
Allocated (was zp[2]:50) zp[2]:15 [ anim::x#0 gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 gen_sintab::sintab#13 clear_screen::sc#2 clear_screen::sc#1 ]
Allocated (was zp[2]:71) zp[2]:19 [ gen_chargen_sprite::$0 gen_chargen_sprite::$1 gen_chargen_sprite::chargen#0 getFAC::return#2 gen_sintab::$24 getFAC::return#0 setMEMtoFAC::mem#5 setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 divMEMbyFAC::mem#2 mulFACbyMEM::mem#2 ]

ASSEMBLER BEFORE OPTIMIZATION
  // File Comments
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(__bbegin)
.pc = $80d "Program"
  // Global Constants & labels
  // Processor Port Register controlling RAM/ROM configuration and the datasette
  .label PROCPORT = 1
  // The address of the CHARGEN character set
  .label CHARGEN = $d000
  .label SPRITES_XPOS = $d000
  .label SPRITES_YPOS = $d001
  .label SPRITES_XMSB = $d010
  .label RASTER = $d012
  .label SPRITES_ENABLE = $d015
  .label SPRITES_EXPAND_Y = $d017
  .label SPRITES_EXPAND_X = $d01d
  .label BORDERCOL = $d020
  .label SPRITES_COLS = $d027
  // Color Ram
  .label COLS = $d800
  // Zeropage addresses used to hold lo/hi-bytes of addresses of float numbers in MEM
  .label memLo = $fe
  .label memHi = $ff
  .const sinlen_x = $dd
  .const sinlen_y = $c5
  .label sprites = $2000
  .label SCREEN = $400
  // Current index within the progress cursor (0-7)
  .label progress_idx = $a
  // Current position of the progress cursor
  .label progress_cursor = 2
  .label sin_idx_x = 6
  .label sin_idx_y = 8
  // @begin
__bbegin:
  // [1] phi from @begin to @1 [phi:@begin->@1]
__b1_from___bbegin:
  jmp __b1
  // @1
__b1:
  // [2] call main 
  // [4] phi from @1 to main [phi:@1->main]
main_from___b1:
  jsr main
  // [3] phi from @1 to @end [phi:@1->@end]
__bend_from___b1:
  jmp __bend
  // @end
__bend:
  // main
main: {
    // [5] call init 
    // [43] phi from main to init [phi:main->init]
  init_from_main:
    jsr init
    // [6] phi from main to main::@1 [phi:main->main::@1]
  __b1_from_main:
    // [6] phi (byte) sin_idx_y#13 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_idx_y
    // [6] phi (byte) sin_idx_x#13 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_idx_x
    jmp __b1
    // [6] phi from main::@1 main::@2 to main::@1 [phi:main::@1/main::@2->main::@1]
  __b1_from___b1:
  __b1_from___b2:
    // [6] phi (byte) sin_idx_y#13 = (byte) sin_idx_y#13 [phi:main::@1/main::@2->main::@1#0] -- register_copy 
    // [6] phi (byte) sin_idx_x#13 = (byte) sin_idx_x#13 [phi:main::@1/main::@2->main::@1#1] -- register_copy 
    jmp __b1
    // main::@1
  __b1:
    // [7] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda #$ff
    cmp RASTER
    bne __b1_from___b1
    // [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  __b2_from___b1:
    jmp __b2
    // main::@2
  __b2:
    // [9] call anim 
    jsr anim
    jmp __b1_from___b2
}
  // anim
anim: {
    .label __7 = $a
    .label xidx = 9
    .label yidx = 4
    .label x = $f
    .label x_msb = $a
    .label j2 = $b
    .label j = 5
    // [10] *((const byte*) BORDERCOL) ← ++ *((const byte*) BORDERCOL) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
    // [11] (byte) anim::xidx#0 ← (byte) sin_idx_x#13 -- vbuz1=vbuz2 
    lda.z sin_idx_x
    sta.z xidx
    // [12] (byte) anim::yidx#0 ← (byte) sin_idx_y#13 -- vbuz1=vbuz2 
    lda.z sin_idx_y
    sta.z yidx
    // [13] phi from anim to anim::@3 [phi:anim->anim::@3]
  __b3_from_anim:
    // [13] phi (byte) anim::j#2 = (byte) 0 [phi:anim->anim::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z j
    // [13] phi (byte) anim::yidx#3 = (byte) anim::yidx#0 [phi:anim->anim::@3#1] -- register_copy 
    // [13] phi (byte) anim::j2#2 = (byte) $c [phi:anim->anim::@3#2] -- vbuz1=vbuc1 
    lda #$c
    sta.z j2
    // [13] phi (byte) anim::x_msb#2 = (byte) 0 [phi:anim->anim::@3#3] -- vbuz1=vbuc1 
    lda #0
    sta.z x_msb
    // [13] phi (byte) anim::xidx#3 = (byte) anim::xidx#0 [phi:anim->anim::@3#4] -- register_copy 
    jmp __b3
    // [13] phi from anim::@5 to anim::@3 [phi:anim::@5->anim::@3]
  __b3_from___b5:
    // [13] phi (byte) anim::j#2 = (byte) anim::j#1 [phi:anim::@5->anim::@3#0] -- register_copy 
    // [13] phi (byte) anim::yidx#3 = (byte) anim::yidx#6 [phi:anim::@5->anim::@3#1] -- register_copy 
    // [13] phi (byte) anim::j2#2 = (byte) anim::j2#1 [phi:anim::@5->anim::@3#2] -- register_copy 
    // [13] phi (byte) anim::x_msb#2 = (byte) anim::x_msb#1 [phi:anim::@5->anim::@3#3] -- register_copy 
    // [13] phi (byte) anim::xidx#3 = (byte) anim::xidx#5 [phi:anim::@5->anim::@3#4] -- register_copy 
    jmp __b3
    // anim::@3
  __b3:
    // [14] (word) anim::x#0 ← (word) $1e + *((const byte*) sintab_x + (byte) anim::xidx#3) -- vwuz1=vwuc1_plus_pbuc2_derefidx_vbuz2 
    ldy.z xidx
    lda sintab_x,y
    clc
    adc #<$1e
    sta.z x
    lda #>$1e
    adc #0
    sta.z x+1
    // [15] (byte~) anim::$7 ← (byte) anim::x_msb#2 << (byte) 1 -- vbuz1=vbuz1_rol_1 
    asl.z __7
    // [16] (byte~) anim::$8 ← > (word) anim::x#0 -- vbuaa=_hi_vwuz1 
    lda.z x+1
    // [17] (byte) anim::x_msb#1 ← (byte~) anim::$7 | (byte~) anim::$8 -- vbuz1=vbuz1_bor_vbuaa 
    ora.z x_msb
    sta.z x_msb
    // [18] (byte~) anim::$10 ← < (word) anim::x#0 -- vbuaa=_lo_vwuz1 
    lda.z x
    // [19] *((const byte*) SPRITES_XPOS + (byte) anim::j2#2) ← (byte~) anim::$10 -- pbuc1_derefidx_vbuz1=vbuaa 
    ldy.z j2
    sta SPRITES_XPOS,y
    // [20] *((const byte*) SPRITES_YPOS + (byte) anim::j2#2) ← *((const byte*) sintab_y + (byte) anim::yidx#3) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 
    ldy.z yidx
    lda sintab_y,y
    ldy.z j2
    sta SPRITES_YPOS,y
    // [21] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte) $a -- vbuz1=vbuz1_plus_vbuc1 
    lax.z xidx
    axs #-[$a]
    stx.z xidx
    // [22] if((byte) anim::xidx#1<(const byte) sinlen_x) goto anim::@4 -- vbuz1_lt_vbuc1_then_la1 
    lda.z xidx
    cmp #sinlen_x
    bcc __b4_from___b3
    jmp __b6
    // anim::@6
  __b6:
    // [23] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x -- vbuz1=vbuz1_minus_vbuc1 
    lax.z xidx
    axs #sinlen_x
    stx.z xidx
    // [24] phi from anim::@3 anim::@6 to anim::@4 [phi:anim::@3/anim::@6->anim::@4]
  __b4_from___b3:
  __b4_from___b6:
    // [24] phi (byte) anim::xidx#5 = (byte) anim::xidx#1 [phi:anim::@3/anim::@6->anim::@4#0] -- register_copy 
    jmp __b4
    // anim::@4
  __b4:
    // [25] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte) 8 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z yidx
    axs #-[8]
    stx.z yidx
    // [26] if((byte) anim::yidx#1<(const byte) sinlen_y) goto anim::@5 -- vbuz1_lt_vbuc1_then_la1 
    lda.z yidx
    cmp #sinlen_y
    bcc __b5_from___b4
    jmp __b7
    // anim::@7
  __b7:
    // [27] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y -- vbuz1=vbuz1_minus_vbuc1 
    lax.z yidx
    axs #sinlen_y
    stx.z yidx
    // [28] phi from anim::@4 anim::@7 to anim::@5 [phi:anim::@4/anim::@7->anim::@5]
  __b5_from___b4:
  __b5_from___b7:
    // [28] phi (byte) anim::yidx#6 = (byte) anim::yidx#1 [phi:anim::@4/anim::@7->anim::@5#0] -- register_copy 
    jmp __b5
    // anim::@5
  __b5:
    // [29] (byte) anim::j2#1 ← (byte) anim::j2#2 - (byte) 2 -- vbuz1=vbuz1_minus_2 
    dec.z j2
    dec.z j2
    // [30] (byte) anim::j#1 ← ++ (byte) anim::j#2 -- vbuz1=_inc_vbuz1 
    inc.z j
    // [31] if((byte) anim::j#1!=(byte) 7) goto anim::@3 -- vbuz1_neq_vbuc1_then_la1 
    lda #7
    cmp.z j
    bne __b3_from___b5
    jmp __b8
    // anim::@8
  __b8:
    // [32] *((const byte*) SPRITES_XMSB) ← (byte) anim::x_msb#1 -- _deref_pbuc1=vbuz1 
    lda.z x_msb
    sta SPRITES_XMSB
    // [33] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 -- vbuz1=_inc_vbuz1 
    inc.z sin_idx_x
    // [34] if((byte) sin_idx_x#3<(const byte) sinlen_x) goto anim::@9 -- vbuz1_lt_vbuc1_then_la1 
    lda.z sin_idx_x
    cmp #sinlen_x
    bcc __b9_from___b8
    // [36] phi from anim::@8 to anim::@1 [phi:anim::@8->anim::@1]
  __b1_from___b8:
    // [36] phi (byte) sin_idx_x#11 = (byte) 0 [phi:anim::@8->anim::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_idx_x
    jmp __b1
    // [35] phi from anim::@8 to anim::@9 [phi:anim::@8->anim::@9]
  __b9_from___b8:
    jmp __b9
    // anim::@9
  __b9:
    // [36] phi from anim::@9 to anim::@1 [phi:anim::@9->anim::@1]
  __b1_from___b9:
    // [36] phi (byte) sin_idx_x#11 = (byte) sin_idx_x#3 [phi:anim::@9->anim::@1#0] -- register_copy 
    jmp __b1
    // anim::@1
  __b1:
    // [37] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 -- vbuz1=_inc_vbuz1 
    inc.z sin_idx_y
    // [38] if((byte) sin_idx_y#3<(const byte) sinlen_y) goto anim::@10 -- vbuz1_lt_vbuc1_then_la1 
    lda.z sin_idx_y
    cmp #sinlen_y
    bcc __b10_from___b1
    // [40] phi from anim::@1 to anim::@2 [phi:anim::@1->anim::@2]
  __b2_from___b1:
    // [40] phi (byte) sin_idx_y#11 = (byte) 0 [phi:anim::@1->anim::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_idx_y
    jmp __b2
    // [39] phi from anim::@1 to anim::@10 [phi:anim::@1->anim::@10]
  __b10_from___b1:
    jmp __b10
    // anim::@10
  __b10:
    // [40] phi from anim::@10 to anim::@2 [phi:anim::@10->anim::@2]
  __b2_from___b10:
    // [40] phi (byte) sin_idx_y#11 = (byte) sin_idx_y#3 [phi:anim::@10->anim::@2#0] -- register_copy 
    jmp __b2
    // anim::@2
  __b2:
    // [41] *((const byte*) BORDERCOL) ← -- *((const byte*) BORDERCOL) -- _deref_pbuc1=_dec__deref_pbuc1 
    dec BORDERCOL
    jmp __breturn
    // anim::@return
  __breturn:
    // [42] return 
    rts
}
  // init
init: {
    // [44] call clear_screen 
    // [65] phi from init to clear_screen [phi:init->clear_screen]
  clear_screen_from_init:
    jsr clear_screen
    // [45] phi from init to init::@1 [phi:init->init::@1]
  __b1_from_init:
    // [45] phi (byte) init::i#2 = (byte) 0 [phi:init->init::@1#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b1
    // [45] phi from init::@1 to init::@1 [phi:init::@1->init::@1]
  __b1_from___b1:
    // [45] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy 
    jmp __b1
    // init::@1
  __b1:
    // [46] *((const byte*) COLS + (byte) init::i#2) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #0
    sta COLS,x
    // [47] *((const byte*) COLS+(byte) $28 + (byte) init::i#2) ← (byte) $b -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #$b
    sta COLS+$28,x
    // [48] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [49] if((byte) init::i#1!=(byte) $28) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$28
    bne __b1_from___b1
    // [50] phi from init::@1 to init::@2 [phi:init::@1->init::@2]
  __b2_from___b1:
    jmp __b2
    // init::@2
  __b2:
    // [51] call place_sprites 
    jsr place_sprites
    // [52] phi from init::@2 to init::@3 [phi:init::@2->init::@3]
  __b3_from___b2:
    jmp __b3
    // init::@3
  __b3:
    // [53] call gen_sprites 
    // [172] phi from init::@3 to gen_sprites [phi:init::@3->gen_sprites]
  gen_sprites_from___b3:
    jsr gen_sprites
    // [54] phi from init::@3 to init::@4 [phi:init::@3->init::@4]
  __b4_from___b3:
    jmp __b4
    // init::@4
  __b4:
    // [55] call progress_init 
    // [170] phi from init::@4 to progress_init [phi:init::@4->progress_init]
  progress_init_from___b4:
    // [170] phi (byte*) progress_init::line#2 = (const byte*) SCREEN [phi:init::@4->progress_init#0] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta.z progress_init.line
    lda #>SCREEN
    sta.z progress_init.line+1
    jsr progress_init
    // [56] phi from init::@4 to init::@5 [phi:init::@4->init::@5]
  __b5_from___b4:
    jmp __b5
    // init::@5
  __b5:
    // [57] call gen_sintab 
    // [71] phi from init::@5 to gen_sintab [phi:init::@5->gen_sintab]
  gen_sintab_from___b5:
    // [71] phi (byte*) gen_sintab::sintab#13 = (const byte*) sintab_x [phi:init::@5->gen_sintab#0] -- pbuz1=pbuc1 
    lda #<sintab_x
    sta.z gen_sintab.sintab
    lda #>sintab_x
    sta.z gen_sintab.sintab+1
    // [71] phi (byte) gen_sintab::length#10 = (const byte) sinlen_x [phi:init::@5->gen_sintab#1] -- vbuz1=vbuc1 
    lda #sinlen_x
    sta.z gen_sintab.length
    // [71] phi (byte) gen_sintab::min#2 = (byte) 0 [phi:init::@5->gen_sintab#2] -- vbuz1=vbuc1 
    lda #0
    sta.z gen_sintab.min
    // [71] phi (byte) gen_sintab::max#2 = (byte) $ff [phi:init::@5->gen_sintab#3] -- vbuxx=vbuc1 
    ldx #$ff
    jsr gen_sintab
    // [58] phi from init::@5 to init::@6 [phi:init::@5->init::@6]
  __b6_from___b5:
    jmp __b6
    // init::@6
  __b6:
    // [59] call progress_init 
    // [170] phi from init::@6 to progress_init [phi:init::@6->progress_init]
  progress_init_from___b6:
    // [170] phi (byte*) progress_init::line#2 = (const byte*) SCREEN+(byte) $28 [phi:init::@6->progress_init#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28
    sta.z progress_init.line
    lda #>SCREEN+$28
    sta.z progress_init.line+1
    jsr progress_init
    // [60] phi from init::@6 to init::@7 [phi:init::@6->init::@7]
  __b7_from___b6:
    jmp __b7
    // init::@7
  __b7:
    // [61] call gen_sintab 
    // [71] phi from init::@7 to gen_sintab [phi:init::@7->gen_sintab]
  gen_sintab_from___b7:
    // [71] phi (byte*) gen_sintab::sintab#13 = (const byte*) sintab_y [phi:init::@7->gen_sintab#0] -- pbuz1=pbuc1 
    lda #<sintab_y
    sta.z gen_sintab.sintab
    lda #>sintab_y
    sta.z gen_sintab.sintab+1
    // [71] phi (byte) gen_sintab::length#10 = (const byte) sinlen_y [phi:init::@7->gen_sintab#1] -- vbuz1=vbuc1 
    lda #sinlen_y
    sta.z gen_sintab.length
    // [71] phi (byte) gen_sintab::min#2 = (byte) $32 [phi:init::@7->gen_sintab#2] -- vbuz1=vbuc1 
    lda #$32
    sta.z gen_sintab.min
    // [71] phi (byte) gen_sintab::max#2 = (byte) $d0 [phi:init::@7->gen_sintab#3] -- vbuxx=vbuc1 
    ldx #$d0
    jsr gen_sintab
    // [62] phi from init::@7 to init::@8 [phi:init::@7->init::@8]
  __b8_from___b7:
    jmp __b8
    // init::@8
  __b8:
    // [63] call clear_screen 
    // [65] phi from init::@8 to clear_screen [phi:init::@8->clear_screen]
  clear_screen_from___b8:
    jsr clear_screen
    jmp __breturn
    // init::@return
  __breturn:
    // [64] return 
    rts
}
  // clear_screen
clear_screen: {
    .label sc = $f
    // [66] phi from clear_screen to clear_screen::@1 [phi:clear_screen->clear_screen::@1]
  __b1_from_clear_screen:
    // [66] phi (byte*) clear_screen::sc#2 = (const byte*) SCREEN [phi:clear_screen->clear_screen::@1#0] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta.z sc
    lda #>SCREEN
    sta.z sc+1
    jmp __b1
    // clear_screen::@1
  __b1:
    // [67] if((byte*) clear_screen::sc#2<(const byte*) SCREEN+(word) $3e8) goto clear_screen::@2 -- pbuz1_lt_pbuc1_then_la1 
    lda.z sc+1
    cmp #>SCREEN+$3e8
    bcc __b2
    bne !+
    lda.z sc
    cmp #<SCREEN+$3e8
    bcc __b2
  !:
    jmp __breturn
    // clear_screen::@return
  __breturn:
    // [68] return 
    rts
    // clear_screen::@2
  __b2:
    // [69] *((byte*) clear_screen::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (sc),y
    // [70] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 -- pbuz1=_inc_pbuz1 
    inc.z sc
    bne !+
    inc.z sc+1
  !:
    // [66] phi from clear_screen::@2 to clear_screen::@1 [phi:clear_screen::@2->clear_screen::@1]
  __b1_from___b2:
    // [66] phi (byte*) clear_screen::sc#2 = (byte*) clear_screen::sc#1 [phi:clear_screen::@2->clear_screen::@1#0] -- register_copy 
    jmp __b1
}
  // gen_sintab
// Generate a sinus table using BASIC floats
// - sintab is a pointer to the table to fill
// - length is the length of the sine table
// - min is the minimum value of the generated sinus
// - max is the maximum value of the generated sinus
// gen_sintab(byte* zp($f) sintab, byte zp(8) length, byte zp(6) min, byte register(X) max)
gen_sintab: {
    // amplitude/2
    .label f_2pi = $e2e5
    .label __24 = $13
    .label i = 9
    .label min = 6
    .label length = 8
    .label sintab = $f
    // [72] (word) setFAC::w#0 ← (word)(byte) gen_sintab::max#2 -- vwuz1=_word_vbuxx 
    txa
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [73] call setFAC 
    // [152] phi from gen_sintab to setFAC [phi:gen_sintab->setFAC]
  setFAC_from_gen_sintab:
    // [152] phi (word) setFAC::prepareMEM1_mem#0 = (word) setFAC::w#0 [phi:gen_sintab->setFAC#0] -- register_copy 
    jsr setFAC
    // [74] phi from gen_sintab to gen_sintab::@3 [phi:gen_sintab->gen_sintab::@3]
  __b3_from_gen_sintab:
    jmp __b3
    // gen_sintab::@3
  __b3:
    // [75] call setARGtoFAC 
    jsr setARGtoFAC
    jmp __b4
    // gen_sintab::@4
  __b4:
    // [76] (word) setFAC::w#1 ← (word)(byte) gen_sintab::min#2 -- vwuz1=_word_vbuz2 
    lda.z min
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [77] call setFAC 
    // [152] phi from gen_sintab::@4 to setFAC [phi:gen_sintab::@4->setFAC]
  setFAC_from___b4:
    // [152] phi (word) setFAC::prepareMEM1_mem#0 = (word) setFAC::w#1 [phi:gen_sintab::@4->setFAC#0] -- register_copy 
    jsr setFAC
    // [78] phi from gen_sintab::@4 to gen_sintab::@5 [phi:gen_sintab::@4->gen_sintab::@5]
  __b5_from___b4:
    jmp __b5
    // gen_sintab::@5
  __b5:
    // [79] call setMEMtoFAC 
    // [159] phi from gen_sintab::@5 to setMEMtoFAC [phi:gen_sintab::@5->setMEMtoFAC]
  setMEMtoFAC_from___b5:
    // [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte*) gen_sintab::f_min [phi:gen_sintab::@5->setMEMtoFAC#0] -- pbuz1=pbuc1 
    lda #<f_min
    sta.z setMEMtoFAC.mem
    lda #>f_min
    sta.z setMEMtoFAC.mem+1
    jsr setMEMtoFAC
    // [80] phi from gen_sintab::@5 to gen_sintab::@6 [phi:gen_sintab::@5->gen_sintab::@6]
  __b6_from___b5:
    jmp __b6
    // gen_sintab::@6
  __b6:
    // [81] call subFACfromARG 
    jsr subFACfromARG
    // [82] phi from gen_sintab::@6 to gen_sintab::@7 [phi:gen_sintab::@6->gen_sintab::@7]
  __b7_from___b6:
    jmp __b7
    // gen_sintab::@7
  __b7:
    // [83] call setMEMtoFAC 
    // [159] phi from gen_sintab::@7 to setMEMtoFAC [phi:gen_sintab::@7->setMEMtoFAC]
  setMEMtoFAC_from___b7:
    // [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte*) gen_sintab::f_amp [phi:gen_sintab::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 
    lda #<f_amp
    sta.z setMEMtoFAC.mem
    lda #>f_amp
    sta.z setMEMtoFAC.mem+1
    jsr setMEMtoFAC
    // [84] phi from gen_sintab::@7 to gen_sintab::@8 [phi:gen_sintab::@7->gen_sintab::@8]
  __b8_from___b7:
    jmp __b8
    // gen_sintab::@8
  __b8:
    // [85] call setFAC 
    // [152] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC]
  setFAC_from___b8:
    // [152] phi (word) setFAC::prepareMEM1_mem#0 = (byte) 2 [phi:gen_sintab::@8->setFAC#0] -- vwuz1=vbuc1 
    lda #<2
    sta.z setFAC.prepareMEM1_mem
    lda #>2
    sta.z setFAC.prepareMEM1_mem+1
    jsr setFAC
    // [86] phi from gen_sintab::@8 to gen_sintab::@9 [phi:gen_sintab::@8->gen_sintab::@9]
  __b9_from___b8:
    jmp __b9
    // gen_sintab::@9
  __b9:
    // [87] call divMEMbyFAC 
    // [145] phi from gen_sintab::@9 to divMEMbyFAC [phi:gen_sintab::@9->divMEMbyFAC]
  divMEMbyFAC_from___b9:
    // [145] phi (byte*) divMEMbyFAC::mem#2 = (const byte*) gen_sintab::f_amp [phi:gen_sintab::@9->divMEMbyFAC#0] -- pbuz1=pbuc1 
    lda #<f_amp
    sta.z divMEMbyFAC.mem
    lda #>f_amp
    sta.z divMEMbyFAC.mem+1
    jsr divMEMbyFAC
    // [88] phi from gen_sintab::@9 to gen_sintab::@10 [phi:gen_sintab::@9->gen_sintab::@10]
  __b10_from___b9:
    jmp __b10
    // gen_sintab::@10
  __b10:
    // [89] call setMEMtoFAC 
    // [159] phi from gen_sintab::@10 to setMEMtoFAC [phi:gen_sintab::@10->setMEMtoFAC]
  setMEMtoFAC_from___b10:
    // [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte*) gen_sintab::f_amp [phi:gen_sintab::@10->setMEMtoFAC#0] -- pbuz1=pbuc1 
    lda #<f_amp
    sta.z setMEMtoFAC.mem
    lda #>f_amp
    sta.z setMEMtoFAC.mem+1
    jsr setMEMtoFAC
    // [90] phi from gen_sintab::@10 to gen_sintab::@11 [phi:gen_sintab::@10->gen_sintab::@11]
  __b11_from___b10:
    jmp __b11
    // gen_sintab::@11
  __b11:
    // [91] call addMEMtoFAC 
    // [131] phi from gen_sintab::@11 to addMEMtoFAC [phi:gen_sintab::@11->addMEMtoFAC]
  addMEMtoFAC_from___b11:
    jsr addMEMtoFAC
    // [92] phi from gen_sintab::@11 to gen_sintab::@12 [phi:gen_sintab::@11->gen_sintab::@12]
  __b12_from___b11:
    jmp __b12
    // gen_sintab::@12
  __b12:
    // [93] call setMEMtoFAC 
    // [159] phi from gen_sintab::@12 to setMEMtoFAC [phi:gen_sintab::@12->setMEMtoFAC]
  setMEMtoFAC_from___b12:
    // [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte*) gen_sintab::f_min [phi:gen_sintab::@12->setMEMtoFAC#0] -- pbuz1=pbuc1 
    lda #<f_min
    sta.z setMEMtoFAC.mem
    lda #>f_min
    sta.z setMEMtoFAC.mem+1
    jsr setMEMtoFAC
    // [94] phi from gen_sintab::@12 to gen_sintab::@1 [phi:gen_sintab::@12->gen_sintab::@1]
  __b1_from___b12:
    // [94] phi (byte*) progress_cursor#13 = (byte*) progress_init::line#2 [phi:gen_sintab::@12->gen_sintab::@1#0] -- register_copy 
    // [94] phi (byte) progress_idx#14 = (byte) 0 [phi:gen_sintab::@12->gen_sintab::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z progress_idx
    // [94] phi (byte) gen_sintab::i#10 = (byte) 0 [phi:gen_sintab::@12->gen_sintab::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp __b1
  // f_min = min + (max - min) / 2
    // gen_sintab::@1
  __b1:
    // [95] if((byte) gen_sintab::i#10<(byte) gen_sintab::length#10) goto gen_sintab::@2 -- vbuz1_lt_vbuz2_then_la1 
    lda.z i
    cmp.z length
    bcc __b2
    jmp __breturn
    // gen_sintab::@return
  __breturn:
    // [96] return 
    rts
    // gen_sintab::@2
  __b2:
    // [97] (word) setFAC::w#3 ← (word)(byte) gen_sintab::i#10 -- vwuz1=_word_vbuz2 
    lda.z i
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [98] call setFAC 
    // [152] phi from gen_sintab::@2 to setFAC [phi:gen_sintab::@2->setFAC]
  setFAC_from___b2:
    // [152] phi (word) setFAC::prepareMEM1_mem#0 = (word) setFAC::w#3 [phi:gen_sintab::@2->setFAC#0] -- register_copy 
    jsr setFAC
    // [99] phi from gen_sintab::@2 to gen_sintab::@13 [phi:gen_sintab::@2->gen_sintab::@13]
  __b13_from___b2:
    jmp __b13
    // gen_sintab::@13
  __b13:
    // [100] call mulFACbyMEM 
    // [136] phi from gen_sintab::@13 to mulFACbyMEM [phi:gen_sintab::@13->mulFACbyMEM]
  mulFACbyMEM_from___b13:
    // [136] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) gen_sintab::f_2pi [phi:gen_sintab::@13->mulFACbyMEM#0] -- pbuz1=pbuc1 
    lda #<f_2pi
    sta.z mulFACbyMEM.mem
    lda #>f_2pi
    sta.z mulFACbyMEM.mem+1
    jsr mulFACbyMEM
    // [101] phi from gen_sintab::@13 to gen_sintab::@14 [phi:gen_sintab::@13->gen_sintab::@14]
  __b14_from___b13:
    jmp __b14
    // gen_sintab::@14
  __b14:
    // [102] call setMEMtoFAC 
    // [159] phi from gen_sintab::@14 to setMEMtoFAC [phi:gen_sintab::@14->setMEMtoFAC]
  setMEMtoFAC_from___b14:
    // [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte*) gen_sintab::f_i [phi:gen_sintab::@14->setMEMtoFAC#0] -- pbuz1=pbuc1 
    lda #<f_i
    sta.z setMEMtoFAC.mem
    lda #>f_i
    sta.z setMEMtoFAC.mem+1
    jsr setMEMtoFAC
    jmp __b15
    // gen_sintab::@15
  __b15:
    // [103] (word) setFAC::w#4 ← (word)(byte) gen_sintab::length#10 -- vwuz1=_word_vbuz2 
    lda.z length
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [104] call setFAC 
    // [152] phi from gen_sintab::@15 to setFAC [phi:gen_sintab::@15->setFAC]
  setFAC_from___b15:
    // [152] phi (word) setFAC::prepareMEM1_mem#0 = (word) setFAC::w#4 [phi:gen_sintab::@15->setFAC#0] -- register_copy 
    jsr setFAC
    // [105] phi from gen_sintab::@15 to gen_sintab::@16 [phi:gen_sintab::@15->gen_sintab::@16]
  __b16_from___b15:
    jmp __b16
    // gen_sintab::@16
  __b16:
    // [106] call divMEMbyFAC 
    // [145] phi from gen_sintab::@16 to divMEMbyFAC [phi:gen_sintab::@16->divMEMbyFAC]
  divMEMbyFAC_from___b16:
    // [145] phi (byte*) divMEMbyFAC::mem#2 = (const byte*) gen_sintab::f_i [phi:gen_sintab::@16->divMEMbyFAC#0] -- pbuz1=pbuc1 
    lda #<f_i
    sta.z divMEMbyFAC.mem
    lda #>f_i
    sta.z divMEMbyFAC.mem+1
    jsr divMEMbyFAC
    // [107] phi from gen_sintab::@16 to gen_sintab::@17 [phi:gen_sintab::@16->gen_sintab::@17]
  __b17_from___b16:
    jmp __b17
    // gen_sintab::@17
  __b17:
    // [108] call sinFAC 
    jsr sinFAC
    // [109] phi from gen_sintab::@17 to gen_sintab::@18 [phi:gen_sintab::@17->gen_sintab::@18]
  __b18_from___b17:
    jmp __b18
    // gen_sintab::@18
  __b18:
    // [110] call mulFACbyMEM 
    // [136] phi from gen_sintab::@18 to mulFACbyMEM [phi:gen_sintab::@18->mulFACbyMEM]
  mulFACbyMEM_from___b18:
    // [136] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) gen_sintab::f_amp [phi:gen_sintab::@18->mulFACbyMEM#0] -- pbuz1=pbuc1 
    lda #<f_amp
    sta.z mulFACbyMEM.mem
    lda #>f_amp
    sta.z mulFACbyMEM.mem+1
    jsr mulFACbyMEM
    // [111] phi from gen_sintab::@18 to gen_sintab::@19 [phi:gen_sintab::@18->gen_sintab::@19]
  __b19_from___b18:
    jmp __b19
    // gen_sintab::@19
  __b19:
    // [112] call addMEMtoFAC 
    // [131] phi from gen_sintab::@19 to addMEMtoFAC [phi:gen_sintab::@19->addMEMtoFAC]
  addMEMtoFAC_from___b19:
    jsr addMEMtoFAC
    // [113] phi from gen_sintab::@19 to gen_sintab::@20 [phi:gen_sintab::@19->gen_sintab::@20]
  __b20_from___b19:
    jmp __b20
    // gen_sintab::@20
  __b20:
    // [114] call getFAC 
    jsr getFAC
    // [115] (word) getFAC::return#2 ← (word) getFAC::return#0
    jmp __b21
    // gen_sintab::@21
  __b21:
    // [116] (word~) gen_sintab::$24 ← (word) getFAC::return#2
    // [117] (byte~) gen_sintab::$25 ← (byte)(word~) gen_sintab::$24 -- vbuaa=_byte_vwuz1 
    lda.z __24
    // [118] *((byte*) gen_sintab::sintab#13 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$25 -- pbuz1_derefidx_vbuz2=vbuaa 
    // fac =  sin( i * 2 * PI / length ) * (max - min) / 2 + min + (max - min) / 2
    ldy.z i
    sta (sintab),y
    // [119] call progress_inc 
    jsr progress_inc
    jmp __b22
    // gen_sintab::@22
  __b22:
    // [120] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [94] phi from gen_sintab::@22 to gen_sintab::@1 [phi:gen_sintab::@22->gen_sintab::@1]
  __b1_from___b22:
    // [94] phi (byte*) progress_cursor#13 = (byte*) progress_cursor#11 [phi:gen_sintab::@22->gen_sintab::@1#0] -- register_copy 
    // [94] phi (byte) progress_idx#14 = (byte) progress_idx#12 [phi:gen_sintab::@22->gen_sintab::@1#1] -- register_copy 
    // [94] phi (byte) gen_sintab::i#10 = (byte) gen_sintab::i#1 [phi:gen_sintab::@22->gen_sintab::@1#2] -- register_copy 
    jmp __b1
    f_i: .byte 0, 0, 0, 0, 0
    // i * 2 * PI
    f_min: .byte 0, 0, 0, 0, 0
    // amplitude/2 + min
    f_amp: .byte 0, 0, 0, 0, 0
}
  // progress_inc
// Increase PETSCII progress one bit
// Done by increasing the character until the idx is 8 and then moving to the next char
progress_inc: {
    // [121] (byte) progress_idx#10 ← ++ (byte) progress_idx#14 -- vbuz1=_inc_vbuz1 
    inc.z progress_idx
    // [122] if((byte) progress_idx#10!=(byte) 8) goto progress_inc::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z progress_idx
    bne __b1_from_progress_inc
    jmp __b2
    // progress_inc::@2
  __b2:
    // [123] *((byte*) progress_cursor#13) ← *((const byte*) progress_inc::progress_chars+(byte) 8) -- _deref_pbuz1=_deref_pbuc1 
    lda progress_chars+8
    ldy #0
    sta (progress_cursor),y
    // [124] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#13 -- pbuz1=_inc_pbuz1 
    inc.z progress_cursor
    bne !+
    inc.z progress_cursor+1
  !:
    // [125] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1]
  __b1_from___b2:
    // [125] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#10 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy 
    // [125] phi (byte) progress_idx#12 = (byte) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z progress_idx
    jmp __b1
    // [125] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1]
  __b1_from_progress_inc:
    // [125] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#13 [phi:progress_inc->progress_inc::@1#0] -- register_copy 
    // [125] phi (byte) progress_idx#12 = (byte) progress_idx#10 [phi:progress_inc->progress_inc::@1#1] -- register_copy 
    jmp __b1
    // progress_inc::@1
  __b1:
    // [126] *((byte*) progress_cursor#11) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#12) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 
    ldy.z progress_idx
    lda progress_chars,y
    ldy #0
    sta (progress_cursor),y
    jmp __breturn
    // progress_inc::@return
  __breturn:
    // [127] return 
    rts
    // Progress characters
    progress_chars: .byte $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0
}
  // getFAC
// word = FAC
// Get the value of the FAC (floating point accumulator) as an integer 16bit word
// Destroys the value in the FAC in the process
getFAC: {
    .label return = $13
    // asm { jsr$b1aa stymemLo stamemHi  }
    // Load FAC (floating point accumulator) integer part into word register Y,A
    jsr $b1aa
    sty memLo
    sta memHi
    // [129] (word) getFAC::return#0 ← *((const byte*) memHi) w= *((const byte*) memLo) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 
    lda memLo
    sta.z return
    lda memHi
    sta.z return+1
    jmp __breturn
    // getFAC::@return
  __breturn:
    // [130] return 
    rts
}
  // addMEMtoFAC
// FAC = MEM+FAC
// Set FAC to MEM (float saved in memory) plus FAC (float accumulator)
// Reads 5 bytes from memory
addMEMtoFAC: {
    jmp prepareMEM1
    // addMEMtoFAC::prepareMEM1
  prepareMEM1:
    // [132] *((const byte*) memLo) ← <(word)(const byte*) gen_sintab::f_min -- _deref_pbuc1=vbuc2 
    lda #<gen_sintab.f_min
    sta memLo
    // [133] *((const byte*) memHi) ← >(word)(const byte*) gen_sintab::f_min -- _deref_pbuc1=vbuc2 
    lda #>gen_sintab.f_min
    sta memHi
    jmp __b1
    // addMEMtoFAC::@1
  __b1:
    // asm { ldamemLo ldymemHi jsr$b867  }
    lda memLo
    ldy memHi
    jsr $b867
    jmp __breturn
    // addMEMtoFAC::@return
  __breturn:
    // [135] return 
    rts
}
  // mulFACbyMEM
// FAC = MEM*FAC
// Set FAC to MEM (float saved in memory) multiplied by FAC (float accumulator)
// Reads 5 bytes from memory
// mulFACbyMEM(byte* zp($13) mem)
mulFACbyMEM: {
    .label mem = $13
    jmp prepareMEM1
    // mulFACbyMEM::prepareMEM1
  prepareMEM1:
    // [137] (byte~) mulFACbyMEM::prepareMEM1_$0 ← < (word)(byte*) mulFACbyMEM::mem#2 -- vbuaa=_lo_vwuz1 
    lda.z mem
    // [138] *((const byte*) memLo) ← (byte~) mulFACbyMEM::prepareMEM1_$0 -- _deref_pbuc1=vbuaa 
    sta memLo
    // [139] (byte~) mulFACbyMEM::prepareMEM1_$1 ← > (word)(byte*) mulFACbyMEM::mem#2 -- vbuaa=_hi_vwuz1 
    lda.z mem+1
    // [140] *((const byte*) memHi) ← (byte~) mulFACbyMEM::prepareMEM1_$1 -- _deref_pbuc1=vbuaa 
    sta memHi
    jmp __b1
    // mulFACbyMEM::@1
  __b1:
    // asm { ldamemLo ldymemHi jsr$ba28  }
    lda memLo
    ldy memHi
    jsr $ba28
    jmp __breturn
    // mulFACbyMEM::@return
  __breturn:
    // [142] return 
    rts
}
  // sinFAC
// FAC = sin(FAC)
// Set FAC to sinus of the FAC - sin(FAC)
// Sinus is calculated on radians (0-2*PI)
sinFAC: {
    // asm { jsr$e26b  }
    jsr $e26b
    jmp __breturn
    // sinFAC::@return
  __breturn:
    // [144] return 
    rts
}
  // divMEMbyFAC
// FAC = MEM/FAC
// Set FAC to MEM (float saved in memory) divided by FAC (float accumulator)
// Reads 5 bytes from memory
// divMEMbyFAC(byte* zp($13) mem)
divMEMbyFAC: {
    .label mem = $13
    jmp prepareMEM1
    // divMEMbyFAC::prepareMEM1
  prepareMEM1:
    // [146] (byte~) divMEMbyFAC::prepareMEM1_$0 ← < (word)(byte*) divMEMbyFAC::mem#2 -- vbuaa=_lo_vwuz1 
    lda.z mem
    // [147] *((const byte*) memLo) ← (byte~) divMEMbyFAC::prepareMEM1_$0 -- _deref_pbuc1=vbuaa 
    sta memLo
    // [148] (byte~) divMEMbyFAC::prepareMEM1_$1 ← > (word)(byte*) divMEMbyFAC::mem#2 -- vbuaa=_hi_vwuz1 
    lda.z mem+1
    // [149] *((const byte*) memHi) ← (byte~) divMEMbyFAC::prepareMEM1_$1 -- _deref_pbuc1=vbuaa 
    sta memHi
    jmp __b1
    // divMEMbyFAC::@1
  __b1:
    // asm { ldamemLo ldymemHi jsr$bb0f  }
    lda memLo
    ldy memHi
    jsr $bb0f
    jmp __breturn
    // divMEMbyFAC::@return
  __breturn:
    // [151] return 
    rts
}
  // setFAC
// FAC = word
// Set the FAC (floating point accumulator) to the integer value of a 16bit word
// setFAC(word zp($13) w)
setFAC: {
    .label prepareMEM1_mem = $13
    .label w = $13
    jmp prepareMEM1
    // setFAC::prepareMEM1
  prepareMEM1:
    // [153] (byte~) setFAC::prepareMEM1_$0 ← < (word) setFAC::prepareMEM1_mem#0 -- vbuaa=_lo_vwuz1 
    lda.z prepareMEM1_mem
    // [154] *((const byte*) memLo) ← (byte~) setFAC::prepareMEM1_$0 -- _deref_pbuc1=vbuaa 
    sta memLo
    // [155] (byte~) setFAC::prepareMEM1_$1 ← > (word) setFAC::prepareMEM1_mem#0 -- vbuaa=_hi_vwuz1 
    lda.z prepareMEM1_mem+1
    // [156] *((const byte*) memHi) ← (byte~) setFAC::prepareMEM1_$1 -- _deref_pbuc1=vbuaa 
    sta memHi
    jmp __b1
    // setFAC::@1
  __b1:
    // asm { ldymemLo ldamemHi jsr$b391  }
    // Load word register Y,A into FAC (floating point accumulator)
    ldy memLo
    lda memHi
    jsr $b391
    jmp __breturn
    // setFAC::@return
  __breturn:
    // [158] return 
    rts
}
  // setMEMtoFAC
// MEM = FAC
// Stores the value of the FAC to memory
// Stores 5 bytes (means it is necessary to allocate 5 bytes to avoid clobbering other data using eg. byte[] mem = {0, 0, 0, 0, 0};)
// setMEMtoFAC(byte* zp($13) mem)
setMEMtoFAC: {
    .label mem = $13
    jmp prepareMEM1
    // setMEMtoFAC::prepareMEM1
  prepareMEM1:
    // [160] (byte~) setMEMtoFAC::prepareMEM1_$0 ← < (word)(byte*) setMEMtoFAC::mem#5 -- vbuaa=_lo_vwuz1 
    lda.z mem
    // [161] *((const byte*) memLo) ← (byte~) setMEMtoFAC::prepareMEM1_$0 -- _deref_pbuc1=vbuaa 
    sta memLo
    // [162] (byte~) setMEMtoFAC::prepareMEM1_$1 ← > (word)(byte*) setMEMtoFAC::mem#5 -- vbuaa=_hi_vwuz1 
    lda.z mem+1
    // [163] *((const byte*) memHi) ← (byte~) setMEMtoFAC::prepareMEM1_$1 -- _deref_pbuc1=vbuaa 
    sta memHi
    jmp __b1
    // setMEMtoFAC::@1
  __b1:
    // asm { ldxmemLo ldymemHi jsr$bbd4  }
    ldx memLo
    ldy memHi
    jsr $bbd4
    jmp __breturn
    // setMEMtoFAC::@return
  __breturn:
    // [165] return 
    rts
}
  // subFACfromARG
// FAC = ARG-FAC
// Set FAC to ARG minus FAC
subFACfromARG: {
    // asm { jsr$b853  }
    jsr $b853
    jmp __breturn
    // subFACfromARG::@return
  __breturn:
    // [167] return 
    rts
}
  // setARGtoFAC
// ARG = FAC
// Set the ARG (floating point argument) to the value of the FAC (floating point accumulator)
setARGtoFAC: {
    // asm { jsr$bc0f  }
    jsr $bc0f
    jmp __breturn
    // setARGtoFAC::@return
  __breturn:
    // [169] return 
    rts
}
  // progress_init
// Initialize the PETSCII progress bar
// progress_init(byte* zp(2) line)
progress_init: {
    .label line = 2
    jmp __breturn
    // progress_init::@return
  __breturn:
    // [171] return 
    rts
}
  // gen_sprites
gen_sprites: {
    .label spr = 2
    .label i = $b
    // [173] phi from gen_sprites to gen_sprites::@1 [phi:gen_sprites->gen_sprites::@1]
  __b1_from_gen_sprites:
    // [173] phi (byte*) gen_sprites::spr#2 = (const byte*) sprites [phi:gen_sprites->gen_sprites::@1#0] -- pbuz1=pbuc1 
    lda #<sprites
    sta.z spr
    lda #>sprites
    sta.z spr+1
    // [173] phi (byte) gen_sprites::i#2 = (byte) 0 [phi:gen_sprites->gen_sprites::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp __b1
    // [173] phi from gen_sprites::@2 to gen_sprites::@1 [phi:gen_sprites::@2->gen_sprites::@1]
  __b1_from___b2:
    // [173] phi (byte*) gen_sprites::spr#2 = (byte*) gen_sprites::spr#1 [phi:gen_sprites::@2->gen_sprites::@1#0] -- register_copy 
    // [173] phi (byte) gen_sprites::i#2 = (byte) gen_sprites::i#1 [phi:gen_sprites::@2->gen_sprites::@1#1] -- register_copy 
    jmp __b1
    // gen_sprites::@1
  __b1:
    // [174] (byte) gen_chargen_sprite::ch#0 ← *((const byte*) gen_sprites::cml + (byte) gen_sprites::i#2) -- vbuxx=pbuc1_derefidx_vbuz1 
    ldy.z i
    ldx cml,y
    // [175] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 -- pbuz1=pbuz2 
    lda.z spr
    sta.z gen_chargen_sprite.sprite
    lda.z spr+1
    sta.z gen_chargen_sprite.sprite+1
    // [176] call gen_chargen_sprite 
    jsr gen_chargen_sprite
    jmp __b2
    // gen_sprites::@2
  __b2:
    // [177] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte) $40 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$40
    clc
    adc.z spr
    sta.z spr
    bcc !+
    inc.z spr+1
  !:
    // [178] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [179] if((byte) gen_sprites::i#1!=(byte) 7) goto gen_sprites::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #7
    cmp.z i
    bne __b1_from___b2
    jmp __breturn
    // gen_sprites::@return
  __breturn:
    // [180] return 
    rts
    cml: .text "camelot"
}
  // gen_chargen_sprite
// Generate a sprite from a C64 CHARGEN character (by making each pixel 3x3 pixels large)
// - c is the character to generate
// - sprite is a pointer to the position of the sprite to generate
// gen_chargen_sprite(byte register(X) ch, byte* zp($f) sprite)
gen_chargen_sprite: {
    .label __0 = $13
    .label __1 = $13
    .label sprite = $f
    .label chargen = $13
    .label bits = 5
    // current sprite byte
    .label s_gen = 9
    .label x = 6
    .label y = 4
    // Find the current chargen pixel (c)
    .label c = 8
    // [181] (word~) gen_chargen_sprite::$0 ← (word)(byte) gen_chargen_sprite::ch#0 -- vwuz1=_word_vbuxx 
    txa
    sta.z __0
    lda #0
    sta.z __0+1
    // [182] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte) 3 -- vwuz1=vwuz1_rol_3 
    asl.z __1
    rol.z __1+1
    asl.z __1
    rol.z __1+1
    asl.z __1
    rol.z __1+1
    // [183] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN + (word~) gen_chargen_sprite::$1 -- pbuz1=pbuc1_plus_vwuz1 
    clc
    lda.z chargen
    adc #<CHARGEN
    sta.z chargen
    lda.z chargen+1
    adc #>CHARGEN
    sta.z chargen+1
    // asm { sei  }
    sei
    // [185] *((const byte*) PROCPORT) ← (byte) $32 -- _deref_pbuc1=vbuc2 
    lda #$32
    sta PROCPORT
    // [186] phi from gen_chargen_sprite to gen_chargen_sprite::@1 [phi:gen_chargen_sprite->gen_chargen_sprite::@1]
  __b1_from_gen_chargen_sprite:
    // [186] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#0] -- register_copy 
    // [186] phi (byte) gen_chargen_sprite::y#2 = (byte) 0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z y
    jmp __b1
    // [186] phi from gen_chargen_sprite::@8 to gen_chargen_sprite::@1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@1]
  __b1_from___b8:
    // [186] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#2 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@1#0] -- register_copy 
    // [186] phi (byte) gen_chargen_sprite::y#2 = (byte) gen_chargen_sprite::y#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@1#1] -- register_copy 
    jmp __b1
    // gen_chargen_sprite::@1
  __b1:
    // [187] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) -- vbuz1=pbuz2_derefidx_vbuz3 
    // current chargen line
    ldy.z y
    lda (chargen),y
    sta.z bits
    // [188] phi from gen_chargen_sprite::@1 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2]
  __b2_from___b1:
    // [188] phi (byte) gen_chargen_sprite::x#6 = (byte) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z x
    // [188] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#11 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#1] -- register_copy 
    // [188] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#2] -- vbuyy=vbuc1 
    ldy #0
    // [188] phi (byte) gen_chargen_sprite::s_gen#5 = (byte) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#3] -- vbuz1=vbuc1 
    lda #0
    sta.z s_gen
    // [188] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#4] -- register_copy 
    jmp __b2
    // [188] phi from gen_chargen_sprite::@7 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2]
  __b2_from___b7:
    // [188] phi (byte) gen_chargen_sprite::x#6 = (byte) gen_chargen_sprite::x#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#0] -- register_copy 
    // [188] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#1] -- register_copy 
    // [188] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#2] -- register_copy 
    // [188] phi (byte) gen_chargen_sprite::s_gen#5 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#3] -- register_copy 
    // [188] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#4] -- register_copy 
    jmp __b2
    // gen_chargen_sprite::@2
  __b2:
    // [189] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte) $80 -- vbuaa=vbuz1_band_vbuc1 
    lda #$80
    and.z bits
    // [190] if((byte~) gen_chargen_sprite::$3==(byte) 0) goto gen_chargen_sprite::@3 -- vbuaa_eq_0_then_la1 
    cmp #0
    beq __b3_from___b2
    // [191] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@10 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@10]
  __b10_from___b2:
    jmp __b10
    // gen_chargen_sprite::@10
  __b10:
    // [192] phi from gen_chargen_sprite::@10 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@10->gen_chargen_sprite::@3]
  __b3_from___b10:
    // [192] phi (byte) gen_chargen_sprite::c#3 = (byte) 1 [phi:gen_chargen_sprite::@10->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 
    lda #1
    sta.z c
    jmp __b3
    // [192] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3]
  __b3_from___b2:
    // [192] phi (byte) gen_chargen_sprite::c#3 = (byte) 0 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z c
    jmp __b3
    // gen_chargen_sprite::@3
  __b3:
    // [193] phi from gen_chargen_sprite::@3 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4]
  __b4_from___b3:
    // [193] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#10 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#0] -- register_copy 
    // [193] phi (byte) gen_chargen_sprite::b#2 = (byte) 0 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#1] -- vbuxx=vbuc1 
    ldx #0
    // [193] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#2] -- register_copy 
    // [193] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#5 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#3] -- register_copy 
    jmp __b4
  // generate 3 pixels in the sprite byte (s_gen)
    // [193] phi from gen_chargen_sprite::@5 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4]
  __b4_from___b5:
    // [193] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#0] -- register_copy 
    // [193] phi (byte) gen_chargen_sprite::b#2 = (byte) gen_chargen_sprite::b#1 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#1] -- register_copy 
    // [193] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#2] -- register_copy 
    // [193] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#3] -- register_copy 
    jmp __b4
    // gen_chargen_sprite::@4
  __b4:
    // [194] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte) 1 -- vbuaa=vbuz1_rol_1 
    lda.z s_gen
    asl
    // [195] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 -- vbuz1=vbuaa_bor_vbuz2 
    ora.z c
    sta.z s_gen
    // [196] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 -- vbuyy=_inc_vbuyy 
    iny
    // [197] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte) 8) goto gen_chargen_sprite::@5 -- vbuyy_neq_vbuc1_then_la1 
    cpy #8
    bne __b5_from___b4
    jmp __b6
    // gen_chargen_sprite::@6
  __b6:
    // [198] *((byte*) gen_chargen_sprite::sprite#3) ← (byte) gen_chargen_sprite::s_gen#1 -- _deref_pbuz1=vbuz2 
    // sprite byte filled - store and move to next byte
    lda.z s_gen
    ldy #0
    sta (sprite),y
    // [199] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 3) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 
    lda.z s_gen
    ldy #3
    sta (sprite),y
    // [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 6) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 
    lda.z s_gen
    ldy #6
    sta (sprite),y
    // [201] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 -- pbuz1=_inc_pbuz1 
    inc.z sprite
    bne !+
    inc.z sprite+1
  !:
    // [202] phi from gen_chargen_sprite::@6 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5]
  __b5_from___b6:
    // [202] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#1 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5#0] -- register_copy 
    // [202] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) 0 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5#1] -- vbuyy=vbuc1 
    ldy #0
    // [202] phi (byte) gen_chargen_sprite::s_gen#6 = (byte) 0 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5#2] -- vbuz1=vbuc1 
    lda #0
    sta.z s_gen
    jmp __b5
    // [202] phi from gen_chargen_sprite::@4 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5]
  __b5_from___b4:
    // [202] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#3 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#0] -- register_copy 
    // [202] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) gen_chargen_sprite::s_gen_cnt#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#1] -- register_copy 
    // [202] phi (byte) gen_chargen_sprite::s_gen#6 = (byte) gen_chargen_sprite::s_gen#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#2] -- register_copy 
    jmp __b5
    // gen_chargen_sprite::@5
  __b5:
    // [203] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 -- vbuxx=_inc_vbuxx 
    inx
    // [204] if((byte) gen_chargen_sprite::b#1!=(byte) 3) goto gen_chargen_sprite::@4 -- vbuxx_neq_vbuc1_then_la1 
    cpx #3
    bne __b4_from___b5
    jmp __b7
    // gen_chargen_sprite::@7
  __b7:
    // [205] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte) 1 -- vbuz1=vbuz1_rol_1 
    asl.z bits
    // [206] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 -- vbuz1=_inc_vbuz1 
    inc.z x
    // [207] if((byte) gen_chargen_sprite::x#1!=(byte) 8) goto gen_chargen_sprite::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z x
    bne __b2_from___b7
    jmp __b8
    // gen_chargen_sprite::@8
  __b8:
    // [208] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte) 6 -- pbuz1=pbuz1_plus_vbuc1 
    lda #6
    clc
    adc.z sprite
    sta.z sprite
    bcc !+
    inc.z sprite+1
  !:
    // [209] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [210] if((byte) gen_chargen_sprite::y#1!=(byte) 8) goto gen_chargen_sprite::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z y
    bne __b1_from___b8
    jmp __b9
    // gen_chargen_sprite::@9
  __b9:
    // [211] *((const byte*) PROCPORT) ← (byte) $37 -- _deref_pbuc1=vbuc2 
    lda #$37
    sta PROCPORT
    // asm { cli  }
    cli
    jmp __breturn
    // gen_chargen_sprite::@return
  __breturn:
    // [213] return 
    rts
}
  // place_sprites
place_sprites: {
    .label sprites_ptr = SCREEN+$3f8
    .label spr_id = 6
    .label spr_x = 9
    .label col = $b
    .label j2 = $a
    .label j = 8
    // [214] *((const byte*) SPRITES_ENABLE) ← (byte) $7f -- _deref_pbuc1=vbuc2 
    lda #$7f
    sta SPRITES_ENABLE
    // [215] *((const byte*) SPRITES_EXPAND_X) ← (byte) $7f -- _deref_pbuc1=vbuc2 
    lda #$7f
    sta SPRITES_EXPAND_X
    // [216] *((const byte*) SPRITES_EXPAND_Y) ← (byte) $7f -- _deref_pbuc1=vbuc2 
    lda #$7f
    sta SPRITES_EXPAND_Y
    // [217] phi from place_sprites to place_sprites::@1 [phi:place_sprites->place_sprites::@1]
  __b1_from_place_sprites:
    // [217] phi (byte) place_sprites::col#2 = (byte) 5 [phi:place_sprites->place_sprites::@1#0] -- vbuz1=vbuc1 
    lda #5
    sta.z col
    // [217] phi (byte) place_sprites::j2#3 = (byte) 0 [phi:place_sprites->place_sprites::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z j2
    // [217] phi (byte) place_sprites::spr_x#2 = (byte) $3c [phi:place_sprites->place_sprites::@1#2] -- vbuz1=vbuc1 
    lda #$3c
    sta.z spr_x
    // [217] phi (byte) place_sprites::j#2 = (byte) 0 [phi:place_sprites->place_sprites::@1#3] -- vbuz1=vbuc1 
    lda #0
    sta.z j
    // [217] phi (byte) place_sprites::spr_id#2 = (byte)(word)(const byte*) sprites/(byte) $40 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1 
    lda #sprites/$40
    sta.z spr_id
    jmp __b1
    // [217] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1]
  __b1_from___b1:
    // [217] phi (byte) place_sprites::col#2 = (byte) place_sprites::col#1 [phi:place_sprites::@1->place_sprites::@1#0] -- register_copy 
    // [217] phi (byte) place_sprites::j2#3 = (byte) place_sprites::j2#2 [phi:place_sprites::@1->place_sprites::@1#1] -- register_copy 
    // [217] phi (byte) place_sprites::spr_x#2 = (byte) place_sprites::spr_x#1 [phi:place_sprites::@1->place_sprites::@1#2] -- register_copy 
    // [217] phi (byte) place_sprites::j#2 = (byte) place_sprites::j#1 [phi:place_sprites::@1->place_sprites::@1#3] -- register_copy 
    // [217] phi (byte) place_sprites::spr_id#2 = (byte) place_sprites::spr_id#1 [phi:place_sprites::@1->place_sprites::@1#4] -- register_copy 
    jmp __b1
    // place_sprites::@1
  __b1:
    // [218] *((const byte*) place_sprites::sprites_ptr + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z spr_id
    ldy.z j
    sta sprites_ptr,y
    // [219] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 -- vbuz1=_inc_vbuz1 
    inc.z spr_id
    // [220] *((const byte*) SPRITES_XPOS + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z spr_x
    ldy.z j2
    sta SPRITES_XPOS,y
    // [221] *((const byte*) SPRITES_YPOS + (byte) place_sprites::j2#3) ← (byte) $50 -- pbuc1_derefidx_vbuz1=vbuc2 
    lda #$50
    ldy.z j2
    sta SPRITES_YPOS,y
    // [222] *((const byte*) SPRITES_COLS + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z col
    ldy.z j
    sta SPRITES_COLS,y
    // [223] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte) $20 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z spr_x
    axs #-[$20]
    stx.z spr_x
    // [224] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte)(number) 7^(number) 5 -- vbuz1=vbuz1_bxor_vbuc1 
    lda #7^5
    eor.z col
    sta.z col
    // [225] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 -- vbuxx=_inc_vbuz1 
    ldx.z j2
    inx
    // [226] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 -- vbuz1=_inc_vbuxx 
    inx
    stx.z j2
    // [227] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 -- vbuz1=_inc_vbuz1 
    inc.z j
    // [228] if((byte) place_sprites::j#1!=(byte) 7) goto place_sprites::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #7
    cmp.z j
    bne __b1_from___b1
    jmp __breturn
    // place_sprites::@return
  __breturn:
    // [229] return 
    rts
}
  // File Data
  sintab_x: .fill $dd, 0
  sintab_y: .fill $c5, 0

ASSEMBLER OPTIMIZATIONS
Removing instruction jmp __b1
Removing instruction jmp __bend
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b6
Removing instruction jmp __b4
Removing instruction jmp __b7
Removing instruction jmp __b5
Removing instruction jmp __b8
Removing instruction jmp __b9
Removing instruction jmp __b1
Removing instruction jmp __b10
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __b7
Removing instruction jmp __b8
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __b7
Removing instruction jmp __b8
Removing instruction jmp __b9
Removing instruction jmp __b10
Removing instruction jmp __b11
Removing instruction jmp __b12
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b13
Removing instruction jmp __b14
Removing instruction jmp __b15
Removing instruction jmp __b16
Removing instruction jmp __b17
Removing instruction jmp __b18
Removing instruction jmp __b19
Removing instruction jmp __b20
Removing instruction jmp __b21
Removing instruction jmp __b22
Removing instruction jmp __b2
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp prepareMEM1
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp prepareMEM1
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp prepareMEM1
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp prepareMEM1
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp prepareMEM1
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b10
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b6
Removing instruction jmp __b5
Removing instruction jmp __b7
Removing instruction jmp __b8
Removing instruction jmp __b9
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda #0
Removing instruction lda.z x+1
Replacing instruction lda.z xidx with TXA
Replacing instruction lda.z yidx with TXA
Removing instruction lda #0
Replacing instruction lda memLo with TYA
Replacing instruction ldy #0 with TAY
Removing instruction lda #0
Removing instruction lda.z s_gen
Removing instruction lda.z s_gen
Replacing instruction lda #0 with TYA
Removing instruction lda #$7f
Removing instruction lda #$7f
Removing instruction ldy.z j2
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label __bbegin with __b1
Replacing label __b1_from___b1 with __b1
Replacing label __b1_from___b2 with __b1
Replacing label __b4_from___b3 with __b4
Replacing label __b5_from___b4 with __b5
Replacing label __b3_from___b5 with __b3
Replacing label __b9_from___b8 with __b1
Replacing label __b10_from___b1 with __b2
Replacing label __b1_from___b1 with __b1
Replacing label __b1_from_progress_inc with __b1
Replacing label __b1_from___b2 with __b1
Replacing label __b5_from___b4 with __b5
Replacing label __b4_from___b5 with __b4
Replacing label __b2_from___b7 with __b2
Replacing label __b1_from___b8 with __b1
Replacing label __b1_from___b1 with __b1
Removing instruction __bbegin:
Removing instruction __b1_from___bbegin:
Removing instruction main_from___b1:
Removing instruction __bend_from___b1:
Removing instruction __b1_from___b1:
Removing instruction __b1_from___b2:
Removing instruction __b2_from___b1:
Removing instruction __b3_from___b5:
Removing instruction __b4_from___b3:
Removing instruction __b4_from___b6:
Removing instruction __b5_from___b4:
Removing instruction __b5_from___b7:
Removing instruction __b9_from___b8:
Removing instruction __b9:
Removing instruction __b1_from___b9:
Removing instruction __b10_from___b1:
Removing instruction __b10:
Removing instruction __b2_from___b10:
Removing instruction __b1_from___b1:
Removing instruction __b2_from___b1:
Removing instruction __b3_from___b2:
Removing instruction gen_sprites_from___b3:
Removing instruction __b4_from___b3:
Removing instruction progress_init_from___b4:
Removing instruction __b5_from___b4:
Removing instruction gen_sintab_from___b5:
Removing instruction __b6_from___b5:
Removing instruction progress_init_from___b6:
Removing instruction __b7_from___b6:
Removing instruction gen_sintab_from___b7:
Removing instruction __b8_from___b7:
Removing instruction clear_screen_from___b8:
Removing instruction __b3_from_gen_sintab:
Removing instruction __b5_from___b4:
Removing instruction setMEMtoFAC_from___b5:
Removing instruction __b6_from___b5:
Removing instruction __b7_from___b6:
Removing instruction setMEMtoFAC_from___b7:
Removing instruction __b8_from___b7:
Removing instruction setFAC_from___b8:
Removing instruction __b9_from___b8:
Removing instruction divMEMbyFAC_from___b9:
Removing instruction __b10_from___b9:
Removing instruction setMEMtoFAC_from___b10:
Removing instruction __b11_from___b10:
Removing instruction addMEMtoFAC_from___b11:
Removing instruction __b12_from___b11:
Removing instruction setMEMtoFAC_from___b12:
Removing instruction __b13_from___b2:
Removing instruction mulFACbyMEM_from___b13:
Removing instruction __b14_from___b13:
Removing instruction setMEMtoFAC_from___b14:
Removing instruction __b16_from___b15:
Removing instruction divMEMbyFAC_from___b16:
Removing instruction __b17_from___b16:
Removing instruction __b18_from___b17:
Removing instruction mulFACbyMEM_from___b18:
Removing instruction __b19_from___b18:
Removing instruction addMEMtoFAC_from___b19:
Removing instruction __b20_from___b19:
Removing instruction __b1_from_progress_inc:
Removing instruction __b1_from___b2:
Removing instruction __b1_from___b8:
Removing instruction __b2_from___b7:
Removing instruction __b10_from___b2:
Removing instruction __b3_from___b10:
Removing instruction __b4_from___b3:
Removing instruction __b4_from___b5:
Removing instruction __b5_from___b4:
Removing instruction __b1_from___b1:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction __bend:
Removing instruction init_from_main:
Removing instruction __b1_from_main:
Removing instruction __b2:
Removing instruction __b3_from_anim:
Removing instruction __b6:
Removing instruction __b7:
Removing instruction __b8:
Removing instruction __b1_from___b8:
Removing instruction __b2_from___b1:
Removing instruction __breturn:
Removing instruction clear_screen_from_init:
Removing instruction __b1_from_init:
Removing instruction __b2:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __b6:
Removing instruction __b7:
Removing instruction __b8:
Removing instruction __breturn:
Removing instruction __b1_from_clear_screen:
Removing instruction __breturn:
Removing instruction __b1_from___b2:
Removing instruction setFAC_from_gen_sintab:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction setFAC_from___b4:
Removing instruction __b5:
Removing instruction __b6:
Removing instruction __b7:
Removing instruction __b8:
Removing instruction __b9:
Removing instruction __b10:
Removing instruction __b11:
Removing instruction __b12:
Removing instruction __b1_from___b12:
Removing instruction __breturn:
Removing instruction setFAC_from___b2:
Removing instruction __b13:
Removing instruction __b14:
Removing instruction __b15:
Removing instruction setFAC_from___b15:
Removing instruction __b16:
Removing instruction __b17:
Removing instruction __b18:
Removing instruction __b19:
Removing instruction __b20:
Removing instruction __b21:
Removing instruction __b22:
Removing instruction __b1_from___b22:
Removing instruction __b2:
Removing instruction __b1_from___b2:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction prepareMEM1:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction prepareMEM1:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction prepareMEM1:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction prepareMEM1:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction prepareMEM1:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __b1_from_gen_sprites:
Removing instruction __b2:
Removing instruction __breturn:
Removing instruction __b1_from_gen_chargen_sprite:
Removing instruction __b2_from___b1:
Removing instruction __b10:
Removing instruction __b6:
Removing instruction __b5_from___b6:
Removing instruction __b7:
Removing instruction __b8:
Removing instruction __b9:
Removing instruction __breturn:
Removing instruction __b1_from_place_sprites:
Removing instruction __breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Updating BasicUpstart to call main directly
Removing instruction jsr main
Succesful ASM optimization Pass5SkipBegin
Relabelling long label __b3_from___b2 to b1
Succesful ASM optimization Pass5RelabelLongLabels
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b1
Removing instruction jmp __b1
Removing instruction jmp __b1
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b1
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda memHi
Replacing instruction ldy memHi with TAY
Removing instruction lda.z s_gen
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Removing instruction __b1:
Succesful ASM optimization Pass5UnusedLabelElimination

FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
(const byte*) BORDERCOL = (byte*) 53280
(const byte*) CHARGEN = (byte*) 53248
(const byte*) COLS = (byte*) 55296
(const byte*) PROCPORT = (byte*) 1
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) RASTER = (byte*) 53266
(const byte*) SCREEN = (byte*) 1024
(const byte*) SPRITES_COLS = (byte*) 53287
(const byte*) SPRITES_ENABLE = (byte*) 53269
(const byte*) SPRITES_EXPAND_X = (byte*) 53277
(const byte*) SPRITES_EXPAND_Y = (byte*) 53271
(const byte*) SPRITES_XMSB = (byte*) 53264
(const byte*) SPRITES_XPOS = (byte*) 53248
(const byte*) SPRITES_YPOS = (byte*) 53249
(void()) addMEMtoFAC((byte*) addMEMtoFAC::mem)
(label) addMEMtoFAC::@1
(label) addMEMtoFAC::@return
(byte*) addMEMtoFAC::mem
(label) addMEMtoFAC::prepareMEM1
(word) addMEMtoFAC::prepareMEM1_mem
(void()) anim()
(byte~) anim::$10 reg byte a 202.0
(byte~) anim::$7 zp[1]:10 101.0
(byte~) anim::$8 reg byte a 202.0
(label) anim::@1
(label) anim::@10
(label) anim::@2
(label) anim::@3
(label) anim::@4
(label) anim::@5
(label) anim::@6
(label) anim::@7
(label) anim::@8
(label) anim::@9
(label) anim::@return
(byte) anim::j
(byte) anim::j#1 j zp[1]:5 151.5
(byte) anim::j#2 j zp[1]:5 11.882352941176471
(byte) anim::j2
(byte) anim::j2#1 j2 zp[1]:11 67.33333333333333
(byte) anim::j2#2 j2 zp[1]:11 25.25
(word) anim::x
(word) anim::x#0 x zp[2]:15 75.75
(byte) anim::x_msb
(byte) anim::x_msb#1 x_msb zp[1]:10 13.6
(byte) anim::x_msb#2 x_msb zp[1]:10 101.0
(byte) anim::xidx
(byte) anim::xidx#0 xidx zp[1]:9 2.0
(byte) anim::xidx#1 xidx zp[1]:9 202.0
(byte) anim::xidx#2 xidx zp[1]:9 202.0
(byte) anim::xidx#3 xidx zp[1]:9 38.125
(byte) anim::xidx#5 xidx zp[1]:9 37.875
(byte) anim::yidx
(byte) anim::yidx#0 yidx zp[1]:4 4.0
(byte) anim::yidx#1 yidx zp[1]:4 202.0
(byte) anim::yidx#2 yidx zp[1]:4 202.0
(byte) anim::yidx#3 yidx zp[1]:4 25.416666666666664
(byte) anim::yidx#6 yidx zp[1]:4 75.75
(void()) clear_screen()
(label) clear_screen::@1
(label) clear_screen::@2
(label) clear_screen::@return
(byte*) clear_screen::sc
(byte*) clear_screen::sc#1 sc zp[2]:15 22.0
(byte*) clear_screen::sc#2 sc zp[2]:15 14.666666666666666
(void()) divMEMbyFAC((byte*) divMEMbyFAC::mem)
(label) divMEMbyFAC::@1
(label) divMEMbyFAC::@return
(byte*) divMEMbyFAC::mem
(byte*) divMEMbyFAC::mem#2 mem zp[2]:19
(label) divMEMbyFAC::prepareMEM1
(byte~) divMEMbyFAC::prepareMEM1_$0 reg byte a 4.0
(byte~) divMEMbyFAC::prepareMEM1_$1 reg byte a 4.0
(word) divMEMbyFAC::prepareMEM1_mem
(void()) gen_chargen_sprite((byte) gen_chargen_sprite::ch , (byte*) gen_chargen_sprite::sprite)
(word~) gen_chargen_sprite::$0 zp[2]:19 4.0
(word~) gen_chargen_sprite::$1 zp[2]:19 4.0
(byte~) gen_chargen_sprite::$3 reg byte a 2002.0
(byte~) gen_chargen_sprite::$6 reg byte a 20002.0
(label) gen_chargen_sprite::@1
(label) gen_chargen_sprite::@10
(label) gen_chargen_sprite::@2
(label) gen_chargen_sprite::@3
(label) gen_chargen_sprite::@4
(label) gen_chargen_sprite::@5
(label) gen_chargen_sprite::@6
(label) gen_chargen_sprite::@7
(label) gen_chargen_sprite::@8
(label) gen_chargen_sprite::@9
(label) gen_chargen_sprite::@return
(byte) gen_chargen_sprite::b
(byte) gen_chargen_sprite::b#1 reg byte x 15001.5
(byte) gen_chargen_sprite::b#2 reg byte x 2000.2
(byte) gen_chargen_sprite::bits
(byte) gen_chargen_sprite::bits#0 bits zp[1]:5 202.0
(byte) gen_chargen_sprite::bits#1 bits zp[1]:5 667.3333333333334
(byte) gen_chargen_sprite::bits#2 bits zp[1]:5 182.58823529411765
(byte) gen_chargen_sprite::c
(byte) gen_chargen_sprite::c#3 c zp[1]:8 769.3076923076923
(byte) gen_chargen_sprite::ch
(byte) gen_chargen_sprite::ch#0 reg byte x 5.5
(byte*) gen_chargen_sprite::chargen
(byte*) gen_chargen_sprite::chargen#0 chargen zp[2]:19 3.678571428571429
(byte) gen_chargen_sprite::s_gen
(byte) gen_chargen_sprite::s_gen#1 s_gen zp[1]:9 10001.0
(byte) gen_chargen_sprite::s_gen#3 s_gen zp[1]:9 21003.0
(byte) gen_chargen_sprite::s_gen#5 s_gen zp[1]:9 400.4
(byte) gen_chargen_sprite::s_gen#6 s_gen zp[1]:9 3500.5
(byte) gen_chargen_sprite::s_gen_cnt
(byte) gen_chargen_sprite::s_gen_cnt#1 reg byte y 15001.5
(byte) gen_chargen_sprite::s_gen_cnt#3 reg byte y 7001.0
(byte) gen_chargen_sprite::s_gen_cnt#4 reg byte y 400.4
(byte) gen_chargen_sprite::s_gen_cnt#5 reg byte y 3500.5
(byte*) gen_chargen_sprite::sprite
(byte*) gen_chargen_sprite::sprite#0 sprite zp[2]:15 2.1666666666666665
(byte*) gen_chargen_sprite::sprite#1 sprite zp[2]:15 20002.0
(byte*) gen_chargen_sprite::sprite#10 sprite zp[2]:15 420.59999999999997
(byte*) gen_chargen_sprite::sprite#11 sprite zp[2]:15 102.0
(byte*) gen_chargen_sprite::sprite#2 sprite zp[2]:15 67.33333333333333
(byte*) gen_chargen_sprite::sprite#3 sprite zp[2]:15 7625.875
(byte*) gen_chargen_sprite::sprite#4 sprite zp[2]:15 5184.166666666666
(byte) gen_chargen_sprite::x
(byte) gen_chargen_sprite::x#1 x zp[1]:6 1501.5
(byte) gen_chargen_sprite::x#6 x zp[1]:6 111.22222222222223
(byte) gen_chargen_sprite::y
(byte) gen_chargen_sprite::y#1 y zp[1]:4 151.5
(byte) gen_chargen_sprite::y#2 y zp[1]:4 13.173913043478262
(void()) gen_sintab((byte*) gen_sintab::sintab , (byte) gen_sintab::length , (byte) gen_sintab::min , (byte) gen_sintab::max)
(word~) gen_sintab::$24 zp[2]:19 11.0
(byte~) gen_sintab::$25 reg byte a 22.0
(label) gen_sintab::@1
(label) gen_sintab::@10
(label) gen_sintab::@11
(label) gen_sintab::@12
(label) gen_sintab::@13
(label) gen_sintab::@14
(label) gen_sintab::@15
(label) gen_sintab::@16
(label) gen_sintab::@17
(label) gen_sintab::@18
(label) gen_sintab::@19
(label) gen_sintab::@2
(label) gen_sintab::@20
(label) gen_sintab::@21
(label) gen_sintab::@22
(label) gen_sintab::@3
(label) gen_sintab::@4
(label) gen_sintab::@5
(label) gen_sintab::@6
(label) gen_sintab::@7
(label) gen_sintab::@8
(label) gen_sintab::@9
(label) gen_sintab::@return
(const byte*) gen_sintab::f_2pi = (byte*) 58085
(const byte*) gen_sintab::f_amp[]  = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(const byte*) gen_sintab::f_i[]  = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(const byte*) gen_sintab::f_min[]  = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
(byte) gen_sintab::i
(byte) gen_sintab::i#1 i zp[1]:9 22.0
(byte) gen_sintab::i#10 i zp[1]:9 1.76
(byte) gen_sintab::length
(byte) gen_sintab::length#10 length zp[1]:8 0.22448979591836735
(byte) gen_sintab::max
(byte) gen_sintab::max#2 reg byte x
(byte) gen_sintab::min
(byte) gen_sintab::min#2 min zp[1]:6
(byte*) gen_sintab::sintab
(byte*) gen_sintab::sintab#13 sintab zp[2]:15 0.22448979591836735
(void()) gen_sprites()
(label) gen_sprites::@1
(label) gen_sprites::@2
(label) gen_sprites::@return
(const byte*) gen_sprites::cml[]  = (byte*) "camelot"z
(byte) gen_sprites::i
(byte) gen_sprites::i#1 i zp[1]:11 16.5
(byte) gen_sprites::i#2 i zp[1]:11 6.6000000000000005
(byte*) gen_sprites::spr
(byte*) gen_sprites::spr#1 spr zp[2]:2 7.333333333333333
(byte*) gen_sprites::spr#2 spr zp[2]:2 8.25
(word()) getFAC()
(label) getFAC::@return
(word) getFAC::return
(word) getFAC::return#0 return zp[2]:19 4.333333333333333
(word) getFAC::return#2 return zp[2]:19 22.0
(word) getFAC::w
(void()) init()
(label) init::@1
(label) init::@2
(label) init::@3
(label) init::@4
(label) init::@5
(label) init::@6
(label) init::@7
(label) init::@8
(label) init::@return
(byte) init::i
(byte) init::i#1 reg byte x 16.5
(byte) init::i#2 reg byte x 14.666666666666666
(void()) main()
(label) main::@1
(label) main::@2
(const byte*) memHi = (byte*) 255
(const byte*) memLo = (byte*) 254
(void()) mulFACbyMEM((byte*) mulFACbyMEM::mem)
(label) mulFACbyMEM::@1
(label) mulFACbyMEM::@return
(byte*) mulFACbyMEM::mem
(byte*) mulFACbyMEM::mem#2 mem zp[2]:19
(label) mulFACbyMEM::prepareMEM1
(byte~) mulFACbyMEM::prepareMEM1_$0 reg byte a 4.0
(byte~) mulFACbyMEM::prepareMEM1_$1 reg byte a 4.0
(word) mulFACbyMEM::prepareMEM1_mem
(void()) place_sprites()
(label) place_sprites::@1
(label) place_sprites::@return
(byte) place_sprites::col
(byte) place_sprites::col#1 col zp[1]:11 4.4
(byte) place_sprites::col#2 col zp[1]:11 4.714285714285714
(byte) place_sprites::j
(byte) place_sprites::j#1 j zp[1]:8 16.5
(byte) place_sprites::j#2 j zp[1]:8 4.4
(byte) place_sprites::j2
(byte) place_sprites::j2#1 reg byte x 22.0
(byte) place_sprites::j2#2 j2 zp[1]:10 7.333333333333333
(byte) place_sprites::j2#3 j2 zp[1]:10 5.5
(byte) place_sprites::spr_id
(byte) place_sprites::spr_id#1 spr_id zp[1]:6 2.2
(byte) place_sprites::spr_id#2 spr_id zp[1]:6 16.5
(byte) place_sprites::spr_x
(byte) place_sprites::spr_x#1 spr_x zp[1]:9 3.6666666666666665
(byte) place_sprites::spr_x#2 spr_x zp[1]:9 5.5
(const byte*) place_sprites::sprites_ptr = (const byte*) SCREEN+(word) $3f8
(byte*) progress_cursor
(byte*) progress_cursor#10 progress_cursor zp[2]:2 4.0
(byte*) progress_cursor#11 progress_cursor zp[2]:2 3.4
(byte*) progress_cursor#13 progress_cursor zp[2]:2 0.7037037037037037
(byte) progress_idx
(byte) progress_idx#10 progress_idx zp[1]:10 3.0
(byte) progress_idx#12 progress_idx zp[1]:10 3.0
(byte) progress_idx#14 progress_idx zp[1]:10 0.5416666666666666
(void()) progress_inc()
(label) progress_inc::@1
(label) progress_inc::@2
(label) progress_inc::@return
(const byte*) progress_inc::progress_chars[]  = { (byte) $20, (byte) $65, (byte) $74, (byte) $75, (byte) $61, (byte) $f6, (byte) $e7, (byte) $ea, (byte) $e0 }
(void()) progress_init((byte*) progress_init::line)
(label) progress_init::@return
(byte*) progress_init::line
(byte*) progress_init::line#2 line zp[2]:2 0.06896551724137931
(void()) setARGtoFAC()
(label) setARGtoFAC::@return
(void()) setFAC((word) setFAC::w)
(label) setFAC::@1
(label) setFAC::@return
(label) setFAC::prepareMEM1
(byte~) setFAC::prepareMEM1_$0 reg byte a 4.0
(byte~) setFAC::prepareMEM1_$1 reg byte a 4.0
(word) setFAC::prepareMEM1_mem
(word) setFAC::prepareMEM1_mem#0 prepareMEM1_mem zp[2]:19 9.999999999999998
(word) setFAC::w
(word) setFAC::w#0 w zp[2]:19 4.0
(word) setFAC::w#1 w zp[2]:19 4.0
(word) setFAC::w#3 w zp[2]:19 22.0
(word) setFAC::w#4 w zp[2]:19 22.0
(void()) setMEMtoFAC((byte*) setMEMtoFAC::mem)
(label) setMEMtoFAC::@1
(label) setMEMtoFAC::@return
(byte*) setMEMtoFAC::mem
(byte*) setMEMtoFAC::mem#5 mem zp[2]:19
(label) setMEMtoFAC::prepareMEM1
(byte~) setMEMtoFAC::prepareMEM1_$0 reg byte a 4.0
(byte~) setMEMtoFAC::prepareMEM1_$1 reg byte a 4.0
(word) setMEMtoFAC::prepareMEM1_mem
(void()) sinFAC()
(label) sinFAC::@return
(byte) sin_idx_x
(byte) sin_idx_x#11 sin_idx_x zp[1]:6 1.625
(byte) sin_idx_x#13 sin_idx_x zp[1]:6 8.346153846153845
(byte) sin_idx_x#3 sin_idx_x zp[1]:6 2.0
(byte) sin_idx_y
(byte) sin_idx_y#11 sin_idx_y zp[1]:8 3.25
(byte) sin_idx_y#13 sin_idx_y zp[1]:8 7.2333333333333325
(byte) sin_idx_y#3 sin_idx_y zp[1]:8 2.0
(const byte) sinlen_x = (byte) $dd
(const byte) sinlen_y = (byte) $c5
(const byte*) sintab_x[(number) $dd]  = { fill( $dd, 0) }
(const byte*) sintab_y[(number) $c5]  = { fill( $c5, 0) }
(const byte*) sprites = (byte*) 8192
(void()) subFACfromARG()
(label) subFACfromARG::@return

reg byte x [ init::i#2 init::i#1 ]
reg byte x [ gen_sintab::max#2 ]
zp[2]:2 [ gen_sprites::spr#2 gen_sprites::spr#1 progress_cursor#13 progress_init::line#2 progress_cursor#11 progress_cursor#10 ]
zp[1]:4 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ]
zp[1]:5 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 anim::j#2 anim::j#1 ]
reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ]
reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ]
zp[1]:6 [ place_sprites::spr_id#2 place_sprites::spr_id#1 gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 gen_sintab::min#2 sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ]
zp[1]:8 [ place_sprites::j#2 place_sprites::j#1 gen_chargen_sprite::c#3 gen_sintab::length#10 sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ]
zp[1]:9 [ place_sprites::spr_x#2 place_sprites::spr_x#1 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 gen_sintab::i#10 gen_sintab::i#1 anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ]
zp[1]:10 [ place_sprites::j2#3 place_sprites::j2#2 progress_idx#14 progress_idx#12 progress_idx#10 anim::x_msb#2 anim::x_msb#1 anim::$7 ]
zp[1]:11 [ place_sprites::col#2 place_sprites::col#1 gen_sprites::i#2 gen_sprites::i#1 anim::j2#2 anim::j2#1 ]
zp[2]:15 [ anim::x#0 gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 gen_sintab::sintab#13 clear_screen::sc#2 clear_screen::sc#1 ]
reg byte a [ anim::$8 ]
reg byte a [ anim::$10 ]
reg byte a [ gen_sintab::$25 ]
reg byte a [ mulFACbyMEM::prepareMEM1_$0 ]
reg byte a [ mulFACbyMEM::prepareMEM1_$1 ]
reg byte a [ divMEMbyFAC::prepareMEM1_$0 ]
reg byte a [ divMEMbyFAC::prepareMEM1_$1 ]
reg byte a [ setFAC::prepareMEM1_$0 ]
reg byte a [ setFAC::prepareMEM1_$1 ]
reg byte a [ setMEMtoFAC::prepareMEM1_$0 ]
reg byte a [ setMEMtoFAC::prepareMEM1_$1 ]
reg byte x [ gen_chargen_sprite::ch#0 ]
zp[2]:19 [ gen_chargen_sprite::$0 gen_chargen_sprite::$1 gen_chargen_sprite::chargen#0 getFAC::return#2 gen_sintab::$24 getFAC::return#0 setMEMtoFAC::mem#5 setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 divMEMbyFAC::mem#2 mulFACbyMEM::mem#2 ]
reg byte a [ gen_chargen_sprite::$3 ]
reg byte a [ gen_chargen_sprite::$6 ]
reg byte x [ place_sprites::j2#1 ]


FINAL ASSEMBLER
Score: 769690

  // File Comments
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
  // Global Constants & labels
  // Processor Port Register controlling RAM/ROM configuration and the datasette
  .label PROCPORT = 1
  // The address of the CHARGEN character set
  .label CHARGEN = $d000
  .label SPRITES_XPOS = $d000
  .label SPRITES_YPOS = $d001
  .label SPRITES_XMSB = $d010
  .label RASTER = $d012
  .label SPRITES_ENABLE = $d015
  .label SPRITES_EXPAND_Y = $d017
  .label SPRITES_EXPAND_X = $d01d
  .label BORDERCOL = $d020
  .label SPRITES_COLS = $d027
  // Color Ram
  .label COLS = $d800
  // Zeropage addresses used to hold lo/hi-bytes of addresses of float numbers in MEM
  .label memLo = $fe
  .label memHi = $ff
  .const sinlen_x = $dd
  .const sinlen_y = $c5
  .label sprites = $2000
  .label SCREEN = $400
  // Current index within the progress cursor (0-7)
  .label progress_idx = $a
  // Current position of the progress cursor
  .label progress_cursor = 2
  .label sin_idx_x = 6
  .label sin_idx_y = 8
  // @begin
  // [1] phi from @begin to @1 [phi:@begin->@1]
  // @1
  // [2] call main 
  // [4] phi from @1 to main [phi:@1->main]
  // [3] phi from @1 to @end [phi:@1->@end]
  // @end
  // main
main: {
    // init()
    // [5] call init 
    // [43] phi from main to init [phi:main->init]
    jsr init
    // [6] phi from main to main::@1 [phi:main->main::@1]
    // [6] phi (byte) sin_idx_y#13 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_idx_y
    // [6] phi (byte) sin_idx_x#13 = (byte) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 
    sta.z sin_idx_x
    // [6] phi from main::@1 main::@2 to main::@1 [phi:main::@1/main::@2->main::@1]
    // [6] phi (byte) sin_idx_y#13 = (byte) sin_idx_y#13 [phi:main::@1/main::@2->main::@1#0] -- register_copy 
    // [6] phi (byte) sin_idx_x#13 = (byte) sin_idx_x#13 [phi:main::@1/main::@2->main::@1#1] -- register_copy 
    // main::@1
  __b1:
    // while (*RASTER!=$ff)
    // [7] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda #$ff
    cmp RASTER
    bne __b1
    // [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
    // main::@2
    // anim()
    // [9] call anim 
    jsr anim
    jmp __b1
}
  // anim
anim: {
    .label __7 = $a
    .label xidx = 9
    .label yidx = 4
    .label x = $f
    .label x_msb = $a
    .label j2 = $b
    .label j = 5
    // (*BORDERCOL)++;
    // [10] *((const byte*) BORDERCOL) ← ++ *((const byte*) BORDERCOL) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDERCOL
    // xidx = sin_idx_x
    // [11] (byte) anim::xidx#0 ← (byte) sin_idx_x#13 -- vbuz1=vbuz2 
    lda.z sin_idx_x
    sta.z xidx
    // yidx = sin_idx_y
    // [12] (byte) anim::yidx#0 ← (byte) sin_idx_y#13 -- vbuz1=vbuz2 
    lda.z sin_idx_y
    sta.z yidx
    // [13] phi from anim to anim::@3 [phi:anim->anim::@3]
    // [13] phi (byte) anim::j#2 = (byte) 0 [phi:anim->anim::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z j
    // [13] phi (byte) anim::yidx#3 = (byte) anim::yidx#0 [phi:anim->anim::@3#1] -- register_copy 
    // [13] phi (byte) anim::j2#2 = (byte) $c [phi:anim->anim::@3#2] -- vbuz1=vbuc1 
    lda #$c
    sta.z j2
    // [13] phi (byte) anim::x_msb#2 = (byte) 0 [phi:anim->anim::@3#3] -- vbuz1=vbuc1 
    lda #0
    sta.z x_msb
    // [13] phi (byte) anim::xidx#3 = (byte) anim::xidx#0 [phi:anim->anim::@3#4] -- register_copy 
    // [13] phi from anim::@5 to anim::@3 [phi:anim::@5->anim::@3]
    // [13] phi (byte) anim::j#2 = (byte) anim::j#1 [phi:anim::@5->anim::@3#0] -- register_copy 
    // [13] phi (byte) anim::yidx#3 = (byte) anim::yidx#6 [phi:anim::@5->anim::@3#1] -- register_copy 
    // [13] phi (byte) anim::j2#2 = (byte) anim::j2#1 [phi:anim::@5->anim::@3#2] -- register_copy 
    // [13] phi (byte) anim::x_msb#2 = (byte) anim::x_msb#1 [phi:anim::@5->anim::@3#3] -- register_copy 
    // [13] phi (byte) anim::xidx#3 = (byte) anim::xidx#5 [phi:anim::@5->anim::@3#4] -- register_copy 
    // anim::@3
  __b3:
    // x = (word)$1e + sintab_x[xidx]
    // [14] (word) anim::x#0 ← (word) $1e + *((const byte*) sintab_x + (byte) anim::xidx#3) -- vwuz1=vwuc1_plus_pbuc2_derefidx_vbuz2 
    ldy.z xidx
    lda sintab_x,y
    clc
    adc #<$1e
    sta.z x
    lda #>$1e
    adc #0
    sta.z x+1
    // x_msb*2
    // [15] (byte~) anim::$7 ← (byte) anim::x_msb#2 << (byte) 1 -- vbuz1=vbuz1_rol_1 
    asl.z __7
    // >x
    // [16] (byte~) anim::$8 ← > (word) anim::x#0 -- vbuaa=_hi_vwuz1 
    // x_msb = x_msb*2 | >x
    // [17] (byte) anim::x_msb#1 ← (byte~) anim::$7 | (byte~) anim::$8 -- vbuz1=vbuz1_bor_vbuaa 
    ora.z x_msb
    sta.z x_msb
    // <x
    // [18] (byte~) anim::$10 ← < (word) anim::x#0 -- vbuaa=_lo_vwuz1 
    lda.z x
    // SPRITES_XPOS[j2] = <x
    // [19] *((const byte*) SPRITES_XPOS + (byte) anim::j2#2) ← (byte~) anim::$10 -- pbuc1_derefidx_vbuz1=vbuaa 
    ldy.z j2
    sta SPRITES_XPOS,y
    // SPRITES_YPOS[j2] = sintab_y[yidx]
    // [20] *((const byte*) SPRITES_YPOS + (byte) anim::j2#2) ← *((const byte*) sintab_y + (byte) anim::yidx#3) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 
    ldy.z yidx
    lda sintab_y,y
    ldy.z j2
    sta SPRITES_YPOS,y
    // xidx = xidx+10
    // [21] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte) $a -- vbuz1=vbuz1_plus_vbuc1 
    lax.z xidx
    axs #-[$a]
    stx.z xidx
    // if(xidx>=sinlen_x)
    // [22] if((byte) anim::xidx#1<(const byte) sinlen_x) goto anim::@4 -- vbuz1_lt_vbuc1_then_la1 
    txa
    cmp #sinlen_x
    bcc __b4
    // anim::@6
    // xidx = xidx-sinlen_x
    // [23] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x -- vbuz1=vbuz1_minus_vbuc1 
    lax.z xidx
    axs #sinlen_x
    stx.z xidx
    // [24] phi from anim::@3 anim::@6 to anim::@4 [phi:anim::@3/anim::@6->anim::@4]
    // [24] phi (byte) anim::xidx#5 = (byte) anim::xidx#1 [phi:anim::@3/anim::@6->anim::@4#0] -- register_copy 
    // anim::@4
  __b4:
    // yidx = yidx+8
    // [25] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte) 8 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z yidx
    axs #-[8]
    stx.z yidx
    // if(yidx>=sinlen_y)
    // [26] if((byte) anim::yidx#1<(const byte) sinlen_y) goto anim::@5 -- vbuz1_lt_vbuc1_then_la1 
    txa
    cmp #sinlen_y
    bcc __b5
    // anim::@7
    // yidx = yidx-sinlen_y
    // [27] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y -- vbuz1=vbuz1_minus_vbuc1 
    lax.z yidx
    axs #sinlen_y
    stx.z yidx
    // [28] phi from anim::@4 anim::@7 to anim::@5 [phi:anim::@4/anim::@7->anim::@5]
    // [28] phi (byte) anim::yidx#6 = (byte) anim::yidx#1 [phi:anim::@4/anim::@7->anim::@5#0] -- register_copy 
    // anim::@5
  __b5:
    // j2 = j2-2
    // [29] (byte) anim::j2#1 ← (byte) anim::j2#2 - (byte) 2 -- vbuz1=vbuz1_minus_2 
    dec.z j2
    dec.z j2
    // for( byte j : 0..6)
    // [30] (byte) anim::j#1 ← ++ (byte) anim::j#2 -- vbuz1=_inc_vbuz1 
    inc.z j
    // [31] if((byte) anim::j#1!=(byte) 7) goto anim::@3 -- vbuz1_neq_vbuc1_then_la1 
    lda #7
    cmp.z j
    bne __b3
    // anim::@8
    // *SPRITES_XMSB = x_msb
    // [32] *((const byte*) SPRITES_XMSB) ← (byte) anim::x_msb#1 -- _deref_pbuc1=vbuz1 
    lda.z x_msb
    sta SPRITES_XMSB
    // if(++sin_idx_x>=sinlen_x)
    // [33] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 -- vbuz1=_inc_vbuz1 
    inc.z sin_idx_x
    // [34] if((byte) sin_idx_x#3<(const byte) sinlen_x) goto anim::@9 -- vbuz1_lt_vbuc1_then_la1 
    lda.z sin_idx_x
    cmp #sinlen_x
    bcc __b1
    // [36] phi from anim::@8 to anim::@1 [phi:anim::@8->anim::@1]
    // [36] phi (byte) sin_idx_x#11 = (byte) 0 [phi:anim::@8->anim::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_idx_x
    // [35] phi from anim::@8 to anim::@9 [phi:anim::@8->anim::@9]
    // anim::@9
    // [36] phi from anim::@9 to anim::@1 [phi:anim::@9->anim::@1]
    // [36] phi (byte) sin_idx_x#11 = (byte) sin_idx_x#3 [phi:anim::@9->anim::@1#0] -- register_copy 
    // anim::@1
  __b1:
    // if(++sin_idx_y>=sinlen_y)
    // [37] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 -- vbuz1=_inc_vbuz1 
    inc.z sin_idx_y
    // [38] if((byte) sin_idx_y#3<(const byte) sinlen_y) goto anim::@10 -- vbuz1_lt_vbuc1_then_la1 
    lda.z sin_idx_y
    cmp #sinlen_y
    bcc __b2
    // [40] phi from anim::@1 to anim::@2 [phi:anim::@1->anim::@2]
    // [40] phi (byte) sin_idx_y#11 = (byte) 0 [phi:anim::@1->anim::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_idx_y
    // [39] phi from anim::@1 to anim::@10 [phi:anim::@1->anim::@10]
    // anim::@10
    // [40] phi from anim::@10 to anim::@2 [phi:anim::@10->anim::@2]
    // [40] phi (byte) sin_idx_y#11 = (byte) sin_idx_y#3 [phi:anim::@10->anim::@2#0] -- register_copy 
    // anim::@2
  __b2:
    // (*BORDERCOL)--;
    // [41] *((const byte*) BORDERCOL) ← -- *((const byte*) BORDERCOL) -- _deref_pbuc1=_dec__deref_pbuc1 
    dec BORDERCOL
    // anim::@return
    // }
    // [42] return 
    rts
}
  // init
init: {
    // clear_screen()
    // [44] call clear_screen 
    // [65] phi from init to clear_screen [phi:init->clear_screen]
    jsr clear_screen
    // [45] phi from init to init::@1 [phi:init->init::@1]
    // [45] phi (byte) init::i#2 = (byte) 0 [phi:init->init::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [45] phi from init::@1 to init::@1 [phi:init::@1->init::@1]
    // [45] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy 
    // init::@1
  __b1:
    // COLS[i] = $0
    // [46] *((const byte*) COLS + (byte) init::i#2) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #0
    sta COLS,x
    // COLS[40+i] = $b
    // [47] *((const byte*) COLS+(byte) $28 + (byte) init::i#2) ← (byte) $b -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #$b
    sta COLS+$28,x
    // for( byte i : 0..39)
    // [48] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [49] if((byte) init::i#1!=(byte) $28) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$28
    bne __b1
    // [50] phi from init::@1 to init::@2 [phi:init::@1->init::@2]
    // init::@2
    // place_sprites()
    // [51] call place_sprites 
    jsr place_sprites
    // [52] phi from init::@2 to init::@3 [phi:init::@2->init::@3]
    // init::@3
    // gen_sprites()
    // [53] call gen_sprites 
    // [172] phi from init::@3 to gen_sprites [phi:init::@3->gen_sprites]
    jsr gen_sprites
    // [54] phi from init::@3 to init::@4 [phi:init::@3->init::@4]
    // init::@4
    // progress_init(SCREEN)
    // [55] call progress_init 
    // [170] phi from init::@4 to progress_init [phi:init::@4->progress_init]
    // [170] phi (byte*) progress_init::line#2 = (const byte*) SCREEN [phi:init::@4->progress_init#0] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta.z progress_init.line
    lda #>SCREEN
    sta.z progress_init.line+1
    jsr progress_init
    // [56] phi from init::@4 to init::@5 [phi:init::@4->init::@5]
    // init::@5
    // gen_sintab(sintab_x, sinlen_x, $00, $ff)
    // [57] call gen_sintab 
    // [71] phi from init::@5 to gen_sintab [phi:init::@5->gen_sintab]
    // [71] phi (byte*) gen_sintab::sintab#13 = (const byte*) sintab_x [phi:init::@5->gen_sintab#0] -- pbuz1=pbuc1 
    lda #<sintab_x
    sta.z gen_sintab.sintab
    lda #>sintab_x
    sta.z gen_sintab.sintab+1
    // [71] phi (byte) gen_sintab::length#10 = (const byte) sinlen_x [phi:init::@5->gen_sintab#1] -- vbuz1=vbuc1 
    lda #sinlen_x
    sta.z gen_sintab.length
    // [71] phi (byte) gen_sintab::min#2 = (byte) 0 [phi:init::@5->gen_sintab#2] -- vbuz1=vbuc1 
    lda #0
    sta.z gen_sintab.min
    // [71] phi (byte) gen_sintab::max#2 = (byte) $ff [phi:init::@5->gen_sintab#3] -- vbuxx=vbuc1 
    ldx #$ff
    jsr gen_sintab
    // [58] phi from init::@5 to init::@6 [phi:init::@5->init::@6]
    // init::@6
    // progress_init(SCREEN+40)
    // [59] call progress_init 
    // [170] phi from init::@6 to progress_init [phi:init::@6->progress_init]
    // [170] phi (byte*) progress_init::line#2 = (const byte*) SCREEN+(byte) $28 [phi:init::@6->progress_init#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28
    sta.z progress_init.line
    lda #>SCREEN+$28
    sta.z progress_init.line+1
    jsr progress_init
    // [60] phi from init::@6 to init::@7 [phi:init::@6->init::@7]
    // init::@7
    // gen_sintab(sintab_y, sinlen_y, $32, $d0)
    // [61] call gen_sintab 
    // [71] phi from init::@7 to gen_sintab [phi:init::@7->gen_sintab]
    // [71] phi (byte*) gen_sintab::sintab#13 = (const byte*) sintab_y [phi:init::@7->gen_sintab#0] -- pbuz1=pbuc1 
    lda #<sintab_y
    sta.z gen_sintab.sintab
    lda #>sintab_y
    sta.z gen_sintab.sintab+1
    // [71] phi (byte) gen_sintab::length#10 = (const byte) sinlen_y [phi:init::@7->gen_sintab#1] -- vbuz1=vbuc1 
    lda #sinlen_y
    sta.z gen_sintab.length
    // [71] phi (byte) gen_sintab::min#2 = (byte) $32 [phi:init::@7->gen_sintab#2] -- vbuz1=vbuc1 
    lda #$32
    sta.z gen_sintab.min
    // [71] phi (byte) gen_sintab::max#2 = (byte) $d0 [phi:init::@7->gen_sintab#3] -- vbuxx=vbuc1 
    ldx #$d0
    jsr gen_sintab
    // [62] phi from init::@7 to init::@8 [phi:init::@7->init::@8]
    // init::@8
    // clear_screen()
    // [63] call clear_screen 
    // [65] phi from init::@8 to clear_screen [phi:init::@8->clear_screen]
    jsr clear_screen
    // init::@return
    // }
    // [64] return 
    rts
}
  // clear_screen
clear_screen: {
    .label sc = $f
    // [66] phi from clear_screen to clear_screen::@1 [phi:clear_screen->clear_screen::@1]
    // [66] phi (byte*) clear_screen::sc#2 = (const byte*) SCREEN [phi:clear_screen->clear_screen::@1#0] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta.z sc
    lda #>SCREEN
    sta.z sc+1
    // clear_screen::@1
  __b1:
    // for(byte* sc = SCREEN; sc<SCREEN+1000; sc++)
    // [67] if((byte*) clear_screen::sc#2<(const byte*) SCREEN+(word) $3e8) goto clear_screen::@2 -- pbuz1_lt_pbuc1_then_la1 
    lda.z sc+1
    cmp #>SCREEN+$3e8
    bcc __b2
    bne !+
    lda.z sc
    cmp #<SCREEN+$3e8
    bcc __b2
  !:
    // clear_screen::@return
    // }
    // [68] return 
    rts
    // clear_screen::@2
  __b2:
    // *sc = ' '
    // [69] *((byte*) clear_screen::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (sc),y
    // for(byte* sc = SCREEN; sc<SCREEN+1000; sc++)
    // [70] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 -- pbuz1=_inc_pbuz1 
    inc.z sc
    bne !+
    inc.z sc+1
  !:
    // [66] phi from clear_screen::@2 to clear_screen::@1 [phi:clear_screen::@2->clear_screen::@1]
    // [66] phi (byte*) clear_screen::sc#2 = (byte*) clear_screen::sc#1 [phi:clear_screen::@2->clear_screen::@1#0] -- register_copy 
    jmp __b1
}
  // gen_sintab
// Generate a sinus table using BASIC floats
// - sintab is a pointer to the table to fill
// - length is the length of the sine table
// - min is the minimum value of the generated sinus
// - max is the maximum value of the generated sinus
// gen_sintab(byte* zp($f) sintab, byte zp(8) length, byte zp(6) min, byte register(X) max)
gen_sintab: {
    // amplitude/2
    .label f_2pi = $e2e5
    .label __24 = $13
    .label i = 9
    .label min = 6
    .label length = 8
    .label sintab = $f
    // setFAC((word)max)
    // [72] (word) setFAC::w#0 ← (word)(byte) gen_sintab::max#2 -- vwuz1=_word_vbuxx 
    txa
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [73] call setFAC 
    // [152] phi from gen_sintab to setFAC [phi:gen_sintab->setFAC]
    // [152] phi (word) setFAC::prepareMEM1_mem#0 = (word) setFAC::w#0 [phi:gen_sintab->setFAC#0] -- register_copy 
    jsr setFAC
    // [74] phi from gen_sintab to gen_sintab::@3 [phi:gen_sintab->gen_sintab::@3]
    // gen_sintab::@3
    // setARGtoFAC()
    // [75] call setARGtoFAC 
    jsr setARGtoFAC
    // gen_sintab::@4
    // setFAC((word)min)
    // [76] (word) setFAC::w#1 ← (word)(byte) gen_sintab::min#2 -- vwuz1=_word_vbuz2 
    lda.z min
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [77] call setFAC 
    // [152] phi from gen_sintab::@4 to setFAC [phi:gen_sintab::@4->setFAC]
    // [152] phi (word) setFAC::prepareMEM1_mem#0 = (word) setFAC::w#1 [phi:gen_sintab::@4->setFAC#0] -- register_copy 
    jsr setFAC
    // [78] phi from gen_sintab::@4 to gen_sintab::@5 [phi:gen_sintab::@4->gen_sintab::@5]
    // gen_sintab::@5
    // setMEMtoFAC(f_min)
    // [79] call setMEMtoFAC 
    // [159] phi from gen_sintab::@5 to setMEMtoFAC [phi:gen_sintab::@5->setMEMtoFAC]
    // [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte*) gen_sintab::f_min [phi:gen_sintab::@5->setMEMtoFAC#0] -- pbuz1=pbuc1 
    lda #<f_min
    sta.z setMEMtoFAC.mem
    lda #>f_min
    sta.z setMEMtoFAC.mem+1
    jsr setMEMtoFAC
    // [80] phi from gen_sintab::@5 to gen_sintab::@6 [phi:gen_sintab::@5->gen_sintab::@6]
    // gen_sintab::@6
    // subFACfromARG()
    // [81] call subFACfromARG 
    jsr subFACfromARG
    // [82] phi from gen_sintab::@6 to gen_sintab::@7 [phi:gen_sintab::@6->gen_sintab::@7]
    // gen_sintab::@7
    // setMEMtoFAC(f_amp)
    // [83] call setMEMtoFAC 
    // [159] phi from gen_sintab::@7 to setMEMtoFAC [phi:gen_sintab::@7->setMEMtoFAC]
    // [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte*) gen_sintab::f_amp [phi:gen_sintab::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 
    lda #<f_amp
    sta.z setMEMtoFAC.mem
    lda #>f_amp
    sta.z setMEMtoFAC.mem+1
    jsr setMEMtoFAC
    // [84] phi from gen_sintab::@7 to gen_sintab::@8 [phi:gen_sintab::@7->gen_sintab::@8]
    // gen_sintab::@8
    // setFAC(2)
    // [85] call setFAC 
    // [152] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC]
    // [152] phi (word) setFAC::prepareMEM1_mem#0 = (byte) 2 [phi:gen_sintab::@8->setFAC#0] -- vwuz1=vbuc1 
    lda #<2
    sta.z setFAC.prepareMEM1_mem
    lda #>2
    sta.z setFAC.prepareMEM1_mem+1
    jsr setFAC
    // [86] phi from gen_sintab::@8 to gen_sintab::@9 [phi:gen_sintab::@8->gen_sintab::@9]
    // gen_sintab::@9
    // divMEMbyFAC(f_amp)
    // [87] call divMEMbyFAC 
    // [145] phi from gen_sintab::@9 to divMEMbyFAC [phi:gen_sintab::@9->divMEMbyFAC]
    // [145] phi (byte*) divMEMbyFAC::mem#2 = (const byte*) gen_sintab::f_amp [phi:gen_sintab::@9->divMEMbyFAC#0] -- pbuz1=pbuc1 
    lda #<f_amp
    sta.z divMEMbyFAC.mem
    lda #>f_amp
    sta.z divMEMbyFAC.mem+1
    jsr divMEMbyFAC
    // [88] phi from gen_sintab::@9 to gen_sintab::@10 [phi:gen_sintab::@9->gen_sintab::@10]
    // gen_sintab::@10
    // setMEMtoFAC(f_amp)
    // [89] call setMEMtoFAC 
    // [159] phi from gen_sintab::@10 to setMEMtoFAC [phi:gen_sintab::@10->setMEMtoFAC]
    // [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte*) gen_sintab::f_amp [phi:gen_sintab::@10->setMEMtoFAC#0] -- pbuz1=pbuc1 
    lda #<f_amp
    sta.z setMEMtoFAC.mem
    lda #>f_amp
    sta.z setMEMtoFAC.mem+1
    jsr setMEMtoFAC
    // [90] phi from gen_sintab::@10 to gen_sintab::@11 [phi:gen_sintab::@10->gen_sintab::@11]
    // gen_sintab::@11
    // addMEMtoFAC(f_min)
    // [91] call addMEMtoFAC 
    // [131] phi from gen_sintab::@11 to addMEMtoFAC [phi:gen_sintab::@11->addMEMtoFAC]
    jsr addMEMtoFAC
    // [92] phi from gen_sintab::@11 to gen_sintab::@12 [phi:gen_sintab::@11->gen_sintab::@12]
    // gen_sintab::@12
    // setMEMtoFAC(f_min)
    // [93] call setMEMtoFAC 
    // [159] phi from gen_sintab::@12 to setMEMtoFAC [phi:gen_sintab::@12->setMEMtoFAC]
    // [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte*) gen_sintab::f_min [phi:gen_sintab::@12->setMEMtoFAC#0] -- pbuz1=pbuc1 
    lda #<f_min
    sta.z setMEMtoFAC.mem
    lda #>f_min
    sta.z setMEMtoFAC.mem+1
    jsr setMEMtoFAC
    // [94] phi from gen_sintab::@12 to gen_sintab::@1 [phi:gen_sintab::@12->gen_sintab::@1]
    // [94] phi (byte*) progress_cursor#13 = (byte*) progress_init::line#2 [phi:gen_sintab::@12->gen_sintab::@1#0] -- register_copy 
    // [94] phi (byte) progress_idx#14 = (byte) 0 [phi:gen_sintab::@12->gen_sintab::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z progress_idx
    // [94] phi (byte) gen_sintab::i#10 = (byte) 0 [phi:gen_sintab::@12->gen_sintab::@1#2] -- vbuz1=vbuc1 
    sta.z i
  // f_min = min + (max - min) / 2
    // gen_sintab::@1
  __b1:
    // for(byte i =0; i<length; i++)
    // [95] if((byte) gen_sintab::i#10<(byte) gen_sintab::length#10) goto gen_sintab::@2 -- vbuz1_lt_vbuz2_then_la1 
    lda.z i
    cmp.z length
    bcc __b2
    // gen_sintab::@return
    // }
    // [96] return 
    rts
    // gen_sintab::@2
  __b2:
    // setFAC((word)i)
    // [97] (word) setFAC::w#3 ← (word)(byte) gen_sintab::i#10 -- vwuz1=_word_vbuz2 
    lda.z i
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [98] call setFAC 
    // [152] phi from gen_sintab::@2 to setFAC [phi:gen_sintab::@2->setFAC]
    // [152] phi (word) setFAC::prepareMEM1_mem#0 = (word) setFAC::w#3 [phi:gen_sintab::@2->setFAC#0] -- register_copy 
    jsr setFAC
    // [99] phi from gen_sintab::@2 to gen_sintab::@13 [phi:gen_sintab::@2->gen_sintab::@13]
    // gen_sintab::@13
    // mulFACbyMEM(f_2pi)
    // [100] call mulFACbyMEM 
    // [136] phi from gen_sintab::@13 to mulFACbyMEM [phi:gen_sintab::@13->mulFACbyMEM]
    // [136] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) gen_sintab::f_2pi [phi:gen_sintab::@13->mulFACbyMEM#0] -- pbuz1=pbuc1 
    lda #<f_2pi
    sta.z mulFACbyMEM.mem
    lda #>f_2pi
    sta.z mulFACbyMEM.mem+1
    jsr mulFACbyMEM
    // [101] phi from gen_sintab::@13 to gen_sintab::@14 [phi:gen_sintab::@13->gen_sintab::@14]
    // gen_sintab::@14
    // setMEMtoFAC(f_i)
    // [102] call setMEMtoFAC 
    // [159] phi from gen_sintab::@14 to setMEMtoFAC [phi:gen_sintab::@14->setMEMtoFAC]
    // [159] phi (byte*) setMEMtoFAC::mem#5 = (const byte*) gen_sintab::f_i [phi:gen_sintab::@14->setMEMtoFAC#0] -- pbuz1=pbuc1 
    lda #<f_i
    sta.z setMEMtoFAC.mem
    lda #>f_i
    sta.z setMEMtoFAC.mem+1
    jsr setMEMtoFAC
    // gen_sintab::@15
    // setFAC((word)length)
    // [103] (word) setFAC::w#4 ← (word)(byte) gen_sintab::length#10 -- vwuz1=_word_vbuz2 
    lda.z length
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [104] call setFAC 
    // [152] phi from gen_sintab::@15 to setFAC [phi:gen_sintab::@15->setFAC]
    // [152] phi (word) setFAC::prepareMEM1_mem#0 = (word) setFAC::w#4 [phi:gen_sintab::@15->setFAC#0] -- register_copy 
    jsr setFAC
    // [105] phi from gen_sintab::@15 to gen_sintab::@16 [phi:gen_sintab::@15->gen_sintab::@16]
    // gen_sintab::@16
    // divMEMbyFAC(f_i)
    // [106] call divMEMbyFAC 
    // [145] phi from gen_sintab::@16 to divMEMbyFAC [phi:gen_sintab::@16->divMEMbyFAC]
    // [145] phi (byte*) divMEMbyFAC::mem#2 = (const byte*) gen_sintab::f_i [phi:gen_sintab::@16->divMEMbyFAC#0] -- pbuz1=pbuc1 
    lda #<f_i
    sta.z divMEMbyFAC.mem
    lda #>f_i
    sta.z divMEMbyFAC.mem+1
    jsr divMEMbyFAC
    // [107] phi from gen_sintab::@16 to gen_sintab::@17 [phi:gen_sintab::@16->gen_sintab::@17]
    // gen_sintab::@17
    // sinFAC()
    // [108] call sinFAC 
    jsr sinFAC
    // [109] phi from gen_sintab::@17 to gen_sintab::@18 [phi:gen_sintab::@17->gen_sintab::@18]
    // gen_sintab::@18
    // mulFACbyMEM(f_amp)
    // [110] call mulFACbyMEM 
    // [136] phi from gen_sintab::@18 to mulFACbyMEM [phi:gen_sintab::@18->mulFACbyMEM]
    // [136] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) gen_sintab::f_amp [phi:gen_sintab::@18->mulFACbyMEM#0] -- pbuz1=pbuc1 
    lda #<f_amp
    sta.z mulFACbyMEM.mem
    lda #>f_amp
    sta.z mulFACbyMEM.mem+1
    jsr mulFACbyMEM
    // [111] phi from gen_sintab::@18 to gen_sintab::@19 [phi:gen_sintab::@18->gen_sintab::@19]
    // gen_sintab::@19
    // addMEMtoFAC(f_min)
    // [112] call addMEMtoFAC 
    // [131] phi from gen_sintab::@19 to addMEMtoFAC [phi:gen_sintab::@19->addMEMtoFAC]
    jsr addMEMtoFAC
    // [113] phi from gen_sintab::@19 to gen_sintab::@20 [phi:gen_sintab::@19->gen_sintab::@20]
    // gen_sintab::@20
    // getFAC()
    // [114] call getFAC 
    jsr getFAC
    // [115] (word) getFAC::return#2 ← (word) getFAC::return#0
    // gen_sintab::@21
    // [116] (word~) gen_sintab::$24 ← (word) getFAC::return#2
    // (byte)getFAC()
    // [117] (byte~) gen_sintab::$25 ← (byte)(word~) gen_sintab::$24 -- vbuaa=_byte_vwuz1 
    lda.z __24
    // sintab[i] = (byte)getFAC()
    // [118] *((byte*) gen_sintab::sintab#13 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$25 -- pbuz1_derefidx_vbuz2=vbuaa 
    // fac =  sin( i * 2 * PI / length ) * (max - min) / 2 + min + (max - min) / 2
    ldy.z i
    sta (sintab),y
    // progress_inc()
    // [119] call progress_inc 
    jsr progress_inc
    // gen_sintab::@22
    // for(byte i =0; i<length; i++)
    // [120] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [94] phi from gen_sintab::@22 to gen_sintab::@1 [phi:gen_sintab::@22->gen_sintab::@1]
    // [94] phi (byte*) progress_cursor#13 = (byte*) progress_cursor#11 [phi:gen_sintab::@22->gen_sintab::@1#0] -- register_copy 
    // [94] phi (byte) progress_idx#14 = (byte) progress_idx#12 [phi:gen_sintab::@22->gen_sintab::@1#1] -- register_copy 
    // [94] phi (byte) gen_sintab::i#10 = (byte) gen_sintab::i#1 [phi:gen_sintab::@22->gen_sintab::@1#2] -- register_copy 
    jmp __b1
    f_i: .byte 0, 0, 0, 0, 0
    // i * 2 * PI
    f_min: .byte 0, 0, 0, 0, 0
    // amplitude/2 + min
    f_amp: .byte 0, 0, 0, 0, 0
}
  // progress_inc
// Increase PETSCII progress one bit
// Done by increasing the character until the idx is 8 and then moving to the next char
progress_inc: {
    // if(++progress_idx==8)
    // [121] (byte) progress_idx#10 ← ++ (byte) progress_idx#14 -- vbuz1=_inc_vbuz1 
    inc.z progress_idx
    // [122] if((byte) progress_idx#10!=(byte) 8) goto progress_inc::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z progress_idx
    bne __b1
    // progress_inc::@2
    // *progress_cursor = progress_chars[8]
    // [123] *((byte*) progress_cursor#13) ← *((const byte*) progress_inc::progress_chars+(byte) 8) -- _deref_pbuz1=_deref_pbuc1 
    lda progress_chars+8
    ldy #0
    sta (progress_cursor),y
    // progress_cursor++;
    // [124] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#13 -- pbuz1=_inc_pbuz1 
    inc.z progress_cursor
    bne !+
    inc.z progress_cursor+1
  !:
    // [125] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1]
    // [125] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#10 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy 
    // [125] phi (byte) progress_idx#12 = (byte) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z progress_idx
    // [125] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1]
    // [125] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#13 [phi:progress_inc->progress_inc::@1#0] -- register_copy 
    // [125] phi (byte) progress_idx#12 = (byte) progress_idx#10 [phi:progress_inc->progress_inc::@1#1] -- register_copy 
    // progress_inc::@1
  __b1:
    // *progress_cursor = progress_chars[progress_idx]
    // [126] *((byte*) progress_cursor#11) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#12) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 
    ldy.z progress_idx
    lda progress_chars,y
    ldy #0
    sta (progress_cursor),y
    // progress_inc::@return
    // }
    // [127] return 
    rts
    // Progress characters
    progress_chars: .byte $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0
}
  // getFAC
// word = FAC
// Get the value of the FAC (floating point accumulator) as an integer 16bit word
// Destroys the value in the FAC in the process
getFAC: {
    .label return = $13
    // asm
    // asm { jsr$b1aa stymemLo stamemHi  }
    // Load FAC (floating point accumulator) integer part into word register Y,A
    jsr $b1aa
    sty memLo
    sta memHi
    // w = { *memHi, *memLo }
    // [129] (word) getFAC::return#0 ← *((const byte*) memHi) w= *((const byte*) memLo) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 
    tya
    sta.z return
    lda memHi
    sta.z return+1
    // getFAC::@return
    // }
    // [130] return 
    rts
}
  // addMEMtoFAC
// FAC = MEM+FAC
// Set FAC to MEM (float saved in memory) plus FAC (float accumulator)
// Reads 5 bytes from memory
addMEMtoFAC: {
    // addMEMtoFAC::prepareMEM1
    // *memLo = <mem
    // [132] *((const byte*) memLo) ← <(word)(const byte*) gen_sintab::f_min -- _deref_pbuc1=vbuc2 
    lda #<gen_sintab.f_min
    sta memLo
    // *memHi = >mem
    // [133] *((const byte*) memHi) ← >(word)(const byte*) gen_sintab::f_min -- _deref_pbuc1=vbuc2 
    lda #>gen_sintab.f_min
    sta memHi
    // addMEMtoFAC::@1
    // asm
    // asm { ldamemLo ldymemHi jsr$b867  }
    lda memLo
    ldy memHi
    jsr $b867
    // addMEMtoFAC::@return
    // }
    // [135] return 
    rts
}
  // mulFACbyMEM
// FAC = MEM*FAC
// Set FAC to MEM (float saved in memory) multiplied by FAC (float accumulator)
// Reads 5 bytes from memory
// mulFACbyMEM(byte* zp($13) mem)
mulFACbyMEM: {
    .label mem = $13
    // mulFACbyMEM::prepareMEM1
    // <mem
    // [137] (byte~) mulFACbyMEM::prepareMEM1_$0 ← < (word)(byte*) mulFACbyMEM::mem#2 -- vbuaa=_lo_vwuz1 
    lda.z mem
    // *memLo = <mem
    // [138] *((const byte*) memLo) ← (byte~) mulFACbyMEM::prepareMEM1_$0 -- _deref_pbuc1=vbuaa 
    sta memLo
    // >mem
    // [139] (byte~) mulFACbyMEM::prepareMEM1_$1 ← > (word)(byte*) mulFACbyMEM::mem#2 -- vbuaa=_hi_vwuz1 
    lda.z mem+1
    // *memHi = >mem
    // [140] *((const byte*) memHi) ← (byte~) mulFACbyMEM::prepareMEM1_$1 -- _deref_pbuc1=vbuaa 
    sta memHi
    // mulFACbyMEM::@1
    // asm
    // asm { ldamemLo ldymemHi jsr$ba28  }
    lda memLo
    ldy memHi
    jsr $ba28
    // mulFACbyMEM::@return
    // }
    // [142] return 
    rts
}
  // sinFAC
// FAC = sin(FAC)
// Set FAC to sinus of the FAC - sin(FAC)
// Sinus is calculated on radians (0-2*PI)
sinFAC: {
    // asm
    // asm { jsr$e26b  }
    jsr $e26b
    // sinFAC::@return
    // }
    // [144] return 
    rts
}
  // divMEMbyFAC
// FAC = MEM/FAC
// Set FAC to MEM (float saved in memory) divided by FAC (float accumulator)
// Reads 5 bytes from memory
// divMEMbyFAC(byte* zp($13) mem)
divMEMbyFAC: {
    .label mem = $13
    // divMEMbyFAC::prepareMEM1
    // <mem
    // [146] (byte~) divMEMbyFAC::prepareMEM1_$0 ← < (word)(byte*) divMEMbyFAC::mem#2 -- vbuaa=_lo_vwuz1 
    lda.z mem
    // *memLo = <mem
    // [147] *((const byte*) memLo) ← (byte~) divMEMbyFAC::prepareMEM1_$0 -- _deref_pbuc1=vbuaa 
    sta memLo
    // >mem
    // [148] (byte~) divMEMbyFAC::prepareMEM1_$1 ← > (word)(byte*) divMEMbyFAC::mem#2 -- vbuaa=_hi_vwuz1 
    lda.z mem+1
    // *memHi = >mem
    // [149] *((const byte*) memHi) ← (byte~) divMEMbyFAC::prepareMEM1_$1 -- _deref_pbuc1=vbuaa 
    sta memHi
    // divMEMbyFAC::@1
    // asm
    // asm { ldamemLo ldymemHi jsr$bb0f  }
    lda memLo
    ldy memHi
    jsr $bb0f
    // divMEMbyFAC::@return
    // }
    // [151] return 
    rts
}
  // setFAC
// FAC = word
// Set the FAC (floating point accumulator) to the integer value of a 16bit word
// setFAC(word zp($13) w)
setFAC: {
    .label prepareMEM1_mem = $13
    .label w = $13
    // setFAC::prepareMEM1
    // <mem
    // [153] (byte~) setFAC::prepareMEM1_$0 ← < (word) setFAC::prepareMEM1_mem#0 -- vbuaa=_lo_vwuz1 
    lda.z prepareMEM1_mem
    // *memLo = <mem
    // [154] *((const byte*) memLo) ← (byte~) setFAC::prepareMEM1_$0 -- _deref_pbuc1=vbuaa 
    sta memLo
    // >mem
    // [155] (byte~) setFAC::prepareMEM1_$1 ← > (word) setFAC::prepareMEM1_mem#0 -- vbuaa=_hi_vwuz1 
    lda.z prepareMEM1_mem+1
    // *memHi = >mem
    // [156] *((const byte*) memHi) ← (byte~) setFAC::prepareMEM1_$1 -- _deref_pbuc1=vbuaa 
    sta memHi
    // setFAC::@1
    // asm
    // asm { ldymemLo ldamemHi jsr$b391  }
    // Load word register Y,A into FAC (floating point accumulator)
    ldy memLo
    jsr $b391
    // setFAC::@return
    // }
    // [158] return 
    rts
}
  // setMEMtoFAC
// MEM = FAC
// Stores the value of the FAC to memory
// Stores 5 bytes (means it is necessary to allocate 5 bytes to avoid clobbering other data using eg. byte[] mem = {0, 0, 0, 0, 0};)
// setMEMtoFAC(byte* zp($13) mem)
setMEMtoFAC: {
    .label mem = $13
    // setMEMtoFAC::prepareMEM1
    // <mem
    // [160] (byte~) setMEMtoFAC::prepareMEM1_$0 ← < (word)(byte*) setMEMtoFAC::mem#5 -- vbuaa=_lo_vwuz1 
    lda.z mem
    // *memLo = <mem
    // [161] *((const byte*) memLo) ← (byte~) setMEMtoFAC::prepareMEM1_$0 -- _deref_pbuc1=vbuaa 
    sta memLo
    // >mem
    // [162] (byte~) setMEMtoFAC::prepareMEM1_$1 ← > (word)(byte*) setMEMtoFAC::mem#5 -- vbuaa=_hi_vwuz1 
    lda.z mem+1
    // *memHi = >mem
    // [163] *((const byte*) memHi) ← (byte~) setMEMtoFAC::prepareMEM1_$1 -- _deref_pbuc1=vbuaa 
    sta memHi
    // setMEMtoFAC::@1
    // asm
    // asm { ldxmemLo ldymemHi jsr$bbd4  }
    ldx memLo
    tay
    jsr $bbd4
    // setMEMtoFAC::@return
    // }
    // [165] return 
    rts
}
  // subFACfromARG
// FAC = ARG-FAC
// Set FAC to ARG minus FAC
subFACfromARG: {
    // asm
    // asm { jsr$b853  }
    jsr $b853
    // subFACfromARG::@return
    // }
    // [167] return 
    rts
}
  // setARGtoFAC
// ARG = FAC
// Set the ARG (floating point argument) to the value of the FAC (floating point accumulator)
setARGtoFAC: {
    // asm
    // asm { jsr$bc0f  }
    jsr $bc0f
    // setARGtoFAC::@return
    // }
    // [169] return 
    rts
}
  // progress_init
// Initialize the PETSCII progress bar
// progress_init(byte* zp(2) line)
progress_init: {
    .label line = 2
    // progress_init::@return
    // [171] return 
    rts
}
  // gen_sprites
gen_sprites: {
    .label spr = 2
    .label i = $b
    // [173] phi from gen_sprites to gen_sprites::@1 [phi:gen_sprites->gen_sprites::@1]
    // [173] phi (byte*) gen_sprites::spr#2 = (const byte*) sprites [phi:gen_sprites->gen_sprites::@1#0] -- pbuz1=pbuc1 
    lda #<sprites
    sta.z spr
    lda #>sprites
    sta.z spr+1
    // [173] phi (byte) gen_sprites::i#2 = (byte) 0 [phi:gen_sprites->gen_sprites::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    // [173] phi from gen_sprites::@2 to gen_sprites::@1 [phi:gen_sprites::@2->gen_sprites::@1]
    // [173] phi (byte*) gen_sprites::spr#2 = (byte*) gen_sprites::spr#1 [phi:gen_sprites::@2->gen_sprites::@1#0] -- register_copy 
    // [173] phi (byte) gen_sprites::i#2 = (byte) gen_sprites::i#1 [phi:gen_sprites::@2->gen_sprites::@1#1] -- register_copy 
    // gen_sprites::@1
  __b1:
    // gen_chargen_sprite(cml[i], spr)
    // [174] (byte) gen_chargen_sprite::ch#0 ← *((const byte*) gen_sprites::cml + (byte) gen_sprites::i#2) -- vbuxx=pbuc1_derefidx_vbuz1 
    ldy.z i
    ldx cml,y
    // [175] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 -- pbuz1=pbuz2 
    lda.z spr
    sta.z gen_chargen_sprite.sprite
    lda.z spr+1
    sta.z gen_chargen_sprite.sprite+1
    // [176] call gen_chargen_sprite 
    jsr gen_chargen_sprite
    // gen_sprites::@2
    // spr = spr + $40
    // [177] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte) $40 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$40
    clc
    adc.z spr
    sta.z spr
    bcc !+
    inc.z spr+1
  !:
    // for( byte i : 0..6 )
    // [178] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [179] if((byte) gen_sprites::i#1!=(byte) 7) goto gen_sprites::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #7
    cmp.z i
    bne __b1
    // gen_sprites::@return
    // }
    // [180] return 
    rts
    cml: .text "camelot"
}
  // gen_chargen_sprite
// Generate a sprite from a C64 CHARGEN character (by making each pixel 3x3 pixels large)
// - c is the character to generate
// - sprite is a pointer to the position of the sprite to generate
// gen_chargen_sprite(byte register(X) ch, byte* zp($f) sprite)
gen_chargen_sprite: {
    .label __0 = $13
    .label __1 = $13
    .label sprite = $f
    .label chargen = $13
    .label bits = 5
    // current sprite byte
    .label s_gen = 9
    .label x = 6
    .label y = 4
    // Find the current chargen pixel (c)
    .label c = 8
    // (word)ch
    // [181] (word~) gen_chargen_sprite::$0 ← (word)(byte) gen_chargen_sprite::ch#0 -- vwuz1=_word_vbuxx 
    txa
    sta.z __0
    lda #0
    sta.z __0+1
    // ((word)ch)*8
    // [182] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte) 3 -- vwuz1=vwuz1_rol_3 
    asl.z __1
    rol.z __1+1
    asl.z __1
    rol.z __1+1
    asl.z __1
    rol.z __1+1
    // chargen = CHARGEN+((word)ch)*8
    // [183] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN + (word~) gen_chargen_sprite::$1 -- pbuz1=pbuc1_plus_vwuz1 
    clc
    lda.z chargen
    adc #<CHARGEN
    sta.z chargen
    lda.z chargen+1
    adc #>CHARGEN
    sta.z chargen+1
    // asm
    // asm { sei  }
    sei
    // *PROCPORT = $32
    // [185] *((const byte*) PROCPORT) ← (byte) $32 -- _deref_pbuc1=vbuc2 
    lda #$32
    sta PROCPORT
    // [186] phi from gen_chargen_sprite to gen_chargen_sprite::@1 [phi:gen_chargen_sprite->gen_chargen_sprite::@1]
    // [186] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#0] -- register_copy 
    // [186] phi (byte) gen_chargen_sprite::y#2 = (byte) 0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z y
    // [186] phi from gen_chargen_sprite::@8 to gen_chargen_sprite::@1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@1]
    // [186] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#2 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@1#0] -- register_copy 
    // [186] phi (byte) gen_chargen_sprite::y#2 = (byte) gen_chargen_sprite::y#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@1#1] -- register_copy 
    // gen_chargen_sprite::@1
  __b1:
    // bits = chargen[y]
    // [187] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) -- vbuz1=pbuz2_derefidx_vbuz3 
    // current chargen line
    ldy.z y
    lda (chargen),y
    sta.z bits
    // [188] phi from gen_chargen_sprite::@1 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2]
    // [188] phi (byte) gen_chargen_sprite::x#6 = (byte) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z x
    // [188] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#11 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#1] -- register_copy 
    // [188] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#2] -- vbuyy=vbuc1 
    tay
    // [188] phi (byte) gen_chargen_sprite::s_gen#5 = (byte) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#3] -- vbuz1=vbuc1 
    sta.z s_gen
    // [188] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#4] -- register_copy 
    // [188] phi from gen_chargen_sprite::@7 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2]
    // [188] phi (byte) gen_chargen_sprite::x#6 = (byte) gen_chargen_sprite::x#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#0] -- register_copy 
    // [188] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#1] -- register_copy 
    // [188] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#2] -- register_copy 
    // [188] phi (byte) gen_chargen_sprite::s_gen#5 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#3] -- register_copy 
    // [188] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#4] -- register_copy 
    // gen_chargen_sprite::@2
  __b2:
    // bits & $80
    // [189] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte) $80 -- vbuaa=vbuz1_band_vbuc1 
    lda #$80
    and.z bits
    // if((bits & $80) != 0)
    // [190] if((byte~) gen_chargen_sprite::$3==(byte) 0) goto gen_chargen_sprite::@3 -- vbuaa_eq_0_then_la1 
    cmp #0
    beq b1
    // [191] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@10 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@10]
    // gen_chargen_sprite::@10
    // [192] phi from gen_chargen_sprite::@10 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@10->gen_chargen_sprite::@3]
    // [192] phi (byte) gen_chargen_sprite::c#3 = (byte) 1 [phi:gen_chargen_sprite::@10->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 
    lda #1
    sta.z c
    jmp __b3
    // [192] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3]
  b1:
    // [192] phi (byte) gen_chargen_sprite::c#3 = (byte) 0 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z c
    // gen_chargen_sprite::@3
  __b3:
    // [193] phi from gen_chargen_sprite::@3 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4]
    // [193] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#10 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#0] -- register_copy 
    // [193] phi (byte) gen_chargen_sprite::b#2 = (byte) 0 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#1] -- vbuxx=vbuc1 
    ldx #0
    // [193] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#2] -- register_copy 
    // [193] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#5 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#3] -- register_copy 
  // generate 3 pixels in the sprite byte (s_gen)
    // [193] phi from gen_chargen_sprite::@5 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4]
    // [193] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#0] -- register_copy 
    // [193] phi (byte) gen_chargen_sprite::b#2 = (byte) gen_chargen_sprite::b#1 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#1] -- register_copy 
    // [193] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#2] -- register_copy 
    // [193] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#3] -- register_copy 
    // gen_chargen_sprite::@4
  __b4:
    // s_gen*2
    // [194] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte) 1 -- vbuaa=vbuz1_rol_1 
    lda.z s_gen
    asl
    // s_gen = s_gen*2 | c
    // [195] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 -- vbuz1=vbuaa_bor_vbuz2 
    ora.z c
    sta.z s_gen
    // if(++s_gen_cnt==8)
    // [196] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 -- vbuyy=_inc_vbuyy 
    iny
    // [197] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte) 8) goto gen_chargen_sprite::@5 -- vbuyy_neq_vbuc1_then_la1 
    cpy #8
    bne __b5
    // gen_chargen_sprite::@6
    // sprite[0] = s_gen
    // [198] *((byte*) gen_chargen_sprite::sprite#3) ← (byte) gen_chargen_sprite::s_gen#1 -- _deref_pbuz1=vbuz2 
    // sprite byte filled - store and move to next byte
    ldy #0
    sta (sprite),y
    // sprite[3] = s_gen
    // [199] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 3) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 
    ldy #3
    sta (sprite),y
    // sprite[6] = s_gen
    // [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte) 6) ← (byte) gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 
    ldy #6
    sta (sprite),y
    // sprite++;
    // [201] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 -- pbuz1=_inc_pbuz1 
    inc.z sprite
    bne !+
    inc.z sprite+1
  !:
    // [202] phi from gen_chargen_sprite::@6 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5]
    // [202] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#1 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5#0] -- register_copy 
    // [202] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) 0 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5#1] -- vbuyy=vbuc1 
    ldy #0
    // [202] phi (byte) gen_chargen_sprite::s_gen#6 = (byte) 0 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5#2] -- vbuz1=vbuc1 
    tya
    sta.z s_gen
    // [202] phi from gen_chargen_sprite::@4 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5]
    // [202] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#3 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#0] -- register_copy 
    // [202] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) gen_chargen_sprite::s_gen_cnt#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#1] -- register_copy 
    // [202] phi (byte) gen_chargen_sprite::s_gen#6 = (byte) gen_chargen_sprite::s_gen#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#2] -- register_copy 
    // gen_chargen_sprite::@5
  __b5:
    // for(byte b : 0..2)
    // [203] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 -- vbuxx=_inc_vbuxx 
    inx
    // [204] if((byte) gen_chargen_sprite::b#1!=(byte) 3) goto gen_chargen_sprite::@4 -- vbuxx_neq_vbuc1_then_la1 
    cpx #3
    bne __b4
    // gen_chargen_sprite::@7
    // bits = bits*2
    // [205] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte) 1 -- vbuz1=vbuz1_rol_1 
    asl.z bits
    // for(byte x:0..7)
    // [206] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 -- vbuz1=_inc_vbuz1 
    inc.z x
    // [207] if((byte) gen_chargen_sprite::x#1!=(byte) 8) goto gen_chargen_sprite::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z x
    bne __b2
    // gen_chargen_sprite::@8
    // sprite = sprite + 6
    // [208] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte) 6 -- pbuz1=pbuz1_plus_vbuc1 
    lda #6
    clc
    adc.z sprite
    sta.z sprite
    bcc !+
    inc.z sprite+1
  !:
    // for(byte y:0..7)
    // [209] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [210] if((byte) gen_chargen_sprite::y#1!=(byte) 8) goto gen_chargen_sprite::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z y
    bne __b1
    // gen_chargen_sprite::@9
    // *PROCPORT = $37
    // [211] *((const byte*) PROCPORT) ← (byte) $37 -- _deref_pbuc1=vbuc2 
    lda #$37
    sta PROCPORT
    // asm
    // asm { cli  }
    cli
    // gen_chargen_sprite::@return
    // }
    // [213] return 
    rts
}
  // place_sprites
place_sprites: {
    .label sprites_ptr = SCREEN+$3f8
    .label spr_id = 6
    .label spr_x = 9
    .label col = $b
    .label j2 = $a
    .label j = 8
    // *SPRITES_ENABLE = %01111111
    // [214] *((const byte*) SPRITES_ENABLE) ← (byte) $7f -- _deref_pbuc1=vbuc2 
    lda #$7f
    sta SPRITES_ENABLE
    // *SPRITES_EXPAND_X = %01111111
    // [215] *((const byte*) SPRITES_EXPAND_X) ← (byte) $7f -- _deref_pbuc1=vbuc2 
    sta SPRITES_EXPAND_X
    // *SPRITES_EXPAND_Y = %01111111
    // [216] *((const byte*) SPRITES_EXPAND_Y) ← (byte) $7f -- _deref_pbuc1=vbuc2 
    sta SPRITES_EXPAND_Y
    // [217] phi from place_sprites to place_sprites::@1 [phi:place_sprites->place_sprites::@1]
    // [217] phi (byte) place_sprites::col#2 = (byte) 5 [phi:place_sprites->place_sprites::@1#0] -- vbuz1=vbuc1 
    lda #5
    sta.z col
    // [217] phi (byte) place_sprites::j2#3 = (byte) 0 [phi:place_sprites->place_sprites::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z j2
    // [217] phi (byte) place_sprites::spr_x#2 = (byte) $3c [phi:place_sprites->place_sprites::@1#2] -- vbuz1=vbuc1 
    lda #$3c
    sta.z spr_x
    // [217] phi (byte) place_sprites::j#2 = (byte) 0 [phi:place_sprites->place_sprites::@1#3] -- vbuz1=vbuc1 
    lda #0
    sta.z j
    // [217] phi (byte) place_sprites::spr_id#2 = (byte)(word)(const byte*) sprites/(byte) $40 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1 
    lda #sprites/$40
    sta.z spr_id
    // [217] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1]
    // [217] phi (byte) place_sprites::col#2 = (byte) place_sprites::col#1 [phi:place_sprites::@1->place_sprites::@1#0] -- register_copy 
    // [217] phi (byte) place_sprites::j2#3 = (byte) place_sprites::j2#2 [phi:place_sprites::@1->place_sprites::@1#1] -- register_copy 
    // [217] phi (byte) place_sprites::spr_x#2 = (byte) place_sprites::spr_x#1 [phi:place_sprites::@1->place_sprites::@1#2] -- register_copy 
    // [217] phi (byte) place_sprites::j#2 = (byte) place_sprites::j#1 [phi:place_sprites::@1->place_sprites::@1#3] -- register_copy 
    // [217] phi (byte) place_sprites::spr_id#2 = (byte) place_sprites::spr_id#1 [phi:place_sprites::@1->place_sprites::@1#4] -- register_copy 
    // place_sprites::@1
  __b1:
    // sprites_ptr[j] = spr_id++
    // [218] *((const byte*) place_sprites::sprites_ptr + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z spr_id
    ldy.z j
    sta sprites_ptr,y
    // sprites_ptr[j] = spr_id++;
    // [219] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 -- vbuz1=_inc_vbuz1 
    inc.z spr_id
    // SPRITES_XPOS[j2] = spr_x
    // [220] *((const byte*) SPRITES_XPOS + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z spr_x
    ldy.z j2
    sta SPRITES_XPOS,y
    // SPRITES_YPOS[j2] = 80
    // [221] *((const byte*) SPRITES_YPOS + (byte) place_sprites::j2#3) ← (byte) $50 -- pbuc1_derefidx_vbuz1=vbuc2 
    lda #$50
    sta SPRITES_YPOS,y
    // SPRITES_COLS[j] = col
    // [222] *((const byte*) SPRITES_COLS + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z col
    ldy.z j
    sta SPRITES_COLS,y
    // spr_x = spr_x + 32
    // [223] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte) $20 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z spr_x
    axs #-[$20]
    stx.z spr_x
    // col = col^($7^$5)
    // [224] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte)(number) 7^(number) 5 -- vbuz1=vbuz1_bxor_vbuc1 
    lda #7^5
    eor.z col
    sta.z col
    // j2++;
    // [225] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 -- vbuxx=_inc_vbuz1 
    ldx.z j2
    inx
    // [226] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 -- vbuz1=_inc_vbuxx 
    inx
    stx.z j2
    // for( byte j : 0..6)
    // [227] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 -- vbuz1=_inc_vbuz1 
    inc.z j
    // [228] if((byte) place_sprites::j#1!=(byte) 7) goto place_sprites::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #7
    cmp.z j
    bne __b1
    // place_sprites::@return
    // }
    // [229] return 
    rts
}
  // File Data
  sintab_x: .fill $dd, 0
  sintab_y: .fill $c5, 0

