Inlined call vicSelectGfxBank::$0 = call toDd00(vicSelectGfxBank::gfx)
Inlined call call prepareMEM(setFAC::w)
Inlined call call prepareMEM((unsigned int)setMEMtoFAC::mem)
Inlined call call prepareMEM((unsigned int)setFACtoMEM::mem)
Inlined call call prepareMEM((unsigned int)setARGtoMEM::mem)
Inlined call call prepareMEM((unsigned int)addMEMtoFAC::mem)
Inlined call call prepareMEM((unsigned int)subFACfromMEM::mem)
Inlined call call prepareMEM((unsigned int)divMEMbyFAC::mem)
Inlined call call prepareMEM((unsigned int)mulFACbyMEM::mem)
Inlined call call prepareMEM((unsigned int)pwrMEMbyFAC::mem)
Inlined call call __init
Eliminating unused variable with no statement getFAC::$0
Eliminating unused variable with no statement anim::$6
Eliminating unused variable with no statement gen_chargen_sprite::$1

CONTROL FLOW GRAPH SSA

void setFAC(unsigned int w)
setFAC: scope:[setFAC]  from gen_sintab gen_sintab::@16 gen_sintab::@2 gen_sintab::@4 gen_sintab::@8
  setFAC::w#5 = phi( gen_sintab/setFAC::w#0, gen_sintab::@16/setFAC::w#4, gen_sintab::@2/setFAC::w#3, gen_sintab::@4/setFAC::w#1, gen_sintab::@8/setFAC::w#2 )
  setFAC::prepareMEM1_mem#0 = setFAC::w#5
  to:setFAC::prepareMEM1
setFAC::prepareMEM1: scope:[setFAC]  from setFAC
  setFAC::prepareMEM1_mem#1 = phi( setFAC/setFAC::prepareMEM1_mem#0 )
  setFAC::prepareMEM1_$0 = byte0  setFAC::prepareMEM1_mem#1
  *memLo = setFAC::prepareMEM1_$0
  setFAC::prepareMEM1_$1 = byte1  setFAC::prepareMEM1_mem#1
  *memHi = 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

unsigned int getFAC()
getFAC: scope:[getFAC]  from gen_sintab::@21
  asm { jsr$b1aa stymemLo stamemHi  }
  getFAC::w#0 = *memHi w= *memLo
  getFAC::return#0 = getFAC::w#0
  to:getFAC::@return
getFAC::@return: scope:[getFAC]  from getFAC
  getFAC::return#3 = phi( getFAC/getFAC::return#0 )
  getFAC::return#1 = getFAC::return#3
  return 
  to:@return

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

void setMEMtoFAC(char *mem)
setMEMtoFAC: scope:[setMEMtoFAC]  from gen_sintab::@10 gen_sintab::@12 gen_sintab::@15 gen_sintab::@5 gen_sintab::@7
  setMEMtoFAC::mem#5 = phi( gen_sintab::@10/setMEMtoFAC::mem#2, gen_sintab::@12/setMEMtoFAC::mem#3, gen_sintab::@15/setMEMtoFAC::mem#4, gen_sintab::@5/setMEMtoFAC::mem#0, gen_sintab::@7/setMEMtoFAC::mem#1 )
  setMEMtoFAC::prepareMEM1_mem#0 = (unsigned int)setMEMtoFAC::mem#5
  to:setMEMtoFAC::prepareMEM1
setMEMtoFAC::prepareMEM1: scope:[setMEMtoFAC]  from setMEMtoFAC
  setMEMtoFAC::prepareMEM1_mem#1 = phi( setMEMtoFAC/setMEMtoFAC::prepareMEM1_mem#0 )
  setMEMtoFAC::prepareMEM1_$0 = byte0  setMEMtoFAC::prepareMEM1_mem#1
  *memLo = setMEMtoFAC::prepareMEM1_$0
  setMEMtoFAC::prepareMEM1_$1 = byte1  setMEMtoFAC::prepareMEM1_mem#1
  *memHi = 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(char *mem)
addMEMtoFAC: scope:[addMEMtoFAC]  from gen_sintab::@11 gen_sintab::@20
  addMEMtoFAC::mem#2 = phi( gen_sintab::@11/addMEMtoFAC::mem#0, gen_sintab::@20/addMEMtoFAC::mem#1 )
  addMEMtoFAC::prepareMEM1_mem#0 = (unsigned int)addMEMtoFAC::mem#2
  to:addMEMtoFAC::prepareMEM1
addMEMtoFAC::prepareMEM1: scope:[addMEMtoFAC]  from addMEMtoFAC
  addMEMtoFAC::prepareMEM1_mem#1 = phi( addMEMtoFAC/addMEMtoFAC::prepareMEM1_mem#0 )
  addMEMtoFAC::prepareMEM1_$0 = byte0  addMEMtoFAC::prepareMEM1_mem#1
  *memLo = addMEMtoFAC::prepareMEM1_$0
  addMEMtoFAC::prepareMEM1_$1 = byte1  addMEMtoFAC::prepareMEM1_mem#1
  *memHi = 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::@6
  asm { jsr$b853  }
  to:subFACfromARG::@return
subFACfromARG::@return: scope:[subFACfromARG]  from subFACfromARG
  return 
  to:@return

void divMEMbyFAC(char *mem)
divMEMbyFAC: scope:[divMEMbyFAC]  from gen_sintab::@17 gen_sintab::@9
  divMEMbyFAC::mem#2 = phi( gen_sintab::@17/divMEMbyFAC::mem#1, gen_sintab::@9/divMEMbyFAC::mem#0 )
  divMEMbyFAC::prepareMEM1_mem#0 = (unsigned int)divMEMbyFAC::mem#2
  to:divMEMbyFAC::prepareMEM1
divMEMbyFAC::prepareMEM1: scope:[divMEMbyFAC]  from divMEMbyFAC
  divMEMbyFAC::prepareMEM1_mem#1 = phi( divMEMbyFAC/divMEMbyFAC::prepareMEM1_mem#0 )
  divMEMbyFAC::prepareMEM1_$0 = byte0  divMEMbyFAC::prepareMEM1_mem#1
  *memLo = divMEMbyFAC::prepareMEM1_$0
  divMEMbyFAC::prepareMEM1_$1 = byte1  divMEMbyFAC::prepareMEM1_mem#1
  *memHi = 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(char *mem)
mulFACbyMEM: scope:[mulFACbyMEM]  from gen_sintab::@14 gen_sintab::@19
  mulFACbyMEM::mem#2 = phi( gen_sintab::@14/mulFACbyMEM::mem#0, gen_sintab::@19/mulFACbyMEM::mem#1 )
  mulFACbyMEM::prepareMEM1_mem#0 = (unsigned int)mulFACbyMEM::mem#2
  to:mulFACbyMEM::prepareMEM1
mulFACbyMEM::prepareMEM1: scope:[mulFACbyMEM]  from mulFACbyMEM
  mulFACbyMEM::prepareMEM1_mem#1 = phi( mulFACbyMEM/mulFACbyMEM::prepareMEM1_mem#0 )
  mulFACbyMEM::prepareMEM1_$0 = byte0  mulFACbyMEM::prepareMEM1_mem#1
  *memLo = mulFACbyMEM::prepareMEM1_$0
  mulFACbyMEM::prepareMEM1_$1 = byte1  mulFACbyMEM::prepareMEM1_mem#1
  *memHi = 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::@18
  asm { jsr$e26b  }
  to:sinFAC::@return
sinFAC::@return: scope:[sinFAC]  from sinFAC
  return 
  to:@return

void main()
main: scope:[main]  from __start::@1
  sin_idx_y#25 = phi( __start::@1/sin_idx_y#19 )
  sin_idx_x#27 = phi( __start::@1/sin_idx_x#18 )
  progress_idx#32 = phi( __start::@1/progress_idx#38 )
  progress_cursor#31 = phi( __start::@1/progress_cursor#38 )
  call init
  to:main::@3
main::@3: scope:[main]  from main
  sin_idx_y#22 = phi( main/sin_idx_y#25 )
  sin_idx_x#24 = phi( main/sin_idx_x#27 )
  progress_idx#17 = phi( main/progress_idx#6 )
  progress_cursor#16 = phi( main/progress_cursor#6 )
  progress_cursor#0 = progress_cursor#16
  progress_idx#0 = progress_idx#17
  to:main::@1
main::@1: scope:[main]  from main::@1 main::@3 main::@4
  progress_idx#43 = phi( main::@1/progress_idx#43, main::@3/progress_idx#0, main::@4/progress_idx#33 )
  progress_cursor#43 = phi( main::@1/progress_cursor#43, main::@3/progress_cursor#0, main::@4/progress_cursor#32 )
  sin_idx_y#20 = phi( main::@1/sin_idx_y#20, main::@3/sin_idx_y#22, main::@4/sin_idx_y#0 )
  sin_idx_x#19 = phi( main::@1/sin_idx_x#19, main::@3/sin_idx_x#24, main::@4/sin_idx_x#0 )
  main::$1 = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) != $ff
  if(main::$1) goto main::@1
  to:main::@2
main::@2: scope:[main]  from main::@1
  progress_idx#39 = phi( main::@1/progress_idx#43 )
  progress_cursor#39 = phi( main::@1/progress_cursor#43 )
  sin_idx_y#15 = phi( main::@1/sin_idx_y#20 )
  sin_idx_x#15 = phi( main::@1/sin_idx_x#19 )
  call anim
  to:main::@4
main::@4: scope:[main]  from main::@2
  progress_idx#33 = phi( main::@2/progress_idx#39 )
  progress_cursor#32 = phi( main::@2/progress_cursor#39 )
  sin_idx_y#8 = phi( main::@2/sin_idx_y#4 )
  sin_idx_x#8 = phi( main::@2/sin_idx_x#4 )
  sin_idx_x#0 = sin_idx_x#8
  sin_idx_y#0 = sin_idx_y#8
  if(true) goto main::@1
  to:main::@return
main::@return: scope:[main]  from main::@4
  sin_idx_y#9 = phi( main::@4/sin_idx_y#0 )
  sin_idx_x#9 = phi( main::@4/sin_idx_x#0 )
  progress_idx#18 = phi( main::@4/progress_idx#33 )
  progress_cursor#17 = phi( main::@4/progress_cursor#32 )
  progress_cursor#1 = progress_cursor#17
  progress_idx#1 = progress_idx#18
  sin_idx_x#1 = sin_idx_x#9
  sin_idx_y#1 = sin_idx_y#9
  return 
  to:@return

void init()
init: scope:[init]  from main
  progress_idx#53 = phi( main/progress_idx#32 )
  progress_cursor#53 = phi( main/progress_cursor#31 )
  call clear_screen
  to:init::@3
init::@3: scope:[init]  from init
  progress_idx#50 = phi( init/progress_idx#53 )
  progress_cursor#50 = phi( init/progress_cursor#53 )
  init::i#0 = 0
  to:init::@1
init::@1: scope:[init]  from init::@1 init::@3
  progress_idx#47 = phi( init::@1/progress_idx#47, init::@3/progress_idx#50 )
  progress_cursor#47 = phi( init::@1/progress_cursor#47, init::@3/progress_cursor#50 )
  init::i#2 = phi( init::@1/init::i#1, init::@3/init::i#0 )
  COLS[init::i#2] = 0
  init::$8 = $28 + init::i#2
  COLS[init::$8] = $b
  init::i#1 = init::i#2 + rangenext(0,$27)
  init::$9 = init::i#1 != rangelast(0,$27)
  if(init::$9) goto init::@1
  to:init::@2
init::@2: scope:[init]  from init::@1
  progress_idx#44 = phi( init::@1/progress_idx#47 )
  progress_cursor#44 = phi( init::@1/progress_cursor#47 )
  call place_sprites
  to:init::@4
init::@4: scope:[init]  from init::@2
  progress_idx#40 = phi( init::@2/progress_idx#44 )
  progress_cursor#40 = phi( init::@2/progress_cursor#44 )
  call gen_sprites
  to:init::@5
init::@5: scope:[init]  from init::@4
  progress_idx#34 = phi( init::@4/progress_idx#40 )
  progress_cursor#33 = phi( init::@4/progress_cursor#40 )
  progress_init::line#0 = SCREEN
  call progress_init
  to:init::@6
init::@6: scope:[init]  from init::@5
  progress_idx#19 = phi( init::@5/progress_idx#8 )
  progress_cursor#18 = phi( init::@5/progress_cursor#8 )
  progress_cursor#2 = progress_cursor#18
  progress_idx#2 = progress_idx#19
  gen_sintab::sintab#0 = sintab_x
  gen_sintab::length#0 = sinlen_x
  gen_sintab::min#0 = 0
  gen_sintab::max#0 = $ff
  call gen_sintab
  to:init::@7
init::@7: scope:[init]  from init::@6
  progress_cursor#19 = phi( init::@6/progress_cursor#12 )
  progress_idx#20 = phi( init::@6/progress_idx#13 )
  progress_idx#3 = progress_idx#20
  progress_cursor#3 = progress_cursor#19
  progress_init::line#1 = SCREEN+$28
  call progress_init
  to:init::@8
init::@8: scope:[init]  from init::@7
  progress_idx#21 = phi( init::@7/progress_idx#8 )
  progress_cursor#20 = phi( init::@7/progress_cursor#8 )
  progress_cursor#4 = progress_cursor#20
  progress_idx#4 = progress_idx#21
  gen_sintab::sintab#1 = sintab_y
  gen_sintab::length#1 = sinlen_y
  gen_sintab::min#1 = $32
  gen_sintab::max#1 = $d0
  call gen_sintab
  to:init::@9
init::@9: scope:[init]  from init::@8
  progress_cursor#21 = phi( init::@8/progress_cursor#12 )
  progress_idx#22 = phi( init::@8/progress_idx#13 )
  progress_idx#5 = progress_idx#22
  progress_cursor#5 = progress_cursor#21
  call clear_screen
  to:init::@10
init::@10: scope:[init]  from init::@9
  progress_idx#35 = phi( init::@9/progress_idx#5 )
  progress_cursor#34 = phi( init::@9/progress_cursor#5 )
  to:init::@return
init::@return: scope:[init]  from init::@10
  progress_idx#23 = phi( init::@10/progress_idx#35 )
  progress_cursor#22 = phi( init::@10/progress_cursor#34 )
  progress_cursor#6 = progress_cursor#22
  progress_idx#6 = progress_idx#23
  return 
  to:@return

void clear_screen()
clear_screen: scope:[clear_screen]  from init init::@9
  clear_screen::sc#0 = SCREEN
  to:clear_screen::@1
clear_screen::@1: scope:[clear_screen]  from clear_screen clear_screen::@2
  clear_screen::sc#2 = phi( clear_screen/clear_screen::sc#0, clear_screen::@2/clear_screen::sc#1 )
  clear_screen::$0 = clear_screen::sc#2 < SCREEN+$3e8
  if(clear_screen::$0) goto clear_screen::@2
  to:clear_screen::@return
clear_screen::@2: scope:[clear_screen]  from clear_screen::@1
  clear_screen::sc#3 = phi( clear_screen::@1/clear_screen::sc#2 )
  *clear_screen::sc#3 = ' '
  clear_screen::sc#1 = ++ clear_screen::sc#3
  to:clear_screen::@1
clear_screen::@return: scope:[clear_screen]  from clear_screen::@1
  return 
  to:@return

void progress_init(char *line)
progress_init: scope:[progress_init]  from init::@5 init::@7
  progress_init::line#2 = phi( init::@5/progress_init::line#0, init::@7/progress_init::line#1 )
  progress_cursor#7 = progress_init::line#2
  progress_idx#7 = 0
  to:progress_init::@return
progress_init::@return: scope:[progress_init]  from progress_init
  progress_idx#24 = phi( progress_init/progress_idx#7 )
  progress_cursor#23 = phi( progress_init/progress_cursor#7 )
  progress_cursor#8 = progress_cursor#23
  progress_idx#8 = progress_idx#24
  return 
  to:@return

void progress_inc()
progress_inc: scope:[progress_inc]  from gen_sintab::@22
  progress_cursor#35 = phi( gen_sintab::@22/progress_cursor#36 )
  progress_idx#25 = phi( gen_sintab::@22/progress_idx#36 )
  progress_idx#9 = ++ progress_idx#25
  progress_inc::$0 = progress_idx#9 == 8
  progress_inc::$1 = ! progress_inc::$0
  if(progress_inc::$1) goto progress_inc::@1
  to:progress_inc::@2
progress_inc::@1: scope:[progress_inc]  from progress_inc progress_inc::@2
  progress_cursor#24 = phi( progress_inc/progress_cursor#35, progress_inc::@2/progress_cursor#9 )
  progress_idx#26 = phi( progress_inc/progress_idx#9, progress_inc::@2/progress_idx#10 )
  *progress_cursor#24 = progress_inc::progress_chars[progress_idx#26]
  to:progress_inc::@return
progress_inc::@2: scope:[progress_inc]  from progress_inc
  progress_cursor#25 = phi( progress_inc/progress_cursor#35 )
  *progress_cursor#25 = progress_inc::progress_chars[8]
  progress_cursor#9 = ++ progress_cursor#25
  progress_idx#10 = 0
  to:progress_inc::@1
progress_inc::@return: scope:[progress_inc]  from progress_inc::@1
  progress_cursor#26 = phi( progress_inc::@1/progress_cursor#24 )
  progress_idx#27 = phi( progress_inc::@1/progress_idx#26 )
  progress_idx#11 = progress_idx#27
  progress_cursor#10 = progress_cursor#26
  return 
  to:@return

void anim()
anim: scope:[anim]  from main::@2
  sin_idx_y#10 = phi( main::@2/sin_idx_y#15 )
  sin_idx_x#10 = phi( main::@2/sin_idx_x#15 )
  *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = ++ *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR)
  anim::xidx#0 = sin_idx_x#10
  anim::yidx#0 = sin_idx_y#10
  anim::j2#0 = $c
  anim::x_msb#0 = 0
  anim::j#0 = 0
  to:anim::@4
anim::@4: scope:[anim]  from anim anim::@6
  sin_idx_y#26 = phi( anim/sin_idx_y#10, anim::@6/sin_idx_y#21 )
  sin_idx_x#25 = phi( anim/sin_idx_x#10, anim::@6/sin_idx_x#16 )
  anim::j#5 = phi( anim/anim::j#0, anim::@6/anim::j#1 )
  anim::yidx#3 = phi( anim/anim::yidx#0, anim::@6/anim::yidx#6 )
  anim::j2#2 = phi( anim/anim::j2#0, anim::@6/anim::j2#1 )
  anim::x_msb#2 = phi( anim/anim::x_msb#0, anim::@6/anim::x_msb#4 )
  anim::xidx#3 = phi( anim/anim::xidx#0, anim::@6/anim::xidx#5 )
  anim::x#0 = (unsigned int)$1e + sintab_x[anim::xidx#3]
  anim::$7 = anim::x_msb#2 * 2
  anim::$8 = byte1  anim::x#0
  anim::$9 = anim::$7 | anim::$8
  anim::x_msb#1 = anim::$9
  anim::$10 = byte0  anim::x#0
  SPRITES_XPOS[anim::j2#2] = anim::$10
  SPRITES_YPOS[anim::j2#2] = sintab_y[anim::yidx#3]
  anim::$11 = anim::xidx#3 + $a
  anim::xidx#1 = anim::$11
  anim::$12 = anim::xidx#1 >= sinlen_x
  anim::$13 = ! anim::$12
  if(anim::$13) goto anim::@5
  to:anim::@7
anim::@5: scope:[anim]  from anim::@4 anim::@7
  sin_idx_y#23 = phi( anim::@4/sin_idx_y#26, anim::@7/sin_idx_y#27 )
  sin_idx_x#20 = phi( anim::@4/sin_idx_x#25, anim::@7/sin_idx_x#26 )
  anim::x_msb#5 = phi( anim::@4/anim::x_msb#1, anim::@7/anim::x_msb#7 )
  anim::xidx#6 = phi( anim::@4/anim::xidx#1, anim::@7/anim::xidx#2 )
  anim::j#3 = phi( anim::@4/anim::j#5, anim::@7/anim::j#6 )
  anim::j2#4 = phi( anim::@4/anim::j2#2, anim::@7/anim::j2#6 )
  anim::yidx#4 = phi( anim::@4/anim::yidx#3, anim::@7/anim::yidx#7 )
  anim::$15 = anim::yidx#4 + 8
  anim::yidx#1 = anim::$15
  anim::$16 = anim::yidx#1 >= sinlen_y
  anim::$17 = ! anim::$16
  if(anim::$17) goto anim::@6
  to:anim::@8
anim::@7: scope:[anim]  from anim::@4
  sin_idx_y#27 = phi( anim::@4/sin_idx_y#26 )
  sin_idx_x#26 = phi( anim::@4/sin_idx_x#25 )
  anim::x_msb#7 = phi( anim::@4/anim::x_msb#1 )
  anim::j#6 = phi( anim::@4/anim::j#5 )
  anim::j2#6 = phi( anim::@4/anim::j2#2 )
  anim::yidx#7 = phi( anim::@4/anim::yidx#3 )
  anim::xidx#4 = phi( anim::@4/anim::xidx#1 )
  anim::$14 = anim::xidx#4 - sinlen_x
  anim::xidx#2 = anim::$14
  to:anim::@5
anim::@6: scope:[anim]  from anim::@5 anim::@8
  sin_idx_y#21 = phi( anim::@5/sin_idx_y#23, anim::@8/sin_idx_y#24 )
  sin_idx_x#16 = phi( anim::@5/sin_idx_x#20, anim::@8/sin_idx_x#21 )
  anim::yidx#6 = phi( anim::@5/anim::yidx#1, anim::@8/anim::yidx#2 )
  anim::x_msb#4 = phi( anim::@5/anim::x_msb#5, anim::@8/anim::x_msb#6 )
  anim::xidx#5 = phi( anim::@5/anim::xidx#6, anim::@8/anim::xidx#7 )
  anim::j#2 = phi( anim::@5/anim::j#3, anim::@8/anim::j#4 )
  anim::j2#3 = phi( anim::@5/anim::j2#4, anim::@8/anim::j2#5 )
  anim::$19 = anim::j2#3 - 2
  anim::j2#1 = anim::$19
  anim::j#1 = anim::j#2 + rangenext(0,6)
  anim::$20 = anim::j#1 != rangelast(0,6)
  if(anim::$20) goto anim::@4
  to:anim::@9
anim::@8: scope:[anim]  from anim::@5
  sin_idx_y#24 = phi( anim::@5/sin_idx_y#23 )
  sin_idx_x#21 = phi( anim::@5/sin_idx_x#20 )
  anim::x_msb#6 = phi( anim::@5/anim::x_msb#5 )
  anim::xidx#7 = phi( anim::@5/anim::xidx#6 )
  anim::j#4 = phi( anim::@5/anim::j#3 )
  anim::j2#5 = phi( anim::@5/anim::j2#4 )
  anim::yidx#5 = phi( anim::@5/anim::yidx#1 )
  anim::$18 = anim::yidx#5 - sinlen_y
  anim::yidx#2 = anim::$18
  to:anim::@6
anim::@9: scope:[anim]  from anim::@6
  sin_idx_y#17 = phi( anim::@6/sin_idx_y#21 )
  sin_idx_x#11 = phi( anim::@6/sin_idx_x#16 )
  anim::x_msb#3 = phi( anim::@6/anim::x_msb#4 )
  *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB) = anim::x_msb#3
  sin_idx_x#2 = ++ sin_idx_x#11
  anim::$1 = sin_idx_x#2 >= sinlen_x
  anim::$2 = ! anim::$1
  if(anim::$2) goto anim::@1
  to:anim::@10
anim::@1: scope:[anim]  from anim::@10 anim::@9
  sin_idx_x#22 = phi( anim::@10/sin_idx_x#3, anim::@9/sin_idx_x#2 )
  sin_idx_y#11 = phi( anim::@10/sin_idx_y#16, anim::@9/sin_idx_y#17 )
  sin_idx_y#2 = ++ sin_idx_y#11
  anim::$3 = sin_idx_y#2 >= sinlen_y
  anim::$4 = ! anim::$3
  if(anim::$4) goto anim::@2
  to:anim::@3
anim::@10: scope:[anim]  from anim::@9
  sin_idx_y#16 = phi( anim::@9/sin_idx_y#17 )
  sin_idx_x#3 = 0
  to:anim::@1
anim::@2: scope:[anim]  from anim::@1 anim::@3
  sin_idx_y#18 = phi( anim::@1/sin_idx_y#2, anim::@3/sin_idx_y#3 )
  sin_idx_x#17 = phi( anim::@1/sin_idx_x#22, anim::@3/sin_idx_x#23 )
  *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = -- *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR)
  to:anim::@return
anim::@3: scope:[anim]  from anim::@1
  sin_idx_x#23 = phi( anim::@1/sin_idx_x#22 )
  sin_idx_y#3 = 0
  to:anim::@2
anim::@return: scope:[anim]  from anim::@2
  sin_idx_y#12 = phi( anim::@2/sin_idx_y#18 )
  sin_idx_x#12 = phi( anim::@2/sin_idx_x#17 )
  sin_idx_x#4 = sin_idx_x#12
  sin_idx_y#4 = sin_idx_y#12
  return 
  to:@return

void place_sprites()
place_sprites: scope:[place_sprites]  from init::@2
  *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE) = $7f
  *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X) = $7f
  *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_Y) = $7f
  place_sprites::spr_id#0 = (char)(unsigned int)sprites/$40
  place_sprites::spr_x#0 = $3c
  place_sprites::j2#0 = 0
  place_sprites::col#0 = 5
  place_sprites::j#0 = 0
  to:place_sprites::@1
place_sprites::@1: scope:[place_sprites]  from place_sprites place_sprites::@1
  place_sprites::col#2 = phi( place_sprites/place_sprites::col#0, place_sprites::@1/place_sprites::col#1 )
  place_sprites::j2#3 = phi( place_sprites/place_sprites::j2#0, place_sprites::@1/place_sprites::j2#2 )
  place_sprites::spr_x#2 = phi( place_sprites/place_sprites::spr_x#0, place_sprites::@1/place_sprites::spr_x#1 )
  place_sprites::j#2 = phi( place_sprites/place_sprites::j#0, place_sprites::@1/place_sprites::j#1 )
  place_sprites::spr_id#2 = phi( place_sprites/place_sprites::spr_id#0, place_sprites::@1/place_sprites::spr_id#1 )
  place_sprites::sprites_ptr[place_sprites::j#2] = place_sprites::spr_id#2
  place_sprites::spr_id#1 = ++ place_sprites::spr_id#2
  SPRITES_XPOS[place_sprites::j2#3] = place_sprites::spr_x#2
  SPRITES_YPOS[place_sprites::j2#3] = $50
  SPRITES_COLOR[place_sprites::j#2] = place_sprites::col#2
  place_sprites::$0 = place_sprites::spr_x#2 + $20
  place_sprites::spr_x#1 = place_sprites::$0
  place_sprites::$1 = place_sprites::col#2 ^ 7^5
  place_sprites::col#1 = place_sprites::$1
  place_sprites::j2#1 = ++ place_sprites::j2#3
  place_sprites::j2#2 = ++ place_sprites::j2#1
  place_sprites::j#1 = place_sprites::j#2 + rangenext(0,6)
  place_sprites::$2 = place_sprites::j#1 != rangelast(0,6)
  if(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
  gen_sprites::spr#0 = sprites
  gen_sprites::i#0 = 0
  to:gen_sprites::@1
gen_sprites::@1: scope:[gen_sprites]  from gen_sprites gen_sprites::@2
  gen_sprites::spr#2 = phi( gen_sprites/gen_sprites::spr#0, gen_sprites::@2/gen_sprites::spr#1 )
  gen_sprites::i#2 = phi( gen_sprites/gen_sprites::i#0, gen_sprites::@2/gen_sprites::i#1 )
  gen_chargen_sprite::ch#0 = gen_sprites::cml[gen_sprites::i#2]
  gen_chargen_sprite::sprite#0 = gen_sprites::spr#2
  call gen_chargen_sprite
  to:gen_sprites::@2
gen_sprites::@2: scope:[gen_sprites]  from gen_sprites::@1
  gen_sprites::i#3 = phi( gen_sprites::@1/gen_sprites::i#2 )
  gen_sprites::spr#3 = phi( gen_sprites::@1/gen_sprites::spr#2 )
  gen_sprites::$1 = gen_sprites::spr#3 + $40
  gen_sprites::spr#1 = gen_sprites::$1
  gen_sprites::i#1 = gen_sprites::i#3 + rangenext(0,6)
  gen_sprites::$2 = gen_sprites::i#1 != rangelast(0,6)
  if(gen_sprites::$2) goto gen_sprites::@1
  to:gen_sprites::@return
gen_sprites::@return: scope:[gen_sprites]  from gen_sprites::@2
  return 
  to:@return

void gen_chargen_sprite(char ch , char *sprite)
gen_chargen_sprite: scope:[gen_chargen_sprite]  from gen_sprites::@1
  gen_chargen_sprite::sprite#12 = phi( gen_sprites::@1/gen_chargen_sprite::sprite#0 )
  gen_chargen_sprite::ch#1 = phi( gen_sprites::@1/gen_chargen_sprite::ch#0 )
  gen_chargen_sprite::$14 = (unsigned int)gen_chargen_sprite::ch#1
  gen_chargen_sprite::$0 = gen_chargen_sprite::$14 * 8
  gen_chargen_sprite::chargen#0 = CHARGEN + gen_chargen_sprite::$0
  asm { sei  }
  *PROCPORT = $32
  gen_chargen_sprite::y#0 = 0
  to:gen_chargen_sprite::@1
gen_chargen_sprite::@1: scope:[gen_chargen_sprite]  from gen_chargen_sprite gen_chargen_sprite::@8
  gen_chargen_sprite::sprite#11 = phi( gen_chargen_sprite/gen_chargen_sprite::sprite#12, gen_chargen_sprite::@8/gen_chargen_sprite::sprite#2 )
  gen_chargen_sprite::y#2 = phi( gen_chargen_sprite/gen_chargen_sprite::y#0, gen_chargen_sprite::@8/gen_chargen_sprite::y#1 )
  gen_chargen_sprite::chargen#1 = phi( gen_chargen_sprite/gen_chargen_sprite::chargen#0, gen_chargen_sprite::@8/gen_chargen_sprite::chargen#2 )
  gen_chargen_sprite::bits#0 = gen_chargen_sprite::chargen#1[gen_chargen_sprite::y#2]
  gen_chargen_sprite::s_gen#0 = 0
  gen_chargen_sprite::s_gen_cnt#0 = 0
  gen_chargen_sprite::x#0 = 0
  to:gen_chargen_sprite::@2
gen_chargen_sprite::@2: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@1 gen_chargen_sprite::@7
  gen_chargen_sprite::chargen#9 = phi( gen_chargen_sprite::@1/gen_chargen_sprite::chargen#1, gen_chargen_sprite::@7/gen_chargen_sprite::chargen#3 )
  gen_chargen_sprite::y#10 = phi( gen_chargen_sprite::@1/gen_chargen_sprite::y#2, gen_chargen_sprite::@7/gen_chargen_sprite::y#4 )
  gen_chargen_sprite::x#8 = phi( gen_chargen_sprite::@1/gen_chargen_sprite::x#0, gen_chargen_sprite::@7/gen_chargen_sprite::x#1 )
  gen_chargen_sprite::sprite#10 = phi( gen_chargen_sprite::@1/gen_chargen_sprite::sprite#11, gen_chargen_sprite::@7/gen_chargen_sprite::sprite#6 )
  gen_chargen_sprite::s_gen_cnt#7 = phi( gen_chargen_sprite::@1/gen_chargen_sprite::s_gen_cnt#0, gen_chargen_sprite::@7/gen_chargen_sprite::s_gen_cnt#8 )
  gen_chargen_sprite::s_gen#8 = phi( gen_chargen_sprite::@1/gen_chargen_sprite::s_gen#0, gen_chargen_sprite::@7/gen_chargen_sprite::s_gen#9 )
  gen_chargen_sprite::bits#2 = phi( gen_chargen_sprite::@1/gen_chargen_sprite::bits#0, gen_chargen_sprite::@7/gen_chargen_sprite::bits#1 )
  gen_chargen_sprite::c#0 = 0
  gen_chargen_sprite::$2 = gen_chargen_sprite::bits#2 & $80
  gen_chargen_sprite::$3 = gen_chargen_sprite::$2 != 0
  gen_chargen_sprite::$4 = ! gen_chargen_sprite::$3
  if(gen_chargen_sprite::$4) 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
  gen_chargen_sprite::chargen#7 = phi( gen_chargen_sprite::@10/gen_chargen_sprite::chargen#8, gen_chargen_sprite::@2/gen_chargen_sprite::chargen#9 )
  gen_chargen_sprite::y#8 = phi( gen_chargen_sprite::@10/gen_chargen_sprite::y#9, gen_chargen_sprite::@2/gen_chargen_sprite::y#10 )
  gen_chargen_sprite::x#6 = phi( gen_chargen_sprite::@10/gen_chargen_sprite::x#7, gen_chargen_sprite::@2/gen_chargen_sprite::x#8 )
  gen_chargen_sprite::bits#7 = phi( gen_chargen_sprite::@10/gen_chargen_sprite::bits#8, gen_chargen_sprite::@2/gen_chargen_sprite::bits#2 )
  gen_chargen_sprite::sprite#7 = phi( gen_chargen_sprite::@10/gen_chargen_sprite::sprite#9, gen_chargen_sprite::@2/gen_chargen_sprite::sprite#10 )
  gen_chargen_sprite::s_gen_cnt#4 = phi( gen_chargen_sprite::@10/gen_chargen_sprite::s_gen_cnt#6, gen_chargen_sprite::@2/gen_chargen_sprite::s_gen_cnt#7 )
  gen_chargen_sprite::c#3 = phi( gen_chargen_sprite::@10/gen_chargen_sprite::c#1, gen_chargen_sprite::@2/gen_chargen_sprite::c#0 )
  gen_chargen_sprite::s_gen#5 = phi( gen_chargen_sprite::@10/gen_chargen_sprite::s_gen#7, gen_chargen_sprite::@2/gen_chargen_sprite::s_gen#8 )
  gen_chargen_sprite::b#0 = 0
  to:gen_chargen_sprite::@4
gen_chargen_sprite::@10: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@2
  gen_chargen_sprite::chargen#8 = phi( gen_chargen_sprite::@2/gen_chargen_sprite::chargen#9 )
  gen_chargen_sprite::y#9 = phi( gen_chargen_sprite::@2/gen_chargen_sprite::y#10 )
  gen_chargen_sprite::x#7 = phi( gen_chargen_sprite::@2/gen_chargen_sprite::x#8 )
  gen_chargen_sprite::bits#8 = phi( gen_chargen_sprite::@2/gen_chargen_sprite::bits#2 )
  gen_chargen_sprite::sprite#9 = phi( gen_chargen_sprite::@2/gen_chargen_sprite::sprite#10 )
  gen_chargen_sprite::s_gen_cnt#6 = phi( gen_chargen_sprite::@2/gen_chargen_sprite::s_gen_cnt#7 )
  gen_chargen_sprite::s_gen#7 = phi( gen_chargen_sprite::@2/gen_chargen_sprite::s_gen#8 )
  gen_chargen_sprite::c#1 = 1
  to:gen_chargen_sprite::@3
gen_chargen_sprite::@4: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@3 gen_chargen_sprite::@5
  gen_chargen_sprite::chargen#5 = phi( gen_chargen_sprite::@3/gen_chargen_sprite::chargen#7, gen_chargen_sprite::@5/gen_chargen_sprite::chargen#4 )
  gen_chargen_sprite::y#6 = phi( gen_chargen_sprite::@3/gen_chargen_sprite::y#8, gen_chargen_sprite::@5/gen_chargen_sprite::y#5 )
  gen_chargen_sprite::x#4 = phi( gen_chargen_sprite::@3/gen_chargen_sprite::x#6, gen_chargen_sprite::@5/gen_chargen_sprite::x#3 )
  gen_chargen_sprite::bits#5 = phi( gen_chargen_sprite::@3/gen_chargen_sprite::bits#7, gen_chargen_sprite::@5/gen_chargen_sprite::bits#4 )
  gen_chargen_sprite::sprite#5 = phi( gen_chargen_sprite::@3/gen_chargen_sprite::sprite#7, gen_chargen_sprite::@5/gen_chargen_sprite::sprite#8 )
  gen_chargen_sprite::b#3 = phi( gen_chargen_sprite::@3/gen_chargen_sprite::b#0, gen_chargen_sprite::@5/gen_chargen_sprite::b#1 )
  gen_chargen_sprite::s_gen_cnt#3 = phi( gen_chargen_sprite::@3/gen_chargen_sprite::s_gen_cnt#4, gen_chargen_sprite::@5/gen_chargen_sprite::s_gen_cnt#5 )
  gen_chargen_sprite::c#2 = phi( gen_chargen_sprite::@3/gen_chargen_sprite::c#3, gen_chargen_sprite::@5/gen_chargen_sprite::c#4 )
  gen_chargen_sprite::s_gen#3 = phi( gen_chargen_sprite::@3/gen_chargen_sprite::s_gen#5, gen_chargen_sprite::@5/gen_chargen_sprite::s_gen#6 )
  gen_chargen_sprite::$5 = gen_chargen_sprite::s_gen#3 * 2
  gen_chargen_sprite::$6 = gen_chargen_sprite::$5 | gen_chargen_sprite::c#2
  gen_chargen_sprite::s_gen#1 = gen_chargen_sprite::$6
  gen_chargen_sprite::s_gen_cnt#1 = ++ gen_chargen_sprite::s_gen_cnt#3
  gen_chargen_sprite::$7 = gen_chargen_sprite::s_gen_cnt#1 == 8
  gen_chargen_sprite::$8 = ! gen_chargen_sprite::$7
  if(gen_chargen_sprite::$8) 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
  gen_chargen_sprite::chargen#4 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::chargen#5, gen_chargen_sprite::@6/gen_chargen_sprite::chargen#6 )
  gen_chargen_sprite::y#5 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::y#6, gen_chargen_sprite::@6/gen_chargen_sprite::y#7 )
  gen_chargen_sprite::sprite#8 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::sprite#5, gen_chargen_sprite::@6/gen_chargen_sprite::sprite#1 )
  gen_chargen_sprite::x#3 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::x#4, gen_chargen_sprite::@6/gen_chargen_sprite::x#5 )
  gen_chargen_sprite::bits#4 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::bits#5, gen_chargen_sprite::@6/gen_chargen_sprite::bits#6 )
  gen_chargen_sprite::s_gen_cnt#5 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::s_gen_cnt#1, gen_chargen_sprite::@6/gen_chargen_sprite::s_gen_cnt#2 )
  gen_chargen_sprite::c#4 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::c#2, gen_chargen_sprite::@6/gen_chargen_sprite::c#5 )
  gen_chargen_sprite::s_gen#6 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::s_gen#1, gen_chargen_sprite::@6/gen_chargen_sprite::s_gen#2 )
  gen_chargen_sprite::b#2 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::b#3, gen_chargen_sprite::@6/gen_chargen_sprite::b#4 )
  gen_chargen_sprite::b#1 = gen_chargen_sprite::b#2 + rangenext(0,2)
  gen_chargen_sprite::$9 = gen_chargen_sprite::b#1 != rangelast(0,2)
  if(gen_chargen_sprite::$9) goto gen_chargen_sprite::@4
  to:gen_chargen_sprite::@7
gen_chargen_sprite::@6: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@4
  gen_chargen_sprite::chargen#6 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::chargen#5 )
  gen_chargen_sprite::y#7 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::y#6 )
  gen_chargen_sprite::x#5 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::x#4 )
  gen_chargen_sprite::bits#6 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::bits#5 )
  gen_chargen_sprite::c#5 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::c#2 )
  gen_chargen_sprite::b#4 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::b#3 )
  gen_chargen_sprite::sprite#3 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::sprite#5 )
  gen_chargen_sprite::s_gen#4 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::s_gen#1 )
  gen_chargen_sprite::sprite#3[0] = gen_chargen_sprite::s_gen#4
  gen_chargen_sprite::sprite#3[3] = gen_chargen_sprite::s_gen#4
  gen_chargen_sprite::sprite#3[6] = gen_chargen_sprite::s_gen#4
  gen_chargen_sprite::sprite#1 = ++ gen_chargen_sprite::sprite#3
  gen_chargen_sprite::s_gen#2 = 0
  gen_chargen_sprite::s_gen_cnt#2 = 0
  to:gen_chargen_sprite::@5
gen_chargen_sprite::@7: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@5
  gen_chargen_sprite::s_gen_cnt#8 = phi( gen_chargen_sprite::@5/gen_chargen_sprite::s_gen_cnt#5 )
  gen_chargen_sprite::s_gen#9 = phi( gen_chargen_sprite::@5/gen_chargen_sprite::s_gen#6 )
  gen_chargen_sprite::chargen#3 = phi( gen_chargen_sprite::@5/gen_chargen_sprite::chargen#4 )
  gen_chargen_sprite::y#4 = phi( gen_chargen_sprite::@5/gen_chargen_sprite::y#5 )
  gen_chargen_sprite::sprite#6 = phi( gen_chargen_sprite::@5/gen_chargen_sprite::sprite#8 )
  gen_chargen_sprite::x#2 = phi( gen_chargen_sprite::@5/gen_chargen_sprite::x#3 )
  gen_chargen_sprite::bits#3 = phi( gen_chargen_sprite::@5/gen_chargen_sprite::bits#4 )
  gen_chargen_sprite::$10 = gen_chargen_sprite::bits#3 * 2
  gen_chargen_sprite::bits#1 = gen_chargen_sprite::$10
  gen_chargen_sprite::x#1 = gen_chargen_sprite::x#2 + rangenext(0,7)
  gen_chargen_sprite::$11 = gen_chargen_sprite::x#1 != rangelast(0,7)
  if(gen_chargen_sprite::$11) goto gen_chargen_sprite::@2
  to:gen_chargen_sprite::@8
gen_chargen_sprite::@8: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@7
  gen_chargen_sprite::chargen#2 = phi( gen_chargen_sprite::@7/gen_chargen_sprite::chargen#3 )
  gen_chargen_sprite::y#3 = phi( gen_chargen_sprite::@7/gen_chargen_sprite::y#4 )
  gen_chargen_sprite::sprite#4 = phi( gen_chargen_sprite::@7/gen_chargen_sprite::sprite#6 )
  gen_chargen_sprite::$12 = gen_chargen_sprite::sprite#4 + 6
  gen_chargen_sprite::sprite#2 = gen_chargen_sprite::$12
  gen_chargen_sprite::y#1 = gen_chargen_sprite::y#3 + rangenext(0,7)
  gen_chargen_sprite::$13 = gen_chargen_sprite::y#1 != rangelast(0,7)
  if(gen_chargen_sprite::$13) goto gen_chargen_sprite::@1
  to:gen_chargen_sprite::@9
gen_chargen_sprite::@9: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@8
  *PROCPORT = $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(char *sintab , char length , char min , char max)
gen_sintab: scope:[gen_sintab]  from init::@6 init::@8
  gen_sintab::sintab#25 = phi( init::@6/gen_sintab::sintab#0, init::@8/gen_sintab::sintab#1 )
  progress_cursor#66 = phi( init::@6/progress_cursor#2, init::@8/progress_cursor#4 )
  progress_idx#66 = phi( init::@6/progress_idx#2, init::@8/progress_idx#4 )
  gen_sintab::length#25 = phi( init::@6/gen_sintab::length#0, init::@8/gen_sintab::length#1 )
  gen_sintab::min#4 = phi( init::@6/gen_sintab::min#0, init::@8/gen_sintab::min#1 )
  gen_sintab::max#2 = phi( init::@6/gen_sintab::max#0, init::@8/gen_sintab::max#1 )
  setFAC::w#0 = (unsigned int)gen_sintab::max#2
  call setFAC
  to:gen_sintab::@3
gen_sintab::@3: scope:[gen_sintab]  from gen_sintab
  gen_sintab::sintab#24 = phi( gen_sintab/gen_sintab::sintab#25 )
  progress_cursor#65 = phi( gen_sintab/progress_cursor#66 )
  progress_idx#65 = phi( gen_sintab/progress_idx#66 )
  gen_sintab::length#24 = phi( gen_sintab/gen_sintab::length#25 )
  gen_sintab::min#3 = phi( gen_sintab/gen_sintab::min#4 )
  call setARGtoFAC
  to:gen_sintab::@4
gen_sintab::@4: scope:[gen_sintab]  from gen_sintab::@3
  gen_sintab::sintab#23 = phi( gen_sintab::@3/gen_sintab::sintab#24 )
  progress_cursor#64 = phi( gen_sintab::@3/progress_cursor#65 )
  progress_idx#64 = phi( gen_sintab::@3/progress_idx#65 )
  gen_sintab::length#23 = phi( gen_sintab::@3/gen_sintab::length#24 )
  gen_sintab::min#2 = phi( gen_sintab::@3/gen_sintab::min#3 )
  setFAC::w#1 = (unsigned int)gen_sintab::min#2
  call setFAC
  to:gen_sintab::@5
gen_sintab::@5: scope:[gen_sintab]  from gen_sintab::@4
  gen_sintab::sintab#22 = phi( gen_sintab::@4/gen_sintab::sintab#23 )
  progress_cursor#62 = phi( gen_sintab::@4/progress_cursor#64 )
  progress_idx#62 = phi( gen_sintab::@4/progress_idx#64 )
  gen_sintab::length#22 = phi( gen_sintab::@4/gen_sintab::length#23 )
  setMEMtoFAC::mem#0 = gen_sintab::f_min
  call setMEMtoFAC
  to:gen_sintab::@6
gen_sintab::@6: scope:[gen_sintab]  from gen_sintab::@5
  gen_sintab::sintab#21 = phi( gen_sintab::@5/gen_sintab::sintab#22 )
  progress_cursor#60 = phi( gen_sintab::@5/progress_cursor#62 )
  progress_idx#60 = phi( gen_sintab::@5/progress_idx#62 )
  gen_sintab::length#21 = phi( gen_sintab::@5/gen_sintab::length#22 )
  call subFACfromARG
  to:gen_sintab::@7
gen_sintab::@7: scope:[gen_sintab]  from gen_sintab::@6
  gen_sintab::sintab#20 = phi( gen_sintab::@6/gen_sintab::sintab#21 )
  progress_cursor#58 = phi( gen_sintab::@6/progress_cursor#60 )
  progress_idx#58 = phi( gen_sintab::@6/progress_idx#60 )
  gen_sintab::length#19 = phi( gen_sintab::@6/gen_sintab::length#21 )
  setMEMtoFAC::mem#1 = gen_sintab::f_amp
  call setMEMtoFAC
  to:gen_sintab::@8
gen_sintab::@8: scope:[gen_sintab]  from gen_sintab::@7
  gen_sintab::sintab#19 = phi( gen_sintab::@7/gen_sintab::sintab#20 )
  progress_cursor#56 = phi( gen_sintab::@7/progress_cursor#58 )
  progress_idx#56 = phi( gen_sintab::@7/progress_idx#58 )
  gen_sintab::length#17 = phi( gen_sintab::@7/gen_sintab::length#19 )
  setFAC::w#2 = 2
  call setFAC
  to:gen_sintab::@9
gen_sintab::@9: scope:[gen_sintab]  from gen_sintab::@8
  gen_sintab::sintab#18 = phi( gen_sintab::@8/gen_sintab::sintab#19 )
  progress_cursor#54 = phi( gen_sintab::@8/progress_cursor#56 )
  progress_idx#54 = phi( gen_sintab::@8/progress_idx#56 )
  gen_sintab::length#15 = phi( gen_sintab::@8/gen_sintab::length#17 )
  divMEMbyFAC::mem#0 = gen_sintab::f_amp
  call divMEMbyFAC
  to:gen_sintab::@10
gen_sintab::@10: scope:[gen_sintab]  from gen_sintab::@9
  gen_sintab::sintab#17 = phi( gen_sintab::@9/gen_sintab::sintab#18 )
  progress_cursor#51 = phi( gen_sintab::@9/progress_cursor#54 )
  progress_idx#51 = phi( gen_sintab::@9/progress_idx#54 )
  gen_sintab::length#13 = phi( gen_sintab::@9/gen_sintab::length#15 )
  setMEMtoFAC::mem#2 = gen_sintab::f_amp
  call setMEMtoFAC
  to:gen_sintab::@11
gen_sintab::@11: scope:[gen_sintab]  from gen_sintab::@10
  gen_sintab::sintab#16 = phi( gen_sintab::@10/gen_sintab::sintab#17 )
  progress_cursor#48 = phi( gen_sintab::@10/progress_cursor#51 )
  progress_idx#48 = phi( gen_sintab::@10/progress_idx#51 )
  gen_sintab::length#10 = phi( gen_sintab::@10/gen_sintab::length#13 )
  addMEMtoFAC::mem#0 = gen_sintab::f_min
  call addMEMtoFAC
  to:gen_sintab::@12
gen_sintab::@12: scope:[gen_sintab]  from gen_sintab::@11
  gen_sintab::sintab#15 = phi( gen_sintab::@11/gen_sintab::sintab#16 )
  progress_cursor#45 = phi( gen_sintab::@11/progress_cursor#48 )
  progress_idx#45 = phi( gen_sintab::@11/progress_idx#48 )
  gen_sintab::length#7 = phi( gen_sintab::@11/gen_sintab::length#10 )
  setMEMtoFAC::mem#3 = gen_sintab::f_min
  call setMEMtoFAC
  to:gen_sintab::@13
gen_sintab::@13: scope:[gen_sintab]  from gen_sintab::@12
  gen_sintab::sintab#13 = phi( gen_sintab::@12/gen_sintab::sintab#15 )
  progress_cursor#41 = phi( gen_sintab::@12/progress_cursor#45 )
  progress_idx#41 = phi( gen_sintab::@12/progress_idx#45 )
  gen_sintab::length#4 = phi( gen_sintab::@12/gen_sintab::length#7 )
  gen_sintab::i#0 = 0
  to:gen_sintab::@1
gen_sintab::@1: scope:[gen_sintab]  from gen_sintab::@13 gen_sintab::@23
  gen_sintab::sintab#12 = phi( gen_sintab::@13/gen_sintab::sintab#13, gen_sintab::@23/gen_sintab::sintab#14 )
  progress_cursor#37 = phi( gen_sintab::@13/progress_cursor#41, gen_sintab::@23/progress_cursor#11 )
  progress_idx#37 = phi( gen_sintab::@13/progress_idx#41, gen_sintab::@23/progress_idx#12 )
  gen_sintab::length#2 = phi( gen_sintab::@13/gen_sintab::length#4, gen_sintab::@23/gen_sintab::length#5 )
  gen_sintab::i#2 = phi( gen_sintab::@13/gen_sintab::i#0, gen_sintab::@23/gen_sintab::i#1 )
  gen_sintab::$11 = gen_sintab::i#2 < gen_sintab::length#2
  if(gen_sintab::$11) goto gen_sintab::@2
  to:gen_sintab::@return
gen_sintab::@2: scope:[gen_sintab]  from gen_sintab::@1
  progress_cursor#63 = phi( gen_sintab::@1/progress_cursor#37 )
  progress_idx#63 = phi( gen_sintab::@1/progress_idx#37 )
  gen_sintab::sintab#11 = phi( gen_sintab::@1/gen_sintab::sintab#12 )
  gen_sintab::length#11 = phi( gen_sintab::@1/gen_sintab::length#2 )
  gen_sintab::i#3 = phi( gen_sintab::@1/gen_sintab::i#2 )
  setFAC::w#3 = (unsigned int)gen_sintab::i#3
  call setFAC
  to:gen_sintab::@14
gen_sintab::@14: scope:[gen_sintab]  from gen_sintab::@2
  progress_cursor#61 = phi( gen_sintab::@2/progress_cursor#63 )
  progress_idx#61 = phi( gen_sintab::@2/progress_idx#63 )
  gen_sintab::i#13 = phi( gen_sintab::@2/gen_sintab::i#3 )
  gen_sintab::sintab#10 = phi( gen_sintab::@2/gen_sintab::sintab#11 )
  gen_sintab::length#8 = phi( gen_sintab::@2/gen_sintab::length#11 )
  mulFACbyMEM::mem#0 = gen_sintab::f_2pi
  call mulFACbyMEM
  to:gen_sintab::@15
gen_sintab::@15: scope:[gen_sintab]  from gen_sintab::@14
  progress_cursor#59 = phi( gen_sintab::@14/progress_cursor#61 )
  progress_idx#59 = phi( gen_sintab::@14/progress_idx#61 )
  gen_sintab::i#12 = phi( gen_sintab::@14/gen_sintab::i#13 )
  gen_sintab::sintab#9 = phi( gen_sintab::@14/gen_sintab::sintab#10 )
  gen_sintab::length#6 = phi( gen_sintab::@14/gen_sintab::length#8 )
  setMEMtoFAC::mem#4 = gen_sintab::f_i
  call setMEMtoFAC
  to:gen_sintab::@16
gen_sintab::@16: scope:[gen_sintab]  from gen_sintab::@15
  progress_cursor#57 = phi( gen_sintab::@15/progress_cursor#59 )
  progress_idx#57 = phi( gen_sintab::@15/progress_idx#59 )
  gen_sintab::i#11 = phi( gen_sintab::@15/gen_sintab::i#12 )
  gen_sintab::sintab#8 = phi( gen_sintab::@15/gen_sintab::sintab#9 )
  gen_sintab::length#3 = phi( gen_sintab::@15/gen_sintab::length#6 )
  setFAC::w#4 = (unsigned int)gen_sintab::length#3
  call setFAC
  to:gen_sintab::@17
gen_sintab::@17: scope:[gen_sintab]  from gen_sintab::@16
  gen_sintab::length#20 = phi( gen_sintab::@16/gen_sintab::length#3 )
  progress_cursor#55 = phi( gen_sintab::@16/progress_cursor#57 )
  progress_idx#55 = phi( gen_sintab::@16/progress_idx#57 )
  gen_sintab::i#10 = phi( gen_sintab::@16/gen_sintab::i#11 )
  gen_sintab::sintab#7 = phi( gen_sintab::@16/gen_sintab::sintab#8 )
  divMEMbyFAC::mem#1 = gen_sintab::f_i
  call divMEMbyFAC
  to:gen_sintab::@18
gen_sintab::@18: scope:[gen_sintab]  from gen_sintab::@17
  gen_sintab::length#18 = phi( gen_sintab::@17/gen_sintab::length#20 )
  progress_cursor#52 = phi( gen_sintab::@17/progress_cursor#55 )
  progress_idx#52 = phi( gen_sintab::@17/progress_idx#55 )
  gen_sintab::i#9 = phi( gen_sintab::@17/gen_sintab::i#10 )
  gen_sintab::sintab#6 = phi( gen_sintab::@17/gen_sintab::sintab#7 )
  call sinFAC
  to:gen_sintab::@19
gen_sintab::@19: scope:[gen_sintab]  from gen_sintab::@18
  gen_sintab::length#16 = phi( gen_sintab::@18/gen_sintab::length#18 )
  progress_cursor#49 = phi( gen_sintab::@18/progress_cursor#52 )
  progress_idx#49 = phi( gen_sintab::@18/progress_idx#52 )
  gen_sintab::i#8 = phi( gen_sintab::@18/gen_sintab::i#9 )
  gen_sintab::sintab#5 = phi( gen_sintab::@18/gen_sintab::sintab#6 )
  mulFACbyMEM::mem#1 = gen_sintab::f_amp
  call mulFACbyMEM
  to:gen_sintab::@20
gen_sintab::@20: scope:[gen_sintab]  from gen_sintab::@19
  gen_sintab::length#14 = phi( gen_sintab::@19/gen_sintab::length#16 )
  progress_cursor#46 = phi( gen_sintab::@19/progress_cursor#49 )
  progress_idx#46 = phi( gen_sintab::@19/progress_idx#49 )
  gen_sintab::i#7 = phi( gen_sintab::@19/gen_sintab::i#8 )
  gen_sintab::sintab#4 = phi( gen_sintab::@19/gen_sintab::sintab#5 )
  addMEMtoFAC::mem#1 = gen_sintab::f_min
  call addMEMtoFAC
  to:gen_sintab::@21
gen_sintab::@21: scope:[gen_sintab]  from gen_sintab::@20
  gen_sintab::length#12 = phi( gen_sintab::@20/gen_sintab::length#14 )
  progress_cursor#42 = phi( gen_sintab::@20/progress_cursor#46 )
  progress_idx#42 = phi( gen_sintab::@20/progress_idx#46 )
  gen_sintab::i#6 = phi( gen_sintab::@20/gen_sintab::i#7 )
  gen_sintab::sintab#3 = phi( gen_sintab::@20/gen_sintab::sintab#4 )
  call getFAC
  getFAC::return#2 = getFAC::return#1
  to:gen_sintab::@22
gen_sintab::@22: scope:[gen_sintab]  from gen_sintab::@21
  gen_sintab::length#9 = phi( gen_sintab::@21/gen_sintab::length#12 )
  progress_cursor#36 = phi( gen_sintab::@21/progress_cursor#42 )
  progress_idx#36 = phi( gen_sintab::@21/progress_idx#42 )
  gen_sintab::i#4 = phi( gen_sintab::@21/gen_sintab::i#6 )
  gen_sintab::sintab#2 = phi( gen_sintab::@21/gen_sintab::sintab#3 )
  getFAC::return#4 = phi( gen_sintab::@21/getFAC::return#2 )
  gen_sintab::$20 = getFAC::return#4
  gen_sintab::sintab#2[gen_sintab::i#4] = (char)gen_sintab::$20
  call progress_inc
  to:gen_sintab::@23
gen_sintab::@23: scope:[gen_sintab]  from gen_sintab::@22
  gen_sintab::sintab#14 = phi( gen_sintab::@22/gen_sintab::sintab#2 )
  gen_sintab::length#5 = phi( gen_sintab::@22/gen_sintab::length#9 )
  gen_sintab::i#5 = phi( gen_sintab::@22/gen_sintab::i#4 )
  progress_cursor#27 = phi( gen_sintab::@22/progress_cursor#10 )
  progress_idx#28 = phi( gen_sintab::@22/progress_idx#11 )
  progress_idx#12 = progress_idx#28
  progress_cursor#11 = progress_cursor#27
  gen_sintab::i#1 = ++ gen_sintab::i#5
  to:gen_sintab::@1
gen_sintab::@return: scope:[gen_sintab]  from gen_sintab::@1
  progress_cursor#28 = phi( gen_sintab::@1/progress_cursor#37 )
  progress_idx#29 = phi( gen_sintab::@1/progress_idx#37 )
  progress_idx#13 = progress_idx#29
  progress_cursor#12 = progress_cursor#28
  return 
  to:@return

void __start()
__start: scope:[__start]  from
  to:__start::__init1
__start::__init1: scope:[__start]  from __start
  progress_cursor#13 = SCREEN
  progress_idx#14 = 0
  sin_idx_x#5 = 0
  sin_idx_y#5 = 0
  to:__start::@1
__start::@1: scope:[__start]  from __start::__init1
  sin_idx_y#19 = phi( __start::__init1/sin_idx_y#5 )
  sin_idx_x#18 = phi( __start::__init1/sin_idx_x#5 )
  progress_idx#38 = phi( __start::__init1/progress_idx#14 )
  progress_cursor#38 = phi( __start::__init1/progress_cursor#13 )
  call main
  to:__start::@2
__start::@2: scope:[__start]  from __start::@1
  sin_idx_y#13 = phi( __start::@1/sin_idx_y#1 )
  sin_idx_x#13 = phi( __start::@1/sin_idx_x#1 )
  progress_idx#30 = phi( __start::@1/progress_idx#1 )
  progress_cursor#29 = phi( __start::@1/progress_cursor#1 )
  progress_cursor#14 = progress_cursor#29
  progress_idx#15 = progress_idx#30
  sin_idx_x#6 = sin_idx_x#13
  sin_idx_y#6 = sin_idx_y#13
  to:__start::@return
__start::@return: scope:[__start]  from __start::@2
  sin_idx_y#14 = phi( __start::@2/sin_idx_y#6 )
  sin_idx_x#14 = phi( __start::@2/sin_idx_x#6 )
  progress_idx#31 = phi( __start::@2/progress_idx#15 )
  progress_cursor#30 = phi( __start::@2/progress_cursor#14 )
  progress_cursor#15 = progress_cursor#30
  progress_idx#16 = progress_idx#31
  sin_idx_x#7 = sin_idx_x#14
  sin_idx_y#7 = sin_idx_y#14
  return 
  to:@return

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

Adding number conversion cast (unumber) $3f8 in 
Adding number conversion cast (unumber) $ff in main::$1 = *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER) != $ff
Adding number conversion cast (unumber) 0 in COLS[init::i#2] = 0
Adding number conversion cast (unumber) $28 in init::$8 = $28 + init::i#2
Adding number conversion cast (unumber) init::$8 in init::$8 = (unumber)$28 + init::i#2
Adding number conversion cast (unumber) $b in COLS[init::$8] = $b
Adding number conversion cast (unumber) 0 in gen_sintab::min#0 = 0
Adding number conversion cast (unumber) $ff in gen_sintab::max#0 = $ff
Adding number conversion cast (unumber) $28 in progress_init::line#1 = SCREEN+$28
Adding number conversion cast (unumber) $32 in gen_sintab::min#1 = $32
Adding number conversion cast (unumber) $d0 in gen_sintab::max#1 = $d0
Adding number conversion cast (unumber) $3e8 in clear_screen::$0 = clear_screen::sc#2 < SCREEN+$3e8
Adding number conversion cast (unumber) 0 in progress_idx#7 = 0
Adding number conversion cast (unumber) 8 in progress_inc::$0 = progress_idx#9 == 8
Adding number conversion cast (unumber) 8 in *progress_cursor#25 = progress_inc::progress_chars[8]
Adding number conversion cast (unumber) 0 in progress_idx#10 = 0
Adding number conversion cast (unumber) 2 in anim::$7 = anim::x_msb#2 * 2
Adding number conversion cast (unumber) anim::$7 in anim::$7 = anim::x_msb#2 * (unumber)2
Adding number conversion cast (unumber) anim::$9 in anim::$9 = anim::$7 | anim::$8
Adding number conversion cast (unumber) $a in anim::$11 = anim::xidx#3 + $a
Adding number conversion cast (unumber) anim::$11 in anim::$11 = anim::xidx#3 + (unumber)$a
Adding number conversion cast (unumber) 8 in anim::$15 = anim::yidx#4 + 8
Adding number conversion cast (unumber) anim::$15 in anim::$15 = anim::yidx#4 + (unumber)8
Adding number conversion cast (unumber) 2 in anim::$19 = anim::j2#3 - 2
Adding number conversion cast (unumber) anim::$19 in anim::$19 = anim::j2#3 - (unumber)2
Adding number conversion cast (unumber) 0 in sin_idx_x#3 = 0
Adding number conversion cast (unumber) 0 in sin_idx_y#3 = 0
Adding number conversion cast (unumber) $7f in *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE) = $7f
Adding number conversion cast (unumber) $7f in *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X) = $7f
Adding number conversion cast (unumber) $7f in *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_Y) = $7f
Adding number conversion cast (unumber) $40 in place_sprites::spr_id#0 = (char)(unsigned int)sprites/$40
Adding number conversion cast (unumber) $50 in SPRITES_YPOS[place_sprites::j2#3] = $50
Adding number conversion cast (unumber) $20 in place_sprites::$0 = place_sprites::spr_x#2 + $20
Adding number conversion cast (unumber) place_sprites::$0 in place_sprites::$0 = place_sprites::spr_x#2 + (unumber)$20
Adding number conversion cast (unumber) 7^5 in place_sprites::$1 = place_sprites::col#2 ^ 7^5
Adding number conversion cast (unumber) place_sprites::$1 in place_sprites::$1 = place_sprites::col#2 ^ (unumber)7^5
Adding number conversion cast (unumber) $40 in gen_sprites::$1 = gen_sprites::spr#3 + $40
Adding number conversion cast (unumber) 8 in gen_chargen_sprite::$0 = gen_chargen_sprite::$14 * 8
Adding number conversion cast (unumber) gen_chargen_sprite::$0 in gen_chargen_sprite::$0 = gen_chargen_sprite::$14 * (unumber)8
Adding number conversion cast (unumber) $32 in *PROCPORT = $32
Adding number conversion cast (unumber) $80 in gen_chargen_sprite::$2 = gen_chargen_sprite::bits#2 & $80
Adding number conversion cast (unumber) gen_chargen_sprite::$2 in gen_chargen_sprite::$2 = gen_chargen_sprite::bits#2 & (unumber)$80
Adding number conversion cast (unumber) 0 in gen_chargen_sprite::$3 = gen_chargen_sprite::$2 != 0
Adding number conversion cast (unumber) 1 in gen_chargen_sprite::c#1 = 1
Adding number conversion cast (unumber) 2 in gen_chargen_sprite::$5 = gen_chargen_sprite::s_gen#3 * 2
Adding number conversion cast (unumber) gen_chargen_sprite::$5 in gen_chargen_sprite::$5 = gen_chargen_sprite::s_gen#3 * (unumber)2
Adding number conversion cast (unumber) gen_chargen_sprite::$6 in gen_chargen_sprite::$6 = gen_chargen_sprite::$5 | gen_chargen_sprite::c#2
Adding number conversion cast (unumber) 8 in gen_chargen_sprite::$7 = gen_chargen_sprite::s_gen_cnt#1 == 8
Adding number conversion cast (unumber) 0 in gen_chargen_sprite::sprite#3[0] = gen_chargen_sprite::s_gen#4
Adding number conversion cast (unumber) 3 in gen_chargen_sprite::sprite#3[3] = gen_chargen_sprite::s_gen#4
Adding number conversion cast (unumber) 6 in gen_chargen_sprite::sprite#3[6] = gen_chargen_sprite::s_gen#4
Adding number conversion cast (unumber) 0 in gen_chargen_sprite::s_gen#2 = 0
Adding number conversion cast (unumber) 0 in gen_chargen_sprite::s_gen_cnt#2 = 0
Adding number conversion cast (unumber) 2 in gen_chargen_sprite::$10 = gen_chargen_sprite::bits#3 * 2
Adding number conversion cast (unumber) gen_chargen_sprite::$10 in gen_chargen_sprite::$10 = gen_chargen_sprite::bits#3 * (unumber)2
Adding number conversion cast (unumber) 6 in gen_chargen_sprite::$12 = gen_chargen_sprite::sprite#4 + 6
Adding number conversion cast (unumber) $37 in *PROCPORT = $37
Adding number conversion cast (unumber) 2 in setFAC::w#2 = 2
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast COLS[init::i#2] = (unumber)0
Inlining cast COLS[init::$8] = (unumber)$b
Inlining cast gen_sintab::min#0 = (unumber)0
Inlining cast gen_sintab::max#0 = (unumber)$ff
Inlining cast gen_sintab::min#1 = (unumber)$32
Inlining cast gen_sintab::max#1 = (unumber)$d0
Inlining cast progress_idx#7 = (unumber)0
Inlining cast progress_idx#10 = (unumber)0
Inlining cast sin_idx_x#3 = (unumber)0
Inlining cast sin_idx_y#3 = (unumber)0
Inlining cast *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE) = (unumber)$7f
Inlining cast *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X) = (unumber)$7f
Inlining cast *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_Y) = (unumber)$7f
Inlining cast SPRITES_YPOS[place_sprites::j2#3] = (unumber)$50
Inlining cast *PROCPORT = (unumber)$32
Inlining cast gen_chargen_sprite::c#1 = (unumber)1
Inlining cast gen_chargen_sprite::s_gen#2 = (unumber)0
Inlining cast gen_chargen_sprite::s_gen_cnt#2 = (unumber)0
Inlining cast *PROCPORT = (unumber)$37
Inlining cast setFAC::w#2 = (unumber)2
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (char *) 53248
Simplifying constant pointer cast (char *) 53249
Simplifying constant pointer cast (char *) 53287
Simplifying constant pointer cast (char *) 1
Simplifying constant pointer cast (char *) 53248
Simplifying constant pointer cast (struct MOS6569_VICII *) 53248
Simplifying constant pointer cast (char *) 55296
Simplifying constant pointer cast (char *) 254
Simplifying constant pointer cast (char *) 255
Simplifying constant pointer cast (char *) 8192
Simplifying constant pointer cast (char *) 1024
Simplifying constant integer cast $3f8
Simplifying constant pointer cast (char *) 58085
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 (unsigned int) $3f8
Finalized unsigned number type (char) $ff
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $b
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $ff
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $32
Finalized unsigned number type (char) $d0
Finalized unsigned number type (unsigned int) $3e8
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) $a
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $7f
Finalized unsigned number type (char) $7f
Finalized unsigned number type (char) $7f
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) $50
Finalized unsigned number type (char) $20
Finalized unsigned number type (char) $40
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) $32
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 6
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 6
Finalized unsigned number type (char) $37
Finalized unsigned number type (char) 2
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to char in init::$8 = $28 + init::i#2
Inferred type updated to char in anim::$7 = anim::x_msb#2 * 2
Inferred type updated to char in anim::$9 = anim::$7 | anim::$8
Inferred type updated to char in anim::$11 = anim::xidx#3 + $a
Inferred type updated to char in anim::$15 = anim::yidx#4 + 8
Inferred type updated to char in anim::$19 = anim::j2#3 - 2
Inferred type updated to char in place_sprites::$0 = place_sprites::spr_x#2 + $20
Inferred type updated to char in place_sprites::$1 = place_sprites::col#2 ^ (char)7^5
Inferred type updated to unsigned int in gen_chargen_sprite::$0 = gen_chargen_sprite::$14 * 8
Inferred type updated to char in gen_chargen_sprite::$2 = gen_chargen_sprite::bits#2 & $80
Inferred type updated to char in gen_chargen_sprite::$5 = gen_chargen_sprite::s_gen#3 * 2
Inferred type updated to char in gen_chargen_sprite::$6 = gen_chargen_sprite::$5 | gen_chargen_sprite::c#2
Inferred type updated to char in gen_chargen_sprite::$10 = gen_chargen_sprite::bits#3 * 2
Inversing boolean not [143] progress_inc::$1 = progress_idx#9 != 8 from [142] progress_inc::$0 = progress_idx#9 == 8
Inversing boolean not [174] anim::$13 = anim::xidx#1 < sinlen_x from [173] anim::$12 = anim::xidx#1 >= sinlen_x
Inversing boolean not [180] anim::$17 = anim::yidx#1 < sinlen_y from [179] anim::$16 = anim::yidx#1 >= sinlen_y
Inversing boolean not [198] anim::$2 = sin_idx_x#2 < sinlen_x from [197] anim::$1 = sin_idx_x#2 >= sinlen_x
Inversing boolean not [203] anim::$4 = sin_idx_y#2 < sinlen_y from [202] anim::$3 = sin_idx_y#2 >= sinlen_y
Inversing boolean not [268] gen_chargen_sprite::$4 = gen_chargen_sprite::$2 == 0 from [267] gen_chargen_sprite::$3 = gen_chargen_sprite::$2 != 0
Inversing boolean not [280] gen_chargen_sprite::$8 = gen_chargen_sprite::s_gen_cnt#1 != 8 from [279] gen_chargen_sprite::$7 = gen_chargen_sprite::s_gen_cnt#1 == 8
Successful SSA optimization Pass2UnaryNotSimplification
Alias setFAC::prepareMEM1_mem#0 = setFAC::w#5 setFAC::prepareMEM1_mem#1 
Alias getFAC::return#0 = getFAC::w#0 getFAC::return#3 getFAC::return#1 
Alias setMEMtoFAC::prepareMEM1_mem#0 = setMEMtoFAC::prepareMEM1_mem#1 
Alias addMEMtoFAC::prepareMEM1_mem#0 = addMEMtoFAC::prepareMEM1_mem#1 
Alias divMEMbyFAC::prepareMEM1_mem#0 = divMEMbyFAC::prepareMEM1_mem#1 
Alias mulFACbyMEM::prepareMEM1_mem#0 = mulFACbyMEM::prepareMEM1_mem#1 
Alias sin_idx_x#24 = sin_idx_x#27 
Alias sin_idx_y#22 = sin_idx_y#25 
Alias progress_cursor#0 = progress_cursor#16 
Alias progress_idx#0 = progress_idx#17 
Alias sin_idx_x#15 = sin_idx_x#19 
Alias sin_idx_y#15 = sin_idx_y#20 
Alias progress_cursor#1 = progress_cursor#39 progress_cursor#43 progress_cursor#32 progress_cursor#17 
Alias progress_idx#1 = progress_idx#39 progress_idx#43 progress_idx#33 progress_idx#18 
Alias sin_idx_x#0 = sin_idx_x#8 sin_idx_x#9 sin_idx_x#1 
Alias sin_idx_y#0 = sin_idx_y#8 sin_idx_y#9 sin_idx_y#1 
Alias progress_cursor#50 = progress_cursor#53 
Alias progress_idx#50 = progress_idx#53 
Alias progress_cursor#33 = progress_cursor#44 progress_cursor#47 progress_cursor#40 
Alias progress_idx#34 = progress_idx#44 progress_idx#47 progress_idx#40 
Alias progress_cursor#18 = progress_cursor#2 
Alias progress_idx#19 = progress_idx#2 
Alias progress_idx#20 = progress_idx#3 
Alias progress_cursor#19 = progress_cursor#3 
Alias progress_cursor#20 = progress_cursor#4 
Alias progress_idx#21 = progress_idx#4 
Alias progress_idx#22 = progress_idx#5 progress_idx#35 progress_idx#23 progress_idx#6 
Alias progress_cursor#21 = progress_cursor#5 progress_cursor#34 progress_cursor#22 progress_cursor#6 
Alias clear_screen::sc#2 = clear_screen::sc#3 
Alias progress_cursor#23 = progress_cursor#7 progress_cursor#8 
Alias progress_idx#24 = progress_idx#7 progress_idx#8 
Alias progress_cursor#25 = progress_cursor#35 
Alias progress_idx#11 = progress_idx#27 progress_idx#26 
Alias progress_cursor#10 = progress_cursor#26 progress_cursor#24 
Alias anim::x_msb#1 = anim::$9 anim::x_msb#7 
Alias anim::xidx#1 = anim::$11 anim::xidx#4 
Alias anim::yidx#1 = anim::$15 anim::yidx#5 
Alias anim::yidx#3 = anim::yidx#7 
Alias anim::j2#2 = anim::j2#6 
Alias anim::j#5 = anim::j#6 
Alias sin_idx_x#25 = sin_idx_x#26 
Alias sin_idx_y#26 = sin_idx_y#27 
Alias anim::xidx#2 = anim::$14 
Alias anim::j2#1 = anim::$19 
Alias anim::j2#4 = anim::j2#5 
Alias anim::j#3 = anim::j#4 
Alias anim::xidx#6 = anim::xidx#7 
Alias anim::x_msb#5 = anim::x_msb#6 
Alias sin_idx_x#20 = sin_idx_x#21 
Alias sin_idx_y#23 = sin_idx_y#24 
Alias anim::yidx#2 = anim::$18 
Alias anim::x_msb#3 = anim::x_msb#4 
Alias sin_idx_x#11 = sin_idx_x#16 
Alias sin_idx_y#16 = sin_idx_y#17 sin_idx_y#21 
Alias sin_idx_x#22 = sin_idx_x#23 
Alias sin_idx_x#12 = sin_idx_x#17 sin_idx_x#4 
Alias sin_idx_y#12 = sin_idx_y#18 sin_idx_y#4 
Alias place_sprites::spr_x#1 = place_sprites::$0 
Alias place_sprites::col#1 = place_sprites::$1 
Alias gen_sprites::spr#2 = gen_sprites::spr#3 
Alias gen_sprites::i#2 = gen_sprites::i#3 
Alias gen_sprites::spr#1 = gen_sprites::$1 
Alias gen_chargen_sprite::s_gen#7 = gen_chargen_sprite::s_gen#8 
Alias gen_chargen_sprite::s_gen_cnt#6 = gen_chargen_sprite::s_gen_cnt#7 
Alias gen_chargen_sprite::sprite#10 = gen_chargen_sprite::sprite#9 
Alias gen_chargen_sprite::bits#2 = gen_chargen_sprite::bits#8 
Alias gen_chargen_sprite::x#7 = gen_chargen_sprite::x#8 
Alias gen_chargen_sprite::y#10 = gen_chargen_sprite::y#9 
Alias gen_chargen_sprite::chargen#8 = gen_chargen_sprite::chargen#9 
Alias gen_chargen_sprite::s_gen#1 = gen_chargen_sprite::$6 gen_chargen_sprite::s_gen#4 
Alias gen_chargen_sprite::sprite#3 = gen_chargen_sprite::sprite#5 
Alias gen_chargen_sprite::b#3 = gen_chargen_sprite::b#4 
Alias gen_chargen_sprite::c#2 = gen_chargen_sprite::c#5 
Alias gen_chargen_sprite::bits#5 = gen_chargen_sprite::bits#6 
Alias gen_chargen_sprite::x#4 = gen_chargen_sprite::x#5 
Alias gen_chargen_sprite::y#6 = gen_chargen_sprite::y#7 
Alias gen_chargen_sprite::chargen#5 = gen_chargen_sprite::chargen#6 
Alias gen_chargen_sprite::bits#3 = gen_chargen_sprite::bits#4 
Alias gen_chargen_sprite::x#2 = gen_chargen_sprite::x#3 
Alias gen_chargen_sprite::sprite#4 = gen_chargen_sprite::sprite#6 gen_chargen_sprite::sprite#8 
Alias gen_chargen_sprite::y#3 = gen_chargen_sprite::y#4 gen_chargen_sprite::y#5 
Alias gen_chargen_sprite::chargen#2 = gen_chargen_sprite::chargen#3 gen_chargen_sprite::chargen#4 
Alias gen_chargen_sprite::s_gen#6 = gen_chargen_sprite::s_gen#9 
Alias gen_chargen_sprite::s_gen_cnt#5 = gen_chargen_sprite::s_gen_cnt#8 
Alias gen_chargen_sprite::bits#1 = gen_chargen_sprite::$10 
Alias gen_chargen_sprite::sprite#2 = gen_chargen_sprite::$12 
Alias gen_sintab::min#2 = gen_sintab::min#3 gen_sintab::min#4 
Alias gen_sintab::length#10 = gen_sintab::length#24 gen_sintab::length#25 gen_sintab::length#23 gen_sintab::length#22 gen_sintab::length#21 gen_sintab::length#19 gen_sintab::length#17 gen_sintab::length#15 gen_sintab::length#13 gen_sintab::length#7 gen_sintab::length#4 
Alias progress_idx#41 = progress_idx#65 progress_idx#66 progress_idx#64 progress_idx#62 progress_idx#60 progress_idx#58 progress_idx#56 progress_idx#54 progress_idx#51 progress_idx#48 progress_idx#45 
Alias progress_cursor#41 = progress_cursor#65 progress_cursor#66 progress_cursor#64 progress_cursor#62 progress_cursor#60 progress_cursor#58 progress_cursor#56 progress_cursor#54 progress_cursor#51 progress_cursor#48 progress_cursor#45 
Alias gen_sintab::sintab#13 = gen_sintab::sintab#24 gen_sintab::sintab#25 gen_sintab::sintab#23 gen_sintab::sintab#22 gen_sintab::sintab#21 gen_sintab::sintab#20 gen_sintab::sintab#19 gen_sintab::sintab#18 gen_sintab::sintab#17 gen_sintab::sintab#16 gen_sintab::sintab#15 
Alias gen_sintab::i#10 = gen_sintab::i#3 gen_sintab::i#2 gen_sintab::i#13 gen_sintab::i#12 gen_sintab::i#11 gen_sintab::i#9 gen_sintab::i#8 gen_sintab::i#7 gen_sintab::i#6 gen_sintab::i#4 gen_sintab::i#5 
Alias gen_sintab::length#11 = gen_sintab::length#2 gen_sintab::length#8 gen_sintab::length#6 gen_sintab::length#3 gen_sintab::length#20 gen_sintab::length#18 gen_sintab::length#16 gen_sintab::length#14 gen_sintab::length#12 gen_sintab::length#9 gen_sintab::length#5 
Alias gen_sintab::sintab#10 = gen_sintab::sintab#11 gen_sintab::sintab#12 gen_sintab::sintab#9 gen_sintab::sintab#8 gen_sintab::sintab#7 gen_sintab::sintab#6 gen_sintab::sintab#5 gen_sintab::sintab#4 gen_sintab::sintab#3 gen_sintab::sintab#2 gen_sintab::sintab#14 
Alias progress_idx#13 = progress_idx#63 progress_idx#37 progress_idx#61 progress_idx#59 progress_idx#57 progress_idx#55 progress_idx#52 progress_idx#49 progress_idx#46 progress_idx#42 progress_idx#36 progress_idx#29 
Alias progress_cursor#12 = progress_cursor#63 progress_cursor#37 progress_cursor#61 progress_cursor#59 progress_cursor#57 progress_cursor#55 progress_cursor#52 progress_cursor#49 progress_cursor#46 progress_cursor#42 progress_cursor#36 progress_cursor#28 
Alias getFAC::return#2 = getFAC::return#4 
Alias progress_idx#12 = progress_idx#28 
Alias progress_cursor#11 = progress_cursor#27 
Alias progress_cursor#13 = progress_cursor#38 
Alias progress_idx#14 = progress_idx#38 
Alias sin_idx_x#18 = sin_idx_x#5 
Alias sin_idx_y#19 = sin_idx_y#5 
Alias progress_cursor#14 = progress_cursor#29 progress_cursor#30 progress_cursor#15 
Alias progress_idx#15 = progress_idx#30 progress_idx#31 progress_idx#16 
Alias sin_idx_x#13 = sin_idx_x#6 sin_idx_x#14 sin_idx_x#7 
Alias sin_idx_y#13 = sin_idx_y#6 sin_idx_y#14 sin_idx_y#7 
Successful SSA optimization Pass2AliasElimination
Alias anim::yidx#3 = anim::yidx#4 
Alias anim::j2#2 = anim::j2#4 anim::j2#3 
Alias anim::j#2 = anim::j#3 anim::j#5 
Alias anim::x_msb#1 = anim::x_msb#5 anim::x_msb#3 
Alias sin_idx_x#11 = sin_idx_x#20 sin_idx_x#25 
Alias sin_idx_y#11 = sin_idx_y#23 sin_idx_y#26 sin_idx_y#16 
Alias anim::xidx#5 = anim::xidx#6 
Alias sin_idx_x#12 = sin_idx_x#22 
Alias gen_chargen_sprite::s_gen#5 = gen_chargen_sprite::s_gen#7 
Alias gen_chargen_sprite::s_gen_cnt#4 = gen_chargen_sprite::s_gen_cnt#6 
Alias gen_chargen_sprite::sprite#10 = gen_chargen_sprite::sprite#7 
Alias gen_chargen_sprite::bits#2 = gen_chargen_sprite::bits#7 
Alias gen_chargen_sprite::x#6 = gen_chargen_sprite::x#7 
Alias gen_chargen_sprite::y#10 = gen_chargen_sprite::y#8 
Alias gen_chargen_sprite::chargen#7 = gen_chargen_sprite::chargen#8 
Alias gen_chargen_sprite::b#2 = gen_chargen_sprite::b#3 
Alias gen_chargen_sprite::c#2 = gen_chargen_sprite::c#4 
Alias gen_chargen_sprite::bits#3 = gen_chargen_sprite::bits#5 
Alias gen_chargen_sprite::x#2 = gen_chargen_sprite::x#4 
Alias gen_chargen_sprite::y#3 = gen_chargen_sprite::y#6 
Alias gen_chargen_sprite::chargen#2 = gen_chargen_sprite::chargen#5 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values progress_cursor#31 progress_cursor#13
Identical Phi Values progress_idx#32 progress_idx#14
Identical Phi Values sin_idx_x#24 sin_idx_x#18
Identical Phi Values sin_idx_y#22 sin_idx_y#19
Identical Phi Values progress_cursor#0 progress_cursor#21
Identical Phi Values progress_idx#0 progress_idx#22
Identical Phi Values progress_cursor#1 progress_cursor#0
Identical Phi Values progress_idx#1 progress_idx#0
Identical Phi Values sin_idx_x#0 sin_idx_x#12
Identical Phi Values sin_idx_y#0 sin_idx_y#12
Identical Phi Values progress_cursor#50 progress_cursor#31
Identical Phi Values progress_idx#50 progress_idx#32
Identical Phi Values progress_cursor#33 progress_cursor#50
Identical Phi Values progress_idx#34 progress_idx#50
Identical Phi Values progress_cursor#18 progress_cursor#23
Identical Phi Values progress_idx#19 progress_idx#24
Identical Phi Values progress_idx#20 progress_idx#13
Identical Phi Values progress_cursor#19 progress_cursor#12
Identical Phi Values progress_cursor#20 progress_cursor#23
Identical Phi Values progress_idx#21 progress_idx#24
Identical Phi Values progress_idx#22 progress_idx#13
Identical Phi Values progress_cursor#21 progress_cursor#12
Identical Phi Values progress_idx#25 progress_idx#13
Identical Phi Values progress_cursor#25 progress_cursor#12
Identical Phi Values sin_idx_x#10 sin_idx_x#15
Identical Phi Values sin_idx_y#10 sin_idx_y#15
Identical Phi Values sin_idx_x#11 sin_idx_x#10
Identical Phi Values sin_idx_y#11 sin_idx_y#10
Identical Phi Values gen_chargen_sprite::ch#1 gen_chargen_sprite::ch#0
Identical Phi Values gen_chargen_sprite::sprite#12 gen_chargen_sprite::sprite#0
Identical Phi Values gen_chargen_sprite::c#2 gen_chargen_sprite::c#3
Identical Phi Values gen_chargen_sprite::bits#3 gen_chargen_sprite::bits#2
Identical Phi Values gen_chargen_sprite::x#2 gen_chargen_sprite::x#6
Identical Phi Values gen_chargen_sprite::y#3 gen_chargen_sprite::y#10
Identical Phi Values gen_chargen_sprite::chargen#2 gen_chargen_sprite::chargen#7
Identical Phi Values gen_sintab::length#11 gen_sintab::length#10
Identical Phi Values gen_sintab::sintab#10 gen_sintab::sintab#13
Identical Phi Values progress_idx#12 progress_idx#11
Identical Phi Values progress_cursor#11 progress_cursor#10
Identical Phi Values progress_cursor#14 progress_cursor#1
Identical Phi Values progress_idx#15 progress_idx#1
Identical Phi Values sin_idx_x#13 sin_idx_x#0
Identical Phi Values sin_idx_y#13 sin_idx_y#0
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values gen_chargen_sprite::y#10 gen_chargen_sprite::y#2
Identical Phi Values gen_chargen_sprite::chargen#7 gen_chargen_sprite::chargen#1
Identical Phi Values progress_idx#41 progress_idx#24
Identical Phi Values progress_cursor#41 progress_cursor#23
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values gen_chargen_sprite::chargen#1 gen_chargen_sprite::chargen#0
Successful SSA optimization Pass2IdenticalPhiElimination
Simple Condition main::$1 [53] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$ff) goto main::@1
Simple Condition init::$9 [67] if(init::i#1!=rangelast(0,$27)) goto init::@1
Simple Condition clear_screen::$0 [93] if(clear_screen::sc#2<SCREEN+$3e8) goto clear_screen::@2
Simple Condition progress_inc::$1 [104] if(progress_idx#9!=8) goto progress_inc::@1
Simple Condition anim::$13 [128] if(anim::xidx#1<sinlen_x) goto anim::@5
Simple Condition anim::$17 [132] if(anim::yidx#1<sinlen_y) goto anim::@6
Simple Condition anim::$20 [138] if(anim::j#1!=rangelast(0,6)) goto anim::@4
Simple Condition anim::$2 [143] if(sin_idx_x#2<sinlen_x) goto anim::@1
Simple Condition anim::$4 [147] if(sin_idx_y#2<sinlen_y) goto anim::@2
Simple Condition place_sprites::$2 [173] if(place_sprites::j#1!=rangelast(0,6)) goto place_sprites::@1
Simple Condition gen_sprites::$2 [184] if(gen_sprites::i#1!=rangelast(0,6)) goto gen_sprites::@1
Simple Condition gen_chargen_sprite::$4 [202] if(gen_chargen_sprite::$2==0) goto gen_chargen_sprite::@3
Simple Condition gen_chargen_sprite::$8 [211] if(gen_chargen_sprite::s_gen_cnt#1!=8) goto gen_chargen_sprite::@5
Simple Condition gen_chargen_sprite::$9 [215] if(gen_chargen_sprite::b#1!=rangelast(0,2)) goto gen_chargen_sprite::@4
Simple Condition gen_chargen_sprite::$11 [225] if(gen_chargen_sprite::x#1!=rangelast(0,7)) goto gen_chargen_sprite::@2
Simple Condition gen_chargen_sprite::$13 [229] if(gen_chargen_sprite::y#1!=rangelast(0,7)) goto gen_chargen_sprite::@1
Simple Condition gen_sintab::$11 [257] if(gen_sintab::i#10<gen_sintab::length#10) goto gen_sintab::@2
Successful SSA optimization Pass2ConditionalJumpSimplification
Constant init::i#0 = 0
Constant progress_init::line#0 = SCREEN
Constant gen_sintab::sintab#0 = sintab_x
Constant gen_sintab::length#0 = sinlen_x
Constant gen_sintab::min#0 = 0
Constant gen_sintab::max#0 = $ff
Constant progress_init::line#1 = SCREEN+$28
Constant gen_sintab::sintab#1 = sintab_y
Constant gen_sintab::length#1 = sinlen_y
Constant gen_sintab::min#1 = $32
Constant gen_sintab::max#1 = $d0
Constant clear_screen::sc#0 = SCREEN
Constant progress_idx#24 = 0
Constant progress_idx#10 = 0
Constant anim::j2#0 = $c
Constant anim::x_msb#0 = 0
Constant anim::j#0 = 0
Constant sin_idx_x#3 = 0
Constant sin_idx_y#3 = 0
Constant place_sprites::spr_id#0 = (char)(unsigned int)sprites/$40
Constant place_sprites::spr_x#0 = $3c
Constant place_sprites::j2#0 = 0
Constant place_sprites::col#0 = 5
Constant place_sprites::j#0 = 0
Constant gen_sprites::spr#0 = sprites
Constant gen_sprites::i#0 = 0
Constant gen_chargen_sprite::y#0 = 0
Constant gen_chargen_sprite::s_gen#0 = 0
Constant gen_chargen_sprite::s_gen_cnt#0 = 0
Constant gen_chargen_sprite::x#0 = 0
Constant gen_chargen_sprite::c#0 = 0
Constant gen_chargen_sprite::b#0 = 0
Constant gen_chargen_sprite::c#1 = 1
Constant gen_chargen_sprite::s_gen#2 = 0
Constant gen_chargen_sprite::s_gen_cnt#2 = 0
Constant setMEMtoFAC::mem#0 = gen_sintab::f_min
Constant setMEMtoFAC::mem#1 = gen_sintab::f_amp
Constant setFAC::w#2 = 2
Constant divMEMbyFAC::mem#0 = gen_sintab::f_amp
Constant setMEMtoFAC::mem#2 = gen_sintab::f_amp
Constant addMEMtoFAC::mem#0 = gen_sintab::f_min
Constant setMEMtoFAC::mem#3 = gen_sintab::f_min
Constant gen_sintab::i#0 = 0
Constant mulFACbyMEM::mem#0 = gen_sintab::f_2pi
Constant setMEMtoFAC::mem#4 = gen_sintab::f_i
Constant divMEMbyFAC::mem#1 = gen_sintab::f_i
Constant mulFACbyMEM::mem#1 = gen_sintab::f_amp
Constant addMEMtoFAC::mem#1 = gen_sintab::f_min
Constant progress_cursor#13 = SCREEN
Constant progress_idx#14 = 0
Constant sin_idx_x#18 = 0
Constant sin_idx_y#19 = 0
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [56] if(true) goto main::@1
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 $28
Resolved ranged next value [136] anim::j#1 = ++ anim::j#2 to ++
Resolved ranged comparison value [138] if(anim::j#1!=rangelast(0,6)) goto anim::@4 to 7
Resolved ranged next value [171] place_sprites::j#1 = ++ place_sprites::j#2 to ++
Resolved ranged comparison value [173] if(place_sprites::j#1!=rangelast(0,6)) goto place_sprites::@1 to 7
Resolved ranged next value [182] gen_sprites::i#1 = ++ gen_sprites::i#2 to ++
Resolved ranged comparison value [184] if(gen_sprites::i#1!=rangelast(0,6)) goto gen_sprites::@1 to 7
Resolved ranged next value [213] gen_chargen_sprite::b#1 = ++ gen_chargen_sprite::b#2 to ++
Resolved ranged comparison value [215] if(gen_chargen_sprite::b#1!=rangelast(0,2)) goto gen_chargen_sprite::@4 to 3
Resolved ranged next value [223] gen_chargen_sprite::x#1 = ++ gen_chargen_sprite::x#6 to ++
Resolved ranged comparison value [225] if(gen_chargen_sprite::x#1!=rangelast(0,7)) goto gen_chargen_sprite::@2 to 8
Resolved ranged next value [227] gen_chargen_sprite::y#1 = ++ gen_chargen_sprite::y#2 to ++
Resolved ranged comparison value [229] if(gen_chargen_sprite::y#1!=rangelast(0,7)) goto gen_chargen_sprite::@1 to 8
Simplifying expression containing zero gen_chargen_sprite::sprite#3 in [216] gen_chargen_sprite::sprite#3[0] = gen_chargen_sprite::s_gen#1
Successful SSA optimization PassNSimplifyExpressionWithZero
Removing unused block main::@return
Successful SSA optimization Pass2EliminateUnusedBlocks
Eliminating unused constant progress_cursor#13
Eliminating unused constant progress_idx#14
Successful SSA optimization PassNEliminateUnusedVars
Removing unused procedure __start
Removing unused procedure block __start
Removing unused procedure block __start::__init1
Removing unused procedure block __start::@1
Removing unused procedure block __start::@2
Removing unused procedure block __start::@return
Successful SSA optimization PassNEliminateEmptyStart
Adding number conversion cast (unumber) $28 in [58] if(init::i#1!=$28) goto init::@1
Adding number conversion cast (unumber) 7 in [102] if(anim::j#1!=7) goto anim::@4
Adding number conversion cast (unumber) 7 in [127] if(place_sprites::j#1!=7) goto place_sprites::@1
Adding number conversion cast (unumber) 7 in [135] if(gen_sprites::i#1!=7) goto gen_sprites::@1
Adding number conversion cast (unumber) 3 in [155] if(gen_chargen_sprite::b#1!=3) goto gen_chargen_sprite::@4
Adding number conversion cast (unumber) 8 in [162] if(gen_chargen_sprite::x#1!=8) goto gen_chargen_sprite::@2
Adding number conversion cast (unumber) 8 in [165] if(gen_chargen_sprite::y#1!=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 (char) $28
Finalized unsigned number type (char) 7
Finalized unsigned number type (char) 7
Finalized unsigned number type (char) 7
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) 8
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inlining Noop Cast [13] setMEMtoFAC::prepareMEM1_mem#0 = (unsigned int)setMEMtoFAC::mem#5 keeping setMEMtoFAC::mem#5
Inlining Noop Cast [21] addMEMtoFAC::prepareMEM1_mem#0 = (unsigned int)addMEMtoFAC::mem#2 keeping addMEMtoFAC::mem#2
Inlining Noop Cast [31] divMEMbyFAC::prepareMEM1_mem#0 = (unsigned int)divMEMbyFAC::mem#2 keeping divMEMbyFAC::mem#2
Inlining Noop Cast [39] mulFACbyMEM::prepareMEM1_mem#0 = (unsigned int)mulFACbyMEM::mem#2 keeping mulFACbyMEM::mem#2
Successful SSA optimization Pass2NopCastInlining
Rewriting multiplication to use shift [87] anim::$7 = anim::x_msb#2 * 2
Rewriting multiplication to use shift [138] gen_chargen_sprite::$0 = gen_chargen_sprite::$14 * 8
Rewriting multiplication to use shift [149] gen_chargen_sprite::$5 = gen_chargen_sprite::s_gen#3 * 2
Rewriting multiplication to use shift [160] gen_chargen_sprite::bits#1 = gen_chargen_sprite::bits#2 * 2
Successful SSA optimization Pass2MultiplyToShiftRewriting
Inlining constant with var siblings setFAC::w#2
Inlining constant with var siblings setMEMtoFAC::mem#0
Inlining constant with var siblings setMEMtoFAC::mem#1
Inlining constant with var siblings setMEMtoFAC::mem#2
Inlining constant with var siblings setMEMtoFAC::mem#3
Inlining constant with var siblings setMEMtoFAC::mem#4
Inlining constant with var siblings addMEMtoFAC::mem#0
Inlining constant with var siblings addMEMtoFAC::mem#1
Inlining constant with var siblings divMEMbyFAC::mem#0
Inlining constant with var siblings divMEMbyFAC::mem#1
Inlining constant with var siblings mulFACbyMEM::mem#0
Inlining constant with var siblings mulFACbyMEM::mem#1
Inlining constant with var siblings init::i#0
Inlining constant with var siblings clear_screen::sc#0
Inlining constant with var siblings progress_init::line#0
Inlining constant with var siblings progress_init::line#1
Inlining constant with var siblings anim::j2#0
Inlining constant with var siblings anim::x_msb#0
Inlining constant with var siblings anim::j#0
Inlining constant with var siblings place_sprites::spr_id#0
Inlining constant with var siblings place_sprites::spr_x#0
Inlining constant with var siblings place_sprites::j2#0
Inlining constant with var siblings place_sprites::col#0
Inlining constant with var siblings place_sprites::j#0
Inlining constant with var siblings gen_sprites::spr#0
Inlining constant with var siblings gen_sprites::i#0
Inlining constant with var siblings gen_chargen_sprite::y#0
Inlining constant with var siblings gen_chargen_sprite::s_gen#0
Inlining constant with var siblings gen_chargen_sprite::s_gen_cnt#0
Inlining constant with var siblings gen_chargen_sprite::x#0
Inlining constant with var siblings gen_chargen_sprite::c#0
Inlining constant with var siblings gen_chargen_sprite::b#0
Inlining constant with var siblings gen_chargen_sprite::c#1
Inlining constant with var siblings gen_chargen_sprite::s_gen#2
Inlining constant with var siblings gen_chargen_sprite::s_gen_cnt#2
Inlining constant with var siblings gen_sintab::sintab#0
Inlining constant with var siblings gen_sintab::length#0
Inlining constant with var siblings gen_sintab::min#0
Inlining constant with var siblings gen_sintab::max#0
Inlining constant with var siblings gen_sintab::sintab#1
Inlining constant with var siblings gen_sintab::length#1
Inlining constant with var siblings gen_sintab::min#1
Inlining constant with var siblings gen_sintab::max#1
Inlining constant with var siblings gen_sintab::i#0
Inlining constant with var siblings progress_idx#24
Inlining constant with var siblings progress_idx#10
Inlining constant with var siblings sin_idx_x#3
Inlining constant with var siblings sin_idx_y#3
Inlining constant with var siblings sin_idx_x#18
Inlining constant with var siblings sin_idx_y#19
Constant inlined setFAC::w#2 = 2
Constant inlined place_sprites::j#0 = 0
Constant inlined gen_sintab::length#1 = sinlen_y
Constant inlined progress_idx#24 = 0
Constant inlined gen_chargen_sprite::c#0 = 0
Constant inlined place_sprites::spr_id#0 = (char)(unsigned int)sprites/$40
Constant inlined divMEMbyFAC::mem#1 = gen_sintab::f_i
Constant inlined divMEMbyFAC::mem#0 = gen_sintab::f_amp
Constant inlined setMEMtoFAC::mem#3 = gen_sintab::f_min
Constant inlined setMEMtoFAC::mem#2 = gen_sintab::f_amp
Constant inlined setMEMtoFAC::mem#1 = gen_sintab::f_amp
Constant inlined setMEMtoFAC::mem#0 = gen_sintab::f_min
Constant inlined gen_chargen_sprite::c#1 = 1
Constant inlined setMEMtoFAC::mem#4 = gen_sintab::f_i
Constant inlined addMEMtoFAC::mem#0 = gen_sintab::f_min
Constant inlined addMEMtoFAC::mem#1 = gen_sintab::f_min
Constant inlined gen_sprites::spr#0 = sprites
Constant inlined clear_screen::sc#0 = SCREEN
Constant inlined gen_chargen_sprite::x#0 = 0
Constant inlined sin_idx_y#19 = 0
Constant inlined gen_sintab::sintab#0 = sintab_x
Constant inlined place_sprites::j2#0 = 0
Constant inlined gen_sintab::sintab#1 = sintab_y
Constant inlined gen_sintab::length#0 = sinlen_x
Constant inlined gen_sintab::max#0 = $ff
Constant inlined gen_sintab::max#1 = $d0
Constant inlined mulFACbyMEM::mem#0 = gen_sintab::f_2pi
Constant inlined mulFACbyMEM::mem#1 = gen_sintab::f_amp
Constant inlined gen_sintab::min#1 = $32
Constant inlined init::i#0 = 0
Constant inlined gen_sintab::min#0 = 0
Constant inlined progress_init::line#0 = SCREEN
Constant inlined gen_chargen_sprite::s_gen_cnt#2 = 0
Constant inlined sin_idx_x#18 = 0
Constant inlined gen_chargen_sprite::s_gen_cnt#0 = 0
Constant inlined progress_init::line#1 = SCREEN+$28
Constant inlined anim::j#0 = 0
Constant inlined gen_chargen_sprite::b#0 = 0
Constant inlined sin_idx_x#3 = 0
Constant inlined gen_sintab::i#0 = 0
Constant inlined gen_chargen_sprite::s_gen#2 = 0
Constant inlined place_sprites::spr_x#0 = $3c
Constant inlined gen_chargen_sprite::s_gen#0 = 0
Constant inlined anim::x_msb#0 = 0
Constant inlined gen_sprites::i#0 = 0
Constant inlined progress_idx#10 = 0
Constant inlined place_sprites::col#0 = 5
Constant inlined gen_chargen_sprite::y#0 = 0
Constant inlined sin_idx_y#3 = 0
Constant inlined anim::j2#0 = $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 init::i#2 = init::$8 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values addMEMtoFAC::mem#2 gen_sintab::f_min
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [20] addMEMtoFAC::prepareMEM1_$0 = byte0  (unsigned int)gen_sintab::f_min
Constant right-side identified [22] addMEMtoFAC::prepareMEM1_$1 = byte1  (unsigned int)gen_sintab::f_min
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant addMEMtoFAC::prepareMEM1_$0 = byte0 (unsigned int)gen_sintab::f_min
Constant addMEMtoFAC::prepareMEM1_$1 = byte1 (unsigned int)gen_sintab::f_min
Successful SSA optimization Pass2ConstantIdentification
Constant inlined addMEMtoFAC::prepareMEM1_$0 = byte0 (unsigned int)gen_sintab::f_min
Constant inlined addMEMtoFAC::prepareMEM1_$1 = byte1 (unsigned int)gen_sintab::f_min
Successful SSA optimization Pass2ConstantInlining
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) $a
Finalized unsigned number type (char) $10
Finalized unsigned number type (char) $dd
Finalized unsigned number type (char) $dd
Finalized unsigned number type (char) $c5
Finalized unsigned number type (char) $c5
Finalized unsigned number type (char) 7
Finalized unsigned number type (char) 5
Successful SSA optimization PassNFinalizeNumberTypeConversions
Simplifying constant integer cast 7^5
Successful SSA optimization PassNCastSimplification
Added new block during phi lifting main::@5(between main::@1 and main::@1)
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::@2(between place_sprites::@1 and place_sprites::@1)
Added new block during phi lifting gen_sprites::@3(between gen_sprites::@2 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 main
Adding NOP phi() at start of main::@3
Adding NOP phi() at start of main::@2
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 anim::@10
Adding NOP phi() at start of anim::@3
Adding NOP phi() at start of clear_screen
Adding NOP phi() at start of gen_sprites
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::@14
Adding NOP phi() at start of gen_sintab::@15
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 gen_sintab::@21
Adding NOP phi() at start of gen_chargen_sprite::@10
Adding NOP phi() at start of addMEMtoFAC
CALL GRAPH
Calls in [main] to init:1 anim:6 
Calls in [init] to clear_screen:12 place_sprites:20 gen_sprites:22 progress_init:24 gen_sintab:26 progress_init:28 gen_sintab:30 clear_screen:32 
Calls in [gen_sprites] to gen_chargen_sprite:114 
Calls in [gen_sintab] to setFAC:127 setARGtoFAC:129 setFAC:132 setMEMtoFAC:134 subFACfromARG:136 setMEMtoFAC:138 setFAC:140 divMEMbyFAC:142 setMEMtoFAC:144 addMEMtoFAC:146 setMEMtoFAC:148 setFAC:155 mulFACbyMEM:157 setMEMtoFAC:159 setFAC:162 divMEMbyFAC:164 sinFAC:166 mulFACbyMEM:168 addMEMtoFAC:170 getFAC:172 progress_inc:176 

Created 49 initial phi equivalence classes
Coalesced [7] sin_idx_x#29 = sin_idx_x#12
Coalesced [8] sin_idx_y#29 = sin_idx_y#12
Coalesced (already) [9] sin_idx_x#28 = sin_idx_x#15
Coalesced (already) [10] sin_idx_y#28 = sin_idx_y#15
Coalesced [35] init::i#3 = init::i#1
Coalesced [39] anim::xidx#8 = anim::xidx#0
Coalesced [40] anim::yidx#8 = anim::yidx#0
Coalesced [52] anim::xidx#11 = anim::xidx#2
Coalesced [57] anim::yidx#11 = anim::yidx#2
Coalesced [73] sin_idx_y#30 = sin_idx_y#2
Coalesced [74] sin_idx_x#30 = sin_idx_x#2
Coalesced [75] anim::xidx#9 = anim::xidx#5
Coalesced [76] anim::x_msb#8 = anim::x_msb#1
Coalesced [77] anim::j2#7 = anim::j2#1
Coalesced [78] anim::yidx#9 = anim::yidx#6
Coalesced [79] anim::j#7 = anim::j#1
Coalesced [80] anim::yidx#10 = anim::yidx#1
Coalesced [81] anim::xidx#10 = anim::xidx#1
Coalesced [88] clear_screen::sc#4 = clear_screen::sc#1
Coalesced [105] place_sprites::spr_id#3 = place_sprites::spr_id#1
Coalesced [106] place_sprites::j#3 = place_sprites::j#1
Coalesced [107] place_sprites::spr_x#3 = place_sprites::spr_x#1
Coalesced [108] place_sprites::j2#4 = place_sprites::j2#2
Coalesced [109] place_sprites::col#3 = place_sprites::col#1
Coalesced [119] gen_sprites::i#4 = gen_sprites::i#1
Coalesced [120] gen_sprites::spr#4 = gen_sprites::spr#1
Coalesced [126] setFAC::prepareMEM1_mem#2 = setFAC::w#0
Coalesced [131] setFAC::prepareMEM1_mem#5 = setFAC::w#1
Coalesced [149] progress_cursor#69 = progress_cursor#23
Coalesced [154] setFAC::prepareMEM1_mem#4 = setFAC::w#3
Coalesced [161] setFAC::prepareMEM1_mem#3 = setFAC::w#4
Coalesced [178] gen_sintab::i#14 = gen_sintab::i#1
Coalesced [179] progress_idx#68 = progress_idx#11
Coalesced [180] progress_cursor#70 = progress_cursor#10
Coalesced [186] gen_chargen_sprite::sprite#13 = gen_chargen_sprite::sprite#0
Coalesced [189] gen_chargen_sprite::bits#9 = gen_chargen_sprite::bits#0
Coalesced [190] gen_chargen_sprite::sprite#15 = gen_chargen_sprite::sprite#11
Coalesced [196] gen_chargen_sprite::s_gen#11 = gen_chargen_sprite::s_gen#5
Coalesced [197] gen_chargen_sprite::s_gen_cnt#10 = gen_chargen_sprite::s_gen_cnt#4
Coalesced [198] gen_chargen_sprite::sprite#17 = gen_chargen_sprite::sprite#10
Coalesced [208] gen_chargen_sprite::sprite#20 = gen_chargen_sprite::sprite#1
Coalesced [221] gen_chargen_sprite::y#11 = gen_chargen_sprite::y#1
Coalesced [222] gen_chargen_sprite::sprite#14 = gen_chargen_sprite::sprite#2
Coalesced [223] gen_chargen_sprite::bits#10 = gen_chargen_sprite::bits#1
Coalesced [224] gen_chargen_sprite::s_gen#10 = gen_chargen_sprite::s_gen#6
Coalesced [225] gen_chargen_sprite::s_gen_cnt#9 = gen_chargen_sprite::s_gen_cnt#5
Coalesced [226] gen_chargen_sprite::sprite#16 = gen_chargen_sprite::sprite#4
Coalesced [227] gen_chargen_sprite::x#9 = gen_chargen_sprite::x#1
Coalesced (already) [228] gen_chargen_sprite::s_gen#12 = gen_chargen_sprite::s_gen#6
Coalesced (already) [229] gen_chargen_sprite::s_gen_cnt#11 = gen_chargen_sprite::s_gen_cnt#5
Coalesced [230] gen_chargen_sprite::b#5 = gen_chargen_sprite::b#1
Coalesced (already) [231] gen_chargen_sprite::sprite#18 = gen_chargen_sprite::sprite#4
Coalesced [232] gen_chargen_sprite::s_gen#13 = gen_chargen_sprite::s_gen#1
Coalesced [233] gen_chargen_sprite::s_gen_cnt#12 = gen_chargen_sprite::s_gen_cnt#1
Coalesced (already) [234] gen_chargen_sprite::sprite#19 = gen_chargen_sprite::sprite#3
Coalesced [281] progress_cursor#68 = progress_cursor#9
Coalesced [285] progress_idx#67 = progress_idx#9
Coalesced (already) [286] progress_cursor#67 = progress_cursor#12
Coalesced down to 36 phi equivalence classes
Culled Empty Block label main::@3
Culled Empty Block label main::@4
Culled Empty Block label main::@5
Culled Empty Block label init::@3
Culled Empty Block label init::@10
Culled Empty Block label init::@11
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 place_sprites::@2
Culled Empty Block label gen_sprites::@3
Culled Empty Block label gen_sintab::@13
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 progress_inc::@3
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_sintab::@14 to gen_sintab::@13
Renumbering block gen_sintab::@15 to gen_sintab::@14
Renumbering block gen_sintab::@16 to gen_sintab::@15
Renumbering block gen_sintab::@17 to gen_sintab::@16
Renumbering block gen_sintab::@18 to gen_sintab::@17
Renumbering block gen_sintab::@19 to gen_sintab::@18
Renumbering block gen_sintab::@20 to gen_sintab::@19
Renumbering block gen_sintab::@21 to gen_sintab::@20
Renumbering block gen_sintab::@22 to gen_sintab::@21
Renumbering block gen_sintab::@23 to gen_sintab::@22
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@2
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 anim::@9
Adding NOP phi() at start of anim::@10
Adding NOP phi() at start of clear_screen
Adding NOP phi() at start of gen_sprites
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 gen_chargen_sprite::@10
Adding NOP phi() at start of addMEMtoFAC

FINAL CONTROL FLOW GRAPH

void main()
main: scope:[main]  from
  [0] phi()
  [1] call init
  to:main::@1
main::@1: scope:[main]  from main main::@1 main::@2
  [2] sin_idx_y#15 = phi( main::@1/sin_idx_y#15, main/0, main::@2/sin_idx_y#12 )
  [2] sin_idx_x#15 = phi( main::@1/sin_idx_x#15, main/0, main::@2/sin_idx_x#12 )
  [3] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$ff) goto main::@1
  to:main::@2
main::@2: scope:[main]  from main::@1
  [4] phi()
  [5] call anim
  to:main::@1

void init()
init: scope:[init]  from main
  [6] phi()
  [7] call clear_screen
  to:init::@1
init::@1: scope:[init]  from init init::@1
  [8] init::i#2 = phi( init::@1/init::i#1, init/0 )
  [9] COLS[init::i#2] = 0
  [10] (COLS+$28)[init::i#2] = $b
  [11] init::i#1 = ++ init::i#2
  [12] if(init::i#1!=$28) goto init::@1
  to:init::@2
init::@2: scope:[init]  from init::@1
  [13] phi()
  [14] call place_sprites
  to:init::@3
init::@3: scope:[init]  from init::@2
  [15] phi()
  [16] call gen_sprites
  to:init::@4
init::@4: scope:[init]  from init::@3
  [17] phi()
  [18] call progress_init
  to:init::@5
init::@5: scope:[init]  from init::@4
  [19] phi()
  [20] call gen_sintab
  to:init::@6
init::@6: scope:[init]  from init::@5
  [21] phi()
  [22] call progress_init
  to:init::@7
init::@7: scope:[init]  from init::@6
  [23] phi()
  [24] call gen_sintab
  to:init::@8
init::@8: scope:[init]  from init::@7
  [25] phi()
  [26] call clear_screen
  to:init::@return
init::@return: scope:[init]  from init::@8
  [27] return 
  to:@return

void anim()
anim: scope:[anim]  from main::@2
  [28] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = ++ *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR)
  [29] anim::xidx#0 = sin_idx_x#15
  [30] anim::yidx#0 = sin_idx_y#15
  to:anim::@3
anim::@3: scope:[anim]  from anim anim::@5
  [31] anim::j#2 = phi( anim/0, anim::@5/anim::j#1 )
  [31] anim::yidx#3 = phi( anim/anim::yidx#0, anim::@5/anim::yidx#6 )
  [31] anim::j2#2 = phi( anim/$c, anim::@5/anim::j2#1 )
  [31] anim::x_msb#2 = phi( anim/0, anim::@5/anim::x_msb#1 )
  [31] anim::xidx#3 = phi( anim/anim::xidx#0, anim::@5/anim::xidx#5 )
  [32] anim::x#0 = $1e + sintab_x[anim::xidx#3]
  [33] anim::$7 = anim::x_msb#2 << 1
  [34] anim::$8 = byte1  anim::x#0
  [35] anim::x_msb#1 = anim::$7 | anim::$8
  [36] anim::$10 = byte0  anim::x#0
  [37] SPRITES_XPOS[anim::j2#2] = anim::$10
  [38] SPRITES_YPOS[anim::j2#2] = sintab_y[anim::yidx#3]
  [39] anim::xidx#1 = anim::xidx#3 + $a
  [40] if(anim::xidx#1<sinlen_x) goto anim::@4
  to:anim::@6
anim::@6: scope:[anim]  from anim::@3
  [41] anim::xidx#2 = anim::xidx#1 - sinlen_x
  to:anim::@4
anim::@4: scope:[anim]  from anim::@3 anim::@6
  [42] anim::xidx#5 = phi( anim::@3/anim::xidx#1, anim::@6/anim::xidx#2 )
  [43] anim::yidx#1 = anim::yidx#3 + 8
  [44] if(anim::yidx#1<sinlen_y) goto anim::@5
  to:anim::@7
anim::@7: scope:[anim]  from anim::@4
  [45] anim::yidx#2 = anim::yidx#1 - sinlen_y
  to:anim::@5
anim::@5: scope:[anim]  from anim::@4 anim::@7
  [46] anim::yidx#6 = phi( anim::@4/anim::yidx#1, anim::@7/anim::yidx#2 )
  [47] anim::j2#1 = anim::j2#2 - 2
  [48] anim::j#1 = ++ anim::j#2
  [49] if(anim::j#1!=7) goto anim::@3
  to:anim::@8
anim::@8: scope:[anim]  from anim::@5
  [50] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB) = anim::x_msb#1
  [51] sin_idx_x#2 = ++ sin_idx_x#15
  [52] if(sin_idx_x#2<sinlen_x) goto anim::@9
  to:anim::@1
anim::@9: scope:[anim]  from anim::@8
  [53] phi()
  to:anim::@1
anim::@1: scope:[anim]  from anim::@8 anim::@9
  [54] sin_idx_x#12 = phi( anim::@8/0, anim::@9/sin_idx_x#2 )
  [55] sin_idx_y#2 = ++ sin_idx_y#15
  [56] if(sin_idx_y#2<sinlen_y) goto anim::@10
  to:anim::@2
anim::@10: scope:[anim]  from anim::@1
  [57] phi()
  to:anim::@2
anim::@2: scope:[anim]  from anim::@1 anim::@10
  [58] sin_idx_y#12 = phi( anim::@10/sin_idx_y#2, anim::@1/0 )
  [59] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = -- *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR)
  to:anim::@return
anim::@return: scope:[anim]  from anim::@2
  [60] return 
  to:@return

void clear_screen()
clear_screen: scope:[clear_screen]  from init init::@8
  [61] phi()
  to:clear_screen::@1
clear_screen::@1: scope:[clear_screen]  from clear_screen clear_screen::@2
  [62] clear_screen::sc#2 = phi( clear_screen/SCREEN, clear_screen::@2/clear_screen::sc#1 )
  [63] if(clear_screen::sc#2<SCREEN+$3e8) goto clear_screen::@2
  to:clear_screen::@return
clear_screen::@return: scope:[clear_screen]  from clear_screen::@1
  [64] return 
  to:@return
clear_screen::@2: scope:[clear_screen]  from clear_screen::@1
  [65] *clear_screen::sc#2 = ' '
  [66] clear_screen::sc#1 = ++ clear_screen::sc#2
  to:clear_screen::@1

void place_sprites()
place_sprites: scope:[place_sprites]  from init::@2
  [67] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE) = $7f
  [68] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X) = $7f
  [69] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_Y) = $7f
  to:place_sprites::@1
place_sprites::@1: scope:[place_sprites]  from place_sprites place_sprites::@1
  [70] place_sprites::col#2 = phi( place_sprites/5, place_sprites::@1/place_sprites::col#1 )
  [70] place_sprites::j2#3 = phi( place_sprites/0, place_sprites::@1/place_sprites::j2#2 )
  [70] place_sprites::spr_x#2 = phi( place_sprites/$3c, place_sprites::@1/place_sprites::spr_x#1 )
  [70] place_sprites::j#2 = phi( place_sprites/0, place_sprites::@1/place_sprites::j#1 )
  [70] place_sprites::spr_id#2 = phi( place_sprites/(char)(unsigned int)sprites/$40, place_sprites::@1/place_sprites::spr_id#1 )
  [71] place_sprites::sprites_ptr[place_sprites::j#2] = place_sprites::spr_id#2
  [72] place_sprites::spr_id#1 = ++ place_sprites::spr_id#2
  [73] SPRITES_XPOS[place_sprites::j2#3] = place_sprites::spr_x#2
  [74] SPRITES_YPOS[place_sprites::j2#3] = $50
  [75] SPRITES_COLOR[place_sprites::j#2] = place_sprites::col#2
  [76] place_sprites::spr_x#1 = place_sprites::spr_x#2 + $20
  [77] place_sprites::col#1 = place_sprites::col#2 ^ 7^5
  [78] place_sprites::j2#1 = ++ place_sprites::j2#3
  [79] place_sprites::j2#2 = ++ place_sprites::j2#1
  [80] place_sprites::j#1 = ++ place_sprites::j#2
  [81] if(place_sprites::j#1!=7) goto place_sprites::@1
  to:place_sprites::@return
place_sprites::@return: scope:[place_sprites]  from place_sprites::@1
  [82] return 
  to:@return

void gen_sprites()
gen_sprites: scope:[gen_sprites]  from init::@3
  [83] phi()
  to:gen_sprites::@1
gen_sprites::@1: scope:[gen_sprites]  from gen_sprites gen_sprites::@2
  [84] gen_sprites::spr#2 = phi( gen_sprites/sprites, gen_sprites::@2/gen_sprites::spr#1 )
  [84] gen_sprites::i#2 = phi( gen_sprites/0, gen_sprites::@2/gen_sprites::i#1 )
  [85] gen_chargen_sprite::ch#0 = gen_sprites::cml[gen_sprites::i#2]
  [86] gen_chargen_sprite::sprite#0 = gen_sprites::spr#2
  [87] call gen_chargen_sprite
  to:gen_sprites::@2
gen_sprites::@2: scope:[gen_sprites]  from gen_sprites::@1
  [88] gen_sprites::spr#1 = gen_sprites::spr#2 + $40
  [89] gen_sprites::i#1 = ++ gen_sprites::i#2
  [90] if(gen_sprites::i#1!=7) goto gen_sprites::@1
  to:gen_sprites::@return
gen_sprites::@return: scope:[gen_sprites]  from gen_sprites::@2
  [91] return 
  to:@return

void progress_init(char *line)
progress_init: scope:[progress_init]  from init::@4 init::@6
  [92] progress_init::line#2 = phi( init::@4/SCREEN, init::@6/SCREEN+$28 )
  [93] progress_cursor#23 = progress_init::line#2
  to:progress_init::@return
progress_init::@return: scope:[progress_init]  from progress_init
  [94] return 
  to:@return

void gen_sintab(char *sintab , char length , char min , char max)
gen_sintab: scope:[gen_sintab]  from init::@5 init::@7
  [95] gen_sintab::sintab#13 = phi( init::@5/sintab_x, init::@7/sintab_y )
  [95] gen_sintab::length#10 = phi( init::@5/sinlen_x, init::@7/sinlen_y )
  [95] gen_sintab::min#2 = phi( init::@5/0, init::@7/$32 )
  [95] gen_sintab::max#2 = phi( init::@5/$ff, init::@7/$d0 )
  [96] setFAC::w#0 = (unsigned int)gen_sintab::max#2
  [97] call setFAC
  to:gen_sintab::@3
gen_sintab::@3: scope:[gen_sintab]  from gen_sintab
  [98] phi()
  [99] call setARGtoFAC
  to:gen_sintab::@4
gen_sintab::@4: scope:[gen_sintab]  from gen_sintab::@3
  [100] setFAC::w#1 = (unsigned int)gen_sintab::min#2
  [101] call setFAC
  to:gen_sintab::@5
gen_sintab::@5: scope:[gen_sintab]  from gen_sintab::@4
  [102] phi()
  [103] call setMEMtoFAC
  to:gen_sintab::@6
gen_sintab::@6: scope:[gen_sintab]  from gen_sintab::@5
  [104] phi()
  [105] call subFACfromARG
  to:gen_sintab::@7
gen_sintab::@7: scope:[gen_sintab]  from gen_sintab::@6
  [106] phi()
  [107] call setMEMtoFAC
  to:gen_sintab::@8
gen_sintab::@8: scope:[gen_sintab]  from gen_sintab::@7
  [108] phi()
  [109] call setFAC
  to:gen_sintab::@9
gen_sintab::@9: scope:[gen_sintab]  from gen_sintab::@8
  [110] phi()
  [111] call divMEMbyFAC
  to:gen_sintab::@10
gen_sintab::@10: scope:[gen_sintab]  from gen_sintab::@9
  [112] phi()
  [113] call setMEMtoFAC
  to:gen_sintab::@11
gen_sintab::@11: scope:[gen_sintab]  from gen_sintab::@10
  [114] phi()
  [115] call addMEMtoFAC
  to:gen_sintab::@12
gen_sintab::@12: scope:[gen_sintab]  from gen_sintab::@11
  [116] phi()
  [117] call setMEMtoFAC
  to:gen_sintab::@1
gen_sintab::@1: scope:[gen_sintab]  from gen_sintab::@12 gen_sintab::@22
  [118] progress_cursor#12 = phi( gen_sintab::@12/progress_cursor#23, gen_sintab::@22/progress_cursor#10 )
  [118] progress_idx#13 = phi( gen_sintab::@12/0, gen_sintab::@22/progress_idx#11 )
  [118] gen_sintab::i#10 = phi( gen_sintab::@12/0, gen_sintab::@22/gen_sintab::i#1 )
  [119] if(gen_sintab::i#10<gen_sintab::length#10) goto gen_sintab::@2
  to:gen_sintab::@return
gen_sintab::@return: scope:[gen_sintab]  from gen_sintab::@1
  [120] return 
  to:@return
gen_sintab::@2: scope:[gen_sintab]  from gen_sintab::@1
  [121] setFAC::w#3 = (unsigned int)gen_sintab::i#10
  [122] call setFAC
  to:gen_sintab::@13
gen_sintab::@13: scope:[gen_sintab]  from gen_sintab::@2
  [123] phi()
  [124] call mulFACbyMEM
  to:gen_sintab::@14
gen_sintab::@14: scope:[gen_sintab]  from gen_sintab::@13
  [125] phi()
  [126] call setMEMtoFAC
  to:gen_sintab::@15
gen_sintab::@15: scope:[gen_sintab]  from gen_sintab::@14
  [127] setFAC::w#4 = (unsigned int)gen_sintab::length#10
  [128] call setFAC
  to:gen_sintab::@16
gen_sintab::@16: scope:[gen_sintab]  from gen_sintab::@15
  [129] phi()
  [130] call divMEMbyFAC
  to:gen_sintab::@17
gen_sintab::@17: scope:[gen_sintab]  from gen_sintab::@16
  [131] phi()
  [132] call sinFAC
  to:gen_sintab::@18
gen_sintab::@18: scope:[gen_sintab]  from gen_sintab::@17
  [133] phi()
  [134] call mulFACbyMEM
  to:gen_sintab::@19
gen_sintab::@19: scope:[gen_sintab]  from gen_sintab::@18
  [135] phi()
  [136] call addMEMtoFAC
  to:gen_sintab::@20
gen_sintab::@20: scope:[gen_sintab]  from gen_sintab::@19
  [137] phi()
  [138] call getFAC
  [139] getFAC::return#2 = getFAC::return#0
  to:gen_sintab::@21
gen_sintab::@21: scope:[gen_sintab]  from gen_sintab::@20
  [140] gen_sintab::$20 = getFAC::return#2
  [141] gen_sintab::sintab#13[gen_sintab::i#10] = (char)gen_sintab::$20
  [142] call progress_inc
  to:gen_sintab::@22
gen_sintab::@22: scope:[gen_sintab]  from gen_sintab::@21
  [143] gen_sintab::i#1 = ++ gen_sintab::i#10
  to:gen_sintab::@1

void gen_chargen_sprite(char ch , char *sprite)
gen_chargen_sprite: scope:[gen_chargen_sprite]  from gen_sprites::@1
  [144] gen_chargen_sprite::$14 = (unsigned int)gen_chargen_sprite::ch#0
  [145] gen_chargen_sprite::$0 = gen_chargen_sprite::$14 << 3
  [146] gen_chargen_sprite::chargen#0 = CHARGEN + gen_chargen_sprite::$0
  asm { sei  }
  [148] *PROCPORT = $32
  to:gen_chargen_sprite::@1
gen_chargen_sprite::@1: scope:[gen_chargen_sprite]  from gen_chargen_sprite gen_chargen_sprite::@8
  [149] gen_chargen_sprite::sprite#11 = phi( gen_chargen_sprite/gen_chargen_sprite::sprite#0, gen_chargen_sprite::@8/gen_chargen_sprite::sprite#2 )
  [149] gen_chargen_sprite::y#2 = phi( gen_chargen_sprite/0, gen_chargen_sprite::@8/gen_chargen_sprite::y#1 )
  [150] gen_chargen_sprite::bits#0 = gen_chargen_sprite::chargen#0[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
  [151] gen_chargen_sprite::x#6 = phi( gen_chargen_sprite::@1/0, gen_chargen_sprite::@7/gen_chargen_sprite::x#1 )
  [151] gen_chargen_sprite::sprite#10 = phi( gen_chargen_sprite::@1/gen_chargen_sprite::sprite#11, gen_chargen_sprite::@7/gen_chargen_sprite::sprite#4 )
  [151] gen_chargen_sprite::s_gen_cnt#4 = phi( gen_chargen_sprite::@1/0, gen_chargen_sprite::@7/gen_chargen_sprite::s_gen_cnt#5 )
  [151] gen_chargen_sprite::s_gen#5 = phi( gen_chargen_sprite::@1/0, gen_chargen_sprite::@7/gen_chargen_sprite::s_gen#6 )
  [151] gen_chargen_sprite::bits#2 = phi( gen_chargen_sprite::@1/gen_chargen_sprite::bits#0, gen_chargen_sprite::@7/gen_chargen_sprite::bits#1 )
  [152] gen_chargen_sprite::$2 = gen_chargen_sprite::bits#2 & $80
  [153] if(gen_chargen_sprite::$2==0) goto gen_chargen_sprite::@3
  to:gen_chargen_sprite::@10
gen_chargen_sprite::@10: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@2
  [154] phi()
  to:gen_chargen_sprite::@3
gen_chargen_sprite::@3: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@10 gen_chargen_sprite::@2
  [155] gen_chargen_sprite::c#3 = phi( gen_chargen_sprite::@10/1, gen_chargen_sprite::@2/0 )
  to:gen_chargen_sprite::@4
gen_chargen_sprite::@4: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@3 gen_chargen_sprite::@5
  [156] gen_chargen_sprite::sprite#3 = phi( gen_chargen_sprite::@3/gen_chargen_sprite::sprite#10, gen_chargen_sprite::@5/gen_chargen_sprite::sprite#4 )
  [156] gen_chargen_sprite::b#2 = phi( gen_chargen_sprite::@3/0, gen_chargen_sprite::@5/gen_chargen_sprite::b#1 )
  [156] gen_chargen_sprite::s_gen_cnt#3 = phi( gen_chargen_sprite::@3/gen_chargen_sprite::s_gen_cnt#4, gen_chargen_sprite::@5/gen_chargen_sprite::s_gen_cnt#5 )
  [156] gen_chargen_sprite::s_gen#3 = phi( gen_chargen_sprite::@3/gen_chargen_sprite::s_gen#5, gen_chargen_sprite::@5/gen_chargen_sprite::s_gen#6 )
  [157] gen_chargen_sprite::$5 = gen_chargen_sprite::s_gen#3 << 1
  [158] gen_chargen_sprite::s_gen#1 = gen_chargen_sprite::$5 | gen_chargen_sprite::c#3
  [159] gen_chargen_sprite::s_gen_cnt#1 = ++ gen_chargen_sprite::s_gen_cnt#3
  [160] if(gen_chargen_sprite::s_gen_cnt#1!=8) goto gen_chargen_sprite::@5
  to:gen_chargen_sprite::@6
gen_chargen_sprite::@6: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@4
  [161] *gen_chargen_sprite::sprite#3 = gen_chargen_sprite::s_gen#1
  [162] gen_chargen_sprite::sprite#3[3] = gen_chargen_sprite::s_gen#1
  [163] gen_chargen_sprite::sprite#3[6] = gen_chargen_sprite::s_gen#1
  [164] gen_chargen_sprite::sprite#1 = ++ 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
  [165] gen_chargen_sprite::sprite#4 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::sprite#3, gen_chargen_sprite::@6/gen_chargen_sprite::sprite#1 )
  [165] gen_chargen_sprite::s_gen_cnt#5 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::s_gen_cnt#1, gen_chargen_sprite::@6/0 )
  [165] gen_chargen_sprite::s_gen#6 = phi( gen_chargen_sprite::@4/gen_chargen_sprite::s_gen#1, gen_chargen_sprite::@6/0 )
  [166] gen_chargen_sprite::b#1 = ++ gen_chargen_sprite::b#2
  [167] if(gen_chargen_sprite::b#1!=3) goto gen_chargen_sprite::@4
  to:gen_chargen_sprite::@7
gen_chargen_sprite::@7: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@5
  [168] gen_chargen_sprite::bits#1 = gen_chargen_sprite::bits#2 << 1
  [169] gen_chargen_sprite::x#1 = ++ gen_chargen_sprite::x#6
  [170] if(gen_chargen_sprite::x#1!=8) goto gen_chargen_sprite::@2
  to:gen_chargen_sprite::@8
gen_chargen_sprite::@8: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@7
  [171] gen_chargen_sprite::sprite#2 = gen_chargen_sprite::sprite#4 + 6
  [172] gen_chargen_sprite::y#1 = ++ gen_chargen_sprite::y#2
  [173] if(gen_chargen_sprite::y#1!=8) goto gen_chargen_sprite::@1
  to:gen_chargen_sprite::@9
gen_chargen_sprite::@9: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@8
  [174] *PROCPORT = $37
  asm { cli  }
  to:gen_chargen_sprite::@return
gen_chargen_sprite::@return: scope:[gen_chargen_sprite]  from gen_chargen_sprite::@9
  [176] return 
  to:@return

void setFAC(unsigned int w)
setFAC: scope:[setFAC]  from gen_sintab gen_sintab::@15 gen_sintab::@2 gen_sintab::@4 gen_sintab::@8
  [177] setFAC::prepareMEM1_mem#0 = phi( gen_sintab/setFAC::w#0, gen_sintab::@15/setFAC::w#4, gen_sintab::@2/setFAC::w#3, gen_sintab::@4/setFAC::w#1, gen_sintab::@8/2 )
  to:setFAC::prepareMEM1
setFAC::prepareMEM1: scope:[setFAC]  from setFAC
  [178] setFAC::prepareMEM1_$0 = byte0  setFAC::prepareMEM1_mem#0
  [179] *memLo = setFAC::prepareMEM1_$0
  [180] setFAC::prepareMEM1_$1 = byte1  setFAC::prepareMEM1_mem#0
  [181] *memHi = 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
  [183] return 
  to:@return

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

void setMEMtoFAC(char *mem)
setMEMtoFAC: scope:[setMEMtoFAC]  from gen_sintab::@10 gen_sintab::@12 gen_sintab::@14 gen_sintab::@5 gen_sintab::@7
  [186] setMEMtoFAC::mem#5 = phi( gen_sintab::@10/gen_sintab::f_amp, gen_sintab::@12/gen_sintab::f_min, gen_sintab::@14/gen_sintab::f_i, gen_sintab::@5/gen_sintab::f_min, gen_sintab::@7/gen_sintab::f_amp )
  to:setMEMtoFAC::prepareMEM1
setMEMtoFAC::prepareMEM1: scope:[setMEMtoFAC]  from setMEMtoFAC
  [187] setMEMtoFAC::prepareMEM1_$0 = byte0  (unsigned int)setMEMtoFAC::mem#5
  [188] *memLo = setMEMtoFAC::prepareMEM1_$0
  [189] setMEMtoFAC::prepareMEM1_$1 = byte1  (unsigned int)setMEMtoFAC::mem#5
  [190] *memHi = 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
  [192] return 
  to:@return

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

void divMEMbyFAC(char *mem)
divMEMbyFAC: scope:[divMEMbyFAC]  from gen_sintab::@16 gen_sintab::@9
  [195] divMEMbyFAC::mem#2 = phi( gen_sintab::@16/gen_sintab::f_i, gen_sintab::@9/gen_sintab::f_amp )
  to:divMEMbyFAC::prepareMEM1
divMEMbyFAC::prepareMEM1: scope:[divMEMbyFAC]  from divMEMbyFAC
  [196] divMEMbyFAC::prepareMEM1_$0 = byte0  (unsigned int)divMEMbyFAC::mem#2
  [197] *memLo = divMEMbyFAC::prepareMEM1_$0
  [198] divMEMbyFAC::prepareMEM1_$1 = byte1  (unsigned int)divMEMbyFAC::mem#2
  [199] *memHi = 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
  [201] return 
  to:@return

void addMEMtoFAC(char *mem)
addMEMtoFAC: scope:[addMEMtoFAC]  from gen_sintab::@11 gen_sintab::@19
  [202] phi()
  to:addMEMtoFAC::prepareMEM1
addMEMtoFAC::prepareMEM1: scope:[addMEMtoFAC]  from addMEMtoFAC
  [203] *memLo = byte0 (unsigned int)gen_sintab::f_min
  [204] *memHi = byte1 (unsigned int)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
  [206] return 
  to:@return

void mulFACbyMEM(char *mem)
mulFACbyMEM: scope:[mulFACbyMEM]  from gen_sintab::@13 gen_sintab::@18
  [207] mulFACbyMEM::mem#2 = phi( gen_sintab::@13/gen_sintab::f_2pi, gen_sintab::@18/gen_sintab::f_amp )
  to:mulFACbyMEM::prepareMEM1
mulFACbyMEM::prepareMEM1: scope:[mulFACbyMEM]  from mulFACbyMEM
  [208] mulFACbyMEM::prepareMEM1_$0 = byte0  (unsigned int)mulFACbyMEM::mem#2
  [209] *memLo = mulFACbyMEM::prepareMEM1_$0
  [210] mulFACbyMEM::prepareMEM1_$1 = byte1  (unsigned int)mulFACbyMEM::mem#2
  [211] *memHi = 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
  [213] return 
  to:@return

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

unsigned int getFAC()
getFAC: scope:[getFAC]  from gen_sintab::@20
  asm { jsr$b1aa stymemLo stamemHi  }
  [217] getFAC::return#0 = *memHi w= *memLo
  to:getFAC::@return
getFAC::@return: scope:[getFAC]  from getFAC
  [218] return 
  to:@return

void progress_inc()
progress_inc: scope:[progress_inc]  from gen_sintab::@21
  [219] progress_idx#9 = ++ progress_idx#13
  [220] if(progress_idx#9!=8) goto progress_inc::@1
  to:progress_inc::@2
progress_inc::@2: scope:[progress_inc]  from progress_inc
  [221] *progress_cursor#12 = *(progress_inc::progress_chars+8)
  [222] progress_cursor#9 = ++ progress_cursor#12
  to:progress_inc::@1
progress_inc::@1: scope:[progress_inc]  from progress_inc progress_inc::@2
  [223] progress_cursor#10 = phi( progress_inc/progress_cursor#12, progress_inc::@2/progress_cursor#9 )
  [223] progress_idx#11 = phi( progress_inc/progress_idx#9, progress_inc::@2/0 )
  [224] *progress_cursor#10 = progress_inc::progress_chars[progress_idx#11]
  to:progress_inc::@return
progress_inc::@return: scope:[progress_inc]  from progress_inc::@1
  [225] return 
  to:@return


VARIABLE REGISTER WEIGHTS
void addMEMtoFAC(char *mem)
char *addMEMtoFAC::mem
unsigned int addMEMtoFAC::prepareMEM1_mem
void anim()
char anim::$10 // 20002.0
char anim::$7 // 10001.0
char anim::$8 // 20002.0
char anim::j
char anim::j#1 // 15001.5
char anim::j#2 // 1176.5882352941176
char anim::j2
char anim::j2#1 // 6667.333333333333
char anim::j2#2 // 2500.25
unsigned int anim::x
unsigned int anim::x#0 // 7500.75
char anim::x_msb
char anim::x_msb#1 // 1340.2
char anim::x_msb#2 // 10001.0
char anim::xidx
char anim::xidx#0 // 101.0
char anim::xidx#1 // 20002.0
char anim::xidx#2 // 20002.0
char anim::xidx#3 // 3763.0
char anim::xidx#5 // 3750.375
char anim::yidx
char anim::yidx#0 // 202.0
char anim::yidx#1 // 20002.0
char anim::yidx#2 // 20002.0
char anim::yidx#3 // 2508.6666666666665
char anim::yidx#6 // 7500.75
void clear_screen()
char *clear_screen::sc
char *clear_screen::sc#1 // 2002.0
char *clear_screen::sc#2 // 1334.6666666666667
void divMEMbyFAC(char *mem)
char *divMEMbyFAC::mem
char *divMEMbyFAC::mem#2
char divMEMbyFAC::prepareMEM1_$0 // 20002.0
char divMEMbyFAC::prepareMEM1_$1 // 20002.0
unsigned int divMEMbyFAC::prepareMEM1_mem
void gen_chargen_sprite(char ch , char *sprite)
unsigned int gen_chargen_sprite::$0 // 20002.0
unsigned int gen_chargen_sprite::$14 // 20002.0
char gen_chargen_sprite::$2 // 2.0000002E7
char gen_chargen_sprite::$5 // 2.00000002E8
char gen_chargen_sprite::b
char gen_chargen_sprite::b#1 // 1.500000015E8
char gen_chargen_sprite::b#2 // 2.00000002E7
char gen_chargen_sprite::bits
char gen_chargen_sprite::bits#0 // 2000002.0
char gen_chargen_sprite::bits#1 // 6666667.333333333
char gen_chargen_sprite::bits#2 // 1823529.6470588236
char gen_chargen_sprite::c
char gen_chargen_sprite::c#3 // 7692307.769230769
char gen_chargen_sprite::ch
char gen_chargen_sprite::ch#0 // 500.5
char *gen_chargen_sprite::chargen
char *gen_chargen_sprite::chargen#0 // 36071.5
char gen_chargen_sprite::s_gen
char gen_chargen_sprite::s_gen#1 // 1.00000001E8
char gen_chargen_sprite::s_gen#3 // 2.10000003E8
char gen_chargen_sprite::s_gen#5 // 4000000.4
char gen_chargen_sprite::s_gen#6 // 3.50000005E7
char gen_chargen_sprite::s_gen_cnt
char gen_chargen_sprite::s_gen_cnt#1 // 1.500000015E8
char gen_chargen_sprite::s_gen_cnt#3 // 7.0000001E7
char gen_chargen_sprite::s_gen_cnt#4 // 4000000.4
char gen_chargen_sprite::s_gen_cnt#5 // 3.50000005E7
char *gen_chargen_sprite::sprite
char *gen_chargen_sprite::sprite#0 // 1833.6666666666665
char *gen_chargen_sprite::sprite#1 // 2.00000002E8
char *gen_chargen_sprite::sprite#10 // 4200000.6
char *gen_chargen_sprite::sprite#11 // 1005001.5
char *gen_chargen_sprite::sprite#2 // 666667.3333333334
char *gen_chargen_sprite::sprite#3 // 7.6250000875E7
char *gen_chargen_sprite::sprite#4 // 5.183333416666667E7
char gen_chargen_sprite::x
char gen_chargen_sprite::x#1 // 1.50000015E7
char gen_chargen_sprite::x#6 // 1111111.2222222222
char gen_chargen_sprite::y
char gen_chargen_sprite::y#1 // 1500001.5
char gen_chargen_sprite::y#2 // 130434.91304347827
void gen_sintab(char *sintab , char length , char min , char max)
unsigned int gen_sintab::$20 // 1001.0
char gen_sintab::i
char gen_sintab::i#1 // 2002.0
char gen_sintab::i#10 // 166.83333333333334
char gen_sintab::length
char gen_sintab::length#10 // 20.854166666666668
char gen_sintab::max
char gen_sintab::max#2
char gen_sintab::min
char gen_sintab::min#2
char *gen_sintab::sintab
char *gen_sintab::sintab#13 // 20.854166666666668
void gen_sprites()
char gen_sprites::i
char gen_sprites::i#1 // 1501.5
char gen_sprites::i#2 // 600.5999999999999
char *gen_sprites::spr
char *gen_sprites::spr#1 // 667.3333333333334
char *gen_sprites::spr#2 // 750.75
unsigned int getFAC()
unsigned int getFAC::return
unsigned int getFAC::return#0 // 3667.333333333333
unsigned int getFAC::return#2 // 2002.0
unsigned int getFAC::w
void init()
char init::i
char init::i#1 // 151.5
char init::i#2 // 134.66666666666666
void main()
void mulFACbyMEM(char *mem)
char *mulFACbyMEM::mem
char *mulFACbyMEM::mem#2
char mulFACbyMEM::prepareMEM1_$0 // 20002.0
char mulFACbyMEM::prepareMEM1_$1 // 20002.0
unsigned int mulFACbyMEM::prepareMEM1_mem
void place_sprites()
char place_sprites::col
char place_sprites::col#1 // 400.4
char place_sprites::col#2 // 429.0
char place_sprites::j
char place_sprites::j#1 // 1501.5
char place_sprites::j#2 // 400.4
char place_sprites::j2
char place_sprites::j2#1 // 2002.0
char place_sprites::j2#2 // 667.3333333333334
char place_sprites::j2#3 // 500.5
char place_sprites::spr_id
char place_sprites::spr_id#1 // 200.2
char place_sprites::spr_id#2 // 1501.5
char place_sprites::spr_x
char place_sprites::spr_x#1 // 333.6666666666667
char place_sprites::spr_x#2 // 500.5
char *progress_cursor
char *progress_cursor#10 // 6200.8
char *progress_cursor#12 // 1196.3461538461538
char *progress_cursor#23 // 6.9655172413793105
char *progress_cursor#9 // 20002.0
char progress_idx
char progress_idx#11 // 4200.6
char progress_idx#13 // 478.3478260869565
char progress_idx#9 // 15001.5
void progress_inc()
void progress_init(char *line)
char *progress_init::line
char *progress_init::line#2 // 101.0
void setARGtoFAC()
void setFAC(unsigned int w)
char setFAC::prepareMEM1_$0 // 20002.0
char setFAC::prepareMEM1_$1 // 20002.0
unsigned int setFAC::prepareMEM1_mem
unsigned int setFAC::prepareMEM1_mem#0 // 7402.0
unsigned int setFAC::w
unsigned int setFAC::w#0 // 202.0
unsigned int setFAC::w#1 // 202.0
unsigned int setFAC::w#3 // 2002.0
unsigned int setFAC::w#4 // 2002.0
void setMEMtoFAC(char *mem)
char *setMEMtoFAC::mem
char *setMEMtoFAC::mem#5
char setMEMtoFAC::prepareMEM1_$0 // 20002.0
char setMEMtoFAC::prepareMEM1_$1 // 20002.0
unsigned int setMEMtoFAC::prepareMEM1_mem
void sinFAC()
char sin_idx_x
char sin_idx_x#12 // 14.0
char sin_idx_x#15 // 15.961538461538462
char sin_idx_x#2 // 101.0
char sin_idx_y
char sin_idx_y#12 // 28.0
char sin_idx_y#15 // 13.833333333333334
char sin_idx_y#2 // 101.0
void subFACfromARG()

Initial phi equivalence classes
[ sin_idx_x#15 sin_idx_x#12 sin_idx_x#2 ]
[ sin_idx_y#15 sin_idx_y#12 sin_idx_y#2 ]
[ init::i#2 init::i#1 ]
[ 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 ]
[ clear_screen::sc#2 clear_screen::sc#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 ]
[ gen_sprites::i#2 gen_sprites::i#1 ]
[ gen_sprites::spr#2 gen_sprites::spr#1 ]
[ progress_init::line#2 ]
[ 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#13 progress_idx#11 progress_idx#9 ]
[ progress_cursor#12 progress_cursor#23 progress_cursor#10 progress_cursor#9 ]
[ 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 ]
[ setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#4 setFAC::w#3 setFAC::w#1 ]
[ setMEMtoFAC::mem#5 ]
[ divMEMbyFAC::mem#2 ]
[ mulFACbyMEM::mem#2 ]
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 place_sprites::j2#1 to live range equivalence class [ place_sprites::j2#1 ]
Added variable gen_chargen_sprite::ch#0 to live range equivalence class [ gen_chargen_sprite::ch#0 ]
Added variable getFAC::return#2 to live range equivalence class [ getFAC::return#2 ]
Added variable gen_sintab::$20 to live range equivalence class [ gen_sintab::$20 ]
Added variable gen_chargen_sprite::$14 to live range equivalence class [ gen_chargen_sprite::$14 ]
Added variable gen_chargen_sprite::$0 to live range equivalence class [ gen_chargen_sprite::$0 ]
Added variable gen_chargen_sprite::chargen#0 to live range equivalence class [ gen_chargen_sprite::chargen#0 ]
Added variable gen_chargen_sprite::$2 to live range equivalence class [ gen_chargen_sprite::$2 ]
Added variable gen_chargen_sprite::$5 to live range equivalence class [ gen_chargen_sprite::$5 ]
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 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 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 getFAC::return#0 to live range equivalence class [ getFAC::return#0 ]
Complete equivalence classes
[ sin_idx_x#15 sin_idx_x#12 sin_idx_x#2 ]
[ sin_idx_y#15 sin_idx_y#12 sin_idx_y#2 ]
[ init::i#2 init::i#1 ]
[ 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 ]
[ clear_screen::sc#2 clear_screen::sc#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 ]
[ gen_sprites::i#2 gen_sprites::i#1 ]
[ gen_sprites::spr#2 gen_sprites::spr#1 ]
[ progress_init::line#2 ]
[ 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#13 progress_idx#11 progress_idx#9 ]
[ progress_cursor#12 progress_cursor#23 progress_cursor#10 progress_cursor#9 ]
[ 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 ]
[ setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#4 setFAC::w#3 setFAC::w#1 ]
[ setMEMtoFAC::mem#5 ]
[ divMEMbyFAC::mem#2 ]
[ mulFACbyMEM::mem#2 ]
[ anim::x#0 ]
[ anim::$7 ]
[ anim::$8 ]
[ anim::$10 ]
[ place_sprites::j2#1 ]
[ gen_chargen_sprite::ch#0 ]
[ getFAC::return#2 ]
[ gen_sintab::$20 ]
[ gen_chargen_sprite::$14 ]
[ gen_chargen_sprite::$0 ]
[ gen_chargen_sprite::chargen#0 ]
[ gen_chargen_sprite::$2 ]
[ gen_chargen_sprite::$5 ]
[ setFAC::prepareMEM1_$0 ]
[ setFAC::prepareMEM1_$1 ]
[ setMEMtoFAC::prepareMEM1_$0 ]
[ setMEMtoFAC::prepareMEM1_$1 ]
[ divMEMbyFAC::prepareMEM1_$0 ]
[ divMEMbyFAC::prepareMEM1_$1 ]
[ mulFACbyMEM::prepareMEM1_$0 ]
[ mulFACbyMEM::prepareMEM1_$1 ]
[ getFAC::return#0 ]
Allocated zp[1]:2 [ sin_idx_x#15 sin_idx_x#12 sin_idx_x#2 ]
Allocated zp[1]:3 [ sin_idx_y#15 sin_idx_y#12 sin_idx_y#2 ]
Allocated zp[1]:4 [ init::i#2 init::i#1 ]
Allocated zp[1]:5 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ]
Allocated zp[1]:6 [ anim::x_msb#2 anim::x_msb#1 ]
Allocated zp[1]:8 [ anim::j2#2 anim::j2#1 ]
Allocated zp[1]:9 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ]
Allocated zp[1]:10 [ anim::j#2 anim::j#1 ]
Allocated zp[2]:11 [ clear_screen::sc#2 clear_screen::sc#1 ]
Allocated zp[1]:15 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ]
Allocated zp[1]:16 [ place_sprites::j#2 place_sprites::j#1 ]
Allocated zp[1]:17 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ]
Allocated zp[1]:19 [ place_sprites::j2#3 place_sprites::j2#2 ]
Allocated zp[1]:20 [ place_sprites::col#2 place_sprites::col#1 ]
Allocated zp[1]:21 [ gen_sprites::i#2 gen_sprites::i#1 ]
Allocated zp[2]:22 [ gen_sprites::spr#2 gen_sprites::spr#1 ]
Allocated zp[2]:24 [ progress_init::line#2 ]
Allocated zp[1]:26 [ gen_sintab::max#2 ]
Allocated zp[1]:27 [ gen_sintab::min#2 ]
Allocated zp[1]:28 [ gen_sintab::length#10 ]
Allocated zp[2]:29 [ gen_sintab::sintab#13 ]
Allocated zp[1]:31 [ gen_sintab::i#10 gen_sintab::i#1 ]
Allocated zp[1]:32 [ progress_idx#13 progress_idx#11 progress_idx#9 ]
Allocated zp[2]:33 [ progress_cursor#12 progress_cursor#23 progress_cursor#10 progress_cursor#9 ]
Allocated zp[1]:35 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ]
Allocated zp[1]:36 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ]
Allocated zp[1]:37 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ]
Allocated zp[1]:38 [ gen_chargen_sprite::c#3 ]
Allocated zp[1]:39 [ 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]:40 [ 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]:41 [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ]
Allocated zp[2]:42 [ 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[2]:44 [ setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#4 setFAC::w#3 setFAC::w#1 ]
Allocated zp[2]:46 [ setMEMtoFAC::mem#5 ]
Allocated zp[2]:48 [ divMEMbyFAC::mem#2 ]
Allocated zp[2]:50 [ mulFACbyMEM::mem#2 ]
Allocated zp[2]:52 [ anim::x#0 ]
Allocated zp[1]:54 [ anim::$7 ]
Allocated zp[1]:55 [ anim::$8 ]
Allocated zp[1]:56 [ anim::$10 ]
Allocated zp[1]:57 [ place_sprites::j2#1 ]
Allocated zp[1]:58 [ gen_chargen_sprite::ch#0 ]
Allocated zp[2]:59 [ getFAC::return#2 ]
Allocated zp[2]:61 [ gen_sintab::$20 ]
Allocated zp[2]:63 [ gen_chargen_sprite::$14 ]
Allocated zp[2]:65 [ gen_chargen_sprite::$0 ]
Allocated zp[2]:67 [ gen_chargen_sprite::chargen#0 ]
Allocated zp[1]:69 [ gen_chargen_sprite::$2 ]
Allocated zp[1]:70 [ gen_chargen_sprite::$5 ]
Allocated zp[1]:71 [ setFAC::prepareMEM1_$0 ]
Allocated zp[1]:72 [ setFAC::prepareMEM1_$1 ]
Allocated zp[1]:73 [ setMEMtoFAC::prepareMEM1_$0 ]
Allocated zp[1]:74 [ setMEMtoFAC::prepareMEM1_$1 ]
Allocated zp[1]:75 [ divMEMbyFAC::prepareMEM1_$0 ]
Allocated zp[1]:76 [ divMEMbyFAC::prepareMEM1_$1 ]
Allocated zp[1]:77 [ mulFACbyMEM::prepareMEM1_$0 ]
Allocated zp[1]:78 [ mulFACbyMEM::prepareMEM1_$1 ]
Allocated zp[2]:79 [ getFAC::return#0 ]
REGISTER UPLIFT POTENTIAL REGISTERS
Equivalence Class zp[1]:55 [ anim::$8 ] has ALU potential.
Statement [3] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$ff) goto main::@1 [ sin_idx_x#15 sin_idx_y#15 ] (  [ sin_idx_x#15 sin_idx_y#15 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:2 [ sin_idx_x#15 sin_idx_x#12 sin_idx_x#2 ]
Removing always clobbered register reg byte a as potential for zp[1]:3 [ sin_idx_y#15 sin_idx_y#12 sin_idx_y#2 ]
Statement [9] COLS[init::i#2] = 0 [ init::i#2 ] ( init:1 [ init::i#2 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:4 [ init::i#2 init::i#1 ]
Statement [10] (COLS+$28)[init::i#2] = $b [ init::i#2 ] ( init:1 [ init::i#2 ] { }  ) always clobbers reg byte a 
Statement [32] anim::x#0 = $1e + sintab_x[anim::xidx#3] [ sin_idx_x#15 sin_idx_y#15 anim::xidx#3 anim::x_msb#2 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 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]:5 [ 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]:6 [ anim::x_msb#2 anim::x_msb#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:8 [ anim::j2#2 anim::j2#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:9 [ 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]:10 [ anim::j#2 anim::j#1 ]
Statement [33] anim::$7 = anim::x_msb#2 << 1 [ sin_idx_x#15 sin_idx_y#15 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] { }  ) always clobbers reg byte a 
Statement [38] SPRITES_YPOS[anim::j2#2] = sintab_y[anim::yidx#3] [ sin_idx_x#15 sin_idx_y#15 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] { }  ) always clobbers reg byte a 
Statement [39] anim::xidx#1 = anim::xidx#3 + $a [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] { }  ) always clobbers reg byte a 
Statement [41] anim::xidx#2 = anim::xidx#1 - sinlen_x [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] { }  ) always clobbers reg byte a 
Statement [43] anim::yidx#1 = anim::yidx#3 + 8 [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] { }  ) always clobbers reg byte a 
Statement [45] anim::yidx#2 = anim::yidx#1 - sinlen_y [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] { }  ) always clobbers reg byte a 
Statement [63] if(clear_screen::sc#2<SCREEN+$3e8) goto clear_screen::@2 [ clear_screen::sc#2 ] ( init:1::clear_screen:7 [ clear_screen::sc#2 ] { }  init:1::clear_screen:26 [ clear_screen::sc#2 ] { }  ) always clobbers reg byte a 
Statement [65] *clear_screen::sc#2 = ' ' [ clear_screen::sc#2 ] ( init:1::clear_screen:7 [ clear_screen::sc#2 ] { }  init:1::clear_screen:26 [ clear_screen::sc#2 ] { }  ) always clobbers reg byte a reg byte y 
Statement [67] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE) = $7f [ ] ( init:1::place_sprites:14 [ ] { }  ) always clobbers reg byte a 
Statement [68] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X) = $7f [ ] ( init:1::place_sprites:14 [ ] { }  ) always clobbers reg byte a 
Statement [69] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_Y) = $7f [ ] ( init:1::place_sprites:14 [ ] { }  ) always clobbers reg byte a 
Statement [74] SPRITES_YPOS[place_sprites::j2#3] = $50 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( init:1::place_sprites:14 [ 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]:16 [ place_sprites::j#2 place_sprites::j#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:17 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:19 [ place_sprites::j2#3 place_sprites::j2#2 ]
Removing always clobbered register reg byte a as potential for zp[1]:20 [ place_sprites::col#2 place_sprites::col#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:15 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ]
Statement [75] SPRITES_COLOR[place_sprites::j#2] = 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 ] ( init:1::place_sprites:14 [ 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 [76] place_sprites::spr_x#1 = place_sprites::spr_x#2 + $20 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( init:1::place_sprites:14 [ 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 [77] place_sprites::col#1 = place_sprites::col#2 ^ 7^5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( init:1::place_sprites:14 [ 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 [86] gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( init:1::gen_sprites:16 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:21 [ gen_sprites::i#2 gen_sprites::i#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:58 [ gen_chargen_sprite::ch#0 ]
Statement [88] gen_sprites::spr#1 = gen_sprites::spr#2 + $40 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( init:1::gen_sprites:16 [ gen_sprites::i#2 gen_sprites::spr#1 ] { }  ) always clobbers reg byte a 
Statement [93] progress_cursor#23 = progress_init::line#2 [ progress_cursor#23 ] ( init:1::progress_init:18 [ progress_cursor#23 ] { }  init:1::progress_init:22 [ progress_cursor#23 ] { }  ) always clobbers reg byte a 
Statement [96] setFAC::w#0 = (unsigned int)gen_sintab::max#2 [ progress_cursor#23 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 ] ( init:1::gen_sintab:20 [ progress_cursor#23 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#0 } }  init:1::gen_sintab:24 [ progress_cursor#23 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#0 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:27 [ gen_sintab::min#2 ]
Removing always clobbered register reg byte a as potential for zp[1]:28 [ gen_sintab::length#10 ]
Statement [100] setFAC::w#1 = (unsigned int)gen_sintab::min#2 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 ] ( init:1::gen_sintab:20 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#1 } }  init:1::gen_sintab:24 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#1 } }  ) always clobbers reg byte a 
Statement [121] setFAC::w#3 = (unsigned int)gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 setFAC::w#3 ] ( init:1::gen_sintab:20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 setFAC::w#3 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#3 } }  init:1::gen_sintab:24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 setFAC::w#3 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#3 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:31 [ gen_sintab::i#10 gen_sintab::i#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:32 [ progress_idx#13 progress_idx#11 progress_idx#9 ]
Statement [127] setFAC::w#4 = (unsigned int)gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 setFAC::w#4 ] ( init:1::gen_sintab:20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 setFAC::w#4 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#4 } }  init:1::gen_sintab:24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 setFAC::w#4 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#4 } }  ) always clobbers reg byte a 
Statement [139] getFAC::return#2 = getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 getFAC::return#2 ] ( init:1::gen_sintab:20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 getFAC::return#2 ] { { getFAC::return#0 = getFAC::return#2 } }  init:1::gen_sintab:24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 getFAC::return#2 ] { { getFAC::return#0 = getFAC::return#2 } }  ) always clobbers reg byte a 
Statement [140] gen_sintab::$20 = getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 gen_sintab::$20 ] ( init:1::gen_sintab:20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 gen_sintab::$20 ] { }  init:1::gen_sintab:24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 gen_sintab::$20 ] { }  ) always clobbers reg byte a 
Statement [141] gen_sintab::sintab#13[gen_sintab::i#10] = (char)gen_sintab::$20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] ( init:1::gen_sintab:20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  init:1::gen_sintab:24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  ) always clobbers reg byte a 
Statement [144] gen_chargen_sprite::$14 = (unsigned int)gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$14 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$14 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [145] gen_chargen_sprite::$0 = gen_chargen_sprite::$14 << 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [146] gen_chargen_sprite::chargen#0 = CHARGEN + gen_chargen_sprite::$0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [148] *PROCPORT = $32 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [150] gen_chargen_sprite::bits#0 = gen_chargen_sprite::chargen#0[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 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ 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 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:35 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ]
Statement [157] gen_chargen_sprite::$5 = gen_chargen_sprite::s_gen#3 << 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::$5 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ 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::$5 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:36 [ 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]:37 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:38 [ gen_chargen_sprite::c#3 ]
Removing always clobbered register reg byte a as potential for zp[1]:40 [ 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]:41 [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ]
Statement [161] *gen_chargen_sprite::sprite#3 = 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 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ 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 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:21 [ gen_sprites::i#2 gen_sprites::i#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:35 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:36 [ 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]:37 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:38 [ gen_chargen_sprite::c#3 ]
Removing always clobbered register reg byte y as potential for zp[1]:41 [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:39 [ 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 [162] gen_chargen_sprite::sprite#3[3] = 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 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ 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 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte y 
Statement [163] gen_chargen_sprite::sprite#3[6] = 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 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ 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::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte y 
Statement [171] gen_chargen_sprite::sprite#2 = gen_chargen_sprite::sprite#4 + 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [174] *PROCPORT = $37 [ ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ gen_sprites::i#2 gen_sprites::spr#2 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) 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]:27 [ gen_sintab::min#2 ]
Removing always clobbered register reg byte y as potential for zp[1]:27 [ gen_sintab::min#2 ]
Removing always clobbered register reg byte x as potential for zp[1]:28 [ gen_sintab::length#10 ]
Removing always clobbered register reg byte y as potential for zp[1]:28 [ gen_sintab::length#10 ]
Removing always clobbered register reg byte x as potential for zp[1]:31 [ gen_sintab::i#10 gen_sintab::i#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:31 [ gen_sintab::i#10 gen_sintab::i#1 ]
Removing always clobbered register reg byte x as potential for zp[1]:32 [ progress_idx#13 progress_idx#11 progress_idx#9 ]
Removing always clobbered register reg byte y as potential for zp[1]:32 [ progress_idx#13 progress_idx#11 progress_idx#9 ]
Statement asm { jsr$bc0f  } always clobbers reg byte a reg byte x 
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 { ldamemLo ldymemHi jsr$bb0f  } always clobbers reg byte a reg byte x reg byte y 
Statement [203] *memLo = byte0 (unsigned int)gen_sintab::f_min [ ] ( init:1::gen_sintab:20::addMEMtoFAC:115 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 ] { }  init:1::gen_sintab:24::addMEMtoFAC:115 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 ] { }  init:1::gen_sintab:20::addMEMtoFAC:136 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  init:1::gen_sintab:24::addMEMtoFAC:136 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  ) always clobbers reg byte a 
Statement [204] *memHi = byte1 (unsigned int)gen_sintab::f_min [ ] ( init:1::gen_sintab:20::addMEMtoFAC:115 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 ] { }  init:1::gen_sintab:24::addMEMtoFAC:115 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 ] { }  init:1::gen_sintab:20::addMEMtoFAC:136 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  init:1::gen_sintab:24::addMEMtoFAC:136 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  ) always clobbers reg byte a 
Statement asm { ldamemLo ldymemHi jsr$b867  } always clobbers reg byte a reg byte x reg byte y 
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 asm { jsr$b1aa stymemLo stamemHi  } always clobbers reg byte a reg byte x reg byte y 
Statement [217] getFAC::return#0 = *memHi w= *memLo [ getFAC::return#0 ] ( init:1::gen_sintab:20::getFAC:138 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 getFAC::return#0 ] { { getFAC::return#0 = getFAC::return#2 } }  init:1::gen_sintab:24::getFAC:138 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 getFAC::return#0 ] { { getFAC::return#0 = getFAC::return#2 } }  ) always clobbers reg byte a 
Statement [220] if(progress_idx#9!=8) goto progress_inc::@1 [ progress_cursor#12 progress_idx#9 ] ( init:1::gen_sintab:20::progress_inc:142 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#12 progress_idx#9 ] { }  init:1::gen_sintab:24::progress_inc:142 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#12 progress_idx#9 ] { }  ) always clobbers reg byte a 
Statement [221] *progress_cursor#12 = *(progress_inc::progress_chars+8) [ progress_cursor#12 ] ( init:1::gen_sintab:20::progress_inc:142 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#12 ] { }  init:1::gen_sintab:24::progress_inc:142 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#12 ] { }  ) always clobbers reg byte a reg byte y 
Statement [224] *progress_cursor#10 = progress_inc::progress_chars[progress_idx#11] [ progress_idx#11 progress_cursor#10 ] ( init:1::gen_sintab:20::progress_inc:142 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#11 progress_cursor#10 ] { }  init:1::gen_sintab:24::progress_inc:142 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#11 progress_cursor#10 ] { }  ) always clobbers reg byte a reg byte y 
Statement [3] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$ff) goto main::@1 [ sin_idx_x#15 sin_idx_y#15 ] (  [ sin_idx_x#15 sin_idx_y#15 ] { }  ) always clobbers reg byte a 
Statement [9] COLS[init::i#2] = 0 [ init::i#2 ] ( init:1 [ init::i#2 ] { }  ) always clobbers reg byte a 
Statement [10] (COLS+$28)[init::i#2] = $b [ init::i#2 ] ( init:1 [ init::i#2 ] { }  ) always clobbers reg byte a 
Statement [32] anim::x#0 = $1e + sintab_x[anim::xidx#3] [ sin_idx_x#15 sin_idx_y#15 anim::xidx#3 anim::x_msb#2 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 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 [33] anim::$7 = anim::x_msb#2 << 1 [ sin_idx_x#15 sin_idx_y#15 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] { }  ) always clobbers reg byte a 
Statement [38] SPRITES_YPOS[anim::j2#2] = sintab_y[anim::yidx#3] [ sin_idx_x#15 sin_idx_y#15 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] { }  ) always clobbers reg byte a 
Statement [39] anim::xidx#1 = anim::xidx#3 + $a [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] { }  ) always clobbers reg byte a 
Statement [41] anim::xidx#2 = anim::xidx#1 - sinlen_x [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] { }  ) always clobbers reg byte a 
Statement [43] anim::yidx#1 = anim::yidx#3 + 8 [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] { }  ) always clobbers reg byte a 
Statement [45] anim::yidx#2 = anim::yidx#1 - sinlen_y [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] { }  ) always clobbers reg byte a 
Statement [63] if(clear_screen::sc#2<SCREEN+$3e8) goto clear_screen::@2 [ clear_screen::sc#2 ] ( init:1::clear_screen:7 [ clear_screen::sc#2 ] { }  init:1::clear_screen:26 [ clear_screen::sc#2 ] { }  ) always clobbers reg byte a 
Statement [65] *clear_screen::sc#2 = ' ' [ clear_screen::sc#2 ] ( init:1::clear_screen:7 [ clear_screen::sc#2 ] { }  init:1::clear_screen:26 [ clear_screen::sc#2 ] { }  ) always clobbers reg byte a reg byte y 
Statement [67] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE) = $7f [ ] ( init:1::place_sprites:14 [ ] { }  ) always clobbers reg byte a 
Statement [68] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X) = $7f [ ] ( init:1::place_sprites:14 [ ] { }  ) always clobbers reg byte a 
Statement [69] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_Y) = $7f [ ] ( init:1::place_sprites:14 [ ] { }  ) always clobbers reg byte a 
Statement [71] place_sprites::sprites_ptr[place_sprites::j#2] = 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 ] ( init:1::place_sprites:14 [ 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 [73] SPRITES_XPOS[place_sprites::j2#3] = 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 ] ( init:1::place_sprites:14 [ 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 [74] SPRITES_YPOS[place_sprites::j2#3] = $50 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( init:1::place_sprites:14 [ 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 [75] SPRITES_COLOR[place_sprites::j#2] = 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 ] ( init:1::place_sprites:14 [ 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 [76] place_sprites::spr_x#1 = place_sprites::spr_x#2 + $20 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( init:1::place_sprites:14 [ 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 [77] place_sprites::col#1 = place_sprites::col#2 ^ 7^5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( init:1::place_sprites:14 [ 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 [86] gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( init:1::gen_sprites:16 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [88] gen_sprites::spr#1 = gen_sprites::spr#2 + $40 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( init:1::gen_sprites:16 [ gen_sprites::i#2 gen_sprites::spr#1 ] { }  ) always clobbers reg byte a 
Statement [93] progress_cursor#23 = progress_init::line#2 [ progress_cursor#23 ] ( init:1::progress_init:18 [ progress_cursor#23 ] { }  init:1::progress_init:22 [ progress_cursor#23 ] { }  ) always clobbers reg byte a 
Statement [96] setFAC::w#0 = (unsigned int)gen_sintab::max#2 [ progress_cursor#23 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 ] ( init:1::gen_sintab:20 [ progress_cursor#23 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#0 } }  init:1::gen_sintab:24 [ progress_cursor#23 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#0 } }  ) always clobbers reg byte a 
Statement [100] setFAC::w#1 = (unsigned int)gen_sintab::min#2 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 ] ( init:1::gen_sintab:20 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#1 } }  init:1::gen_sintab:24 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#1 } }  ) always clobbers reg byte a 
Statement [119] if(gen_sintab::i#10<gen_sintab::length#10) goto gen_sintab::@2 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] ( init:1::gen_sintab:20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  init:1::gen_sintab:24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  ) always clobbers reg byte a 
Statement [121] setFAC::w#3 = (unsigned int)gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 setFAC::w#3 ] ( init:1::gen_sintab:20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 setFAC::w#3 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#3 } }  init:1::gen_sintab:24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 setFAC::w#3 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#3 } }  ) always clobbers reg byte a 
Statement [127] setFAC::w#4 = (unsigned int)gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 setFAC::w#4 ] ( init:1::gen_sintab:20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 setFAC::w#4 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#4 } }  init:1::gen_sintab:24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 setFAC::w#4 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#4 } }  ) always clobbers reg byte a 
Statement [139] getFAC::return#2 = getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 getFAC::return#2 ] ( init:1::gen_sintab:20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 getFAC::return#2 ] { { getFAC::return#0 = getFAC::return#2 } }  init:1::gen_sintab:24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 getFAC::return#2 ] { { getFAC::return#0 = getFAC::return#2 } }  ) always clobbers reg byte a 
Statement [140] gen_sintab::$20 = getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 gen_sintab::$20 ] ( init:1::gen_sintab:20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 gen_sintab::$20 ] { }  init:1::gen_sintab:24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 gen_sintab::$20 ] { }  ) always clobbers reg byte a 
Statement [141] gen_sintab::sintab#13[gen_sintab::i#10] = (char)gen_sintab::$20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] ( init:1::gen_sintab:20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  init:1::gen_sintab:24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  ) always clobbers reg byte a reg byte y 
Statement [144] gen_chargen_sprite::$14 = (unsigned int)gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$14 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$14 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [145] gen_chargen_sprite::$0 = gen_chargen_sprite::$14 << 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [146] gen_chargen_sprite::chargen#0 = CHARGEN + gen_chargen_sprite::$0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [148] *PROCPORT = $32 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [150] gen_chargen_sprite::bits#0 = gen_chargen_sprite::chargen#0[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 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ 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 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a reg byte y 
Statement [152] gen_chargen_sprite::$2 = gen_chargen_sprite::bits#2 & $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::$2 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ 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::$2 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:39 [ 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 [157] gen_chargen_sprite::$5 = gen_chargen_sprite::s_gen#3 << 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::$5 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ 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::$5 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [161] *gen_chargen_sprite::sprite#3 = 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 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ 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 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a reg byte y 
Statement [162] gen_chargen_sprite::sprite#3[3] = 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 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ 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 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a reg byte y 
Statement [163] gen_chargen_sprite::sprite#3[6] = 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 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ 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::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a reg byte y 
Statement [171] gen_chargen_sprite::sprite#2 = gen_chargen_sprite::sprite#4 + 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [174] *PROCPORT = $37 [ ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ gen_sprites::i#2 gen_sprites::spr#2 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement asm { ldymemLo ldamemHi jsr$b391  } always clobbers reg byte a reg byte x reg byte y 
Statement asm { jsr$bc0f  } always clobbers reg byte a reg byte x 
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 { ldamemLo ldymemHi jsr$bb0f  } always clobbers reg byte a reg byte x reg byte y 
Statement [203] *memLo = byte0 (unsigned int)gen_sintab::f_min [ ] ( init:1::gen_sintab:20::addMEMtoFAC:115 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 ] { }  init:1::gen_sintab:24::addMEMtoFAC:115 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 ] { }  init:1::gen_sintab:20::addMEMtoFAC:136 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  init:1::gen_sintab:24::addMEMtoFAC:136 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  ) always clobbers reg byte a 
Statement [204] *memHi = byte1 (unsigned int)gen_sintab::f_min [ ] ( init:1::gen_sintab:20::addMEMtoFAC:115 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 ] { }  init:1::gen_sintab:24::addMEMtoFAC:115 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 ] { }  init:1::gen_sintab:20::addMEMtoFAC:136 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  init:1::gen_sintab:24::addMEMtoFAC:136 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  ) always clobbers reg byte a 
Statement asm { ldamemLo ldymemHi jsr$b867  } always clobbers reg byte a reg byte x reg byte y 
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 asm { jsr$b1aa stymemLo stamemHi  } always clobbers reg byte a reg byte x reg byte y 
Statement [217] getFAC::return#0 = *memHi w= *memLo [ getFAC::return#0 ] ( init:1::gen_sintab:20::getFAC:138 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 getFAC::return#0 ] { { getFAC::return#0 = getFAC::return#2 } }  init:1::gen_sintab:24::getFAC:138 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 getFAC::return#0 ] { { getFAC::return#0 = getFAC::return#2 } }  ) always clobbers reg byte a 
Statement [220] if(progress_idx#9!=8) goto progress_inc::@1 [ progress_cursor#12 progress_idx#9 ] ( init:1::gen_sintab:20::progress_inc:142 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#12 progress_idx#9 ] { }  init:1::gen_sintab:24::progress_inc:142 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#12 progress_idx#9 ] { }  ) always clobbers reg byte a 
Statement [221] *progress_cursor#12 = *(progress_inc::progress_chars+8) [ progress_cursor#12 ] ( init:1::gen_sintab:20::progress_inc:142 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#12 ] { }  init:1::gen_sintab:24::progress_inc:142 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#12 ] { }  ) always clobbers reg byte a reg byte y 
Statement [224] *progress_cursor#10 = progress_inc::progress_chars[progress_idx#11] [ progress_idx#11 progress_cursor#10 ] ( init:1::gen_sintab:20::progress_inc:142 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#11 progress_cursor#10 ] { }  init:1::gen_sintab:24::progress_inc:142 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#11 progress_cursor#10 ] { }  ) always clobbers reg byte a reg byte y 
Statement [3] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$ff) goto main::@1 [ sin_idx_x#15 sin_idx_y#15 ] (  [ sin_idx_x#15 sin_idx_y#15 ] { }  ) always clobbers reg byte a 
Statement [9] COLS[init::i#2] = 0 [ init::i#2 ] ( init:1 [ init::i#2 ] { }  ) always clobbers reg byte a 
Statement [10] (COLS+$28)[init::i#2] = $b [ init::i#2 ] ( init:1 [ init::i#2 ] { }  ) always clobbers reg byte a 
Statement [32] anim::x#0 = $1e + sintab_x[anim::xidx#3] [ sin_idx_x#15 sin_idx_y#15 anim::xidx#3 anim::x_msb#2 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 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 [33] anim::$7 = anim::x_msb#2 << 1 [ sin_idx_x#15 sin_idx_y#15 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x#0 anim::$7 ] { }  ) always clobbers reg byte a 
Statement [38] SPRITES_YPOS[anim::j2#2] = sintab_y[anim::yidx#3] [ sin_idx_x#15 sin_idx_y#15 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 anim::xidx#3 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 ] { }  ) always clobbers reg byte a 
Statement [39] anim::xidx#1 = anim::xidx#3 + $a [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] { }  ) always clobbers reg byte a 
Statement [41] anim::xidx#2 = anim::xidx#1 - sinlen_x [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] { }  ) always clobbers reg byte a 
Statement [43] anim::yidx#1 = anim::yidx#3 + 8 [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] { }  ) always clobbers reg byte a 
Statement [45] anim::yidx#2 = anim::yidx#1 - sinlen_y [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( anim:5 [ sin_idx_x#15 sin_idx_y#15 anim::j2#2 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] { }  ) always clobbers reg byte a 
Statement [63] if(clear_screen::sc#2<SCREEN+$3e8) goto clear_screen::@2 [ clear_screen::sc#2 ] ( init:1::clear_screen:7 [ clear_screen::sc#2 ] { }  init:1::clear_screen:26 [ clear_screen::sc#2 ] { }  ) always clobbers reg byte a 
Statement [65] *clear_screen::sc#2 = ' ' [ clear_screen::sc#2 ] ( init:1::clear_screen:7 [ clear_screen::sc#2 ] { }  init:1::clear_screen:26 [ clear_screen::sc#2 ] { }  ) always clobbers reg byte a reg byte y 
Statement [67] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE) = $7f [ ] ( init:1::place_sprites:14 [ ] { }  ) always clobbers reg byte a 
Statement [68] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X) = $7f [ ] ( init:1::place_sprites:14 [ ] { }  ) always clobbers reg byte a 
Statement [69] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_Y) = $7f [ ] ( init:1::place_sprites:14 [ ] { }  ) always clobbers reg byte a 
Statement [71] place_sprites::sprites_ptr[place_sprites::j#2] = 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 ] ( init:1::place_sprites:14 [ 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 [73] SPRITES_XPOS[place_sprites::j2#3] = 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 ] ( init:1::place_sprites:14 [ 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 [74] SPRITES_YPOS[place_sprites::j2#3] = $50 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( init:1::place_sprites:14 [ 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 [75] SPRITES_COLOR[place_sprites::j#2] = 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 ] ( init:1::place_sprites:14 [ 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 [76] place_sprites::spr_x#1 = place_sprites::spr_x#2 + $20 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( init:1::place_sprites:14 [ 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 [77] place_sprites::col#1 = place_sprites::col#2 ^ 7^5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( init:1::place_sprites:14 [ 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 [86] gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( init:1::gen_sprites:16 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [88] gen_sprites::spr#1 = gen_sprites::spr#2 + $40 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( init:1::gen_sprites:16 [ gen_sprites::i#2 gen_sprites::spr#1 ] { }  ) always clobbers reg byte a 
Statement [93] progress_cursor#23 = progress_init::line#2 [ progress_cursor#23 ] ( init:1::progress_init:18 [ progress_cursor#23 ] { }  init:1::progress_init:22 [ progress_cursor#23 ] { }  ) always clobbers reg byte a 
Statement [96] setFAC::w#0 = (unsigned int)gen_sintab::max#2 [ progress_cursor#23 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 ] ( init:1::gen_sintab:20 [ progress_cursor#23 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#0 } }  init:1::gen_sintab:24 [ progress_cursor#23 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#0 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#0 } }  ) always clobbers reg byte a 
Statement [100] setFAC::w#1 = (unsigned int)gen_sintab::min#2 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 ] ( init:1::gen_sintab:20 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#1 } }  init:1::gen_sintab:24 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 setFAC::w#1 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#1 } }  ) always clobbers reg byte a 
Statement [119] if(gen_sintab::i#10<gen_sintab::length#10) goto gen_sintab::@2 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] ( init:1::gen_sintab:20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  init:1::gen_sintab:24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  ) always clobbers reg byte a 
Statement [121] setFAC::w#3 = (unsigned int)gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 setFAC::w#3 ] ( init:1::gen_sintab:20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 setFAC::w#3 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#3 } }  init:1::gen_sintab:24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 setFAC::w#3 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#3 } }  ) always clobbers reg byte a 
Statement [127] setFAC::w#4 = (unsigned int)gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 setFAC::w#4 ] ( init:1::gen_sintab:20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 setFAC::w#4 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#4 } }  init:1::gen_sintab:24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 setFAC::w#4 ] { { setFAC::prepareMEM1_mem#0 = setFAC::w#4 } }  ) always clobbers reg byte a 
Statement [139] getFAC::return#2 = getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 getFAC::return#2 ] ( init:1::gen_sintab:20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 getFAC::return#2 ] { { getFAC::return#0 = getFAC::return#2 } }  init:1::gen_sintab:24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 getFAC::return#2 ] { { getFAC::return#0 = getFAC::return#2 } }  ) always clobbers reg byte a 
Statement [140] gen_sintab::$20 = getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 gen_sintab::$20 ] ( init:1::gen_sintab:20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 gen_sintab::$20 ] { }  init:1::gen_sintab:24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 gen_sintab::$20 ] { }  ) always clobbers reg byte a 
Statement [141] gen_sintab::sintab#13[gen_sintab::i#10] = (char)gen_sintab::$20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] ( init:1::gen_sintab:20 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  init:1::gen_sintab:24 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  ) always clobbers reg byte a reg byte y 
Statement [144] gen_chargen_sprite::$14 = (unsigned int)gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$14 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$14 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [145] gen_chargen_sprite::$0 = gen_chargen_sprite::$14 << 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [146] gen_chargen_sprite::chargen#0 = CHARGEN + gen_chargen_sprite::$0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [148] *PROCPORT = $32 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [150] gen_chargen_sprite::bits#0 = gen_chargen_sprite::chargen#0[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 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ 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 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a reg byte y 
Statement [152] gen_chargen_sprite::$2 = gen_chargen_sprite::bits#2 & $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::$2 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ 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::$2 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [157] gen_chargen_sprite::$5 = gen_chargen_sprite::s_gen#3 << 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::$5 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ 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::$5 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [161] *gen_chargen_sprite::sprite#3 = 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 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ 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 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a reg byte y 
Statement [162] gen_chargen_sprite::sprite#3[3] = 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 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ 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 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a reg byte y 
Statement [163] gen_chargen_sprite::sprite#3[6] = 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 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ 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::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a reg byte y 
Statement [171] gen_chargen_sprite::sprite#2 = gen_chargen_sprite::sprite#4 + 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement [174] *PROCPORT = $37 [ ] ( init:1::gen_sprites:16::gen_chargen_sprite:87 [ gen_sprites::i#2 gen_sprites::spr#2 ] { { gen_chargen_sprite::sprite#0 = gen_sprites::spr#2 } }  ) always clobbers reg byte a 
Statement asm { ldymemLo ldamemHi jsr$b391  } always clobbers reg byte a reg byte x reg byte y 
Statement asm { jsr$bc0f  } always clobbers reg byte a reg byte x 
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 { ldamemLo ldymemHi jsr$bb0f  } always clobbers reg byte a reg byte x reg byte y 
Statement [203] *memLo = byte0 (unsigned int)gen_sintab::f_min [ ] ( init:1::gen_sintab:20::addMEMtoFAC:115 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 ] { }  init:1::gen_sintab:24::addMEMtoFAC:115 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 ] { }  init:1::gen_sintab:20::addMEMtoFAC:136 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  init:1::gen_sintab:24::addMEMtoFAC:136 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  ) always clobbers reg byte a 
Statement [204] *memHi = byte1 (unsigned int)gen_sintab::f_min [ ] ( init:1::gen_sintab:20::addMEMtoFAC:115 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 ] { }  init:1::gen_sintab:24::addMEMtoFAC:115 [ progress_cursor#23 gen_sintab::length#10 gen_sintab::sintab#13 ] { }  init:1::gen_sintab:20::addMEMtoFAC:136 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  init:1::gen_sintab:24::addMEMtoFAC:136 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 ] { }  ) always clobbers reg byte a 
Statement asm { ldamemLo ldymemHi jsr$b867  } always clobbers reg byte a reg byte x reg byte y 
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 asm { jsr$b1aa stymemLo stamemHi  } always clobbers reg byte a reg byte x reg byte y 
Statement [217] getFAC::return#0 = *memHi w= *memLo [ getFAC::return#0 ] ( init:1::gen_sintab:20::getFAC:138 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 getFAC::return#0 ] { { getFAC::return#0 = getFAC::return#2 } }  init:1::gen_sintab:24::getFAC:138 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#13 progress_cursor#12 getFAC::return#0 ] { { getFAC::return#0 = getFAC::return#2 } }  ) always clobbers reg byte a 
Statement [220] if(progress_idx#9!=8) goto progress_inc::@1 [ progress_cursor#12 progress_idx#9 ] ( init:1::gen_sintab:20::progress_inc:142 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#12 progress_idx#9 ] { }  init:1::gen_sintab:24::progress_inc:142 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#12 progress_idx#9 ] { }  ) always clobbers reg byte a 
Statement [221] *progress_cursor#12 = *(progress_inc::progress_chars+8) [ progress_cursor#12 ] ( init:1::gen_sintab:20::progress_inc:142 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#12 ] { }  init:1::gen_sintab:24::progress_inc:142 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_cursor#12 ] { }  ) always clobbers reg byte a reg byte y 
Statement [224] *progress_cursor#10 = progress_inc::progress_chars[progress_idx#11] [ progress_idx#11 progress_cursor#10 ] ( init:1::gen_sintab:20::progress_inc:142 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#11 progress_cursor#10 ] { }  init:1::gen_sintab:24::progress_inc:142 [ gen_sintab::length#10 gen_sintab::sintab#13 gen_sintab::i#10 progress_idx#11 progress_cursor#10 ] { }  ) always clobbers reg byte a reg byte y 
Potential registers zp[1]:2 [ sin_idx_x#15 sin_idx_x#12 sin_idx_x#2 ] : zp[1]:2 , reg byte x , reg byte y , 
Potential registers zp[1]:3 [ sin_idx_y#15 sin_idx_y#12 sin_idx_y#2 ] : zp[1]:3 , reg byte x , reg byte y , 
Potential registers zp[1]:4 [ init::i#2 init::i#1 ] : zp[1]:4 , reg byte x , reg byte y , 
Potential registers zp[1]:5 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] : zp[1]:5 , reg byte x , reg byte y , 
Potential registers zp[1]:6 [ anim::x_msb#2 anim::x_msb#1 ] : zp[1]:6 , reg byte x , reg byte y , 
Potential registers zp[1]:8 [ anim::j2#2 anim::j2#1 ] : zp[1]:8 , reg byte x , reg byte y , 
Potential registers zp[1]:9 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] : zp[1]:9 , reg byte x , reg byte y , 
Potential registers zp[1]:10 [ anim::j#2 anim::j#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 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] : zp[1]:15 , reg byte x , reg byte y , 
Potential registers zp[1]:16 [ place_sprites::j#2 place_sprites::j#1 ] : zp[1]:16 , reg byte x , reg byte y , 
Potential registers zp[1]:17 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] : zp[1]:17 , reg byte x , reg byte y , 
Potential registers zp[1]:19 [ place_sprites::j2#3 place_sprites::j2#2 ] : zp[1]:19 , reg byte x , reg byte y , 
Potential registers zp[1]:20 [ place_sprites::col#2 place_sprites::col#1 ] : zp[1]:20 , reg byte x , reg byte y , 
Potential registers zp[1]:21 [ gen_sprites::i#2 gen_sprites::i#1 ] : zp[1]:21 , reg byte x , 
Potential registers zp[2]:22 [ gen_sprites::spr#2 gen_sprites::spr#1 ] : zp[2]:22 , 
Potential registers zp[2]:24 [ progress_init::line#2 ] : zp[2]:24 , 
Potential registers zp[1]:26 [ gen_sintab::max#2 ] : zp[1]:26 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:27 [ gen_sintab::min#2 ] : zp[1]:27 , 
Potential registers zp[1]:28 [ gen_sintab::length#10 ] : zp[1]:28 , 
Potential registers zp[2]:29 [ gen_sintab::sintab#13 ] : zp[2]:29 , 
Potential registers zp[1]:31 [ gen_sintab::i#10 gen_sintab::i#1 ] : zp[1]:31 , 
Potential registers zp[1]:32 [ progress_idx#13 progress_idx#11 progress_idx#9 ] : zp[1]:32 , 
Potential registers zp[2]:33 [ progress_cursor#12 progress_cursor#23 progress_cursor#10 progress_cursor#9 ] : zp[2]:33 , 
Potential registers zp[1]:35 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] : zp[1]:35 , reg byte x , 
Potential registers zp[1]:36 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] : zp[1]:36 , reg byte x , 
Potential registers zp[1]:37 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] : zp[1]:37 , reg byte x , 
Potential registers zp[1]:38 [ gen_chargen_sprite::c#3 ] : zp[1]:38 , reg byte x , 
Potential registers zp[1]:39 [ 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]:39 , reg byte x , 
Potential registers zp[1]:40 [ 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]:40 , reg byte x , reg byte y , 
Potential registers zp[1]:41 [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] : zp[1]:41 , reg byte x , 
Potential registers zp[2]:42 [ 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]:42 , 
Potential registers zp[2]:44 [ setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#4 setFAC::w#3 setFAC::w#1 ] : zp[2]:44 , 
Potential registers zp[2]:46 [ setMEMtoFAC::mem#5 ] : zp[2]:46 , 
Potential registers zp[2]:48 [ divMEMbyFAC::mem#2 ] : zp[2]:48 , 
Potential registers zp[2]:50 [ mulFACbyMEM::mem#2 ] : zp[2]:50 , 
Potential registers zp[2]:52 [ anim::x#0 ] : zp[2]:52 , 
Potential registers zp[1]:54 [ anim::$7 ] : zp[1]:54 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:55 [ anim::$8 ] : zp[1]:55 , reg byte a , reg byte x , reg byte y , reg byte alu , 
Potential registers zp[1]:56 [ anim::$10 ] : zp[1]:56 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:57 [ place_sprites::j2#1 ] : zp[1]:57 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:58 [ gen_chargen_sprite::ch#0 ] : zp[1]:58 , reg byte x , reg byte y , 
Potential registers zp[2]:59 [ getFAC::return#2 ] : zp[2]:59 , 
Potential registers zp[2]:61 [ gen_sintab::$20 ] : zp[2]:61 , 
Potential registers zp[2]:63 [ gen_chargen_sprite::$14 ] : zp[2]:63 , 
Potential registers zp[2]:65 [ gen_chargen_sprite::$0 ] : zp[2]:65 , 
Potential registers zp[2]:67 [ gen_chargen_sprite::chargen#0 ] : zp[2]:67 , 
Potential registers zp[1]:69 [ gen_chargen_sprite::$2 ] : zp[1]:69 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:70 [ gen_chargen_sprite::$5 ] : zp[1]:70 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:71 [ setFAC::prepareMEM1_$0 ] : zp[1]:71 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:72 [ setFAC::prepareMEM1_$1 ] : zp[1]:72 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:73 [ setMEMtoFAC::prepareMEM1_$0 ] : zp[1]:73 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:74 [ setMEMtoFAC::prepareMEM1_$1 ] : zp[1]:74 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:75 [ divMEMbyFAC::prepareMEM1_$0 ] : zp[1]:75 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:76 [ divMEMbyFAC::prepareMEM1_$1 ] : zp[1]:76 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:77 [ mulFACbyMEM::prepareMEM1_$0 ] : zp[1]:77 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:78 [ mulFACbyMEM::prepareMEM1_$1 ] : zp[1]:78 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:79 [ getFAC::return#0 ] : zp[2]:79 , 

REGISTER UPLIFT SCOPES
Uplift Scope [gen_chargen_sprite] 349,000,004.9: zp[1]:39 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] 333,956,840.14: zp[2]:42 [ 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 ] 259,000,003.4: zp[1]:40 [ 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 ] 200,000,002: zp[1]:70 [ gen_chargen_sprite::$5 ] 170,000,001.7: zp[1]:41 [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] 20,000,002: zp[1]:69 [ gen_chargen_sprite::$2 ] 16,111,112.72: zp[1]:37 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] 10,490,198.98: zp[1]:36 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] 7,692,307.77: zp[1]:38 [ gen_chargen_sprite::c#3 ] 1,630,436.41: zp[1]:35 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] 36,071.5: zp[2]:67 [ gen_chargen_sprite::chargen#0 ] 20,002: zp[2]:63 [ gen_chargen_sprite::$14 ] 20,002: zp[2]:65 [ gen_chargen_sprite::$0 ] 500.5: zp[1]:58 [ gen_chargen_sprite::ch#0 ] 
Uplift Scope [anim] 50,215.42: zp[1]:9 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] 47,618.38: zp[1]:5 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] 20,002: zp[1]:55 [ anim::$8 ] 20,002: zp[1]:56 [ anim::$10 ] 16,178.09: zp[1]:10 [ anim::j#2 anim::j#1 ] 11,341.2: zp[1]:6 [ anim::x_msb#2 anim::x_msb#1 ] 10,001: zp[1]:54 [ anim::$7 ] 9,167.58: zp[1]:8 [ anim::j2#2 anim::j2#1 ] 7,500.75: zp[2]:52 [ anim::x#0 ] 
Uplift Scope [setFAC] 20,002: zp[1]:71 [ setFAC::prepareMEM1_$0 ] 20,002: zp[1]:72 [ setFAC::prepareMEM1_$1 ] 11,810: zp[2]:44 [ setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#4 setFAC::w#3 setFAC::w#1 ] 
Uplift Scope [] 27,406.11: zp[2]:33 [ progress_cursor#12 progress_cursor#23 progress_cursor#10 progress_cursor#9 ] 19,680.45: zp[1]:32 [ progress_idx#13 progress_idx#11 progress_idx#9 ] 142.83: zp[1]:3 [ sin_idx_y#15 sin_idx_y#12 sin_idx_y#2 ] 130.96: zp[1]:2 [ sin_idx_x#15 sin_idx_x#12 sin_idx_x#2 ] 
Uplift Scope [setMEMtoFAC] 20,002: zp[1]:73 [ setMEMtoFAC::prepareMEM1_$0 ] 20,002: zp[1]:74 [ setMEMtoFAC::prepareMEM1_$1 ] 0: zp[2]:46 [ setMEMtoFAC::mem#5 ] 
Uplift Scope [divMEMbyFAC] 20,002: zp[1]:75 [ divMEMbyFAC::prepareMEM1_$0 ] 20,002: zp[1]:76 [ divMEMbyFAC::prepareMEM1_$1 ] 0: zp[2]:48 [ divMEMbyFAC::mem#2 ] 
Uplift Scope [mulFACbyMEM] 20,002: zp[1]:77 [ mulFACbyMEM::prepareMEM1_$0 ] 20,002: zp[1]:78 [ mulFACbyMEM::prepareMEM1_$1 ] 0: zp[2]:50 [ mulFACbyMEM::mem#2 ] 
Uplift Scope [place_sprites] 2,002: zp[1]:57 [ place_sprites::j2#1 ] 1,901.9: zp[1]:16 [ place_sprites::j#2 place_sprites::j#1 ] 1,701.7: zp[1]:15 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] 1,167.83: zp[1]:19 [ place_sprites::j2#3 place_sprites::j2#2 ] 834.17: zp[1]:17 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] 829.4: zp[1]:20 [ place_sprites::col#2 place_sprites::col#1 ] 
Uplift Scope [getFAC] 3,667.33: zp[2]:79 [ getFAC::return#0 ] 2,002: zp[2]:59 [ getFAC::return#2 ] 
Uplift Scope [gen_sprites] 2,102.1: zp[1]:21 [ gen_sprites::i#2 gen_sprites::i#1 ] 1,418.08: zp[2]:22 [ gen_sprites::spr#2 gen_sprites::spr#1 ] 
Uplift Scope [clear_screen] 3,336.67: zp[2]:11 [ clear_screen::sc#2 clear_screen::sc#1 ] 
Uplift Scope [gen_sintab] 2,168.83: zp[1]:31 [ gen_sintab::i#10 gen_sintab::i#1 ] 1,001: zp[2]:61 [ gen_sintab::$20 ] 20.85: zp[1]:28 [ gen_sintab::length#10 ] 20.85: zp[2]:29 [ gen_sintab::sintab#13 ] 0: zp[1]:26 [ gen_sintab::max#2 ] 0: zp[1]:27 [ gen_sintab::min#2 ] 
Uplift Scope [init] 286.17: zp[1]:4 [ init::i#2 init::i#1 ] 
Uplift Scope [progress_init] 101: zp[2]:24 [ progress_init::line#2 ] 
Uplift Scope [MOS6526_CIA] 
Uplift Scope [MOS6569_VICII] 
Uplift Scope [MOS6581_SID] 
Uplift Scope [setARGtoFAC] 
Uplift Scope [addMEMtoFAC] 
Uplift Scope [subFACfromARG] 
Uplift Scope [sinFAC] 
Uplift Scope [RADIX] 
Uplift Scope [main] 
Uplift Scope [progress_inc] 

Uplifting [gen_chargen_sprite] best 1064084 combination zp[1]:39 [ 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]:42 [ 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::$5 ] reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] reg byte a [ gen_chargen_sprite::$2 ] zp[1]:37 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] zp[1]:36 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] zp[1]:38 [ gen_chargen_sprite::c#3 ] zp[1]:35 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] zp[2]:67 [ gen_chargen_sprite::chargen#0 ] zp[2]:63 [ gen_chargen_sprite::$14 ] zp[2]:65 [ gen_chargen_sprite::$0 ] zp[1]:58 [ gen_chargen_sprite::ch#0 ] 
Limited combination testing to 100 combinations of 9216 possible.
Uplifting [anim] best 1062884 combination zp[1]:9 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] zp[1]:5 [ 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]:10 [ anim::j#2 anim::j#1 ] zp[1]:6 [ anim::x_msb#2 anim::x_msb#1 ] zp[1]:54 [ anim::$7 ] zp[1]:8 [ anim::j2#2 anim::j2#1 ] zp[2]:52 [ anim::x#0 ] 
Limited combination testing to 100 combinations of 19440 possible.
Uplifting [setFAC] best 1062872 combination reg byte a [ setFAC::prepareMEM1_$0 ] reg byte a [ setFAC::prepareMEM1_$1 ] zp[2]:44 [ setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#4 setFAC::w#3 setFAC::w#1 ] 
Uplifting [] best 1062872 combination zp[2]:33 [ progress_cursor#12 progress_cursor#23 progress_cursor#10 progress_cursor#9 ] zp[1]:32 [ progress_idx#13 progress_idx#11 progress_idx#9 ] zp[1]:3 [ sin_idx_y#15 sin_idx_y#12 sin_idx_y#2 ] zp[1]:2 [ sin_idx_x#15 sin_idx_x#12 sin_idx_x#2 ] 
Uplifting [setMEMtoFAC] best 1062860 combination reg byte a [ setMEMtoFAC::prepareMEM1_$0 ] reg byte a [ setMEMtoFAC::prepareMEM1_$1 ] zp[2]:46 [ setMEMtoFAC::mem#5 ] 
Uplifting [divMEMbyFAC] best 1062848 combination reg byte a [ divMEMbyFAC::prepareMEM1_$0 ] reg byte a [ divMEMbyFAC::prepareMEM1_$1 ] zp[2]:48 [ divMEMbyFAC::mem#2 ] 
Uplifting [mulFACbyMEM] best 1062836 combination reg byte a [ mulFACbyMEM::prepareMEM1_$0 ] reg byte a [ mulFACbyMEM::prepareMEM1_$1 ] zp[2]:50 [ mulFACbyMEM::mem#2 ] 
Uplifting [place_sprites] best 1062776 combination reg byte x [ place_sprites::j2#1 ] zp[1]:16 [ place_sprites::j#2 place_sprites::j#1 ] zp[1]:15 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] zp[1]:19 [ place_sprites::j2#3 place_sprites::j2#2 ] zp[1]:17 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] zp[1]:20 [ place_sprites::col#2 place_sprites::col#1 ] 
Limited combination testing to 100 combinations of 972 possible.
Uplifting [getFAC] best 1062776 combination zp[2]:79 [ getFAC::return#0 ] zp[2]:59 [ getFAC::return#2 ] 
Uplifting [gen_sprites] best 1062776 combination zp[1]:21 [ gen_sprites::i#2 gen_sprites::i#1 ] zp[2]:22 [ gen_sprites::spr#2 gen_sprites::spr#1 ] 
Uplifting [clear_screen] best 1062776 combination zp[2]:11 [ clear_screen::sc#2 clear_screen::sc#1 ] 
Uplifting [gen_sintab] best 1062769 combination zp[1]:31 [ gen_sintab::i#10 gen_sintab::i#1 ] zp[2]:61 [ gen_sintab::$20 ] zp[1]:28 [ gen_sintab::length#10 ] zp[2]:29 [ gen_sintab::sintab#13 ] reg byte x [ gen_sintab::max#2 ] zp[1]:27 [ gen_sintab::min#2 ] 
Uplifting [init] best 1062619 combination reg byte x [ init::i#2 init::i#1 ] 
Uplifting [progress_init] best 1062619 combination zp[2]:24 [ progress_init::line#2 ] 
Uplifting [MOS6526_CIA] best 1062619 combination 
Uplifting [MOS6569_VICII] best 1062619 combination 
Uplifting [MOS6581_SID] best 1062619 combination 
Uplifting [setARGtoFAC] best 1062619 combination 
Uplifting [addMEMtoFAC] best 1062619 combination 
Uplifting [subFACfromARG] best 1062619 combination 
Uplifting [sinFAC] best 1062619 combination 
Uplifting [RADIX] best 1062619 combination 
Uplifting [main] best 1062619 combination 
Uplifting [progress_inc] best 1062619 combination 
Attempting to uplift remaining variables inzp[1]:39 [ 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 1062619 combination zp[1]:39 [ 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]:37 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ]
Uplifting [gen_chargen_sprite] best 1062619 combination zp[1]:37 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] 
Attempting to uplift remaining variables inzp[1]:36 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ]
Uplifting [gen_chargen_sprite] best 1062619 combination zp[1]:36 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] 
Attempting to uplift remaining variables inzp[1]:38 [ gen_chargen_sprite::c#3 ]
Uplifting [gen_chargen_sprite] best 1062619 combination zp[1]:38 [ gen_chargen_sprite::c#3 ] 
Attempting to uplift remaining variables inzp[1]:35 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ]
Uplifting [gen_chargen_sprite] best 1062619 combination zp[1]:35 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] 
Attempting to uplift remaining variables inzp[1]:9 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ]
Uplifting [anim] best 1062619 combination zp[1]:9 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] 
Attempting to uplift remaining variables inzp[1]:5 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ]
Uplifting [anim] best 1062619 combination zp[1]:5 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] 
Attempting to uplift remaining variables inzp[1]:32 [ progress_idx#13 progress_idx#11 progress_idx#9 ]
Uplifting [] best 1062619 combination zp[1]:32 [ progress_idx#13 progress_idx#11 progress_idx#9 ] 
Attempting to uplift remaining variables inzp[1]:10 [ anim::j#2 anim::j#1 ]
Uplifting [anim] best 1062619 combination zp[1]:10 [ anim::j#2 anim::j#1 ] 
Attempting to uplift remaining variables inzp[1]:6 [ anim::x_msb#2 anim::x_msb#1 ]
Uplifting [anim] best 1062619 combination zp[1]:6 [ anim::x_msb#2 anim::x_msb#1 ] 
Attempting to uplift remaining variables inzp[1]:54 [ anim::$7 ]
Uplifting [anim] best 1062619 combination zp[1]:54 [ anim::$7 ] 
Attempting to uplift remaining variables inzp[1]:8 [ anim::j2#2 anim::j2#1 ]
Uplifting [anim] best 1062619 combination zp[1]:8 [ anim::j2#2 anim::j2#1 ] 
Attempting to uplift remaining variables inzp[1]:31 [ gen_sintab::i#10 gen_sintab::i#1 ]
Uplifting [gen_sintab] best 1062619 combination zp[1]:31 [ gen_sintab::i#10 gen_sintab::i#1 ] 
Attempting to uplift remaining variables inzp[1]:21 [ gen_sprites::i#2 gen_sprites::i#1 ]
Uplifting [gen_sprites] best 1062619 combination zp[1]:21 [ gen_sprites::i#2 gen_sprites::i#1 ] 
Attempting to uplift remaining variables inzp[1]:16 [ place_sprites::j#2 place_sprites::j#1 ]
Uplifting [place_sprites] best 1062619 combination zp[1]:16 [ place_sprites::j#2 place_sprites::j#1 ] 
Attempting to uplift remaining variables inzp[1]:15 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ]
Uplifting [place_sprites] best 1062619 combination zp[1]:15 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] 
Attempting to uplift remaining variables inzp[1]:19 [ place_sprites::j2#3 place_sprites::j2#2 ]
Uplifting [place_sprites] best 1062619 combination zp[1]:19 [ place_sprites::j2#3 place_sprites::j2#2 ] 
Attempting to uplift remaining variables inzp[1]:17 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ]
Uplifting [place_sprites] best 1062619 combination zp[1]:17 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] 
Attempting to uplift remaining variables inzp[1]:20 [ place_sprites::col#2 place_sprites::col#1 ]
Uplifting [place_sprites] best 1062619 combination zp[1]:20 [ place_sprites::col#2 place_sprites::col#1 ] 
Attempting to uplift remaining variables inzp[1]:58 [ gen_chargen_sprite::ch#0 ]
Uplifting [gen_chargen_sprite] best 1062588 combination reg byte x [ gen_chargen_sprite::ch#0 ] 
Attempting to uplift remaining variables inzp[1]:3 [ sin_idx_y#15 sin_idx_y#12 sin_idx_y#2 ]
Uplifting [] best 1062588 combination zp[1]:3 [ sin_idx_y#15 sin_idx_y#12 sin_idx_y#2 ] 
Attempting to uplift remaining variables inzp[1]:2 [ sin_idx_x#15 sin_idx_x#12 sin_idx_x#2 ]
Uplifting [] best 1062588 combination zp[1]:2 [ sin_idx_x#15 sin_idx_x#12 sin_idx_x#2 ] 
Attempting to uplift remaining variables inzp[1]:28 [ gen_sintab::length#10 ]
Uplifting [gen_sintab] best 1062588 combination zp[1]:28 [ gen_sintab::length#10 ] 
Attempting to uplift remaining variables inzp[1]:27 [ gen_sintab::min#2 ]
Uplifting [gen_sintab] best 1062588 combination zp[1]:27 [ gen_sintab::min#2 ] 
Coalescing zero page register [ zp[1]:6 [ anim::x_msb#2 anim::x_msb#1 ] ] with [ zp[1]:54 [ anim::$7 ] ] - score: 2
Coalescing zero page register [ zp[2]:24 [ progress_init::line#2 ] ] with [ zp[2]:33 [ progress_cursor#12 progress_cursor#23 progress_cursor#10 progress_cursor#9 ] ] - score: 1
Coalescing zero page register [ zp[2]:59 [ getFAC::return#2 ] ] with [ zp[2]:61 [ gen_sintab::$20 ] ] - score: 1
Coalescing zero page register [ zp[2]:59 [ getFAC::return#2 gen_sintab::$20 ] ] with [ zp[2]:79 [ getFAC::return#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:63 [ gen_chargen_sprite::$14 ] ] with [ zp[2]:65 [ gen_chargen_sprite::$0 ] ] - score: 1
Coalescing zero page register [ zp[2]:63 [ gen_chargen_sprite::$14 gen_chargen_sprite::$0 ] ] with [ zp[2]:67 [ gen_chargen_sprite::chargen#0 ] ] - score: 1
Coalescing zero page register [ zp[1]:15 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] ] with [ zp[1]:2 [ sin_idx_x#15 sin_idx_x#12 sin_idx_x#2 ] ]
Coalescing zero page register [ zp[1]:16 [ place_sprites::j#2 place_sprites::j#1 ] ] with [ zp[1]:3 [ sin_idx_y#15 sin_idx_y#12 sin_idx_y#2 ] ]
Coalescing zero page register [ zp[1]:17 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] ] with [ zp[1]:5 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] ]
Coalescing zero page register [ zp[1]:19 [ place_sprites::j2#3 place_sprites::j2#2 ] ] with [ zp[1]:6 [ anim::x_msb#2 anim::x_msb#1 anim::$7 ] ]
Coalescing zero page register [ zp[1]:20 [ place_sprites::col#2 place_sprites::col#1 ] ] with [ zp[1]:8 [ anim::j2#2 anim::j2#1 ] ]
Coalescing zero page register [ zp[1]:21 [ gen_sprites::i#2 gen_sprites::i#1 ] ] with [ zp[1]:9 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] ]
Coalescing zero page register [ zp[2]:22 [ gen_sprites::spr#2 gen_sprites::spr#1 ] ] with [ zp[2]:11 [ clear_screen::sc#2 clear_screen::sc#1 ] ]
Coalescing zero page register [ zp[1]:27 [ gen_sintab::min#2 ] ] with [ zp[1]:10 [ anim::j#2 anim::j#1 ] ]
Coalescing zero page register [ zp[1]:35 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] ] with [ zp[1]:28 [ gen_sintab::length#10 ] ]
Coalescing zero page register [ zp[1]:36 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] ] with [ zp[1]:31 [ gen_sintab::i#10 gen_sintab::i#1 ] ]
Coalescing zero page register [ zp[1]:37 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] ] with [ zp[1]:32 [ progress_idx#13 progress_idx#11 progress_idx#9 ] ]
Coalescing zero page register [ zp[2]:42 [ 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]:24 [ progress_init::line#2 progress_cursor#12 progress_cursor#23 progress_cursor#10 progress_cursor#9 ] ]
Coalescing zero page register [ zp[2]:46 [ setMEMtoFAC::mem#5 ] ] with [ zp[2]:44 [ setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#4 setFAC::w#3 setFAC::w#1 ] ]
Coalescing zero page register [ zp[2]:50 [ mulFACbyMEM::mem#2 ] ] with [ zp[2]:48 [ divMEMbyFAC::mem#2 ] ]
Coalescing zero page register [ zp[2]:52 [ anim::x#0 ] ] with [ zp[2]:29 [ gen_sintab::sintab#13 ] ]
Coalescing zero page register [ zp[2]:63 [ gen_chargen_sprite::$14 gen_chargen_sprite::$0 gen_chargen_sprite::chargen#0 ] ] with [ zp[2]:59 [ getFAC::return#2 gen_sintab::$20 getFAC::return#0 ] ]
Coalescing zero page register [ zp[1]:35 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 gen_sintab::length#10 ] ] with [ zp[1]:15 [ place_sprites::spr_id#2 place_sprites::spr_id#1 sin_idx_x#15 sin_idx_x#12 sin_idx_x#2 ] ]
Coalescing zero page register [ zp[1]:36 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 gen_sintab::i#10 gen_sintab::i#1 ] ] with [ zp[1]:16 [ place_sprites::j#2 place_sprites::j#1 sin_idx_y#15 sin_idx_y#12 sin_idx_y#2 ] ]
Coalescing zero page register [ zp[1]:37 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 progress_idx#13 progress_idx#11 progress_idx#9 ] ] with [ zp[1]:17 [ place_sprites::spr_x#2 place_sprites::spr_x#1 anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] ]
Coalescing zero page register [ zp[1]:38 [ gen_chargen_sprite::c#3 ] ] with [ zp[1]:19 [ place_sprites::j2#3 place_sprites::j2#2 anim::x_msb#2 anim::x_msb#1 anim::$7 ] ]
Coalescing zero page register [ zp[1]:39 [ 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]:20 [ place_sprites::col#2 place_sprites::col#1 anim::j2#2 anim::j2#1 ] ]
Coalescing zero page register [ zp[2]:46 [ setMEMtoFAC::mem#5 setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#4 setFAC::w#3 setFAC::w#1 ] ] with [ zp[2]:22 [ gen_sprites::spr#2 gen_sprites::spr#1 clear_screen::sc#2 clear_screen::sc#1 ] ]
Coalescing zero page register [ zp[2]:63 [ gen_chargen_sprite::$14 gen_chargen_sprite::$0 gen_chargen_sprite::chargen#0 getFAC::return#2 gen_sintab::$20 getFAC::return#0 ] ] with [ zp[2]:50 [ mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 ] ]
Allocated (was zp[1]:21) zp[1]:2 [ gen_sprites::i#2 gen_sprites::i#1 anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ]
Allocated (was zp[1]:27) zp[1]:3 [ gen_sintab::min#2 anim::j#2 anim::j#1 ]
Allocated (was zp[1]:35) zp[1]:4 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 gen_sintab::length#10 place_sprites::spr_id#2 place_sprites::spr_id#1 sin_idx_x#15 sin_idx_x#12 sin_idx_x#2 ]
Allocated (was zp[1]:36) zp[1]:5 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 gen_sintab::i#10 gen_sintab::i#1 place_sprites::j#2 place_sprites::j#1 sin_idx_y#15 sin_idx_y#12 sin_idx_y#2 ]
Allocated (was zp[1]:37) zp[1]:6 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 progress_idx#13 progress_idx#11 progress_idx#9 place_sprites::spr_x#2 place_sprites::spr_x#1 anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ]
Allocated (was zp[1]:38) zp[1]:8 [ gen_chargen_sprite::c#3 place_sprites::j2#3 place_sprites::j2#2 anim::x_msb#2 anim::x_msb#1 anim::$7 ]
Allocated (was zp[1]:39) zp[1]:9 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 place_sprites::col#2 place_sprites::col#1 anim::j2#2 anim::j2#1 ]
Allocated (was zp[2]:42) zp[2]:10 [ 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 progress_init::line#2 progress_cursor#12 progress_cursor#23 progress_cursor#10 progress_cursor#9 ]
Allocated (was zp[2]:46) zp[2]:15 [ setMEMtoFAC::mem#5 setFAC::prepareMEM1_mem#0 setFAC::w#0 setFAC::w#4 setFAC::w#3 setFAC::w#1 gen_sprites::spr#2 gen_sprites::spr#1 clear_screen::sc#2 clear_screen::sc#1 ]
Allocated (was zp[2]:52) zp[2]:19 [ anim::x#0 gen_sintab::sintab#13 ]
Allocated (was zp[2]:63) zp[2]:21 [ gen_chargen_sprite::$14 gen_chargen_sprite::$0 gen_chargen_sprite::chargen#0 getFAC::return#2 gen_sintab::$20 getFAC::return#0 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 ]

ASSEMBLER BEFORE OPTIMIZATION
  // File Comments
/// @file
/// Commodore 64 Registers and Constants
/// @file
/// The MOS 6526 Complex Interface Adapter (CIA)
///
/// http://archive.6502.org/datasheets/mos_6526_cia_recreated.pdf
  // Upstart
  // Commodore 64 PRG executable file
.file [name="sinus-sprites.prg", type="prg", segments="Program"]
.segmentdef Program [segments="Basic, Code, Data"]
.segmentdef Basic [start=$0801]
.segmentdef Code [start=$80d]
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
  // Global Constants & labels
  .const sinlen_x = $dd
  .const sinlen_y = $c5
  .const OFFSET_STRUCT_MOS6569_VICII_RASTER = $12
  .const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
  .const OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB = $10
  .const OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE = $15
  .const OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X = $1d
  .const OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_Y = $17
  /// Sprite X position register for sprite #0
  .label SPRITES_XPOS = $d000
  /// Sprite Y position register for sprite #0
  .label SPRITES_YPOS = $d001
  /// Sprite colors register for sprite #0
  .label SPRITES_COLOR = $d027
  /// Processor Port Register controlling RAM/ROM configuration and the datasette
  .label PROCPORT = 1
  /// The address of the CHARGEN character set
  .label CHARGEN = $d000
  /// The VIC-II MOS 6567/6569
  .label VICII = $d000
  /// 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
  .label sprites = $2000
  .label SCREEN = $400
  // Current index within the progress cursor (0-7)
  .label progress_idx = 6
  // Current position of the progress cursor
  .label progress_cursor = $a
  .label sin_idx_x = 4
  .label sin_idx_y = 5
.segment Code
  // main
main: {
    // [1] call init
    // [6] phi from main to init [phi:main->init]
  init_from_main:
    jsr init
    // [2] phi from main to main::@1 [phi:main->main::@1]
  __b1_from_main:
    // [2] phi sin_idx_y#15 = 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_idx_y
    // [2] phi sin_idx_x#15 = 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_idx_x
    jmp __b1
    // [2] phi from main::@1 main::@2 to main::@1 [phi:main::@1/main::@2->main::@1]
  __b1_from___b1:
  __b1_from___b2:
    // [2] phi sin_idx_y#15 = sin_idx_y#15 [phi:main::@1/main::@2->main::@1#0] -- register_copy 
    // [2] phi sin_idx_x#15 = sin_idx_x#15 [phi:main::@1/main::@2->main::@1#1] -- register_copy 
    jmp __b1
    // main::@1
  __b1:
    // [3] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$ff) goto main::@1 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda #$ff
    cmp VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER
    bne __b1_from___b1
    // [4] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  __b2_from___b1:
    jmp __b2
    // main::@2
  __b2:
    // [5] call anim
    jsr anim
    jmp __b1_from___b2
}
  // init
init: {
    // [7] call clear_screen
    // [61] phi from init to clear_screen [phi:init->clear_screen]
  clear_screen_from_init:
    jsr clear_screen
    // [8] phi from init to init::@1 [phi:init->init::@1]
  __b1_from_init:
    // [8] phi init::i#2 = 0 [phi:init->init::@1#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b1
    // [8] phi from init::@1 to init::@1 [phi:init::@1->init::@1]
  __b1_from___b1:
    // [8] phi init::i#2 = init::i#1 [phi:init::@1->init::@1#0] -- register_copy 
    jmp __b1
    // init::@1
  __b1:
    // [9] COLS[init::i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #0
    sta COLS,x
    // [10] (COLS+$28)[init::i#2] = $b -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #$b
    sta COLS+$28,x
    // [11] init::i#1 = ++ init::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [12] if(init::i#1!=$28) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$28
    bne __b1_from___b1
    // [13] phi from init::@1 to init::@2 [phi:init::@1->init::@2]
  __b2_from___b1:
    jmp __b2
    // init::@2
  __b2:
    // [14] call place_sprites
    jsr place_sprites
    // [15] phi from init::@2 to init::@3 [phi:init::@2->init::@3]
  __b3_from___b2:
    jmp __b3
    // init::@3
  __b3:
    // [16] call gen_sprites
    // [83] phi from init::@3 to gen_sprites [phi:init::@3->gen_sprites]
  gen_sprites_from___b3:
    jsr gen_sprites
    // [17] phi from init::@3 to init::@4 [phi:init::@3->init::@4]
  __b4_from___b3:
    jmp __b4
    // init::@4
  __b4:
    // [18] call progress_init
    // [92] phi from init::@4 to progress_init [phi:init::@4->progress_init]
  progress_init_from___b4:
    // [92] phi progress_init::line#2 = 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
    // [19] phi from init::@4 to init::@5 [phi:init::@4->init::@5]
  __b5_from___b4:
    jmp __b5
    // init::@5
  __b5:
    // [20] call gen_sintab
    // [95] phi from init::@5 to gen_sintab [phi:init::@5->gen_sintab]
  gen_sintab_from___b5:
    // [95] phi gen_sintab::sintab#13 = 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
    // [95] phi gen_sintab::length#10 = sinlen_x [phi:init::@5->gen_sintab#1] -- vbuz1=vbuc1 
    lda #sinlen_x
    sta.z gen_sintab.length
    // [95] phi gen_sintab::min#2 = 0 [phi:init::@5->gen_sintab#2] -- vbuz1=vbuc1 
    lda #0
    sta.z gen_sintab.min
    // [95] phi gen_sintab::max#2 = $ff [phi:init::@5->gen_sintab#3] -- vbuxx=vbuc1 
    ldx #$ff
    jsr gen_sintab
    // [21] phi from init::@5 to init::@6 [phi:init::@5->init::@6]
  __b6_from___b5:
    jmp __b6
    // init::@6
  __b6:
    // [22] call progress_init
    // [92] phi from init::@6 to progress_init [phi:init::@6->progress_init]
  progress_init_from___b6:
    // [92] phi progress_init::line#2 = SCREEN+$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
    // [23] phi from init::@6 to init::@7 [phi:init::@6->init::@7]
  __b7_from___b6:
    jmp __b7
    // init::@7
  __b7:
    // [24] call gen_sintab
    // [95] phi from init::@7 to gen_sintab [phi:init::@7->gen_sintab]
  gen_sintab_from___b7:
    // [95] phi gen_sintab::sintab#13 = 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
    // [95] phi gen_sintab::length#10 = sinlen_y [phi:init::@7->gen_sintab#1] -- vbuz1=vbuc1 
    lda #sinlen_y
    sta.z gen_sintab.length
    // [95] phi gen_sintab::min#2 = $32 [phi:init::@7->gen_sintab#2] -- vbuz1=vbuc1 
    lda #$32
    sta.z gen_sintab.min
    // [95] phi gen_sintab::max#2 = $d0 [phi:init::@7->gen_sintab#3] -- vbuxx=vbuc1 
    ldx #$d0
    jsr gen_sintab
    // [25] phi from init::@7 to init::@8 [phi:init::@7->init::@8]
  __b8_from___b7:
    jmp __b8
    // init::@8
  __b8:
    // [26] call clear_screen
    // [61] phi from init::@8 to clear_screen [phi:init::@8->clear_screen]
  clear_screen_from___b8:
    jsr clear_screen
    jmp __breturn
    // init::@return
  __breturn:
    // [27] return 
    rts
}
  // anim
anim: {
    .label __7 = 8
    .label xidx = 6
    .label yidx = 2
    .label x = $13
    .label x_msb = 8
    .label j2 = 9
    .label j = 3
    // [28] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = ++ *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR
    // [29] anim::xidx#0 = sin_idx_x#15 -- vbuz1=vbuz2 
    lda.z sin_idx_x
    sta.z xidx
    // [30] anim::yidx#0 = sin_idx_y#15 -- vbuz1=vbuz2 
    lda.z sin_idx_y
    sta.z yidx
    // [31] phi from anim to anim::@3 [phi:anim->anim::@3]
  __b3_from_anim:
    // [31] phi anim::j#2 = 0 [phi:anim->anim::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z j
    // [31] phi anim::yidx#3 = anim::yidx#0 [phi:anim->anim::@3#1] -- register_copy 
    // [31] phi anim::j2#2 = $c [phi:anim->anim::@3#2] -- vbuz1=vbuc1 
    lda #$c
    sta.z j2
    // [31] phi anim::x_msb#2 = 0 [phi:anim->anim::@3#3] -- vbuz1=vbuc1 
    lda #0
    sta.z x_msb
    // [31] phi anim::xidx#3 = anim::xidx#0 [phi:anim->anim::@3#4] -- register_copy 
    jmp __b3
    // [31] phi from anim::@5 to anim::@3 [phi:anim::@5->anim::@3]
  __b3_from___b5:
    // [31] phi anim::j#2 = anim::j#1 [phi:anim::@5->anim::@3#0] -- register_copy 
    // [31] phi anim::yidx#3 = anim::yidx#6 [phi:anim::@5->anim::@3#1] -- register_copy 
    // [31] phi anim::j2#2 = anim::j2#1 [phi:anim::@5->anim::@3#2] -- register_copy 
    // [31] phi anim::x_msb#2 = anim::x_msb#1 [phi:anim::@5->anim::@3#3] -- register_copy 
    // [31] phi anim::xidx#3 = anim::xidx#5 [phi:anim::@5->anim::@3#4] -- register_copy 
    jmp __b3
    // anim::@3
  __b3:
    // [32] anim::x#0 = $1e + sintab_x[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
    // [33] anim::$7 = anim::x_msb#2 << 1 -- vbuz1=vbuz1_rol_1 
    asl.z __7
    // [34] anim::$8 = byte1  anim::x#0 -- vbuaa=_byte1_vwuz1 
    lda.z x+1
    // [35] anim::x_msb#1 = anim::$7 | anim::$8 -- vbuz1=vbuz1_bor_vbuaa 
    ora.z x_msb
    sta.z x_msb
    // [36] anim::$10 = byte0  anim::x#0 -- vbuaa=_byte0_vwuz1 
    lda.z x
    // [37] SPRITES_XPOS[anim::j2#2] = anim::$10 -- pbuc1_derefidx_vbuz1=vbuaa 
    ldy.z j2
    sta SPRITES_XPOS,y
    // [38] SPRITES_YPOS[anim::j2#2] = sintab_y[anim::yidx#3] -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 
    ldy.z yidx
    lda sintab_y,y
    ldy.z j2
    sta SPRITES_YPOS,y
    // [39] anim::xidx#1 = anim::xidx#3 + $a -- vbuz1=vbuz1_plus_vbuc1 
    lax.z xidx
    axs #-[$a]
    stx.z xidx
    // [40] if(anim::xidx#1<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:
    // [41] anim::xidx#2 = anim::xidx#1 - sinlen_x -- vbuz1=vbuz1_minus_vbuc1 
    lax.z xidx
    axs #sinlen_x
    stx.z xidx
    // [42] phi from anim::@3 anim::@6 to anim::@4 [phi:anim::@3/anim::@6->anim::@4]
  __b4_from___b3:
  __b4_from___b6:
    // [42] phi anim::xidx#5 = anim::xidx#1 [phi:anim::@3/anim::@6->anim::@4#0] -- register_copy 
    jmp __b4
    // anim::@4
  __b4:
    // [43] anim::yidx#1 = anim::yidx#3 + 8 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z yidx
    axs #-[8]
    stx.z yidx
    // [44] if(anim::yidx#1<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:
    // [45] anim::yidx#2 = anim::yidx#1 - sinlen_y -- vbuz1=vbuz1_minus_vbuc1 
    lax.z yidx
    axs #sinlen_y
    stx.z yidx
    // [46] phi from anim::@4 anim::@7 to anim::@5 [phi:anim::@4/anim::@7->anim::@5]
  __b5_from___b4:
  __b5_from___b7:
    // [46] phi anim::yidx#6 = anim::yidx#1 [phi:anim::@4/anim::@7->anim::@5#0] -- register_copy 
    jmp __b5
    // anim::@5
  __b5:
    // [47] anim::j2#1 = anim::j2#2 - 2 -- vbuz1=vbuz1_minus_2 
    dec.z j2
    dec.z j2
    // [48] anim::j#1 = ++ anim::j#2 -- vbuz1=_inc_vbuz1 
    inc.z j
    // [49] if(anim::j#1!=7) goto anim::@3 -- vbuz1_neq_vbuc1_then_la1 
    lda #7
    cmp.z j
    bne __b3_from___b5
    jmp __b8
    // anim::@8
  __b8:
    // [50] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB) = anim::x_msb#1 -- _deref_pbuc1=vbuz1 
    lda.z x_msb
    sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB
    // [51] sin_idx_x#2 = ++ sin_idx_x#15 -- vbuz1=_inc_vbuz1 
    inc.z sin_idx_x
    // [52] if(sin_idx_x#2<sinlen_x) goto anim::@9 -- vbuz1_lt_vbuc1_then_la1 
    lda.z sin_idx_x
    cmp #sinlen_x
    bcc __b9_from___b8
    // [54] phi from anim::@8 to anim::@1 [phi:anim::@8->anim::@1]
  __b1_from___b8:
    // [54] phi sin_idx_x#12 = 0 [phi:anim::@8->anim::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_idx_x
    jmp __b1
    // [53] phi from anim::@8 to anim::@9 [phi:anim::@8->anim::@9]
  __b9_from___b8:
    jmp __b9
    // anim::@9
  __b9:
    // [54] phi from anim::@9 to anim::@1 [phi:anim::@9->anim::@1]
  __b1_from___b9:
    // [54] phi sin_idx_x#12 = sin_idx_x#2 [phi:anim::@9->anim::@1#0] -- register_copy 
    jmp __b1
    // anim::@1
  __b1:
    // [55] sin_idx_y#2 = ++ sin_idx_y#15 -- vbuz1=_inc_vbuz1 
    inc.z sin_idx_y
    // [56] if(sin_idx_y#2<sinlen_y) goto anim::@10 -- vbuz1_lt_vbuc1_then_la1 
    lda.z sin_idx_y
    cmp #sinlen_y
    bcc __b10_from___b1
    // [58] phi from anim::@1 to anim::@2 [phi:anim::@1->anim::@2]
  __b2_from___b1:
    // [58] phi sin_idx_y#12 = 0 [phi:anim::@1->anim::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_idx_y
    jmp __b2
    // [57] phi from anim::@1 to anim::@10 [phi:anim::@1->anim::@10]
  __b10_from___b1:
    jmp __b10
    // anim::@10
  __b10:
    // [58] phi from anim::@10 to anim::@2 [phi:anim::@10->anim::@2]
  __b2_from___b10:
    // [58] phi sin_idx_y#12 = sin_idx_y#2 [phi:anim::@10->anim::@2#0] -- register_copy 
    jmp __b2
    // anim::@2
  __b2:
    // [59] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = -- *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) -- _deref_pbuc1=_dec__deref_pbuc1 
    dec VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR
    jmp __breturn
    // anim::@return
  __breturn:
    // [60] return 
    rts
}
  // clear_screen
clear_screen: {
    .label sc = $f
    // [62] phi from clear_screen to clear_screen::@1 [phi:clear_screen->clear_screen::@1]
  __b1_from_clear_screen:
    // [62] phi clear_screen::sc#2 = 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:
    // [63] if(clear_screen::sc#2<SCREEN+$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:
    // [64] return 
    rts
    // clear_screen::@2
  __b2:
    // [65] *clear_screen::sc#2 = ' ' -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (sc),y
    // [66] clear_screen::sc#1 = ++ clear_screen::sc#2 -- pbuz1=_inc_pbuz1 
    inc.z sc
    bne !+
    inc.z sc+1
  !:
    // [62] phi from clear_screen::@2 to clear_screen::@1 [phi:clear_screen::@2->clear_screen::@1]
  __b1_from___b2:
    // [62] phi clear_screen::sc#2 = clear_screen::sc#1 [phi:clear_screen::@2->clear_screen::@1#0] -- register_copy 
    jmp __b1
}
  // place_sprites
place_sprites: {
    .label sprites_ptr = SCREEN+$3f8
    .label spr_id = 4
    .label spr_x = 6
    .label col = 9
    .label j2 = 8
    .label j = 5
    // [67] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE) = $7f -- _deref_pbuc1=vbuc2 
    lda #$7f
    sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE
    // [68] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X) = $7f -- _deref_pbuc1=vbuc2 
    lda #$7f
    sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X
    // [69] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_Y) = $7f -- _deref_pbuc1=vbuc2 
    lda #$7f
    sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_Y
    // [70] phi from place_sprites to place_sprites::@1 [phi:place_sprites->place_sprites::@1]
  __b1_from_place_sprites:
    // [70] phi place_sprites::col#2 = 5 [phi:place_sprites->place_sprites::@1#0] -- vbuz1=vbuc1 
    lda #5
    sta.z col
    // [70] phi place_sprites::j2#3 = 0 [phi:place_sprites->place_sprites::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z j2
    // [70] phi place_sprites::spr_x#2 = $3c [phi:place_sprites->place_sprites::@1#2] -- vbuz1=vbuc1 
    lda #$3c
    sta.z spr_x
    // [70] phi place_sprites::j#2 = 0 [phi:place_sprites->place_sprites::@1#3] -- vbuz1=vbuc1 
    lda #0
    sta.z j
    // [70] phi place_sprites::spr_id#2 = (char)(unsigned int)sprites/$40 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1 
    lda #sprites/$40
    sta.z spr_id
    jmp __b1
    // [70] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1]
  __b1_from___b1:
    // [70] phi place_sprites::col#2 = place_sprites::col#1 [phi:place_sprites::@1->place_sprites::@1#0] -- register_copy 
    // [70] phi place_sprites::j2#3 = place_sprites::j2#2 [phi:place_sprites::@1->place_sprites::@1#1] -- register_copy 
    // [70] phi place_sprites::spr_x#2 = place_sprites::spr_x#1 [phi:place_sprites::@1->place_sprites::@1#2] -- register_copy 
    // [70] phi place_sprites::j#2 = place_sprites::j#1 [phi:place_sprites::@1->place_sprites::@1#3] -- register_copy 
    // [70] phi place_sprites::spr_id#2 = place_sprites::spr_id#1 [phi:place_sprites::@1->place_sprites::@1#4] -- register_copy 
    jmp __b1
    // place_sprites::@1
  __b1:
    // [71] place_sprites::sprites_ptr[place_sprites::j#2] = place_sprites::spr_id#2 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z spr_id
    ldy.z j
    sta sprites_ptr,y
    // [72] place_sprites::spr_id#1 = ++ place_sprites::spr_id#2 -- vbuz1=_inc_vbuz1 
    inc.z spr_id
    // [73] SPRITES_XPOS[place_sprites::j2#3] = place_sprites::spr_x#2 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z spr_x
    ldy.z j2
    sta SPRITES_XPOS,y
    // [74] SPRITES_YPOS[place_sprites::j2#3] = $50 -- pbuc1_derefidx_vbuz1=vbuc2 
    lda #$50
    ldy.z j2
    sta SPRITES_YPOS,y
    // [75] SPRITES_COLOR[place_sprites::j#2] = place_sprites::col#2 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z col
    ldy.z j
    sta SPRITES_COLOR,y
    // [76] place_sprites::spr_x#1 = place_sprites::spr_x#2 + $20 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z spr_x
    axs #-[$20]
    stx.z spr_x
    // [77] place_sprites::col#1 = place_sprites::col#2 ^ 7^5 -- vbuz1=vbuz1_bxor_vbuc1 
    lda #7^5
    eor.z col
    sta.z col
    // [78] place_sprites::j2#1 = ++ place_sprites::j2#3 -- vbuxx=_inc_vbuz1 
    ldx.z j2
    inx
    // [79] place_sprites::j2#2 = ++ place_sprites::j2#1 -- vbuz1=_inc_vbuxx 
    inx
    stx.z j2
    // [80] place_sprites::j#1 = ++ place_sprites::j#2 -- vbuz1=_inc_vbuz1 
    inc.z j
    // [81] if(place_sprites::j#1!=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:
    // [82] return 
    rts
}
  // gen_sprites
gen_sprites: {
    .label spr = $f
    .label i = 2
    // [84] phi from gen_sprites to gen_sprites::@1 [phi:gen_sprites->gen_sprites::@1]
  __b1_from_gen_sprites:
    // [84] phi gen_sprites::spr#2 = sprites [phi:gen_sprites->gen_sprites::@1#0] -- pbuz1=pbuc1 
    lda #<sprites
    sta.z spr
    lda #>sprites
    sta.z spr+1
    // [84] phi gen_sprites::i#2 = 0 [phi:gen_sprites->gen_sprites::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp __b1
    // [84] phi from gen_sprites::@2 to gen_sprites::@1 [phi:gen_sprites::@2->gen_sprites::@1]
  __b1_from___b2:
    // [84] phi gen_sprites::spr#2 = gen_sprites::spr#1 [phi:gen_sprites::@2->gen_sprites::@1#0] -- register_copy 
    // [84] phi gen_sprites::i#2 = gen_sprites::i#1 [phi:gen_sprites::@2->gen_sprites::@1#1] -- register_copy 
    jmp __b1
    // gen_sprites::@1
  __b1:
    // [85] gen_chargen_sprite::ch#0 = gen_sprites::cml[gen_sprites::i#2] -- vbuxx=pbuc1_derefidx_vbuz1 
    ldy.z i
    ldx cml,y
    // [86] gen_chargen_sprite::sprite#0 = 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
    // [87] call gen_chargen_sprite
    jsr gen_chargen_sprite
    jmp __b2
    // gen_sprites::@2
  __b2:
    // [88] gen_sprites::spr#1 = gen_sprites::spr#2 + $40 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$40
    clc
    adc.z spr
    sta.z spr
    bcc !+
    inc.z spr+1
  !:
    // [89] gen_sprites::i#1 = ++ gen_sprites::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [90] if(gen_sprites::i#1!=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:
    // [91] return 
    rts
  .segment Data
    cml: .text "camelot"
}
.segment Code
  // progress_init
// Initialize the PETSCII progress bar
// void progress_init(__zp($a) char *line)
progress_init: {
    .label line = $a
    // [93] progress_cursor#23 = progress_init::line#2
    jmp __breturn
    // progress_init::@return
  __breturn:
    // [94] return 
    rts
}
  // gen_sintab
// Generate a sine 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 sine
// - max is the maximum value of the generated sine
// void gen_sintab(__zp($13) char *sintab, __zp(4) char length, __zp(3) char min, __register(X) char max)
gen_sintab: {
    // amplitude/2
    .label f_2pi = $e2e5
    .label __20 = $15
    .label i = 5
    .label min = 3
    .label length = 4
    .label sintab = $13
    // [96] setFAC::w#0 = (unsigned int)gen_sintab::max#2 -- vwuz1=_word_vbuxx 
    txa
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [97] call setFAC
  // 2 * PI
    // [177] phi from gen_sintab to setFAC [phi:gen_sintab->setFAC]
  setFAC_from_gen_sintab:
    // [177] phi setFAC::prepareMEM1_mem#0 = setFAC::w#0 [phi:gen_sintab->setFAC#0] -- register_copy 
    jsr setFAC
    // [98] phi from gen_sintab to gen_sintab::@3 [phi:gen_sintab->gen_sintab::@3]
  __b3_from_gen_sintab:
    jmp __b3
    // gen_sintab::@3
  __b3:
    // [99] call setARGtoFAC
    // fac = max
    jsr setARGtoFAC
    jmp __b4
    // gen_sintab::@4
  __b4:
    // [100] setFAC::w#1 = (unsigned int)gen_sintab::min#2 -- vwuz1=_word_vbuz2 
    lda.z min
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [101] call setFAC
  // arg = max
    // [177] phi from gen_sintab::@4 to setFAC [phi:gen_sintab::@4->setFAC]
  setFAC_from___b4:
    // [177] phi setFAC::prepareMEM1_mem#0 = setFAC::w#1 [phi:gen_sintab::@4->setFAC#0] -- register_copy 
    jsr setFAC
    // [102] 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:
    // [103] call setMEMtoFAC
  // fac = min
    // [186] phi from gen_sintab::@5 to setMEMtoFAC [phi:gen_sintab::@5->setMEMtoFAC]
  setMEMtoFAC_from___b5:
    // [186] phi setMEMtoFAC::mem#5 = 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
    // [104] 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:
    // [105] call subFACfromARG
    // f_min = min
    jsr subFACfromARG
    // [106] 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:
    // [107] call setMEMtoFAC
  // fac = max - min
    // [186] phi from gen_sintab::@7 to setMEMtoFAC [phi:gen_sintab::@7->setMEMtoFAC]
  setMEMtoFAC_from___b7:
    // [186] phi setMEMtoFAC::mem#5 = 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
    // [108] 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:
    // [109] call setFAC
  // f_amp = max - min
    // [177] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC]
  setFAC_from___b8:
    // [177] phi setFAC::prepareMEM1_mem#0 = 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
    // [110] 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:
    // [111] call divMEMbyFAC
  // fac = 2
    // [195] phi from gen_sintab::@9 to divMEMbyFAC [phi:gen_sintab::@9->divMEMbyFAC]
  divMEMbyFAC_from___b9:
    // [195] phi divMEMbyFAC::mem#2 = 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
    // [112] 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:
    // [113] call setMEMtoFAC
  // fac = (max - min) / 2
    // [186] phi from gen_sintab::@10 to setMEMtoFAC [phi:gen_sintab::@10->setMEMtoFAC]
  setMEMtoFAC_from___b10:
    // [186] phi setMEMtoFAC::mem#5 = 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
    // [114] 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:
    // [115] call addMEMtoFAC
  // f_amp = (max - min) / 2
    // [202] phi from gen_sintab::@11 to addMEMtoFAC [phi:gen_sintab::@11->addMEMtoFAC]
  addMEMtoFAC_from___b11:
    jsr addMEMtoFAC
    // [116] 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:
    // [117] call setMEMtoFAC
  // fac = min + (max - min) / 2
    // [186] phi from gen_sintab::@12 to setMEMtoFAC [phi:gen_sintab::@12->setMEMtoFAC]
  setMEMtoFAC_from___b12:
    // [186] phi setMEMtoFAC::mem#5 = 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
    // [118] phi from gen_sintab::@12 to gen_sintab::@1 [phi:gen_sintab::@12->gen_sintab::@1]
  __b1_from___b12:
    // [118] phi progress_cursor#12 = progress_cursor#23 [phi:gen_sintab::@12->gen_sintab::@1#0] -- register_copy 
    // [118] phi progress_idx#13 = 0 [phi:gen_sintab::@12->gen_sintab::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z progress_idx
    // [118] phi gen_sintab::i#10 = 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:
    // [119] if(gen_sintab::i#10<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:
    // [120] return 
    rts
    // gen_sintab::@2
  __b2:
    // [121] setFAC::w#3 = (unsigned int)gen_sintab::i#10 -- vwuz1=_word_vbuz2 
    lda.z i
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [122] call setFAC
    // [177] phi from gen_sintab::@2 to setFAC [phi:gen_sintab::@2->setFAC]
  setFAC_from___b2:
    // [177] phi setFAC::prepareMEM1_mem#0 = setFAC::w#3 [phi:gen_sintab::@2->setFAC#0] -- register_copy 
    jsr setFAC
    // [123] 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:
    // [124] call mulFACbyMEM
  // fac = i
    // [207] phi from gen_sintab::@13 to mulFACbyMEM [phi:gen_sintab::@13->mulFACbyMEM]
  mulFACbyMEM_from___b13:
    // [207] phi mulFACbyMEM::mem#2 = 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
    // [125] 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:
    // [126] call setMEMtoFAC
  // fac = i * 2 * PI
    // [186] phi from gen_sintab::@14 to setMEMtoFAC [phi:gen_sintab::@14->setMEMtoFAC]
  setMEMtoFAC_from___b14:
    // [186] phi setMEMtoFAC::mem#5 = 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:
    // [127] setFAC::w#4 = (unsigned int)gen_sintab::length#10 -- vwuz1=_word_vbuz2 
    lda.z length
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [128] call setFAC
  // f_i = i * 2 * PI
    // [177] phi from gen_sintab::@15 to setFAC [phi:gen_sintab::@15->setFAC]
  setFAC_from___b15:
    // [177] phi setFAC::prepareMEM1_mem#0 = setFAC::w#4 [phi:gen_sintab::@15->setFAC#0] -- register_copy 
    jsr setFAC
    // [129] 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:
    // [130] call divMEMbyFAC
  // fac = length
    // [195] phi from gen_sintab::@16 to divMEMbyFAC [phi:gen_sintab::@16->divMEMbyFAC]
  divMEMbyFAC_from___b16:
    // [195] phi divMEMbyFAC::mem#2 = 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
    // [131] 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:
    // [132] call sinFAC
    // fac = i * 2 * PI / length
    jsr sinFAC
    // [133] 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:
    // [134] call mulFACbyMEM
  // fac = sin( i * 2 * PI / length )
    // [207] phi from gen_sintab::@18 to mulFACbyMEM [phi:gen_sintab::@18->mulFACbyMEM]
  mulFACbyMEM_from___b18:
    // [207] phi mulFACbyMEM::mem#2 = 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
    // [135] 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:
    // [136] call addMEMtoFAC
  // fac =  sin( i * 2 * PI / length ) * (max - min) / 2
    // [202] phi from gen_sintab::@19 to addMEMtoFAC [phi:gen_sintab::@19->addMEMtoFAC]
  addMEMtoFAC_from___b19:
    jsr addMEMtoFAC
    // [137] 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:
    // [138] call getFAC
    jsr getFAC
    // [139] getFAC::return#2 = getFAC::return#0
    jmp __b21
    // gen_sintab::@21
  __b21:
    // [140] gen_sintab::$20 = getFAC::return#2
    // [141] gen_sintab::sintab#13[gen_sintab::i#10] = (char)gen_sintab::$20 -- pbuz1_derefidx_vbuz2=_byte_vwuz3 
    // fac =  sin( i * 2 * PI / length ) * (max - min) / 2 + min + (max - min) / 2
    lda.z __20
    ldy.z i
    sta (sintab),y
    // [142] call progress_inc
    jsr progress_inc
    jmp __b22
    // gen_sintab::@22
  __b22:
    // [143] gen_sintab::i#1 = ++ gen_sintab::i#10 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [118] phi from gen_sintab::@22 to gen_sintab::@1 [phi:gen_sintab::@22->gen_sintab::@1]
  __b1_from___b22:
    // [118] phi progress_cursor#12 = progress_cursor#10 [phi:gen_sintab::@22->gen_sintab::@1#0] -- register_copy 
    // [118] phi progress_idx#13 = progress_idx#11 [phi:gen_sintab::@22->gen_sintab::@1#1] -- register_copy 
    // [118] phi gen_sintab::i#10 = gen_sintab::i#1 [phi:gen_sintab::@22->gen_sintab::@1#2] -- register_copy 
    jmp __b1
  .segment Data
    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
}
.segment Code
  // 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
// void gen_chargen_sprite(__register(X) char ch, __zp($a) char *sprite)
gen_chargen_sprite: {
    .label __0 = $15
    .label __14 = $15
    .label sprite = $a
    .label chargen = $15
    .label bits = 5
    // current sprite char
    .label s_gen = 9
    .label x = 6
    .label y = 4
    // Find the current chargen pixel (c)
    .label c = 8
    // [144] gen_chargen_sprite::$14 = (unsigned int)gen_chargen_sprite::ch#0 -- vwuz1=_word_vbuxx 
    txa
    sta.z __14
    lda #0
    sta.z __14+1
    // [145] gen_chargen_sprite::$0 = gen_chargen_sprite::$14 << 3 -- vwuz1=vwuz1_rol_3 
    asl.z __0
    rol.z __0+1
    asl.z __0
    rol.z __0+1
    asl.z __0
    rol.z __0+1
    // [146] gen_chargen_sprite::chargen#0 = CHARGEN + gen_chargen_sprite::$0 -- pbuz1=pbuc1_plus_vwuz1 
    lda.z chargen
    clc
    adc #<CHARGEN
    sta.z chargen
    lda.z chargen+1
    adc #>CHARGEN
    sta.z chargen+1
    // asm { sei  }
    sei
    // [148] *PROCPORT = $32 -- _deref_pbuc1=vbuc2 
    lda #$32
    sta PROCPORT
    // [149] phi from gen_chargen_sprite to gen_chargen_sprite::@1 [phi:gen_chargen_sprite->gen_chargen_sprite::@1]
  __b1_from_gen_chargen_sprite:
    // [149] phi gen_chargen_sprite::sprite#11 = gen_chargen_sprite::sprite#0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#0] -- register_copy 
    // [149] phi gen_chargen_sprite::y#2 = 0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z y
    jmp __b1
    // [149] phi from gen_chargen_sprite::@8 to gen_chargen_sprite::@1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@1]
  __b1_from___b8:
    // [149] phi gen_chargen_sprite::sprite#11 = gen_chargen_sprite::sprite#2 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@1#0] -- register_copy 
    // [149] phi gen_chargen_sprite::y#2 = gen_chargen_sprite::y#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@1#1] -- register_copy 
    jmp __b1
    // gen_chargen_sprite::@1
  __b1:
    // [150] gen_chargen_sprite::bits#0 = gen_chargen_sprite::chargen#0[gen_chargen_sprite::y#2] -- vbuz1=pbuz2_derefidx_vbuz3 
    // current chargen line
    ldy.z y
    lda (chargen),y
    sta.z bits
    // [151] phi from gen_chargen_sprite::@1 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2]
  __b2_from___b1:
    // [151] phi gen_chargen_sprite::x#6 = 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z x
    // [151] phi gen_chargen_sprite::sprite#10 = gen_chargen_sprite::sprite#11 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#1] -- register_copy 
    // [151] phi gen_chargen_sprite::s_gen_cnt#4 = 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#2] -- vbuyy=vbuc1 
    ldy #0
    // [151] phi gen_chargen_sprite::s_gen#5 = 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#3] -- vbuz1=vbuc1 
    lda #0
    sta.z s_gen
    // [151] phi gen_chargen_sprite::bits#2 = gen_chargen_sprite::bits#0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#4] -- register_copy 
    jmp __b2
    // [151] phi from gen_chargen_sprite::@7 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2]
  __b2_from___b7:
    // [151] phi gen_chargen_sprite::x#6 = gen_chargen_sprite::x#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#0] -- register_copy 
    // [151] phi gen_chargen_sprite::sprite#10 = gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#1] -- register_copy 
    // [151] phi gen_chargen_sprite::s_gen_cnt#4 = gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#2] -- register_copy 
    // [151] phi gen_chargen_sprite::s_gen#5 = gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#3] -- register_copy 
    // [151] phi gen_chargen_sprite::bits#2 = gen_chargen_sprite::bits#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#4] -- register_copy 
    jmp __b2
    // gen_chargen_sprite::@2
  __b2:
    // [152] gen_chargen_sprite::$2 = gen_chargen_sprite::bits#2 & $80 -- vbuaa=vbuz1_band_vbuc1 
    lda #$80
    and.z bits
    // [153] if(gen_chargen_sprite::$2==0) goto gen_chargen_sprite::@3 -- vbuaa_eq_0_then_la1 
    cmp #0
    beq __b3_from___b2
    // [154] 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:
    // [155] phi from gen_chargen_sprite::@10 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@10->gen_chargen_sprite::@3]
  __b3_from___b10:
    // [155] phi gen_chargen_sprite::c#3 = 1 [phi:gen_chargen_sprite::@10->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 
    lda #1
    sta.z c
    jmp __b3
    // [155] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3]
  __b3_from___b2:
    // [155] phi gen_chargen_sprite::c#3 = 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:
    // [156] phi from gen_chargen_sprite::@3 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4]
  __b4_from___b3:
    // [156] phi gen_chargen_sprite::sprite#3 = gen_chargen_sprite::sprite#10 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#0] -- register_copy 
    // [156] phi gen_chargen_sprite::b#2 = 0 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#1] -- vbuxx=vbuc1 
    ldx #0
    // [156] phi gen_chargen_sprite::s_gen_cnt#3 = gen_chargen_sprite::s_gen_cnt#4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#2] -- register_copy 
    // [156] phi gen_chargen_sprite::s_gen#3 = 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 char (s_gen)
    // [156] phi from gen_chargen_sprite::@5 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4]
  __b4_from___b5:
    // [156] phi gen_chargen_sprite::sprite#3 = gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#0] -- register_copy 
    // [156] phi gen_chargen_sprite::b#2 = gen_chargen_sprite::b#1 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#1] -- register_copy 
    // [156] phi gen_chargen_sprite::s_gen_cnt#3 = gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#2] -- register_copy 
    // [156] phi gen_chargen_sprite::s_gen#3 = 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:
    // [157] gen_chargen_sprite::$5 = gen_chargen_sprite::s_gen#3 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z s_gen
    asl
    // [158] gen_chargen_sprite::s_gen#1 = gen_chargen_sprite::$5 | gen_chargen_sprite::c#3 -- vbuz1=vbuaa_bor_vbuz2 
    ora.z c
    sta.z s_gen
    // [159] gen_chargen_sprite::s_gen_cnt#1 = ++ gen_chargen_sprite::s_gen_cnt#3 -- vbuyy=_inc_vbuyy 
    iny
    // [160] if(gen_chargen_sprite::s_gen_cnt#1!=8) goto gen_chargen_sprite::@5 -- vbuyy_neq_vbuc1_then_la1 
    cpy #8
    bne __b5_from___b4
    jmp __b6
    // gen_chargen_sprite::@6
  __b6:
    // [161] *gen_chargen_sprite::sprite#3 = gen_chargen_sprite::s_gen#1 -- _deref_pbuz1=vbuz2 
    // sprite char filled - store and move to next char
    lda.z s_gen
    ldy #0
    sta (sprite),y
    // [162] gen_chargen_sprite::sprite#3[3] = gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 
    lda.z s_gen
    ldy #3
    sta (sprite),y
    // [163] gen_chargen_sprite::sprite#3[6] = gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 
    lda.z s_gen
    ldy #6
    sta (sprite),y
    // [164] gen_chargen_sprite::sprite#1 = ++ gen_chargen_sprite::sprite#3 -- pbuz1=_inc_pbuz1 
    inc.z sprite
    bne !+
    inc.z sprite+1
  !:
    // [165] phi from gen_chargen_sprite::@6 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5]
  __b5_from___b6:
    // [165] phi gen_chargen_sprite::sprite#4 = gen_chargen_sprite::sprite#1 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5#0] -- register_copy 
    // [165] phi gen_chargen_sprite::s_gen_cnt#5 = 0 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5#1] -- vbuyy=vbuc1 
    ldy #0
    // [165] phi gen_chargen_sprite::s_gen#6 = 0 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5#2] -- vbuz1=vbuc1 
    lda #0
    sta.z s_gen
    jmp __b5
    // [165] phi from gen_chargen_sprite::@4 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5]
  __b5_from___b4:
    // [165] phi gen_chargen_sprite::sprite#4 = gen_chargen_sprite::sprite#3 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#0] -- register_copy 
    // [165] phi gen_chargen_sprite::s_gen_cnt#5 = gen_chargen_sprite::s_gen_cnt#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#1] -- register_copy 
    // [165] phi gen_chargen_sprite::s_gen#6 = 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:
    // [166] gen_chargen_sprite::b#1 = ++ gen_chargen_sprite::b#2 -- vbuxx=_inc_vbuxx 
    inx
    // [167] if(gen_chargen_sprite::b#1!=3) goto gen_chargen_sprite::@4 -- vbuxx_neq_vbuc1_then_la1 
    cpx #3
    bne __b4_from___b5
    jmp __b7
    // gen_chargen_sprite::@7
  __b7:
    // [168] gen_chargen_sprite::bits#1 = gen_chargen_sprite::bits#2 << 1 -- vbuz1=vbuz1_rol_1 
    asl.z bits
    // [169] gen_chargen_sprite::x#1 = ++ gen_chargen_sprite::x#6 -- vbuz1=_inc_vbuz1 
    inc.z x
    // [170] if(gen_chargen_sprite::x#1!=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:
    // [171] gen_chargen_sprite::sprite#2 = gen_chargen_sprite::sprite#4 + 6 -- pbuz1=pbuz1_plus_vbuc1 
    lda #6
    clc
    adc.z sprite
    sta.z sprite
    bcc !+
    inc.z sprite+1
  !:
    // [172] gen_chargen_sprite::y#1 = ++ gen_chargen_sprite::y#2 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [173] if(gen_chargen_sprite::y#1!=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:
    // [174] *PROCPORT = $37 -- _deref_pbuc1=vbuc2 
    lda #$37
    sta PROCPORT
    // asm { cli  }
    cli
    jmp __breturn
    // gen_chargen_sprite::@return
  __breturn:
    // [176] return 
    rts
}
  // setFAC
// FAC = unsigned int
// Set the FAC (floating point accumulator) to the integer value of a 16bit unsigned int
// void setFAC(__zp($f) unsigned int w)
setFAC: {
    .label prepareMEM1_mem = $f
    .label w = $f
    jmp prepareMEM1
    // setFAC::prepareMEM1
  prepareMEM1:
    // [178] setFAC::prepareMEM1_$0 = byte0  setFAC::prepareMEM1_mem#0 -- vbuaa=_byte0_vwuz1 
    lda.z prepareMEM1_mem
    // [179] *memLo = setFAC::prepareMEM1_$0 -- _deref_pbuc1=vbuaa 
    sta memLo
    // [180] setFAC::prepareMEM1_$1 = byte1  setFAC::prepareMEM1_mem#0 -- vbuaa=_byte1_vwuz1 
    lda.z prepareMEM1_mem+1
    // [181] *memHi = setFAC::prepareMEM1_$1 -- _deref_pbuc1=vbuaa 
    sta memHi
    jmp __b1
    // setFAC::@1
  __b1:
    // asm { ldymemLo ldamemHi jsr$b391  }
    // Load unsigned int register Y,A into FAC (floating point accumulator)
    ldy memLo
    lda memHi
    jsr $b391
    jmp __breturn
    // setFAC::@return
  __breturn:
    // [183] 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:
    // [185] return 
    rts
}
  // setMEMtoFAC
// MEM = FAC
// Stores the value of the FAC to memory
// Stores 5 chars (means it is necessary to allocate 5 chars to avoid clobbering other data using eg. char[] mem = {0, 0, 0, 0, 0};)
// void setMEMtoFAC(__zp($f) char *mem)
setMEMtoFAC: {
    .label mem = $f
    jmp prepareMEM1
    // setMEMtoFAC::prepareMEM1
  prepareMEM1:
    // [187] setMEMtoFAC::prepareMEM1_$0 = byte0  (unsigned int)setMEMtoFAC::mem#5 -- vbuaa=_byte0_vwuz1 
    lda.z mem
    // [188] *memLo = setMEMtoFAC::prepareMEM1_$0 -- _deref_pbuc1=vbuaa 
    sta memLo
    // [189] setMEMtoFAC::prepareMEM1_$1 = byte1  (unsigned int)setMEMtoFAC::mem#5 -- vbuaa=_byte1_vwuz1 
    lda.z mem+1
    // [190] *memHi = 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:
    // [192] return 
    rts
}
  // subFACfromARG
// FAC = ARG-FAC
// Set FAC to ARG minus FAC
subFACfromARG: {
    // asm { jsr$b853  }
    jsr $b853
    jmp __breturn
    // subFACfromARG::@return
  __breturn:
    // [194] return 
    rts
}
  // divMEMbyFAC
// FAC = MEM/FAC
// Set FAC to MEM (float saved in memory) divided by FAC (float accumulator)
// Reads 5 chars from memory
// void divMEMbyFAC(__zp($15) char *mem)
divMEMbyFAC: {
    .label mem = $15
    jmp prepareMEM1
    // divMEMbyFAC::prepareMEM1
  prepareMEM1:
    // [196] divMEMbyFAC::prepareMEM1_$0 = byte0  (unsigned int)divMEMbyFAC::mem#2 -- vbuaa=_byte0_vwuz1 
    lda.z mem
    // [197] *memLo = divMEMbyFAC::prepareMEM1_$0 -- _deref_pbuc1=vbuaa 
    sta memLo
    // [198] divMEMbyFAC::prepareMEM1_$1 = byte1  (unsigned int)divMEMbyFAC::mem#2 -- vbuaa=_byte1_vwuz1 
    lda.z mem+1
    // [199] *memHi = 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:
    // [201] return 
    rts
}
  // addMEMtoFAC
// FAC = MEM+FAC
// Set FAC to MEM (float saved in memory) plus FAC (float accumulator)
// Reads 5 chars from memory
// void addMEMtoFAC(char *mem)
addMEMtoFAC: {
    jmp prepareMEM1
    // addMEMtoFAC::prepareMEM1
  prepareMEM1:
    // [203] *memLo = byte0 (unsigned int)gen_sintab::f_min -- _deref_pbuc1=vbuc2 
    lda #<gen_sintab.f_min
    sta memLo
    // [204] *memHi = byte1 (unsigned int)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:
    // [206] return 
    rts
}
  // mulFACbyMEM
// FAC = MEM*FAC
// Set FAC to MEM (float saved in memory) multiplied by FAC (float accumulator)
// Reads 5 chars from memory
// void mulFACbyMEM(__zp($15) char *mem)
mulFACbyMEM: {
    .label mem = $15
    jmp prepareMEM1
    // mulFACbyMEM::prepareMEM1
  prepareMEM1:
    // [208] mulFACbyMEM::prepareMEM1_$0 = byte0  (unsigned int)mulFACbyMEM::mem#2 -- vbuaa=_byte0_vwuz1 
    lda.z mem
    // [209] *memLo = mulFACbyMEM::prepareMEM1_$0 -- _deref_pbuc1=vbuaa 
    sta memLo
    // [210] mulFACbyMEM::prepareMEM1_$1 = byte1  (unsigned int)mulFACbyMEM::mem#2 -- vbuaa=_byte1_vwuz1 
    lda.z mem+1
    // [211] *memHi = 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:
    // [213] return 
    rts
}
  // sinFAC
// FAC = sin(FAC)
// Set FAC to sine of the FAC - sin(FAC)
// Sine is calculated on radians (0-2*PI)
sinFAC: {
    // asm { jsr$e26b  }
    jsr $e26b
    jmp __breturn
    // sinFAC::@return
  __breturn:
    // [215] return 
    rts
}
  // getFAC
// unsigned int = FAC
// Get the value of the FAC (floating point accumulator) as an integer 16bit unsigned int
// Destroys the value in the FAC in the process
getFAC: {
    .label return = $15
    // asm { jsr$b1aa stymemLo stamemHi  }
    // Load FAC (floating point accumulator) integer part into unsigned int register Y,A
    jsr $b1aa
    sty memLo
    sta memHi
    // [217] getFAC::return#0 = *memHi w= *memLo -- vwuz1=_deref_pbuc1_word__deref_pbuc2 
    lda memHi
    sta.z return+1
    lda memLo
    sta.z return
    jmp __breturn
    // getFAC::@return
  __breturn:
    // [218] return 
    rts
}
  // 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: {
    // [219] progress_idx#9 = ++ progress_idx#13 -- vbuz1=_inc_vbuz1 
    inc.z progress_idx
    // [220] if(progress_idx#9!=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:
    // [221] *progress_cursor#12 = *(progress_inc::progress_chars+8) -- _deref_pbuz1=_deref_pbuc1 
    lda progress_chars+8
    ldy #0
    sta (progress_cursor),y
    // [222] progress_cursor#9 = ++ progress_cursor#12 -- pbuz1=_inc_pbuz1 
    inc.z progress_cursor
    bne !+
    inc.z progress_cursor+1
  !:
    // [223] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1]
  __b1_from___b2:
    // [223] phi progress_cursor#10 = progress_cursor#9 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy 
    // [223] phi progress_idx#11 = 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z progress_idx
    jmp __b1
    // [223] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1]
  __b1_from_progress_inc:
    // [223] phi progress_cursor#10 = progress_cursor#12 [phi:progress_inc->progress_inc::@1#0] -- register_copy 
    // [223] phi progress_idx#11 = progress_idx#9 [phi:progress_inc->progress_inc::@1#1] -- register_copy 
    jmp __b1
    // progress_inc::@1
  __b1:
    // [224] *progress_cursor#10 = progress_inc::progress_chars[progress_idx#11] -- _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:
    // [225] return 
    rts
  .segment Data
    // Progress characters
    progress_chars: .byte $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0
}
  // File Data
  sintab_x: .fill $dd, 0
  sintab_y: .fill $c5, 0

ASSEMBLER OPTIMIZATIONS
Removing instruction jmp __b1
Removing instruction jmp __b2
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 __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 __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __breturn
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 __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 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 __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 __b2
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 #$7f
Removing instruction lda #$7f
Removing instruction ldy.z j2
Removing instruction lda #0
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 memHi
Replacing instruction lda memLo with TYA
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label __b1_from___b1 with __b1
Replacing label __b1_from___b2 with __b1
Replacing label __b1_from___b1 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___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_progress_inc with __b1
Removing instruction __b1_from___b1:
Removing instruction __b1_from___b2:
Removing instruction __b2_from___b1:
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___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 __b1_from___b2:
Removing instruction __b3_from_gen_sintab:
Removing instruction __b5_from___b4:
Removing instruction __b6_from___b5:
Removing instruction __b7_from___b6:
Removing instruction __b8_from___b7:
Removing instruction __b9_from___b8:
Removing instruction __b10_from___b9:
Removing instruction __b11_from___b10:
Removing instruction __b12_from___b11:
Removing instruction __b13_from___b2:
Removing instruction __b14_from___b13:
Removing instruction __b16_from___b15:
Removing instruction __b17_from___b16:
Removing instruction __b18_from___b17:
Removing instruction __b19_from___b18:
Removing instruction __b20_from___b19:
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_progress_inc:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction init_from_main:
Removing instruction __b1_from_main:
Removing instruction __b2:
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 __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 __b1_from_clear_screen:
Removing instruction __breturn:
Removing instruction __b1_from___b2:
Removing instruction __b1_from_place_sprites:
Removing instruction __breturn:
Removing instruction __b1_from_gen_sprites:
Removing instruction __b2:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction setFAC_from_gen_sintab:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction setFAC_from___b4:
Removing instruction __b5:
Removing instruction setMEMtoFAC_from___b5:
Removing instruction __b6:
Removing instruction __b7:
Removing instruction setMEMtoFAC_from___b7:
Removing instruction __b8:
Removing instruction setFAC_from___b8:
Removing instruction __b9:
Removing instruction divMEMbyFAC_from___b9:
Removing instruction __b10:
Removing instruction setMEMtoFAC_from___b10:
Removing instruction __b11:
Removing instruction addMEMtoFAC_from___b11:
Removing instruction __b12:
Removing instruction setMEMtoFAC_from___b12:
Removing instruction __b1_from___b12:
Removing instruction __breturn:
Removing instruction setFAC_from___b2:
Removing instruction __b13:
Removing instruction mulFACbyMEM_from___b13:
Removing instruction __b14:
Removing instruction setMEMtoFAC_from___b14:
Removing instruction __b15:
Removing instruction setFAC_from___b15:
Removing instruction __b16:
Removing instruction divMEMbyFAC_from___b16:
Removing instruction __b17:
Removing instruction __b18:
Removing instruction mulFACbyMEM_from___b18:
Removing instruction __b19:
Removing instruction addMEMtoFAC_from___b19:
Removing instruction __b20:
Removing instruction __b21:
Removing instruction __b22:
Removing instruction __b1_from___b22:
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 prepareMEM1:
Removing instruction __b1:
Removing instruction __breturn:
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 __b2:
Removing instruction __b1_from___b2:
Removing instruction __breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Relabelling long label __b3_from___b2 to __b6
Succesful ASM optimization Pass5RelabelLongLabels
Removing instruction jmp __b1
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 __b2
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b1
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda.z s_gen
Removing instruction lda memHi
Replacing instruction ldy memHi with TAY
Succesful ASM optimization Pass5UnnecesaryLoadElimination

FINAL SYMBOL TABLE
__constant char * const CHARGEN = (char *) 53248
__constant char * const COLS = (char *) 55296
__constant char OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
__constant char OFFSET_STRUCT_MOS6569_VICII_RASTER = $12
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE = $15
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X = $1d
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_Y = $17
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB = $10
__constant char * const PROCPORT = (char *) 1
__constant char RADIX::BINARY = 2
__constant char RADIX::DECIMAL = $a
__constant char RADIX::HEXADECIMAL = $10
__constant char RADIX::OCTAL = 8
__constant char * const SCREEN = (char *) 1024
__constant char * const SPRITES_COLOR = (char *) 53287
__constant char * const SPRITES_XPOS = (char *) 53248
__constant char * const SPRITES_YPOS = (char *) 53249
__constant struct MOS6569_VICII * const VICII = (struct MOS6569_VICII *) 53248
void addMEMtoFAC(char *mem)
char *addMEMtoFAC::mem
unsigned int addMEMtoFAC::prepareMEM1_mem
void anim()
char anim::$10 // reg byte a 20002.0
char anim::$7 // zp[1]:8 10001.0
char anim::$8 // reg byte a 20002.0
char anim::j
char anim::j#1 // j zp[1]:3 15001.5
char anim::j#2 // j zp[1]:3 1176.5882352941176
char anim::j2
char anim::j2#1 // j2 zp[1]:9 6667.333333333333
char anim::j2#2 // j2 zp[1]:9 2500.25
unsigned int anim::x
unsigned int anim::x#0 // x zp[2]:19 7500.75
char anim::x_msb
char anim::x_msb#1 // x_msb zp[1]:8 1340.2
char anim::x_msb#2 // x_msb zp[1]:8 10001.0
char anim::xidx
char anim::xidx#0 // xidx zp[1]:6 101.0
char anim::xidx#1 // xidx zp[1]:6 20002.0
char anim::xidx#2 // xidx zp[1]:6 20002.0
char anim::xidx#3 // xidx zp[1]:6 3763.0
char anim::xidx#5 // xidx zp[1]:6 3750.375
char anim::yidx
char anim::yidx#0 // yidx zp[1]:2 202.0
char anim::yidx#1 // yidx zp[1]:2 20002.0
char anim::yidx#2 // yidx zp[1]:2 20002.0
char anim::yidx#3 // yidx zp[1]:2 2508.6666666666665
char anim::yidx#6 // yidx zp[1]:2 7500.75
void clear_screen()
char *clear_screen::sc
char *clear_screen::sc#1 // sc zp[2]:15 2002.0
char *clear_screen::sc#2 // sc zp[2]:15 1334.6666666666667
void divMEMbyFAC(char *mem)
char *divMEMbyFAC::mem
char *divMEMbyFAC::mem#2 // mem zp[2]:21
char divMEMbyFAC::prepareMEM1_$0 // reg byte a 20002.0
char divMEMbyFAC::prepareMEM1_$1 // reg byte a 20002.0
unsigned int divMEMbyFAC::prepareMEM1_mem
void gen_chargen_sprite(char ch , char *sprite)
unsigned int gen_chargen_sprite::$0 // zp[2]:21 20002.0
unsigned int gen_chargen_sprite::$14 // zp[2]:21 20002.0
char gen_chargen_sprite::$2 // reg byte a 2.0000002E7
char gen_chargen_sprite::$5 // reg byte a 2.00000002E8
char gen_chargen_sprite::b
char gen_chargen_sprite::b#1 // reg byte x 1.500000015E8
char gen_chargen_sprite::b#2 // reg byte x 2.00000002E7
char gen_chargen_sprite::bits
char gen_chargen_sprite::bits#0 // bits zp[1]:5 2000002.0
char gen_chargen_sprite::bits#1 // bits zp[1]:5 6666667.333333333
char gen_chargen_sprite::bits#2 // bits zp[1]:5 1823529.6470588236
char gen_chargen_sprite::c
char gen_chargen_sprite::c#3 // c zp[1]:8 7692307.769230769
char gen_chargen_sprite::ch
char gen_chargen_sprite::ch#0 // reg byte x 500.5
char *gen_chargen_sprite::chargen
char *gen_chargen_sprite::chargen#0 // chargen zp[2]:21 36071.5
char gen_chargen_sprite::s_gen
char gen_chargen_sprite::s_gen#1 // s_gen zp[1]:9 1.00000001E8
char gen_chargen_sprite::s_gen#3 // s_gen zp[1]:9 2.10000003E8
char gen_chargen_sprite::s_gen#5 // s_gen zp[1]:9 4000000.4
char gen_chargen_sprite::s_gen#6 // s_gen zp[1]:9 3.50000005E7
char gen_chargen_sprite::s_gen_cnt
char gen_chargen_sprite::s_gen_cnt#1 // reg byte y 1.500000015E8
char gen_chargen_sprite::s_gen_cnt#3 // reg byte y 7.0000001E7
char gen_chargen_sprite::s_gen_cnt#4 // reg byte y 4000000.4
char gen_chargen_sprite::s_gen_cnt#5 // reg byte y 3.50000005E7
char *gen_chargen_sprite::sprite
char *gen_chargen_sprite::sprite#0 // sprite zp[2]:10 1833.6666666666665
char *gen_chargen_sprite::sprite#1 // sprite zp[2]:10 2.00000002E8
char *gen_chargen_sprite::sprite#10 // sprite zp[2]:10 4200000.6
char *gen_chargen_sprite::sprite#11 // sprite zp[2]:10 1005001.5
char *gen_chargen_sprite::sprite#2 // sprite zp[2]:10 666667.3333333334
char *gen_chargen_sprite::sprite#3 // sprite zp[2]:10 7.6250000875E7
char *gen_chargen_sprite::sprite#4 // sprite zp[2]:10 5.183333416666667E7
char gen_chargen_sprite::x
char gen_chargen_sprite::x#1 // x zp[1]:6 1.50000015E7
char gen_chargen_sprite::x#6 // x zp[1]:6 1111111.2222222222
char gen_chargen_sprite::y
char gen_chargen_sprite::y#1 // y zp[1]:4 1500001.5
char gen_chargen_sprite::y#2 // y zp[1]:4 130434.91304347827
void gen_sintab(char *sintab , char length , char min , char max)
unsigned int gen_sintab::$20 // zp[2]:21 1001.0
__constant char *gen_sintab::f_2pi = (char *) 58085
__constant char gen_sintab::f_amp[] = { 0, 0, 0, 0, 0 }
__constant char gen_sintab::f_i[] = { 0, 0, 0, 0, 0 }
__constant char gen_sintab::f_min[] = { 0, 0, 0, 0, 0 }
char gen_sintab::i
char gen_sintab::i#1 // i zp[1]:5 2002.0
char gen_sintab::i#10 // i zp[1]:5 166.83333333333334
char gen_sintab::length
char gen_sintab::length#10 // length zp[1]:4 20.854166666666668
char gen_sintab::max
char gen_sintab::max#2 // reg byte x
char gen_sintab::min
char gen_sintab::min#2 // min zp[1]:3
char *gen_sintab::sintab
char *gen_sintab::sintab#13 // sintab zp[2]:19 20.854166666666668
void gen_sprites()
__constant char gen_sprites::cml[] = "camelot"z
char gen_sprites::i
char gen_sprites::i#1 // i zp[1]:2 1501.5
char gen_sprites::i#2 // i zp[1]:2 600.5999999999999
char *gen_sprites::spr
char *gen_sprites::spr#1 // spr zp[2]:15 667.3333333333334
char *gen_sprites::spr#2 // spr zp[2]:15 750.75
unsigned int getFAC()
unsigned int getFAC::return
unsigned int getFAC::return#0 // return zp[2]:21 3667.333333333333
unsigned int getFAC::return#2 // return zp[2]:21 2002.0
unsigned int getFAC::w
void init()
char init::i
char init::i#1 // reg byte x 151.5
char init::i#2 // reg byte x 134.66666666666666
void main()
__constant char * const memHi = (char *) 255
__constant char * const memLo = (char *) 254
void mulFACbyMEM(char *mem)
char *mulFACbyMEM::mem
char *mulFACbyMEM::mem#2 // mem zp[2]:21
char mulFACbyMEM::prepareMEM1_$0 // reg byte a 20002.0
char mulFACbyMEM::prepareMEM1_$1 // reg byte a 20002.0
unsigned int mulFACbyMEM::prepareMEM1_mem
void place_sprites()
char place_sprites::col
char place_sprites::col#1 // col zp[1]:9 400.4
char place_sprites::col#2 // col zp[1]:9 429.0
char place_sprites::j
char place_sprites::j#1 // j zp[1]:5 1501.5
char place_sprites::j#2 // j zp[1]:5 400.4
char place_sprites::j2
char place_sprites::j2#1 // reg byte x 2002.0
char place_sprites::j2#2 // j2 zp[1]:8 667.3333333333334
char place_sprites::j2#3 // j2 zp[1]:8 500.5
char place_sprites::spr_id
char place_sprites::spr_id#1 // spr_id zp[1]:4 200.2
char place_sprites::spr_id#2 // spr_id zp[1]:4 1501.5
char place_sprites::spr_x
char place_sprites::spr_x#1 // spr_x zp[1]:6 333.6666666666667
char place_sprites::spr_x#2 // spr_x zp[1]:6 500.5
__constant char *place_sprites::sprites_ptr = SCREEN+$3f8
char *progress_cursor
char *progress_cursor#10 // progress_cursor zp[2]:10 6200.8
char *progress_cursor#12 // progress_cursor zp[2]:10 1196.3461538461538
char *progress_cursor#23 // progress_cursor zp[2]:10 6.9655172413793105
char *progress_cursor#9 // progress_cursor zp[2]:10 20002.0
char progress_idx
char progress_idx#11 // progress_idx zp[1]:6 4200.6
char progress_idx#13 // progress_idx zp[1]:6 478.3478260869565
char progress_idx#9 // progress_idx zp[1]:6 15001.5
void progress_inc()
__constant const char progress_inc::progress_chars[] = { $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0 }
void progress_init(char *line)
char *progress_init::line
char *progress_init::line#2 // line zp[2]:10 101.0
void setARGtoFAC()
void setFAC(unsigned int w)
char setFAC::prepareMEM1_$0 // reg byte a 20002.0
char setFAC::prepareMEM1_$1 // reg byte a 20002.0
unsigned int setFAC::prepareMEM1_mem
unsigned int setFAC::prepareMEM1_mem#0 // prepareMEM1_mem zp[2]:15 7402.0
unsigned int setFAC::w
unsigned int setFAC::w#0 // w zp[2]:15 202.0
unsigned int setFAC::w#1 // w zp[2]:15 202.0
unsigned int setFAC::w#3 // w zp[2]:15 2002.0
unsigned int setFAC::w#4 // w zp[2]:15 2002.0
void setMEMtoFAC(char *mem)
char *setMEMtoFAC::mem
char *setMEMtoFAC::mem#5 // mem zp[2]:15
char setMEMtoFAC::prepareMEM1_$0 // reg byte a 20002.0
char setMEMtoFAC::prepareMEM1_$1 // reg byte a 20002.0
unsigned int setMEMtoFAC::prepareMEM1_mem
void sinFAC()
char sin_idx_x
char sin_idx_x#12 // sin_idx_x zp[1]:4 14.0
char sin_idx_x#15 // sin_idx_x zp[1]:4 15.961538461538462
char sin_idx_x#2 // sin_idx_x zp[1]:4 101.0
char sin_idx_y
char sin_idx_y#12 // sin_idx_y zp[1]:5 28.0
char sin_idx_y#15 // sin_idx_y zp[1]:5 13.833333333333334
char sin_idx_y#2 // sin_idx_y zp[1]:5 101.0
__constant const char sinlen_x = $dd
__constant const char sinlen_y = $c5
__constant const char sintab_x[$dd] = { fill( $dd, 0) }
__constant const char sintab_y[$c5] = { fill( $c5, 0) }
__constant char * const sprites = (char *) 8192
void subFACfromARG()

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


FINAL ASSEMBLER
Score: 769686

  // File Comments
/// @file
/// Commodore 64 Registers and Constants
/// @file
/// The MOS 6526 Complex Interface Adapter (CIA)
///
/// http://archive.6502.org/datasheets/mos_6526_cia_recreated.pdf
  // Upstart
  // Commodore 64 PRG executable file
.file [name="sinus-sprites.prg", type="prg", segments="Program"]
.segmentdef Program [segments="Basic, Code, Data"]
.segmentdef Basic [start=$0801]
.segmentdef Code [start=$80d]
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
  // Global Constants & labels
  .const sinlen_x = $dd
  .const sinlen_y = $c5
  .const OFFSET_STRUCT_MOS6569_VICII_RASTER = $12
  .const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
  .const OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB = $10
  .const OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE = $15
  .const OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X = $1d
  .const OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_Y = $17
  /// Sprite X position register for sprite #0
  .label SPRITES_XPOS = $d000
  /// Sprite Y position register for sprite #0
  .label SPRITES_YPOS = $d001
  /// Sprite colors register for sprite #0
  .label SPRITES_COLOR = $d027
  /// Processor Port Register controlling RAM/ROM configuration and the datasette
  .label PROCPORT = 1
  /// The address of the CHARGEN character set
  .label CHARGEN = $d000
  /// The VIC-II MOS 6567/6569
  .label VICII = $d000
  /// 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
  .label sprites = $2000
  .label SCREEN = $400
  // Current index within the progress cursor (0-7)
  .label progress_idx = 6
  // Current position of the progress cursor
  .label progress_cursor = $a
  .label sin_idx_x = 4
  .label sin_idx_y = 5
.segment Code
  // main
main: {
    // init()
    // [1] call init
    // [6] phi from main to init [phi:main->init]
    jsr init
    // [2] phi from main to main::@1 [phi:main->main::@1]
    // [2] phi sin_idx_y#15 = 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_idx_y
    // [2] phi sin_idx_x#15 = 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 
    sta.z sin_idx_x
    // [2] phi from main::@1 main::@2 to main::@1 [phi:main::@1/main::@2->main::@1]
    // [2] phi sin_idx_y#15 = sin_idx_y#15 [phi:main::@1/main::@2->main::@1#0] -- register_copy 
    // [2] phi sin_idx_x#15 = sin_idx_x#15 [phi:main::@1/main::@2->main::@1#1] -- register_copy 
    // main::@1
  __b1:
    // while (VICII->RASTER!=$ff)
    // [3] if(*((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER)!=$ff) goto main::@1 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda #$ff
    cmp VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER
    bne __b1
    // [4] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
    // main::@2
    // anim()
    // [5] call anim
    jsr anim
    jmp __b1
}
  // init
init: {
    // clear_screen()
    // [7] call clear_screen
    // [61] phi from init to clear_screen [phi:init->clear_screen]
    jsr clear_screen
    // [8] phi from init to init::@1 [phi:init->init::@1]
    // [8] phi init::i#2 = 0 [phi:init->init::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [8] phi from init::@1 to init::@1 [phi:init::@1->init::@1]
    // [8] phi init::i#2 = init::i#1 [phi:init::@1->init::@1#0] -- register_copy 
    // init::@1
  __b1:
    // COLS[i] = $0
    // [9] COLS[init::i#2] = 0 -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #0
    sta COLS,x
    // COLS[40+i] = $b
    // [10] (COLS+$28)[init::i#2] = $b -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #$b
    sta COLS+$28,x
    // for( char i : 0..39)
    // [11] init::i#1 = ++ init::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [12] if(init::i#1!=$28) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$28
    bne __b1
    // [13] phi from init::@1 to init::@2 [phi:init::@1->init::@2]
    // init::@2
    // place_sprites()
    // [14] call place_sprites
    jsr place_sprites
    // [15] phi from init::@2 to init::@3 [phi:init::@2->init::@3]
    // init::@3
    // gen_sprites()
    // [16] call gen_sprites
    // [83] phi from init::@3 to gen_sprites [phi:init::@3->gen_sprites]
    jsr gen_sprites
    // [17] phi from init::@3 to init::@4 [phi:init::@3->init::@4]
    // init::@4
    // progress_init(SCREEN)
    // [18] call progress_init
    // [92] phi from init::@4 to progress_init [phi:init::@4->progress_init]
    // [92] phi progress_init::line#2 = 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
    // [19] phi from init::@4 to init::@5 [phi:init::@4->init::@5]
    // init::@5
    // gen_sintab(sintab_x, sinlen_x, $00, $ff)
    // [20] call gen_sintab
    // [95] phi from init::@5 to gen_sintab [phi:init::@5->gen_sintab]
    // [95] phi gen_sintab::sintab#13 = 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
    // [95] phi gen_sintab::length#10 = sinlen_x [phi:init::@5->gen_sintab#1] -- vbuz1=vbuc1 
    lda #sinlen_x
    sta.z gen_sintab.length
    // [95] phi gen_sintab::min#2 = 0 [phi:init::@5->gen_sintab#2] -- vbuz1=vbuc1 
    lda #0
    sta.z gen_sintab.min
    // [95] phi gen_sintab::max#2 = $ff [phi:init::@5->gen_sintab#3] -- vbuxx=vbuc1 
    ldx #$ff
    jsr gen_sintab
    // [21] phi from init::@5 to init::@6 [phi:init::@5->init::@6]
    // init::@6
    // progress_init(SCREEN+40)
    // [22] call progress_init
    // [92] phi from init::@6 to progress_init [phi:init::@6->progress_init]
    // [92] phi progress_init::line#2 = SCREEN+$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
    // [23] phi from init::@6 to init::@7 [phi:init::@6->init::@7]
    // init::@7
    // gen_sintab(sintab_y, sinlen_y, $32, $d0)
    // [24] call gen_sintab
    // [95] phi from init::@7 to gen_sintab [phi:init::@7->gen_sintab]
    // [95] phi gen_sintab::sintab#13 = 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
    // [95] phi gen_sintab::length#10 = sinlen_y [phi:init::@7->gen_sintab#1] -- vbuz1=vbuc1 
    lda #sinlen_y
    sta.z gen_sintab.length
    // [95] phi gen_sintab::min#2 = $32 [phi:init::@7->gen_sintab#2] -- vbuz1=vbuc1 
    lda #$32
    sta.z gen_sintab.min
    // [95] phi gen_sintab::max#2 = $d0 [phi:init::@7->gen_sintab#3] -- vbuxx=vbuc1 
    ldx #$d0
    jsr gen_sintab
    // [25] phi from init::@7 to init::@8 [phi:init::@7->init::@8]
    // init::@8
    // clear_screen()
    // [26] call clear_screen
    // [61] phi from init::@8 to clear_screen [phi:init::@8->clear_screen]
    jsr clear_screen
    // init::@return
    // }
    // [27] return 
    rts
}
  // anim
anim: {
    .label __7 = 8
    .label xidx = 6
    .label yidx = 2
    .label x = $13
    .label x_msb = 8
    .label j2 = 9
    .label j = 3
    // (VICII->BORDER_COLOR)++;
    // [28] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = ++ *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR
    // char xidx = sin_idx_x
    // [29] anim::xidx#0 = sin_idx_x#15 -- vbuz1=vbuz2 
    lda.z sin_idx_x
    sta.z xidx
    // char yidx = sin_idx_y
    // [30] anim::yidx#0 = sin_idx_y#15 -- vbuz1=vbuz2 
    lda.z sin_idx_y
    sta.z yidx
    // [31] phi from anim to anim::@3 [phi:anim->anim::@3]
    // [31] phi anim::j#2 = 0 [phi:anim->anim::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z j
    // [31] phi anim::yidx#3 = anim::yidx#0 [phi:anim->anim::@3#1] -- register_copy 
    // [31] phi anim::j2#2 = $c [phi:anim->anim::@3#2] -- vbuz1=vbuc1 
    lda #$c
    sta.z j2
    // [31] phi anim::x_msb#2 = 0 [phi:anim->anim::@3#3] -- vbuz1=vbuc1 
    lda #0
    sta.z x_msb
    // [31] phi anim::xidx#3 = anim::xidx#0 [phi:anim->anim::@3#4] -- register_copy 
    // [31] phi from anim::@5 to anim::@3 [phi:anim::@5->anim::@3]
    // [31] phi anim::j#2 = anim::j#1 [phi:anim::@5->anim::@3#0] -- register_copy 
    // [31] phi anim::yidx#3 = anim::yidx#6 [phi:anim::@5->anim::@3#1] -- register_copy 
    // [31] phi anim::j2#2 = anim::j2#1 [phi:anim::@5->anim::@3#2] -- register_copy 
    // [31] phi anim::x_msb#2 = anim::x_msb#1 [phi:anim::@5->anim::@3#3] -- register_copy 
    // [31] phi anim::xidx#3 = anim::xidx#5 [phi:anim::@5->anim::@3#4] -- register_copy 
    // anim::@3
  __b3:
    // unsigned int x = (unsigned int)$1e + sintab_x[xidx]
    // [32] anim::x#0 = $1e + sintab_x[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
    // [33] anim::$7 = anim::x_msb#2 << 1 -- vbuz1=vbuz1_rol_1 
    asl.z __7
    // BYTE1(x)
    // [34] anim::$8 = byte1  anim::x#0 -- vbuaa=_byte1_vwuz1 
    // x_msb = x_msb*2 | BYTE1(x)
    // [35] anim::x_msb#1 = anim::$7 | anim::$8 -- vbuz1=vbuz1_bor_vbuaa 
    ora.z x_msb
    sta.z x_msb
    // BYTE0(x)
    // [36] anim::$10 = byte0  anim::x#0 -- vbuaa=_byte0_vwuz1 
    lda.z x
    // SPRITES_XPOS[j2] = BYTE0(x)
    // [37] SPRITES_XPOS[anim::j2#2] = anim::$10 -- pbuc1_derefidx_vbuz1=vbuaa 
    ldy.z j2
    sta SPRITES_XPOS,y
    // SPRITES_YPOS[j2] = sintab_y[yidx]
    // [38] SPRITES_YPOS[anim::j2#2] = sintab_y[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
    // [39] anim::xidx#1 = anim::xidx#3 + $a -- vbuz1=vbuz1_plus_vbuc1 
    lax.z xidx
    axs #-[$a]
    stx.z xidx
    // if(xidx>=sinlen_x)
    // [40] if(anim::xidx#1<sinlen_x) goto anim::@4 -- vbuz1_lt_vbuc1_then_la1 
    txa
    cmp #sinlen_x
    bcc __b4
    // anim::@6
    // xidx = xidx-sinlen_x
    // [41] anim::xidx#2 = anim::xidx#1 - sinlen_x -- vbuz1=vbuz1_minus_vbuc1 
    lax.z xidx
    axs #sinlen_x
    stx.z xidx
    // [42] phi from anim::@3 anim::@6 to anim::@4 [phi:anim::@3/anim::@6->anim::@4]
    // [42] phi anim::xidx#5 = anim::xidx#1 [phi:anim::@3/anim::@6->anim::@4#0] -- register_copy 
    // anim::@4
  __b4:
    // yidx = yidx+8
    // [43] anim::yidx#1 = anim::yidx#3 + 8 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z yidx
    axs #-[8]
    stx.z yidx
    // if(yidx>=sinlen_y)
    // [44] if(anim::yidx#1<sinlen_y) goto anim::@5 -- vbuz1_lt_vbuc1_then_la1 
    txa
    cmp #sinlen_y
    bcc __b5
    // anim::@7
    // yidx = yidx-sinlen_y
    // [45] anim::yidx#2 = anim::yidx#1 - sinlen_y -- vbuz1=vbuz1_minus_vbuc1 
    lax.z yidx
    axs #sinlen_y
    stx.z yidx
    // [46] phi from anim::@4 anim::@7 to anim::@5 [phi:anim::@4/anim::@7->anim::@5]
    // [46] phi anim::yidx#6 = anim::yidx#1 [phi:anim::@4/anim::@7->anim::@5#0] -- register_copy 
    // anim::@5
  __b5:
    // j2 = j2-2
    // [47] anim::j2#1 = anim::j2#2 - 2 -- vbuz1=vbuz1_minus_2 
    dec.z j2
    dec.z j2
    // for( char j : 0..6)
    // [48] anim::j#1 = ++ anim::j#2 -- vbuz1=_inc_vbuz1 
    inc.z j
    // [49] if(anim::j#1!=7) goto anim::@3 -- vbuz1_neq_vbuc1_then_la1 
    lda #7
    cmp.z j
    bne __b3
    // anim::@8
    // VICII->SPRITES_XMSB = x_msb
    // [50] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB) = anim::x_msb#1 -- _deref_pbuc1=vbuz1 
    lda.z x_msb
    sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB
    // if(++sin_idx_x>=sinlen_x)
    // [51] sin_idx_x#2 = ++ sin_idx_x#15 -- vbuz1=_inc_vbuz1 
    inc.z sin_idx_x
    // [52] if(sin_idx_x#2<sinlen_x) goto anim::@9 -- vbuz1_lt_vbuc1_then_la1 
    lda.z sin_idx_x
    cmp #sinlen_x
    bcc __b1
    // [54] phi from anim::@8 to anim::@1 [phi:anim::@8->anim::@1]
    // [54] phi sin_idx_x#12 = 0 [phi:anim::@8->anim::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_idx_x
    // [53] phi from anim::@8 to anim::@9 [phi:anim::@8->anim::@9]
    // anim::@9
    // [54] phi from anim::@9 to anim::@1 [phi:anim::@9->anim::@1]
    // [54] phi sin_idx_x#12 = sin_idx_x#2 [phi:anim::@9->anim::@1#0] -- register_copy 
    // anim::@1
  __b1:
    // if(++sin_idx_y>=sinlen_y)
    // [55] sin_idx_y#2 = ++ sin_idx_y#15 -- vbuz1=_inc_vbuz1 
    inc.z sin_idx_y
    // [56] if(sin_idx_y#2<sinlen_y) goto anim::@10 -- vbuz1_lt_vbuc1_then_la1 
    lda.z sin_idx_y
    cmp #sinlen_y
    bcc __b2
    // [58] phi from anim::@1 to anim::@2 [phi:anim::@1->anim::@2]
    // [58] phi sin_idx_y#12 = 0 [phi:anim::@1->anim::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_idx_y
    // [57] phi from anim::@1 to anim::@10 [phi:anim::@1->anim::@10]
    // anim::@10
    // [58] phi from anim::@10 to anim::@2 [phi:anim::@10->anim::@2]
    // [58] phi sin_idx_y#12 = sin_idx_y#2 [phi:anim::@10->anim::@2#0] -- register_copy 
    // anim::@2
  __b2:
    // (VICII->BORDER_COLOR)--;
    // [59] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) = -- *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) -- _deref_pbuc1=_dec__deref_pbuc1 
    dec VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR
    // anim::@return
    // }
    // [60] return 
    rts
}
  // clear_screen
clear_screen: {
    .label sc = $f
    // [62] phi from clear_screen to clear_screen::@1 [phi:clear_screen->clear_screen::@1]
    // [62] phi clear_screen::sc#2 = 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(char* sc = SCREEN; sc<SCREEN+1000; sc++)
    // [63] if(clear_screen::sc#2<SCREEN+$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
    // }
    // [64] return 
    rts
    // clear_screen::@2
  __b2:
    // *sc = ' '
    // [65] *clear_screen::sc#2 = ' ' -- _deref_pbuz1=vbuc1 
    lda #' '
    ldy #0
    sta (sc),y
    // for(char* sc = SCREEN; sc<SCREEN+1000; sc++)
    // [66] clear_screen::sc#1 = ++ clear_screen::sc#2 -- pbuz1=_inc_pbuz1 
    inc.z sc
    bne !+
    inc.z sc+1
  !:
    // [62] phi from clear_screen::@2 to clear_screen::@1 [phi:clear_screen::@2->clear_screen::@1]
    // [62] phi clear_screen::sc#2 = clear_screen::sc#1 [phi:clear_screen::@2->clear_screen::@1#0] -- register_copy 
    jmp __b1
}
  // place_sprites
place_sprites: {
    .label sprites_ptr = SCREEN+$3f8
    .label spr_id = 4
    .label spr_x = 6
    .label col = 9
    .label j2 = 8
    .label j = 5
    // VICII->SPRITES_ENABLE = %01111111
    // [67] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE) = $7f -- _deref_pbuc1=vbuc2 
    lda #$7f
    sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE
    // VICII->SPRITES_EXPAND_X = %01111111
    // [68] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X) = $7f -- _deref_pbuc1=vbuc2 
    sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X
    // VICII->SPRITES_EXPAND_Y = %01111111
    // [69] *((char *)VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_Y) = $7f -- _deref_pbuc1=vbuc2 
    sta VICII+OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_Y
    // [70] phi from place_sprites to place_sprites::@1 [phi:place_sprites->place_sprites::@1]
    // [70] phi place_sprites::col#2 = 5 [phi:place_sprites->place_sprites::@1#0] -- vbuz1=vbuc1 
    lda #5
    sta.z col
    // [70] phi place_sprites::j2#3 = 0 [phi:place_sprites->place_sprites::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z j2
    // [70] phi place_sprites::spr_x#2 = $3c [phi:place_sprites->place_sprites::@1#2] -- vbuz1=vbuc1 
    lda #$3c
    sta.z spr_x
    // [70] phi place_sprites::j#2 = 0 [phi:place_sprites->place_sprites::@1#3] -- vbuz1=vbuc1 
    lda #0
    sta.z j
    // [70] phi place_sprites::spr_id#2 = (char)(unsigned int)sprites/$40 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1 
    lda #sprites/$40
    sta.z spr_id
    // [70] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1]
    // [70] phi place_sprites::col#2 = place_sprites::col#1 [phi:place_sprites::@1->place_sprites::@1#0] -- register_copy 
    // [70] phi place_sprites::j2#3 = place_sprites::j2#2 [phi:place_sprites::@1->place_sprites::@1#1] -- register_copy 
    // [70] phi place_sprites::spr_x#2 = place_sprites::spr_x#1 [phi:place_sprites::@1->place_sprites::@1#2] -- register_copy 
    // [70] phi place_sprites::j#2 = place_sprites::j#1 [phi:place_sprites::@1->place_sprites::@1#3] -- register_copy 
    // [70] phi place_sprites::spr_id#2 = place_sprites::spr_id#1 [phi:place_sprites::@1->place_sprites::@1#4] -- register_copy 
    // place_sprites::@1
  __b1:
    // sprites_ptr[j] = spr_id++
    // [71] place_sprites::sprites_ptr[place_sprites::j#2] = 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++;
    // [72] place_sprites::spr_id#1 = ++ place_sprites::spr_id#2 -- vbuz1=_inc_vbuz1 
    inc.z spr_id
    // SPRITES_XPOS[j2] = spr_x
    // [73] SPRITES_XPOS[place_sprites::j2#3] = place_sprites::spr_x#2 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z spr_x
    ldy.z j2
    sta SPRITES_XPOS,y
    // SPRITES_YPOS[j2] = 80
    // [74] SPRITES_YPOS[place_sprites::j2#3] = $50 -- pbuc1_derefidx_vbuz1=vbuc2 
    lda #$50
    sta SPRITES_YPOS,y
    // SPRITES_COLOR[j] = col
    // [75] SPRITES_COLOR[place_sprites::j#2] = place_sprites::col#2 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z col
    ldy.z j
    sta SPRITES_COLOR,y
    // spr_x = spr_x + 32
    // [76] place_sprites::spr_x#1 = place_sprites::spr_x#2 + $20 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z spr_x
    axs #-[$20]
    stx.z spr_x
    // col = col^($7^$5)
    // [77] place_sprites::col#1 = place_sprites::col#2 ^ 7^5 -- vbuz1=vbuz1_bxor_vbuc1 
    lda #7^5
    eor.z col
    sta.z col
    // j2++;
    // [78] place_sprites::j2#1 = ++ place_sprites::j2#3 -- vbuxx=_inc_vbuz1 
    ldx.z j2
    inx
    // [79] place_sprites::j2#2 = ++ place_sprites::j2#1 -- vbuz1=_inc_vbuxx 
    inx
    stx.z j2
    // for( char j : 0..6)
    // [80] place_sprites::j#1 = ++ place_sprites::j#2 -- vbuz1=_inc_vbuz1 
    inc.z j
    // [81] if(place_sprites::j#1!=7) goto place_sprites::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #7
    cmp.z j
    bne __b1
    // place_sprites::@return
    // }
    // [82] return 
    rts
}
  // gen_sprites
gen_sprites: {
    .label spr = $f
    .label i = 2
    // [84] phi from gen_sprites to gen_sprites::@1 [phi:gen_sprites->gen_sprites::@1]
    // [84] phi gen_sprites::spr#2 = sprites [phi:gen_sprites->gen_sprites::@1#0] -- pbuz1=pbuc1 
    lda #<sprites
    sta.z spr
    lda #>sprites
    sta.z spr+1
    // [84] phi gen_sprites::i#2 = 0 [phi:gen_sprites->gen_sprites::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    // [84] phi from gen_sprites::@2 to gen_sprites::@1 [phi:gen_sprites::@2->gen_sprites::@1]
    // [84] phi gen_sprites::spr#2 = gen_sprites::spr#1 [phi:gen_sprites::@2->gen_sprites::@1#0] -- register_copy 
    // [84] phi gen_sprites::i#2 = gen_sprites::i#1 [phi:gen_sprites::@2->gen_sprites::@1#1] -- register_copy 
    // gen_sprites::@1
  __b1:
    // gen_chargen_sprite(cml[i], spr)
    // [85] gen_chargen_sprite::ch#0 = gen_sprites::cml[gen_sprites::i#2] -- vbuxx=pbuc1_derefidx_vbuz1 
    ldy.z i
    ldx cml,y
    // [86] gen_chargen_sprite::sprite#0 = 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
    // [87] call gen_chargen_sprite
    jsr gen_chargen_sprite
    // gen_sprites::@2
    // spr = spr + $40
    // [88] gen_sprites::spr#1 = gen_sprites::spr#2 + $40 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$40
    clc
    adc.z spr
    sta.z spr
    bcc !+
    inc.z spr+1
  !:
    // for( char i : 0..6 )
    // [89] gen_sprites::i#1 = ++ gen_sprites::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [90] if(gen_sprites::i#1!=7) goto gen_sprites::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #7
    cmp.z i
    bne __b1
    // gen_sprites::@return
    // }
    // [91] return 
    rts
  .segment Data
    cml: .text "camelot"
}
.segment Code
  // progress_init
// Initialize the PETSCII progress bar
// void progress_init(__zp($a) char *line)
progress_init: {
    .label line = $a
    // progress_cursor = line
    // [93] progress_cursor#23 = progress_init::line#2
    // progress_init::@return
    // }
    // [94] return 
    rts
}
  // gen_sintab
// Generate a sine 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 sine
// - max is the maximum value of the generated sine
// void gen_sintab(__zp($13) char *sintab, __zp(4) char length, __zp(3) char min, __register(X) char max)
gen_sintab: {
    // amplitude/2
    .label f_2pi = $e2e5
    .label __20 = $15
    .label i = 5
    .label min = 3
    .label length = 4
    .label sintab = $13
    // setFAC((unsigned int)max)
    // [96] setFAC::w#0 = (unsigned int)gen_sintab::max#2 -- vwuz1=_word_vbuxx 
    txa
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [97] call setFAC
  // 2 * PI
    // [177] phi from gen_sintab to setFAC [phi:gen_sintab->setFAC]
    // [177] phi setFAC::prepareMEM1_mem#0 = setFAC::w#0 [phi:gen_sintab->setFAC#0] -- register_copy 
    jsr setFAC
    // [98] phi from gen_sintab to gen_sintab::@3 [phi:gen_sintab->gen_sintab::@3]
    // gen_sintab::@3
    // setARGtoFAC()
    // [99] call setARGtoFAC
    // fac = max
    jsr setARGtoFAC
    // gen_sintab::@4
    // setFAC((unsigned int)min)
    // [100] setFAC::w#1 = (unsigned int)gen_sintab::min#2 -- vwuz1=_word_vbuz2 
    lda.z min
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [101] call setFAC
  // arg = max
    // [177] phi from gen_sintab::@4 to setFAC [phi:gen_sintab::@4->setFAC]
    // [177] phi setFAC::prepareMEM1_mem#0 = setFAC::w#1 [phi:gen_sintab::@4->setFAC#0] -- register_copy 
    jsr setFAC
    // [102] phi from gen_sintab::@4 to gen_sintab::@5 [phi:gen_sintab::@4->gen_sintab::@5]
    // gen_sintab::@5
    // setMEMtoFAC(f_min)
    // [103] call setMEMtoFAC
  // fac = min
    // [186] phi from gen_sintab::@5 to setMEMtoFAC [phi:gen_sintab::@5->setMEMtoFAC]
    // [186] phi setMEMtoFAC::mem#5 = 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
    // [104] phi from gen_sintab::@5 to gen_sintab::@6 [phi:gen_sintab::@5->gen_sintab::@6]
    // gen_sintab::@6
    // subFACfromARG()
    // [105] call subFACfromARG
    // f_min = min
    jsr subFACfromARG
    // [106] phi from gen_sintab::@6 to gen_sintab::@7 [phi:gen_sintab::@6->gen_sintab::@7]
    // gen_sintab::@7
    // setMEMtoFAC(f_amp)
    // [107] call setMEMtoFAC
  // fac = max - min
    // [186] phi from gen_sintab::@7 to setMEMtoFAC [phi:gen_sintab::@7->setMEMtoFAC]
    // [186] phi setMEMtoFAC::mem#5 = 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
    // [108] phi from gen_sintab::@7 to gen_sintab::@8 [phi:gen_sintab::@7->gen_sintab::@8]
    // gen_sintab::@8
    // setFAC(2)
    // [109] call setFAC
  // f_amp = max - min
    // [177] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC]
    // [177] phi setFAC::prepareMEM1_mem#0 = 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
    // [110] phi from gen_sintab::@8 to gen_sintab::@9 [phi:gen_sintab::@8->gen_sintab::@9]
    // gen_sintab::@9
    // divMEMbyFAC(f_amp)
    // [111] call divMEMbyFAC
  // fac = 2
    // [195] phi from gen_sintab::@9 to divMEMbyFAC [phi:gen_sintab::@9->divMEMbyFAC]
    // [195] phi divMEMbyFAC::mem#2 = 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
    // [112] phi from gen_sintab::@9 to gen_sintab::@10 [phi:gen_sintab::@9->gen_sintab::@10]
    // gen_sintab::@10
    // setMEMtoFAC(f_amp)
    // [113] call setMEMtoFAC
  // fac = (max - min) / 2
    // [186] phi from gen_sintab::@10 to setMEMtoFAC [phi:gen_sintab::@10->setMEMtoFAC]
    // [186] phi setMEMtoFAC::mem#5 = 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
    // [114] phi from gen_sintab::@10 to gen_sintab::@11 [phi:gen_sintab::@10->gen_sintab::@11]
    // gen_sintab::@11
    // addMEMtoFAC(f_min)
    // [115] call addMEMtoFAC
  // f_amp = (max - min) / 2
    // [202] phi from gen_sintab::@11 to addMEMtoFAC [phi:gen_sintab::@11->addMEMtoFAC]
    jsr addMEMtoFAC
    // [116] phi from gen_sintab::@11 to gen_sintab::@12 [phi:gen_sintab::@11->gen_sintab::@12]
    // gen_sintab::@12
    // setMEMtoFAC(f_min)
    // [117] call setMEMtoFAC
  // fac = min + (max - min) / 2
    // [186] phi from gen_sintab::@12 to setMEMtoFAC [phi:gen_sintab::@12->setMEMtoFAC]
    // [186] phi setMEMtoFAC::mem#5 = 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
    // [118] phi from gen_sintab::@12 to gen_sintab::@1 [phi:gen_sintab::@12->gen_sintab::@1]
    // [118] phi progress_cursor#12 = progress_cursor#23 [phi:gen_sintab::@12->gen_sintab::@1#0] -- register_copy 
    // [118] phi progress_idx#13 = 0 [phi:gen_sintab::@12->gen_sintab::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z progress_idx
    // [118] phi gen_sintab::i#10 = 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(char i =0; i<length; i++)
    // [119] if(gen_sintab::i#10<gen_sintab::length#10) goto gen_sintab::@2 -- vbuz1_lt_vbuz2_then_la1 
    lda.z i
    cmp.z length
    bcc __b2
    // gen_sintab::@return
    // }
    // [120] return 
    rts
    // gen_sintab::@2
  __b2:
    // setFAC((unsigned int)i)
    // [121] setFAC::w#3 = (unsigned int)gen_sintab::i#10 -- vwuz1=_word_vbuz2 
    lda.z i
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [122] call setFAC
    // [177] phi from gen_sintab::@2 to setFAC [phi:gen_sintab::@2->setFAC]
    // [177] phi setFAC::prepareMEM1_mem#0 = setFAC::w#3 [phi:gen_sintab::@2->setFAC#0] -- register_copy 
    jsr setFAC
    // [123] phi from gen_sintab::@2 to gen_sintab::@13 [phi:gen_sintab::@2->gen_sintab::@13]
    // gen_sintab::@13
    // mulFACbyMEM(f_2pi)
    // [124] call mulFACbyMEM
  // fac = i
    // [207] phi from gen_sintab::@13 to mulFACbyMEM [phi:gen_sintab::@13->mulFACbyMEM]
    // [207] phi mulFACbyMEM::mem#2 = 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
    // [125] phi from gen_sintab::@13 to gen_sintab::@14 [phi:gen_sintab::@13->gen_sintab::@14]
    // gen_sintab::@14
    // setMEMtoFAC(f_i)
    // [126] call setMEMtoFAC
  // fac = i * 2 * PI
    // [186] phi from gen_sintab::@14 to setMEMtoFAC [phi:gen_sintab::@14->setMEMtoFAC]
    // [186] phi setMEMtoFAC::mem#5 = 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((unsigned int)length)
    // [127] setFAC::w#4 = (unsigned int)gen_sintab::length#10 -- vwuz1=_word_vbuz2 
    lda.z length
    sta.z setFAC.w
    lda #0
    sta.z setFAC.w+1
    // [128] call setFAC
  // f_i = i * 2 * PI
    // [177] phi from gen_sintab::@15 to setFAC [phi:gen_sintab::@15->setFAC]
    // [177] phi setFAC::prepareMEM1_mem#0 = setFAC::w#4 [phi:gen_sintab::@15->setFAC#0] -- register_copy 
    jsr setFAC
    // [129] phi from gen_sintab::@15 to gen_sintab::@16 [phi:gen_sintab::@15->gen_sintab::@16]
    // gen_sintab::@16
    // divMEMbyFAC(f_i)
    // [130] call divMEMbyFAC
  // fac = length
    // [195] phi from gen_sintab::@16 to divMEMbyFAC [phi:gen_sintab::@16->divMEMbyFAC]
    // [195] phi divMEMbyFAC::mem#2 = 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
    // [131] phi from gen_sintab::@16 to gen_sintab::@17 [phi:gen_sintab::@16->gen_sintab::@17]
    // gen_sintab::@17
    // sinFAC()
    // [132] call sinFAC
    // fac = i * 2 * PI / length
    jsr sinFAC
    // [133] phi from gen_sintab::@17 to gen_sintab::@18 [phi:gen_sintab::@17->gen_sintab::@18]
    // gen_sintab::@18
    // mulFACbyMEM(f_amp)
    // [134] call mulFACbyMEM
  // fac = sin( i * 2 * PI / length )
    // [207] phi from gen_sintab::@18 to mulFACbyMEM [phi:gen_sintab::@18->mulFACbyMEM]
    // [207] phi mulFACbyMEM::mem#2 = 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
    // [135] phi from gen_sintab::@18 to gen_sintab::@19 [phi:gen_sintab::@18->gen_sintab::@19]
    // gen_sintab::@19
    // addMEMtoFAC(f_min)
    // [136] call addMEMtoFAC
  // fac =  sin( i * 2 * PI / length ) * (max - min) / 2
    // [202] phi from gen_sintab::@19 to addMEMtoFAC [phi:gen_sintab::@19->addMEMtoFAC]
    jsr addMEMtoFAC
    // [137] phi from gen_sintab::@19 to gen_sintab::@20 [phi:gen_sintab::@19->gen_sintab::@20]
    // gen_sintab::@20
    // getFAC()
    // [138] call getFAC
    jsr getFAC
    // [139] getFAC::return#2 = getFAC::return#0
    // gen_sintab::@21
    // [140] gen_sintab::$20 = getFAC::return#2
    // sintab[i] = (char)getFAC()
    // [141] gen_sintab::sintab#13[gen_sintab::i#10] = (char)gen_sintab::$20 -- pbuz1_derefidx_vbuz2=_byte_vwuz3 
    // fac =  sin( i * 2 * PI / length ) * (max - min) / 2 + min + (max - min) / 2
    lda.z __20
    ldy.z i
    sta (sintab),y
    // progress_inc()
    // [142] call progress_inc
    jsr progress_inc
    // gen_sintab::@22
    // for(char i =0; i<length; i++)
    // [143] gen_sintab::i#1 = ++ gen_sintab::i#10 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [118] phi from gen_sintab::@22 to gen_sintab::@1 [phi:gen_sintab::@22->gen_sintab::@1]
    // [118] phi progress_cursor#12 = progress_cursor#10 [phi:gen_sintab::@22->gen_sintab::@1#0] -- register_copy 
    // [118] phi progress_idx#13 = progress_idx#11 [phi:gen_sintab::@22->gen_sintab::@1#1] -- register_copy 
    // [118] phi gen_sintab::i#10 = gen_sintab::i#1 [phi:gen_sintab::@22->gen_sintab::@1#2] -- register_copy 
    jmp __b1
  .segment Data
    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
}
.segment Code
  // 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
// void gen_chargen_sprite(__register(X) char ch, __zp($a) char *sprite)
gen_chargen_sprite: {
    .label __0 = $15
    .label __14 = $15
    .label sprite = $a
    .label chargen = $15
    .label bits = 5
    // current sprite char
    .label s_gen = 9
    .label x = 6
    .label y = 4
    // Find the current chargen pixel (c)
    .label c = 8
    // ((unsigned int)ch)*8
    // [144] gen_chargen_sprite::$14 = (unsigned int)gen_chargen_sprite::ch#0 -- vwuz1=_word_vbuxx 
    txa
    sta.z __14
    lda #0
    sta.z __14+1
    // [145] gen_chargen_sprite::$0 = gen_chargen_sprite::$14 << 3 -- vwuz1=vwuz1_rol_3 
    asl.z __0
    rol.z __0+1
    asl.z __0
    rol.z __0+1
    asl.z __0
    rol.z __0+1
    // char* chargen = CHARGEN+((unsigned int)ch)*8
    // [146] gen_chargen_sprite::chargen#0 = CHARGEN + gen_chargen_sprite::$0 -- pbuz1=pbuc1_plus_vwuz1 
    lda.z chargen
    clc
    adc #<CHARGEN
    sta.z chargen
    lda.z chargen+1
    adc #>CHARGEN
    sta.z chargen+1
    // asm
    // asm { sei  }
    sei
    // *PROCPORT = $32
    // [148] *PROCPORT = $32 -- _deref_pbuc1=vbuc2 
    lda #$32
    sta PROCPORT
    // [149] phi from gen_chargen_sprite to gen_chargen_sprite::@1 [phi:gen_chargen_sprite->gen_chargen_sprite::@1]
    // [149] phi gen_chargen_sprite::sprite#11 = gen_chargen_sprite::sprite#0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#0] -- register_copy 
    // [149] phi gen_chargen_sprite::y#2 = 0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z y
    // [149] phi from gen_chargen_sprite::@8 to gen_chargen_sprite::@1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@1]
    // [149] phi gen_chargen_sprite::sprite#11 = gen_chargen_sprite::sprite#2 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@1#0] -- register_copy 
    // [149] phi gen_chargen_sprite::y#2 = gen_chargen_sprite::y#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@1#1] -- register_copy 
    // gen_chargen_sprite::@1
  __b1:
    // char bits = chargen[y]
    // [150] gen_chargen_sprite::bits#0 = gen_chargen_sprite::chargen#0[gen_chargen_sprite::y#2] -- vbuz1=pbuz2_derefidx_vbuz3 
    // current chargen line
    ldy.z y
    lda (chargen),y
    sta.z bits
    // [151] phi from gen_chargen_sprite::@1 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2]
    // [151] phi gen_chargen_sprite::x#6 = 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z x
    // [151] phi gen_chargen_sprite::sprite#10 = gen_chargen_sprite::sprite#11 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#1] -- register_copy 
    // [151] phi gen_chargen_sprite::s_gen_cnt#4 = 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#2] -- vbuyy=vbuc1 
    tay
    // [151] phi gen_chargen_sprite::s_gen#5 = 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#3] -- vbuz1=vbuc1 
    sta.z s_gen
    // [151] phi gen_chargen_sprite::bits#2 = gen_chargen_sprite::bits#0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#4] -- register_copy 
    // [151] phi from gen_chargen_sprite::@7 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2]
    // [151] phi gen_chargen_sprite::x#6 = gen_chargen_sprite::x#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#0] -- register_copy 
    // [151] phi gen_chargen_sprite::sprite#10 = gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#1] -- register_copy 
    // [151] phi gen_chargen_sprite::s_gen_cnt#4 = gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#2] -- register_copy 
    // [151] phi gen_chargen_sprite::s_gen#5 = gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#3] -- register_copy 
    // [151] phi gen_chargen_sprite::bits#2 = gen_chargen_sprite::bits#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@2#4] -- register_copy 
    // gen_chargen_sprite::@2
  __b2:
    // bits & $80
    // [152] gen_chargen_sprite::$2 = gen_chargen_sprite::bits#2 & $80 -- vbuaa=vbuz1_band_vbuc1 
    lda #$80
    and.z bits
    // if((bits & $80) != 0)
    // [153] if(gen_chargen_sprite::$2==0) goto gen_chargen_sprite::@3 -- vbuaa_eq_0_then_la1 
    cmp #0
    beq __b6
    // [154] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@10 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@10]
    // gen_chargen_sprite::@10
    // [155] phi from gen_chargen_sprite::@10 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@10->gen_chargen_sprite::@3]
    // [155] phi gen_chargen_sprite::c#3 = 1 [phi:gen_chargen_sprite::@10->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 
    lda #1
    sta.z c
    jmp __b3
    // [155] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3]
  __b6:
    // [155] phi gen_chargen_sprite::c#3 = 0 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z c
    // gen_chargen_sprite::@3
  __b3:
    // [156] phi from gen_chargen_sprite::@3 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4]
    // [156] phi gen_chargen_sprite::sprite#3 = gen_chargen_sprite::sprite#10 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#0] -- register_copy 
    // [156] phi gen_chargen_sprite::b#2 = 0 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#1] -- vbuxx=vbuc1 
    ldx #0
    // [156] phi gen_chargen_sprite::s_gen_cnt#3 = gen_chargen_sprite::s_gen_cnt#4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#2] -- register_copy 
    // [156] phi gen_chargen_sprite::s_gen#3 = gen_chargen_sprite::s_gen#5 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#3] -- register_copy 
  // generate 3 pixels in the sprite char (s_gen)
    // [156] phi from gen_chargen_sprite::@5 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4]
    // [156] phi gen_chargen_sprite::sprite#3 = gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#0] -- register_copy 
    // [156] phi gen_chargen_sprite::b#2 = gen_chargen_sprite::b#1 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#1] -- register_copy 
    // [156] phi gen_chargen_sprite::s_gen_cnt#3 = gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#2] -- register_copy 
    // [156] phi gen_chargen_sprite::s_gen#3 = 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
    // [157] gen_chargen_sprite::$5 = gen_chargen_sprite::s_gen#3 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z s_gen
    asl
    // s_gen = s_gen*2 | c
    // [158] gen_chargen_sprite::s_gen#1 = gen_chargen_sprite::$5 | gen_chargen_sprite::c#3 -- vbuz1=vbuaa_bor_vbuz2 
    ora.z c
    sta.z s_gen
    // if(++s_gen_cnt==8)
    // [159] gen_chargen_sprite::s_gen_cnt#1 = ++ gen_chargen_sprite::s_gen_cnt#3 -- vbuyy=_inc_vbuyy 
    iny
    // [160] if(gen_chargen_sprite::s_gen_cnt#1!=8) goto gen_chargen_sprite::@5 -- vbuyy_neq_vbuc1_then_la1 
    cpy #8
    bne __b5
    // gen_chargen_sprite::@6
    // sprite[0] = s_gen
    // [161] *gen_chargen_sprite::sprite#3 = gen_chargen_sprite::s_gen#1 -- _deref_pbuz1=vbuz2 
    // sprite char filled - store and move to next char
    ldy #0
    sta (sprite),y
    // sprite[3] = s_gen
    // [162] gen_chargen_sprite::sprite#3[3] = gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 
    ldy #3
    sta (sprite),y
    // sprite[6] = s_gen
    // [163] gen_chargen_sprite::sprite#3[6] = gen_chargen_sprite::s_gen#1 -- pbuz1_derefidx_vbuc1=vbuz2 
    ldy #6
    sta (sprite),y
    // sprite++;
    // [164] gen_chargen_sprite::sprite#1 = ++ gen_chargen_sprite::sprite#3 -- pbuz1=_inc_pbuz1 
    inc.z sprite
    bne !+
    inc.z sprite+1
  !:
    // [165] phi from gen_chargen_sprite::@6 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5]
    // [165] phi gen_chargen_sprite::sprite#4 = gen_chargen_sprite::sprite#1 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5#0] -- register_copy 
    // [165] phi gen_chargen_sprite::s_gen_cnt#5 = 0 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5#1] -- vbuyy=vbuc1 
    ldy #0
    // [165] phi gen_chargen_sprite::s_gen#6 = 0 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@5#2] -- vbuz1=vbuc1 
    tya
    sta.z s_gen
    // [165] phi from gen_chargen_sprite::@4 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5]
    // [165] phi gen_chargen_sprite::sprite#4 = gen_chargen_sprite::sprite#3 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#0] -- register_copy 
    // [165] phi gen_chargen_sprite::s_gen_cnt#5 = gen_chargen_sprite::s_gen_cnt#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#1] -- register_copy 
    // [165] phi gen_chargen_sprite::s_gen#6 = gen_chargen_sprite::s_gen#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#2] -- register_copy 
    // gen_chargen_sprite::@5
  __b5:
    // for(char b : 0..2)
    // [166] gen_chargen_sprite::b#1 = ++ gen_chargen_sprite::b#2 -- vbuxx=_inc_vbuxx 
    inx
    // [167] if(gen_chargen_sprite::b#1!=3) goto gen_chargen_sprite::@4 -- vbuxx_neq_vbuc1_then_la1 
    cpx #3
    bne __b4
    // gen_chargen_sprite::@7
    // bits = bits*2
    // [168] gen_chargen_sprite::bits#1 = gen_chargen_sprite::bits#2 << 1 -- vbuz1=vbuz1_rol_1 
    asl.z bits
    // for(char x:0..7)
    // [169] gen_chargen_sprite::x#1 = ++ gen_chargen_sprite::x#6 -- vbuz1=_inc_vbuz1 
    inc.z x
    // [170] if(gen_chargen_sprite::x#1!=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
    // [171] gen_chargen_sprite::sprite#2 = gen_chargen_sprite::sprite#4 + 6 -- pbuz1=pbuz1_plus_vbuc1 
    lda #6
    clc
    adc.z sprite
    sta.z sprite
    bcc !+
    inc.z sprite+1
  !:
    // for(char y:0..7)
    // [172] gen_chargen_sprite::y#1 = ++ gen_chargen_sprite::y#2 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [173] if(gen_chargen_sprite::y#1!=8) goto gen_chargen_sprite::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z y
    bne __b1
    // gen_chargen_sprite::@9
    // *PROCPORT = $37
    // [174] *PROCPORT = $37 -- _deref_pbuc1=vbuc2 
    lda #$37
    sta PROCPORT
    // asm
    // asm { cli  }
    cli
    // gen_chargen_sprite::@return
    // }
    // [176] return 
    rts
}
  // setFAC
// FAC = unsigned int
// Set the FAC (floating point accumulator) to the integer value of a 16bit unsigned int
// void setFAC(__zp($f) unsigned int w)
setFAC: {
    .label prepareMEM1_mem = $f
    .label w = $f
    // setFAC::prepareMEM1
    // BYTE0(mem)
    // [178] setFAC::prepareMEM1_$0 = byte0  setFAC::prepareMEM1_mem#0 -- vbuaa=_byte0_vwuz1 
    lda.z prepareMEM1_mem
    // *memLo = BYTE0(mem)
    // [179] *memLo = setFAC::prepareMEM1_$0 -- _deref_pbuc1=vbuaa 
    sta memLo
    // BYTE1(mem)
    // [180] setFAC::prepareMEM1_$1 = byte1  setFAC::prepareMEM1_mem#0 -- vbuaa=_byte1_vwuz1 
    lda.z prepareMEM1_mem+1
    // *memHi = BYTE1(mem)
    // [181] *memHi = setFAC::prepareMEM1_$1 -- _deref_pbuc1=vbuaa 
    sta memHi
    // setFAC::@1
    // asm
    // asm { ldymemLo ldamemHi jsr$b391  }
    // Load unsigned int register Y,A into FAC (floating point accumulator)
    ldy memLo
    jsr $b391
    // setFAC::@return
    // }
    // [183] 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
    // }
    // [185] return 
    rts
}
  // setMEMtoFAC
// MEM = FAC
// Stores the value of the FAC to memory
// Stores 5 chars (means it is necessary to allocate 5 chars to avoid clobbering other data using eg. char[] mem = {0, 0, 0, 0, 0};)
// void setMEMtoFAC(__zp($f) char *mem)
setMEMtoFAC: {
    .label mem = $f
    // setMEMtoFAC::prepareMEM1
    // BYTE0(mem)
    // [187] setMEMtoFAC::prepareMEM1_$0 = byte0  (unsigned int)setMEMtoFAC::mem#5 -- vbuaa=_byte0_vwuz1 
    lda.z mem
    // *memLo = BYTE0(mem)
    // [188] *memLo = setMEMtoFAC::prepareMEM1_$0 -- _deref_pbuc1=vbuaa 
    sta memLo
    // BYTE1(mem)
    // [189] setMEMtoFAC::prepareMEM1_$1 = byte1  (unsigned int)setMEMtoFAC::mem#5 -- vbuaa=_byte1_vwuz1 
    lda.z mem+1
    // *memHi = BYTE1(mem)
    // [190] *memHi = setMEMtoFAC::prepareMEM1_$1 -- _deref_pbuc1=vbuaa 
    sta memHi
    // setMEMtoFAC::@1
    // asm
    // asm { ldxmemLo ldymemHi jsr$bbd4  }
    ldx memLo
    tay
    jsr $bbd4
    // setMEMtoFAC::@return
    // }
    // [192] return 
    rts
}
  // subFACfromARG
// FAC = ARG-FAC
// Set FAC to ARG minus FAC
subFACfromARG: {
    // asm
    // asm { jsr$b853  }
    jsr $b853
    // subFACfromARG::@return
    // }
    // [194] return 
    rts
}
  // divMEMbyFAC
// FAC = MEM/FAC
// Set FAC to MEM (float saved in memory) divided by FAC (float accumulator)
// Reads 5 chars from memory
// void divMEMbyFAC(__zp($15) char *mem)
divMEMbyFAC: {
    .label mem = $15
    // divMEMbyFAC::prepareMEM1
    // BYTE0(mem)
    // [196] divMEMbyFAC::prepareMEM1_$0 = byte0  (unsigned int)divMEMbyFAC::mem#2 -- vbuaa=_byte0_vwuz1 
    lda.z mem
    // *memLo = BYTE0(mem)
    // [197] *memLo = divMEMbyFAC::prepareMEM1_$0 -- _deref_pbuc1=vbuaa 
    sta memLo
    // BYTE1(mem)
    // [198] divMEMbyFAC::prepareMEM1_$1 = byte1  (unsigned int)divMEMbyFAC::mem#2 -- vbuaa=_byte1_vwuz1 
    lda.z mem+1
    // *memHi = BYTE1(mem)
    // [199] *memHi = divMEMbyFAC::prepareMEM1_$1 -- _deref_pbuc1=vbuaa 
    sta memHi
    // divMEMbyFAC::@1
    // asm
    // asm { ldamemLo ldymemHi jsr$bb0f  }
    lda memLo
    ldy memHi
    jsr $bb0f
    // divMEMbyFAC::@return
    // }
    // [201] return 
    rts
}
  // addMEMtoFAC
// FAC = MEM+FAC
// Set FAC to MEM (float saved in memory) plus FAC (float accumulator)
// Reads 5 chars from memory
// void addMEMtoFAC(char *mem)
addMEMtoFAC: {
    // addMEMtoFAC::prepareMEM1
    // *memLo = BYTE0(mem)
    // [203] *memLo = byte0 (unsigned int)gen_sintab::f_min -- _deref_pbuc1=vbuc2 
    lda #<gen_sintab.f_min
    sta memLo
    // *memHi = BYTE1(mem)
    // [204] *memHi = byte1 (unsigned int)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
    // }
    // [206] return 
    rts
}
  // mulFACbyMEM
// FAC = MEM*FAC
// Set FAC to MEM (float saved in memory) multiplied by FAC (float accumulator)
// Reads 5 chars from memory
// void mulFACbyMEM(__zp($15) char *mem)
mulFACbyMEM: {
    .label mem = $15
    // mulFACbyMEM::prepareMEM1
    // BYTE0(mem)
    // [208] mulFACbyMEM::prepareMEM1_$0 = byte0  (unsigned int)mulFACbyMEM::mem#2 -- vbuaa=_byte0_vwuz1 
    lda.z mem
    // *memLo = BYTE0(mem)
    // [209] *memLo = mulFACbyMEM::prepareMEM1_$0 -- _deref_pbuc1=vbuaa 
    sta memLo
    // BYTE1(mem)
    // [210] mulFACbyMEM::prepareMEM1_$1 = byte1  (unsigned int)mulFACbyMEM::mem#2 -- vbuaa=_byte1_vwuz1 
    lda.z mem+1
    // *memHi = BYTE1(mem)
    // [211] *memHi = mulFACbyMEM::prepareMEM1_$1 -- _deref_pbuc1=vbuaa 
    sta memHi
    // mulFACbyMEM::@1
    // asm
    // asm { ldamemLo ldymemHi jsr$ba28  }
    lda memLo
    ldy memHi
    jsr $ba28
    // mulFACbyMEM::@return
    // }
    // [213] return 
    rts
}
  // sinFAC
// FAC = sin(FAC)
// Set FAC to sine of the FAC - sin(FAC)
// Sine is calculated on radians (0-2*PI)
sinFAC: {
    // asm
    // asm { jsr$e26b  }
    jsr $e26b
    // sinFAC::@return
    // }
    // [215] return 
    rts
}
  // getFAC
// unsigned int = FAC
// Get the value of the FAC (floating point accumulator) as an integer 16bit unsigned int
// Destroys the value in the FAC in the process
getFAC: {
    .label return = $15
    // asm
    // asm { jsr$b1aa stymemLo stamemHi  }
    // Load FAC (floating point accumulator) integer part into unsigned int register Y,A
    jsr $b1aa
    sty memLo
    sta memHi
    // unsigned int w = MAKEWORD( *memHi, *memLo )
    // [217] getFAC::return#0 = *memHi w= *memLo -- vwuz1=_deref_pbuc1_word__deref_pbuc2 
    sta.z return+1
    tya
    sta.z return
    // getFAC::@return
    // }
    // [218] return 
    rts
}
  // 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)
    // [219] progress_idx#9 = ++ progress_idx#13 -- vbuz1=_inc_vbuz1 
    inc.z progress_idx
    // [220] if(progress_idx#9!=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]
    // [221] *progress_cursor#12 = *(progress_inc::progress_chars+8) -- _deref_pbuz1=_deref_pbuc1 
    lda progress_chars+8
    ldy #0
    sta (progress_cursor),y
    // progress_cursor++;
    // [222] progress_cursor#9 = ++ progress_cursor#12 -- pbuz1=_inc_pbuz1 
    inc.z progress_cursor
    bne !+
    inc.z progress_cursor+1
  !:
    // [223] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1]
    // [223] phi progress_cursor#10 = progress_cursor#9 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy 
    // [223] phi progress_idx#11 = 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z progress_idx
    // [223] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1]
    // [223] phi progress_cursor#10 = progress_cursor#12 [phi:progress_inc->progress_inc::@1#0] -- register_copy 
    // [223] phi progress_idx#11 = progress_idx#9 [phi:progress_inc->progress_inc::@1#1] -- register_copy 
    // progress_inc::@1
  __b1:
    // *progress_cursor = progress_chars[progress_idx]
    // [224] *progress_cursor#10 = progress_inc::progress_chars[progress_idx#11] -- _deref_pbuz1=pbuc1_derefidx_vbuz2 
    ldy.z progress_idx
    lda progress_chars,y
    ldy #0
    sta (progress_cursor),y
    // progress_inc::@return
    // }
    // [225] return 
    rts
  .segment Data
    // Progress characters
    progress_chars: .byte $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0
}
  // File Data
  sintab_x: .fill $dd, 0
  sintab_y: .fill $c5, 0

