Inlined call vicSelectGfxBank::$0 = call toDd00(vicSelectGfxBank::gfx)
Inlined call main::$5 = call toD018(SCREEN1, CHARSET)
Inlined call main::$7 = call toD018(SCREEN2, CHARSET)
Inlined call call sid_rnd_init
Inlined call make_plasma_charset::$6 = call sid_rnd
Inlined call call __init
Eliminating unused variable with no statement memset::$2
Eliminating unused variable with no statement malloc::$0
Eliminating unused variable with no statement bsearch16u::$7
Eliminating unused variable with no statement bsearch16u::$8
Eliminating unused variable with no statement sqrt::$0
Eliminating unused variable with no statement doplasma::$0
Eliminating unused variable with no statement doplasma::$1
Eliminating unused variable with no statement init_angle_screen::$0
Eliminating unused variable with no statement init_angle_screen::$1
Eliminating unused variable with no statement init_angle_screen::$8
Eliminating unused variable with no statement init_angle_screen::$10
Eliminating unused variable with no statement init_dist_screen::$1
Eliminating unused variable with no statement init_dist_screen::$2
Eliminating unused variable with no statement init_dist_screen::$9
Eliminating unused variable with no statement init_dist_screen::$11
Eliminating unused variable with no statement init_dist_screen::$18
Eliminating unused variable with no statement init_dist_screen::$19
Eliminating unused variable with no statement init_dist_screen::$20
Eliminating unused variable with no statement __start::__init1_$0
Eliminating unused variable with no statement __start::__init1_$1

CONTROL FLOW GRAPH SSA

void * memset(void *str , char c , unsigned int num)
memset: scope:[memset]  from main::@7 print_cls
  memset::c#5 = phi( main::@7/memset::c#1, print_cls/memset::c#0 )
  memset::str#4 = phi( main::@7/memset::str#1, print_cls/memset::str#0 )
  memset::num#2 = phi( main::@7/memset::num#1, print_cls/memset::num#0 )
  memset::$0 = memset::num#2 > 0
  memset::$1 = ! memset::$0
  if(memset::$1) goto memset::@1
  to:memset::@2
memset::@1: scope:[memset]  from memset memset::@3
  memset::str#2 = phi( memset/memset::str#4, memset::@3/memset::str#5 )
  memset::return#0 = memset::str#2
  to:memset::@return
memset::@2: scope:[memset]  from memset
  memset::c#4 = phi( memset/memset::c#5 )
  memset::num#3 = phi( memset/memset::num#2 )
  memset::str#3 = phi( memset/memset::str#4 )
  memset::$4 = (char *)memset::str#3
  memset::end#0 = memset::$4 + memset::num#3
  memset::dst#0 = ((char *)) memset::str#3
  to:memset::@3
memset::@3: scope:[memset]  from memset::@2 memset::@4
  memset::c#3 = phi( memset::@2/memset::c#4, memset::@4/memset::c#2 )
  memset::str#5 = phi( memset::@2/memset::str#3, memset::@4/memset::str#6 )
  memset::end#1 = phi( memset::@2/memset::end#0, memset::@4/memset::end#2 )
  memset::dst#2 = phi( memset::@2/memset::dst#0, memset::@4/memset::dst#1 )
  memset::$3 = memset::dst#2 != memset::end#1
  if(memset::$3) goto memset::@4
  to:memset::@1
memset::@4: scope:[memset]  from memset::@3
  memset::str#6 = phi( memset::@3/memset::str#5 )
  memset::end#2 = phi( memset::@3/memset::end#1 )
  memset::dst#3 = phi( memset::@3/memset::dst#2 )
  memset::c#2 = phi( memset::@3/memset::c#3 )
  *memset::dst#3 = memset::c#2
  memset::dst#1 = ++ memset::dst#3
  to:memset::@3
memset::@return: scope:[memset]  from memset::@1
  memset::return#4 = phi( memset::@1/memset::return#0 )
  memset::return#1 = memset::return#4
  return 
  to:@return

void * malloc(unsigned int size)
malloc: scope:[malloc]  from __start::@2 __start::__init1 init_squares
  malloc::size#3 = phi( __start::@2/malloc::size#2, __start::__init1/malloc::size#1, init_squares/malloc::size#0 )
  heap_head#13 = phi( __start::@2/heap_head#9, __start::__init1/heap_head#8, init_squares/heap_head#25 )
  malloc::mem#0 = heap_head#13 - malloc::size#3
  heap_head#0 = malloc::mem#0
  malloc::return#0 = ((void *)) malloc::mem#0
  to:malloc::@return
malloc::@return: scope:[malloc]  from malloc
  heap_head#14 = phi( malloc/heap_head#0 )
  malloc::return#5 = phi( malloc/malloc::return#0 )
  malloc::return#1 = malloc::return#5
  heap_head#1 = heap_head#14
  return 
  to:@return

unsigned int * bsearch16u(unsigned int key , unsigned int *items , char num)
bsearch16u: scope:[bsearch16u]  from sqrt
  bsearch16u::key#4 = phi( sqrt/bsearch16u::key#0 )
  bsearch16u::items#7 = phi( sqrt/bsearch16u::items#1 )
  bsearch16u::num#7 = phi( sqrt/bsearch16u::num#2 )
  to:bsearch16u::@4
bsearch16u::@4: scope:[bsearch16u]  from bsearch16u bsearch16u::@8
  bsearch16u::key#3 = phi( bsearch16u/bsearch16u::key#4, bsearch16u::@8/bsearch16u::key#5 )
  bsearch16u::items#6 = phi( bsearch16u/bsearch16u::items#7, bsearch16u::@8/bsearch16u::items#8 )
  bsearch16u::num#3 = phi( bsearch16u/bsearch16u::num#7, bsearch16u::@8/bsearch16u::num#0 )
  bsearch16u::$5 = bsearch16u::num#3 > 0
  if(bsearch16u::$5) goto bsearch16u::@5
  to:bsearch16u::@6
bsearch16u::@5: scope:[bsearch16u]  from bsearch16u::@4
  bsearch16u::key#1 = phi( bsearch16u::@4/bsearch16u::key#3 )
  bsearch16u::items#2 = phi( bsearch16u::@4/bsearch16u::items#6 )
  bsearch16u::num#4 = phi( bsearch16u::@4/bsearch16u::num#3 )
  bsearch16u::$6 = bsearch16u::num#4 >> 1
  bsearch16u::$14 = bsearch16u::$6 * SIZEOF_UNSIGNED_INT
  bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14
  bsearch16u::$17 = (int)bsearch16u::key#1
  bsearch16u::$18 = (int)*bsearch16u::pivot#0
  bsearch16u::result#0 = bsearch16u::$17 - bsearch16u::$18
  bsearch16u::$9 = bsearch16u::result#0 == 0
  bsearch16u::$10 = ! bsearch16u::$9
  if(bsearch16u::$10) goto bsearch16u::@7
  to:bsearch16u::@9
bsearch16u::@6: scope:[bsearch16u]  from bsearch16u::@4
  bsearch16u::key#2 = phi( bsearch16u::@4/bsearch16u::key#3 )
  bsearch16u::items#3 = phi( bsearch16u::@4/bsearch16u::items#6 )
  bsearch16u::$0 = *bsearch16u::items#3 <= bsearch16u::key#2
  if(bsearch16u::$0) goto bsearch16u::@1
  to:bsearch16u::@2
bsearch16u::@7: scope:[bsearch16u]  from bsearch16u::@5
  bsearch16u::key#7 = phi( bsearch16u::@5/bsearch16u::key#1 )
  bsearch16u::items#9 = phi( bsearch16u::@5/bsearch16u::items#2 )
  bsearch16u::pivot#3 = phi( bsearch16u::@5/bsearch16u::pivot#0 )
  bsearch16u::num#8 = phi( bsearch16u::@5/bsearch16u::num#4 )
  bsearch16u::result#1 = phi( bsearch16u::@5/bsearch16u::result#0 )
  bsearch16u::$11 = bsearch16u::result#1 > 0
  bsearch16u::$12 = ! bsearch16u::$11
  if(bsearch16u::$12) goto bsearch16u::@8
  to:bsearch16u::@10
bsearch16u::@9: scope:[bsearch16u]  from bsearch16u::@5
  bsearch16u::pivot#1 = phi( bsearch16u::@5/bsearch16u::pivot#0 )
  bsearch16u::return#0 = bsearch16u::pivot#1
  to:bsearch16u::@return
bsearch16u::@return: scope:[bsearch16u]  from bsearch16u::@3 bsearch16u::@9
  bsearch16u::return#4 = phi( bsearch16u::@3/bsearch16u::return#2, bsearch16u::@9/bsearch16u::return#0 )
  bsearch16u::return#1 = bsearch16u::return#4
  return 
  to:@return
bsearch16u::@8: scope:[bsearch16u]  from bsearch16u::@10 bsearch16u::@7
  bsearch16u::key#5 = phi( bsearch16u::@10/bsearch16u::key#6, bsearch16u::@7/bsearch16u::key#7 )
  bsearch16u::items#8 = phi( bsearch16u::@10/bsearch16u::items#0, bsearch16u::@7/bsearch16u::items#9 )
  bsearch16u::num#5 = phi( bsearch16u::@10/bsearch16u::num#1, bsearch16u::@7/bsearch16u::num#8 )
  bsearch16u::num#0 = bsearch16u::num#5 >> 1
  to:bsearch16u::@4
bsearch16u::@10: scope:[bsearch16u]  from bsearch16u::@7
  bsearch16u::key#6 = phi( bsearch16u::@7/bsearch16u::key#7 )
  bsearch16u::num#6 = phi( bsearch16u::@7/bsearch16u::num#8 )
  bsearch16u::pivot#2 = phi( bsearch16u::@7/bsearch16u::pivot#3 )
  bsearch16u::$15 = 1 * SIZEOF_UNSIGNED_INT
  bsearch16u::$13 = bsearch16u::pivot#2 + bsearch16u::$15
  bsearch16u::items#0 = bsearch16u::$13
  bsearch16u::num#1 = -- bsearch16u::num#6
  to:bsearch16u::@8
bsearch16u::@1: scope:[bsearch16u]  from bsearch16u::@6
  bsearch16u::items#4 = phi( bsearch16u::@6/bsearch16u::items#3 )
  bsearch16u::$3 = bsearch16u::items#4
  to:bsearch16u::@3
bsearch16u::@2: scope:[bsearch16u]  from bsearch16u::@6
  bsearch16u::items#5 = phi( bsearch16u::@6/bsearch16u::items#3 )
  bsearch16u::$16 = 1 * SIZEOF_UNSIGNED_INT
  bsearch16u::$1 = bsearch16u::items#5 - bsearch16u::$16
  bsearch16u::$2 = bsearch16u::$1
  to:bsearch16u::@3
bsearch16u::@3: scope:[bsearch16u]  from bsearch16u::@1 bsearch16u::@2
  bsearch16u::$4 = phi( bsearch16u::@1/bsearch16u::$3, bsearch16u::@2/bsearch16u::$2 )
  bsearch16u::return#2 = bsearch16u::$4
  to:bsearch16u::@return

void init_squares()
init_squares: scope:[init_squares]  from init_dist_screen
  heap_head#25 = phi( init_dist_screen/heap_head#29 )
  NUM_SQUARES#7 = phi( init_dist_screen/NUM_SQUARES#2 )
  init_squares::$0 = NUM_SQUARES#7 * SIZEOF_UNSIGNED_INT
  malloc::size#0 = init_squares::$0
  call malloc
  malloc::return#2 = malloc::return#1
  to:init_squares::@3
init_squares::@3: scope:[init_squares]  from init_squares
  NUM_SQUARES#16 = phi( init_squares/NUM_SQUARES#7 )
  heap_head#15 = phi( init_squares/heap_head#1 )
  malloc::return#6 = phi( init_squares/malloc::return#2 )
  init_squares::$1 = malloc::return#6
  heap_head#2 = heap_head#15
  SQUARES#0 = ((unsigned int *)) init_squares::$1
  init_squares::squares#0 = SQUARES#0
  init_squares::sqr#0 = 0
  init_squares::i#0 = 0
  to:init_squares::@1
init_squares::@1: scope:[init_squares]  from init_squares::@2 init_squares::@3
  SQUARES#19 = phi( init_squares::@2/SQUARES#28, init_squares::@3/SQUARES#0 )
  heap_head#26 = phi( init_squares::@2/heap_head#32, init_squares::@3/heap_head#2 )
  init_squares::squares#3 = phi( init_squares::@2/init_squares::squares#1, init_squares::@3/init_squares::squares#0 )
  init_squares::sqr#3 = phi( init_squares::@2/init_squares::sqr#1, init_squares::@3/init_squares::sqr#0 )
  NUM_SQUARES#8 = phi( init_squares::@2/NUM_SQUARES#15, init_squares::@3/NUM_SQUARES#16 )
  init_squares::i#2 = phi( init_squares::@2/init_squares::i#1, init_squares::@3/init_squares::i#0 )
  init_squares::$2 = init_squares::i#2 < NUM_SQUARES#8
  if(init_squares::$2) goto init_squares::@2
  to:init_squares::@return
init_squares::@2: scope:[init_squares]  from init_squares::@1
  SQUARES#28 = phi( init_squares::@1/SQUARES#19 )
  heap_head#32 = phi( init_squares::@1/heap_head#26 )
  NUM_SQUARES#15 = phi( init_squares::@1/NUM_SQUARES#8 )
  init_squares::i#3 = phi( init_squares::@1/init_squares::i#2 )
  init_squares::squares#2 = phi( init_squares::@1/init_squares::squares#3 )
  init_squares::sqr#2 = phi( init_squares::@1/init_squares::sqr#3 )
  *init_squares::squares#2 = init_squares::sqr#2
  init_squares::squares#1 = init_squares::squares#2 + SIZEOF_UNSIGNED_INT
  init_squares::$3 = init_squares::i#3 * 2
  init_squares::$4 = init_squares::$3 + 1
  init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4
  init_squares::i#1 = ++ init_squares::i#3
  to:init_squares::@1
init_squares::@return: scope:[init_squares]  from init_squares::@1
  SQUARES#9 = phi( init_squares::@1/SQUARES#19 )
  heap_head#16 = phi( init_squares::@1/heap_head#26 )
  heap_head#3 = heap_head#16
  SQUARES#1 = SQUARES#9
  return 
  to:@return

unsigned int sqr(char val)
sqr: scope:[sqr]  from init_dist_screen::@10 init_dist_screen::@4
  SQUARES#10 = phi( init_dist_screen::@10/SQUARES#20, init_dist_screen::@4/SQUARES#21 )
  sqr::val#2 = phi( init_dist_screen::@10/sqr::val#1, init_dist_screen::@4/sqr::val#0 )
  sqr::$0 = sqr::val#2 * SIZEOF_UNSIGNED_INT
  sqr::return#0 = SQUARES#10[sqr::$0]
  to:sqr::@return
sqr::@return: scope:[sqr]  from sqr
  sqr::return#4 = phi( sqr/sqr::return#0 )
  sqr::return#1 = sqr::return#4
  return 
  to:@return

char sqrt(unsigned int val)
sqrt: scope:[sqrt]  from init_dist_screen::@13
  NUM_SQUARES#9 = phi( init_dist_screen::@13/NUM_SQUARES#17 )
  SQUARES#11 = phi( init_dist_screen::@13/SQUARES#22 )
  sqrt::val#1 = phi( init_dist_screen::@13/sqrt::val#0 )
  bsearch16u::key#0 = sqrt::val#1
  bsearch16u::items#1 = SQUARES#11
  bsearch16u::num#2 = NUM_SQUARES#9
  call bsearch16u
  bsearch16u::return#3 = bsearch16u::return#1
  to:sqrt::@1
sqrt::@1: scope:[sqrt]  from sqrt
  SQUARES#12 = phi( sqrt/SQUARES#11 )
  bsearch16u::return#5 = phi( sqrt/bsearch16u::return#3 )
  sqrt::found#0 = bsearch16u::return#5
  sqrt::$2 = sqrt::found#0 - SQUARES#12
  sqrt::$1 = sqrt::$2 / SIZEOF_UNSIGNED_INT
  sqrt::sq#0 = (char)sqrt::$1
  sqrt::return#0 = sqrt::sq#0
  to:sqrt::@return
sqrt::@return: scope:[sqrt]  from sqrt::@1
  sqrt::return#3 = phi( sqrt::@1/sqrt::return#0 )
  sqrt::return#1 = sqrt::return#3
  return 
  to:@return

unsigned int atan2_16(int x , int y)
atan2_16: scope:[atan2_16]  from init_angle_screen::@3
  atan2_16::x#9 = phi( init_angle_screen::@3/atan2_16::x#0 )
  atan2_16::y#1 = phi( init_angle_screen::@3/atan2_16::y#0 )
  atan2_16::$0 = atan2_16::y#1 >= 0
  if(atan2_16::$0) goto atan2_16::@1
  to:atan2_16::@2
atan2_16::@1: scope:[atan2_16]  from atan2_16
  atan2_16::x#5 = phi( atan2_16/atan2_16::x#9 )
  atan2_16::y#2 = phi( atan2_16/atan2_16::y#1 )
  atan2_16::$3 = atan2_16::y#2
  to:atan2_16::@3
atan2_16::@2: scope:[atan2_16]  from atan2_16
  atan2_16::x#6 = phi( atan2_16/atan2_16::x#9 )
  atan2_16::y#3 = phi( atan2_16/atan2_16::y#1 )
  atan2_16::$1 = - atan2_16::y#3
  atan2_16::$2 = atan2_16::$1
  to:atan2_16::@3
atan2_16::@3: scope:[atan2_16]  from atan2_16::@1 atan2_16::@2
  atan2_16::y#15 = phi( atan2_16::@1/atan2_16::y#2, atan2_16::@2/atan2_16::y#3 )
  atan2_16::x#1 = phi( atan2_16::@1/atan2_16::x#5, atan2_16::@2/atan2_16::x#6 )
  atan2_16::$4 = phi( atan2_16::@1/atan2_16::$3, atan2_16::@2/atan2_16::$2 )
  atan2_16::yi#0 = atan2_16::$4
  atan2_16::$5 = atan2_16::x#1 >= 0
  if(atan2_16::$5) goto atan2_16::@4
  to:atan2_16::@5
atan2_16::@4: scope:[atan2_16]  from atan2_16::@3
  atan2_16::y#12 = phi( atan2_16::@3/atan2_16::y#15 )
  atan2_16::yi#12 = phi( atan2_16::@3/atan2_16::yi#0 )
  atan2_16::x#2 = phi( atan2_16::@3/atan2_16::x#1 )
  atan2_16::$8 = atan2_16::x#2
  to:atan2_16::@6
atan2_16::@5: scope:[atan2_16]  from atan2_16::@3
  atan2_16::y#13 = phi( atan2_16::@3/atan2_16::y#15 )
  atan2_16::yi#13 = phi( atan2_16::@3/atan2_16::yi#0 )
  atan2_16::x#3 = phi( atan2_16::@3/atan2_16::x#1 )
  atan2_16::$6 = - atan2_16::x#3
  atan2_16::$7 = atan2_16::$6
  to:atan2_16::@6
atan2_16::@6: scope:[atan2_16]  from atan2_16::@4 atan2_16::@5
  atan2_16::y#9 = phi( atan2_16::@4/atan2_16::y#12, atan2_16::@5/atan2_16::y#13 )
  atan2_16::x#10 = phi( atan2_16::@4/atan2_16::x#2, atan2_16::@5/atan2_16::x#3 )
  atan2_16::yi#9 = phi( atan2_16::@4/atan2_16::yi#12, atan2_16::@5/atan2_16::yi#13 )
  atan2_16::$9 = phi( atan2_16::@4/atan2_16::$8, atan2_16::@5/atan2_16::$7 )
  atan2_16::xi#0 = atan2_16::$9
  atan2_16::angle#0 = 0
  atan2_16::i#0 = 0
  to:atan2_16::@10
atan2_16::@10: scope:[atan2_16]  from atan2_16::@19 atan2_16::@6
  atan2_16::y#7 = phi( atan2_16::@19/atan2_16::y#8, atan2_16::@6/atan2_16::y#9 )
  atan2_16::x#7 = phi( atan2_16::@19/atan2_16::x#8, atan2_16::@6/atan2_16::x#10 )
  atan2_16::angle#12 = phi( atan2_16::@19/atan2_16::angle#13, atan2_16::@6/atan2_16::angle#0 )
  atan2_16::i#6 = phi( atan2_16::@19/atan2_16::i#1, atan2_16::@6/atan2_16::i#0 )
  atan2_16::xi#6 = phi( atan2_16::@19/atan2_16::xi#8, atan2_16::@6/atan2_16::xi#0 )
  atan2_16::yi#3 = phi( atan2_16::@19/atan2_16::yi#8, atan2_16::@6/atan2_16::yi#9 )
  atan2_16::$16 = atan2_16::yi#3 == 0
  atan2_16::$17 = ! atan2_16::$16
  if(atan2_16::$17) goto atan2_16::@11
  to:atan2_16::@12
atan2_16::@11: scope:[atan2_16]  from atan2_16::@10
  atan2_16::y#19 = phi( atan2_16::@10/atan2_16::y#7 )
  atan2_16::x#17 = phi( atan2_16::@10/atan2_16::x#7 )
  atan2_16::angle#19 = phi( atan2_16::@10/atan2_16::angle#12 )
  atan2_16::i#2 = phi( atan2_16::@10/atan2_16::i#6 )
  atan2_16::yi#4 = phi( atan2_16::@10/atan2_16::yi#3 )
  atan2_16::xi#3 = phi( atan2_16::@10/atan2_16::xi#6 )
  atan2_16::xd#0 = atan2_16::xi#3
  atan2_16::yd#0 = atan2_16::yi#4
  atan2_16::shift#0 = atan2_16::i#2
  to:atan2_16::@13
atan2_16::@12: scope:[atan2_16]  from atan2_16::@10 atan2_16::@19
  atan2_16::y#5 = phi( atan2_16::@10/atan2_16::y#7, atan2_16::@19/atan2_16::y#8 )
  atan2_16::x#4 = phi( atan2_16::@10/atan2_16::x#7, atan2_16::@19/atan2_16::x#8 )
  atan2_16::angle#6 = phi( atan2_16::@10/atan2_16::angle#12, atan2_16::@19/atan2_16::angle#13 )
  atan2_16::angle#1 = atan2_16::angle#6 / 2
  atan2_16::$10 = atan2_16::x#4 < 0
  atan2_16::$11 = ! atan2_16::$10
  if(atan2_16::$11) goto atan2_16::@7
  to:atan2_16::@21
atan2_16::@13: scope:[atan2_16]  from atan2_16::@11 atan2_16::@14
  atan2_16::y#18 = phi( atan2_16::@11/atan2_16::y#19, atan2_16::@14/atan2_16::y#20 )
  atan2_16::x#16 = phi( atan2_16::@11/atan2_16::x#17, atan2_16::@14/atan2_16::x#18 )
  atan2_16::angle#18 = phi( atan2_16::@11/atan2_16::angle#19, atan2_16::@14/atan2_16::angle#20 )
  atan2_16::i#10 = phi( atan2_16::@11/atan2_16::i#2, atan2_16::@14/atan2_16::i#11 )
  atan2_16::xi#11 = phi( atan2_16::@11/atan2_16::xi#3, atan2_16::@14/atan2_16::xi#12 )
  atan2_16::yi#14 = phi( atan2_16::@11/atan2_16::yi#4, atan2_16::@14/atan2_16::yi#15 )
  atan2_16::yd#7 = phi( atan2_16::@11/atan2_16::yd#0, atan2_16::@14/atan2_16::yd#1 )
  atan2_16::xd#7 = phi( atan2_16::@11/atan2_16::xd#0, atan2_16::@14/atan2_16::xd#1 )
  atan2_16::shift#2 = phi( atan2_16::@11/atan2_16::shift#0, atan2_16::@14/atan2_16::shift#1 )
  atan2_16::$18 = atan2_16::shift#2 >= 2
  if(atan2_16::$18) goto atan2_16::@14
  to:atan2_16::@15
atan2_16::@14: scope:[atan2_16]  from atan2_16::@13
  atan2_16::y#20 = phi( atan2_16::@13/atan2_16::y#18 )
  atan2_16::x#18 = phi( atan2_16::@13/atan2_16::x#16 )
  atan2_16::angle#20 = phi( atan2_16::@13/atan2_16::angle#18 )
  atan2_16::i#11 = phi( atan2_16::@13/atan2_16::i#10 )
  atan2_16::xi#12 = phi( atan2_16::@13/atan2_16::xi#11 )
  atan2_16::yi#15 = phi( atan2_16::@13/atan2_16::yi#14 )
  atan2_16::shift#3 = phi( atan2_16::@13/atan2_16::shift#2 )
  atan2_16::yd#3 = phi( atan2_16::@13/atan2_16::yd#7 )
  atan2_16::xd#3 = phi( atan2_16::@13/atan2_16::xd#7 )
  atan2_16::xd#1 = atan2_16::xd#3 >> 2
  atan2_16::yd#1 = atan2_16::yd#3 >> 2
  atan2_16::shift#1 = atan2_16::shift#3 - 2
  to:atan2_16::@13
atan2_16::@15: scope:[atan2_16]  from atan2_16::@13
  atan2_16::y#16 = phi( atan2_16::@13/atan2_16::y#18 )
  atan2_16::x#14 = phi( atan2_16::@13/atan2_16::x#16 )
  atan2_16::angle#16 = phi( atan2_16::@13/atan2_16::angle#18 )
  atan2_16::i#8 = phi( atan2_16::@13/atan2_16::i#10 )
  atan2_16::xi#9 = phi( atan2_16::@13/atan2_16::xi#11 )
  atan2_16::yd#8 = phi( atan2_16::@13/atan2_16::yd#7 )
  atan2_16::xd#8 = phi( atan2_16::@13/atan2_16::xd#7 )
  atan2_16::yi#10 = phi( atan2_16::@13/atan2_16::yi#14 )
  atan2_16::shift#4 = phi( atan2_16::@13/atan2_16::shift#2 )
  atan2_16::$24 = 0 != atan2_16::shift#4
  atan2_16::$19 = ! atan2_16::$24
  if(atan2_16::$19) goto atan2_16::@17
  to:atan2_16::@16
atan2_16::@17: scope:[atan2_16]  from atan2_16::@15 atan2_16::@16
  atan2_16::y#14 = phi( atan2_16::@15/atan2_16::y#16, atan2_16::@16/atan2_16::y#17 )
  atan2_16::x#13 = phi( atan2_16::@15/atan2_16::x#14, atan2_16::@16/atan2_16::x#15 )
  atan2_16::angle#14 = phi( atan2_16::@15/atan2_16::angle#16, atan2_16::@16/atan2_16::angle#17 )
  atan2_16::i#7 = phi( atan2_16::@15/atan2_16::i#8, atan2_16::@16/atan2_16::i#9 )
  atan2_16::xd#9 = phi( atan2_16::@15/atan2_16::xd#8, atan2_16::@16/atan2_16::xd#2 )
  atan2_16::yd#9 = phi( atan2_16::@15/atan2_16::yd#8, atan2_16::@16/atan2_16::yd#2 )
  atan2_16::xi#7 = phi( atan2_16::@15/atan2_16::xi#9, atan2_16::@16/atan2_16::xi#10 )
  atan2_16::yi#5 = phi( atan2_16::@15/atan2_16::yi#10, atan2_16::@16/atan2_16::yi#11 )
  atan2_16::$20 = atan2_16::yi#5 >= 0
  if(atan2_16::$20) goto atan2_16::@18
  to:atan2_16::@20
atan2_16::@16: scope:[atan2_16]  from atan2_16::@15
  atan2_16::y#17 = phi( atan2_16::@15/atan2_16::y#16 )
  atan2_16::x#15 = phi( atan2_16::@15/atan2_16::x#14 )
  atan2_16::angle#17 = phi( atan2_16::@15/atan2_16::angle#16 )
  atan2_16::i#9 = phi( atan2_16::@15/atan2_16::i#8 )
  atan2_16::xi#10 = phi( atan2_16::@15/atan2_16::xi#9 )
  atan2_16::yi#11 = phi( atan2_16::@15/atan2_16::yi#10 )
  atan2_16::yd#4 = phi( atan2_16::@15/atan2_16::yd#8 )
  atan2_16::xd#4 = phi( atan2_16::@15/atan2_16::xd#8 )
  atan2_16::xd#2 = atan2_16::xd#4 >> 1
  atan2_16::yd#2 = atan2_16::yd#4 >> 1
  to:atan2_16::@17
atan2_16::@18: scope:[atan2_16]  from atan2_16::@17
  atan2_16::y#10 = phi( atan2_16::@17/atan2_16::y#14 )
  atan2_16::x#11 = phi( atan2_16::@17/atan2_16::x#13 )
  atan2_16::angle#7 = phi( atan2_16::@17/atan2_16::angle#14 )
  atan2_16::i#3 = phi( atan2_16::@17/atan2_16::i#7 )
  atan2_16::xd#5 = phi( atan2_16::@17/atan2_16::xd#9 )
  atan2_16::yi#6 = phi( atan2_16::@17/atan2_16::yi#5 )
  atan2_16::yd#5 = phi( atan2_16::@17/atan2_16::yd#9 )
  atan2_16::xi#4 = phi( atan2_16::@17/atan2_16::xi#7 )
  atan2_16::xi#1 = atan2_16::xi#4 + atan2_16::yd#5
  atan2_16::yi#1 = atan2_16::yi#6 - atan2_16::xd#5
  atan2_16::$22 = atan2_16::i#3 * SIZEOF_UNSIGNED_INT
  atan2_16::angle#2 = atan2_16::angle#7 + CORDIC_ATAN2_ANGLES_16[atan2_16::$22]
  to:atan2_16::@19
atan2_16::@20: scope:[atan2_16]  from atan2_16::@17
  atan2_16::y#11 = phi( atan2_16::@17/atan2_16::y#14 )
  atan2_16::x#12 = phi( atan2_16::@17/atan2_16::x#13 )
  atan2_16::angle#8 = phi( atan2_16::@17/atan2_16::angle#14 )
  atan2_16::i#4 = phi( atan2_16::@17/atan2_16::i#7 )
  atan2_16::xd#6 = phi( atan2_16::@17/atan2_16::xd#9 )
  atan2_16::yi#7 = phi( atan2_16::@17/atan2_16::yi#5 )
  atan2_16::yd#6 = phi( atan2_16::@17/atan2_16::yd#9 )
  atan2_16::xi#5 = phi( atan2_16::@17/atan2_16::xi#7 )
  atan2_16::xi#2 = atan2_16::xi#5 - atan2_16::yd#6
  atan2_16::yi#2 = atan2_16::yi#7 + atan2_16::xd#6
  atan2_16::$23 = atan2_16::i#4 * SIZEOF_UNSIGNED_INT
  atan2_16::angle#3 = atan2_16::angle#8 - CORDIC_ATAN2_ANGLES_16[atan2_16::$23]
  to:atan2_16::@19
atan2_16::@19: scope:[atan2_16]  from atan2_16::@18 atan2_16::@20
  atan2_16::y#8 = phi( atan2_16::@18/atan2_16::y#10, atan2_16::@20/atan2_16::y#11 )
  atan2_16::xi#8 = phi( atan2_16::@18/atan2_16::xi#1, atan2_16::@20/atan2_16::xi#2 )
  atan2_16::x#8 = phi( atan2_16::@18/atan2_16::x#11, atan2_16::@20/atan2_16::x#12 )
  atan2_16::angle#13 = phi( atan2_16::@18/atan2_16::angle#2, atan2_16::@20/atan2_16::angle#3 )
  atan2_16::yi#8 = phi( atan2_16::@18/atan2_16::yi#1, atan2_16::@20/atan2_16::yi#2 )
  atan2_16::i#5 = phi( atan2_16::@18/atan2_16::i#3, atan2_16::@20/atan2_16::i#4 )
  atan2_16::i#1 = atan2_16::i#5 + rangenext(0,CORDIC_ITERATIONS_16-1)
  atan2_16::$21 = atan2_16::i#1 != rangelast(0,CORDIC_ITERATIONS_16-1)
  if(atan2_16::$21) goto atan2_16::@10
  to:atan2_16::@12
atan2_16::@7: scope:[atan2_16]  from atan2_16::@12 atan2_16::@21
  atan2_16::angle#15 = phi( atan2_16::@12/atan2_16::angle#1, atan2_16::@21/atan2_16::angle#4 )
  atan2_16::y#4 = phi( atan2_16::@12/atan2_16::y#5, atan2_16::@21/atan2_16::y#6 )
  atan2_16::$13 = atan2_16::y#4 < 0
  atan2_16::$14 = ! atan2_16::$13
  if(atan2_16::$14) goto atan2_16::@8
  to:atan2_16::@9
atan2_16::@21: scope:[atan2_16]  from atan2_16::@12
  atan2_16::y#6 = phi( atan2_16::@12/atan2_16::y#5 )
  atan2_16::angle#9 = phi( atan2_16::@12/atan2_16::angle#1 )
  atan2_16::$12 = $8000 - atan2_16::angle#9
  atan2_16::angle#4 = atan2_16::$12
  to:atan2_16::@7
atan2_16::@8: scope:[atan2_16]  from atan2_16::@7 atan2_16::@9
  atan2_16::angle#10 = phi( atan2_16::@7/atan2_16::angle#15, atan2_16::@9/atan2_16::angle#5 )
  atan2_16::return#0 = atan2_16::angle#10
  to:atan2_16::@return
atan2_16::@9: scope:[atan2_16]  from atan2_16::@7
  atan2_16::angle#11 = phi( atan2_16::@7/atan2_16::angle#15 )
  atan2_16::$15 = - atan2_16::angle#11
  atan2_16::angle#5 = atan2_16::$15
  to:atan2_16::@8
atan2_16::@return: scope:[atan2_16]  from atan2_16::@8
  atan2_16::return#3 = phi( atan2_16::@8/atan2_16::return#0 )
  atan2_16::return#1 = atan2_16::return#3
  return 
  to:@return

void print_char(char ch)
print_char: scope:[print_char]  from make_plasma_charset::@10
  print_char_cursor#12 = phi( make_plasma_charset::@10/print_char_cursor#22 )
  print_char::ch#1 = phi( make_plasma_charset::@10/print_char::ch#0 )
  *print_char_cursor#12 = print_char::ch#1
  print_char_cursor#0 = ++ print_char_cursor#12
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  print_char_cursor#13 = phi( print_char/print_char_cursor#0 )
  print_char_cursor#1 = print_char_cursor#13
  return 
  to:@return

void print_cls()
print_cls: scope:[print_cls]  from make_plasma_charset::@12
  print_screen#2 = phi( make_plasma_charset::@12/print_screen#5 )
  memset::str#0 = (void *)print_screen#2
  memset::c#0 = ' '
  memset::num#0 = $3e8
  call memset
  memset::return#2 = memset::return#1
  to:print_cls::@1
print_cls::@1: scope:[print_cls]  from print_cls
  print_screen#3 = phi( print_cls/print_screen#2 )
  print_line_cursor#0 = print_screen#3
  print_char_cursor#2 = print_line_cursor#0
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls::@1
  print_char_cursor#14 = phi( print_cls::@1/print_char_cursor#2 )
  print_line_cursor#9 = phi( print_cls::@1/print_line_cursor#0 )
  print_line_cursor#1 = print_line_cursor#9
  print_char_cursor#3 = print_char_cursor#14
  return 
  to:@return

void main()
main: scope:[main]  from __start::@1
  print_screen#14 = phi( __start::@1/print_screen#8 )
  sin_offset_y#32 = phi( __start::@1/sin_offset_y#20 )
  sin_offset_x#32 = phi( __start::@1/sin_offset_x#20 )
  print_char_cursor#35 = phi( __start::@1/print_char_cursor#27 )
  print_line_cursor#27 = phi( __start::@1/print_line_cursor#20 )
  SCREEN_ANGLE#5 = phi( __start::@1/SCREEN_ANGLE#9 )
  SQUARES#23 = phi( __start::@1/SQUARES#27 )
  heap_head#27 = phi( __start::@1/heap_head#31 )
  NUM_SQUARES#18 = phi( __start::@1/NUM_SQUARES#21 )
  SCREEN_DIST#2 = phi( __start::@1/SCREEN_DIST#5 )
  init_dist_screen::screen#0 = SCREEN_DIST#2
  call init_dist_screen
  to:main::@5
main::@5: scope:[main]  from main
  SCREEN_DIST#20 = phi( main/SCREEN_DIST#2 )
  print_screen#13 = phi( main/print_screen#14 )
  sin_offset_y#31 = phi( main/sin_offset_y#32 )
  sin_offset_x#31 = phi( main/sin_offset_x#32 )
  print_char_cursor#28 = phi( main/print_char_cursor#35 )
  print_line_cursor#21 = phi( main/print_line_cursor#27 )
  SCREEN_ANGLE#2 = phi( main/SCREEN_ANGLE#5 )
  SQUARES#13 = phi( main/SQUARES#5 )
  heap_head#17 = phi( main/heap_head#7 )
  NUM_SQUARES#10 = phi( main/NUM_SQUARES#3 )
  NUM_SQUARES#0 = NUM_SQUARES#10
  heap_head#4 = heap_head#17
  SQUARES#2 = SQUARES#13
  init_angle_screen::screen#0 = SCREEN_ANGLE#2
  call init_angle_screen
  to:main::@6
main::@6: scope:[main]  from main::@5
  SCREEN_DIST#18 = phi( main::@5/SCREEN_DIST#20 )
  SCREEN_ANGLE#18 = phi( main::@5/SCREEN_ANGLE#2 )
  print_screen#11 = phi( main::@5/print_screen#13 )
  sin_offset_y#29 = phi( main::@5/sin_offset_y#31 )
  sin_offset_x#29 = phi( main::@5/sin_offset_x#31 )
  SQUARES#44 = phi( main::@5/SQUARES#2 )
  heap_head#40 = phi( main::@5/heap_head#4 )
  NUM_SQUARES#34 = phi( main::@5/NUM_SQUARES#0 )
  print_char_cursor#23 = phi( main::@5/print_char_cursor#28 )
  print_line_cursor#16 = phi( main::@5/print_line_cursor#21 )
  make_plasma_charset::charset#0 = CHARSET
  call make_plasma_charset
  to:main::@7
main::@7: scope:[main]  from main::@6
  SCREEN_DIST#15 = phi( main::@6/SCREEN_DIST#18 )
  SCREEN_ANGLE#15 = phi( main::@6/SCREEN_ANGLE#18 )
  sin_offset_y#25 = phi( main::@6/sin_offset_y#29 )
  sin_offset_x#25 = phi( main::@6/sin_offset_x#29 )
  SQUARES#37 = phi( main::@6/SQUARES#44 )
  heap_head#36 = phi( main::@6/heap_head#40 )
  NUM_SQUARES#27 = phi( main::@6/NUM_SQUARES#34 )
  print_char_cursor#15 = phi( main::@6/print_char_cursor#8 )
  print_line_cursor#10 = phi( main::@6/print_line_cursor#5 )
  print_line_cursor#2 = print_line_cursor#10
  print_char_cursor#4 = print_char_cursor#15
  memset::str#1 = (void *)COLS
  memset::c#1 = BLACK
  memset::num#1 = $3e8
  call memset
  memset::return#3 = memset::return#1
  to:main::@8
main::@8: scope:[main]  from main::@7
  SCREEN_DIST#13 = phi( main::@7/SCREEN_DIST#15 )
  SCREEN_ANGLE#13 = phi( main::@7/SCREEN_ANGLE#15 )
  sin_offset_y#22 = phi( main::@7/sin_offset_y#25 )
  sin_offset_x#22 = phi( main::@7/sin_offset_x#25 )
  print_char_cursor#30 = phi( main::@7/print_char_cursor#4 )
  print_line_cursor#23 = phi( main::@7/print_line_cursor#2 )
  SQUARES#30 = phi( main::@7/SQUARES#37 )
  heap_head#34 = phi( main::@7/heap_head#36 )
  NUM_SQUARES#23 = phi( main::@7/NUM_SQUARES#27 )
  to:main::@1
main::@1: scope:[main]  from main::@4 main::@8
  SCREEN_DIST#9 = phi( main::@4/SCREEN_DIST#12, main::@8/SCREEN_DIST#13 )
  SCREEN_ANGLE#10 = phi( main::@4/SCREEN_ANGLE#12, main::@8/SCREEN_ANGLE#13 )
  sin_offset_y#18 = phi( main::@4/sin_offset_y#21, main::@8/sin_offset_y#22 )
  sin_offset_x#18 = phi( main::@4/sin_offset_x#21, main::@8/sin_offset_x#22 )
  print_char_cursor#24 = phi( main::@4/print_char_cursor#29, main::@8/print_char_cursor#30 )
  print_line_cursor#17 = phi( main::@4/print_line_cursor#22, main::@8/print_line_cursor#23 )
  SQUARES#24 = phi( main::@4/SQUARES#29, main::@8/SQUARES#30 )
  heap_head#28 = phi( main::@4/heap_head#33, main::@8/heap_head#34 )
  NUM_SQUARES#19 = phi( main::@4/NUM_SQUARES#22, main::@8/NUM_SQUARES#23 )
  if(true) goto main::@2
  to:main::@return
main::@2: scope:[main]  from main::@1
  print_char_cursor#55 = phi( main::@1/print_char_cursor#24 )
  print_line_cursor#49 = phi( main::@1/print_line_cursor#17 )
  SQUARES#51 = phi( main::@1/SQUARES#24 )
  heap_head#56 = phi( main::@1/heap_head#28 )
  NUM_SQUARES#47 = phi( main::@1/NUM_SQUARES#19 )
  SCREEN_DIST#6 = phi( main::@1/SCREEN_DIST#9 )
  SCREEN_ANGLE#6 = phi( main::@1/SCREEN_ANGLE#10 )
  sin_offset_y#16 = phi( main::@1/sin_offset_y#18 )
  sin_offset_x#16 = phi( main::@1/sin_offset_x#18 )
  doplasma::screen#0 = SCREEN1
  call doplasma
  to:main::@9
main::@9: scope:[main]  from main::@2
  print_char_cursor#53 = phi( main::@2/print_char_cursor#55 )
  print_line_cursor#47 = phi( main::@2/print_line_cursor#49 )
  SQUARES#50 = phi( main::@2/SQUARES#51 )
  heap_head#55 = phi( main::@2/heap_head#56 )
  NUM_SQUARES#46 = phi( main::@2/NUM_SQUARES#47 )
  SCREEN_DIST#16 = phi( main::@2/SCREEN_DIST#6 )
  SCREEN_ANGLE#16 = phi( main::@2/SCREEN_ANGLE#6 )
  sin_offset_y#8 = phi( main::@2/sin_offset_y#4 )
  sin_offset_x#8 = phi( main::@2/sin_offset_x#4 )
  sin_offset_x#0 = sin_offset_x#8
  sin_offset_y#0 = sin_offset_y#8
  main::toD0181_screen#0 = SCREEN1
  main::toD0181_gfx#0 = CHARSET
  to:main::toD0181
main::toD0181: scope:[main]  from main::@9
  print_char_cursor#51 = phi( main::@9/print_char_cursor#53 )
  print_line_cursor#44 = phi( main::@9/print_line_cursor#47 )
  SQUARES#49 = phi( main::@9/SQUARES#50 )
  heap_head#54 = phi( main::@9/heap_head#55 )
  NUM_SQUARES#45 = phi( main::@9/NUM_SQUARES#46 )
  SCREEN_DIST#14 = phi( main::@9/SCREEN_DIST#16 )
  SCREEN_ANGLE#14 = phi( main::@9/SCREEN_ANGLE#16 )
  sin_offset_y#26 = phi( main::@9/sin_offset_y#0 )
  sin_offset_x#26 = phi( main::@9/sin_offset_x#0 )
  main::toD0181_gfx#1 = phi( main::@9/main::toD0181_gfx#0 )
  main::toD0181_screen#1 = phi( main::@9/main::toD0181_screen#0 )
  main::toD0181_$7 = (unsigned int)main::toD0181_screen#1
  main::toD0181_$0 = main::toD0181_$7 & $3fff
  main::toD0181_$1 = main::toD0181_$0 * 4
  main::toD0181_$2 = byte1  main::toD0181_$1
  main::toD0181_$3 = byte1  (unsigned int)main::toD0181_gfx#1
  main::toD0181_$4 = main::toD0181_$3 / 4
  main::toD0181_$5 = main::toD0181_$4 & $f
  main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5
  main::toD0181_return#0 = main::toD0181_$6
  to:main::toD0181_@return
main::toD0181_@return: scope:[main]  from main::toD0181
  print_char_cursor#48 = phi( main::toD0181/print_char_cursor#51 )
  print_line_cursor#41 = phi( main::toD0181/print_line_cursor#44 )
  SQUARES#48 = phi( main::toD0181/SQUARES#49 )
  heap_head#52 = phi( main::toD0181/heap_head#54 )
  NUM_SQUARES#43 = phi( main::toD0181/NUM_SQUARES#45 )
  SCREEN_DIST#10 = phi( main::toD0181/SCREEN_DIST#14 )
  SCREEN_ANGLE#11 = phi( main::toD0181/SCREEN_ANGLE#14 )
  sin_offset_y#23 = phi( main::toD0181/sin_offset_y#26 )
  sin_offset_x#23 = phi( main::toD0181/sin_offset_x#26 )
  main::toD0181_return#2 = phi( main::toD0181/main::toD0181_return#0 )
  main::toD0181_return#1 = main::toD0181_return#2
  to:main::@3
main::@3: scope:[main]  from main::toD0181_@return
  print_char_cursor#45 = phi( main::toD0181_@return/print_char_cursor#48 )
  print_line_cursor#39 = phi( main::toD0181_@return/print_line_cursor#41 )
  SQUARES#47 = phi( main::toD0181_@return/SQUARES#48 )
  heap_head#48 = phi( main::toD0181_@return/heap_head#52 )
  NUM_SQUARES#41 = phi( main::toD0181_@return/NUM_SQUARES#43 )
  SCREEN_DIST#7 = phi( main::toD0181_@return/SCREEN_DIST#10 )
  SCREEN_ANGLE#7 = phi( main::toD0181_@return/SCREEN_ANGLE#11 )
  sin_offset_y#17 = phi( main::toD0181_@return/sin_offset_y#23 )
  sin_offset_x#17 = phi( main::toD0181_@return/sin_offset_x#23 )
  main::toD0181_return#3 = phi( main::toD0181_@return/main::toD0181_return#1 )
  main::$5 = main::toD0181_return#3
  *D018 = main::$5
  doplasma::screen#1 = SCREEN2
  call doplasma
  to:main::@10
main::@10: scope:[main]  from main::@3
  SCREEN_DIST#21 = phi( main::@3/SCREEN_DIST#7 )
  SCREEN_ANGLE#20 = phi( main::@3/SCREEN_ANGLE#7 )
  print_char_cursor#43 = phi( main::@3/print_char_cursor#45 )
  print_line_cursor#36 = phi( main::@3/print_line_cursor#39 )
  SQUARES#46 = phi( main::@3/SQUARES#47 )
  heap_head#44 = phi( main::@3/heap_head#48 )
  NUM_SQUARES#38 = phi( main::@3/NUM_SQUARES#41 )
  sin_offset_y#9 = phi( main::@3/sin_offset_y#4 )
  sin_offset_x#9 = phi( main::@3/sin_offset_x#4 )
  sin_offset_x#1 = sin_offset_x#9
  sin_offset_y#1 = sin_offset_y#9
  main::toD0182_screen#0 = SCREEN2
  main::toD0182_gfx#0 = CHARSET
  to:main::toD0182
main::toD0182: scope:[main]  from main::@10
  SCREEN_DIST#19 = phi( main::@10/SCREEN_DIST#21 )
  SCREEN_ANGLE#19 = phi( main::@10/SCREEN_ANGLE#20 )
  sin_offset_y#30 = phi( main::@10/sin_offset_y#1 )
  sin_offset_x#30 = phi( main::@10/sin_offset_x#1 )
  print_char_cursor#40 = phi( main::@10/print_char_cursor#43 )
  print_line_cursor#33 = phi( main::@10/print_line_cursor#36 )
  SQUARES#45 = phi( main::@10/SQUARES#46 )
  heap_head#41 = phi( main::@10/heap_head#44 )
  NUM_SQUARES#35 = phi( main::@10/NUM_SQUARES#38 )
  main::toD0182_gfx#1 = phi( main::@10/main::toD0182_gfx#0 )
  main::toD0182_screen#1 = phi( main::@10/main::toD0182_screen#0 )
  main::toD0182_$7 = (unsigned int)main::toD0182_screen#1
  main::toD0182_$0 = main::toD0182_$7 & $3fff
  main::toD0182_$1 = main::toD0182_$0 * 4
  main::toD0182_$2 = byte1  main::toD0182_$1
  main::toD0182_$3 = byte1  (unsigned int)main::toD0182_gfx#1
  main::toD0182_$4 = main::toD0182_$3 / 4
  main::toD0182_$5 = main::toD0182_$4 & $f
  main::toD0182_$6 = main::toD0182_$2 | main::toD0182_$5
  main::toD0182_return#0 = main::toD0182_$6
  to:main::toD0182_@return
main::toD0182_@return: scope:[main]  from main::toD0182
  SCREEN_DIST#17 = phi( main::toD0182/SCREEN_DIST#19 )
  SCREEN_ANGLE#17 = phi( main::toD0182/SCREEN_ANGLE#19 )
  sin_offset_y#27 = phi( main::toD0182/sin_offset_y#30 )
  sin_offset_x#27 = phi( main::toD0182/sin_offset_x#30 )
  print_char_cursor#36 = phi( main::toD0182/print_char_cursor#40 )
  print_line_cursor#28 = phi( main::toD0182/print_line_cursor#33 )
  SQUARES#38 = phi( main::toD0182/SQUARES#45 )
  heap_head#37 = phi( main::toD0182/heap_head#41 )
  NUM_SQUARES#28 = phi( main::toD0182/NUM_SQUARES#35 )
  main::toD0182_return#2 = phi( main::toD0182/main::toD0182_return#0 )
  main::toD0182_return#1 = main::toD0182_return#2
  to:main::@4
main::@4: scope:[main]  from main::toD0182_@return
  SCREEN_DIST#12 = phi( main::toD0182_@return/SCREEN_DIST#17 )
  SCREEN_ANGLE#12 = phi( main::toD0182_@return/SCREEN_ANGLE#17 )
  sin_offset_y#21 = phi( main::toD0182_@return/sin_offset_y#27 )
  sin_offset_x#21 = phi( main::toD0182_@return/sin_offset_x#27 )
  print_char_cursor#29 = phi( main::toD0182_@return/print_char_cursor#36 )
  print_line_cursor#22 = phi( main::toD0182_@return/print_line_cursor#28 )
  SQUARES#29 = phi( main::toD0182_@return/SQUARES#38 )
  heap_head#33 = phi( main::toD0182_@return/heap_head#37 )
  NUM_SQUARES#22 = phi( main::toD0182_@return/NUM_SQUARES#28 )
  main::toD0182_return#3 = phi( main::toD0182_@return/main::toD0182_return#1 )
  main::$7 = main::toD0182_return#3
  *D018 = main::$7
  to:main::@1
main::@return: scope:[main]  from main::@1
  sin_offset_y#10 = phi( main::@1/sin_offset_y#18 )
  sin_offset_x#10 = phi( main::@1/sin_offset_x#18 )
  print_char_cursor#16 = phi( main::@1/print_char_cursor#24 )
  print_line_cursor#11 = phi( main::@1/print_line_cursor#17 )
  SQUARES#14 = phi( main::@1/SQUARES#24 )
  heap_head#18 = phi( main::@1/heap_head#28 )
  NUM_SQUARES#11 = phi( main::@1/NUM_SQUARES#19 )
  NUM_SQUARES#1 = NUM_SQUARES#11
  heap_head#5 = heap_head#18
  SQUARES#3 = SQUARES#14
  print_line_cursor#3 = print_line_cursor#11
  print_char_cursor#5 = print_char_cursor#16
  sin_offset_x#2 = sin_offset_x#10
  sin_offset_y#2 = sin_offset_y#10
  return 
  to:@return

void doplasma(char *screen)
doplasma: scope:[doplasma]  from main::@2 main::@3
  doplasma::screen#6 = phi( main::@2/doplasma::screen#0, main::@3/doplasma::screen#1 )
  sin_offset_y#11 = phi( main::@2/sin_offset_y#16, main::@3/sin_offset_y#17 )
  sin_offset_x#11 = phi( main::@2/sin_offset_x#16, main::@3/sin_offset_x#17 )
  SCREEN_DIST#3 = phi( main::@2/SCREEN_DIST#6, main::@3/SCREEN_DIST#7 )
  SCREEN_ANGLE#3 = phi( main::@2/SCREEN_ANGLE#6, main::@3/SCREEN_ANGLE#7 )
  doplasma::angle#0 = SCREEN_ANGLE#3
  doplasma::dist#0 = SCREEN_DIST#3
  doplasma::sin_x#0 = SINTABLE + sin_offset_x#11
  doplasma::sin_y#0 = SINTABLE + sin_offset_y#11
  doplasma::y#0 = 0
  to:doplasma::@1
doplasma::@1: scope:[doplasma]  from doplasma doplasma::@3
  sin_offset_y#28 = phi( doplasma/sin_offset_y#11, doplasma::@3/sin_offset_y#19 )
  sin_offset_x#28 = phi( doplasma/sin_offset_x#11, doplasma::@3/sin_offset_x#19 )
  doplasma::y#4 = phi( doplasma/doplasma::y#0, doplasma::@3/doplasma::y#1 )
  doplasma::screen#5 = phi( doplasma/doplasma::screen#6, doplasma::@3/doplasma::screen#2 )
  doplasma::dist#4 = phi( doplasma/doplasma::dist#0, doplasma::@3/doplasma::dist#1 )
  doplasma::sin_y#2 = phi( doplasma/doplasma::sin_y#0, doplasma::@3/doplasma::sin_y#3 )
  doplasma::angle#4 = phi( doplasma/doplasma::angle#0, doplasma::@3/doplasma::angle#1 )
  doplasma::sin_x#2 = phi( doplasma/doplasma::sin_x#0, doplasma::@3/doplasma::sin_x#3 )
  doplasma::x#0 = 0
  to:doplasma::@2
doplasma::@2: scope:[doplasma]  from doplasma::@1 doplasma::@2
  sin_offset_y#24 = phi( doplasma::@1/sin_offset_y#28, doplasma::@2/sin_offset_y#24 )
  sin_offset_x#24 = phi( doplasma::@1/sin_offset_x#28, doplasma::@2/sin_offset_x#24 )
  doplasma::y#3 = phi( doplasma::@1/doplasma::y#4, doplasma::@2/doplasma::y#3 )
  doplasma::screen#3 = phi( doplasma::@1/doplasma::screen#5, doplasma::@2/doplasma::screen#3 )
  doplasma::dist#2 = phi( doplasma::@1/doplasma::dist#4, doplasma::@2/doplasma::dist#2 )
  doplasma::sin_y#1 = phi( doplasma::@1/doplasma::sin_y#2, doplasma::@2/doplasma::sin_y#1 )
  doplasma::x#2 = phi( doplasma::@1/doplasma::x#0, doplasma::@2/doplasma::x#1 )
  doplasma::angle#2 = phi( doplasma::@1/doplasma::angle#4, doplasma::@2/doplasma::angle#2 )
  doplasma::sin_x#1 = phi( doplasma::@1/doplasma::sin_x#2, doplasma::@2/doplasma::sin_x#1 )
  doplasma::$2 = doplasma::sin_x#1[doplasma::angle#2[doplasma::x#2]] + doplasma::sin_y#1[doplasma::dist#2[doplasma::x#2]]
  doplasma::screen#3[doplasma::x#2] = doplasma::$2
  doplasma::x#1 = doplasma::x#2 + rangenext(0,$27)
  doplasma::$3 = doplasma::x#1 != rangelast(0,$27)
  if(doplasma::$3) goto doplasma::@2
  to:doplasma::@3
doplasma::@3: scope:[doplasma]  from doplasma::@2
  doplasma::sin_y#3 = phi( doplasma::@2/doplasma::sin_y#1 )
  doplasma::sin_x#3 = phi( doplasma::@2/doplasma::sin_x#1 )
  sin_offset_y#19 = phi( doplasma::@2/sin_offset_y#24 )
  sin_offset_x#19 = phi( doplasma::@2/sin_offset_x#24 )
  doplasma::y#2 = phi( doplasma::@2/doplasma::y#3 )
  doplasma::dist#3 = phi( doplasma::@2/doplasma::dist#2 )
  doplasma::angle#3 = phi( doplasma::@2/doplasma::angle#2 )
  doplasma::screen#4 = phi( doplasma::@2/doplasma::screen#3 )
  doplasma::screen#2 = doplasma::screen#4 + $28
  doplasma::angle#1 = doplasma::angle#3 + $28
  doplasma::dist#1 = doplasma::dist#3 + $28
  doplasma::y#1 = doplasma::y#2 + rangenext(0,$19)
  doplasma::$4 = doplasma::y#1 != rangelast(0,$19)
  if(doplasma::$4) goto doplasma::@1
  to:doplasma::@4
doplasma::@4: scope:[doplasma]  from doplasma::@3
  sin_offset_y#12 = phi( doplasma::@3/sin_offset_y#19 )
  sin_offset_x#12 = phi( doplasma::@3/sin_offset_x#19 )
  sin_offset_x#3 = sin_offset_x#12 - 3
  sin_offset_y#3 = sin_offset_y#12 - 7
  to:doplasma::@return
doplasma::@return: scope:[doplasma]  from doplasma::@4
  sin_offset_y#13 = phi( doplasma::@4/sin_offset_y#3 )
  sin_offset_x#13 = phi( doplasma::@4/sin_offset_x#3 )
  sin_offset_x#4 = sin_offset_x#13
  sin_offset_y#4 = sin_offset_y#13
  return 
  to:@return

void init_angle_screen(char *screen)
init_angle_screen: scope:[init_angle_screen]  from main::@5
  init_angle_screen::screen#1 = phi( main::@5/init_angle_screen::screen#0 )
  init_angle_screen::screen_topline#0 = init_angle_screen::screen#1 + $28*$c
  init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#1 + $28*$c
  init_angle_screen::y#0 = 0
  to:init_angle_screen::@1
init_angle_screen::@1: scope:[init_angle_screen]  from init_angle_screen init_angle_screen::@4
  init_angle_screen::screen_bottomline#6 = phi( init_angle_screen/init_angle_screen::screen_bottomline#0, init_angle_screen::@4/init_angle_screen::screen_bottomline#1 )
  init_angle_screen::screen_topline#6 = phi( init_angle_screen/init_angle_screen::screen_topline#0, init_angle_screen::@4/init_angle_screen::screen_topline#1 )
  init_angle_screen::y#5 = phi( init_angle_screen/init_angle_screen::y#0, init_angle_screen::@4/init_angle_screen::y#1 )
  init_angle_screen::x#0 = 0
  init_angle_screen::xb#0 = $27
  to:init_angle_screen::@2
init_angle_screen::@2: scope:[init_angle_screen]  from init_angle_screen::@1 init_angle_screen::@5
  init_angle_screen::xb#4 = phi( init_angle_screen::@1/init_angle_screen::xb#0, init_angle_screen::@5/init_angle_screen::xb#1 )
  init_angle_screen::screen_bottomline#5 = phi( init_angle_screen::@1/init_angle_screen::screen_bottomline#6, init_angle_screen::@5/init_angle_screen::screen_bottomline#2 )
  init_angle_screen::screen_topline#5 = phi( init_angle_screen::@1/init_angle_screen::screen_topline#6, init_angle_screen::@5/init_angle_screen::screen_topline#2 )
  init_angle_screen::y#4 = phi( init_angle_screen::@1/init_angle_screen::y#5, init_angle_screen::@5/init_angle_screen::y#6 )
  init_angle_screen::x#2 = phi( init_angle_screen::@1/init_angle_screen::x#0, init_angle_screen::@5/init_angle_screen::x#1 )
  init_angle_screen::$2 = init_angle_screen::x#2 <= $13
  if(init_angle_screen::$2) goto init_angle_screen::@3
  to:init_angle_screen::@4
init_angle_screen::@3: scope:[init_angle_screen]  from init_angle_screen::@2
  init_angle_screen::screen_topline#4 = phi( init_angle_screen::@2/init_angle_screen::screen_topline#5 )
  init_angle_screen::xb#3 = phi( init_angle_screen::@2/init_angle_screen::xb#4 )
  init_angle_screen::screen_bottomline#4 = phi( init_angle_screen::@2/init_angle_screen::screen_bottomline#5 )
  init_angle_screen::y#2 = phi( init_angle_screen::@2/init_angle_screen::y#4 )
  init_angle_screen::x#3 = phi( init_angle_screen::@2/init_angle_screen::x#2 )
  init_angle_screen::$3 = init_angle_screen::x#3 * 2
  init_angle_screen::$4 = $27 - init_angle_screen::$3
  init_angle_screen::$5 = init_angle_screen::$4 w= 0
  init_angle_screen::xw#0 = (int)init_angle_screen::$5
  init_angle_screen::$6 = init_angle_screen::y#2 * 2
  init_angle_screen::$7 = init_angle_screen::$6 w= 0
  init_angle_screen::yw#0 = (int)init_angle_screen::$7
  atan2_16::x#0 = init_angle_screen::xw#0
  atan2_16::y#0 = init_angle_screen::yw#0
  call atan2_16
  atan2_16::return#2 = atan2_16::return#1
  to:init_angle_screen::@5
init_angle_screen::@5: scope:[init_angle_screen]  from init_angle_screen::@3
  init_angle_screen::y#6 = phi( init_angle_screen::@3/init_angle_screen::y#2 )
  init_angle_screen::x#4 = phi( init_angle_screen::@3/init_angle_screen::x#3 )
  init_angle_screen::screen_topline#2 = phi( init_angle_screen::@3/init_angle_screen::screen_topline#4 )
  init_angle_screen::xb#2 = phi( init_angle_screen::@3/init_angle_screen::xb#3 )
  init_angle_screen::screen_bottomline#2 = phi( init_angle_screen::@3/init_angle_screen::screen_bottomline#4 )
  atan2_16::return#4 = phi( init_angle_screen::@3/atan2_16::return#2 )
  init_angle_screen::angle_w#0 = atan2_16::return#4
  init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
  init_angle_screen::ang_w#0 = byte1  init_angle_screen::$9
  init_angle_screen::screen_bottomline#2[init_angle_screen::xb#2] = init_angle_screen::ang_w#0
  init_angle_screen::$11 = - init_angle_screen::ang_w#0
  init_angle_screen::screen_topline#2[init_angle_screen::xb#2] = init_angle_screen::$11
  init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
  init_angle_screen::screen_topline#2[init_angle_screen::x#4] = init_angle_screen::$12
  init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
  init_angle_screen::screen_bottomline#2[init_angle_screen::x#4] = init_angle_screen::$13
  init_angle_screen::x#1 = ++ init_angle_screen::x#4
  init_angle_screen::xb#1 = -- init_angle_screen::xb#2
  to:init_angle_screen::@2
init_angle_screen::@4: scope:[init_angle_screen]  from init_angle_screen::@2
  init_angle_screen::y#3 = phi( init_angle_screen::@2/init_angle_screen::y#4 )
  init_angle_screen::screen_bottomline#3 = phi( init_angle_screen::@2/init_angle_screen::screen_bottomline#5 )
  init_angle_screen::screen_topline#3 = phi( init_angle_screen::@2/init_angle_screen::screen_topline#5 )
  init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#3 - $28
  init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#3 + $28
  init_angle_screen::y#1 = init_angle_screen::y#3 + rangenext(0,$c)
  init_angle_screen::$14 = init_angle_screen::y#1 != rangelast(0,$c)
  if(init_angle_screen::$14) goto init_angle_screen::@1
  to:init_angle_screen::@return
init_angle_screen::@return: scope:[init_angle_screen]  from init_angle_screen::@4
  return 
  to:@return

void init_dist_screen(char *screen)
init_dist_screen: scope:[init_dist_screen]  from main
  init_dist_screen::screen#2 = phi( main/init_dist_screen::screen#0 )
  SQUARES#25 = phi( main/SQUARES#23 )
  heap_head#29 = phi( main/heap_head#27 )
  NUM_SQUARES#2 = $30
  call init_squares
  to:init_dist_screen::@11
init_dist_screen::@11: scope:[init_dist_screen]  from init_dist_screen
  NUM_SQUARES#44 = phi( init_dist_screen/NUM_SQUARES#2 )
  init_dist_screen::screen#1 = phi( init_dist_screen/init_dist_screen::screen#2 )
  SQUARES#15 = phi( init_dist_screen/SQUARES#1 )
  heap_head#19 = phi( init_dist_screen/heap_head#3 )
  heap_head#6 = heap_head#19
  SQUARES#4 = SQUARES#15
  init_dist_screen::screen_topline#0 = init_dist_screen::screen#1
  init_dist_screen::screen_bottomline#0 = init_dist_screen::screen#1 + $28*$18
  init_dist_screen::y#0 = 0
  to:init_dist_screen::@1
init_dist_screen::@1: scope:[init_dist_screen]  from init_dist_screen::@11 init_dist_screen::@7
  heap_head#49 = phi( init_dist_screen::@11/heap_head#6, init_dist_screen::@7/heap_head#30 )
  NUM_SQUARES#42 = phi( init_dist_screen::@11/NUM_SQUARES#44, init_dist_screen::@7/NUM_SQUARES#20 )
  init_dist_screen::screen_bottomline#14 = phi( init_dist_screen::@11/init_dist_screen::screen_bottomline#0, init_dist_screen::@7/init_dist_screen::screen_bottomline#1 )
  init_dist_screen::screen_topline#14 = phi( init_dist_screen::@11/init_dist_screen::screen_topline#0, init_dist_screen::@7/init_dist_screen::screen_topline#1 )
  SQUARES#39 = phi( init_dist_screen::@11/SQUARES#4, init_dist_screen::@7/SQUARES#26 )
  init_dist_screen::y#2 = phi( init_dist_screen::@11/init_dist_screen::y#0, init_dist_screen::@7/init_dist_screen::y#1 )
  init_dist_screen::y2#0 = init_dist_screen::y#2 * 2
  init_dist_screen::$3 = init_dist_screen::y2#0 >= $18
  if(init_dist_screen::$3) goto init_dist_screen::@2
  to:init_dist_screen::@3
init_dist_screen::@2: scope:[init_dist_screen]  from init_dist_screen::@1
  heap_head#45 = phi( init_dist_screen::@1/heap_head#49 )
  NUM_SQUARES#39 = phi( init_dist_screen::@1/NUM_SQUARES#42 )
  init_dist_screen::y#9 = phi( init_dist_screen::@1/init_dist_screen::y#2 )
  init_dist_screen::screen_bottomline#11 = phi( init_dist_screen::@1/init_dist_screen::screen_bottomline#14 )
  init_dist_screen::screen_topline#11 = phi( init_dist_screen::@1/init_dist_screen::screen_topline#14 )
  SQUARES#31 = phi( init_dist_screen::@1/SQUARES#39 )
  init_dist_screen::y2#1 = phi( init_dist_screen::@1/init_dist_screen::y2#0 )
  init_dist_screen::$6 = init_dist_screen::y2#1 - $18
  init_dist_screen::$7 = init_dist_screen::$6
  to:init_dist_screen::@4
init_dist_screen::@3: scope:[init_dist_screen]  from init_dist_screen::@1
  heap_head#46 = phi( init_dist_screen::@1/heap_head#49 )
  NUM_SQUARES#40 = phi( init_dist_screen::@1/NUM_SQUARES#42 )
  init_dist_screen::y#10 = phi( init_dist_screen::@1/init_dist_screen::y#2 )
  init_dist_screen::screen_bottomline#12 = phi( init_dist_screen::@1/init_dist_screen::screen_bottomline#14 )
  init_dist_screen::screen_topline#12 = phi( init_dist_screen::@1/init_dist_screen::screen_topline#14 )
  SQUARES#32 = phi( init_dist_screen::@1/SQUARES#39 )
  init_dist_screen::y2#2 = phi( init_dist_screen::@1/init_dist_screen::y2#0 )
  init_dist_screen::$4 = $18 - init_dist_screen::y2#2
  init_dist_screen::$5 = init_dist_screen::$4
  to:init_dist_screen::@4
init_dist_screen::@4: scope:[init_dist_screen]  from init_dist_screen::@2 init_dist_screen::@3
  heap_head#42 = phi( init_dist_screen::@2/heap_head#45, init_dist_screen::@3/heap_head#46 )
  NUM_SQUARES#36 = phi( init_dist_screen::@2/NUM_SQUARES#39, init_dist_screen::@3/NUM_SQUARES#40 )
  init_dist_screen::y#7 = phi( init_dist_screen::@2/init_dist_screen::y#9, init_dist_screen::@3/init_dist_screen::y#10 )
  init_dist_screen::screen_bottomline#8 = phi( init_dist_screen::@2/init_dist_screen::screen_bottomline#11, init_dist_screen::@3/init_dist_screen::screen_bottomline#12 )
  init_dist_screen::screen_topline#8 = phi( init_dist_screen::@2/init_dist_screen::screen_topline#11, init_dist_screen::@3/init_dist_screen::screen_topline#12 )
  SQUARES#21 = phi( init_dist_screen::@2/SQUARES#31, init_dist_screen::@3/SQUARES#32 )
  init_dist_screen::$8 = phi( init_dist_screen::@2/init_dist_screen::$7, init_dist_screen::@3/init_dist_screen::$5 )
  init_dist_screen::yd#0 = init_dist_screen::$8
  sqr::val#0 = init_dist_screen::yd#0
  call sqr
  sqr::return#2 = sqr::return#1
  to:init_dist_screen::@12
init_dist_screen::@12: scope:[init_dist_screen]  from init_dist_screen::@4
  SQUARES#40 = phi( init_dist_screen::@4/SQUARES#21 )
  heap_head#38 = phi( init_dist_screen::@4/heap_head#42 )
  NUM_SQUARES#29 = phi( init_dist_screen::@4/NUM_SQUARES#36 )
  init_dist_screen::y#5 = phi( init_dist_screen::@4/init_dist_screen::y#7 )
  init_dist_screen::screen_bottomline#6 = phi( init_dist_screen::@4/init_dist_screen::screen_bottomline#8 )
  init_dist_screen::screen_topline#6 = phi( init_dist_screen::@4/init_dist_screen::screen_topline#8 )
  sqr::return#5 = phi( init_dist_screen::@4/sqr::return#2 )
  init_dist_screen::yds#0 = sqr::return#5
  init_dist_screen::x#0 = 0
  init_dist_screen::xb#0 = $27
  to:init_dist_screen::@5
init_dist_screen::@5: scope:[init_dist_screen]  from init_dist_screen::@12 init_dist_screen::@14
  init_dist_screen::xb#8 = phi( init_dist_screen::@12/init_dist_screen::xb#0, init_dist_screen::@14/init_dist_screen::xb#1 )
  init_dist_screen::yds#6 = phi( init_dist_screen::@12/init_dist_screen::yds#0, init_dist_screen::@14/init_dist_screen::yds#7 )
  SQUARES#33 = phi( init_dist_screen::@12/SQUARES#40, init_dist_screen::@14/SQUARES#41 )
  heap_head#35 = phi( init_dist_screen::@12/heap_head#38, init_dist_screen::@14/heap_head#39 )
  NUM_SQUARES#24 = phi( init_dist_screen::@12/NUM_SQUARES#29, init_dist_screen::@14/NUM_SQUARES#30 )
  init_dist_screen::y#4 = phi( init_dist_screen::@12/init_dist_screen::y#5, init_dist_screen::@14/init_dist_screen::y#6 )
  init_dist_screen::screen_bottomline#4 = phi( init_dist_screen::@12/init_dist_screen::screen_bottomline#6, init_dist_screen::@14/init_dist_screen::screen_bottomline#3 )
  init_dist_screen::screen_topline#4 = phi( init_dist_screen::@12/init_dist_screen::screen_topline#6, init_dist_screen::@14/init_dist_screen::screen_topline#3 )
  init_dist_screen::x#2 = phi( init_dist_screen::@12/init_dist_screen::x#0, init_dist_screen::@14/init_dist_screen::x#1 )
  init_dist_screen::$10 = init_dist_screen::x#2 <= $13
  if(init_dist_screen::$10) goto init_dist_screen::@6
  to:init_dist_screen::@7
init_dist_screen::@6: scope:[init_dist_screen]  from init_dist_screen::@5
  heap_head#53 = phi( init_dist_screen::@5/heap_head#35 )
  init_dist_screen::y#14 = phi( init_dist_screen::@5/init_dist_screen::y#4 )
  init_dist_screen::xb#7 = phi( init_dist_screen::@5/init_dist_screen::xb#8 )
  init_dist_screen::screen_bottomline#13 = phi( init_dist_screen::@5/init_dist_screen::screen_bottomline#4 )
  init_dist_screen::screen_topline#13 = phi( init_dist_screen::@5/init_dist_screen::screen_topline#4 )
  NUM_SQUARES#37 = phi( init_dist_screen::@5/NUM_SQUARES#24 )
  init_dist_screen::yds#5 = phi( init_dist_screen::@5/init_dist_screen::yds#6 )
  SQUARES#42 = phi( init_dist_screen::@5/SQUARES#33 )
  init_dist_screen::x#3 = phi( init_dist_screen::@5/init_dist_screen::x#2 )
  init_dist_screen::x2#0 = init_dist_screen::x#3 * 2
  init_dist_screen::$12 = init_dist_screen::x2#0 >= $27
  if(init_dist_screen::$12) goto init_dist_screen::@8
  to:init_dist_screen::@9
init_dist_screen::@7: scope:[init_dist_screen]  from init_dist_screen::@5
  SQUARES#26 = phi( init_dist_screen::@5/SQUARES#33 )
  heap_head#30 = phi( init_dist_screen::@5/heap_head#35 )
  NUM_SQUARES#20 = phi( init_dist_screen::@5/NUM_SQUARES#24 )
  init_dist_screen::y#3 = phi( init_dist_screen::@5/init_dist_screen::y#4 )
  init_dist_screen::screen_bottomline#2 = phi( init_dist_screen::@5/init_dist_screen::screen_bottomline#4 )
  init_dist_screen::screen_topline#2 = phi( init_dist_screen::@5/init_dist_screen::screen_topline#4 )
  init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#2 + $28
  init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#2 - $28
  init_dist_screen::y#1 = init_dist_screen::y#3 + rangenext(0,$c)
  init_dist_screen::$21 = init_dist_screen::y#1 != rangelast(0,$c)
  if(init_dist_screen::$21) goto init_dist_screen::@1
  to:init_dist_screen::@return
init_dist_screen::@8: scope:[init_dist_screen]  from init_dist_screen::@6
  heap_head#50 = phi( init_dist_screen::@6/heap_head#53 )
  init_dist_screen::y#12 = phi( init_dist_screen::@6/init_dist_screen::y#14 )
  init_dist_screen::xb#5 = phi( init_dist_screen::@6/init_dist_screen::xb#7 )
  init_dist_screen::screen_bottomline#9 = phi( init_dist_screen::@6/init_dist_screen::screen_bottomline#13 )
  init_dist_screen::x#7 = phi( init_dist_screen::@6/init_dist_screen::x#3 )
  init_dist_screen::screen_topline#9 = phi( init_dist_screen::@6/init_dist_screen::screen_topline#13 )
  NUM_SQUARES#31 = phi( init_dist_screen::@6/NUM_SQUARES#37 )
  init_dist_screen::yds#3 = phi( init_dist_screen::@6/init_dist_screen::yds#5 )
  SQUARES#34 = phi( init_dist_screen::@6/SQUARES#42 )
  init_dist_screen::x2#1 = phi( init_dist_screen::@6/init_dist_screen::x2#0 )
  init_dist_screen::$15 = init_dist_screen::x2#1 - $27
  init_dist_screen::$16 = init_dist_screen::$15
  to:init_dist_screen::@10
init_dist_screen::@9: scope:[init_dist_screen]  from init_dist_screen::@6
  heap_head#51 = phi( init_dist_screen::@6/heap_head#53 )
  init_dist_screen::y#13 = phi( init_dist_screen::@6/init_dist_screen::y#14 )
  init_dist_screen::xb#6 = phi( init_dist_screen::@6/init_dist_screen::xb#7 )
  init_dist_screen::screen_bottomline#10 = phi( init_dist_screen::@6/init_dist_screen::screen_bottomline#13 )
  init_dist_screen::x#8 = phi( init_dist_screen::@6/init_dist_screen::x#3 )
  init_dist_screen::screen_topline#10 = phi( init_dist_screen::@6/init_dist_screen::screen_topline#13 )
  NUM_SQUARES#32 = phi( init_dist_screen::@6/NUM_SQUARES#37 )
  init_dist_screen::yds#4 = phi( init_dist_screen::@6/init_dist_screen::yds#5 )
  SQUARES#35 = phi( init_dist_screen::@6/SQUARES#42 )
  init_dist_screen::x2#2 = phi( init_dist_screen::@6/init_dist_screen::x2#0 )
  init_dist_screen::$13 = $27 - init_dist_screen::x2#2
  init_dist_screen::$14 = init_dist_screen::$13
  to:init_dist_screen::@10
init_dist_screen::@10: scope:[init_dist_screen]  from init_dist_screen::@8 init_dist_screen::@9
  heap_head#47 = phi( init_dist_screen::@8/heap_head#50, init_dist_screen::@9/heap_head#51 )
  init_dist_screen::y#11 = phi( init_dist_screen::@8/init_dist_screen::y#12, init_dist_screen::@9/init_dist_screen::y#13 )
  init_dist_screen::xb#4 = phi( init_dist_screen::@8/init_dist_screen::xb#5, init_dist_screen::@9/init_dist_screen::xb#6 )
  init_dist_screen::screen_bottomline#7 = phi( init_dist_screen::@8/init_dist_screen::screen_bottomline#9, init_dist_screen::@9/init_dist_screen::screen_bottomline#10 )
  init_dist_screen::x#6 = phi( init_dist_screen::@8/init_dist_screen::x#7, init_dist_screen::@9/init_dist_screen::x#8 )
  init_dist_screen::screen_topline#7 = phi( init_dist_screen::@8/init_dist_screen::screen_topline#9, init_dist_screen::@9/init_dist_screen::screen_topline#10 )
  NUM_SQUARES#25 = phi( init_dist_screen::@8/NUM_SQUARES#31, init_dist_screen::@9/NUM_SQUARES#32 )
  init_dist_screen::yds#2 = phi( init_dist_screen::@8/init_dist_screen::yds#3, init_dist_screen::@9/init_dist_screen::yds#4 )
  SQUARES#20 = phi( init_dist_screen::@8/SQUARES#34, init_dist_screen::@9/SQUARES#35 )
  init_dist_screen::$17 = phi( init_dist_screen::@8/init_dist_screen::$16, init_dist_screen::@9/init_dist_screen::$14 )
  init_dist_screen::xd#0 = init_dist_screen::$17
  sqr::val#1 = init_dist_screen::xd#0
  call sqr
  sqr::return#3 = sqr::return#1
  to:init_dist_screen::@13
init_dist_screen::@13: scope:[init_dist_screen]  from init_dist_screen::@10
  heap_head#43 = phi( init_dist_screen::@10/heap_head#47 )
  init_dist_screen::y#8 = phi( init_dist_screen::@10/init_dist_screen::y#11 )
  init_dist_screen::xb#3 = phi( init_dist_screen::@10/init_dist_screen::xb#4 )
  init_dist_screen::screen_bottomline#5 = phi( init_dist_screen::@10/init_dist_screen::screen_bottomline#7 )
  init_dist_screen::x#5 = phi( init_dist_screen::@10/init_dist_screen::x#6 )
  init_dist_screen::screen_topline#5 = phi( init_dist_screen::@10/init_dist_screen::screen_topline#7 )
  NUM_SQUARES#17 = phi( init_dist_screen::@10/NUM_SQUARES#25 )
  SQUARES#22 = phi( init_dist_screen::@10/SQUARES#20 )
  init_dist_screen::yds#1 = phi( init_dist_screen::@10/init_dist_screen::yds#2 )
  sqr::return#6 = phi( init_dist_screen::@10/sqr::return#3 )
  init_dist_screen::xds#0 = sqr::return#6
  init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#1
  sqrt::val#0 = init_dist_screen::ds#0
  call sqrt
  sqrt::return#2 = sqrt::return#1
  to:init_dist_screen::@14
init_dist_screen::@14: scope:[init_dist_screen]  from init_dist_screen::@13
  init_dist_screen::yds#7 = phi( init_dist_screen::@13/init_dist_screen::yds#1 )
  SQUARES#41 = phi( init_dist_screen::@13/SQUARES#22 )
  heap_head#39 = phi( init_dist_screen::@13/heap_head#43 )
  NUM_SQUARES#30 = phi( init_dist_screen::@13/NUM_SQUARES#17 )
  init_dist_screen::y#6 = phi( init_dist_screen::@13/init_dist_screen::y#8 )
  init_dist_screen::xb#2 = phi( init_dist_screen::@13/init_dist_screen::xb#3 )
  init_dist_screen::screen_bottomline#3 = phi( init_dist_screen::@13/init_dist_screen::screen_bottomline#5 )
  init_dist_screen::x#4 = phi( init_dist_screen::@13/init_dist_screen::x#5 )
  init_dist_screen::screen_topline#3 = phi( init_dist_screen::@13/init_dist_screen::screen_topline#5 )
  sqrt::return#4 = phi( init_dist_screen::@13/sqrt::return#2 )
  init_dist_screen::d#0 = sqrt::return#4
  init_dist_screen::screen_topline#3[init_dist_screen::x#4] = init_dist_screen::d#0
  init_dist_screen::screen_bottomline#3[init_dist_screen::x#4] = init_dist_screen::d#0
  init_dist_screen::screen_topline#3[init_dist_screen::xb#2] = init_dist_screen::d#0
  init_dist_screen::screen_bottomline#3[init_dist_screen::xb#2] = init_dist_screen::d#0
  init_dist_screen::x#1 = ++ init_dist_screen::x#4
  init_dist_screen::xb#1 = -- init_dist_screen::xb#2
  to:init_dist_screen::@5
init_dist_screen::@return: scope:[init_dist_screen]  from init_dist_screen::@7
  SQUARES#16 = phi( init_dist_screen::@7/SQUARES#26 )
  heap_head#20 = phi( init_dist_screen::@7/heap_head#30 )
  NUM_SQUARES#12 = phi( init_dist_screen::@7/NUM_SQUARES#20 )
  NUM_SQUARES#3 = NUM_SQUARES#12
  heap_head#7 = heap_head#20
  SQUARES#5 = SQUARES#16
  return 
  to:@return

void make_plasma_charset(char *charset)
make_plasma_charset: scope:[make_plasma_charset]  from main::@6
  make_plasma_charset::charset#19 = phi( main::@6/make_plasma_charset::charset#0 )
  print_char_cursor#37 = phi( main::@6/print_char_cursor#23 )
  print_line_cursor#29 = phi( main::@6/print_line_cursor#16 )
  print_screen#9 = phi( main::@6/print_screen#11 )
  to:make_plasma_charset::sid_rnd_init1
make_plasma_charset::sid_rnd_init1: scope:[make_plasma_charset]  from make_plasma_charset
  make_plasma_charset::charset#17 = phi( make_plasma_charset/make_plasma_charset::charset#19 )
  print_char_cursor#31 = phi( make_plasma_charset/print_char_cursor#37 )
  print_line_cursor#24 = phi( make_plasma_charset/print_line_cursor#29 )
  print_screen#7 = phi( make_plasma_charset/print_screen#9 )
  *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff
  *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE
  to:make_plasma_charset::@12
make_plasma_charset::@12: scope:[make_plasma_charset]  from make_plasma_charset::sid_rnd_init1
  make_plasma_charset::charset#14 = phi( make_plasma_charset::sid_rnd_init1/make_plasma_charset::charset#17 )
  print_char_cursor#25 = phi( make_plasma_charset::sid_rnd_init1/print_char_cursor#31 )
  print_line_cursor#18 = phi( make_plasma_charset::sid_rnd_init1/print_line_cursor#24 )
  print_screen#5 = phi( make_plasma_charset::sid_rnd_init1/print_screen#7 )
  call print_cls
  to:make_plasma_charset::@14
make_plasma_charset::@14: scope:[make_plasma_charset]  from make_plasma_charset::@12
  make_plasma_charset::charset#13 = phi( make_plasma_charset::@12/make_plasma_charset::charset#14 )
  print_char_cursor#17 = phi( make_plasma_charset::@12/print_char_cursor#3 )
  print_line_cursor#12 = phi( make_plasma_charset::@12/print_line_cursor#1 )
  print_line_cursor#4 = print_line_cursor#12
  print_char_cursor#6 = print_char_cursor#17
  make_plasma_charset::c#0 = 0
  to:make_plasma_charset::@1
make_plasma_charset::@1: scope:[make_plasma_charset]  from make_plasma_charset::@11 make_plasma_charset::@14
  make_plasma_charset::charset#10 = phi( make_plasma_charset::@11/make_plasma_charset::charset#12, make_plasma_charset::@14/make_plasma_charset::charset#13 )
  print_char_cursor#26 = phi( make_plasma_charset::@11/print_char_cursor#32, make_plasma_charset::@14/print_char_cursor#6 )
  print_line_cursor#19 = phi( make_plasma_charset::@11/print_line_cursor#25, make_plasma_charset::@14/print_line_cursor#4 )
  make_plasma_charset::c#2 = phi( make_plasma_charset::@11/make_plasma_charset::c#1, make_plasma_charset::@14/make_plasma_charset::c#0 )
  make_plasma_charset::$2 = make_plasma_charset::c#2 < $100
  if(make_plasma_charset::$2) goto make_plasma_charset::@2
  to:make_plasma_charset::@return
make_plasma_charset::@2: scope:[make_plasma_charset]  from make_plasma_charset::@1
  print_line_cursor#37 = phi( make_plasma_charset::@1/print_line_cursor#19 )
  print_char_cursor#41 = phi( make_plasma_charset::@1/print_char_cursor#26 )
  make_plasma_charset::charset#8 = phi( make_plasma_charset::@1/make_plasma_charset::charset#10 )
  make_plasma_charset::c#3 = phi( make_plasma_charset::@1/make_plasma_charset::c#2 )
  make_plasma_charset::$3 = byte0  make_plasma_charset::c#3
  make_plasma_charset::s#0 = SINTABLE[make_plasma_charset::$3]
  make_plasma_charset::i#0 = 0
  to:make_plasma_charset::@3
make_plasma_charset::@3: scope:[make_plasma_charset]  from make_plasma_charset::@2 make_plasma_charset::@7
  make_plasma_charset::s#7 = phi( make_plasma_charset::@2/make_plasma_charset::s#0, make_plasma_charset::@7/make_plasma_charset::s#9 )
  print_line_cursor#34 = phi( make_plasma_charset::@2/print_line_cursor#37, make_plasma_charset::@7/print_line_cursor#38 )
  print_char_cursor#38 = phi( make_plasma_charset::@2/print_char_cursor#41, make_plasma_charset::@7/print_char_cursor#42 )
  make_plasma_charset::charset#5 = phi( make_plasma_charset::@2/make_plasma_charset::charset#8, make_plasma_charset::@7/make_plasma_charset::charset#1 )
  make_plasma_charset::c#7 = phi( make_plasma_charset::@2/make_plasma_charset::c#3, make_plasma_charset::@7/make_plasma_charset::c#5 )
  make_plasma_charset::i#2 = phi( make_plasma_charset::@2/make_plasma_charset::i#0, make_plasma_charset::@7/make_plasma_charset::i#1 )
  make_plasma_charset::$4 = make_plasma_charset::i#2 < 8
  if(make_plasma_charset::$4) goto make_plasma_charset::@4
  to:make_plasma_charset::@5
make_plasma_charset::@4: scope:[make_plasma_charset]  from make_plasma_charset::@3
  print_line_cursor#42 = phi( make_plasma_charset::@3/print_line_cursor#34 )
  print_char_cursor#46 = phi( make_plasma_charset::@3/print_char_cursor#38 )
  make_plasma_charset::s#5 = phi( make_plasma_charset::@3/make_plasma_charset::s#7 )
  make_plasma_charset::charset#3 = phi( make_plasma_charset::@3/make_plasma_charset::charset#5 )
  make_plasma_charset::i#5 = phi( make_plasma_charset::@3/make_plasma_charset::i#2 )
  make_plasma_charset::c#10 = phi( make_plasma_charset::@3/make_plasma_charset::c#7 )
  make_plasma_charset::b#0 = 0
  make_plasma_charset::ii#0 = 0
  to:make_plasma_charset::@6
make_plasma_charset::@5: scope:[make_plasma_charset]  from make_plasma_charset::@3
  make_plasma_charset::charset#16 = phi( make_plasma_charset::@3/make_plasma_charset::charset#5 )
  print_line_cursor#31 = phi( make_plasma_charset::@3/print_line_cursor#34 )
  print_char_cursor#33 = phi( make_plasma_charset::@3/print_char_cursor#38 )
  make_plasma_charset::c#4 = phi( make_plasma_charset::@3/make_plasma_charset::c#7 )
  make_plasma_charset::$12 = make_plasma_charset::c#4 & 7
  make_plasma_charset::$13 = make_plasma_charset::$12 == 0
  make_plasma_charset::$14 = ! make_plasma_charset::$13
  if(make_plasma_charset::$14) goto make_plasma_charset::@11
  to:make_plasma_charset::@10
make_plasma_charset::@6: scope:[make_plasma_charset]  from make_plasma_charset::@4 make_plasma_charset::@8
  print_line_cursor#40 = phi( make_plasma_charset::@4/print_line_cursor#42, make_plasma_charset::@8/print_line_cursor#43 )
  print_char_cursor#44 = phi( make_plasma_charset::@4/print_char_cursor#46, make_plasma_charset::@8/print_char_cursor#47 )
  make_plasma_charset::s#4 = phi( make_plasma_charset::@4/make_plasma_charset::s#5, make_plasma_charset::@8/make_plasma_charset::s#6 )
  make_plasma_charset::charset#2 = phi( make_plasma_charset::@4/make_plasma_charset::charset#3, make_plasma_charset::@8/make_plasma_charset::charset#4 )
  make_plasma_charset::b#4 = phi( make_plasma_charset::@4/make_plasma_charset::b#0, make_plasma_charset::@8/make_plasma_charset::b#6 )
  make_plasma_charset::i#4 = phi( make_plasma_charset::@4/make_plasma_charset::i#5, make_plasma_charset::@8/make_plasma_charset::i#6 )
  make_plasma_charset::c#8 = phi( make_plasma_charset::@4/make_plasma_charset::c#10, make_plasma_charset::@8/make_plasma_charset::c#11 )
  make_plasma_charset::ii#2 = phi( make_plasma_charset::@4/make_plasma_charset::ii#0, make_plasma_charset::@8/make_plasma_charset::ii#1 )
  make_plasma_charset::$5 = make_plasma_charset::ii#2 < 8
  if(make_plasma_charset::$5) goto make_plasma_charset::sid_rnd1
  to:make_plasma_charset::@7
make_plasma_charset::sid_rnd1: scope:[make_plasma_charset]  from make_plasma_charset::@6
  print_line_cursor#50 = phi( make_plasma_charset::@6/print_line_cursor#40 )
  print_char_cursor#54 = phi( make_plasma_charset::@6/print_char_cursor#44 )
  make_plasma_charset::charset#11 = phi( make_plasma_charset::@6/make_plasma_charset::charset#2 )
  make_plasma_charset::i#10 = phi( make_plasma_charset::@6/make_plasma_charset::i#4 )
  make_plasma_charset::c#16 = phi( make_plasma_charset::@6/make_plasma_charset::c#8 )
  make_plasma_charset::b#8 = phi( make_plasma_charset::@6/make_plasma_charset::b#4 )
  make_plasma_charset::ii#7 = phi( make_plasma_charset::@6/make_plasma_charset::ii#2 )
  make_plasma_charset::s#3 = phi( make_plasma_charset::@6/make_plasma_charset::s#4 )
  make_plasma_charset::sid_rnd1_return#0 = *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_OSC)
  to:make_plasma_charset::sid_rnd1_@return
make_plasma_charset::sid_rnd1_@return: scope:[make_plasma_charset]  from make_plasma_charset::sid_rnd1
  print_line_cursor#48 = phi( make_plasma_charset::sid_rnd1/print_line_cursor#50 )
  print_char_cursor#52 = phi( make_plasma_charset::sid_rnd1/print_char_cursor#54 )
  make_plasma_charset::charset#9 = phi( make_plasma_charset::sid_rnd1/make_plasma_charset::charset#11 )
  make_plasma_charset::i#9 = phi( make_plasma_charset::sid_rnd1/make_plasma_charset::i#10 )
  make_plasma_charset::c#15 = phi( make_plasma_charset::sid_rnd1/make_plasma_charset::c#16 )
  make_plasma_charset::b#7 = phi( make_plasma_charset::sid_rnd1/make_plasma_charset::b#8 )
  make_plasma_charset::ii#6 = phi( make_plasma_charset::sid_rnd1/make_plasma_charset::ii#7 )
  make_plasma_charset::s#2 = phi( make_plasma_charset::sid_rnd1/make_plasma_charset::s#3 )
  make_plasma_charset::sid_rnd1_return#2 = phi( make_plasma_charset::sid_rnd1/make_plasma_charset::sid_rnd1_return#0 )
  make_plasma_charset::sid_rnd1_return#1 = make_plasma_charset::sid_rnd1_return#2
  to:make_plasma_charset::@13
make_plasma_charset::@13: scope:[make_plasma_charset]  from make_plasma_charset::sid_rnd1_@return
  print_line_cursor#45 = phi( make_plasma_charset::sid_rnd1_@return/print_line_cursor#48 )
  print_char_cursor#49 = phi( make_plasma_charset::sid_rnd1_@return/print_char_cursor#52 )
  make_plasma_charset::charset#6 = phi( make_plasma_charset::sid_rnd1_@return/make_plasma_charset::charset#9 )
  make_plasma_charset::i#7 = phi( make_plasma_charset::sid_rnd1_@return/make_plasma_charset::i#9 )
  make_plasma_charset::c#13 = phi( make_plasma_charset::sid_rnd1_@return/make_plasma_charset::c#15 )
  make_plasma_charset::b#5 = phi( make_plasma_charset::sid_rnd1_@return/make_plasma_charset::b#7 )
  make_plasma_charset::ii#5 = phi( make_plasma_charset::sid_rnd1_@return/make_plasma_charset::ii#6 )
  make_plasma_charset::s#1 = phi( make_plasma_charset::sid_rnd1_@return/make_plasma_charset::s#2 )
  make_plasma_charset::sid_rnd1_return#3 = phi( make_plasma_charset::sid_rnd1_@return/make_plasma_charset::sid_rnd1_return#1 )
  make_plasma_charset::$6 = make_plasma_charset::sid_rnd1_return#3
  make_plasma_charset::$7 = make_plasma_charset::$6 & $ff
  make_plasma_charset::$8 = make_plasma_charset::$7 > make_plasma_charset::s#1
  make_plasma_charset::$9 = ! make_plasma_charset::$8
  if(make_plasma_charset::$9) goto make_plasma_charset::@8
  to:make_plasma_charset::@9
make_plasma_charset::@7: scope:[make_plasma_charset]  from make_plasma_charset::@6
  make_plasma_charset::s#9 = phi( make_plasma_charset::@6/make_plasma_charset::s#4 )
  print_line_cursor#38 = phi( make_plasma_charset::@6/print_line_cursor#40 )
  print_char_cursor#42 = phi( make_plasma_charset::@6/print_char_cursor#44 )
  make_plasma_charset::charset#1 = phi( make_plasma_charset::@6/make_plasma_charset::charset#2 )
  make_plasma_charset::b#2 = phi( make_plasma_charset::@6/make_plasma_charset::b#4 )
  make_plasma_charset::i#3 = phi( make_plasma_charset::@6/make_plasma_charset::i#4 )
  make_plasma_charset::c#5 = phi( make_plasma_charset::@6/make_plasma_charset::c#8 )
  make_plasma_charset::$10 = make_plasma_charset::c#5 * 8
  make_plasma_charset::$11 = make_plasma_charset::$10 + make_plasma_charset::i#3
  make_plasma_charset::charset#1[make_plasma_charset::$11] = make_plasma_charset::b#2
  make_plasma_charset::i#1 = ++ make_plasma_charset::i#3
  to:make_plasma_charset::@3
make_plasma_charset::@8: scope:[make_plasma_charset]  from make_plasma_charset::@13 make_plasma_charset::@9
  print_line_cursor#43 = phi( make_plasma_charset::@13/print_line_cursor#45, make_plasma_charset::@9/print_line_cursor#46 )
  print_char_cursor#47 = phi( make_plasma_charset::@13/print_char_cursor#49, make_plasma_charset::@9/print_char_cursor#50 )
  make_plasma_charset::s#6 = phi( make_plasma_charset::@13/make_plasma_charset::s#1, make_plasma_charset::@9/make_plasma_charset::s#8 )
  make_plasma_charset::charset#4 = phi( make_plasma_charset::@13/make_plasma_charset::charset#6, make_plasma_charset::@9/make_plasma_charset::charset#7 )
  make_plasma_charset::b#6 = phi( make_plasma_charset::@13/make_plasma_charset::b#5, make_plasma_charset::@9/make_plasma_charset::b#1 )
  make_plasma_charset::i#6 = phi( make_plasma_charset::@13/make_plasma_charset::i#7, make_plasma_charset::@9/make_plasma_charset::i#8 )
  make_plasma_charset::c#11 = phi( make_plasma_charset::@13/make_plasma_charset::c#13, make_plasma_charset::@9/make_plasma_charset::c#14 )
  make_plasma_charset::ii#3 = phi( make_plasma_charset::@13/make_plasma_charset::ii#5, make_plasma_charset::@9/make_plasma_charset::ii#4 )
  make_plasma_charset::ii#1 = ++ make_plasma_charset::ii#3
  to:make_plasma_charset::@6
make_plasma_charset::@9: scope:[make_plasma_charset]  from make_plasma_charset::@13
  print_line_cursor#46 = phi( make_plasma_charset::@13/print_line_cursor#45 )
  print_char_cursor#50 = phi( make_plasma_charset::@13/print_char_cursor#49 )
  make_plasma_charset::s#8 = phi( make_plasma_charset::@13/make_plasma_charset::s#1 )
  make_plasma_charset::charset#7 = phi( make_plasma_charset::@13/make_plasma_charset::charset#6 )
  make_plasma_charset::i#8 = phi( make_plasma_charset::@13/make_plasma_charset::i#7 )
  make_plasma_charset::c#14 = phi( make_plasma_charset::@13/make_plasma_charset::c#13 )
  make_plasma_charset::ii#4 = phi( make_plasma_charset::@13/make_plasma_charset::ii#5 )
  make_plasma_charset::b#3 = phi( make_plasma_charset::@13/make_plasma_charset::b#5 )
  make_plasma_charset::b#1 = make_plasma_charset::b#3 | make_plasma_charset::bittab[make_plasma_charset::ii#4]
  to:make_plasma_charset::@8
make_plasma_charset::@11: scope:[make_plasma_charset]  from make_plasma_charset::@15 make_plasma_charset::@5
  make_plasma_charset::charset#12 = phi( make_plasma_charset::@15/make_plasma_charset::charset#15, make_plasma_charset::@5/make_plasma_charset::charset#16 )
  print_char_cursor#32 = phi( make_plasma_charset::@15/print_char_cursor#7, make_plasma_charset::@5/print_char_cursor#33 )
  print_line_cursor#25 = phi( make_plasma_charset::@15/print_line_cursor#30, make_plasma_charset::@5/print_line_cursor#31 )
  make_plasma_charset::c#6 = phi( make_plasma_charset::@15/make_plasma_charset::c#9, make_plasma_charset::@5/make_plasma_charset::c#4 )
  make_plasma_charset::c#1 = ++ make_plasma_charset::c#6
  to:make_plasma_charset::@1
make_plasma_charset::@10: scope:[make_plasma_charset]  from make_plasma_charset::@5
  make_plasma_charset::charset#18 = phi( make_plasma_charset::@5/make_plasma_charset::charset#16 )
  print_line_cursor#35 = phi( make_plasma_charset::@5/print_line_cursor#31 )
  make_plasma_charset::c#12 = phi( make_plasma_charset::@5/make_plasma_charset::c#4 )
  print_char_cursor#22 = phi( make_plasma_charset::@5/print_char_cursor#33 )
  print_char::ch#0 = '.'
  call print_char
  to:make_plasma_charset::@15
make_plasma_charset::@15: scope:[make_plasma_charset]  from make_plasma_charset::@10
  make_plasma_charset::charset#15 = phi( make_plasma_charset::@10/make_plasma_charset::charset#18 )
  print_line_cursor#30 = phi( make_plasma_charset::@10/print_line_cursor#35 )
  make_plasma_charset::c#9 = phi( make_plasma_charset::@10/make_plasma_charset::c#12 )
  print_char_cursor#18 = phi( make_plasma_charset::@10/print_char_cursor#1 )
  print_char_cursor#7 = print_char_cursor#18
  to:make_plasma_charset::@11
make_plasma_charset::@return: scope:[make_plasma_charset]  from make_plasma_charset::@1
  print_char_cursor#19 = phi( make_plasma_charset::@1/print_char_cursor#26 )
  print_line_cursor#13 = phi( make_plasma_charset::@1/print_line_cursor#19 )
  print_line_cursor#5 = print_line_cursor#13
  print_char_cursor#8 = print_char_cursor#19
  return 
  to:@return

void __start()
__start: scope:[__start]  from
  to:__start::__init1
__start::__init1: scope:[__start]  from __start
  heap_head#8 = HEAP_TOP
  NUM_SQUARES#4 = $ff
  SQUARES#6 = (unsigned int *) 0
  print_screen#0 = (char *)$400
  print_line_cursor#6 = print_screen#0
  print_char_cursor#9 = print_line_cursor#6
  malloc::size#1 = $3e8
  call malloc
  malloc::return#3 = malloc::return#1
  to:__start::@2
__start::@2: scope:[__start]  from __start::__init1
  print_screen#12 = phi( __start::__init1/print_screen#0 )
  print_char_cursor#39 = phi( __start::__init1/print_char_cursor#9 )
  print_line_cursor#32 = phi( __start::__init1/print_line_cursor#6 )
  SQUARES#43 = phi( __start::__init1/SQUARES#6 )
  NUM_SQUARES#33 = phi( __start::__init1/NUM_SQUARES#4 )
  heap_head#21 = phi( __start::__init1/heap_head#1 )
  malloc::return#7 = phi( __start::__init1/malloc::return#3 )
  SCREEN_DIST#0 = ((char *)) malloc::return#7
  heap_head#9 = heap_head#21
  malloc::size#2 = $3e8
  call malloc
  malloc::return#4 = malloc::return#1
  to:__start::@3
__start::@3: scope:[__start]  from __start::@2
  print_screen#10 = phi( __start::@2/print_screen#12 )
  print_char_cursor#34 = phi( __start::@2/print_char_cursor#39 )
  print_line_cursor#26 = phi( __start::@2/print_line_cursor#32 )
  SQUARES#36 = phi( __start::@2/SQUARES#43 )
  NUM_SQUARES#26 = phi( __start::@2/NUM_SQUARES#33 )
  SCREEN_DIST#11 = phi( __start::@2/SCREEN_DIST#0 )
  heap_head#22 = phi( __start::@2/heap_head#1 )
  malloc::return#8 = phi( __start::@2/malloc::return#4 )
  SCREEN_ANGLE#0 = ((char *)) malloc::return#8
  heap_head#10 = heap_head#22
  sin_offset_x#5 = 0
  sin_offset_y#5 = 0
  to:__start::@1
__start::@1: scope:[__start]  from __start::@3
  print_screen#8 = phi( __start::@3/print_screen#10 )
  SCREEN_ANGLE#9 = phi( __start::@3/SCREEN_ANGLE#0 )
  sin_offset_y#20 = phi( __start::@3/sin_offset_y#5 )
  sin_offset_x#20 = phi( __start::@3/sin_offset_x#5 )
  print_char_cursor#27 = phi( __start::@3/print_char_cursor#34 )
  print_line_cursor#20 = phi( __start::@3/print_line_cursor#26 )
  SQUARES#27 = phi( __start::@3/SQUARES#36 )
  heap_head#31 = phi( __start::@3/heap_head#10 )
  NUM_SQUARES#21 = phi( __start::@3/NUM_SQUARES#26 )
  SCREEN_DIST#5 = phi( __start::@3/SCREEN_DIST#11 )
  call main
  to:__start::@4
__start::@4: scope:[__start]  from __start::@1
  SCREEN_ANGLE#8 = phi( __start::@1/SCREEN_ANGLE#9 )
  SCREEN_DIST#8 = phi( __start::@1/SCREEN_DIST#5 )
  print_screen#6 = phi( __start::@1/print_screen#8 )
  sin_offset_y#14 = phi( __start::@1/sin_offset_y#2 )
  sin_offset_x#14 = phi( __start::@1/sin_offset_x#2 )
  print_char_cursor#20 = phi( __start::@1/print_char_cursor#5 )
  print_line_cursor#14 = phi( __start::@1/print_line_cursor#3 )
  SQUARES#17 = phi( __start::@1/SQUARES#3 )
  heap_head#23 = phi( __start::@1/heap_head#5 )
  NUM_SQUARES#13 = phi( __start::@1/NUM_SQUARES#1 )
  NUM_SQUARES#5 = NUM_SQUARES#13
  heap_head#11 = heap_head#23
  SQUARES#7 = SQUARES#17
  print_line_cursor#7 = print_line_cursor#14
  print_char_cursor#10 = print_char_cursor#20
  sin_offset_x#6 = sin_offset_x#14
  sin_offset_y#6 = sin_offset_y#14
  to:__start::@return
__start::@return: scope:[__start]  from __start::@4
  sin_offset_y#15 = phi( __start::@4/sin_offset_y#6 )
  sin_offset_x#15 = phi( __start::@4/sin_offset_x#6 )
  SCREEN_ANGLE#4 = phi( __start::@4/SCREEN_ANGLE#8 )
  SCREEN_DIST#4 = phi( __start::@4/SCREEN_DIST#8 )
  print_char_cursor#21 = phi( __start::@4/print_char_cursor#10 )
  print_line_cursor#15 = phi( __start::@4/print_line_cursor#7 )
  print_screen#4 = phi( __start::@4/print_screen#6 )
  SQUARES#18 = phi( __start::@4/SQUARES#7 )
  NUM_SQUARES#14 = phi( __start::@4/NUM_SQUARES#5 )
  heap_head#24 = phi( __start::@4/heap_head#11 )
  heap_head#12 = heap_head#24
  NUM_SQUARES#6 = NUM_SQUARES#14
  SQUARES#8 = SQUARES#18
  print_screen#1 = print_screen#4
  print_line_cursor#8 = print_line_cursor#15
  print_char_cursor#11 = print_char_cursor#21
  SCREEN_DIST#1 = SCREEN_DIST#4
  SCREEN_ANGLE#1 = SCREEN_ANGLE#4
  sin_offset_x#7 = sin_offset_x#15
  sin_offset_y#7 = sin_offset_y#15
  return 
  to:@return

SYMBOL TABLE SSA
__constant const char BLACK = 0
__constant char * const CHARSET = (char *)$2000
__constant char * const COLS = (char *)$d800
__constant unsigned int CORDIC_ATAN2_ANGLES_16[CORDIC_ITERATIONS_16] = kickasm {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++)
        .word 256*2*256*atan(1/pow(2,i))/PI/2
 }}
__constant const char CORDIC_ITERATIONS_16 = $f
__constant char * const D018 = (char *)$d018
__constant char *HEAP_TOP = (char *)$a000
char NUM_SQUARES
char NUM_SQUARES#0
char NUM_SQUARES#1
char NUM_SQUARES#10
char NUM_SQUARES#11
char NUM_SQUARES#12
char NUM_SQUARES#13
char NUM_SQUARES#14
char NUM_SQUARES#15
char NUM_SQUARES#16
char NUM_SQUARES#17
char NUM_SQUARES#18
char NUM_SQUARES#19
char NUM_SQUARES#2
char NUM_SQUARES#20
char NUM_SQUARES#21
char NUM_SQUARES#22
char NUM_SQUARES#23
char NUM_SQUARES#24
char NUM_SQUARES#25
char NUM_SQUARES#26
char NUM_SQUARES#27
char NUM_SQUARES#28
char NUM_SQUARES#29
char NUM_SQUARES#3
char NUM_SQUARES#30
char NUM_SQUARES#31
char NUM_SQUARES#32
char NUM_SQUARES#33
char NUM_SQUARES#34
char NUM_SQUARES#35
char NUM_SQUARES#36
char NUM_SQUARES#37
char NUM_SQUARES#38
char NUM_SQUARES#39
char NUM_SQUARES#4
char NUM_SQUARES#40
char NUM_SQUARES#41
char NUM_SQUARES#42
char NUM_SQUARES#43
char NUM_SQUARES#44
char NUM_SQUARES#45
char NUM_SQUARES#46
char NUM_SQUARES#47
char NUM_SQUARES#5
char NUM_SQUARES#6
char NUM_SQUARES#7
char NUM_SQUARES#8
char NUM_SQUARES#9
__constant char OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL = $12
__constant char OFFSET_STRUCT_MOS6581_SID_CH3_FREQ = $e
__constant char OFFSET_STRUCT_MOS6581_SID_CH3_OSC = $1b
__constant char RADIX::BINARY = 2
__constant char RADIX::DECIMAL = $a
__constant char RADIX::HEXADECIMAL = $10
__constant char RADIX::OCTAL = 8
__constant char * const SCREEN1 = (char *)$2800
__constant char * const SCREEN2 = (char *)$2c00
char *SCREEN_ANGLE
char *SCREEN_ANGLE#0
char *SCREEN_ANGLE#1
char *SCREEN_ANGLE#10
char *SCREEN_ANGLE#11
char *SCREEN_ANGLE#12
char *SCREEN_ANGLE#13
char *SCREEN_ANGLE#14
char *SCREEN_ANGLE#15
char *SCREEN_ANGLE#16
char *SCREEN_ANGLE#17
char *SCREEN_ANGLE#18
char *SCREEN_ANGLE#19
char *SCREEN_ANGLE#2
char *SCREEN_ANGLE#20
char *SCREEN_ANGLE#3
char *SCREEN_ANGLE#4
char *SCREEN_ANGLE#5
char *SCREEN_ANGLE#6
char *SCREEN_ANGLE#7
char *SCREEN_ANGLE#8
char *SCREEN_ANGLE#9
char *SCREEN_DIST
char *SCREEN_DIST#0
char *SCREEN_DIST#1
char *SCREEN_DIST#10
char *SCREEN_DIST#11
char *SCREEN_DIST#12
char *SCREEN_DIST#13
char *SCREEN_DIST#14
char *SCREEN_DIST#15
char *SCREEN_DIST#16
char *SCREEN_DIST#17
char *SCREEN_DIST#18
char *SCREEN_DIST#19
char *SCREEN_DIST#2
char *SCREEN_DIST#20
char *SCREEN_DIST#21
char *SCREEN_DIST#3
char *SCREEN_DIST#4
char *SCREEN_DIST#5
char *SCREEN_DIST#6
char *SCREEN_DIST#7
char *SCREEN_DIST#8
char *SCREEN_DIST#9
__constant struct MOS6581_SID * const SID = (struct MOS6581_SID *)$d400
__constant const char SID_CONTROL_NOISE = $80
__constant const char SINTABLE[$200] = kickasm {{ .for(var i=0;i<$200;i++)
        .byte round(127.5+127.5*sin(2*PI*i/256))
 }}
__constant char SIZEOF_UNSIGNED_INT = 2
unsigned int *SQUARES
unsigned int *SQUARES#0
unsigned int *SQUARES#1
unsigned int *SQUARES#10
unsigned int *SQUARES#11
unsigned int *SQUARES#12
unsigned int *SQUARES#13
unsigned int *SQUARES#14
unsigned int *SQUARES#15
unsigned int *SQUARES#16
unsigned int *SQUARES#17
unsigned int *SQUARES#18
unsigned int *SQUARES#19
unsigned int *SQUARES#2
unsigned int *SQUARES#20
unsigned int *SQUARES#21
unsigned int *SQUARES#22
unsigned int *SQUARES#23
unsigned int *SQUARES#24
unsigned int *SQUARES#25
unsigned int *SQUARES#26
unsigned int *SQUARES#27
unsigned int *SQUARES#28
unsigned int *SQUARES#29
unsigned int *SQUARES#3
unsigned int *SQUARES#30
unsigned int *SQUARES#31
unsigned int *SQUARES#32
unsigned int *SQUARES#33
unsigned int *SQUARES#34
unsigned int *SQUARES#35
unsigned int *SQUARES#36
unsigned int *SQUARES#37
unsigned int *SQUARES#38
unsigned int *SQUARES#39
unsigned int *SQUARES#4
unsigned int *SQUARES#40
unsigned int *SQUARES#41
unsigned int *SQUARES#42
unsigned int *SQUARES#43
unsigned int *SQUARES#44
unsigned int *SQUARES#45
unsigned int *SQUARES#46
unsigned int *SQUARES#47
unsigned int *SQUARES#48
unsigned int *SQUARES#49
unsigned int *SQUARES#5
unsigned int *SQUARES#50
unsigned int *SQUARES#51
unsigned int *SQUARES#6
unsigned int *SQUARES#7
unsigned int *SQUARES#8
unsigned int *SQUARES#9
void __start()
unsigned int atan2_16(int x , int y)
bool atan2_16::$0
int atan2_16::$1
bool atan2_16::$10
bool atan2_16::$11
number atan2_16::$12
bool atan2_16::$13
bool atan2_16::$14
unsigned int atan2_16::$15
bool atan2_16::$16
bool atan2_16::$17
bool atan2_16::$18
bool atan2_16::$19
int atan2_16::$2
bool atan2_16::$20
bool atan2_16::$21
char atan2_16::$22
char atan2_16::$23
bool atan2_16::$24
int atan2_16::$3
int atan2_16::$4
bool atan2_16::$5
int atan2_16::$6
int atan2_16::$7
int atan2_16::$8
int atan2_16::$9
unsigned int atan2_16::angle
unsigned int atan2_16::angle#0
unsigned int atan2_16::angle#1
unsigned int atan2_16::angle#10
unsigned int atan2_16::angle#11
unsigned int atan2_16::angle#12
unsigned int atan2_16::angle#13
unsigned int atan2_16::angle#14
unsigned int atan2_16::angle#15
unsigned int atan2_16::angle#16
unsigned int atan2_16::angle#17
unsigned int atan2_16::angle#18
unsigned int atan2_16::angle#19
unsigned int atan2_16::angle#2
unsigned int atan2_16::angle#20
unsigned int atan2_16::angle#3
unsigned int atan2_16::angle#4
unsigned int atan2_16::angle#5
unsigned int atan2_16::angle#6
unsigned int atan2_16::angle#7
unsigned int atan2_16::angle#8
unsigned int atan2_16::angle#9
char atan2_16::i
char atan2_16::i#0
char atan2_16::i#1
char atan2_16::i#10
char atan2_16::i#11
char atan2_16::i#2
char atan2_16::i#3
char atan2_16::i#4
char atan2_16::i#5
char atan2_16::i#6
char atan2_16::i#7
char atan2_16::i#8
char atan2_16::i#9
unsigned int atan2_16::return
unsigned int atan2_16::return#0
unsigned int atan2_16::return#1
unsigned int atan2_16::return#2
unsigned int atan2_16::return#3
unsigned int atan2_16::return#4
char atan2_16::shift
char atan2_16::shift#0
char atan2_16::shift#1
char atan2_16::shift#2
char atan2_16::shift#3
char atan2_16::shift#4
int atan2_16::x
int atan2_16::x#0
int atan2_16::x#1
int atan2_16::x#10
int atan2_16::x#11
int atan2_16::x#12
int atan2_16::x#13
int atan2_16::x#14
int atan2_16::x#15
int atan2_16::x#16
int atan2_16::x#17
int atan2_16::x#18
int atan2_16::x#2
int atan2_16::x#3
int atan2_16::x#4
int atan2_16::x#5
int atan2_16::x#6
int atan2_16::x#7
int atan2_16::x#8
int atan2_16::x#9
int atan2_16::xd
int atan2_16::xd#0
int atan2_16::xd#1
int atan2_16::xd#2
int atan2_16::xd#3
int atan2_16::xd#4
int atan2_16::xd#5
int atan2_16::xd#6
int atan2_16::xd#7
int atan2_16::xd#8
int atan2_16::xd#9
int atan2_16::xi
int atan2_16::xi#0
int atan2_16::xi#1
int atan2_16::xi#10
int atan2_16::xi#11
int atan2_16::xi#12
int atan2_16::xi#2
int atan2_16::xi#3
int atan2_16::xi#4
int atan2_16::xi#5
int atan2_16::xi#6
int atan2_16::xi#7
int atan2_16::xi#8
int atan2_16::xi#9
int atan2_16::y
int atan2_16::y#0
int atan2_16::y#1
int atan2_16::y#10
int atan2_16::y#11
int atan2_16::y#12
int atan2_16::y#13
int atan2_16::y#14
int atan2_16::y#15
int atan2_16::y#16
int atan2_16::y#17
int atan2_16::y#18
int atan2_16::y#19
int atan2_16::y#2
int atan2_16::y#20
int atan2_16::y#3
int atan2_16::y#4
int atan2_16::y#5
int atan2_16::y#6
int atan2_16::y#7
int atan2_16::y#8
int atan2_16::y#9
int atan2_16::yd
int atan2_16::yd#0
int atan2_16::yd#1
int atan2_16::yd#2
int atan2_16::yd#3
int atan2_16::yd#4
int atan2_16::yd#5
int atan2_16::yd#6
int atan2_16::yd#7
int atan2_16::yd#8
int atan2_16::yd#9
int atan2_16::yi
int atan2_16::yi#0
int atan2_16::yi#1
int atan2_16::yi#10
int atan2_16::yi#11
int atan2_16::yi#12
int atan2_16::yi#13
int atan2_16::yi#14
int atan2_16::yi#15
int atan2_16::yi#2
int atan2_16::yi#3
int atan2_16::yi#4
int atan2_16::yi#5
int atan2_16::yi#6
int atan2_16::yi#7
int atan2_16::yi#8
int atan2_16::yi#9
unsigned int * bsearch16u(unsigned int key , unsigned int *items , char num)
bool bsearch16u::$0
unsigned int *bsearch16u::$1
bool bsearch16u::$10
bool bsearch16u::$11
bool bsearch16u::$12
unsigned int *bsearch16u::$13
char bsearch16u::$14
number bsearch16u::$15
number bsearch16u::$16
int bsearch16u::$17
int bsearch16u::$18
unsigned int *bsearch16u::$2
unsigned int *bsearch16u::$3
unsigned int *bsearch16u::$4
bool bsearch16u::$5
char bsearch16u::$6
bool bsearch16u::$9
unsigned int *bsearch16u::items
unsigned int *bsearch16u::items#0
unsigned int *bsearch16u::items#1
unsigned int *bsearch16u::items#2
unsigned int *bsearch16u::items#3
unsigned int *bsearch16u::items#4
unsigned int *bsearch16u::items#5
unsigned int *bsearch16u::items#6
unsigned int *bsearch16u::items#7
unsigned int *bsearch16u::items#8
unsigned int *bsearch16u::items#9
unsigned int bsearch16u::key
unsigned int bsearch16u::key#0
unsigned int bsearch16u::key#1
unsigned int bsearch16u::key#2
unsigned int bsearch16u::key#3
unsigned int bsearch16u::key#4
unsigned int bsearch16u::key#5
unsigned int bsearch16u::key#6
unsigned int bsearch16u::key#7
char bsearch16u::num
char bsearch16u::num#0
char bsearch16u::num#1
char bsearch16u::num#2
char bsearch16u::num#3
char bsearch16u::num#4
char bsearch16u::num#5
char bsearch16u::num#6
char bsearch16u::num#7
char bsearch16u::num#8
unsigned int *bsearch16u::pivot
unsigned int *bsearch16u::pivot#0
unsigned int *bsearch16u::pivot#1
unsigned int *bsearch16u::pivot#2
unsigned int *bsearch16u::pivot#3
int bsearch16u::result
int bsearch16u::result#0
int bsearch16u::result#1
unsigned int *bsearch16u::return
unsigned int *bsearch16u::return#0
unsigned int *bsearch16u::return#1
unsigned int *bsearch16u::return#2
unsigned int *bsearch16u::return#3
unsigned int *bsearch16u::return#4
unsigned int *bsearch16u::return#5
void doplasma(char *screen)
char doplasma::$2
bool doplasma::$3
bool doplasma::$4
char *doplasma::angle
char *doplasma::angle#0
char *doplasma::angle#1
char *doplasma::angle#2
char *doplasma::angle#3
char *doplasma::angle#4
char *doplasma::dist
char *doplasma::dist#0
char *doplasma::dist#1
char *doplasma::dist#2
char *doplasma::dist#3
char *doplasma::dist#4
char *doplasma::screen
char *doplasma::screen#0
char *doplasma::screen#1
char *doplasma::screen#2
char *doplasma::screen#3
char *doplasma::screen#4
char *doplasma::screen#5
char *doplasma::screen#6
char *doplasma::sin_x
char *doplasma::sin_x#0
char *doplasma::sin_x#1
char *doplasma::sin_x#2
char *doplasma::sin_x#3
char *doplasma::sin_y
char *doplasma::sin_y#0
char *doplasma::sin_y#1
char *doplasma::sin_y#2
char *doplasma::sin_y#3
char doplasma::x
char doplasma::x#0
char doplasma::x#1
char doplasma::x#2
char doplasma::y
char doplasma::y#0
char doplasma::y#1
char doplasma::y#2
char doplasma::y#3
char doplasma::y#4
char *heap_head
char *heap_head#0
char *heap_head#1
char *heap_head#10
char *heap_head#11
char *heap_head#12
char *heap_head#13
char *heap_head#14
char *heap_head#15
char *heap_head#16
char *heap_head#17
char *heap_head#18
char *heap_head#19
char *heap_head#2
char *heap_head#20
char *heap_head#21
char *heap_head#22
char *heap_head#23
char *heap_head#24
char *heap_head#25
char *heap_head#26
char *heap_head#27
char *heap_head#28
char *heap_head#29
char *heap_head#3
char *heap_head#30
char *heap_head#31
char *heap_head#32
char *heap_head#33
char *heap_head#34
char *heap_head#35
char *heap_head#36
char *heap_head#37
char *heap_head#38
char *heap_head#39
char *heap_head#4
char *heap_head#40
char *heap_head#41
char *heap_head#42
char *heap_head#43
char *heap_head#44
char *heap_head#45
char *heap_head#46
char *heap_head#47
char *heap_head#48
char *heap_head#49
char *heap_head#5
char *heap_head#50
char *heap_head#51
char *heap_head#52
char *heap_head#53
char *heap_head#54
char *heap_head#55
char *heap_head#56
char *heap_head#6
char *heap_head#7
char *heap_head#8
char *heap_head#9
void init_angle_screen(char *screen)
char init_angle_screen::$11
number init_angle_screen::$12
number init_angle_screen::$13
bool init_angle_screen::$14
bool init_angle_screen::$2
number init_angle_screen::$3
number init_angle_screen::$4
unsigned int init_angle_screen::$5
number init_angle_screen::$6
unsigned int init_angle_screen::$7
number init_angle_screen::$9
char init_angle_screen::ang_w
char init_angle_screen::ang_w#0
unsigned int init_angle_screen::angle_w
unsigned int init_angle_screen::angle_w#0
char *init_angle_screen::screen
char *init_angle_screen::screen#0
char *init_angle_screen::screen#1
char *init_angle_screen::screen_bottomline
char *init_angle_screen::screen_bottomline#0
char *init_angle_screen::screen_bottomline#1
char *init_angle_screen::screen_bottomline#2
char *init_angle_screen::screen_bottomline#3
char *init_angle_screen::screen_bottomline#4
char *init_angle_screen::screen_bottomline#5
char *init_angle_screen::screen_bottomline#6
char *init_angle_screen::screen_topline
char *init_angle_screen::screen_topline#0
char *init_angle_screen::screen_topline#1
char *init_angle_screen::screen_topline#2
char *init_angle_screen::screen_topline#3
char *init_angle_screen::screen_topline#4
char *init_angle_screen::screen_topline#5
char *init_angle_screen::screen_topline#6
char init_angle_screen::x
char init_angle_screen::x#0
char init_angle_screen::x#1
char init_angle_screen::x#2
char init_angle_screen::x#3
char init_angle_screen::x#4
char init_angle_screen::xb
char init_angle_screen::xb#0
char init_angle_screen::xb#1
char init_angle_screen::xb#2
char init_angle_screen::xb#3
char init_angle_screen::xb#4
int init_angle_screen::xw
int init_angle_screen::xw#0
char init_angle_screen::y
char init_angle_screen::y#0
char init_angle_screen::y#1
char init_angle_screen::y#2
char init_angle_screen::y#3
char init_angle_screen::y#4
char init_angle_screen::y#5
char init_angle_screen::y#6
int init_angle_screen::yw
int init_angle_screen::yw#0
void init_dist_screen(char *screen)
bool init_dist_screen::$10
bool init_dist_screen::$12
number init_dist_screen::$13
number init_dist_screen::$14
number init_dist_screen::$15
number init_dist_screen::$16
number init_dist_screen::$17
bool init_dist_screen::$21
bool init_dist_screen::$3
number init_dist_screen::$4
number init_dist_screen::$5
number init_dist_screen::$6
number init_dist_screen::$7
number init_dist_screen::$8
char init_dist_screen::d
char init_dist_screen::d#0
unsigned int init_dist_screen::ds
unsigned int init_dist_screen::ds#0
char *init_dist_screen::screen
char *init_dist_screen::screen#0
char *init_dist_screen::screen#1
char *init_dist_screen::screen#2
char *init_dist_screen::screen_bottomline
char *init_dist_screen::screen_bottomline#0
char *init_dist_screen::screen_bottomline#1
char *init_dist_screen::screen_bottomline#10
char *init_dist_screen::screen_bottomline#11
char *init_dist_screen::screen_bottomline#12
char *init_dist_screen::screen_bottomline#13
char *init_dist_screen::screen_bottomline#14
char *init_dist_screen::screen_bottomline#2
char *init_dist_screen::screen_bottomline#3
char *init_dist_screen::screen_bottomline#4
char *init_dist_screen::screen_bottomline#5
char *init_dist_screen::screen_bottomline#6
char *init_dist_screen::screen_bottomline#7
char *init_dist_screen::screen_bottomline#8
char *init_dist_screen::screen_bottomline#9
char *init_dist_screen::screen_topline
char *init_dist_screen::screen_topline#0
char *init_dist_screen::screen_topline#1
char *init_dist_screen::screen_topline#10
char *init_dist_screen::screen_topline#11
char *init_dist_screen::screen_topline#12
char *init_dist_screen::screen_topline#13
char *init_dist_screen::screen_topline#14
char *init_dist_screen::screen_topline#2
char *init_dist_screen::screen_topline#3
char *init_dist_screen::screen_topline#4
char *init_dist_screen::screen_topline#5
char *init_dist_screen::screen_topline#6
char *init_dist_screen::screen_topline#7
char *init_dist_screen::screen_topline#8
char *init_dist_screen::screen_topline#9
char init_dist_screen::x
char init_dist_screen::x#0
char init_dist_screen::x#1
char init_dist_screen::x#2
char init_dist_screen::x#3
char init_dist_screen::x#4
char init_dist_screen::x#5
char init_dist_screen::x#6
char init_dist_screen::x#7
char init_dist_screen::x#8
char init_dist_screen::x2
char init_dist_screen::x2#0
char init_dist_screen::x2#1
char init_dist_screen::x2#2
char init_dist_screen::xb
char init_dist_screen::xb#0
char init_dist_screen::xb#1
char init_dist_screen::xb#2
char init_dist_screen::xb#3
char init_dist_screen::xb#4
char init_dist_screen::xb#5
char init_dist_screen::xb#6
char init_dist_screen::xb#7
char init_dist_screen::xb#8
char init_dist_screen::xd
char init_dist_screen::xd#0
unsigned int init_dist_screen::xds
unsigned int init_dist_screen::xds#0
char init_dist_screen::y
char init_dist_screen::y#0
char init_dist_screen::y#1
char init_dist_screen::y#10
char init_dist_screen::y#11
char init_dist_screen::y#12
char init_dist_screen::y#13
char init_dist_screen::y#14
char init_dist_screen::y#2
char init_dist_screen::y#3
char init_dist_screen::y#4
char init_dist_screen::y#5
char init_dist_screen::y#6
char init_dist_screen::y#7
char init_dist_screen::y#8
char init_dist_screen::y#9
char init_dist_screen::y2
char init_dist_screen::y2#0
char init_dist_screen::y2#1
char init_dist_screen::y2#2
char init_dist_screen::yd
char init_dist_screen::yd#0
unsigned int init_dist_screen::yds
unsigned int init_dist_screen::yds#0
unsigned int init_dist_screen::yds#1
unsigned int init_dist_screen::yds#2
unsigned int init_dist_screen::yds#3
unsigned int init_dist_screen::yds#4
unsigned int init_dist_screen::yds#5
unsigned int init_dist_screen::yds#6
unsigned int init_dist_screen::yds#7
void init_squares()
char init_squares::$0
void *init_squares::$1
bool init_squares::$2
number init_squares::$3
number init_squares::$4
char init_squares::i
char init_squares::i#0
char init_squares::i#1
char init_squares::i#2
char init_squares::i#3
unsigned int init_squares::sqr
unsigned int init_squares::sqr#0
unsigned int init_squares::sqr#1
unsigned int init_squares::sqr#2
unsigned int init_squares::sqr#3
unsigned int *init_squares::squares
unsigned int *init_squares::squares#0
unsigned int *init_squares::squares#1
unsigned int *init_squares::squares#2
unsigned int *init_squares::squares#3
void main()
char main::$5
char main::$7
number main::toD0181_$0
number main::toD0181_$1
char main::toD0181_$2
char main::toD0181_$3
number main::toD0181_$4
number main::toD0181_$5
number main::toD0181_$6
unsigned int main::toD0181_$7
char *main::toD0181_gfx
char *main::toD0181_gfx#0
char *main::toD0181_gfx#1
char main::toD0181_return
char main::toD0181_return#0
char main::toD0181_return#1
char main::toD0181_return#2
char main::toD0181_return#3
char *main::toD0181_screen
char *main::toD0181_screen#0
char *main::toD0181_screen#1
number main::toD0182_$0
number main::toD0182_$1
char main::toD0182_$2
char main::toD0182_$3
number main::toD0182_$4
number main::toD0182_$5
number main::toD0182_$6
unsigned int main::toD0182_$7
char *main::toD0182_gfx
char *main::toD0182_gfx#0
char *main::toD0182_gfx#1
char main::toD0182_return
char main::toD0182_return#0
char main::toD0182_return#1
char main::toD0182_return#2
char main::toD0182_return#3
char *main::toD0182_screen
char *main::toD0182_screen#0
char *main::toD0182_screen#1
void make_plasma_charset(char *charset)
number make_plasma_charset::$10
number make_plasma_charset::$11
number make_plasma_charset::$12
bool make_plasma_charset::$13
bool make_plasma_charset::$14
bool make_plasma_charset::$2
char make_plasma_charset::$3
bool make_plasma_charset::$4
bool make_plasma_charset::$5
char make_plasma_charset::$6
number make_plasma_charset::$7
bool make_plasma_charset::$8
bool make_plasma_charset::$9
char make_plasma_charset::b
char make_plasma_charset::b#0
char make_plasma_charset::b#1
char make_plasma_charset::b#2
char make_plasma_charset::b#3
char make_plasma_charset::b#4
char make_plasma_charset::b#5
char make_plasma_charset::b#6
char make_plasma_charset::b#7
char make_plasma_charset::b#8
__constant const char make_plasma_charset::bittab[8] = { 1, 2, 4, 8, $10, $20, $40, $80 }
unsigned int make_plasma_charset::c
unsigned int make_plasma_charset::c#0
unsigned int make_plasma_charset::c#1
unsigned int make_plasma_charset::c#10
unsigned int make_plasma_charset::c#11
unsigned int make_plasma_charset::c#12
unsigned int make_plasma_charset::c#13
unsigned int make_plasma_charset::c#14
unsigned int make_plasma_charset::c#15
unsigned int make_plasma_charset::c#16
unsigned int make_plasma_charset::c#2
unsigned int make_plasma_charset::c#3
unsigned int make_plasma_charset::c#4
unsigned int make_plasma_charset::c#5
unsigned int make_plasma_charset::c#6
unsigned int make_plasma_charset::c#7
unsigned int make_plasma_charset::c#8
unsigned int make_plasma_charset::c#9
char *make_plasma_charset::charset
char *make_plasma_charset::charset#0
char *make_plasma_charset::charset#1
char *make_plasma_charset::charset#10
char *make_plasma_charset::charset#11
char *make_plasma_charset::charset#12
char *make_plasma_charset::charset#13
char *make_plasma_charset::charset#14
char *make_plasma_charset::charset#15
char *make_plasma_charset::charset#16
char *make_plasma_charset::charset#17
char *make_plasma_charset::charset#18
char *make_plasma_charset::charset#19
char *make_plasma_charset::charset#2
char *make_plasma_charset::charset#3
char *make_plasma_charset::charset#4
char *make_plasma_charset::charset#5
char *make_plasma_charset::charset#6
char *make_plasma_charset::charset#7
char *make_plasma_charset::charset#8
char *make_plasma_charset::charset#9
char make_plasma_charset::i
char make_plasma_charset::i#0
char make_plasma_charset::i#1
char make_plasma_charset::i#10
char make_plasma_charset::i#2
char make_plasma_charset::i#3
char make_plasma_charset::i#4
char make_plasma_charset::i#5
char make_plasma_charset::i#6
char make_plasma_charset::i#7
char make_plasma_charset::i#8
char make_plasma_charset::i#9
char make_plasma_charset::ii
char make_plasma_charset::ii#0
char make_plasma_charset::ii#1
char make_plasma_charset::ii#2
char make_plasma_charset::ii#3
char make_plasma_charset::ii#4
char make_plasma_charset::ii#5
char make_plasma_charset::ii#6
char make_plasma_charset::ii#7
char make_plasma_charset::s
char make_plasma_charset::s#0
char make_plasma_charset::s#1
char make_plasma_charset::s#2
char make_plasma_charset::s#3
char make_plasma_charset::s#4
char make_plasma_charset::s#5
char make_plasma_charset::s#6
char make_plasma_charset::s#7
char make_plasma_charset::s#8
char make_plasma_charset::s#9
char make_plasma_charset::sid_rnd1_return
char make_plasma_charset::sid_rnd1_return#0
char make_plasma_charset::sid_rnd1_return#1
char make_plasma_charset::sid_rnd1_return#2
char make_plasma_charset::sid_rnd1_return#3
void * malloc(unsigned int size)
char *malloc::mem
char *malloc::mem#0
void *malloc::return
void *malloc::return#0
void *malloc::return#1
void *malloc::return#2
void *malloc::return#3
void *malloc::return#4
void *malloc::return#5
void *malloc::return#6
void *malloc::return#7
void *malloc::return#8
unsigned int malloc::size
unsigned int malloc::size#0
unsigned int malloc::size#1
unsigned int malloc::size#2
unsigned int malloc::size#3
void * memset(void *str , char c , unsigned int num)
bool memset::$0
bool memset::$1
bool memset::$3
char *memset::$4
char memset::c
char memset::c#0
char memset::c#1
char memset::c#2
char memset::c#3
char memset::c#4
char memset::c#5
char *memset::dst
char *memset::dst#0
char *memset::dst#1
char *memset::dst#2
char *memset::dst#3
char *memset::end
char *memset::end#0
char *memset::end#1
char *memset::end#2
unsigned int memset::num
unsigned int memset::num#0
unsigned int memset::num#1
unsigned int memset::num#2
unsigned int memset::num#3
void *memset::return
void *memset::return#0
void *memset::return#1
void *memset::return#2
void *memset::return#3
void *memset::return#4
void *memset::str
void *memset::str#0
void *memset::str#1
void *memset::str#2
void *memset::str#3
void *memset::str#4
void *memset::str#5
void *memset::str#6
void print_char(char ch)
char print_char::ch
char print_char::ch#0
char print_char::ch#1
char *print_char_cursor
char *print_char_cursor#0
char *print_char_cursor#1
char *print_char_cursor#10
char *print_char_cursor#11
char *print_char_cursor#12
char *print_char_cursor#13
char *print_char_cursor#14
char *print_char_cursor#15
char *print_char_cursor#16
char *print_char_cursor#17
char *print_char_cursor#18
char *print_char_cursor#19
char *print_char_cursor#2
char *print_char_cursor#20
char *print_char_cursor#21
char *print_char_cursor#22
char *print_char_cursor#23
char *print_char_cursor#24
char *print_char_cursor#25
char *print_char_cursor#26
char *print_char_cursor#27
char *print_char_cursor#28
char *print_char_cursor#29
char *print_char_cursor#3
char *print_char_cursor#30
char *print_char_cursor#31
char *print_char_cursor#32
char *print_char_cursor#33
char *print_char_cursor#34
char *print_char_cursor#35
char *print_char_cursor#36
char *print_char_cursor#37
char *print_char_cursor#38
char *print_char_cursor#39
char *print_char_cursor#4
char *print_char_cursor#40
char *print_char_cursor#41
char *print_char_cursor#42
char *print_char_cursor#43
char *print_char_cursor#44
char *print_char_cursor#45
char *print_char_cursor#46
char *print_char_cursor#47
char *print_char_cursor#48
char *print_char_cursor#49
char *print_char_cursor#5
char *print_char_cursor#50
char *print_char_cursor#51
char *print_char_cursor#52
char *print_char_cursor#53
char *print_char_cursor#54
char *print_char_cursor#55
char *print_char_cursor#6
char *print_char_cursor#7
char *print_char_cursor#8
char *print_char_cursor#9
void print_cls()
char *print_line_cursor
char *print_line_cursor#0
char *print_line_cursor#1
char *print_line_cursor#10
char *print_line_cursor#11
char *print_line_cursor#12
char *print_line_cursor#13
char *print_line_cursor#14
char *print_line_cursor#15
char *print_line_cursor#16
char *print_line_cursor#17
char *print_line_cursor#18
char *print_line_cursor#19
char *print_line_cursor#2
char *print_line_cursor#20
char *print_line_cursor#21
char *print_line_cursor#22
char *print_line_cursor#23
char *print_line_cursor#24
char *print_line_cursor#25
char *print_line_cursor#26
char *print_line_cursor#27
char *print_line_cursor#28
char *print_line_cursor#29
char *print_line_cursor#3
char *print_line_cursor#30
char *print_line_cursor#31
char *print_line_cursor#32
char *print_line_cursor#33
char *print_line_cursor#34
char *print_line_cursor#35
char *print_line_cursor#36
char *print_line_cursor#37
char *print_line_cursor#38
char *print_line_cursor#39
char *print_line_cursor#4
char *print_line_cursor#40
char *print_line_cursor#41
char *print_line_cursor#42
char *print_line_cursor#43
char *print_line_cursor#44
char *print_line_cursor#45
char *print_line_cursor#46
char *print_line_cursor#47
char *print_line_cursor#48
char *print_line_cursor#49
char *print_line_cursor#5
char *print_line_cursor#50
char *print_line_cursor#6
char *print_line_cursor#7
char *print_line_cursor#8
char *print_line_cursor#9
char *print_screen
char *print_screen#0
char *print_screen#1
char *print_screen#10
char *print_screen#11
char *print_screen#12
char *print_screen#13
char *print_screen#14
char *print_screen#2
char *print_screen#3
char *print_screen#4
char *print_screen#5
char *print_screen#6
char *print_screen#7
char *print_screen#8
char *print_screen#9
char sin_offset_x
char sin_offset_x#0
char sin_offset_x#1
char sin_offset_x#10
char sin_offset_x#11
char sin_offset_x#12
char sin_offset_x#13
char sin_offset_x#14
char sin_offset_x#15
char sin_offset_x#16
char sin_offset_x#17
char sin_offset_x#18
char sin_offset_x#19
char sin_offset_x#2
char sin_offset_x#20
char sin_offset_x#21
char sin_offset_x#22
char sin_offset_x#23
char sin_offset_x#24
char sin_offset_x#25
char sin_offset_x#26
char sin_offset_x#27
char sin_offset_x#28
char sin_offset_x#29
char sin_offset_x#3
char sin_offset_x#30
char sin_offset_x#31
char sin_offset_x#32
char sin_offset_x#4
char sin_offset_x#5
char sin_offset_x#6
char sin_offset_x#7
char sin_offset_x#8
char sin_offset_x#9
char sin_offset_y
char sin_offset_y#0
char sin_offset_y#1
char sin_offset_y#10
char sin_offset_y#11
char sin_offset_y#12
char sin_offset_y#13
char sin_offset_y#14
char sin_offset_y#15
char sin_offset_y#16
char sin_offset_y#17
char sin_offset_y#18
char sin_offset_y#19
char sin_offset_y#2
char sin_offset_y#20
char sin_offset_y#21
char sin_offset_y#22
char sin_offset_y#23
char sin_offset_y#24
char sin_offset_y#25
char sin_offset_y#26
char sin_offset_y#27
char sin_offset_y#28
char sin_offset_y#29
char sin_offset_y#3
char sin_offset_y#30
char sin_offset_y#31
char sin_offset_y#32
char sin_offset_y#4
char sin_offset_y#5
char sin_offset_y#6
char sin_offset_y#7
char sin_offset_y#8
char sin_offset_y#9
unsigned int sqr(char val)
char sqr::$0
unsigned int sqr::return
unsigned int sqr::return#0
unsigned int sqr::return#1
unsigned int sqr::return#2
unsigned int sqr::return#3
unsigned int sqr::return#4
unsigned int sqr::return#5
unsigned int sqr::return#6
char sqr::val
char sqr::val#0
char sqr::val#1
char sqr::val#2
char sqrt(unsigned int val)
unsigned int sqrt::$1
unsigned int sqrt::$2
unsigned int *sqrt::found
unsigned int *sqrt::found#0
char sqrt::return
char sqrt::return#0
char sqrt::return#1
char sqrt::return#2
char sqrt::return#3
char sqrt::return#4
char sqrt::sq
char sqrt::sq#0
unsigned int sqrt::val
unsigned int sqrt::val#0
unsigned int sqrt::val#1

Adding number conversion cast (unumber) 0 in memset::$0 = memset::num#2 > 0
Adding number conversion cast (unumber) 0 in bsearch16u::$5 = bsearch16u::num#3 > 0
Adding number conversion cast (unumber) 1 in bsearch16u::$6 = bsearch16u::num#4 >> 1
Adding number conversion cast (snumber) 0 in bsearch16u::$9 = bsearch16u::result#0 == 0
Adding number conversion cast (snumber) 0 in bsearch16u::$11 = bsearch16u::result#1 > 0
Adding number conversion cast (unumber) 1 in bsearch16u::num#0 = bsearch16u::num#5 >> 1
Adding number conversion cast (unumber) 1 in bsearch16u::$15 = 1 * SIZEOF_UNSIGNED_INT
Adding number conversion cast (unumber) bsearch16u::$15 in bsearch16u::$15 = (unumber)1 * SIZEOF_UNSIGNED_INT
Adding number conversion cast (unumber) 1 in bsearch16u::$16 = 1 * SIZEOF_UNSIGNED_INT
Adding number conversion cast (unumber) bsearch16u::$16 in bsearch16u::$16 = (unumber)1 * SIZEOF_UNSIGNED_INT
Adding number conversion cast (unumber) 2 in init_squares::$3 = init_squares::i#3 * 2
Adding number conversion cast (unumber) init_squares::$3 in init_squares::$3 = init_squares::i#3 * (unumber)2
Adding number conversion cast (unumber) 1 in init_squares::$4 = init_squares::$3 + 1
Adding number conversion cast (unumber) init_squares::$4 in init_squares::$4 = init_squares::$3 + (unumber)1
Adding number conversion cast (snumber) 0 in atan2_16::$0 = atan2_16::y#1 >= 0
Adding number conversion cast (snumber) 0 in atan2_16::$5 = atan2_16::x#1 >= 0
Adding number conversion cast (snumber) 0 in atan2_16::$16 = atan2_16::yi#3 == 0
Adding number conversion cast (unumber) 2 in atan2_16::angle#1 = atan2_16::angle#6 / 2
Adding number conversion cast (snumber) 0 in atan2_16::$10 = atan2_16::x#4 < 0
Adding number conversion cast (unumber) 2 in atan2_16::$18 = atan2_16::shift#2 >= 2
Adding number conversion cast (snumber) 2 in atan2_16::xd#1 = atan2_16::xd#3 >> 2
Adding number conversion cast (snumber) 2 in atan2_16::yd#1 = atan2_16::yd#3 >> 2
Adding number conversion cast (unumber) 2 in atan2_16::shift#1 = atan2_16::shift#3 - 2
Adding number conversion cast (unumber) 0 in atan2_16::$24 = 0 != atan2_16::shift#4
Adding number conversion cast (snumber) 0 in atan2_16::$20 = atan2_16::yi#5 >= 0
Adding number conversion cast (snumber) 1 in atan2_16::xd#2 = atan2_16::xd#4 >> 1
Adding number conversion cast (snumber) 1 in atan2_16::yd#2 = atan2_16::yd#4 >> 1
Adding number conversion cast (unumber) 1 in atan2_16::i#1 = atan2_16::i#5 + rangenext(0,CORDIC_ITERATIONS_16-1)
Adding number conversion cast (snumber) 0 in atan2_16::$13 = atan2_16::y#4 < 0
Adding number conversion cast (unumber) $8000 in atan2_16::$12 = $8000 - atan2_16::angle#9
Adding number conversion cast (unumber) atan2_16::$12 in atan2_16::$12 = (unumber)$8000 - atan2_16::angle#9
Adding number conversion cast (unumber) $3e8 in memset::num#0 = $3e8
Adding number conversion cast (unumber) $3e8 in memset::num#1 = $3e8
Adding number conversion cast (unumber) $3fff in main::toD0181_$0 = main::toD0181_$7 & $3fff
Adding number conversion cast (unumber) main::toD0181_$0 in main::toD0181_$0 = main::toD0181_$7 & (unumber)$3fff
Adding number conversion cast (unumber) 4 in main::toD0181_$1 = main::toD0181_$0 * 4
Adding number conversion cast (unumber) main::toD0181_$1 in main::toD0181_$1 = main::toD0181_$0 * (unumber)4
Adding number conversion cast (unumber) 4 in main::toD0181_$4 = main::toD0181_$3 / 4
Adding number conversion cast (unumber) main::toD0181_$4 in main::toD0181_$4 = main::toD0181_$3 / (unumber)4
Adding number conversion cast (unumber) $f in main::toD0181_$5 = main::toD0181_$4 & $f
Adding number conversion cast (unumber) main::toD0181_$5 in main::toD0181_$5 = main::toD0181_$4 & (unumber)$f
Adding number conversion cast (unumber) main::toD0181_$6 in main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5
Adding number conversion cast (unumber) $3fff in main::toD0182_$0 = main::toD0182_$7 & $3fff
Adding number conversion cast (unumber) main::toD0182_$0 in main::toD0182_$0 = main::toD0182_$7 & (unumber)$3fff
Adding number conversion cast (unumber) 4 in main::toD0182_$1 = main::toD0182_$0 * 4
Adding number conversion cast (unumber) main::toD0182_$1 in main::toD0182_$1 = main::toD0182_$0 * (unumber)4
Adding number conversion cast (unumber) 4 in main::toD0182_$4 = main::toD0182_$3 / 4
Adding number conversion cast (unumber) main::toD0182_$4 in main::toD0182_$4 = main::toD0182_$3 / (unumber)4
Adding number conversion cast (unumber) $f in main::toD0182_$5 = main::toD0182_$4 & $f
Adding number conversion cast (unumber) main::toD0182_$5 in main::toD0182_$5 = main::toD0182_$4 & (unumber)$f
Adding number conversion cast (unumber) main::toD0182_$6 in main::toD0182_$6 = main::toD0182_$2 | main::toD0182_$5
Adding number conversion cast (unumber) $28 in doplasma::screen#2 = doplasma::screen#4 + $28
Adding number conversion cast (unumber) $28 in doplasma::angle#1 = doplasma::angle#3 + $28
Adding number conversion cast (unumber) $28 in doplasma::dist#1 = doplasma::dist#3 + $28
Adding number conversion cast (unumber) 3 in sin_offset_x#3 = sin_offset_x#12 - 3
Adding number conversion cast (unumber) 7 in sin_offset_y#3 = sin_offset_y#12 - 7
Adding number conversion cast (unumber) $28*$c in init_angle_screen::screen_topline#0 = init_angle_screen::screen#1 + $28*$c
Adding number conversion cast (unumber) $28*$c in init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#1 + $28*$c
Adding number conversion cast (unumber) $13 in init_angle_screen::$2 = init_angle_screen::x#2 <= $13
Adding number conversion cast (unumber) 2 in init_angle_screen::$3 = init_angle_screen::x#3 * 2
Adding number conversion cast (unumber) init_angle_screen::$3 in init_angle_screen::$3 = init_angle_screen::x#3 * (unumber)2
Adding number conversion cast (unumber) $27 in init_angle_screen::$4 = $27 - init_angle_screen::$3
Adding number conversion cast (unumber) init_angle_screen::$4 in init_angle_screen::$4 = (unumber)$27 - init_angle_screen::$3
Adding number conversion cast (unumber) 0 in init_angle_screen::$5 = init_angle_screen::$4 w= 0
Adding number conversion cast (unumber) 2 in init_angle_screen::$6 = init_angle_screen::y#2 * 2
Adding number conversion cast (unumber) init_angle_screen::$6 in init_angle_screen::$6 = init_angle_screen::y#2 * (unumber)2
Adding number conversion cast (unumber) 0 in init_angle_screen::$7 = init_angle_screen::$6 w= 0
Adding number conversion cast (unumber) $80 in init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
Adding number conversion cast (unumber) init_angle_screen::$9 in init_angle_screen::$9 = init_angle_screen::angle_w#0 + (unumber)$80
Adding number conversion cast (unumber) $80 in init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$12 in init_angle_screen::$12 = (unumber)$80 + init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $80 in init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$13 in init_angle_screen::$13 = (unumber)$80 - init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $28 in init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#3 - $28
Adding number conversion cast (unumber) $28 in init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#3 + $28
Adding number conversion cast (unumber) $30 in NUM_SQUARES#2 = $30
Adding number conversion cast (unumber) $28*$18 in init_dist_screen::screen_bottomline#0 = init_dist_screen::screen#1 + $28*$18
Adding number conversion cast (unumber) 2 in init_dist_screen::y2#0 = init_dist_screen::y#2 * 2
Adding number conversion cast (unumber) $18 in init_dist_screen::$3 = init_dist_screen::y2#0 >= $18
Adding number conversion cast (unumber) $18 in init_dist_screen::$6 = init_dist_screen::y2#1 - $18
Adding number conversion cast (unumber) init_dist_screen::$6 in init_dist_screen::$6 = init_dist_screen::y2#1 - (unumber)$18
Adding number conversion cast (unumber) init_dist_screen::$7 in init_dist_screen::$7 = init_dist_screen::$6
Adding number conversion cast (unumber) $18 in init_dist_screen::$4 = $18 - init_dist_screen::y2#2
Adding number conversion cast (unumber) init_dist_screen::$4 in init_dist_screen::$4 = (unumber)$18 - init_dist_screen::y2#2
Adding number conversion cast (unumber) init_dist_screen::$5 in init_dist_screen::$5 = init_dist_screen::$4
Adding number conversion cast (unumber) init_dist_screen::$8 in heap_head#42 = phi( init_dist_screen::@2/heap_head#45, init_dist_screen::@3/heap_head#46 )
  NUM_SQUARES#36 = phi( init_dist_screen::@2/NUM_SQUARES#39, init_dist_screen::@3/NUM_SQUARES#40 )
  init_dist_screen::y#7 = phi( init_dist_screen::@2/init_dist_screen::y#9, init_dist_screen::@3/init_dist_screen::y#10 )
  init_dist_screen::screen_bottomline#8 = phi( init_dist_screen::@2/init_dist_screen::screen_bottomline#11, init_dist_screen::@3/init_dist_screen::screen_bottomline#12 )
  init_dist_screen::screen_topline#8 = phi( init_dist_screen::@2/init_dist_screen::screen_topline#11, init_dist_screen::@3/init_dist_screen::screen_topline#12 )
  SQUARES#21 = phi( init_dist_screen::@2/SQUARES#31, init_dist_screen::@3/SQUARES#32 )
  init_dist_screen::$8 = phi( init_dist_screen::@2/init_dist_screen::$7, init_dist_screen::@3/init_dist_screen::$5 )
Adding number conversion cast (unumber) $13 in init_dist_screen::$10 = init_dist_screen::x#2 <= $13
Adding number conversion cast (unumber) 2 in init_dist_screen::x2#0 = init_dist_screen::x#3 * 2
Adding number conversion cast (unumber) $27 in init_dist_screen::$12 = init_dist_screen::x2#0 >= $27
Adding number conversion cast (unumber) $28 in init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#2 + $28
Adding number conversion cast (unumber) $28 in init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#2 - $28
Adding number conversion cast (unumber) $27 in init_dist_screen::$15 = init_dist_screen::x2#1 - $27
Adding number conversion cast (unumber) init_dist_screen::$15 in init_dist_screen::$15 = init_dist_screen::x2#1 - (unumber)$27
Adding number conversion cast (unumber) init_dist_screen::$16 in init_dist_screen::$16 = init_dist_screen::$15
Adding number conversion cast (unumber) $27 in init_dist_screen::$13 = $27 - init_dist_screen::x2#2
Adding number conversion cast (unumber) init_dist_screen::$13 in init_dist_screen::$13 = (unumber)$27 - init_dist_screen::x2#2
Adding number conversion cast (unumber) init_dist_screen::$14 in init_dist_screen::$14 = init_dist_screen::$13
Adding number conversion cast (unumber) init_dist_screen::$17 in heap_head#47 = phi( init_dist_screen::@8/heap_head#50, init_dist_screen::@9/heap_head#51 )
  init_dist_screen::y#11 = phi( init_dist_screen::@8/init_dist_screen::y#12, init_dist_screen::@9/init_dist_screen::y#13 )
  init_dist_screen::xb#4 = phi( init_dist_screen::@8/init_dist_screen::xb#5, init_dist_screen::@9/init_dist_screen::xb#6 )
  init_dist_screen::screen_bottomline#7 = phi( init_dist_screen::@8/init_dist_screen::screen_bottomline#9, init_dist_screen::@9/init_dist_screen::screen_bottomline#10 )
  init_dist_screen::x#6 = phi( init_dist_screen::@8/init_dist_screen::x#7, init_dist_screen::@9/init_dist_screen::x#8 )
  init_dist_screen::screen_topline#7 = phi( init_dist_screen::@8/init_dist_screen::screen_topline#9, init_dist_screen::@9/init_dist_screen::screen_topline#10 )
  NUM_SQUARES#25 = phi( init_dist_screen::@8/NUM_SQUARES#31, init_dist_screen::@9/NUM_SQUARES#32 )
  init_dist_screen::yds#2 = phi( init_dist_screen::@8/init_dist_screen::yds#3, init_dist_screen::@9/init_dist_screen::yds#4 )
  SQUARES#20 = phi( init_dist_screen::@8/SQUARES#34, init_dist_screen::@9/SQUARES#35 )
  init_dist_screen::$17 = phi( init_dist_screen::@8/init_dist_screen::$16, init_dist_screen::@9/init_dist_screen::$14 )
Adding number conversion cast (unumber) $ffff in *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff
Adding number conversion cast (unumber) $100 in make_plasma_charset::$2 = make_plasma_charset::c#2 < $100
Adding number conversion cast (unumber) 8 in make_plasma_charset::$4 = make_plasma_charset::i#2 < 8
Adding number conversion cast (unumber) 7 in make_plasma_charset::$12 = make_plasma_charset::c#4 & 7
Adding number conversion cast (unumber) make_plasma_charset::$12 in make_plasma_charset::$12 = make_plasma_charset::c#4 & (unumber)7
Adding number conversion cast (unumber) 0 in make_plasma_charset::$13 = make_plasma_charset::$12 == 0
Adding number conversion cast (unumber) 8 in make_plasma_charset::$5 = make_plasma_charset::ii#2 < 8
Adding number conversion cast (unumber) $ff in make_plasma_charset::$7 = make_plasma_charset::$6 & $ff
Adding number conversion cast (unumber) make_plasma_charset::$7 in make_plasma_charset::$7 = make_plasma_charset::$6 & (unumber)$ff
Adding number conversion cast (unumber) 8 in make_plasma_charset::$10 = make_plasma_charset::c#5 * 8
Adding number conversion cast (unumber) make_plasma_charset::$10 in make_plasma_charset::$10 = make_plasma_charset::c#5 * (unumber)8
Adding number conversion cast (unumber) make_plasma_charset::$11 in make_plasma_charset::$11 = make_plasma_charset::$10 + make_plasma_charset::i#3
Adding number conversion cast (unumber) $3e8 in malloc::size#1 = $3e8
Adding number conversion cast (unumber) $3e8 in malloc::size#2 = $3e8
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast memset::dst#0 = (char *)memset::str#3
Inlining cast malloc::return#0 = (void *)malloc::mem#0
Inlining cast SQUARES#0 = (unsigned int *)init_squares::$1
Inlining cast memset::num#0 = (unumber)$3e8
Inlining cast memset::num#1 = (unumber)$3e8
Inlining cast NUM_SQUARES#2 = (unumber)$30
Inlining cast *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = (unumber)$ffff
Inlining cast malloc::size#1 = (unumber)$3e8
Inlining cast SCREEN_DIST#0 = (char *)malloc::return#7
Inlining cast malloc::size#2 = (unumber)$3e8
Inlining cast SCREEN_ANGLE#0 = (char *)malloc::return#8
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (char *) 53272
Simplifying constant pointer cast (struct MOS6581_SID *) 54272
Simplifying constant pointer cast (char *) 55296
Simplifying constant pointer cast (char *) 8192
Simplifying constant pointer cast (char *) 10240
Simplifying constant pointer cast (char *) 11264
Simplifying constant pointer cast (char *) 40960
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast $8000
Simplifying constant integer cast $3e8
Simplifying constant integer cast $3e8
Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast 3
Simplifying constant integer cast 7
Simplifying constant integer cast $13
Simplifying constant integer cast 2
Simplifying constant integer cast $27
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 0
Simplifying constant integer cast $80
Simplifying constant integer cast $80
Simplifying constant integer cast $80
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast $30
Simplifying constant integer cast 2
Simplifying constant integer cast $18
Simplifying constant integer cast $18
Simplifying constant integer cast $18
Simplifying constant integer cast $13
Simplifying constant integer cast 2
Simplifying constant integer cast $27
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast $27
Simplifying constant integer cast $27
Simplifying constant integer cast $ffff
Simplifying constant integer cast $100
Simplifying constant integer cast 8
Simplifying constant integer cast 7
Simplifying constant integer cast 0
Simplifying constant integer cast 8
Simplifying constant integer cast $ff
Simplifying constant integer cast 8
Simplifying constant pointer cast (char *) 1024
Simplifying constant integer cast $3e8
Simplifying constant integer cast $3e8
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized signed number type (signed char) 0
Finalized signed number type (signed char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 1
Finalized signed number type (signed char) 0
Finalized signed number type (signed char) 0
Finalized signed number type (signed char) 0
Finalized unsigned number type (char) 2
Finalized signed number type (signed char) 0
Finalized unsigned number type (char) 2
Finalized signed number type (signed char) 2
Finalized signed number type (signed char) 2
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 0
Finalized signed number type (signed char) 0
Finalized signed number type (signed char) 1
Finalized signed number type (signed char) 1
Finalized unsigned number type (char) 1
Finalized signed number type (signed char) 0
Finalized unsigned number type (unsigned int) $8000
Finalized unsigned number type (unsigned int) $3e8
Finalized unsigned number type (unsigned int) $3e8
Finalized unsigned number type (unsigned int) $3fff
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) $f
Finalized unsigned number type (unsigned int) $3fff
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) $f
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) 3
Finalized unsigned number type (char) 7
Finalized unsigned number type (char) $13
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) $27
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $80
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $30
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) $18
Finalized unsigned number type (char) $18
Finalized unsigned number type (char) $18
Finalized unsigned number type (char) $13
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) $27
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $27
Finalized unsigned number type (char) $27
Finalized unsigned number type (unsigned int) $ffff
Finalized unsigned number type (unsigned int) $100
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) 7
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) $ff
Finalized unsigned number type (char) 8
Finalized unsigned number type (unsigned int) $3e8
Finalized unsigned number type (unsigned int) $3e8
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to char in bsearch16u::$15 = 1 * SIZEOF_UNSIGNED_INT
Inferred type updated to char in bsearch16u::$16 = 1 * SIZEOF_UNSIGNED_INT
Inferred type updated to char in init_squares::$3 = init_squares::i#3 * 2
Inferred type updated to char in init_squares::$4 = init_squares::$3 + 1
Inferred type updated to unsigned int in atan2_16::$12 = $8000 - atan2_16::angle#9
Inferred type updated to unsigned int in main::toD0181_$0 = main::toD0181_$7 & $3fff
Inferred type updated to unsigned int in main::toD0181_$1 = main::toD0181_$0 * 4
Inferred type updated to char in main::toD0181_$4 = main::toD0181_$3 / 4
Inferred type updated to char in main::toD0181_$5 = main::toD0181_$4 & $f
Inferred type updated to char in main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5
Inferred type updated to unsigned int in main::toD0182_$0 = main::toD0182_$7 & $3fff
Inferred type updated to unsigned int in main::toD0182_$1 = main::toD0182_$0 * 4
Inferred type updated to char in main::toD0182_$4 = main::toD0182_$3 / 4
Inferred type updated to char in main::toD0182_$5 = main::toD0182_$4 & $f
Inferred type updated to char in main::toD0182_$6 = main::toD0182_$2 | main::toD0182_$5
Inferred type updated to char in init_angle_screen::$3 = init_angle_screen::x#3 * 2
Inferred type updated to char in init_angle_screen::$4 = $27 - init_angle_screen::$3
Inferred type updated to char in init_angle_screen::$6 = init_angle_screen::y#2 * 2
Inferred type updated to unsigned int in init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
Inferred type updated to char in init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
Inferred type updated to char in init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
Inferred type updated to char in init_dist_screen::$6 = init_dist_screen::y2#1 - $18
Inferred type updated to char in init_dist_screen::$7 = init_dist_screen::$6
Inferred type updated to char in init_dist_screen::$4 = $18 - init_dist_screen::y2#2
Inferred type updated to char in init_dist_screen::$5 = init_dist_screen::$4
Inferred type updated to char for init_dist_screen::$8
Inferred type updated to char in init_dist_screen::$15 = init_dist_screen::x2#1 - $27
Inferred type updated to char in init_dist_screen::$16 = init_dist_screen::$15
Inferred type updated to char in init_dist_screen::$13 = $27 - init_dist_screen::x2#2
Inferred type updated to char in init_dist_screen::$14 = init_dist_screen::$13
Inferred type updated to char for init_dist_screen::$17
Inferred type updated to char in make_plasma_charset::$12 = make_plasma_charset::c#4 & 7
Inferred type updated to char in make_plasma_charset::$7 = make_plasma_charset::$6 & $ff
Inferred type updated to unsigned int in make_plasma_charset::$10 = make_plasma_charset::c#5 * 8
Inferred type updated to unsigned int in make_plasma_charset::$11 = make_plasma_charset::$10 + make_plasma_charset::i#3
Inversing boolean not [2] memset::$1 = memset::num#2 <= 0 from [1] memset::$0 = memset::num#2 > 0
Inversing boolean not [39] bsearch16u::$10 = bsearch16u::result#0 != 0 from [38] bsearch16u::$9 = bsearch16u::result#0 == 0
Inversing boolean not [46] bsearch16u::$12 = bsearch16u::result#1 <= 0 from [45] bsearch16u::$11 = bsearch16u::result#1 > 0
Inversing boolean not [138] atan2_16::$17 = atan2_16::yi#3 != 0 from [137] atan2_16::$16 = atan2_16::yi#3 == 0
Inversing boolean not [147] atan2_16::$11 = atan2_16::x#4 >= 0 from [146] atan2_16::$10 = atan2_16::x#4 < 0
Inversing boolean not [158] atan2_16::$19 = 0 == atan2_16::shift#4 from [157] atan2_16::$24 = 0 != atan2_16::shift#4
Inversing boolean not [182] atan2_16::$14 = atan2_16::y#4 >= 0 from [181] atan2_16::$13 = atan2_16::y#4 < 0
Inversing boolean not [458] make_plasma_charset::$14 = make_plasma_charset::$12 != 0 from [457] make_plasma_charset::$13 = make_plasma_charset::$12 == 0
Inversing boolean not [471] make_plasma_charset::$9 = make_plasma_charset::$7 <= make_plasma_charset::s#1 from [470] make_plasma_charset::$8 = make_plasma_charset::$7 > make_plasma_charset::s#1
Successful SSA optimization Pass2UnaryNotSimplification
Alias memset::return#0 = memset::str#2 memset::return#4 memset::return#1 
Alias memset::str#3 = memset::str#4 
Alias memset::num#2 = memset::num#3 
Alias memset::c#4 = memset::c#5 
Alias memset::c#2 = memset::c#3 
Alias memset::dst#2 = memset::dst#3 
Alias memset::end#1 = memset::end#2 
Alias memset::str#5 = memset::str#6 
Alias malloc::return#0 = malloc::return#5 malloc::return#1 
Alias heap_head#0 = heap_head#14 heap_head#1 
Alias bsearch16u::num#3 = bsearch16u::num#4 bsearch16u::num#8 bsearch16u::num#6 
Alias bsearch16u::items#2 = bsearch16u::items#6 bsearch16u::items#3 bsearch16u::items#9 bsearch16u::items#4 bsearch16u::$3 bsearch16u::items#5 
Alias bsearch16u::key#1 = bsearch16u::key#3 bsearch16u::key#2 bsearch16u::key#7 bsearch16u::key#6 
Alias bsearch16u::result#0 = bsearch16u::result#1 
Alias bsearch16u::pivot#0 = bsearch16u::pivot#3 bsearch16u::pivot#1 bsearch16u::return#0 bsearch16u::pivot#2 
Alias bsearch16u::return#1 = bsearch16u::return#4 
Alias bsearch16u::items#0 = bsearch16u::$13 
Alias bsearch16u::$2 = bsearch16u::$1 
Alias bsearch16u::return#2 = bsearch16u::$4 
Alias malloc::size#0 = init_squares::$0 
Alias malloc::return#2 = malloc::return#6 
Alias NUM_SQUARES#16 = NUM_SQUARES#7 
Alias heap_head#15 = heap_head#2 
Alias init_squares::sqr#2 = init_squares::sqr#3 
Alias init_squares::squares#2 = init_squares::squares#3 
Alias init_squares::i#2 = init_squares::i#3 
Alias NUM_SQUARES#15 = NUM_SQUARES#8 
Alias heap_head#16 = heap_head#32 heap_head#26 heap_head#3 
Alias SQUARES#1 = SQUARES#28 SQUARES#19 SQUARES#9 
Alias sqr::return#0 = sqr::return#4 sqr::return#1 
Alias bsearch16u::return#3 = bsearch16u::return#5 
Alias SQUARES#11 = SQUARES#12 
Alias sqrt::return#0 = sqrt::sq#0 sqrt::return#3 sqrt::return#1 
Alias atan2_16::y#1 = atan2_16::y#2 atan2_16::$3 atan2_16::y#3 
Alias atan2_16::x#5 = atan2_16::x#9 atan2_16::x#6 
Alias atan2_16::$2 = atan2_16::$1 
Alias atan2_16::yi#0 = atan2_16::$4 atan2_16::yi#12 atan2_16::yi#13 
Alias atan2_16::x#1 = atan2_16::x#2 atan2_16::$8 atan2_16::x#3 
Alias atan2_16::y#12 = atan2_16::y#15 atan2_16::y#13 
Alias atan2_16::$7 = atan2_16::$6 
Alias atan2_16::xi#0 = atan2_16::$9 
Alias atan2_16::xi#3 = atan2_16::xi#6 atan2_16::xd#0 
Alias atan2_16::yi#3 = atan2_16::yi#4 atan2_16::yd#0 
Alias atan2_16::i#2 = atan2_16::i#6 atan2_16::shift#0 
Alias atan2_16::angle#12 = atan2_16::angle#19 
Alias atan2_16::x#17 = atan2_16::x#7 
Alias atan2_16::y#19 = atan2_16::y#7 
Alias atan2_16::xd#3 = atan2_16::xd#7 atan2_16::xd#8 atan2_16::xd#4 
Alias atan2_16::yd#3 = atan2_16::yd#7 atan2_16::yd#8 atan2_16::yd#4 
Alias atan2_16::shift#2 = atan2_16::shift#3 atan2_16::shift#4 
Alias atan2_16::yi#10 = atan2_16::yi#15 atan2_16::yi#14 atan2_16::yi#11 
Alias atan2_16::xi#10 = atan2_16::xi#12 atan2_16::xi#11 atan2_16::xi#9 
Alias atan2_16::i#10 = atan2_16::i#11 atan2_16::i#8 atan2_16::i#9 
Alias atan2_16::angle#16 = atan2_16::angle#20 atan2_16::angle#18 atan2_16::angle#17 
Alias atan2_16::x#14 = atan2_16::x#18 atan2_16::x#16 atan2_16::x#15 
Alias atan2_16::y#16 = atan2_16::y#20 atan2_16::y#18 atan2_16::y#17 
Alias atan2_16::xi#4 = atan2_16::xi#7 atan2_16::xi#5 
Alias atan2_16::yd#5 = atan2_16::yd#9 atan2_16::yd#6 
Alias atan2_16::yi#5 = atan2_16::yi#6 atan2_16::yi#7 
Alias atan2_16::xd#5 = atan2_16::xd#9 atan2_16::xd#6 
Alias atan2_16::i#3 = atan2_16::i#7 atan2_16::i#4 
Alias atan2_16::angle#14 = atan2_16::angle#7 atan2_16::angle#8 
Alias atan2_16::x#11 = atan2_16::x#13 atan2_16::x#12 
Alias atan2_16::y#10 = atan2_16::y#14 atan2_16::y#11 
Alias atan2_16::angle#1 = atan2_16::angle#9 
Alias atan2_16::y#5 = atan2_16::y#6 
Alias atan2_16::angle#4 = atan2_16::$12 
Alias atan2_16::return#0 = atan2_16::angle#10 atan2_16::return#3 atan2_16::return#1 
Alias atan2_16::angle#11 = atan2_16::angle#15 
Alias atan2_16::angle#5 = atan2_16::$15 
Alias print_char_cursor#0 = print_char_cursor#13 print_char_cursor#1 
Alias print_line_cursor#0 = print_screen#3 print_screen#2 print_char_cursor#2 print_line_cursor#9 print_char_cursor#14 print_line_cursor#1 print_char_cursor#3 
Alias SCREEN_ANGLE#13 = SCREEN_ANGLE#2 SCREEN_ANGLE#5 SCREEN_ANGLE#18 SCREEN_ANGLE#15 
Alias print_line_cursor#16 = print_line_cursor#21 print_line_cursor#27 
Alias print_char_cursor#23 = print_char_cursor#28 print_char_cursor#35 
Alias sin_offset_x#22 = sin_offset_x#31 sin_offset_x#32 sin_offset_x#29 sin_offset_x#25 
Alias sin_offset_y#22 = sin_offset_y#31 sin_offset_y#32 sin_offset_y#29 sin_offset_y#25 
Alias print_screen#11 = print_screen#13 print_screen#14 
Alias SCREEN_DIST#13 = SCREEN_DIST#20 SCREEN_DIST#2 SCREEN_DIST#18 SCREEN_DIST#15 
Alias NUM_SQUARES#0 = NUM_SQUARES#10 NUM_SQUARES#34 NUM_SQUARES#27 NUM_SQUARES#23 
Alias heap_head#17 = heap_head#4 heap_head#40 heap_head#36 heap_head#34 
Alias SQUARES#13 = SQUARES#2 SQUARES#44 SQUARES#37 SQUARES#30 
Alias print_line_cursor#10 = print_line_cursor#2 print_line_cursor#23 
Alias print_char_cursor#15 = print_char_cursor#4 print_char_cursor#30 
Alias sin_offset_x#10 = sin_offset_x#16 sin_offset_x#18 sin_offset_x#2 
Alias sin_offset_y#10 = sin_offset_y#16 sin_offset_y#18 sin_offset_y#2 
Alias SCREEN_ANGLE#10 = SCREEN_ANGLE#6 SCREEN_ANGLE#16 SCREEN_ANGLE#14 SCREEN_ANGLE#11 SCREEN_ANGLE#7 SCREEN_ANGLE#20 SCREEN_ANGLE#19 SCREEN_ANGLE#17 SCREEN_ANGLE#12 
Alias SCREEN_DIST#10 = SCREEN_DIST#6 SCREEN_DIST#9 SCREEN_DIST#16 SCREEN_DIST#14 SCREEN_DIST#7 SCREEN_DIST#21 SCREEN_DIST#19 SCREEN_DIST#17 SCREEN_DIST#12 
Alias NUM_SQUARES#1 = NUM_SQUARES#47 NUM_SQUARES#19 NUM_SQUARES#46 NUM_SQUARES#45 NUM_SQUARES#43 NUM_SQUARES#41 NUM_SQUARES#38 NUM_SQUARES#35 NUM_SQUARES#28 NUM_SQUARES#22 NUM_SQUARES#11 
Alias heap_head#18 = heap_head#56 heap_head#28 heap_head#55 heap_head#54 heap_head#52 heap_head#48 heap_head#44 heap_head#41 heap_head#37 heap_head#33 heap_head#5 
Alias SQUARES#14 = SQUARES#51 SQUARES#24 SQUARES#50 SQUARES#49 SQUARES#48 SQUARES#47 SQUARES#46 SQUARES#45 SQUARES#38 SQUARES#29 SQUARES#3 
Alias print_line_cursor#11 = print_line_cursor#49 print_line_cursor#17 print_line_cursor#47 print_line_cursor#44 print_line_cursor#41 print_line_cursor#39 print_line_cursor#36 print_line_cursor#33 print_line_cursor#28 print_line_cursor#22 print_line_cursor#3 
Alias print_char_cursor#16 = print_char_cursor#55 print_char_cursor#24 print_char_cursor#53 print_char_cursor#51 print_char_cursor#48 print_char_cursor#45 print_char_cursor#43 print_char_cursor#40 print_char_cursor#36 print_char_cursor#29 print_char_cursor#5 
Alias sin_offset_x#0 = sin_offset_x#8 sin_offset_x#26 sin_offset_x#23 sin_offset_x#17 
Alias sin_offset_y#0 = sin_offset_y#8 sin_offset_y#26 sin_offset_y#23 sin_offset_y#17 
Alias main::toD0181_screen#0 = main::toD0181_screen#1 
Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 
Alias main::toD0181_return#0 = main::toD0181_$6 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$5 
Alias sin_offset_x#1 = sin_offset_x#9 sin_offset_x#30 sin_offset_x#27 sin_offset_x#21 
Alias sin_offset_y#1 = sin_offset_y#9 sin_offset_y#30 sin_offset_y#27 sin_offset_y#21 
Alias main::toD0182_screen#0 = main::toD0182_screen#1 
Alias main::toD0182_gfx#0 = main::toD0182_gfx#1 
Alias main::toD0182_return#0 = main::toD0182_$6 main::toD0182_return#2 main::toD0182_return#1 main::toD0182_return#3 main::$7 
Alias doplasma::screen#3 = doplasma::screen#4 
Alias doplasma::angle#2 = doplasma::angle#3 
Alias doplasma::dist#2 = doplasma::dist#3 
Alias doplasma::y#2 = doplasma::y#3 
Alias sin_offset_x#12 = sin_offset_x#19 sin_offset_x#24 
Alias sin_offset_y#12 = sin_offset_y#19 sin_offset_y#24 
Alias doplasma::sin_x#1 = doplasma::sin_x#3 
Alias doplasma::sin_y#1 = doplasma::sin_y#3 
Alias sin_offset_x#13 = sin_offset_x#3 sin_offset_x#4 
Alias sin_offset_y#13 = sin_offset_y#3 sin_offset_y#4 
Alias init_angle_screen::x#2 = init_angle_screen::x#3 init_angle_screen::x#4 
Alias init_angle_screen::y#2 = init_angle_screen::y#4 init_angle_screen::y#6 init_angle_screen::y#3 
Alias init_angle_screen::screen_bottomline#2 = init_angle_screen::screen_bottomline#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#3 
Alias init_angle_screen::xb#2 = init_angle_screen::xb#3 init_angle_screen::xb#4 
Alias init_angle_screen::screen_topline#2 = init_angle_screen::screen_topline#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#3 
Alias atan2_16::return#2 = atan2_16::return#4 
Alias init_dist_screen::screen#1 = init_dist_screen::screen#2 init_dist_screen::screen_topline#0 
Alias NUM_SQUARES#2 = NUM_SQUARES#44 
Alias heap_head#19 = heap_head#6 
Alias SQUARES#15 = SQUARES#4 
Alias init_dist_screen::y2#0 = init_dist_screen::y2#1 init_dist_screen::y2#2 
Alias SQUARES#31 = SQUARES#39 SQUARES#32 
Alias init_dist_screen::screen_topline#11 = init_dist_screen::screen_topline#14 init_dist_screen::screen_topline#12 
Alias init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#14 init_dist_screen::screen_bottomline#12 
Alias init_dist_screen::y#10 = init_dist_screen::y#9 init_dist_screen::y#2 
Alias NUM_SQUARES#39 = NUM_SQUARES#42 NUM_SQUARES#40 
Alias heap_head#45 = heap_head#49 heap_head#46 
Alias init_dist_screen::$7 = init_dist_screen::$6 
Alias init_dist_screen::$5 = init_dist_screen::$4 
Alias init_dist_screen::yd#0 = init_dist_screen::$8 
Alias sqr::return#2 = sqr::return#5 
Alias init_dist_screen::screen_topline#6 = init_dist_screen::screen_topline#8 
Alias init_dist_screen::screen_bottomline#6 = init_dist_screen::screen_bottomline#8 
Alias init_dist_screen::y#5 = init_dist_screen::y#7 
Alias NUM_SQUARES#29 = NUM_SQUARES#36 
Alias heap_head#38 = heap_head#42 
Alias SQUARES#21 = SQUARES#40 
Alias init_dist_screen::x#2 = init_dist_screen::x#3 init_dist_screen::x#7 init_dist_screen::x#8 
Alias SQUARES#16 = SQUARES#42 SQUARES#33 SQUARES#26 SQUARES#34 SQUARES#35 SQUARES#5 
Alias init_dist_screen::yds#3 = init_dist_screen::yds#5 init_dist_screen::yds#6 init_dist_screen::yds#4 
Alias NUM_SQUARES#12 = NUM_SQUARES#37 NUM_SQUARES#24 NUM_SQUARES#20 NUM_SQUARES#31 NUM_SQUARES#32 NUM_SQUARES#3 
Alias init_dist_screen::screen_topline#10 = init_dist_screen::screen_topline#13 init_dist_screen::screen_topline#4 init_dist_screen::screen_topline#2 init_dist_screen::screen_topline#9 
Alias init_dist_screen::screen_bottomline#10 = init_dist_screen::screen_bottomline#13 init_dist_screen::screen_bottomline#4 init_dist_screen::screen_bottomline#2 init_dist_screen::screen_bottomline#9 
Alias init_dist_screen::xb#5 = init_dist_screen::xb#7 init_dist_screen::xb#8 init_dist_screen::xb#6 
Alias init_dist_screen::y#12 = init_dist_screen::y#14 init_dist_screen::y#4 init_dist_screen::y#3 init_dist_screen::y#13 
Alias heap_head#20 = heap_head#53 heap_head#35 heap_head#30 heap_head#50 heap_head#51 heap_head#7 
Alias init_dist_screen::x2#0 = init_dist_screen::x2#1 init_dist_screen::x2#2 
Alias init_dist_screen::$16 = init_dist_screen::$15 
Alias init_dist_screen::$14 = init_dist_screen::$13 
Alias init_dist_screen::xd#0 = init_dist_screen::$17 
Alias sqr::return#3 = sqr::return#6 
Alias init_dist_screen::yds#1 = init_dist_screen::yds#2 init_dist_screen::yds#7 
Alias SQUARES#20 = SQUARES#22 SQUARES#41 
Alias NUM_SQUARES#17 = NUM_SQUARES#25 NUM_SQUARES#30 
Alias init_dist_screen::screen_topline#3 = init_dist_screen::screen_topline#5 init_dist_screen::screen_topline#7 
Alias init_dist_screen::x#4 = init_dist_screen::x#5 init_dist_screen::x#6 
Alias init_dist_screen::screen_bottomline#3 = init_dist_screen::screen_bottomline#5 init_dist_screen::screen_bottomline#7 
Alias init_dist_screen::xb#2 = init_dist_screen::xb#3 init_dist_screen::xb#4 
Alias init_dist_screen::y#11 = init_dist_screen::y#8 init_dist_screen::y#6 
Alias heap_head#39 = heap_head#43 heap_head#47 
Alias sqrt::return#2 = sqrt::return#4 
Alias print_screen#5 = print_screen#7 print_screen#9 
Alias print_line_cursor#18 = print_line_cursor#24 print_line_cursor#29 
Alias print_char_cursor#25 = print_char_cursor#31 print_char_cursor#37 
Alias make_plasma_charset::charset#13 = make_plasma_charset::charset#17 make_plasma_charset::charset#19 make_plasma_charset::charset#14 
Alias print_line_cursor#12 = print_line_cursor#4 
Alias print_char_cursor#17 = print_char_cursor#6 
Alias make_plasma_charset::c#2 = make_plasma_charset::c#3 
Alias make_plasma_charset::charset#10 = make_plasma_charset::charset#8 
Alias print_char_cursor#19 = print_char_cursor#41 print_char_cursor#26 print_char_cursor#8 
Alias print_line_cursor#13 = print_line_cursor#37 print_line_cursor#19 print_line_cursor#5 
Alias make_plasma_charset::c#10 = make_plasma_charset::c#7 make_plasma_charset::c#4 make_plasma_charset::c#12 make_plasma_charset::c#9 
Alias make_plasma_charset::i#2 = make_plasma_charset::i#5 
Alias make_plasma_charset::charset#15 = make_plasma_charset::charset#3 make_plasma_charset::charset#5 make_plasma_charset::charset#16 make_plasma_charset::charset#18 
Alias make_plasma_charset::s#5 = make_plasma_charset::s#7 
Alias print_char_cursor#22 = print_char_cursor#46 print_char_cursor#38 print_char_cursor#33 
Alias print_line_cursor#30 = print_line_cursor#42 print_line_cursor#34 print_line_cursor#31 print_line_cursor#35 
Alias make_plasma_charset::s#1 = make_plasma_charset::s#3 make_plasma_charset::s#4 make_plasma_charset::s#2 make_plasma_charset::s#9 make_plasma_charset::s#8 
Alias make_plasma_charset::ii#2 = make_plasma_charset::ii#7 make_plasma_charset::ii#6 make_plasma_charset::ii#5 make_plasma_charset::ii#4 
Alias make_plasma_charset::b#2 = make_plasma_charset::b#8 make_plasma_charset::b#4 make_plasma_charset::b#7 make_plasma_charset::b#5 make_plasma_charset::b#3 
Alias make_plasma_charset::c#13 = make_plasma_charset::c#16 make_plasma_charset::c#8 make_plasma_charset::c#15 make_plasma_charset::c#5 make_plasma_charset::c#14 
Alias make_plasma_charset::i#10 = make_plasma_charset::i#4 make_plasma_charset::i#9 make_plasma_charset::i#7 make_plasma_charset::i#3 make_plasma_charset::i#8 
Alias make_plasma_charset::charset#1 = make_plasma_charset::charset#11 make_plasma_charset::charset#2 make_plasma_charset::charset#9 make_plasma_charset::charset#6 make_plasma_charset::charset#7 
Alias print_char_cursor#42 = print_char_cursor#54 print_char_cursor#44 print_char_cursor#52 print_char_cursor#49 print_char_cursor#50 
Alias print_line_cursor#38 = print_line_cursor#50 print_line_cursor#40 print_line_cursor#48 print_line_cursor#45 print_line_cursor#46 
Alias make_plasma_charset::sid_rnd1_return#0 = make_plasma_charset::sid_rnd1_return#2 make_plasma_charset::sid_rnd1_return#1 make_plasma_charset::sid_rnd1_return#3 make_plasma_charset::$6 
Alias print_char_cursor#18 = print_char_cursor#7 
Alias print_screen#0 = print_line_cursor#6 print_char_cursor#9 print_line_cursor#32 print_char_cursor#39 print_screen#12 print_line_cursor#26 print_char_cursor#34 print_screen#10 print_line_cursor#20 print_char_cursor#27 print_screen#8 print_screen#6 print_screen#4 print_screen#1 
Alias malloc::return#3 = malloc::return#7 
Alias NUM_SQUARES#21 = NUM_SQUARES#33 NUM_SQUARES#4 NUM_SQUARES#26 
Alias SQUARES#27 = SQUARES#43 SQUARES#6 SQUARES#36 
Alias heap_head#21 = heap_head#9 
Alias malloc::return#4 = malloc::return#8 
Alias SCREEN_DIST#0 = SCREEN_DIST#11 SCREEN_DIST#5 SCREEN_DIST#8 SCREEN_DIST#4 SCREEN_DIST#1 
Alias heap_head#10 = heap_head#22 heap_head#31 
Alias sin_offset_x#20 = sin_offset_x#5 
Alias sin_offset_y#20 = sin_offset_y#5 
Alias SCREEN_ANGLE#0 = SCREEN_ANGLE#9 SCREEN_ANGLE#8 SCREEN_ANGLE#4 SCREEN_ANGLE#1 
Alias NUM_SQUARES#13 = NUM_SQUARES#5 NUM_SQUARES#14 NUM_SQUARES#6 
Alias heap_head#11 = heap_head#23 heap_head#24 heap_head#12 
Alias SQUARES#17 = SQUARES#7 SQUARES#18 SQUARES#8 
Alias print_line_cursor#14 = print_line_cursor#7 print_line_cursor#15 print_line_cursor#8 
Alias print_char_cursor#10 = print_char_cursor#20 print_char_cursor#21 print_char_cursor#11 
Alias sin_offset_x#14 = sin_offset_x#6 sin_offset_x#15 sin_offset_x#7 
Alias sin_offset_y#14 = sin_offset_y#6 sin_offset_y#15 sin_offset_y#7 
Successful SSA optimization Pass2AliasElimination
Alias bsearch16u::key#1 = bsearch16u::key#5 
Alias atan2_16::x#1 = atan2_16::x#5 atan2_16::x#10 
Alias atan2_16::y#1 = atan2_16::y#12 atan2_16::y#9 
Alias atan2_16::yi#0 = atan2_16::yi#9 
Alias atan2_16::yi#10 = atan2_16::yi#5 
Alias atan2_16::xi#10 = atan2_16::xi#4 
Alias atan2_16::i#10 = atan2_16::i#3 atan2_16::i#5 
Alias atan2_16::angle#14 = atan2_16::angle#16 
Alias atan2_16::x#11 = atan2_16::x#14 atan2_16::x#8 
Alias atan2_16::y#10 = atan2_16::y#16 atan2_16::y#8 
Alias atan2_16::y#4 = atan2_16::y#5 
Alias SQUARES#21 = SQUARES#31 
Alias init_dist_screen::screen_topline#11 = init_dist_screen::screen_topline#6 
Alias init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#6 
Alias init_dist_screen::y#10 = init_dist_screen::y#5 
Alias NUM_SQUARES#29 = NUM_SQUARES#39 
Alias heap_head#38 = heap_head#45 
Alias SQUARES#16 = SQUARES#20 
Alias init_dist_screen::yds#1 = init_dist_screen::yds#3 
Alias NUM_SQUARES#12 = NUM_SQUARES#17 
Alias init_dist_screen::screen_topline#10 = init_dist_screen::screen_topline#3 
Alias init_dist_screen::x#2 = init_dist_screen::x#4 
Alias init_dist_screen::screen_bottomline#10 = init_dist_screen::screen_bottomline#3 
Alias init_dist_screen::xb#2 = init_dist_screen::xb#5 
Alias init_dist_screen::y#11 = init_dist_screen::y#12 
Alias heap_head#20 = heap_head#39 
Alias make_plasma_charset::ii#2 = make_plasma_charset::ii#3 
Alias make_plasma_charset::c#11 = make_plasma_charset::c#13 
Alias make_plasma_charset::i#10 = make_plasma_charset::i#6 
Alias make_plasma_charset::charset#1 = make_plasma_charset::charset#4 
Alias make_plasma_charset::s#1 = make_plasma_charset::s#6 
Alias print_char_cursor#42 = print_char_cursor#47 
Alias print_line_cursor#38 = print_line_cursor#43 
Alias make_plasma_charset::c#10 = make_plasma_charset::c#6 
Alias print_line_cursor#25 = print_line_cursor#30 
Alias make_plasma_charset::charset#12 = make_plasma_charset::charset#15 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values memset::end#1 memset::end#0
Identical Phi Values memset::str#5 memset::str#3
Identical Phi Values memset::c#2 memset::c#4
Identical Phi Values bsearch16u::num#7 bsearch16u::num#2
Identical Phi Values bsearch16u::items#7 bsearch16u::items#1
Identical Phi Values bsearch16u::key#4 bsearch16u::key#0
Identical Phi Values bsearch16u::key#1 bsearch16u::key#4
Identical Phi Values NUM_SQUARES#16 NUM_SQUARES#2
Identical Phi Values heap_head#25 heap_head#29
Identical Phi Values heap_head#15 heap_head#0
Identical Phi Values NUM_SQUARES#15 NUM_SQUARES#16
Identical Phi Values heap_head#16 heap_head#15
Identical Phi Values SQUARES#1 SQUARES#0
Identical Phi Values sqrt::val#1 sqrt::val#0
Identical Phi Values SQUARES#11 SQUARES#16
Identical Phi Values NUM_SQUARES#9 NUM_SQUARES#12
Identical Phi Values atan2_16::y#1 atan2_16::y#0
Identical Phi Values atan2_16::x#1 atan2_16::x#0
Identical Phi Values atan2_16::yi#10 atan2_16::yi#3
Identical Phi Values atan2_16::xi#10 atan2_16::xi#3
Identical Phi Values atan2_16::i#10 atan2_16::i#2
Identical Phi Values atan2_16::angle#14 atan2_16::angle#12
Identical Phi Values atan2_16::x#11 atan2_16::x#17
Identical Phi Values atan2_16::y#10 atan2_16::y#19
Identical Phi Values print_char::ch#1 print_char::ch#0
Identical Phi Values print_char_cursor#12 print_char_cursor#22
Identical Phi Values print_line_cursor#0 print_screen#5
Identical Phi Values SCREEN_DIST#13 SCREEN_DIST#0
Identical Phi Values NUM_SQUARES#18 NUM_SQUARES#21
Identical Phi Values heap_head#27 heap_head#10
Identical Phi Values SQUARES#23 SQUARES#27
Identical Phi Values SCREEN_ANGLE#13 SCREEN_ANGLE#0
Identical Phi Values print_line_cursor#16 print_screen#0
Identical Phi Values print_char_cursor#23 print_screen#0
Identical Phi Values sin_offset_x#22 sin_offset_x#20
Identical Phi Values sin_offset_y#22 sin_offset_y#20
Identical Phi Values print_screen#11 print_screen#0
Identical Phi Values NUM_SQUARES#0 NUM_SQUARES#12
Identical Phi Values heap_head#17 heap_head#20
Identical Phi Values SQUARES#13 SQUARES#16
Identical Phi Values print_line_cursor#10 print_line_cursor#13
Identical Phi Values print_char_cursor#15 print_char_cursor#19
Identical Phi Values NUM_SQUARES#1 NUM_SQUARES#0
Identical Phi Values heap_head#18 heap_head#17
Identical Phi Values SQUARES#14 SQUARES#13
Identical Phi Values print_line_cursor#11 print_line_cursor#10
Identical Phi Values print_char_cursor#16 print_char_cursor#15
Identical Phi Values SCREEN_ANGLE#10 SCREEN_ANGLE#13
Identical Phi Values SCREEN_DIST#10 SCREEN_DIST#13
Identical Phi Values sin_offset_x#0 sin_offset_x#13
Identical Phi Values sin_offset_y#0 sin_offset_y#13
Identical Phi Values sin_offset_x#1 sin_offset_x#13
Identical Phi Values sin_offset_y#1 sin_offset_y#13
Identical Phi Values SCREEN_ANGLE#3 SCREEN_ANGLE#10
Identical Phi Values SCREEN_DIST#3 SCREEN_DIST#10
Identical Phi Values doplasma::sin_x#1 doplasma::sin_x#2
Identical Phi Values doplasma::angle#2 doplasma::angle#4
Identical Phi Values doplasma::sin_y#1 doplasma::sin_y#2
Identical Phi Values doplasma::dist#2 doplasma::dist#4
Identical Phi Values doplasma::screen#3 doplasma::screen#5
Identical Phi Values doplasma::y#2 doplasma::y#4
Identical Phi Values sin_offset_x#12 sin_offset_x#28
Identical Phi Values sin_offset_y#12 sin_offset_y#28
Identical Phi Values init_angle_screen::screen#1 init_angle_screen::screen#0
Identical Phi Values init_angle_screen::y#2 init_angle_screen::y#5
Identical Phi Values init_angle_screen::screen_topline#2 init_angle_screen::screen_topline#6
Identical Phi Values init_angle_screen::screen_bottomline#2 init_angle_screen::screen_bottomline#6
Identical Phi Values heap_head#29 heap_head#27
Identical Phi Values SQUARES#25 SQUARES#23
Identical Phi Values init_dist_screen::screen#1 init_dist_screen::screen#0
Identical Phi Values heap_head#19 heap_head#16
Identical Phi Values SQUARES#15 SQUARES#1
Identical Phi Values init_dist_screen::screen_topline#10 init_dist_screen::screen_topline#11
Identical Phi Values init_dist_screen::screen_bottomline#10 init_dist_screen::screen_bottomline#11
Identical Phi Values init_dist_screen::y#11 init_dist_screen::y#10
Identical Phi Values NUM_SQUARES#12 NUM_SQUARES#29
Identical Phi Values heap_head#20 heap_head#38
Identical Phi Values SQUARES#16 SQUARES#21
Identical Phi Values init_dist_screen::yds#1 init_dist_screen::yds#0
Identical Phi Values print_screen#5 print_screen#11
Identical Phi Values print_line_cursor#18 print_line_cursor#16
Identical Phi Values print_char_cursor#25 print_char_cursor#23
Identical Phi Values make_plasma_charset::charset#13 make_plasma_charset::charset#0
Identical Phi Values print_line_cursor#12 print_line_cursor#0
Identical Phi Values print_char_cursor#17 print_line_cursor#0
Identical Phi Values make_plasma_charset::c#11 make_plasma_charset::c#10
Identical Phi Values make_plasma_charset::i#10 make_plasma_charset::i#2
Identical Phi Values make_plasma_charset::charset#1 make_plasma_charset::charset#12
Identical Phi Values make_plasma_charset::s#1 make_plasma_charset::s#5
Identical Phi Values print_char_cursor#42 print_char_cursor#22
Identical Phi Values print_line_cursor#38 print_line_cursor#25
Identical Phi Values print_char_cursor#18 print_char_cursor#0
Identical Phi Values heap_head#21 heap_head#0
Identical Phi Values heap_head#10 heap_head#0
Identical Phi Values NUM_SQUARES#13 NUM_SQUARES#1
Identical Phi Values heap_head#11 heap_head#18
Identical Phi Values SQUARES#17 SQUARES#14
Identical Phi Values print_line_cursor#14 print_line_cursor#11
Identical Phi Values print_char_cursor#10 print_char_cursor#16
Identical Phi Values sin_offset_x#14 sin_offset_x#10
Identical Phi Values sin_offset_y#14 sin_offset_y#10
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values memset::return#0 memset::str#3
Identical Phi Values SQUARES#10 SQUARES#21
Identical Phi Values atan2_16::x#17 atan2_16::x#0
Identical Phi Values atan2_16::y#19 atan2_16::y#0
Identical Phi Values atan2_16::x#4 atan2_16::x#17
Identical Phi Values atan2_16::y#4 atan2_16::y#19
Identical Phi Values doplasma::sin_x#2 doplasma::sin_x#0
Identical Phi Values doplasma::sin_y#2 doplasma::sin_y#0
Identical Phi Values sin_offset_x#28 sin_offset_x#11
Identical Phi Values sin_offset_y#28 sin_offset_y#11
Identical Phi Values SQUARES#21 SQUARES#0
Identical Phi Values NUM_SQUARES#29 NUM_SQUARES#2
Identical Phi Values heap_head#38 heap_head#0
Identical Phi Values make_plasma_charset::c#10 make_plasma_charset::c#2
Identical Phi Values make_plasma_charset::charset#12 make_plasma_charset::charset#10
Identical Phi Values print_char_cursor#22 print_char_cursor#19
Identical Phi Values print_line_cursor#25 print_line_cursor#13
Identical Phi Values make_plasma_charset::s#5 make_plasma_charset::s#0
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values print_line_cursor#13 print_screen#0
Identical Phi Values make_plasma_charset::charset#10 make_plasma_charset::charset#0
Successful SSA optimization Pass2IdenticalPhiElimination
Identified duplicate assignment right side [321] init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#0 + (unsigned int)$28*$c
Successful SSA optimization Pass2DuplicateRValueIdentification
Simple Condition memset::$1 [2] if(memset::num#2<=0) goto memset::@1
Simple Condition memset::$3 [9] if(memset::dst#2!=memset::end#0) goto memset::@4
Simple Condition bsearch16u::$5 [21] if(bsearch16u::num#3>0) goto bsearch16u::@5
Simple Condition bsearch16u::$10 [29] if(bsearch16u::result#0!=0) goto bsearch16u::@7
Simple Condition bsearch16u::$0 [31] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@1
Simple Condition bsearch16u::$12 [33] if(bsearch16u::result#0<=0) goto bsearch16u::@8
Simple Condition init_squares::$2 [56] if(init_squares::i#2<NUM_SQUARES#2) goto init_squares::@2
Simple Condition atan2_16::$0 [81] if(atan2_16::y#0>=0) goto atan2_16::@1
Simple Condition atan2_16::$5 [85] if(atan2_16::x#0>=0) goto atan2_16::@4
Simple Condition atan2_16::$17 [92] if(atan2_16::yi#3!=0) goto atan2_16::@11
Simple Condition atan2_16::$11 [96] if(atan2_16::x#0>=0) goto atan2_16::@7
Simple Condition atan2_16::$18 [99] if(atan2_16::shift#2>=2) goto atan2_16::@14
Simple Condition atan2_16::$19 [104] if(0==atan2_16::shift#2) goto atan2_16::@17
Simple Condition atan2_16::$20 [107] if(atan2_16::yi#3>=0) goto atan2_16::@18
Simple Condition atan2_16::$21 [121] if(atan2_16::i#1!=rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@10
Simple Condition atan2_16::$14 [124] if(atan2_16::y#0>=0) goto atan2_16::@8
Simple Condition doplasma::$3 [198] if(doplasma::x#1!=rangelast(0,$27)) goto doplasma::@2
Simple Condition doplasma::$4 [204] if(doplasma::y#1!=rangelast(0,$19)) goto doplasma::@1
Simple Condition init_angle_screen::$2 [217] if(init_angle_screen::x#2<=$13) goto init_angle_screen::@3
Simple Condition init_angle_screen::$14 [245] if(init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1
Simple Condition init_dist_screen::$3 [256] if(init_dist_screen::y2#0>=$18) goto init_dist_screen::@2
Simple Condition init_dist_screen::$10 [268] if(init_dist_screen::x#2<=$13) goto init_dist_screen::@6
Simple Condition init_dist_screen::$12 [271] if(init_dist_screen::x2#0>=$27) goto init_dist_screen::@8
Simple Condition init_dist_screen::$21 [276] if(init_dist_screen::y#1!=rangelast(0,$c)) goto init_dist_screen::@1
Simple Condition make_plasma_charset::$2 [304] if(make_plasma_charset::c#2<$100) goto make_plasma_charset::@2
Simple Condition make_plasma_charset::$4 [310] if(make_plasma_charset::i#2<8) goto make_plasma_charset::@4
Simple Condition make_plasma_charset::$14 [315] if(make_plasma_charset::$12!=0) goto make_plasma_charset::@11
Simple Condition make_plasma_charset::$5 [318] if(make_plasma_charset::ii#2<8) goto make_plasma_charset::sid_rnd1
Simple Condition make_plasma_charset::$9 [322] if(make_plasma_charset::$7<=make_plasma_charset::s#0) goto make_plasma_charset::@8
Successful SSA optimization Pass2ConditionalJumpSimplification
Negating conditional jump and destination [121] if(atan2_16::i#1==rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@12
Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
Constant right-side identified [38] bsearch16u::$15 = 1 * SIZEOF_UNSIGNED_INT
Constant right-side identified [41] bsearch16u::$16 = 1 * SIZEOF_UNSIGNED_INT
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant bsearch16u::$15 = 1*SIZEOF_UNSIGNED_INT
Constant bsearch16u::$16 = 1*SIZEOF_UNSIGNED_INT
Constant init_squares::sqr#0 = 0
Constant init_squares::i#0 = 0
Constant atan2_16::angle#0 = 0
Constant atan2_16::i#0 = 0
Constant memset::c#0 = ' '
Constant memset::num#0 = $3e8
Constant make_plasma_charset::charset#0 = CHARSET
Constant memset::str#1 = (void *)COLS
Constant memset::c#1 = BLACK
Constant memset::num#1 = $3e8
Constant doplasma::screen#0 = SCREEN1
Constant main::toD0181_screen#0 = SCREEN1
Constant main::toD0181_gfx#0 = CHARSET
Constant doplasma::screen#1 = SCREEN2
Constant main::toD0182_screen#0 = SCREEN2
Constant main::toD0182_gfx#0 = CHARSET
Constant doplasma::y#0 = 0
Constant doplasma::x#0 = 0
Constant init_angle_screen::y#0 = 0
Constant init_angle_screen::x#0 = 0
Constant init_angle_screen::xb#0 = $27
Constant NUM_SQUARES#2 = $30
Constant init_dist_screen::y#0 = 0
Constant init_dist_screen::x#0 = 0
Constant init_dist_screen::xb#0 = $27
Constant make_plasma_charset::c#0 = 0
Constant make_plasma_charset::i#0 = 0
Constant make_plasma_charset::b#0 = 0
Constant make_plasma_charset::ii#0 = 0
Constant print_char::ch#0 = '.'
Constant heap_head#8 = HEAP_TOP
Constant NUM_SQUARES#21 = $ff
Constant SQUARES#27 = (unsigned int *) 0
Constant print_screen#0 = (char *) 1024
Constant malloc::size#1 = $3e8
Constant malloc::size#2 = $3e8
Constant sin_offset_x#20 = 0
Constant sin_offset_y#20 = 0
Successful SSA optimization Pass2ConstantIdentification
Constant bsearch16u::num#2 = NUM_SQUARES#2
Constant memset::str#0 = (void *)print_screen#0
Constant main::toD0181_$7 = (unsigned int)main::toD0181_screen#0
Constant main::toD0182_$7 = (unsigned int)main::toD0182_screen#0
Successful SSA optimization Pass2ConstantIdentification
Constant value identified (unsigned int)main::toD0181_gfx#0 in [165] main::toD0181_$3 = byte1  (unsigned int)main::toD0181_gfx#0
Constant value identified (unsigned int)main::toD0182_gfx#0 in [179] main::toD0182_$3 = byte1  (unsigned int)main::toD0182_gfx#0
Successful SSA optimization Pass2ConstantValues
if() condition always true - replacing block destination [155] if(true) goto main::@2
Successful SSA optimization Pass2ConstantIfs
Resolved ranged next value [119] atan2_16::i#1 = ++ atan2_16::i#2 to ++
Resolved ranged comparison value [121] if(atan2_16::i#1==rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@12 to CORDIC_ITERATIONS_16-1+1
Resolved ranged next value [196] doplasma::x#1 = ++ doplasma::x#2 to ++
Resolved ranged comparison value [198] if(doplasma::x#1!=rangelast(0,$27)) goto doplasma::@2 to $28
Resolved ranged next value [202] doplasma::y#1 = ++ doplasma::y#4 to ++
Resolved ranged comparison value [204] if(doplasma::y#1!=rangelast(0,$19)) goto doplasma::@1 to $1a
Resolved ranged next value [243] init_angle_screen::y#1 = ++ init_angle_screen::y#5 to ++
Resolved ranged comparison value [245] if(init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1 to $d
Resolved ranged next value [274] init_dist_screen::y#1 = ++ init_dist_screen::y#10 to ++
Resolved ranged comparison value [276] if(init_dist_screen::y#1!=rangelast(0,$c)) goto init_dist_screen::@1 to $d
Rewriting conditional comparison [217] if(init_angle_screen::x#2<=$13) goto init_angle_screen::@3
Rewriting conditional comparison [268] if(init_dist_screen::x#2<=$13) goto init_dist_screen::@6
De-inlining pointer[w] to *(pointer+w)   [325] make_plasma_charset::charset#0[make_plasma_charset::$11] = make_plasma_charset::b#2
Successful SSA optimization Pass2DeInlineWordDerefIdx
Removing unused block main::@return
Successful SSA optimization Pass2EliminateUnusedBlocks
Eliminating unused variable memset::return#2 and assignment [104] memset::return#2 = memset::str#3
Eliminating unused variable memset::return#3 and assignment [112] memset::return#3 = memset::str#3
Eliminating unused constant NUM_SQUARES#21
Eliminating unused constant SQUARES#27
Successful SSA optimization PassNEliminateUnusedVars
Adding number conversion cast (unumber) CORDIC_ITERATIONS_16-1+1 in if(atan2_16::i#1==CORDIC_ITERATIONS_16-1+1) goto atan2_16::@12
Adding number conversion cast (unumber) 1 in if(atan2_16::i#1==(unumber)CORDIC_ITERATIONS_16-1+1) goto atan2_16::@12
Adding number conversion cast (unumber) $28 in if(doplasma::x#1!=$28) goto doplasma::@2
Adding number conversion cast (unumber) $1a in if(doplasma::y#1!=$1a) goto doplasma::@1
Adding number conversion cast (unumber) $13+1 in if(init_angle_screen::x#2<$13+1) goto init_angle_screen::@3
Adding number conversion cast (unumber) 1 in if(init_angle_screen::x#2<(unumber)$13+1) goto init_angle_screen::@3
Adding number conversion cast (unumber) $d in if(init_angle_screen::y#1!=$d) goto init_angle_screen::@1
Adding number conversion cast (unumber) $13+1 in if(init_dist_screen::x#2<$13+1) goto init_dist_screen::@6
Adding number conversion cast (unumber) 1 in if(init_dist_screen::x#2<(unumber)$13+1) goto init_dist_screen::@6
Adding number conversion cast (unumber) $d in if(init_dist_screen::y#1!=$d) goto init_dist_screen::@1
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast CORDIC_ITERATIONS_16-1+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast $28
Simplifying constant integer cast $1a
Simplifying constant integer cast $13+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast $d
Simplifying constant integer cast $13+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast $d
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $1a
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) $d
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) $d
Successful SSA optimization PassNFinalizeNumberTypeConversions
Alias init_angle_screen::screen_bottomline#0 = init_angle_screen::screen_topline#0 
Successful SSA optimization Pass2AliasElimination
Constant right-side identified [34] malloc::size#0 = NUM_SQUARES#2 * SIZEOF_UNSIGNED_INT
Constant right-side identified [113] main::toD0181_$0 = main::toD0181_$7 & $3fff
Constant right-side identified [116] main::toD0181_$3 = byte1  (unsigned int)main::toD0181_gfx#0
Constant right-side identified [122] main::toD0182_$0 = main::toD0182_$7 & $3fff
Constant right-side identified [125] main::toD0182_$3 = byte1  (unsigned int)main::toD0182_gfx#0
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant malloc::size#0 = NUM_SQUARES#2*SIZEOF_UNSIGNED_INT
Constant main::toD0181_$0 = main::toD0181_$7&$3fff
Constant main::toD0181_$3 = byte1 (unsigned int)main::toD0181_gfx#0
Constant main::toD0182_$0 = main::toD0182_$7&$3fff
Constant main::toD0182_$3 = byte1 (unsigned int)main::toD0182_gfx#0
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [112] main::toD0181_$1 = main::toD0181_$0 * 4
Constant right-side identified [114] main::toD0181_$4 = main::toD0181_$3 / 4
Constant right-side identified [119] main::toD0182_$1 = main::toD0182_$0 * 4
Constant right-side identified [121] main::toD0182_$4 = main::toD0182_$3 / 4
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant main::toD0181_$1 = main::toD0181_$0*4
Constant main::toD0181_$4 = main::toD0181_$3/4
Constant main::toD0182_$1 = main::toD0182_$0*4
Constant main::toD0182_$4 = main::toD0182_$3/4
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [112] main::toD0181_$2 = byte1  main::toD0181_$1
Constant right-side identified [113] main::toD0181_$5 = main::toD0181_$4 & $f
Constant right-side identified [117] main::toD0182_$2 = byte1  main::toD0182_$1
Constant right-side identified [118] main::toD0182_$5 = main::toD0182_$4 & $f
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant main::toD0181_$2 = byte1 main::toD0181_$1
Constant main::toD0181_$5 = main::toD0181_$4&$f
Constant main::toD0182_$2 = byte1 main::toD0182_$1
Constant main::toD0182_$5 = main::toD0182_$4&$f
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [112] main::toD0181_return#0 = main::toD0181_$2 | main::toD0181_$5
Constant right-side identified [115] main::toD0182_return#0 = main::toD0182_$2 | main::toD0182_$5
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant main::toD0181_return#0 = main::toD0181_$2|main::toD0181_$5
Constant main::toD0182_return#0 = main::toD0182_$2|main::toD0182_$5
Successful SSA optimization Pass2ConstantIdentification
Inlining Noop Cast [2] memset::$4 = (char *)memset::str#3 keeping memset::str#3
Inlining Noop Cast [4] memset::dst#0 = (char *)memset::str#3 keeping memset::str#3
Inlining Noop Cast [13] malloc::return#0 = (void *)malloc::mem#0 keeping malloc::mem#0
Inlining Noop Cast [20] bsearch16u::$17 = (int)bsearch16u::key#0 keeping bsearch16u::key#0
Inlining Noop Cast [21] bsearch16u::$18 = (int)*bsearch16u::pivot#0 keeping *bsearch16u::pivot#0
Successful SSA optimization Pass2NopCastInlining
Inlining Noop Cast [35] malloc::return#2 = (void *)malloc::mem#0 keeping malloc::mem#0
Inlining Noop Cast [234] malloc::return#3 = (void *)malloc::mem#0 keeping malloc::mem#0
Inlining Noop Cast [237] malloc::return#4 = (void *)malloc::mem#0 keeping malloc::mem#0
Successful SSA optimization Pass2NopCastInlining
Inlining Noop Cast [37] SQUARES#0 = (unsigned int *)init_squares::$1 keeping SQUARES#0
Inlining Noop Cast [141] init_angle_screen::xw#0 = (int)init_angle_screen::$5 keeping init_angle_screen::xw#0
Inlining Noop Cast [144] init_angle_screen::yw#0 = (int)init_angle_screen::$7 keeping init_angle_screen::yw#0
Successful SSA optimization Pass2NopCastInlining
Rewriting multiplication to use shift [18] bsearch16u::$14 = bsearch16u::$6 * SIZEOF_UNSIGNED_INT
Rewriting multiplication to use shift [43] init_squares::$3 = init_squares::i#2 * 2
Rewriting multiplication to use shift [49] sqr::$0 = sqr::val#2 * SIZEOF_UNSIGNED_INT
Rewriting division to use shift [58] sqrt::$1 = sqrt::$2 / SIZEOF_UNSIGNED_INT
Rewriting division to use shift [70] atan2_16::angle#1 = atan2_16::angle#6 / 2
Rewriting multiplication to use shift [84] atan2_16::$22 = atan2_16::i#2 * SIZEOF_UNSIGNED_INT
Rewriting multiplication to use shift [88] atan2_16::$23 = atan2_16::i#2 * SIZEOF_UNSIGNED_INT
Rewriting multiplication to use shift [138] init_angle_screen::$3 = init_angle_screen::x#2 * 2
Rewriting multiplication to use shift [142] init_angle_screen::$6 = init_angle_screen::y#5 * 2
Rewriting multiplication to use shift [169] init_dist_screen::y2#0 = init_dist_screen::y#10 * 2
Rewriting multiplication to use shift [180] init_dist_screen::x2#0 = init_dist_screen::x#2 * 2
Rewriting multiplication to use shift [221] make_plasma_charset::$10 = make_plasma_charset::c#2 * 8
Successful SSA optimization Pass2MultiplyToShiftRewriting
Inlining constant with var siblings memset::c#0
Inlining constant with var siblings memset::num#0
Inlining constant with var siblings memset::str#1
Inlining constant with var siblings memset::c#1
Inlining constant with var siblings memset::num#1
Inlining constant with var siblings memset::str#0
Inlining constant with var siblings malloc::size#1
Inlining constant with var siblings malloc::size#2
Inlining constant with var siblings malloc::size#0
Inlining constant with var siblings bsearch16u::num#2
Inlining constant with var siblings init_squares::sqr#0
Inlining constant with var siblings init_squares::i#0
Inlining constant with var siblings atan2_16::angle#0
Inlining constant with var siblings atan2_16::i#0
Inlining constant with var siblings doplasma::screen#0
Inlining constant with var siblings doplasma::screen#1
Inlining constant with var siblings doplasma::y#0
Inlining constant with var siblings doplasma::x#0
Inlining constant with var siblings init_angle_screen::y#0
Inlining constant with var siblings init_angle_screen::x#0
Inlining constant with var siblings init_angle_screen::xb#0
Inlining constant with var siblings init_dist_screen::y#0
Inlining constant with var siblings init_dist_screen::x#0
Inlining constant with var siblings init_dist_screen::xb#0
Inlining constant with var siblings make_plasma_charset::c#0
Inlining constant with var siblings make_plasma_charset::i#0
Inlining constant with var siblings make_plasma_charset::b#0
Inlining constant with var siblings make_plasma_charset::ii#0
Inlining constant with var siblings heap_head#8
Inlining constant with var siblings sin_offset_x#20
Inlining constant with var siblings sin_offset_y#20
Constant inlined main::toD0182_$4 = byte1 (unsigned int)CHARSET/4
Constant inlined init_angle_screen::y#0 = 0
Constant inlined main::toD0182_$5 = byte1 (unsigned int)CHARSET/4&$f
Constant inlined memset::num#1 = $3e8
Constant inlined main::toD0182_$7 = (unsigned int)SCREEN2
Constant inlined memset::num#0 = $3e8
Constant inlined main::toD0182_$0 = (unsigned int)SCREEN2&$3fff
Constant inlined atan2_16::angle#0 = 0
Constant inlined main::toD0182_$1 = (unsigned int)SCREEN2&$3fff*4
Constant inlined main::toD0182_$2 = byte1 (unsigned int)SCREEN2&$3fff*4
Constant inlined main::toD0182_$3 = byte1 (unsigned int)CHARSET
Constant inlined init_dist_screen::x#0 = 0
Constant inlined doplasma::x#0 = 0
Constant inlined sin_offset_y#20 = 0
Constant inlined make_plasma_charset::ii#0 = 0
Constant inlined main::toD0181_$7 = (unsigned int)SCREEN1
Constant inlined bsearch16u::num#2 = NUM_SQUARES#2
Constant inlined main::toD0182_gfx#0 = CHARSET
Constant inlined init_angle_screen::xb#0 = $27
Constant inlined main::toD0181_$2 = byte1 (unsigned int)SCREEN1&$3fff*4
Constant inlined main::toD0181_$1 = (unsigned int)SCREEN1&$3fff*4
Constant inlined main::toD0181_$0 = (unsigned int)SCREEN1&$3fff
Constant inlined main::toD0181_$5 = byte1 (unsigned int)CHARSET/4&$f
Constant inlined main::toD0181_$4 = byte1 (unsigned int)CHARSET/4
Constant inlined main::toD0181_$3 = byte1 (unsigned int)CHARSET
Constant inlined doplasma::screen#0 = SCREEN1
Constant inlined init_squares::i#0 = 0
Constant inlined doplasma::screen#1 = SCREEN2
Constant inlined make_plasma_charset::b#0 = 0
Constant inlined memset::c#0 = ' '
Constant inlined memset::c#1 = BLACK
Constant inlined sin_offset_x#20 = 0
Constant inlined make_plasma_charset::charset#0 = CHARSET
Constant inlined main::toD0181_screen#0 = SCREEN1
Constant inlined main::toD0181_gfx#0 = CHARSET
Constant inlined init_squares::sqr#0 = 0
Constant inlined init_angle_screen::x#0 = 0
Constant inlined init_dist_screen::y#0 = 0
Constant inlined init_dist_screen::xb#0 = $27
Constant inlined doplasma::y#0 = 0
Constant inlined memset::str#1 = (void *)COLS
Constant inlined memset::str#0 = (void *)print_screen#0
Constant inlined malloc::size#2 = $3e8
Constant inlined make_plasma_charset::i#0 = 0
Constant inlined make_plasma_charset::c#0 = 0
Constant inlined bsearch16u::$15 = 1*SIZEOF_UNSIGNED_INT
Constant inlined atan2_16::i#0 = 0
Constant inlined bsearch16u::$16 = 1*SIZEOF_UNSIGNED_INT
Constant inlined malloc::size#1 = $3e8
Constant inlined malloc::size#0 = NUM_SQUARES#2*SIZEOF_UNSIGNED_INT
Constant inlined heap_head#8 = HEAP_TOP
Constant inlined main::toD0182_screen#0 = SCREEN2
Successful SSA optimization Pass2ConstantInlining
Identical Phi Values memset::num#2 $3e8
Successful SSA optimization Pass2IdenticalPhiElimination
if() condition always false - eliminating [1] if($3e8<=0) goto memset::@1
Successful SSA optimization Pass2ConstantIfs
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 (unsigned int) $200
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $c
Finalized unsigned number type (char) $28
Finalized unsigned number type (char) $18
Successful SSA optimization PassNFinalizeNumberTypeConversions
Added new block during phi lifting bsearch16u::@11(between bsearch16u::@7 and bsearch16u::@8)
Added new block during phi lifting atan2_16::@22(between atan2_16::@19 and atan2_16::@10)
Added new block during phi lifting atan2_16::@23(between atan2_16::@10 and atan2_16::@12)
Added new block during phi lifting atan2_16::@24(between atan2_16::@19 and atan2_16::@12)
Added new block during phi lifting atan2_16::@25(between atan2_16::@15 and atan2_16::@17)
Added new block during phi lifting atan2_16::@26(between atan2_16::@12 and atan2_16::@7)
Added new block during phi lifting atan2_16::@27(between atan2_16::@7 and atan2_16::@8)
Added new block during phi lifting doplasma::@5(between doplasma::@3 and doplasma::@1)
Added new block during phi lifting doplasma::@6(between doplasma::@2 and doplasma::@2)
Added new block during phi lifting init_angle_screen::@6(between init_angle_screen::@4 and init_angle_screen::@1)
Added new block during phi lifting init_dist_screen::@15(between init_dist_screen::@7 and init_dist_screen::@1)
Added new block during phi lifting make_plasma_charset::@16(between make_plasma_charset::@13 and make_plasma_charset::@8)
Added new block during phi lifting make_plasma_charset::@17(between make_plasma_charset::@5 and make_plasma_charset::@11)
Adding NOP phi() at start of __start
Adding NOP phi() at start of __start::__init1
Adding NOP phi() at start of __start::@1
Adding NOP phi() at start of __start::@4
Adding NOP phi() at start of main::@6
Adding NOP phi() at start of main::@7
Adding NOP phi() at start of main::@8
Adding NOP phi() at start of main::@9
Adding NOP phi() at start of main::toD0181
Adding NOP phi() at start of main::toD0181_@return
Adding NOP phi() at start of main::@10
Adding NOP phi() at start of main::toD0182
Adding NOP phi() at start of main::toD0182_@return
Adding NOP phi() at start of init_dist_screen
Adding NOP phi() at start of make_plasma_charset
Adding NOP phi() at start of make_plasma_charset::@12
Adding NOP phi() at start of make_plasma_charset::@14
Adding NOP phi() at start of make_plasma_charset::@10
Adding NOP phi() at start of make_plasma_charset::@4
Adding NOP phi() at start of make_plasma_charset::sid_rnd1_@return
Adding NOP phi() at start of memset::@1
Adding NOP phi() at start of print_cls
Adding NOP phi() at start of print_cls::@1
CALL GRAPH
Calls in [__start] to malloc:2 malloc:5 main:8 
Calls in [main] to init_dist_screen:16 init_angle_screen:18 make_plasma_charset:20 memset:22 doplasma:27 doplasma:34 
Calls in [init_dist_screen] to init_squares:42 sqr:54 sqr:74 sqrt:79 
Calls in [init_angle_screen] to atan2_16:115 
Calls in [make_plasma_charset] to print_cls:135 print_char:147 
Calls in [init_squares] to malloc:212 
Calls in [sqrt] to bsearch16u:234 
Calls in [print_cls] to memset:312 

Created 61 initial phi equivalence classes
Coalesced [4] heap_head#57 = heap_head#0
Not coalescing [13] heap_head#0 = malloc::mem#0
Coalesced [25] sin_offset_x#34 = sin_offset_x#10
Coalesced [26] sin_offset_y#34 = sin_offset_y#10
Coalesced [32] sin_offset_x#35 = sin_offset_x#13
Coalesced [33] sin_offset_y#35 = sin_offset_y#13
Coalesced (already) [39] sin_offset_x#33 = sin_offset_x#13
Coalesced (already) [40] sin_offset_y#33 = sin_offset_y#13
Coalesced [44] init_dist_screen::screen_topline#15 = init_dist_screen::screen#0
Coalesced [45] init_dist_screen::screen_bottomline#15 = init_dist_screen::screen_bottomline#0
Coalesced [50] init_dist_screen::yd#2 = init_dist_screen::$5
Coalesced [53] sqr::val#4 = sqr::val#0
Coalesced [64] init_dist_screen::y#15 = init_dist_screen::y#1
Coalesced [65] init_dist_screen::screen_topline#16 = init_dist_screen::screen_topline#1
Coalesced [66] init_dist_screen::screen_bottomline#16 = init_dist_screen::screen_bottomline#1
Coalesced [70] init_dist_screen::xd#2 = init_dist_screen::$14
Coalesced [73] sqr::val#3 = sqr::val#1
Coalesced [88] init_dist_screen::x#9 = init_dist_screen::x#1
Coalesced [89] init_dist_screen::xb#9 = init_dist_screen::xb#1
Coalesced [91] init_dist_screen::xd#1 = init_dist_screen::$16
Coalesced [93] init_dist_screen::yd#1 = init_dist_screen::$7
Not coalescing [95] init_angle_screen::screen_topline#7 = init_angle_screen::screen_bottomline#0
Coalesced [96] init_angle_screen::screen_bottomline#7 = init_angle_screen::screen_bottomline#0
Coalesced [105] init_angle_screen::y#7 = init_angle_screen::y#1
Coalesced [106] init_angle_screen::screen_topline#8 = init_angle_screen::screen_topline#1
Coalesced [107] init_angle_screen::screen_bottomline#8 = init_angle_screen::screen_bottomline#1
Coalesced [129] init_angle_screen::x#5 = init_angle_screen::x#1
Coalesced [130] init_angle_screen::xb#5 = init_angle_screen::xb#1
Coalesced [148] print_char_cursor#57 = print_char_cursor#0
Coalesced [151] make_plasma_charset::c#17 = make_plasma_charset::c#1
Coalesced [152] print_char_cursor#56 = print_char_cursor#32
Coalesced (already) [153] print_char_cursor#58 = print_char_cursor#19
Coalesced [162] make_plasma_charset::i#11 = make_plasma_charset::i#1
Coalesced [168] make_plasma_charset::b#11 = make_plasma_charset::b#1
Coalesced [171] make_plasma_charset::ii#8 = make_plasma_charset::ii#1
Coalesced [172] make_plasma_charset::b#9 = make_plasma_charset::b#6
Coalesced (already) [173] make_plasma_charset::b#10 = make_plasma_charset::b#2
Coalesced [183] memset::dst#5 = memset::dst#1
Coalesced [189] doplasma::angle#5 = doplasma::angle#0
Coalesced [190] doplasma::dist#5 = doplasma::dist#0
Coalesced [191] doplasma::screen#7 = doplasma::screen#6
Coalesced [206] doplasma::angle#6 = doplasma::angle#1
Coalesced [207] doplasma::dist#6 = doplasma::dist#1
Coalesced [208] doplasma::screen#8 = doplasma::screen#2
Coalesced [209] doplasma::y#5 = doplasma::y#1
Coalesced [210] doplasma::x#3 = doplasma::x#1
Coalesced (already) [211] heap_head#58 = heap_head#0
Coalesced [215] init_squares::squares#5 = init_squares::squares#0
Coalesced [225] init_squares::i#4 = init_squares::i#1
Coalesced [226] init_squares::sqr#4 = init_squares::sqr#1
Coalesced [227] init_squares::squares#4 = init_squares::squares#1
Coalesced [243] atan2_16::yi#17 = atan2_16::$2
Coalesced [247] atan2_16::xi#14 = atan2_16::$7
Coalesced [249] atan2_16::yi#19 = atan2_16::yi#0
Coalesced [250] atan2_16::xi#16 = atan2_16::xi#0
Coalesced [253] atan2_16::angle#22 = atan2_16::angle#12
Coalesced [258] atan2_16::angle#27 = atan2_16::angle#4
Coalesced [262] atan2_16::return#6 = atan2_16::angle#5
Coalesced [265] atan2_16::return#5 = atan2_16::angle#11
Coalesced [266] atan2_16::angle#26 = atan2_16::angle#1
Not coalescing [267] atan2_16::shift#5 = atan2_16::i#2
Not coalescing [268] atan2_16::xd#10 = atan2_16::xi#3
Not coalescing [269] atan2_16::yd#10 = atan2_16::yi#3
Coalesced [275] atan2_16::yd#13 = atan2_16::yd#2
Coalesced [276] atan2_16::xd#13 = atan2_16::xd#2
Coalesced [283] atan2_16::yi#21 = atan2_16::yi#2
Coalesced [284] atan2_16::angle#25 = atan2_16::angle#3
Coalesced [285] atan2_16::xi#18 = atan2_16::xi#2
Coalesced [289] atan2_16::yi#18 = atan2_16::yi#8
Coalesced [290] atan2_16::xi#15 = atan2_16::xi#8
Coalesced [291] atan2_16::i#12 = atan2_16::i#1
Coalesced [292] atan2_16::angle#21 = atan2_16::angle#13
Coalesced (already) [293] atan2_16::angle#23 = atan2_16::angle#13
Coalesced [298] atan2_16::yi#20 = atan2_16::yi#1
Coalesced [299] atan2_16::angle#24 = atan2_16::angle#2
Coalesced [300] atan2_16::xi#17 = atan2_16::xi#1
Coalesced [301] atan2_16::yd#12 = atan2_16::yd#3
Coalesced [302] atan2_16::xd#12 = atan2_16::xd#3
Coalesced [306] atan2_16::shift#6 = atan2_16::shift#1
Coalesced [307] atan2_16::xd#11 = atan2_16::xd#1
Coalesced [308] atan2_16::yd#11 = atan2_16::yd#1
Not coalescing [309] atan2_16::xi#13 = atan2_16::x#0
Not coalescing [310] atan2_16::yi#16 = atan2_16::y#0
Coalesced [318] bsearch16u::items#10 = bsearch16u::items#1
Coalesced [323] bsearch16u::return#9 = bsearch16u::$2
Coalesced [325] bsearch16u::return#6 = bsearch16u::return#2
Coalesced [328] bsearch16u::return#8 = bsearch16u::items#2
Not coalescing [334] bsearch16u::return#7 = bsearch16u::pivot#0
Coalesced [338] bsearch16u::num#10 = bsearch16u::num#1
Coalesced [339] bsearch16u::items#12 = bsearch16u::items#0
Coalesced [342] bsearch16u::num#9 = bsearch16u::num#0
Coalesced [343] bsearch16u::items#11 = bsearch16u::items#8
Coalesced [344] bsearch16u::num#11 = bsearch16u::num#3
Coalesced (already) [345] bsearch16u::items#13 = bsearch16u::items#2
Coalesced down to 47 phi equivalence classes
Culled Empty Block label __start::@4
Culled Empty Block label main::@8
Culled Empty Block label main::@9
Culled Empty Block label main::toD0181_@return
Culled Empty Block label main::@10
Culled Empty Block label main::toD0182_@return
Culled Empty Block label init_dist_screen::@15
Culled Empty Block label init_angle_screen::@6
Culled Empty Block label make_plasma_charset::@14
Culled Empty Block label make_plasma_charset::@15
Culled Empty Block label make_plasma_charset::@17
Culled Empty Block label make_plasma_charset::@4
Culled Empty Block label make_plasma_charset::sid_rnd1_@return
Culled Empty Block label make_plasma_charset::@16
Culled Empty Block label memset::@1
Culled Empty Block label doplasma::@5
Culled Empty Block label doplasma::@6
Culled Empty Block label atan2_16::@23
Culled Empty Block label atan2_16::@27
Culled Empty Block label atan2_16::@26
Culled Empty Block label atan2_16::@22
Culled Empty Block label atan2_16::@24
Culled Empty Block label atan2_16::@25
Culled Empty Block label print_cls::@1
Culled Empty Block label bsearch16u::@1
Culled Empty Block label bsearch16u::@11
Renumbering block memset::@2 to memset::@1
Renumbering block memset::@3 to memset::@2
Renumbering block memset::@4 to memset::@3
Renumbering block bsearch16u::@2 to bsearch16u::@1
Renumbering block bsearch16u::@3 to bsearch16u::@2
Renumbering block bsearch16u::@4 to bsearch16u::@3
Renumbering block bsearch16u::@5 to bsearch16u::@4
Renumbering block bsearch16u::@6 to bsearch16u::@5
Renumbering block bsearch16u::@7 to bsearch16u::@6
Renumbering block bsearch16u::@8 to bsearch16u::@7
Renumbering block bsearch16u::@9 to bsearch16u::@8
Renumbering block bsearch16u::@10 to bsearch16u::@9
Renumbering block make_plasma_charset::@5 to make_plasma_charset::@4
Renumbering block make_plasma_charset::@6 to make_plasma_charset::@5
Renumbering block make_plasma_charset::@7 to make_plasma_charset::@6
Renumbering block make_plasma_charset::@8 to make_plasma_charset::@7
Renumbering block make_plasma_charset::@9 to make_plasma_charset::@8
Renumbering block make_plasma_charset::@10 to make_plasma_charset::@9
Renumbering block make_plasma_charset::@11 to make_plasma_charset::@10
Renumbering block make_plasma_charset::@12 to make_plasma_charset::@11
Renumbering block make_plasma_charset::@13 to make_plasma_charset::@12
Adding NOP phi() at start of __start
Adding NOP phi() at start of __start::__init1
Adding NOP phi() at start of __start::@1
Adding NOP phi() at start of main::@6
Adding NOP phi() at start of main::@7
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of main::toD0181
Adding NOP phi() at start of main::toD0182
Adding NOP phi() at start of init_dist_screen
Adding NOP phi() at start of make_plasma_charset
Adding NOP phi() at start of make_plasma_charset::@11
Adding NOP phi() at start of make_plasma_charset::@9
Adding NOP phi() at start of init_squares
Adding NOP phi() at start of print_cls
Adding NOP phi() at start of bsearch16u

FINAL CONTROL FLOW GRAPH

void __start()
__start: scope:[__start]  from
  [0] phi()
  to:__start::__init1
__start::__init1: scope:[__start]  from __start
  [1] phi()
  [2] call malloc
  to:__start::@2
__start::@2: scope:[__start]  from __start::__init1
  [3] SCREEN_DIST#0 = (char *)(void *)malloc::mem#0
  [4] call malloc
  to:__start::@3
__start::@3: scope:[__start]  from __start::@2
  [5] SCREEN_ANGLE#0 = (char *)(void *)malloc::mem#0
  to:__start::@1
__start::@1: scope:[__start]  from __start::@3
  [6] phi()
  [7] call main
  to:__start::@return
__start::@return: scope:[__start]  from __start::@1
  [8] return 
  to:@return

void * malloc(unsigned int size)
malloc: scope:[malloc]  from __start::@2 __start::__init1 init_squares
  [9] malloc::size#3 = phi( __start::@2/$3e8, __start::__init1/$3e8, init_squares/NUM_SQUARES#2*SIZEOF_UNSIGNED_INT )
  [9] heap_head#13 = phi( __start::@2/heap_head#0, __start::__init1/HEAP_TOP, init_squares/heap_head#0 )
  [10] malloc::mem#0 = heap_head#13 - malloc::size#3
  [11] heap_head#0 = malloc::mem#0
  to:malloc::@return
malloc::@return: scope:[malloc]  from malloc
  [12] return 
  to:@return

void main()
main: scope:[main]  from __start::@1
  [13] init_dist_screen::screen#0 = SCREEN_DIST#0
  [14] call init_dist_screen
  to:main::@5
main::@5: scope:[main]  from main
  [15] init_angle_screen::screen#0 = SCREEN_ANGLE#0
  [16] call init_angle_screen
  to:main::@6
main::@6: scope:[main]  from main::@5
  [17] phi()
  [18] call make_plasma_charset
  to:main::@7
main::@7: scope:[main]  from main::@6
  [19] phi()
  [20] call memset
  to:main::@1
main::@1: scope:[main]  from main::@4 main::@7
  [21] sin_offset_y#10 = phi( main::@4/sin_offset_y#13, main::@7/0 )
  [21] sin_offset_x#10 = phi( main::@4/sin_offset_x#13, main::@7/0 )
  to:main::@2
main::@2: scope:[main]  from main::@1
  [22] phi()
  [23] call doplasma
  to:main::toD0181
main::toD0181: scope:[main]  from main::@2
  [24] phi()
  to:main::@3
main::@3: scope:[main]  from main::toD0181
  [25] *D018 = main::toD0181_return#0
  [26] call doplasma
  to:main::toD0182
main::toD0182: scope:[main]  from main::@3
  [27] phi()
  to:main::@4
main::@4: scope:[main]  from main::toD0182
  [28] *D018 = main::toD0182_return#0
  to:main::@1

void init_dist_screen(char *screen)
init_dist_screen: scope:[init_dist_screen]  from main
  [29] phi()
  [30] call init_squares
  to:init_dist_screen::@11
init_dist_screen::@11: scope:[init_dist_screen]  from init_dist_screen
  [31] init_dist_screen::screen_bottomline#0 = init_dist_screen::screen#0 + (unsigned int)$28*$18
  to:init_dist_screen::@1
init_dist_screen::@1: scope:[init_dist_screen]  from init_dist_screen::@11 init_dist_screen::@7
  [32] init_dist_screen::screen_bottomline#11 = phi( init_dist_screen::@11/init_dist_screen::screen_bottomline#0, init_dist_screen::@7/init_dist_screen::screen_bottomline#1 )
  [32] init_dist_screen::screen_topline#11 = phi( init_dist_screen::@11/init_dist_screen::screen#0, init_dist_screen::@7/init_dist_screen::screen_topline#1 )
  [32] init_dist_screen::y#10 = phi( init_dist_screen::@11/0, init_dist_screen::@7/init_dist_screen::y#1 )
  [33] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1
  [34] if(init_dist_screen::y2#0>=$18) goto init_dist_screen::@2
  to:init_dist_screen::@3
init_dist_screen::@3: scope:[init_dist_screen]  from init_dist_screen::@1
  [35] init_dist_screen::$5 = $18 - init_dist_screen::y2#0
  to:init_dist_screen::@4
init_dist_screen::@4: scope:[init_dist_screen]  from init_dist_screen::@2 init_dist_screen::@3
  [36] init_dist_screen::yd#0 = phi( init_dist_screen::@2/init_dist_screen::$7, init_dist_screen::@3/init_dist_screen::$5 )
  [37] sqr::val#0 = init_dist_screen::yd#0
  [38] call sqr
  [39] sqr::return#2 = sqr::return#0
  to:init_dist_screen::@12
init_dist_screen::@12: scope:[init_dist_screen]  from init_dist_screen::@4
  [40] init_dist_screen::yds#0 = sqr::return#2
  to:init_dist_screen::@5
init_dist_screen::@5: scope:[init_dist_screen]  from init_dist_screen::@12 init_dist_screen::@14
  [41] init_dist_screen::xb#2 = phi( init_dist_screen::@12/$27, init_dist_screen::@14/init_dist_screen::xb#1 )
  [41] init_dist_screen::x#2 = phi( init_dist_screen::@12/0, init_dist_screen::@14/init_dist_screen::x#1 )
  [42] if(init_dist_screen::x#2<$13+1) goto init_dist_screen::@6
  to:init_dist_screen::@7
init_dist_screen::@7: scope:[init_dist_screen]  from init_dist_screen::@5
  [43] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28
  [44] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28
  [45] init_dist_screen::y#1 = ++ init_dist_screen::y#10
  [46] if(init_dist_screen::y#1!=$d) goto init_dist_screen::@1
  to:init_dist_screen::@return
init_dist_screen::@return: scope:[init_dist_screen]  from init_dist_screen::@7
  [47] return 
  to:@return
init_dist_screen::@6: scope:[init_dist_screen]  from init_dist_screen::@5
  [48] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1
  [49] if(init_dist_screen::x2#0>=$27) goto init_dist_screen::@8
  to:init_dist_screen::@9
init_dist_screen::@9: scope:[init_dist_screen]  from init_dist_screen::@6
  [50] init_dist_screen::$14 = $27 - init_dist_screen::x2#0
  to:init_dist_screen::@10
init_dist_screen::@10: scope:[init_dist_screen]  from init_dist_screen::@8 init_dist_screen::@9
  [51] init_dist_screen::xd#0 = phi( init_dist_screen::@8/init_dist_screen::$16, init_dist_screen::@9/init_dist_screen::$14 )
  [52] sqr::val#1 = init_dist_screen::xd#0
  [53] call sqr
  [54] sqr::return#3 = sqr::return#0
  to:init_dist_screen::@13
init_dist_screen::@13: scope:[init_dist_screen]  from init_dist_screen::@10
  [55] init_dist_screen::xds#0 = sqr::return#3
  [56] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0
  [57] sqrt::val#0 = init_dist_screen::ds#0
  [58] call sqrt
  [59] sqrt::return#2 = sqrt::return#0
  to:init_dist_screen::@14
init_dist_screen::@14: scope:[init_dist_screen]  from init_dist_screen::@13
  [60] init_dist_screen::d#0 = sqrt::return#2
  [61] init_dist_screen::screen_topline#11[init_dist_screen::x#2] = init_dist_screen::d#0
  [62] init_dist_screen::screen_bottomline#11[init_dist_screen::x#2] = init_dist_screen::d#0
  [63] init_dist_screen::screen_topline#11[init_dist_screen::xb#2] = init_dist_screen::d#0
  [64] init_dist_screen::screen_bottomline#11[init_dist_screen::xb#2] = init_dist_screen::d#0
  [65] init_dist_screen::x#1 = ++ init_dist_screen::x#2
  [66] init_dist_screen::xb#1 = -- init_dist_screen::xb#2
  to:init_dist_screen::@5
init_dist_screen::@8: scope:[init_dist_screen]  from init_dist_screen::@6
  [67] init_dist_screen::$16 = init_dist_screen::x2#0 - $27
  to:init_dist_screen::@10
init_dist_screen::@2: scope:[init_dist_screen]  from init_dist_screen::@1
  [68] init_dist_screen::$7 = init_dist_screen::y2#0 - $18
  to:init_dist_screen::@4

void init_angle_screen(char *screen)
init_angle_screen: scope:[init_angle_screen]  from main::@5
  [69] init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#0 + (unsigned int)$28*$c
  [70] init_angle_screen::screen_topline#7 = init_angle_screen::screen_bottomline#0
  to:init_angle_screen::@1
init_angle_screen::@1: scope:[init_angle_screen]  from init_angle_screen init_angle_screen::@4
  [71] init_angle_screen::screen_bottomline#6 = phi( init_angle_screen/init_angle_screen::screen_bottomline#0, init_angle_screen::@4/init_angle_screen::screen_bottomline#1 )
  [71] init_angle_screen::screen_topline#6 = phi( init_angle_screen/init_angle_screen::screen_topline#7, init_angle_screen::@4/init_angle_screen::screen_topline#1 )
  [71] init_angle_screen::y#5 = phi( init_angle_screen/0, init_angle_screen::@4/init_angle_screen::y#1 )
  to:init_angle_screen::@2
init_angle_screen::@2: scope:[init_angle_screen]  from init_angle_screen::@1 init_angle_screen::@5
  [72] init_angle_screen::xb#2 = phi( init_angle_screen::@1/$27, init_angle_screen::@5/init_angle_screen::xb#1 )
  [72] init_angle_screen::x#2 = phi( init_angle_screen::@1/0, init_angle_screen::@5/init_angle_screen::x#1 )
  [73] if(init_angle_screen::x#2<$13+1) goto init_angle_screen::@3
  to:init_angle_screen::@4
init_angle_screen::@4: scope:[init_angle_screen]  from init_angle_screen::@2
  [74] init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#6 - $28
  [75] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28
  [76] init_angle_screen::y#1 = ++ init_angle_screen::y#5
  [77] if(init_angle_screen::y#1!=$d) goto init_angle_screen::@1
  to:init_angle_screen::@return
init_angle_screen::@return: scope:[init_angle_screen]  from init_angle_screen::@4
  [78] return 
  to:@return
init_angle_screen::@3: scope:[init_angle_screen]  from init_angle_screen::@2
  [79] init_angle_screen::$3 = init_angle_screen::x#2 << 1
  [80] init_angle_screen::$4 = $27 - init_angle_screen::$3
  [81] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0
  [82] init_angle_screen::$6 = init_angle_screen::y#5 << 1
  [83] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0
  [84] atan2_16::x#0 = (int)init_angle_screen::xw#0
  [85] atan2_16::y#0 = (int)init_angle_screen::yw#0
  [86] call atan2_16
  [87] atan2_16::return#2 = atan2_16::return#0
  to:init_angle_screen::@5
init_angle_screen::@5: scope:[init_angle_screen]  from init_angle_screen::@3
  [88] init_angle_screen::angle_w#0 = atan2_16::return#2
  [89] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
  [90] init_angle_screen::ang_w#0 = byte1  init_angle_screen::$9
  [91] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0
  [92] init_angle_screen::$11 = - init_angle_screen::ang_w#0
  [93] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11
  [94] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
  [95] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12
  [96] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
  [97] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13
  [98] init_angle_screen::x#1 = ++ init_angle_screen::x#2
  [99] init_angle_screen::xb#1 = -- init_angle_screen::xb#2
  to:init_angle_screen::@2

void make_plasma_charset(char *charset)
make_plasma_charset: scope:[make_plasma_charset]  from main::@6
  [100] phi()
  to:make_plasma_charset::sid_rnd_init1
make_plasma_charset::sid_rnd_init1: scope:[make_plasma_charset]  from make_plasma_charset
  [101] *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff
  [102] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE
  to:make_plasma_charset::@11
make_plasma_charset::@11: scope:[make_plasma_charset]  from make_plasma_charset::sid_rnd_init1
  [103] phi()
  [104] call print_cls
  to:make_plasma_charset::@1
make_plasma_charset::@1: scope:[make_plasma_charset]  from make_plasma_charset::@10 make_plasma_charset::@11
  [105] print_char_cursor#19 = phi( make_plasma_charset::@10/print_char_cursor#32, make_plasma_charset::@11/print_screen#0 )
  [105] make_plasma_charset::c#2 = phi( make_plasma_charset::@10/make_plasma_charset::c#1, make_plasma_charset::@11/0 )
  [106] if(make_plasma_charset::c#2<$100) goto make_plasma_charset::@2
  to:make_plasma_charset::@return
make_plasma_charset::@return: scope:[make_plasma_charset]  from make_plasma_charset::@1
  [107] return 
  to:@return
make_plasma_charset::@2: scope:[make_plasma_charset]  from make_plasma_charset::@1
  [108] make_plasma_charset::$3 = byte0  make_plasma_charset::c#2
  [109] make_plasma_charset::s#0 = SINTABLE[make_plasma_charset::$3]
  to:make_plasma_charset::@3
make_plasma_charset::@3: scope:[make_plasma_charset]  from make_plasma_charset::@2 make_plasma_charset::@6
  [110] make_plasma_charset::i#2 = phi( make_plasma_charset::@2/0, make_plasma_charset::@6/make_plasma_charset::i#1 )
  [111] if(make_plasma_charset::i#2<8) goto make_plasma_charset::@5
  to:make_plasma_charset::@4
make_plasma_charset::@4: scope:[make_plasma_charset]  from make_plasma_charset::@3
  [112] make_plasma_charset::$12 = make_plasma_charset::c#2 & 7
  [113] if(make_plasma_charset::$12!=0) goto make_plasma_charset::@10
  to:make_plasma_charset::@9
make_plasma_charset::@9: scope:[make_plasma_charset]  from make_plasma_charset::@4
  [114] phi()
  [115] call print_char
  to:make_plasma_charset::@10
make_plasma_charset::@10: scope:[make_plasma_charset]  from make_plasma_charset::@4 make_plasma_charset::@9
  [116] print_char_cursor#32 = phi( make_plasma_charset::@9/print_char_cursor#0, make_plasma_charset::@4/print_char_cursor#19 )
  [117] make_plasma_charset::c#1 = ++ make_plasma_charset::c#2
  to:make_plasma_charset::@1
make_plasma_charset::@5: scope:[make_plasma_charset]  from make_plasma_charset::@3 make_plasma_charset::@7
  [118] make_plasma_charset::b#2 = phi( make_plasma_charset::@3/0, make_plasma_charset::@7/make_plasma_charset::b#6 )
  [118] make_plasma_charset::ii#2 = phi( make_plasma_charset::@3/0, make_plasma_charset::@7/make_plasma_charset::ii#1 )
  [119] if(make_plasma_charset::ii#2<8) goto make_plasma_charset::sid_rnd1
  to:make_plasma_charset::@6
make_plasma_charset::@6: scope:[make_plasma_charset]  from make_plasma_charset::@5
  [120] make_plasma_charset::$10 = make_plasma_charset::c#2 << 3
  [121] make_plasma_charset::$11 = make_plasma_charset::$10 + make_plasma_charset::i#2
  [122] make_plasma_charset::$16 = CHARSET + make_plasma_charset::$11
  [123] *make_plasma_charset::$16 = make_plasma_charset::b#2
  [124] make_plasma_charset::i#1 = ++ make_plasma_charset::i#2
  to:make_plasma_charset::@3
make_plasma_charset::sid_rnd1: scope:[make_plasma_charset]  from make_plasma_charset::@5
  [125] make_plasma_charset::sid_rnd1_return#0 = *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_OSC)
  to:make_plasma_charset::@12
make_plasma_charset::@12: scope:[make_plasma_charset]  from make_plasma_charset::sid_rnd1
  [126] make_plasma_charset::$7 = make_plasma_charset::sid_rnd1_return#0 & $ff
  [127] if(make_plasma_charset::$7<=make_plasma_charset::s#0) goto make_plasma_charset::@7
  to:make_plasma_charset::@8
make_plasma_charset::@8: scope:[make_plasma_charset]  from make_plasma_charset::@12
  [128] make_plasma_charset::b#1 = make_plasma_charset::b#2 | make_plasma_charset::bittab[make_plasma_charset::ii#2]
  to:make_plasma_charset::@7
make_plasma_charset::@7: scope:[make_plasma_charset]  from make_plasma_charset::@12 make_plasma_charset::@8
  [129] make_plasma_charset::b#6 = phi( make_plasma_charset::@12/make_plasma_charset::b#2, make_plasma_charset::@8/make_plasma_charset::b#1 )
  [130] make_plasma_charset::ii#1 = ++ make_plasma_charset::ii#2
  to:make_plasma_charset::@5

void * memset(void *str , char c , unsigned int num)
memset: scope:[memset]  from main::@7 print_cls
  [131] memset::c#4 = phi( main::@7/BLACK, print_cls/' ' )
  [131] memset::str#3 = phi( main::@7/(void *)COLS, print_cls/(void *)print_screen#0 )
  to:memset::@1
memset::@1: scope:[memset]  from memset
  [132] memset::end#0 = (char *)memset::str#3 + $3e8
  [133] memset::dst#4 = (char *)memset::str#3
  to:memset::@2
memset::@2: scope:[memset]  from memset::@1 memset::@3
  [134] memset::dst#2 = phi( memset::@1/memset::dst#4, memset::@3/memset::dst#1 )
  [135] if(memset::dst#2!=memset::end#0) goto memset::@3
  to:memset::@return
memset::@return: scope:[memset]  from memset::@2
  [136] return 
  to:@return
memset::@3: scope:[memset]  from memset::@2
  [137] *memset::dst#2 = memset::c#4
  [138] memset::dst#1 = ++ memset::dst#2
  to:memset::@2

void doplasma(char *screen)
doplasma: scope:[doplasma]  from main::@2 main::@3
  [139] doplasma::screen#6 = phi( main::@2/SCREEN1, main::@3/SCREEN2 )
  [139] sin_offset_y#11 = phi( main::@2/sin_offset_y#10, main::@3/sin_offset_y#13 )
  [139] sin_offset_x#11 = phi( main::@2/sin_offset_x#10, main::@3/sin_offset_x#13 )
  [140] doplasma::angle#0 = SCREEN_ANGLE#0
  [141] doplasma::dist#0 = SCREEN_DIST#0
  [142] doplasma::sin_x#0 = SINTABLE + sin_offset_x#11
  [143] doplasma::sin_y#0 = SINTABLE + sin_offset_y#11
  to:doplasma::@1
doplasma::@1: scope:[doplasma]  from doplasma doplasma::@3
  [144] doplasma::y#4 = phi( doplasma/0, doplasma::@3/doplasma::y#1 )
  [144] doplasma::screen#5 = phi( doplasma/doplasma::screen#6, doplasma::@3/doplasma::screen#2 )
  [144] doplasma::dist#4 = phi( doplasma/doplasma::dist#0, doplasma::@3/doplasma::dist#1 )
  [144] doplasma::angle#4 = phi( doplasma/doplasma::angle#0, doplasma::@3/doplasma::angle#1 )
  to:doplasma::@2
doplasma::@2: scope:[doplasma]  from doplasma::@1 doplasma::@2
  [145] doplasma::x#2 = phi( doplasma::@1/0, doplasma::@2/doplasma::x#1 )
  [146] doplasma::$2 = doplasma::sin_x#0[doplasma::angle#4[doplasma::x#2]] + doplasma::sin_y#0[doplasma::dist#4[doplasma::x#2]]
  [147] doplasma::screen#5[doplasma::x#2] = doplasma::$2
  [148] doplasma::x#1 = ++ doplasma::x#2
  [149] if(doplasma::x#1!=$28) goto doplasma::@2
  to:doplasma::@3
doplasma::@3: scope:[doplasma]  from doplasma::@2
  [150] doplasma::screen#2 = doplasma::screen#5 + $28
  [151] doplasma::angle#1 = doplasma::angle#4 + $28
  [152] doplasma::dist#1 = doplasma::dist#4 + $28
  [153] doplasma::y#1 = ++ doplasma::y#4
  [154] if(doplasma::y#1!=$1a) goto doplasma::@1
  to:doplasma::@4
doplasma::@4: scope:[doplasma]  from doplasma::@3
  [155] sin_offset_x#13 = sin_offset_x#11 - 3
  [156] sin_offset_y#13 = sin_offset_y#11 - 7
  to:doplasma::@return
doplasma::@return: scope:[doplasma]  from doplasma::@4
  [157] return 
  to:@return

void init_squares()
init_squares: scope:[init_squares]  from init_dist_screen
  [158] phi()
  [159] call malloc
  to:init_squares::@3
init_squares::@3: scope:[init_squares]  from init_squares
  [160] SQUARES#0 = (void *)malloc::mem#0
  [161] init_squares::squares#0 = (unsigned int *)SQUARES#0
  to:init_squares::@1
init_squares::@1: scope:[init_squares]  from init_squares::@2 init_squares::@3
  [162] init_squares::squares#2 = phi( init_squares::@2/init_squares::squares#1, init_squares::@3/init_squares::squares#0 )
  [162] init_squares::sqr#2 = phi( init_squares::@2/init_squares::sqr#1, init_squares::@3/0 )
  [162] init_squares::i#2 = phi( init_squares::@2/init_squares::i#1, init_squares::@3/0 )
  [163] if(init_squares::i#2<NUM_SQUARES#2) goto init_squares::@2
  to:init_squares::@return
init_squares::@return: scope:[init_squares]  from init_squares::@1
  [164] return 
  to:@return
init_squares::@2: scope:[init_squares]  from init_squares::@1
  [165] *init_squares::squares#2 = init_squares::sqr#2
  [166] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_UNSIGNED_INT
  [167] init_squares::$3 = init_squares::i#2 << 1
  [168] init_squares::$4 = init_squares::$3 + 1
  [169] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4
  [170] init_squares::i#1 = ++ init_squares::i#2
  to:init_squares::@1

unsigned int sqr(char val)
sqr: scope:[sqr]  from init_dist_screen::@10 init_dist_screen::@4
  [171] sqr::val#2 = phi( init_dist_screen::@10/sqr::val#1, init_dist_screen::@4/sqr::val#0 )
  [172] sqr::$0 = sqr::val#2 << 1
  [173] sqr::return#0 = ((unsigned int *)SQUARES#0)[sqr::$0]
  to:sqr::@return
sqr::@return: scope:[sqr]  from sqr
  [174] return 
  to:@return

char sqrt(unsigned int val)
sqrt: scope:[sqrt]  from init_dist_screen::@13
  [175] bsearch16u::key#0 = sqrt::val#0
  [176] bsearch16u::items#1 = (unsigned int *)SQUARES#0
  [177] call bsearch16u
  [178] bsearch16u::return#3 = bsearch16u::return#1
  to:sqrt::@1
sqrt::@1: scope:[sqrt]  from sqrt
  [179] sqrt::found#0 = bsearch16u::return#3
  [180] sqrt::$2 = sqrt::found#0 - (unsigned int *)SQUARES#0
  [181] sqrt::$1 = sqrt::$2 >> 1
  [182] sqrt::return#0 = (char)sqrt::$1
  to:sqrt::@return
sqrt::@return: scope:[sqrt]  from sqrt::@1
  [183] return 
  to:@return

unsigned int atan2_16(int x , int y)
atan2_16: scope:[atan2_16]  from init_angle_screen::@3
  [184] if(atan2_16::y#0>=0) goto atan2_16::@1
  to:atan2_16::@2
atan2_16::@2: scope:[atan2_16]  from atan2_16
  [185] atan2_16::$2 = - atan2_16::y#0
  to:atan2_16::@3
atan2_16::@3: scope:[atan2_16]  from atan2_16::@1 atan2_16::@2
  [186] atan2_16::yi#0 = phi( atan2_16::@1/atan2_16::yi#16, atan2_16::@2/atan2_16::$2 )
  [187] if(atan2_16::x#0>=0) goto atan2_16::@4
  to:atan2_16::@5
atan2_16::@5: scope:[atan2_16]  from atan2_16::@3
  [188] atan2_16::$7 = - atan2_16::x#0
  to:atan2_16::@6
atan2_16::@6: scope:[atan2_16]  from atan2_16::@4 atan2_16::@5
  [189] atan2_16::xi#0 = phi( atan2_16::@4/atan2_16::xi#13, atan2_16::@5/atan2_16::$7 )
  to:atan2_16::@10
atan2_16::@10: scope:[atan2_16]  from atan2_16::@19 atan2_16::@6
  [190] atan2_16::angle#12 = phi( atan2_16::@19/atan2_16::angle#13, atan2_16::@6/0 )
  [190] atan2_16::i#2 = phi( atan2_16::@19/atan2_16::i#1, atan2_16::@6/0 )
  [190] atan2_16::xi#3 = phi( atan2_16::@19/atan2_16::xi#8, atan2_16::@6/atan2_16::xi#0 )
  [190] atan2_16::yi#3 = phi( atan2_16::@19/atan2_16::yi#8, atan2_16::@6/atan2_16::yi#0 )
  [191] if(atan2_16::yi#3!=0) goto atan2_16::@11
  to:atan2_16::@12
atan2_16::@12: scope:[atan2_16]  from atan2_16::@10 atan2_16::@19
  [192] atan2_16::angle#6 = phi( atan2_16::@10/atan2_16::angle#12, atan2_16::@19/atan2_16::angle#13 )
  [193] atan2_16::angle#1 = atan2_16::angle#6 >> 1
  [194] if(atan2_16::x#0>=0) goto atan2_16::@7
  to:atan2_16::@21
atan2_16::@21: scope:[atan2_16]  from atan2_16::@12
  [195] atan2_16::angle#4 = $8000 - atan2_16::angle#1
  to:atan2_16::@7
atan2_16::@7: scope:[atan2_16]  from atan2_16::@12 atan2_16::@21
  [196] atan2_16::angle#11 = phi( atan2_16::@12/atan2_16::angle#1, atan2_16::@21/atan2_16::angle#4 )
  [197] if(atan2_16::y#0>=0) goto atan2_16::@8
  to:atan2_16::@9
atan2_16::@9: scope:[atan2_16]  from atan2_16::@7
  [198] atan2_16::angle#5 = - atan2_16::angle#11
  to:atan2_16::@8
atan2_16::@8: scope:[atan2_16]  from atan2_16::@7 atan2_16::@9
  [199] atan2_16::return#0 = phi( atan2_16::@7/atan2_16::angle#11, atan2_16::@9/atan2_16::angle#5 )
  to:atan2_16::@return
atan2_16::@return: scope:[atan2_16]  from atan2_16::@8
  [200] return 
  to:@return
atan2_16::@11: scope:[atan2_16]  from atan2_16::@10
  [201] atan2_16::shift#5 = atan2_16::i#2
  [202] atan2_16::xd#10 = atan2_16::xi#3
  [203] atan2_16::yd#10 = atan2_16::yi#3
  to:atan2_16::@13
atan2_16::@13: scope:[atan2_16]  from atan2_16::@11 atan2_16::@14
  [204] atan2_16::yd#3 = phi( atan2_16::@11/atan2_16::yd#10, atan2_16::@14/atan2_16::yd#1 )
  [204] atan2_16::xd#3 = phi( atan2_16::@11/atan2_16::xd#10, atan2_16::@14/atan2_16::xd#1 )
  [204] atan2_16::shift#2 = phi( atan2_16::@11/atan2_16::shift#5, atan2_16::@14/atan2_16::shift#1 )
  [205] if(atan2_16::shift#2>=2) goto atan2_16::@14
  to:atan2_16::@15
atan2_16::@15: scope:[atan2_16]  from atan2_16::@13
  [206] if(0==atan2_16::shift#2) goto atan2_16::@17
  to:atan2_16::@16
atan2_16::@16: scope:[atan2_16]  from atan2_16::@15
  [207] atan2_16::xd#2 = atan2_16::xd#3 >> 1
  [208] atan2_16::yd#2 = atan2_16::yd#3 >> 1
  to:atan2_16::@17
atan2_16::@17: scope:[atan2_16]  from atan2_16::@15 atan2_16::@16
  [209] atan2_16::xd#5 = phi( atan2_16::@15/atan2_16::xd#3, atan2_16::@16/atan2_16::xd#2 )
  [209] atan2_16::yd#5 = phi( atan2_16::@15/atan2_16::yd#3, atan2_16::@16/atan2_16::yd#2 )
  [210] if(atan2_16::yi#3>=0) goto atan2_16::@18
  to:atan2_16::@20
atan2_16::@20: scope:[atan2_16]  from atan2_16::@17
  [211] atan2_16::xi#2 = atan2_16::xi#3 - atan2_16::yd#5
  [212] atan2_16::yi#2 = atan2_16::yi#3 + atan2_16::xd#5
  [213] atan2_16::$23 = atan2_16::i#2 << 1
  [214] atan2_16::angle#3 = atan2_16::angle#12 - CORDIC_ATAN2_ANGLES_16[atan2_16::$23]
  to:atan2_16::@19
atan2_16::@19: scope:[atan2_16]  from atan2_16::@18 atan2_16::@20
  [215] atan2_16::xi#8 = phi( atan2_16::@18/atan2_16::xi#1, atan2_16::@20/atan2_16::xi#2 )
  [215] atan2_16::angle#13 = phi( atan2_16::@18/atan2_16::angle#2, atan2_16::@20/atan2_16::angle#3 )
  [215] atan2_16::yi#8 = phi( atan2_16::@18/atan2_16::yi#1, atan2_16::@20/atan2_16::yi#2 )
  [216] atan2_16::i#1 = ++ atan2_16::i#2
  [217] if(atan2_16::i#1==CORDIC_ITERATIONS_16-1+1) goto atan2_16::@12
  to:atan2_16::@10
atan2_16::@18: scope:[atan2_16]  from atan2_16::@17
  [218] atan2_16::xi#1 = atan2_16::xi#3 + atan2_16::yd#5
  [219] atan2_16::yi#1 = atan2_16::yi#3 - atan2_16::xd#5
  [220] atan2_16::$22 = atan2_16::i#2 << 1
  [221] atan2_16::angle#2 = atan2_16::angle#12 + CORDIC_ATAN2_ANGLES_16[atan2_16::$22]
  to:atan2_16::@19
atan2_16::@14: scope:[atan2_16]  from atan2_16::@13
  [222] atan2_16::xd#1 = atan2_16::xd#3 >> 2
  [223] atan2_16::yd#1 = atan2_16::yd#3 >> 2
  [224] atan2_16::shift#1 = atan2_16::shift#2 - 2
  to:atan2_16::@13
atan2_16::@4: scope:[atan2_16]  from atan2_16::@3
  [225] atan2_16::xi#13 = atan2_16::x#0
  to:atan2_16::@6
atan2_16::@1: scope:[atan2_16]  from atan2_16
  [226] atan2_16::yi#16 = atan2_16::y#0
  to:atan2_16::@3

void print_cls()
print_cls: scope:[print_cls]  from make_plasma_charset::@11
  [227] phi()
  [228] call memset
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls
  [229] return 
  to:@return

void print_char(char ch)
print_char: scope:[print_char]  from make_plasma_charset::@9
  [230] *print_char_cursor#19 = print_char::ch#0
  [231] print_char_cursor#0 = ++ print_char_cursor#19
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [232] return 
  to:@return

unsigned int * bsearch16u(unsigned int key , unsigned int *items , char num)
bsearch16u: scope:[bsearch16u]  from sqrt
  [233] phi()
  to:bsearch16u::@3
bsearch16u::@3: scope:[bsearch16u]  from bsearch16u bsearch16u::@7
  [234] bsearch16u::items#2 = phi( bsearch16u/bsearch16u::items#1, bsearch16u::@7/bsearch16u::items#8 )
  [234] bsearch16u::num#3 = phi( bsearch16u/NUM_SQUARES#2, bsearch16u::@7/bsearch16u::num#0 )
  [235] if(bsearch16u::num#3>0) goto bsearch16u::@4
  to:bsearch16u::@5
bsearch16u::@5: scope:[bsearch16u]  from bsearch16u::@3
  [236] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@2
  to:bsearch16u::@1
bsearch16u::@1: scope:[bsearch16u]  from bsearch16u::@5
  [237] bsearch16u::$2 = bsearch16u::items#2 - 1*SIZEOF_UNSIGNED_INT
  to:bsearch16u::@2
bsearch16u::@2: scope:[bsearch16u]  from bsearch16u::@1 bsearch16u::@5
  [238] bsearch16u::return#2 = phi( bsearch16u::@5/bsearch16u::items#2, bsearch16u::@1/bsearch16u::$2 )
  to:bsearch16u::@return
bsearch16u::@return: scope:[bsearch16u]  from bsearch16u::@2 bsearch16u::@8
  [239] bsearch16u::return#1 = phi( bsearch16u::@2/bsearch16u::return#2, bsearch16u::@8/bsearch16u::return#7 )
  [240] return 
  to:@return
bsearch16u::@4: scope:[bsearch16u]  from bsearch16u::@3
  [241] bsearch16u::$6 = bsearch16u::num#3 >> 1
  [242] bsearch16u::$14 = bsearch16u::$6 << 1
  [243] bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14
  [244] bsearch16u::result#0 = (int)bsearch16u::key#0 - (int)*bsearch16u::pivot#0
  [245] if(bsearch16u::result#0!=0) goto bsearch16u::@6
  to:bsearch16u::@8
bsearch16u::@8: scope:[bsearch16u]  from bsearch16u::@4
  [246] bsearch16u::return#7 = bsearch16u::pivot#0
  to:bsearch16u::@return
bsearch16u::@6: scope:[bsearch16u]  from bsearch16u::@4
  [247] if(bsearch16u::result#0<=0) goto bsearch16u::@7
  to:bsearch16u::@9
bsearch16u::@9: scope:[bsearch16u]  from bsearch16u::@6
  [248] bsearch16u::items#0 = bsearch16u::pivot#0 + 1*SIZEOF_UNSIGNED_INT
  [249] bsearch16u::num#1 = -- bsearch16u::num#3
  to:bsearch16u::@7
bsearch16u::@7: scope:[bsearch16u]  from bsearch16u::@6 bsearch16u::@9
  [250] bsearch16u::items#8 = phi( bsearch16u::@9/bsearch16u::items#0, bsearch16u::@6/bsearch16u::items#2 )
  [250] bsearch16u::num#5 = phi( bsearch16u::@9/bsearch16u::num#1, bsearch16u::@6/bsearch16u::num#3 )
  [251] bsearch16u::num#0 = bsearch16u::num#5 >> 1
  to:bsearch16u::@3


VARIABLE REGISTER WEIGHTS
char NUM_SQUARES
char *SCREEN_ANGLE
char *SCREEN_ANGLE#0 // 27.405405405405403
char *SCREEN_DIST
char *SCREEN_DIST#0 // 26.0
unsigned int *SQUARES
void *SQUARES#0 // 16.14516129032258
void __start()
unsigned int atan2_16(int x , int y)
int atan2_16::$2 // 200002.0
char atan2_16::$22 // 2.00000002E8
char atan2_16::$23 // 2.00000002E8
int atan2_16::$7 // 200002.0
unsigned int atan2_16::angle
unsigned int atan2_16::angle#1 // 150001.5
unsigned int atan2_16::angle#11 // 200002.0
unsigned int atan2_16::angle#12 // 1.904761923809524E7
unsigned int atan2_16::angle#13 // 1.3333333466666667E8
unsigned int atan2_16::angle#2 // 2.00000002E8
unsigned int atan2_16::angle#3 // 2.00000002E8
unsigned int atan2_16::angle#4 // 200002.0
unsigned int atan2_16::angle#5 // 200002.0
unsigned int atan2_16::angle#6 // 2.00100003E8
char atan2_16::i
char atan2_16::i#1 // 1.500000015E8
char atan2_16::i#2 // 2.0833333541666668E7
unsigned int atan2_16::return
unsigned int atan2_16::return#0 // 70001.0
unsigned int atan2_16::return#2 // 20002.0
char atan2_16::shift
char atan2_16::shift#1 // 2.000000002E9
char atan2_16::shift#2 // 8.0000000125E8
char atan2_16::shift#5 // 6.6666667333333336E7
int atan2_16::x
int atan2_16::x#0 // 10789.605263157895
int atan2_16::xd
int atan2_16::xd#1 // 6.666666673333334E8
int atan2_16::xd#10 // 1.00000001E8
int atan2_16::xd#2 // 1.00000001E8
int atan2_16::xd#3 // 7.666666683333335E8
int atan2_16::xd#5 // 1.00000001E8
int atan2_16::xi
int atan2_16::xi#0 // 300003.0
int atan2_16::xi#1 // 5.00000005E7
int atan2_16::xi#13 // 200002.0
int atan2_16::xi#2 // 5.00000005E7
int atan2_16::xi#3 // 2.6673333666666668E7
int atan2_16::xi#8 // 1.00000001E8
int atan2_16::y
int atan2_16::y#0 // 10250.125
int atan2_16::yd
int atan2_16::yd#1 // 1.000000001E9
int atan2_16::yd#10 // 2.00000002E8
int atan2_16::yd#2 // 2.00000002E8
int atan2_16::yd#3 // 4.6000000099999994E8
int atan2_16::yd#5 // 2.00000002E8
int atan2_16::yi
int atan2_16::yi#0 // 60000.600000000006
int atan2_16::yi#1 // 6.6666667333333336E7
int atan2_16::yi#16 // 200002.0
int atan2_16::yi#2 // 6.6666667333333336E7
int atan2_16::yi#3 // 3.53000004117647E7
int atan2_16::yi#8 // 1.00000001E8
unsigned int * bsearch16u(unsigned int key , unsigned int *items , char num)
char bsearch16u::$14 // 2.000000002E9
unsigned int *bsearch16u::$2 // 2000002.0
char bsearch16u::$6 // 2.000000002E9
unsigned int *bsearch16u::items
unsigned int *bsearch16u::items#0 // 1.000000001E9
unsigned int *bsearch16u::items#1 // 550001.0
unsigned int *bsearch16u::items#2 // 3.337777785555556E8
unsigned int *bsearch16u::items#8 // 1.5000000015E9
unsigned int bsearch16u::key
unsigned int bsearch16u::key#0 // 73333.46666666667
char bsearch16u::num
char bsearch16u::num#0 // 2.000000002E9
char bsearch16u::num#1 // 2.000000002E9
char bsearch16u::num#3 // 5.555555561111112E8
char bsearch16u::num#5 // 3.000000003E9
unsigned int *bsearch16u::pivot
unsigned int *bsearch16u::pivot#0 // 5.0025000075E8
int bsearch16u::result
int bsearch16u::result#0 // 1.5000000015E9
unsigned int *bsearch16u::return
unsigned int *bsearch16u::return#1 // 700001.0
unsigned int *bsearch16u::return#2 // 3000003.0
unsigned int *bsearch16u::return#3 // 200002.0
unsigned int *bsearch16u::return#7 // 2000002.0
void doplasma(char *screen)
char doplasma::$2 // 2000002.0
char *doplasma::angle
char *doplasma::angle#0 // 500.5
char *doplasma::angle#1 // 50000.5
char *doplasma::angle#4 // 171571.99999999997
char *doplasma::dist
char *doplasma::dist#0 // 667.3333333333334
char *doplasma::dist#1 // 66667.33333333333
char *doplasma::dist#4 // 150125.5
char *doplasma::screen
char *doplasma::screen#2 // 40000.4
char *doplasma::screen#5 // 200167.33333333334
char *doplasma::screen#6 // 200.2
char *doplasma::sin_x
char *doplasma::sin_x#0 // 77000.15384615384
char *doplasma::sin_y
char *doplasma::sin_y#0 // 83416.83333333334
char doplasma::x
char doplasma::x#1 // 1500001.5
char doplasma::x#2 // 1666668.3333333335
char doplasma::y
char doplasma::y#1 // 150001.5
char doplasma::y#4 // 22222.444444444445
char *heap_head
char *heap_head#0 // 1100.4
char *heap_head#13 // 11004.0
void init_angle_screen(char *screen)
char init_angle_screen::$11 // 20002.0
char init_angle_screen::$12 // 20002.0
char init_angle_screen::$13 // 20002.0
char init_angle_screen::$3 // 20002.0
char init_angle_screen::$4 // 20002.0
char init_angle_screen::$6 // 20002.0
unsigned int init_angle_screen::$9 // 20002.0
char init_angle_screen::ang_w
char init_angle_screen::ang_w#0 // 8334.166666666666
unsigned int init_angle_screen::angle_w
unsigned int init_angle_screen::angle_w#0 // 20002.0
char *init_angle_screen::screen
char *init_angle_screen::screen#0 // 112.0
char *init_angle_screen::screen_bottomline
char *init_angle_screen::screen_bottomline#0 // 151.5
char *init_angle_screen::screen_bottomline#1 // 667.3333333333334
char *init_angle_screen::screen_bottomline#6 // 884.2
char *init_angle_screen::screen_topline
char *init_angle_screen::screen_topline#1 // 500.5
char *init_angle_screen::screen_topline#6 // 921.0416666666666
char *init_angle_screen::screen_topline#7 // 202.0
char init_angle_screen::x
char init_angle_screen::x#1 // 10001.0
char init_angle_screen::x#2 // 2857.4285714285716
char init_angle_screen::xb
char init_angle_screen::xb#1 // 20002.0
char init_angle_screen::xb#2 // 1818.3636363636363
int init_angle_screen::xw
unsigned int init_angle_screen::xw#0 // 3333.6666666666665
char init_angle_screen::y
char init_angle_screen::y#1 // 1501.5
char init_angle_screen::y#5 // 461.65384615384613
int init_angle_screen::yw
unsigned int init_angle_screen::yw#0 // 5000.5
void init_dist_screen(char *screen)
char init_dist_screen::$14 // 20002.0
char init_dist_screen::$16 // 20002.0
char init_dist_screen::$5 // 2002.0
char init_dist_screen::$7 // 2002.0
char init_dist_screen::d
char init_dist_screen::d#0 // 12501.25
unsigned int init_dist_screen::ds
unsigned int init_dist_screen::ds#0 // 20002.0
char *init_dist_screen::screen
char *init_dist_screen::screen#0 // 53.25
char *init_dist_screen::screen_bottomline
char *init_dist_screen::screen_bottomline#0 // 202.0
char *init_dist_screen::screen_bottomline#1 // 667.3333333333334
char *init_dist_screen::screen_bottomline#11 // 669.8484848484848
char *init_dist_screen::screen_topline
char *init_dist_screen::screen_topline#1 // 500.5
char *init_dist_screen::screen_topline#11 // 690.78125
char init_dist_screen::x
char init_dist_screen::x#1 // 10001.0
char init_dist_screen::x#2 // 3000.3
char init_dist_screen::x2
char init_dist_screen::x2#0 // 20002.0
char init_dist_screen::xb
char init_dist_screen::xb#1 // 20002.0
char init_dist_screen::xb#2 // 1904.952380952381
char init_dist_screen::xd
char init_dist_screen::xd#0 // 30003.0
unsigned int init_dist_screen::xds
unsigned int init_dist_screen::xds#0 // 20002.0
char init_dist_screen::y
char init_dist_screen::y#1 // 1501.5
char init_dist_screen::y#10 // 88.32352941176471
char init_dist_screen::y2
char init_dist_screen::y2#0 // 2002.0
char init_dist_screen::yd
char init_dist_screen::yd#0 // 3003.0
unsigned int init_dist_screen::yds
unsigned int init_dist_screen::yds#0 // 478.3478260869565
void init_squares()
char init_squares::$3 // 20002.0
char init_squares::$4 // 20002.0
char init_squares::i
char init_squares::i#1 // 20002.0
char init_squares::i#2 // 5714.857142857143
unsigned int init_squares::sqr
unsigned int init_squares::sqr#1 // 10001.0
unsigned int init_squares::sqr#2 // 5000.5
unsigned int *init_squares::squares
unsigned int *init_squares::squares#0 // 2002.0
unsigned int *init_squares::squares#1 // 4000.4
unsigned int *init_squares::squares#2 // 10334.666666666666
void main()
char *main::toD0181_gfx
char main::toD0181_return
char *main::toD0181_screen
char *main::toD0182_gfx
char main::toD0182_return
char *main::toD0182_screen
void make_plasma_charset(char *charset)
unsigned int make_plasma_charset::$10 // 20002.0
unsigned int make_plasma_charset::$11 // 20002.0
char make_plasma_charset::$12 // 2002.0
char *make_plasma_charset::$16 // 20002.0
char make_plasma_charset::$3 // 2002.0
char make_plasma_charset::$7 // 200002.0
char make_plasma_charset::b
char make_plasma_charset::b#1 // 200002.0
char make_plasma_charset::b#2 // 38750.5
char make_plasma_charset::b#6 // 150001.5
unsigned int make_plasma_charset::c
unsigned int make_plasma_charset::c#1 // 2002.0
unsigned int make_plasma_charset::c#2 // 625.25
char *make_plasma_charset::charset
char make_plasma_charset::i
char make_plasma_charset::i#1 // 20002.0
char make_plasma_charset::i#2 // 2857.4285714285716
char make_plasma_charset::ii
char make_plasma_charset::ii#1 // 200002.0
char make_plasma_charset::ii#2 // 57143.42857142857
char make_plasma_charset::s
char make_plasma_charset::s#0 // 6312.625
char make_plasma_charset::sid_rnd1_return
char make_plasma_charset::sid_rnd1_return#0 // 200002.0
void * malloc(unsigned int size)
char *malloc::mem
char *malloc::mem#0 // 3333.6666666666665
void *malloc::return
unsigned int malloc::size
unsigned int malloc::size#3 // 10001.0
void * memset(void *str , char c , unsigned int num)
char memset::c
char memset::c#4 // 14285.857142857143
char *memset::dst
char *memset::dst#1 // 200002.0
char *memset::dst#2 // 136668.3333333333
char *memset::dst#4 // 20002.0
char *memset::end
char *memset::end#0 // 18333.666666666664
unsigned int memset::num
void *memset::return
void *memset::str
void *memset::str#3
void print_char(char ch)
char print_char::ch
char *print_char_cursor
char *print_char_cursor#0 // 3667.333333333333
char *print_char_cursor#19 // 956.695652173913
char *print_char_cursor#32 // 1501.5
void print_cls()
char *print_line_cursor
char *print_screen
char sin_offset_x
char sin_offset_x#10 // 101.0
char sin_offset_x#11 // 137.75
char sin_offset_x#13 // 133.66666666666669
char sin_offset_y
char sin_offset_y#10 // 101.0
char sin_offset_y#11 // 129.64705882352942
char sin_offset_y#13 // 150.375
unsigned int sqr(char val)
char sqr::$0 // 200002.0
unsigned int sqr::return
unsigned int sqr::return#0 // 27750.75
unsigned int sqr::return#2 // 2002.0
unsigned int sqr::return#3 // 20002.0
char sqr::val
char sqr::val#0 // 2002.0
char sqr::val#1 // 20002.0
char sqr::val#2 // 111003.0
char sqrt(unsigned int val)
unsigned int sqrt::$1 // 100001.0
unsigned int sqrt::$2 // 200002.0
unsigned int *sqrt::found
unsigned int *sqrt::found#0 // 200002.0
char sqrt::return
char sqrt::return#0 // 36667.33333333333
char sqrt::return#2 // 20002.0
char sqrt::sq
unsigned int sqrt::val
unsigned int sqrt::val#0 // 110002.0

Initial phi equivalence classes
[ heap_head#13 heap_head#0 ]
[ malloc::size#3 ]
[ init_dist_screen::y#10 init_dist_screen::y#1 ]
[ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ]
[ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ]
[ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
[ init_dist_screen::x#2 init_dist_screen::x#1 ]
[ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
[ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ]
[ init_angle_screen::y#5 init_angle_screen::y#1 ]
[ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ]
[ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ]
[ init_angle_screen::x#2 init_angle_screen::x#1 ]
[ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
[ make_plasma_charset::c#2 make_plasma_charset::c#1 ]
[ print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 ]
[ make_plasma_charset::i#2 make_plasma_charset::i#1 ]
[ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ]
[ make_plasma_charset::b#2 make_plasma_charset::b#6 make_plasma_charset::b#1 ]
[ memset::str#3 ]
[ memset::c#4 ]
[ memset::dst#2 memset::dst#4 memset::dst#1 ]
[ sin_offset_x#11 sin_offset_x#10 sin_offset_x#13 ]
[ sin_offset_y#11 sin_offset_y#10 sin_offset_y#13 ]
[ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 ]
[ doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ]
[ doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ]
[ doplasma::y#4 doplasma::y#1 ]
[ doplasma::x#2 doplasma::x#1 ]
[ init_squares::i#2 init_squares::i#1 ]
[ init_squares::sqr#2 init_squares::sqr#1 ]
[ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ]
[ sqr::val#2 sqr::val#1 sqr::val#0 ]
[ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ]
[ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ]
[ atan2_16::i#2 atan2_16::i#1 ]
[ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ]
[ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ]
[ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
[ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
[ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
[ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ]
[ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
Added variable SCREEN_DIST#0 to live range equivalence class [ SCREEN_DIST#0 ]
Added variable SCREEN_ANGLE#0 to live range equivalence class [ SCREEN_ANGLE#0 ]
Added variable malloc::mem#0 to live range equivalence class [ malloc::mem#0 ]
Added variable init_angle_screen::screen#0 to live range equivalence class [ init_angle_screen::screen#0 ]
Added variable init_dist_screen::y2#0 to live range equivalence class [ init_dist_screen::y2#0 ]
Added variable sqr::return#2 to live range equivalence class [ sqr::return#2 ]
Added variable init_dist_screen::yds#0 to live range equivalence class [ init_dist_screen::yds#0 ]
Added variable init_dist_screen::x2#0 to live range equivalence class [ init_dist_screen::x2#0 ]
Added variable sqr::return#3 to live range equivalence class [ sqr::return#3 ]
Added variable init_dist_screen::xds#0 to live range equivalence class [ init_dist_screen::xds#0 ]
Added variable init_dist_screen::ds#0 to live range equivalence class [ init_dist_screen::ds#0 ]
Added variable sqrt::val#0 to live range equivalence class [ sqrt::val#0 ]
Added variable sqrt::return#2 to live range equivalence class [ sqrt::return#2 ]
Added variable init_dist_screen::d#0 to live range equivalence class [ init_dist_screen::d#0 ]
Added variable init_angle_screen::$3 to live range equivalence class [ init_angle_screen::$3 ]
Added variable init_angle_screen::$4 to live range equivalence class [ init_angle_screen::$4 ]
Added variable init_angle_screen::xw#0 to live range equivalence class [ init_angle_screen::xw#0 ]
Added variable init_angle_screen::$6 to live range equivalence class [ init_angle_screen::$6 ]
Added variable init_angle_screen::yw#0 to live range equivalence class [ init_angle_screen::yw#0 ]
Added variable atan2_16::x#0 to live range equivalence class [ atan2_16::x#0 ]
Added variable atan2_16::y#0 to live range equivalence class [ atan2_16::y#0 ]
Added variable atan2_16::return#2 to live range equivalence class [ atan2_16::return#2 ]
Added variable init_angle_screen::angle_w#0 to live range equivalence class [ init_angle_screen::angle_w#0 ]
Added variable init_angle_screen::$9 to live range equivalence class [ init_angle_screen::$9 ]
Added variable init_angle_screen::ang_w#0 to live range equivalence class [ init_angle_screen::ang_w#0 ]
Added variable init_angle_screen::$11 to live range equivalence class [ init_angle_screen::$11 ]
Added variable init_angle_screen::$12 to live range equivalence class [ init_angle_screen::$12 ]
Added variable init_angle_screen::$13 to live range equivalence class [ init_angle_screen::$13 ]
Added variable make_plasma_charset::$3 to live range equivalence class [ make_plasma_charset::$3 ]
Added variable make_plasma_charset::s#0 to live range equivalence class [ make_plasma_charset::s#0 ]
Added variable make_plasma_charset::$12 to live range equivalence class [ make_plasma_charset::$12 ]
Added variable make_plasma_charset::$10 to live range equivalence class [ make_plasma_charset::$10 ]
Added variable make_plasma_charset::$11 to live range equivalence class [ make_plasma_charset::$11 ]
Added variable make_plasma_charset::$16 to live range equivalence class [ make_plasma_charset::$16 ]
Added variable make_plasma_charset::sid_rnd1_return#0 to live range equivalence class [ make_plasma_charset::sid_rnd1_return#0 ]
Added variable make_plasma_charset::$7 to live range equivalence class [ make_plasma_charset::$7 ]
Added variable memset::end#0 to live range equivalence class [ memset::end#0 ]
Added variable doplasma::sin_x#0 to live range equivalence class [ doplasma::sin_x#0 ]
Added variable doplasma::sin_y#0 to live range equivalence class [ doplasma::sin_y#0 ]
Added variable doplasma::$2 to live range equivalence class [ doplasma::$2 ]
Added variable SQUARES#0 to live range equivalence class [ SQUARES#0 ]
Added variable init_squares::$3 to live range equivalence class [ init_squares::$3 ]
Added variable init_squares::$4 to live range equivalence class [ init_squares::$4 ]
Added variable sqr::$0 to live range equivalence class [ sqr::$0 ]
Added variable sqr::return#0 to live range equivalence class [ sqr::return#0 ]
Added variable bsearch16u::key#0 to live range equivalence class [ bsearch16u::key#0 ]
Added variable bsearch16u::return#3 to live range equivalence class [ bsearch16u::return#3 ]
Added variable sqrt::found#0 to live range equivalence class [ sqrt::found#0 ]
Added variable sqrt::$2 to live range equivalence class [ sqrt::$2 ]
Added variable sqrt::$1 to live range equivalence class [ sqrt::$1 ]
Added variable sqrt::return#0 to live range equivalence class [ sqrt::return#0 ]
Added variable atan2_16::$23 to live range equivalence class [ atan2_16::$23 ]
Added variable atan2_16::$22 to live range equivalence class [ atan2_16::$22 ]
Added variable bsearch16u::$6 to live range equivalence class [ bsearch16u::$6 ]
Added variable bsearch16u::$14 to live range equivalence class [ bsearch16u::$14 ]
Added variable bsearch16u::pivot#0 to live range equivalence class [ bsearch16u::pivot#0 ]
Added variable bsearch16u::result#0 to live range equivalence class [ bsearch16u::result#0 ]
Complete equivalence classes
[ heap_head#13 heap_head#0 ]
[ malloc::size#3 ]
[ init_dist_screen::y#10 init_dist_screen::y#1 ]
[ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ]
[ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ]
[ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
[ init_dist_screen::x#2 init_dist_screen::x#1 ]
[ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
[ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ]
[ init_angle_screen::y#5 init_angle_screen::y#1 ]
[ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ]
[ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ]
[ init_angle_screen::x#2 init_angle_screen::x#1 ]
[ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
[ make_plasma_charset::c#2 make_plasma_charset::c#1 ]
[ print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 ]
[ make_plasma_charset::i#2 make_plasma_charset::i#1 ]
[ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ]
[ make_plasma_charset::b#2 make_plasma_charset::b#6 make_plasma_charset::b#1 ]
[ memset::str#3 ]
[ memset::c#4 ]
[ memset::dst#2 memset::dst#4 memset::dst#1 ]
[ sin_offset_x#11 sin_offset_x#10 sin_offset_x#13 ]
[ sin_offset_y#11 sin_offset_y#10 sin_offset_y#13 ]
[ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 ]
[ doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ]
[ doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ]
[ doplasma::y#4 doplasma::y#1 ]
[ doplasma::x#2 doplasma::x#1 ]
[ init_squares::i#2 init_squares::i#1 ]
[ init_squares::sqr#2 init_squares::sqr#1 ]
[ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ]
[ sqr::val#2 sqr::val#1 sqr::val#0 ]
[ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ]
[ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ]
[ atan2_16::i#2 atan2_16::i#1 ]
[ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ]
[ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ]
[ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
[ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
[ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
[ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ]
[ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
[ SCREEN_DIST#0 ]
[ SCREEN_ANGLE#0 ]
[ malloc::mem#0 ]
[ init_angle_screen::screen#0 ]
[ init_dist_screen::y2#0 ]
[ sqr::return#2 ]
[ init_dist_screen::yds#0 ]
[ init_dist_screen::x2#0 ]
[ sqr::return#3 ]
[ init_dist_screen::xds#0 ]
[ init_dist_screen::ds#0 ]
[ sqrt::val#0 ]
[ sqrt::return#2 ]
[ init_dist_screen::d#0 ]
[ init_angle_screen::$3 ]
[ init_angle_screen::$4 ]
[ init_angle_screen::xw#0 ]
[ init_angle_screen::$6 ]
[ init_angle_screen::yw#0 ]
[ atan2_16::x#0 ]
[ atan2_16::y#0 ]
[ atan2_16::return#2 ]
[ init_angle_screen::angle_w#0 ]
[ init_angle_screen::$9 ]
[ init_angle_screen::ang_w#0 ]
[ init_angle_screen::$11 ]
[ init_angle_screen::$12 ]
[ init_angle_screen::$13 ]
[ make_plasma_charset::$3 ]
[ make_plasma_charset::s#0 ]
[ make_plasma_charset::$12 ]
[ make_plasma_charset::$10 ]
[ make_plasma_charset::$11 ]
[ make_plasma_charset::$16 ]
[ make_plasma_charset::sid_rnd1_return#0 ]
[ make_plasma_charset::$7 ]
[ memset::end#0 ]
[ doplasma::sin_x#0 ]
[ doplasma::sin_y#0 ]
[ doplasma::$2 ]
[ SQUARES#0 ]
[ init_squares::$3 ]
[ init_squares::$4 ]
[ sqr::$0 ]
[ sqr::return#0 ]
[ bsearch16u::key#0 ]
[ bsearch16u::return#3 ]
[ sqrt::found#0 ]
[ sqrt::$2 ]
[ sqrt::$1 ]
[ sqrt::return#0 ]
[ atan2_16::$23 ]
[ atan2_16::$22 ]
[ bsearch16u::$6 ]
[ bsearch16u::$14 ]
[ bsearch16u::pivot#0 ]
[ bsearch16u::result#0 ]
Allocated zp[2]:2 [ heap_head#13 heap_head#0 ]
Allocated zp[2]:4 [ malloc::size#3 ]
Allocated zp[1]:6 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
Allocated zp[2]:7 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ]
Allocated zp[2]:9 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ]
Allocated zp[1]:11 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
Allocated zp[1]:12 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Allocated zp[1]:13 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Allocated zp[1]:14 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ]
Allocated zp[1]:15 [ init_angle_screen::y#5 init_angle_screen::y#1 ]
Allocated zp[2]:16 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ]
Allocated zp[2]:18 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ]
Allocated zp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
Allocated zp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Allocated zp[2]:22 [ make_plasma_charset::c#2 make_plasma_charset::c#1 ]
Allocated zp[2]:24 [ print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 ]
Allocated zp[1]:26 [ make_plasma_charset::i#2 make_plasma_charset::i#1 ]
Allocated zp[1]:27 [ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ]
Allocated zp[1]:28 [ make_plasma_charset::b#2 make_plasma_charset::b#6 make_plasma_charset::b#1 ]
Allocated zp[2]:29 [ memset::str#3 ]
Allocated zp[1]:31 [ memset::c#4 ]
Allocated zp[2]:32 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
Allocated zp[1]:34 [ sin_offset_x#11 sin_offset_x#10 sin_offset_x#13 ]
Allocated zp[1]:35 [ sin_offset_y#11 sin_offset_y#10 sin_offset_y#13 ]
Allocated zp[2]:36 [ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 ]
Allocated zp[2]:38 [ doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ]
Allocated zp[2]:40 [ doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ]
Allocated zp[1]:42 [ doplasma::y#4 doplasma::y#1 ]
Allocated zp[1]:43 [ doplasma::x#2 doplasma::x#1 ]
Allocated zp[1]:44 [ init_squares::i#2 init_squares::i#1 ]
Allocated zp[2]:45 [ init_squares::sqr#2 init_squares::sqr#1 ]
Allocated zp[2]:47 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ]
Allocated zp[1]:49 [ sqr::val#2 sqr::val#1 sqr::val#0 ]
Allocated zp[2]:50 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ]
Allocated zp[2]:52 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ]
Allocated zp[1]:54 [ atan2_16::i#2 atan2_16::i#1 ]
Allocated zp[2]:55 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ]
Allocated zp[2]:57 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ]
Allocated zp[1]:59 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
Allocated zp[2]:60 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
Allocated zp[2]:62 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
Allocated zp[2]:64 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ]
Allocated zp[1]:66 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
Allocated zp[2]:67 [ SCREEN_DIST#0 ]
Allocated zp[2]:69 [ SCREEN_ANGLE#0 ]
Allocated zp[2]:71 [ malloc::mem#0 ]
Allocated zp[2]:73 [ init_angle_screen::screen#0 ]
Allocated zp[1]:75 [ init_dist_screen::y2#0 ]
Allocated zp[2]:76 [ sqr::return#2 ]
Allocated zp[2]:78 [ init_dist_screen::yds#0 ]
Allocated zp[1]:80 [ init_dist_screen::x2#0 ]
Allocated zp[2]:81 [ sqr::return#3 ]
Allocated zp[2]:83 [ init_dist_screen::xds#0 ]
Allocated zp[2]:85 [ init_dist_screen::ds#0 ]
Allocated zp[2]:87 [ sqrt::val#0 ]
Allocated zp[1]:89 [ sqrt::return#2 ]
Allocated zp[1]:90 [ init_dist_screen::d#0 ]
Allocated zp[1]:91 [ init_angle_screen::$3 ]
Allocated zp[1]:92 [ init_angle_screen::$4 ]
Allocated zp[2]:93 [ init_angle_screen::xw#0 ]
Allocated zp[1]:95 [ init_angle_screen::$6 ]
Allocated zp[2]:96 [ init_angle_screen::yw#0 ]
Allocated zp[2]:98 [ atan2_16::x#0 ]
Allocated zp[2]:100 [ atan2_16::y#0 ]
Allocated zp[2]:102 [ atan2_16::return#2 ]
Allocated zp[2]:104 [ init_angle_screen::angle_w#0 ]
Allocated zp[2]:106 [ init_angle_screen::$9 ]
Allocated zp[1]:108 [ init_angle_screen::ang_w#0 ]
Allocated zp[1]:109 [ init_angle_screen::$11 ]
Allocated zp[1]:110 [ init_angle_screen::$12 ]
Allocated zp[1]:111 [ init_angle_screen::$13 ]
Allocated zp[1]:112 [ make_plasma_charset::$3 ]
Allocated zp[1]:113 [ make_plasma_charset::s#0 ]
Allocated zp[1]:114 [ make_plasma_charset::$12 ]
Allocated zp[2]:115 [ make_plasma_charset::$10 ]
Allocated zp[2]:117 [ make_plasma_charset::$11 ]
Allocated zp[2]:119 [ make_plasma_charset::$16 ]
Allocated zp[1]:121 [ make_plasma_charset::sid_rnd1_return#0 ]
Allocated zp[1]:122 [ make_plasma_charset::$7 ]
Allocated zp[2]:123 [ memset::end#0 ]
Allocated zp[2]:125 [ doplasma::sin_x#0 ]
Allocated zp[2]:127 [ doplasma::sin_y#0 ]
Allocated zp[1]:129 [ doplasma::$2 ]
Allocated zp[2]:130 [ SQUARES#0 ]
Allocated zp[1]:132 [ init_squares::$3 ]
Allocated zp[1]:133 [ init_squares::$4 ]
Allocated zp[1]:134 [ sqr::$0 ]
Allocated zp[2]:135 [ sqr::return#0 ]
Allocated zp[2]:137 [ bsearch16u::key#0 ]
Allocated zp[2]:139 [ bsearch16u::return#3 ]
Allocated zp[2]:141 [ sqrt::found#0 ]
Allocated zp[2]:143 [ sqrt::$2 ]
Allocated zp[2]:145 [ sqrt::$1 ]
Allocated zp[1]:147 [ sqrt::return#0 ]
Allocated zp[1]:148 [ atan2_16::$23 ]
Allocated zp[1]:149 [ atan2_16::$22 ]
Allocated zp[1]:150 [ bsearch16u::$6 ]
Allocated zp[1]:151 [ bsearch16u::$14 ]
Allocated zp[2]:152 [ bsearch16u::pivot#0 ]
Allocated zp[2]:154 [ bsearch16u::result#0 ]
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [3] SCREEN_DIST#0 = (char *)(void *)malloc::mem#0 [ SCREEN_DIST#0 heap_head#0 ] (  [ SCREEN_DIST#0 heap_head#0 ] { { heap_head#0 = heap_head#13 } }  ) always clobbers reg byte a 
Statement [5] SCREEN_ANGLE#0 = (char *)(void *)malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 ] (  [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 ] { }  ) always clobbers reg byte a 
Statement [10] malloc::mem#0 = heap_head#13 - malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { }  malloc:4 [ SCREEN_DIST#0 malloc::mem#0 ] { { heap_head#0 = heap_head#13 } }  main:7::init_dist_screen:14::init_squares:30::malloc:159 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { heap_head#0 = heap_head#13 } }  ) always clobbers reg byte a 
Statement [11] heap_head#0 = malloc::mem#0 [ malloc::mem#0 heap_head#0 ] ( malloc:2 [ malloc::mem#0 heap_head#0 ] { }  malloc:4 [ SCREEN_DIST#0 malloc::mem#0 heap_head#0 ] { { heap_head#0 = heap_head#13 } }  main:7::init_dist_screen:14::init_squares:30::malloc:159 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { heap_head#0 = heap_head#13 } }  ) always clobbers reg byte a 
Statement [13] init_dist_screen::screen#0 = SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 init_dist_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 init_dist_screen::screen#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [15] init_angle_screen::screen#0 = SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [25] *D018 = main::toD0181_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:34 [ sin_offset_x#11 sin_offset_x#10 sin_offset_x#13 ]
Removing always clobbered register reg byte a as potential for zp[1]:35 [ sin_offset_y#11 sin_offset_y#10 sin_offset_y#13 ]
Statement [28] *D018 = main::toD0182_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] { }  ) always clobbers reg byte a 
Statement [31] init_dist_screen::screen_bottomline#0 = init_dist_screen::screen#0 + (unsigned int)$28*$18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [33] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:6 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
Statement [35] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [39] sqr::return#2 = sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } }  ) always clobbers reg byte a 
Statement [40] init_dist_screen::yds#0 = sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [43] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [44] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [48] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:12 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:13 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Statement [50] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [54] sqr::return#3 = sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } }  ) always clobbers reg byte a 
Statement [55] init_dist_screen::xds#0 = sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [56] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [57] sqrt::val#0 = init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [69] init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#0 + (unsigned int)$28*$c [ init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_bottomline#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [70] init_angle_screen::screen_topline#7 = init_angle_screen::screen_bottomline#0 [ init_angle_screen::screen_bottomline#0 init_angle_screen::screen_topline#7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_topline#7 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [74] init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#6 - $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:15 [ init_angle_screen::y#5 init_angle_screen::y#1 ]
Statement [75] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [79] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Statement [80] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [82] init_angle_screen::$6 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [84] atan2_16::x#0 = (int)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [85] atan2_16::y#0 = (int)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [87] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [88] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [89] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [92] init_angle_screen::$11 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:108 [ init_angle_screen::ang_w#0 ]
Statement [94] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [96] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [101] *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff [ ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { }  ) always clobbers reg byte a 
Statement [102] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE [ ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { }  ) always clobbers reg byte a 
Statement [106] if(make_plasma_charset::c#2<$100) goto make_plasma_charset::@2 [ make_plasma_charset::c#2 print_char_cursor#19 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 ] { }  ) always clobbers reg byte a 
Statement [112] make_plasma_charset::$12 = make_plasma_charset::c#2 & 7 [ make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::$12 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::$12 ] { }  ) always clobbers reg byte a 
Statement [120] make_plasma_charset::$10 = make_plasma_charset::c#2 << 3 [ make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$10 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$10 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:113 [ make_plasma_charset::s#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:26 [ make_plasma_charset::i#2 make_plasma_charset::i#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:28 [ make_plasma_charset::b#2 make_plasma_charset::b#6 make_plasma_charset::b#1 ]
Statement [121] make_plasma_charset::$11 = make_plasma_charset::$10 + make_plasma_charset::i#2 [ make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$11 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$11 ] { }  ) always clobbers reg byte a 
Statement [122] make_plasma_charset::$16 = CHARSET + make_plasma_charset::$11 [ make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$16 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$16 ] { }  ) always clobbers reg byte a 
Statement [123] *make_plasma_charset::$16 = make_plasma_charset::b#2 [ make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 ] { }  ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:113 [ make_plasma_charset::s#0 ]
Removing always clobbered register reg byte y as potential for zp[1]:26 [ make_plasma_charset::i#2 make_plasma_charset::i#1 ]
Statement [128] make_plasma_charset::b#1 = make_plasma_charset::b#2 | make_plasma_charset::bittab[make_plasma_charset::ii#2] [ make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:27 [ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ]
Statement [132] memset::end#0 = (char *)memset::str#3 + $3e8 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:7::memset:20 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#4 memset::end#0 ] { }  main:7::make_plasma_charset:18::print_cls:104::memset:228 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#4 memset::end#0 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:31 [ memset::c#4 ]
Statement [133] memset::dst#4 = (char *)memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:7::memset:20 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#4 ] { }  main:7::make_plasma_charset:18::print_cls:104::memset:228 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#4 ] { }  ) always clobbers reg byte a 
Statement [135] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:7::memset:20 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { }  main:7::make_plasma_charset:18::print_cls:104::memset:228 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { }  ) always clobbers reg byte a 
Statement [137] *memset::dst#2 = memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:7::memset:20 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { }  main:7::make_plasma_charset:18::print_cls:104::memset:228 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { }  ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:31 [ memset::c#4 ]
Statement [140] doplasma::angle#0 = SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [141] doplasma::dist#0 = SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [142] doplasma::sin_x#0 = SINTABLE + sin_offset_x#11 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [143] doplasma::sin_y#0 = SINTABLE + sin_offset_y#11 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [146] doplasma::$2 = doplasma::sin_x#0[doplasma::angle#4[doplasma::x#2]] + doplasma::sin_y#0[doplasma::dist#4[doplasma::x#2]] [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:34 [ sin_offset_x#11 sin_offset_x#10 sin_offset_x#13 ]
Removing always clobbered register reg byte y as potential for zp[1]:35 [ sin_offset_y#11 sin_offset_y#10 sin_offset_y#13 ]
Removing always clobbered register reg byte a as potential for zp[1]:42 [ doplasma::y#4 doplasma::y#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:42 [ doplasma::y#4 doplasma::y#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:43 [ doplasma::x#2 doplasma::x#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:43 [ doplasma::x#2 doplasma::x#1 ]
Statement [147] doplasma::screen#5[doplasma::x#2] = doplasma::$2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte y 
Statement [150] doplasma::screen#2 = doplasma::screen#5 + $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [151] doplasma::angle#1 = doplasma::angle#4 + $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [152] doplasma::dist#1 = doplasma::dist#4 + $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [155] sin_offset_x#13 = sin_offset_x#11 - 3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#11 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#11 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#11 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a reg byte x 
Removing always clobbered register reg byte x as potential for zp[1]:35 [ sin_offset_y#11 sin_offset_y#10 sin_offset_y#13 ]
Statement [156] sin_offset_y#13 = sin_offset_y#11 - 7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a reg byte x 
Removing always clobbered register reg byte x as potential for zp[1]:34 [ sin_offset_x#11 sin_offset_x#10 sin_offset_x#13 ]
Statement [160] SQUARES#0 = (void *)malloc::mem#0 [ SQUARES#0 ] ( main:7::init_dist_screen:14::init_squares:30 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [161] init_squares::squares#0 = (unsigned int *)SQUARES#0 [ SQUARES#0 init_squares::squares#0 ] ( main:7::init_dist_screen:14::init_squares:30 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::squares#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [165] *init_squares::squares#2 = init_squares::sqr#2 [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:14::init_squares:30 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte a as potential for zp[1]:44 [ init_squares::i#2 init_squares::i#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:44 [ init_squares::i#2 init_squares::i#1 ]
Statement [166] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_UNSIGNED_INT [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:7::init_dist_screen:14::init_squares:30 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [167] init_squares::$3 = init_squares::i#2 << 1 [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:14::init_squares:30 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [169] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4 [ SQUARES#0 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:14::init_squares:30 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [172] sqr::$0 = sqr::val#2 << 1 [ SQUARES#0 sqr::$0 ] ( main:7::init_dist_screen:14::sqr:38 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#0 sqr::$0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } }  main:7::init_dist_screen:14::sqr:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqr::$0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } }  ) always clobbers reg byte a 
Statement [173] sqr::return#0 = ((unsigned int *)SQUARES#0)[sqr::$0] [ sqr::return#0 SQUARES#0 ] ( main:7::init_dist_screen:14::sqr:38 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } }  main:7::init_dist_screen:14::sqr:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } }  ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:6 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:12 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:13 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Statement [175] bsearch16u::key#0 = sqrt::val#0 [ SQUARES#0 bsearch16u::key#0 ] ( main:7::init_dist_screen:14::sqrt:58 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [176] bsearch16u::items#1 = (unsigned int *)SQUARES#0 [ SQUARES#0 bsearch16u::key#0 bsearch16u::items#1 ] ( main:7::init_dist_screen:14::sqrt:58 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::items#1 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [178] bsearch16u::return#3 = bsearch16u::return#1 [ SQUARES#0 bsearch16u::return#3 ] ( main:7::init_dist_screen:14::sqrt:58 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::return#3 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [179] sqrt::found#0 = bsearch16u::return#3 [ SQUARES#0 sqrt::found#0 ] ( main:7::init_dist_screen:14::sqrt:58 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqrt::found#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [180] sqrt::$2 = sqrt::found#0 - (unsigned int *)SQUARES#0 [ SQUARES#0 sqrt::$2 ] ( main:7::init_dist_screen:14::sqrt:58 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqrt::$2 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [181] sqrt::$1 = sqrt::$2 >> 1 [ SQUARES#0 sqrt::$1 ] ( main:7::init_dist_screen:14::sqrt:58 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqrt::$1 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [184] if(atan2_16::y#0>=0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [185] atan2_16::$2 = - atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [187] if(atan2_16::x#0>=0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [188] atan2_16::$7 = - atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [191] if(atan2_16::yi#3!=0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:54 [ atan2_16::i#2 atan2_16::i#1 ]
Statement [193] atan2_16::angle#1 = atan2_16::angle#6 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [194] if(atan2_16::x#0>=0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [195] atan2_16::angle#4 = $8000 - atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [197] if(atan2_16::y#0>=0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [198] atan2_16::angle#5 = - atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [202] atan2_16::xd#10 = atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:59 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
Statement [203] atan2_16::yd#10 = atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [207] atan2_16::xd#2 = atan2_16::xd#3 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [208] atan2_16::yd#2 = atan2_16::yd#3 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [210] if(atan2_16::yi#3>=0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [211] atan2_16::xi#2 = atan2_16::xi#3 - atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [212] atan2_16::yi#2 = atan2_16::yi#3 + atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [213] atan2_16::$23 = atan2_16::i#2 << 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [214] atan2_16::angle#3 = atan2_16::angle#12 - CORDIC_ATAN2_ANGLES_16[atan2_16::$23] [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [218] atan2_16::xi#1 = atan2_16::xi#3 + atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [219] atan2_16::yi#1 = atan2_16::yi#3 - atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [220] atan2_16::$22 = atan2_16::i#2 << 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [221] atan2_16::angle#2 = atan2_16::angle#12 + CORDIC_ATAN2_ANGLES_16[atan2_16::$22] [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [222] atan2_16::xd#1 = atan2_16::xd#3 >> 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [223] atan2_16::yd#1 = atan2_16::yd#3 >> 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [225] atan2_16::xi#13 = atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [226] atan2_16::yi#16 = atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [230] *print_char_cursor#19 = print_char::ch#0 [ print_char_cursor#19 ] ( main:7::make_plasma_charset:18::print_char:115 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 ] { }  ) always clobbers reg byte a reg byte y 
Statement [236] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::items#2 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a reg byte y 
Statement [237] bsearch16u::$2 = bsearch16u::items#2 - 1*SIZEOF_UNSIGNED_INT [ bsearch16u::$2 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::$2 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [241] bsearch16u::$6 = bsearch16u::num#3 >> 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:66 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
Statement [242] bsearch16u::$14 = bsearch16u::$6 << 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [243] bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [244] bsearch16u::result#0 = (int)bsearch16u::key#0 - (int)*bsearch16u::pivot#0 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:66 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
Statement [245] if(bsearch16u::result#0!=0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [246] bsearch16u::return#7 = bsearch16u::pivot#0 [ bsearch16u::return#7 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::return#7 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [247] if(bsearch16u::result#0<=0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [248] bsearch16u::items#0 = bsearch16u::pivot#0 + 1*SIZEOF_UNSIGNED_INT [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [3] SCREEN_DIST#0 = (char *)(void *)malloc::mem#0 [ SCREEN_DIST#0 heap_head#0 ] (  [ SCREEN_DIST#0 heap_head#0 ] { { heap_head#0 = heap_head#13 } }  ) always clobbers reg byte a 
Statement [5] SCREEN_ANGLE#0 = (char *)(void *)malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 ] (  [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 ] { }  ) always clobbers reg byte a 
Statement [10] malloc::mem#0 = heap_head#13 - malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { }  malloc:4 [ SCREEN_DIST#0 malloc::mem#0 ] { { heap_head#0 = heap_head#13 } }  main:7::init_dist_screen:14::init_squares:30::malloc:159 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { heap_head#0 = heap_head#13 } }  ) always clobbers reg byte a 
Statement [11] heap_head#0 = malloc::mem#0 [ malloc::mem#0 heap_head#0 ] ( malloc:2 [ malloc::mem#0 heap_head#0 ] { }  malloc:4 [ SCREEN_DIST#0 malloc::mem#0 heap_head#0 ] { { heap_head#0 = heap_head#13 } }  main:7::init_dist_screen:14::init_squares:30::malloc:159 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { heap_head#0 = heap_head#13 } }  ) always clobbers reg byte a 
Statement [13] init_dist_screen::screen#0 = SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 init_dist_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 init_dist_screen::screen#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [15] init_angle_screen::screen#0 = SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [25] *D018 = main::toD0181_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [28] *D018 = main::toD0182_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] { }  ) always clobbers reg byte a 
Statement [31] init_dist_screen::screen_bottomline#0 = init_dist_screen::screen#0 + (unsigned int)$28*$18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [33] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [35] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [39] sqr::return#2 = sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } }  ) always clobbers reg byte a 
Statement [40] init_dist_screen::yds#0 = sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [43] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [44] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [48] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [50] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [54] sqr::return#3 = sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } }  ) always clobbers reg byte a 
Statement [55] init_dist_screen::xds#0 = sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [56] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [57] sqrt::val#0 = init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [61] init_dist_screen::screen_topline#11[init_dist_screen::x#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:90 [ init_dist_screen::d#0 ]
Statement [62] init_dist_screen::screen_bottomline#11[init_dist_screen::x#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte y 
Statement [63] init_dist_screen::screen_topline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte y 
Statement [64] init_dist_screen::screen_bottomline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte y 
Statement [69] init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#0 + (unsigned int)$28*$c [ init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_bottomline#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [70] init_angle_screen::screen_topline#7 = init_angle_screen::screen_bottomline#0 [ init_angle_screen::screen_bottomline#0 init_angle_screen::screen_topline#7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_topline#7 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [74] init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#6 - $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [75] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [79] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [80] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [82] init_angle_screen::$6 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [84] atan2_16::x#0 = (int)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [85] atan2_16::y#0 = (int)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [87] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [88] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [89] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [91] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [92] init_angle_screen::$11 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [94] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [96] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [101] *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff [ ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { }  ) always clobbers reg byte a 
Statement [102] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE [ ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { }  ) always clobbers reg byte a 
Statement [106] if(make_plasma_charset::c#2<$100) goto make_plasma_charset::@2 [ make_plasma_charset::c#2 print_char_cursor#19 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 ] { }  ) always clobbers reg byte a 
Statement [112] make_plasma_charset::$12 = make_plasma_charset::c#2 & 7 [ make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::$12 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::$12 ] { }  ) always clobbers reg byte a 
Statement [120] make_plasma_charset::$10 = make_plasma_charset::c#2 << 3 [ make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$10 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$10 ] { }  ) always clobbers reg byte a 
Statement [121] make_plasma_charset::$11 = make_plasma_charset::$10 + make_plasma_charset::i#2 [ make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$11 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$11 ] { }  ) always clobbers reg byte a 
Statement [122] make_plasma_charset::$16 = CHARSET + make_plasma_charset::$11 [ make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$16 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$16 ] { }  ) always clobbers reg byte a 
Statement [123] *make_plasma_charset::$16 = make_plasma_charset::b#2 [ make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 ] { }  ) always clobbers reg byte a reg byte y 
Statement [128] make_plasma_charset::b#1 = make_plasma_charset::b#2 | make_plasma_charset::bittab[make_plasma_charset::ii#2] [ make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] { }  ) always clobbers reg byte a 
Statement [132] memset::end#0 = (char *)memset::str#3 + $3e8 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:7::memset:20 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#4 memset::end#0 ] { }  main:7::make_plasma_charset:18::print_cls:104::memset:228 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#4 memset::end#0 ] { }  ) always clobbers reg byte a 
Statement [133] memset::dst#4 = (char *)memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:7::memset:20 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#4 ] { }  main:7::make_plasma_charset:18::print_cls:104::memset:228 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#4 ] { }  ) always clobbers reg byte a 
Statement [135] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:7::memset:20 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { }  main:7::make_plasma_charset:18::print_cls:104::memset:228 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { }  ) always clobbers reg byte a 
Statement [137] *memset::dst#2 = memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:7::memset:20 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { }  main:7::make_plasma_charset:18::print_cls:104::memset:228 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { }  ) always clobbers reg byte a reg byte y 
Statement [140] doplasma::angle#0 = SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [141] doplasma::dist#0 = SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [142] doplasma::sin_x#0 = SINTABLE + sin_offset_x#11 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [143] doplasma::sin_y#0 = SINTABLE + sin_offset_y#11 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [146] doplasma::$2 = doplasma::sin_x#0[doplasma::angle#4[doplasma::x#2]] + doplasma::sin_y#0[doplasma::dist#4[doplasma::x#2]] [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a reg byte y 
Statement [147] doplasma::screen#5[doplasma::x#2] = doplasma::$2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte y 
Statement [150] doplasma::screen#2 = doplasma::screen#5 + $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [151] doplasma::angle#1 = doplasma::angle#4 + $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [152] doplasma::dist#1 = doplasma::dist#4 + $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [155] sin_offset_x#13 = sin_offset_x#11 - 3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#11 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#11 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#11 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a reg byte x 
Statement [156] sin_offset_y#13 = sin_offset_y#11 - 7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a reg byte x 
Statement [160] SQUARES#0 = (void *)malloc::mem#0 [ SQUARES#0 ] ( main:7::init_dist_screen:14::init_squares:30 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [161] init_squares::squares#0 = (unsigned int *)SQUARES#0 [ SQUARES#0 init_squares::squares#0 ] ( main:7::init_dist_screen:14::init_squares:30 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::squares#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [165] *init_squares::squares#2 = init_squares::sqr#2 [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:14::init_squares:30 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [166] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_UNSIGNED_INT [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:7::init_dist_screen:14::init_squares:30 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [167] init_squares::$3 = init_squares::i#2 << 1 [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:14::init_squares:30 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [169] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4 [ SQUARES#0 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:14::init_squares:30 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [172] sqr::$0 = sqr::val#2 << 1 [ SQUARES#0 sqr::$0 ] ( main:7::init_dist_screen:14::sqr:38 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#0 sqr::$0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } }  main:7::init_dist_screen:14::sqr:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqr::$0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } }  ) always clobbers reg byte a 
Statement [173] sqr::return#0 = ((unsigned int *)SQUARES#0)[sqr::$0] [ sqr::return#0 SQUARES#0 ] ( main:7::init_dist_screen:14::sqr:38 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } }  main:7::init_dist_screen:14::sqr:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } }  ) always clobbers reg byte a reg byte y 
Statement [175] bsearch16u::key#0 = sqrt::val#0 [ SQUARES#0 bsearch16u::key#0 ] ( main:7::init_dist_screen:14::sqrt:58 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [176] bsearch16u::items#1 = (unsigned int *)SQUARES#0 [ SQUARES#0 bsearch16u::key#0 bsearch16u::items#1 ] ( main:7::init_dist_screen:14::sqrt:58 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::items#1 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [178] bsearch16u::return#3 = bsearch16u::return#1 [ SQUARES#0 bsearch16u::return#3 ] ( main:7::init_dist_screen:14::sqrt:58 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::return#3 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [179] sqrt::found#0 = bsearch16u::return#3 [ SQUARES#0 sqrt::found#0 ] ( main:7::init_dist_screen:14::sqrt:58 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqrt::found#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [180] sqrt::$2 = sqrt::found#0 - (unsigned int *)SQUARES#0 [ SQUARES#0 sqrt::$2 ] ( main:7::init_dist_screen:14::sqrt:58 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqrt::$2 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [181] sqrt::$1 = sqrt::$2 >> 1 [ SQUARES#0 sqrt::$1 ] ( main:7::init_dist_screen:14::sqrt:58 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqrt::$1 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [184] if(atan2_16::y#0>=0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [185] atan2_16::$2 = - atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [187] if(atan2_16::x#0>=0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [188] atan2_16::$7 = - atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [191] if(atan2_16::yi#3!=0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [193] atan2_16::angle#1 = atan2_16::angle#6 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [194] if(atan2_16::x#0>=0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [195] atan2_16::angle#4 = $8000 - atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [197] if(atan2_16::y#0>=0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [198] atan2_16::angle#5 = - atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [202] atan2_16::xd#10 = atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [203] atan2_16::yd#10 = atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [207] atan2_16::xd#2 = atan2_16::xd#3 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [208] atan2_16::yd#2 = atan2_16::yd#3 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [210] if(atan2_16::yi#3>=0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [211] atan2_16::xi#2 = atan2_16::xi#3 - atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [212] atan2_16::yi#2 = atan2_16::yi#3 + atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [213] atan2_16::$23 = atan2_16::i#2 << 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [214] atan2_16::angle#3 = atan2_16::angle#12 - CORDIC_ATAN2_ANGLES_16[atan2_16::$23] [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [218] atan2_16::xi#1 = atan2_16::xi#3 + atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [219] atan2_16::yi#1 = atan2_16::yi#3 - atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [220] atan2_16::$22 = atan2_16::i#2 << 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [221] atan2_16::angle#2 = atan2_16::angle#12 + CORDIC_ATAN2_ANGLES_16[atan2_16::$22] [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [222] atan2_16::xd#1 = atan2_16::xd#3 >> 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [223] atan2_16::yd#1 = atan2_16::yd#3 >> 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [225] atan2_16::xi#13 = atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [226] atan2_16::yi#16 = atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [230] *print_char_cursor#19 = print_char::ch#0 [ print_char_cursor#19 ] ( main:7::make_plasma_charset:18::print_char:115 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 ] { }  ) always clobbers reg byte a reg byte y 
Statement [236] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::items#2 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a reg byte y 
Statement [237] bsearch16u::$2 = bsearch16u::items#2 - 1*SIZEOF_UNSIGNED_INT [ bsearch16u::$2 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::$2 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [241] bsearch16u::$6 = bsearch16u::num#3 >> 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [242] bsearch16u::$14 = bsearch16u::$6 << 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [243] bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [244] bsearch16u::result#0 = (int)bsearch16u::key#0 - (int)*bsearch16u::pivot#0 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a reg byte y 
Statement [245] if(bsearch16u::result#0!=0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [246] bsearch16u::return#7 = bsearch16u::pivot#0 [ bsearch16u::return#7 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::return#7 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [247] if(bsearch16u::result#0<=0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [248] bsearch16u::items#0 = bsearch16u::pivot#0 + 1*SIZEOF_UNSIGNED_INT [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [3] SCREEN_DIST#0 = (char *)(void *)malloc::mem#0 [ SCREEN_DIST#0 heap_head#0 ] (  [ SCREEN_DIST#0 heap_head#0 ] { { heap_head#0 = heap_head#13 } }  ) always clobbers reg byte a 
Statement [5] SCREEN_ANGLE#0 = (char *)(void *)malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 ] (  [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 ] { }  ) always clobbers reg byte a 
Statement [10] malloc::mem#0 = heap_head#13 - malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { }  malloc:4 [ SCREEN_DIST#0 malloc::mem#0 ] { { heap_head#0 = heap_head#13 } }  main:7::init_dist_screen:14::init_squares:30::malloc:159 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { heap_head#0 = heap_head#13 } }  ) always clobbers reg byte a 
Statement [11] heap_head#0 = malloc::mem#0 [ malloc::mem#0 heap_head#0 ] ( malloc:2 [ malloc::mem#0 heap_head#0 ] { }  malloc:4 [ SCREEN_DIST#0 malloc::mem#0 heap_head#0 ] { { heap_head#0 = heap_head#13 } }  main:7::init_dist_screen:14::init_squares:30::malloc:159 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { heap_head#0 = heap_head#13 } }  ) always clobbers reg byte a 
Statement [13] init_dist_screen::screen#0 = SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 init_dist_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 init_dist_screen::screen#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [15] init_angle_screen::screen#0 = SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [25] *D018 = main::toD0181_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [28] *D018 = main::toD0182_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] { }  ) always clobbers reg byte a 
Statement [31] init_dist_screen::screen_bottomline#0 = init_dist_screen::screen#0 + (unsigned int)$28*$18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [33] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [35] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [39] sqr::return#2 = sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } }  ) always clobbers reg byte a 
Statement [40] init_dist_screen::yds#0 = sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [43] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [44] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [48] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [50] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [54] sqr::return#3 = sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } }  ) always clobbers reg byte a 
Statement [55] init_dist_screen::xds#0 = sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [56] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [57] sqrt::val#0 = init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [61] init_dist_screen::screen_topline#11[init_dist_screen::x#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte y 
Statement [62] init_dist_screen::screen_bottomline#11[init_dist_screen::x#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte y 
Statement [63] init_dist_screen::screen_topline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte y 
Statement [64] init_dist_screen::screen_bottomline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte y 
Statement [69] init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#0 + (unsigned int)$28*$c [ init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_bottomline#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [70] init_angle_screen::screen_topline#7 = init_angle_screen::screen_bottomline#0 [ init_angle_screen::screen_bottomline#0 init_angle_screen::screen_topline#7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_topline#7 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [74] init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#6 - $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [75] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [79] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [80] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [82] init_angle_screen::$6 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [84] atan2_16::x#0 = (int)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [85] atan2_16::y#0 = (int)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [87] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [88] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [89] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$9 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [91] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [92] init_angle_screen::$11 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$11 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [94] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [96] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$13 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [101] *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff [ ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { }  ) always clobbers reg byte a 
Statement [102] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE [ ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { }  ) always clobbers reg byte a 
Statement [106] if(make_plasma_charset::c#2<$100) goto make_plasma_charset::@2 [ make_plasma_charset::c#2 print_char_cursor#19 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 ] { }  ) always clobbers reg byte a 
Statement [112] make_plasma_charset::$12 = make_plasma_charset::c#2 & 7 [ make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::$12 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::$12 ] { }  ) always clobbers reg byte a 
Statement [120] make_plasma_charset::$10 = make_plasma_charset::c#2 << 3 [ make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$10 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$10 ] { }  ) always clobbers reg byte a 
Statement [121] make_plasma_charset::$11 = make_plasma_charset::$10 + make_plasma_charset::i#2 [ make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$11 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$11 ] { }  ) always clobbers reg byte a 
Statement [122] make_plasma_charset::$16 = CHARSET + make_plasma_charset::$11 [ make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$16 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::b#2 make_plasma_charset::$16 ] { }  ) always clobbers reg byte a 
Statement [123] *make_plasma_charset::$16 = make_plasma_charset::b#2 [ make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 ] { }  ) always clobbers reg byte a reg byte y 
Statement [128] make_plasma_charset::b#1 = make_plasma_charset::b#2 | make_plasma_charset::bittab[make_plasma_charset::ii#2] [ make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] ( main:7::make_plasma_charset:18 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 make_plasma_charset::s#0 make_plasma_charset::i#2 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] { }  ) always clobbers reg byte a 
Statement [132] memset::end#0 = (char *)memset::str#3 + $3e8 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:7::memset:20 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#4 memset::end#0 ] { }  main:7::make_plasma_charset:18::print_cls:104::memset:228 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#4 memset::end#0 ] { }  ) always clobbers reg byte a 
Statement [133] memset::dst#4 = (char *)memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:7::memset:20 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#4 ] { }  main:7::make_plasma_charset:18::print_cls:104::memset:228 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#4 ] { }  ) always clobbers reg byte a 
Statement [135] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:7::memset:20 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { }  main:7::make_plasma_charset:18::print_cls:104::memset:228 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { }  ) always clobbers reg byte a 
Statement [137] *memset::dst#2 = memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:7::memset:20 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { }  main:7::make_plasma_charset:18::print_cls:104::memset:228 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#4 memset::end#0 memset::dst#2 ] { }  ) always clobbers reg byte a reg byte y 
Statement [140] doplasma::angle#0 = SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [141] doplasma::dist#0 = SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [142] doplasma::sin_x#0 = SINTABLE + sin_offset_x#11 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [143] doplasma::sin_y#0 = SINTABLE + sin_offset_y#11 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [146] doplasma::$2 = doplasma::sin_x#0[doplasma::angle#4[doplasma::x#2]] + doplasma::sin_y#0[doplasma::dist#4[doplasma::x#2]] [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a reg byte y 
Statement [147] doplasma::screen#5[doplasma::x#2] = doplasma::$2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte y 
Statement [150] doplasma::screen#2 = doplasma::screen#5 + $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [151] doplasma::angle#1 = doplasma::angle#4 + $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [152] doplasma::dist#1 = doplasma::dist#4 + $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#11 sin_offset_y#11 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a 
Statement [155] sin_offset_x#13 = sin_offset_x#11 - 3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#11 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#11 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#11 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a reg byte x 
Statement [156] sin_offset_y#13 = sin_offset_y#11 - 7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] ( main:7::doplasma:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] { { sin_offset_x#10 = sin_offset_x#11 } { sin_offset_y#10 = sin_offset_y#11 } }  main:7::doplasma:26 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#13 sin_offset_y#13 ] { { sin_offset_x#11 = sin_offset_x#13 } { sin_offset_y#11 = sin_offset_y#13 } }  ) always clobbers reg byte a reg byte x 
Statement [160] SQUARES#0 = (void *)malloc::mem#0 [ SQUARES#0 ] ( main:7::init_dist_screen:14::init_squares:30 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [161] init_squares::squares#0 = (unsigned int *)SQUARES#0 [ SQUARES#0 init_squares::squares#0 ] ( main:7::init_dist_screen:14::init_squares:30 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::squares#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [165] *init_squares::squares#2 = init_squares::sqr#2 [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:14::init_squares:30 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [166] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_UNSIGNED_INT [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:7::init_dist_screen:14::init_squares:30 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [167] init_squares::$3 = init_squares::i#2 << 1 [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:14::init_squares:30 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [169] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4 [ SQUARES#0 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:14::init_squares:30 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [172] sqr::$0 = sqr::val#2 << 1 [ SQUARES#0 sqr::$0 ] ( main:7::init_dist_screen:14::sqr:38 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#0 sqr::$0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } }  main:7::init_dist_screen:14::sqr:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqr::$0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } }  ) always clobbers reg byte a 
Statement [173] sqr::return#0 = ((unsigned int *)SQUARES#0)[sqr::$0] [ sqr::return#0 SQUARES#0 ] ( main:7::init_dist_screen:14::sqr:38 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } }  main:7::init_dist_screen:14::sqr:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } }  ) always clobbers reg byte a reg byte y 
Statement [175] bsearch16u::key#0 = sqrt::val#0 [ SQUARES#0 bsearch16u::key#0 ] ( main:7::init_dist_screen:14::sqrt:58 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [176] bsearch16u::items#1 = (unsigned int *)SQUARES#0 [ SQUARES#0 bsearch16u::key#0 bsearch16u::items#1 ] ( main:7::init_dist_screen:14::sqrt:58 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::items#1 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [178] bsearch16u::return#3 = bsearch16u::return#1 [ SQUARES#0 bsearch16u::return#3 ] ( main:7::init_dist_screen:14::sqrt:58 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::return#3 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [179] sqrt::found#0 = bsearch16u::return#3 [ SQUARES#0 sqrt::found#0 ] ( main:7::init_dist_screen:14::sqrt:58 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqrt::found#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [180] sqrt::$2 = sqrt::found#0 - (unsigned int *)SQUARES#0 [ SQUARES#0 sqrt::$2 ] ( main:7::init_dist_screen:14::sqrt:58 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqrt::$2 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [181] sqrt::$1 = sqrt::$2 >> 1 [ SQUARES#0 sqrt::$1 ] ( main:7::init_dist_screen:14::sqrt:58 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqrt::$1 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [184] if(atan2_16::y#0>=0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [185] atan2_16::$2 = - atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [187] if(atan2_16::x#0>=0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [188] atan2_16::$7 = - atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [191] if(atan2_16::yi#3!=0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [193] atan2_16::angle#1 = atan2_16::angle#6 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [194] if(atan2_16::x#0>=0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [195] atan2_16::angle#4 = $8000 - atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [197] if(atan2_16::y#0>=0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [198] atan2_16::angle#5 = - atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [202] atan2_16::xd#10 = atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [203] atan2_16::yd#10 = atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [207] atan2_16::xd#2 = atan2_16::xd#3 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [208] atan2_16::yd#2 = atan2_16::yd#3 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [210] if(atan2_16::yi#3>=0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [211] atan2_16::xi#2 = atan2_16::xi#3 - atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [212] atan2_16::yi#2 = atan2_16::yi#3 + atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [213] atan2_16::$23 = atan2_16::i#2 << 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [214] atan2_16::angle#3 = atan2_16::angle#12 - CORDIC_ATAN2_ANGLES_16[atan2_16::$23] [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [218] atan2_16::xi#1 = atan2_16::xi#3 + atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [219] atan2_16::yi#1 = atan2_16::yi#3 - atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [220] atan2_16::$22 = atan2_16::i#2 << 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [221] atan2_16::angle#2 = atan2_16::angle#12 + CORDIC_ATAN2_ANGLES_16[atan2_16::$22] [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [222] atan2_16::xd#1 = atan2_16::xd#3 >> 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [223] atan2_16::yd#1 = atan2_16::yd#3 >> 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [225] atan2_16::xi#13 = atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [226] atan2_16::yi#16 = atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:16::atan2_16:86 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } { atan2_16::return#0 = atan2_16::return#2 } }  ) always clobbers reg byte a 
Statement [230] *print_char_cursor#19 = print_char::ch#0 [ print_char_cursor#19 ] ( main:7::make_plasma_charset:18::print_char:115 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#19 ] { }  ) always clobbers reg byte a reg byte y 
Statement [236] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::items#2 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a reg byte y 
Statement [237] bsearch16u::$2 = bsearch16u::items#2 - 1*SIZEOF_UNSIGNED_INT [ bsearch16u::$2 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::$2 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [241] bsearch16u::$6 = bsearch16u::num#3 >> 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [242] bsearch16u::$14 = bsearch16u::$6 << 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [243] bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [244] bsearch16u::result#0 = (int)bsearch16u::key#0 - (int)*bsearch16u::pivot#0 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a reg byte y 
Statement [245] if(bsearch16u::result#0!=0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [246] bsearch16u::return#7 = bsearch16u::pivot#0 [ bsearch16u::return#7 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::return#7 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [247] if(bsearch16u::result#0<=0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Statement [248] bsearch16u::items#0 = bsearch16u::pivot#0 + 1*SIZEOF_UNSIGNED_INT [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:14::sqrt:58::bsearch16u:177 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } }  ) always clobbers reg byte a 
Potential registers zp[2]:2 [ heap_head#13 heap_head#0 ] : zp[2]:2 , 
Potential registers zp[2]:4 [ malloc::size#3 ] : zp[2]:4 , 
Potential registers zp[1]:6 [ init_dist_screen::y#10 init_dist_screen::y#1 ] : zp[1]:6 , reg byte x , 
Potential registers zp[2]:7 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] : zp[2]:7 , 
Potential registers zp[2]:9 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] : zp[2]:9 , 
Potential registers zp[1]:11 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:12 [ init_dist_screen::x#2 init_dist_screen::x#1 ] : zp[1]:12 , reg byte x , 
Potential registers zp[1]:13 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] : zp[1]:13 , reg byte x , 
Potential registers zp[1]:14 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] : zp[1]:14 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:15 [ init_angle_screen::y#5 init_angle_screen::y#1 ] : zp[1]:15 , reg byte x , reg byte y , 
Potential registers zp[2]:16 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] : zp[2]:16 , 
Potential registers zp[2]:18 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] : zp[2]:18 , 
Potential registers zp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 ] : zp[1]:20 , reg byte x , reg byte y , 
Potential registers zp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] : zp[1]:21 , reg byte x , reg byte y , 
Potential registers zp[2]:22 [ make_plasma_charset::c#2 make_plasma_charset::c#1 ] : zp[2]:22 , 
Potential registers zp[2]:24 [ print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 ] : zp[2]:24 , 
Potential registers zp[1]:26 [ make_plasma_charset::i#2 make_plasma_charset::i#1 ] : zp[1]:26 , reg byte x , 
Potential registers zp[1]:27 [ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ] : zp[1]:27 , reg byte x , reg byte y , 
Potential registers zp[1]:28 [ make_plasma_charset::b#2 make_plasma_charset::b#6 make_plasma_charset::b#1 ] : zp[1]:28 , reg byte x , reg byte y , 
Potential registers zp[2]:29 [ memset::str#3 ] : zp[2]:29 , 
Potential registers zp[1]:31 [ memset::c#4 ] : zp[1]:31 , reg byte x , 
Potential registers zp[2]:32 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:32 , 
Potential registers zp[1]:34 [ sin_offset_x#11 sin_offset_x#10 sin_offset_x#13 ] : zp[1]:34 , 
Potential registers zp[1]:35 [ sin_offset_y#11 sin_offset_y#10 sin_offset_y#13 ] : zp[1]:35 , 
Potential registers zp[2]:36 [ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 ] : zp[2]:36 , 
Potential registers zp[2]:38 [ doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ] : zp[2]:38 , 
Potential registers zp[2]:40 [ doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ] : zp[2]:40 , 
Potential registers zp[1]:42 [ doplasma::y#4 doplasma::y#1 ] : zp[1]:42 , reg byte x , 
Potential registers zp[1]:43 [ doplasma::x#2 doplasma::x#1 ] : zp[1]:43 , reg byte x , 
Potential registers zp[1]:44 [ init_squares::i#2 init_squares::i#1 ] : zp[1]:44 , reg byte x , 
Potential registers zp[2]:45 [ init_squares::sqr#2 init_squares::sqr#1 ] : zp[2]:45 , 
Potential registers zp[2]:47 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] : zp[2]:47 , 
Potential registers zp[1]:49 [ sqr::val#2 sqr::val#1 sqr::val#0 ] : zp[1]:49 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:50 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] : zp[2]:50 , 
Potential registers zp[2]:52 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] : zp[2]:52 , 
Potential registers zp[1]:54 [ atan2_16::i#2 atan2_16::i#1 ] : zp[1]:54 , reg byte x , reg byte y , 
Potential registers zp[2]:55 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] : zp[2]:55 , 
Potential registers zp[2]:57 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] : zp[2]:57 , 
Potential registers zp[1]:59 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] : zp[1]:59 , reg byte x , reg byte y , 
Potential registers zp[2]:60 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] : zp[2]:60 , 
Potential registers zp[2]:62 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] : zp[2]:62 , 
Potential registers zp[2]:64 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ] : zp[2]:64 , 
Potential registers zp[1]:66 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] : zp[1]:66 , reg byte x , 
Potential registers zp[2]:67 [ SCREEN_DIST#0 ] : zp[2]:67 , 
Potential registers zp[2]:69 [ SCREEN_ANGLE#0 ] : zp[2]:69 , 
Potential registers zp[2]:71 [ malloc::mem#0 ] : zp[2]:71 , 
Potential registers zp[2]:73 [ init_angle_screen::screen#0 ] : zp[2]:73 , 
Potential registers zp[1]:75 [ init_dist_screen::y2#0 ] : zp[1]:75 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:76 [ sqr::return#2 ] : zp[2]:76 , 
Potential registers zp[2]:78 [ init_dist_screen::yds#0 ] : zp[2]:78 , 
Potential registers zp[1]:80 [ init_dist_screen::x2#0 ] : zp[1]:80 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:81 [ sqr::return#3 ] : zp[2]:81 , 
Potential registers zp[2]:83 [ init_dist_screen::xds#0 ] : zp[2]:83 , 
Potential registers zp[2]:85 [ init_dist_screen::ds#0 ] : zp[2]:85 , 
Potential registers zp[2]:87 [ sqrt::val#0 ] : zp[2]:87 , 
Potential registers zp[1]:89 [ sqrt::return#2 ] : zp[1]:89 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:90 [ init_dist_screen::d#0 ] : zp[1]:90 , reg byte a , reg byte x , 
Potential registers zp[1]:91 [ init_angle_screen::$3 ] : zp[1]:91 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:92 [ init_angle_screen::$4 ] : zp[1]:92 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:93 [ init_angle_screen::xw#0 ] : zp[2]:93 , 
Potential registers zp[1]:95 [ init_angle_screen::$6 ] : zp[1]:95 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:96 [ init_angle_screen::yw#0 ] : zp[2]:96 , 
Potential registers zp[2]:98 [ atan2_16::x#0 ] : zp[2]:98 , 
Potential registers zp[2]:100 [ atan2_16::y#0 ] : zp[2]:100 , 
Potential registers zp[2]:102 [ atan2_16::return#2 ] : zp[2]:102 , 
Potential registers zp[2]:104 [ init_angle_screen::angle_w#0 ] : zp[2]:104 , 
Potential registers zp[2]:106 [ init_angle_screen::$9 ] : zp[2]:106 , 
Potential registers zp[1]:108 [ init_angle_screen::ang_w#0 ] : zp[1]:108 , reg byte x , reg byte y , 
Potential registers zp[1]:109 [ init_angle_screen::$11 ] : zp[1]:109 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:110 [ init_angle_screen::$12 ] : zp[1]:110 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:111 [ init_angle_screen::$13 ] : zp[1]:111 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:112 [ make_plasma_charset::$3 ] : zp[1]:112 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:113 [ make_plasma_charset::s#0 ] : zp[1]:113 , reg byte x , 
Potential registers zp[1]:114 [ make_plasma_charset::$12 ] : zp[1]:114 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:115 [ make_plasma_charset::$10 ] : zp[2]:115 , 
Potential registers zp[2]:117 [ make_plasma_charset::$11 ] : zp[2]:117 , 
Potential registers zp[2]:119 [ make_plasma_charset::$16 ] : zp[2]:119 , 
Potential registers zp[1]:121 [ make_plasma_charset::sid_rnd1_return#0 ] : zp[1]:121 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:122 [ make_plasma_charset::$7 ] : zp[1]:122 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:123 [ memset::end#0 ] : zp[2]:123 , 
Potential registers zp[2]:125 [ doplasma::sin_x#0 ] : zp[2]:125 , 
Potential registers zp[2]:127 [ doplasma::sin_y#0 ] : zp[2]:127 , 
Potential registers zp[1]:129 [ doplasma::$2 ] : zp[1]:129 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:130 [ SQUARES#0 ] : zp[2]:130 , 
Potential registers zp[1]:132 [ init_squares::$3 ] : zp[1]:132 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:133 [ init_squares::$4 ] : zp[1]:133 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:134 [ sqr::$0 ] : zp[1]:134 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:135 [ sqr::return#0 ] : zp[2]:135 , 
Potential registers zp[2]:137 [ bsearch16u::key#0 ] : zp[2]:137 , 
Potential registers zp[2]:139 [ bsearch16u::return#3 ] : zp[2]:139 , 
Potential registers zp[2]:141 [ sqrt::found#0 ] : zp[2]:141 , 
Potential registers zp[2]:143 [ sqrt::$2 ] : zp[2]:143 , 
Potential registers zp[2]:145 [ sqrt::$1 ] : zp[2]:145 , 
Potential registers zp[1]:147 [ sqrt::return#0 ] : zp[1]:147 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:148 [ atan2_16::$23 ] : zp[1]:148 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:149 [ atan2_16::$22 ] : zp[1]:149 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:150 [ bsearch16u::$6 ] : zp[1]:150 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:151 [ bsearch16u::$14 ] : zp[1]:151 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:152 [ bsearch16u::pivot#0 ] : zp[2]:152 , 
Potential registers zp[2]:154 [ bsearch16u::result#0 ] : zp[2]:154 , 

REGISTER UPLIFT SCOPES
Uplift Scope [bsearch16u] 7,555,555,563.11: zp[1]:66 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] 2,842,027,790.06: zp[2]:64 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ] 2,000,000,002: zp[1]:150 [ bsearch16u::$6 ] 2,000,000,002: zp[1]:151 [ bsearch16u::$14 ] 1,500,000,001.5: zp[2]:154 [ bsearch16u::result#0 ] 500,250,000.75: zp[2]:152 [ bsearch16u::pivot#0 ] 200,002: zp[2]:139 [ bsearch16u::return#3 ] 73,333.47: zp[2]:137 [ bsearch16u::key#0 ] 
Uplift Scope [atan2_16] 2,866,666,670.58: zp[1]:59 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 2,060,000,008: zp[2]:60 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 1,733,333,338.67: zp[2]:62 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 752,480,960.9: zp[2]:55 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 269,093,340.68: zp[2]:50 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 227,373,342.67: zp[2]:52 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 200,000,002: zp[1]:148 [ atan2_16::$23 ] 200,000,002: zp[1]:149 [ atan2_16::$22 ] 170,833,335.04: zp[1]:54 [ atan2_16::i#2 atan2_16::i#1 ] 820,008.5: zp[2]:57 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] 20,002: zp[2]:102 [ atan2_16::return#2 ] 10,789.61: zp[2]:98 [ atan2_16::x#0 ] 10,250.12: zp[2]:100 [ atan2_16::y#0 ] 
Uplift Scope [doplasma] 3,166,669.83: zp[1]:43 [ doplasma::x#2 doplasma::x#1 ] 2,000,002: zp[1]:129 [ doplasma::$2 ] 240,367.93: zp[2]:40 [ doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ] 222,073: zp[2]:36 [ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 ] 217,460.17: zp[2]:38 [ doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ] 172,223.94: zp[1]:42 [ doplasma::y#4 doplasma::y#1 ] 83,416.83: zp[2]:127 [ doplasma::sin_y#0 ] 77,000.15: zp[2]:125 [ doplasma::sin_x#0 ] 
Uplift Scope [make_plasma_charset] 388,754: zp[1]:28 [ make_plasma_charset::b#2 make_plasma_charset::b#6 make_plasma_charset::b#1 ] 257,145.43: zp[1]:27 [ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ] 200,002: zp[1]:121 [ make_plasma_charset::sid_rnd1_return#0 ] 200,002: zp[1]:122 [ make_plasma_charset::$7 ] 22,859.43: zp[1]:26 [ make_plasma_charset::i#2 make_plasma_charset::i#1 ] 20,002: zp[2]:115 [ make_plasma_charset::$10 ] 20,002: zp[2]:117 [ make_plasma_charset::$11 ] 20,002: zp[2]:119 [ make_plasma_charset::$16 ] 6,312.62: zp[1]:113 [ make_plasma_charset::s#0 ] 2,627.25: zp[2]:22 [ make_plasma_charset::c#2 make_plasma_charset::c#1 ] 2,002: zp[1]:112 [ make_plasma_charset::$3 ] 2,002: zp[1]:114 [ make_plasma_charset::$12 ] 
Uplift Scope [sqrt] 200,002: zp[2]:141 [ sqrt::found#0 ] 200,002: zp[2]:143 [ sqrt::$2 ] 110,002: zp[2]:87 [ sqrt::val#0 ] 100,001: zp[2]:145 [ sqrt::$1 ] 36,667.33: zp[1]:147 [ sqrt::return#0 ] 20,002: zp[1]:89 [ sqrt::return#2 ] 
Uplift Scope [memset] 356,672.33: zp[2]:32 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 18,333.67: zp[2]:123 [ memset::end#0 ] 14,285.86: zp[1]:31 [ memset::c#4 ] 0: zp[2]:29 [ memset::str#3 ] 
Uplift Scope [sqr] 200,002: zp[1]:134 [ sqr::$0 ] 133,007: zp[1]:49 [ sqr::val#2 sqr::val#1 sqr::val#0 ] 27,750.75: zp[2]:135 [ sqr::return#0 ] 20,002: zp[2]:81 [ sqr::return#3 ] 2,002: zp[2]:76 [ sqr::return#2 ] 
Uplift Scope [init_angle_screen] 21,820.36: zp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 20,002: zp[1]:91 [ init_angle_screen::$3 ] 20,002: zp[1]:92 [ init_angle_screen::$4 ] 20,002: zp[1]:95 [ init_angle_screen::$6 ] 20,002: zp[2]:104 [ init_angle_screen::angle_w#0 ] 20,002: zp[2]:106 [ init_angle_screen::$9 ] 20,002: zp[1]:109 [ init_angle_screen::$11 ] 20,002: zp[1]:110 [ init_angle_screen::$12 ] 20,002: zp[1]:111 [ init_angle_screen::$13 ] 12,858.43: zp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 8,334.17: zp[1]:108 [ init_angle_screen::ang_w#0 ] 5,000.5: zp[2]:96 [ init_angle_screen::yw#0 ] 3,333.67: zp[2]:93 [ init_angle_screen::xw#0 ] 1,963.15: zp[1]:15 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 1,703.03: zp[2]:18 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 1,623.54: zp[2]:16 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] 112: zp[2]:73 [ init_angle_screen::screen#0 ] 
Uplift Scope [init_dist_screen] 70,007: zp[1]:14 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] 21,906.95: zp[1]:13 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 20,002: zp[1]:80 [ init_dist_screen::x2#0 ] 20,002: zp[2]:83 [ init_dist_screen::xds#0 ] 20,002: zp[2]:85 [ init_dist_screen::ds#0 ] 13,001.3: zp[1]:12 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 12,501.25: zp[1]:90 [ init_dist_screen::d#0 ] 7,007: zp[1]:11 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 2,002: zp[1]:75 [ init_dist_screen::y2#0 ] 1,589.82: zp[1]:6 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 1,539.18: zp[2]:9 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] 1,244.53: zp[2]:7 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] 478.35: zp[2]:78 [ init_dist_screen::yds#0 ] 
Uplift Scope [init_squares] 25,716.86: zp[1]:44 [ init_squares::i#2 init_squares::i#1 ] 20,002: zp[1]:132 [ init_squares::$3 ] 20,002: zp[1]:133 [ init_squares::$4 ] 16,337.07: zp[2]:47 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] 15,001.5: zp[2]:45 [ init_squares::sqr#2 init_squares::sqr#1 ] 
Uplift Scope [] 12,104.4: zp[2]:2 [ heap_head#13 heap_head#0 ] 6,125.53: zp[2]:24 [ print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 ] 381.02: zp[1]:35 [ sin_offset_y#11 sin_offset_y#10 sin_offset_y#13 ] 372.42: zp[1]:34 [ sin_offset_x#11 sin_offset_x#10 sin_offset_x#13 ] 27.41: zp[2]:69 [ SCREEN_ANGLE#0 ] 26: zp[2]:67 [ SCREEN_DIST#0 ] 16.15: zp[2]:130 [ SQUARES#0 ] 
Uplift Scope [malloc] 10,001: zp[2]:4 [ malloc::size#3 ] 3,333.67: zp[2]:71 [ malloc::mem#0 ] 
Uplift Scope [MOS6526_CIA] 
Uplift Scope [MOS6569_VICII] 
Uplift Scope [MOS6581_SID] 
Uplift Scope [RADIX] 
Uplift Scope [print_char] 
Uplift Scope [print_cls] 
Uplift Scope [main] 
Uplift Scope [__start] 

Uplifting [bsearch16u] best 1489200 combination reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] zp[2]:64 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ] reg byte a [ bsearch16u::$6 ] reg byte a [ bsearch16u::$14 ] zp[2]:154 [ bsearch16u::result#0 ] zp[2]:152 [ bsearch16u::pivot#0 ] zp[2]:139 [ bsearch16u::return#3 ] zp[2]:137 [ bsearch16u::key#0 ] 
Uplifting [atan2_16] best 1377200 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:60 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:62 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:55 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:50 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:52 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:57 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] zp[2]:102 [ atan2_16::return#2 ] zp[2]:98 [ atan2_16::x#0 ] zp[2]:100 [ atan2_16::y#0 ] 
Limited combination testing to 100 combinations of 144 possible.
Uplifting [doplasma] best 1366200 combination reg byte x [ doplasma::x#2 doplasma::x#1 ] reg byte a [ doplasma::$2 ] zp[2]:40 [ doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ] zp[2]:36 [ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 ] zp[2]:38 [ doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ] zp[1]:42 [ doplasma::y#4 doplasma::y#1 ] zp[2]:127 [ doplasma::sin_y#0 ] zp[2]:125 [ doplasma::sin_x#0 ] 
Uplifting [make_plasma_charset] best 1343100 combination reg byte y [ make_plasma_charset::b#2 make_plasma_charset::b#6 make_plasma_charset::b#1 ] reg byte x [ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ] reg byte a [ make_plasma_charset::sid_rnd1_return#0 ] zp[1]:122 [ make_plasma_charset::$7 ] zp[1]:26 [ make_plasma_charset::i#2 make_plasma_charset::i#1 ] zp[2]:115 [ make_plasma_charset::$10 ] zp[2]:117 [ make_plasma_charset::$11 ] zp[2]:119 [ make_plasma_charset::$16 ] zp[1]:113 [ make_plasma_charset::s#0 ] zp[2]:22 [ make_plasma_charset::c#2 make_plasma_charset::c#1 ] zp[1]:112 [ make_plasma_charset::$3 ] zp[1]:114 [ make_plasma_charset::$12 ] 
Limited combination testing to 100 combinations of 9216 possible.
Uplifting [sqrt] best 1342197 combination zp[2]:141 [ sqrt::found#0 ] zp[2]:143 [ sqrt::$2 ] zp[2]:87 [ sqrt::val#0 ] zp[2]:145 [ sqrt::$1 ] reg byte a [ sqrt::return#0 ] reg byte a [ sqrt::return#2 ] 
Uplifting [memset] best 1342181 combination zp[2]:32 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:123 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:29 [ memset::str#3 ] 
Uplifting [sqr] best 1341844 combination reg byte a [ sqr::$0 ] reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ] zp[2]:135 [ sqr::return#0 ] zp[2]:81 [ sqr::return#3 ] zp[2]:76 [ sqr::return#2 ] 
Uplifting [init_angle_screen] best 1340244 combination zp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$6 ] zp[2]:104 [ init_angle_screen::angle_w#0 ] zp[2]:106 [ init_angle_screen::$9 ] zp[1]:109 [ init_angle_screen::$11 ] zp[1]:110 [ init_angle_screen::$12 ] zp[1]:111 [ init_angle_screen::$13 ] zp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:108 [ init_angle_screen::ang_w#0 ] zp[2]:96 [ init_angle_screen::yw#0 ] zp[2]:93 [ init_angle_screen::xw#0 ] zp[1]:15 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:18 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:16 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] zp[2]:73 [ init_angle_screen::screen#0 ] 
Limited combination testing to 100 combinations of 331776 possible.
Uplifting [init_dist_screen] best 1337044 combination reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] zp[1]:13 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] reg byte a [ init_dist_screen::x2#0 ] zp[2]:83 [ init_dist_screen::xds#0 ] zp[2]:85 [ init_dist_screen::ds#0 ] zp[1]:12 [ init_dist_screen::x#2 init_dist_screen::x#1 ] reg byte a [ init_dist_screen::d#0 ] zp[1]:11 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] zp[1]:75 [ init_dist_screen::y2#0 ] zp[1]:6 [ init_dist_screen::y#10 init_dist_screen::y#1 ] zp[2]:9 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] zp[2]:7 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] zp[2]:78 [ init_dist_screen::yds#0 ] 
Limited combination testing to 100 combinations of 6144 possible.
Uplifting [init_squares] best 1336844 combination reg byte x [ init_squares::i#2 init_squares::i#1 ] reg byte a [ init_squares::$3 ] reg byte a [ init_squares::$4 ] zp[2]:47 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] zp[2]:45 [ init_squares::sqr#2 init_squares::sqr#1 ] 
Uplifting [] best 1336844 combination zp[2]:2 [ heap_head#13 heap_head#0 ] zp[2]:24 [ print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 ] zp[1]:35 [ sin_offset_y#11 sin_offset_y#10 sin_offset_y#13 ] zp[1]:34 [ sin_offset_x#11 sin_offset_x#10 sin_offset_x#13 ] zp[2]:69 [ SCREEN_ANGLE#0 ] zp[2]:67 [ SCREEN_DIST#0 ] zp[2]:130 [ SQUARES#0 ] 
Uplifting [malloc] best 1336844 combination zp[2]:4 [ malloc::size#3 ] zp[2]:71 [ malloc::mem#0 ] 
Uplifting [MOS6526_CIA] best 1336844 combination 
Uplifting [MOS6569_VICII] best 1336844 combination 
Uplifting [MOS6581_SID] best 1336844 combination 
Uplifting [RADIX] best 1336844 combination 
Uplifting [print_char] best 1336844 combination 
Uplifting [print_cls] best 1336844 combination 
Uplifting [main] best 1336844 combination 
Uplifting [__start] best 1336844 combination 
Attempting to uplift remaining variables inzp[1]:122 [ make_plasma_charset::$7 ]
Uplifting [make_plasma_charset] best 1336844 combination zp[1]:122 [ make_plasma_charset::$7 ] 
Attempting to uplift remaining variables inzp[1]:42 [ doplasma::y#4 doplasma::y#1 ]
Uplifting [doplasma] best 1336844 combination zp[1]:42 [ doplasma::y#4 doplasma::y#1 ] 
Attempting to uplift remaining variables inzp[1]:26 [ make_plasma_charset::i#2 make_plasma_charset::i#1 ]
Uplifting [make_plasma_charset] best 1336844 combination zp[1]:26 [ make_plasma_charset::i#2 make_plasma_charset::i#1 ] 
Attempting to uplift remaining variables inzp[1]:13 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Uplifting [init_dist_screen] best 1336844 combination zp[1]:13 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 
Attempting to uplift remaining variables inzp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Uplifting [init_angle_screen] best 1336844 combination zp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 
Attempting to uplift remaining variables inzp[1]:109 [ init_angle_screen::$11 ]
Uplifting [init_angle_screen] best 1336244 combination reg byte a [ init_angle_screen::$11 ] 
Attempting to uplift remaining variables inzp[1]:110 [ init_angle_screen::$12 ]
Uplifting [init_angle_screen] best 1335844 combination reg byte a [ init_angle_screen::$12 ] 
Attempting to uplift remaining variables inzp[1]:111 [ init_angle_screen::$13 ]
Uplifting [init_angle_screen] best 1335244 combination reg byte a [ init_angle_screen::$13 ] 
Attempting to uplift remaining variables inzp[1]:12 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Uplifting [init_dist_screen] best 1335244 combination zp[1]:12 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 
Attempting to uplift remaining variables inzp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
Uplifting [init_angle_screen] best 1335244 combination zp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 
Attempting to uplift remaining variables inzp[1]:108 [ init_angle_screen::ang_w#0 ]
Uplifting [init_angle_screen] best 1335244 combination zp[1]:108 [ init_angle_screen::ang_w#0 ] 
Attempting to uplift remaining variables inzp[1]:11 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
Uplifting [init_dist_screen] best 1335174 combination reg byte a [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 
Attempting to uplift remaining variables inzp[1]:113 [ make_plasma_charset::s#0 ]
Uplifting [make_plasma_charset] best 1335174 combination zp[1]:113 [ make_plasma_charset::s#0 ] 
Attempting to uplift remaining variables inzp[1]:75 [ init_dist_screen::y2#0 ]
Uplifting [init_dist_screen] best 1335074 combination reg byte a [ init_dist_screen::y2#0 ] 
Attempting to uplift remaining variables inzp[1]:112 [ make_plasma_charset::$3 ]
Uplifting [make_plasma_charset] best 1335014 combination reg byte x [ make_plasma_charset::$3 ] 
Attempting to uplift remaining variables inzp[1]:114 [ make_plasma_charset::$12 ]
Uplifting [make_plasma_charset] best 1334974 combination reg byte a [ make_plasma_charset::$12 ] 
Attempting to uplift remaining variables inzp[1]:15 [ init_angle_screen::y#5 init_angle_screen::y#1 ]
Uplifting [init_angle_screen] best 1334974 combination zp[1]:15 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 
Attempting to uplift remaining variables inzp[1]:6 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
Uplifting [init_dist_screen] best 1334974 combination zp[1]:6 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 
Attempting to uplift remaining variables inzp[1]:35 [ sin_offset_y#11 sin_offset_y#10 sin_offset_y#13 ]
Uplifting [] best 1334974 combination zp[1]:35 [ sin_offset_y#11 sin_offset_y#10 sin_offset_y#13 ] 
Attempting to uplift remaining variables inzp[1]:34 [ sin_offset_x#11 sin_offset_x#10 sin_offset_x#13 ]
Uplifting [] best 1334974 combination zp[1]:34 [ sin_offset_x#11 sin_offset_x#10 sin_offset_x#13 ] 
Coalescing zero page register [ zp[2]:4 [ malloc::size#3 ] ] with [ zp[2]:71 [ malloc::mem#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:18 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] ] with [ zp[2]:73 [ init_angle_screen::screen#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:29 [ memset::str#3 ] ] with [ zp[2]:32 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
Coalescing zero page register [ zp[2]:55 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] ] with [ zp[2]:57 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] ] - score: 1
Coalescing zero page register [ zp[2]:64 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ] ] with [ zp[2]:139 [ bsearch16u::return#3 ] ] - score: 1
Coalescing zero page register [ zp[2]:76 [ sqr::return#2 ] ] with [ zp[2]:78 [ init_dist_screen::yds#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:81 [ sqr::return#3 ] ] with [ zp[2]:83 [ init_dist_screen::xds#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:81 [ sqr::return#3 init_dist_screen::xds#0 ] ] with [ zp[2]:135 [ sqr::return#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:85 [ init_dist_screen::ds#0 ] ] with [ zp[2]:87 [ sqrt::val#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:93 [ init_angle_screen::xw#0 ] ] with [ zp[2]:98 [ atan2_16::x#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:96 [ init_angle_screen::yw#0 ] ] with [ zp[2]:100 [ atan2_16::y#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:102 [ atan2_16::return#2 ] ] with [ zp[2]:104 [ init_angle_screen::angle_w#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:115 [ make_plasma_charset::$10 ] ] with [ zp[2]:117 [ make_plasma_charset::$11 ] ] - score: 1
Coalescing zero page register [ zp[2]:141 [ sqrt::found#0 ] ] with [ zp[2]:143 [ sqrt::$2 ] ] - score: 1
Coalescing zero page register [ zp[2]:4 [ malloc::size#3 malloc::mem#0 ] ] with [ zp[2]:130 [ SQUARES#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:55 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] ] with [ zp[2]:102 [ atan2_16::return#2 init_angle_screen::angle_w#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:64 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 ] ] with [ zp[2]:141 [ sqrt::found#0 sqrt::$2 ] ] - score: 1
Coalescing zero page register [ zp[2]:81 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 ] ] with [ zp[2]:85 [ init_dist_screen::ds#0 sqrt::val#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:115 [ make_plasma_charset::$10 make_plasma_charset::$11 ] ] with [ zp[2]:119 [ make_plasma_charset::$16 ] ] - score: 1
Coalescing zero page register [ zp[2]:55 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 ] ] with [ zp[2]:106 [ init_angle_screen::$9 ] ] - score: 1
Coalescing zero page register [ zp[2]:64 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 ] ] with [ zp[2]:145 [ sqrt::$1 ] ] - score: 1
Coalescing zero page register [ zp[2]:81 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 ] ] with [ zp[2]:137 [ bsearch16u::key#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:9 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] ] with [ zp[2]:2 [ heap_head#13 heap_head#0 ] ]
Coalescing zero page register [ zp[1]:15 [ init_angle_screen::y#5 init_angle_screen::y#1 ] ] with [ zp[1]:6 [ init_dist_screen::y#10 init_dist_screen::y#1 ] ]
Coalescing zero page register [ zp[2]:16 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] ] with [ zp[2]:4 [ malloc::size#3 malloc::mem#0 SQUARES#0 ] ]
Coalescing zero page register [ zp[2]:18 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 init_angle_screen::screen#0 ] ] with [ zp[2]:7 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] ]
Coalescing zero page register [ zp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 ] ] with [ zp[1]:12 [ init_dist_screen::x#2 init_dist_screen::x#1 ] ]
Coalescing zero page register [ zp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] ] with [ zp[1]:13 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] ]
Coalescing zero page register [ zp[2]:29 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] with [ zp[2]:24 [ print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 ] ]
Coalescing zero page register [ zp[1]:34 [ sin_offset_x#11 sin_offset_x#10 sin_offset_x#13 ] ] with [ zp[1]:26 [ make_plasma_charset::i#2 make_plasma_charset::i#1 ] ]
Coalescing zero page register [ zp[2]:36 [ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 ] ] with [ zp[2]:22 [ make_plasma_charset::c#2 make_plasma_charset::c#1 ] ]
Coalescing zero page register [ zp[2]:45 [ init_squares::sqr#2 init_squares::sqr#1 ] ] with [ zp[2]:38 [ doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ] ]
Coalescing zero page register [ zp[2]:47 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] ] with [ zp[2]:40 [ doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ] ]
Coalescing zero page register [ zp[2]:64 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 ] ] with [ zp[2]:50 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] ]
Coalescing zero page register [ zp[2]:76 [ sqr::return#2 init_dist_screen::yds#0 ] ] with [ zp[2]:52 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] ]
Coalescing zero page register [ zp[2]:81 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 ] ] with [ zp[2]:55 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$9 ] ]
Coalescing zero page register [ zp[1]:108 [ init_angle_screen::ang_w#0 ] ] with [ zp[1]:35 [ sin_offset_y#11 sin_offset_y#10 sin_offset_y#13 ] ]
Coalescing zero page register [ zp[1]:113 [ make_plasma_charset::s#0 ] ] with [ zp[1]:42 [ doplasma::y#4 doplasma::y#1 ] ]
Coalescing zero page register [ zp[2]:115 [ make_plasma_charset::$10 make_plasma_charset::$11 make_plasma_charset::$16 ] ] with [ zp[2]:60 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] ]
Coalescing zero page register [ zp[2]:123 [ memset::end#0 ] ] with [ zp[2]:62 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] ]
Coalescing zero page register [ zp[2]:125 [ doplasma::sin_x#0 ] ] with [ zp[2]:93 [ init_angle_screen::xw#0 atan2_16::x#0 ] ]
Coalescing zero page register [ zp[2]:127 [ doplasma::sin_y#0 ] ] with [ zp[2]:96 [ init_angle_screen::yw#0 atan2_16::y#0 ] ]
Coalescing zero page register [ zp[2]:29 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 ] ] with [ zp[2]:18 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 init_angle_screen::screen#0 init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] ]
Coalescing zero page register [ zp[1]:34 [ sin_offset_x#11 sin_offset_x#10 sin_offset_x#13 make_plasma_charset::i#2 make_plasma_charset::i#1 ] ] with [ zp[1]:15 [ init_angle_screen::y#5 init_angle_screen::y#1 init_dist_screen::y#10 init_dist_screen::y#1 ] ]
Coalescing zero page register [ zp[2]:36 [ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 make_plasma_charset::c#2 make_plasma_charset::c#1 ] ] with [ zp[2]:9 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 heap_head#13 heap_head#0 ] ]
Coalescing zero page register [ zp[2]:64 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] ] with [ zp[2]:45 [ init_squares::sqr#2 init_squares::sqr#1 doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ] ]
Coalescing zero page register [ zp[2]:76 [ sqr::return#2 init_dist_screen::yds#0 atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] ] with [ zp[2]:47 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ] ]
Coalescing zero page register [ zp[1]:113 [ make_plasma_charset::s#0 doplasma::y#4 doplasma::y#1 ] ] with [ zp[1]:20 [ init_angle_screen::x#2 init_angle_screen::x#1 init_dist_screen::x#2 init_dist_screen::x#1 ] ]
Coalescing zero page register [ zp[1]:122 [ make_plasma_charset::$7 ] ] with [ zp[1]:21 [ init_angle_screen::xb#2 init_angle_screen::xb#1 init_dist_screen::xb#2 init_dist_screen::xb#1 ] ]
Coalescing zero page register [ zp[2]:152 [ bsearch16u::pivot#0 ] ] with [ zp[2]:115 [ make_plasma_charset::$10 make_plasma_charset::$11 make_plasma_charset::$16 atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] ]
Coalescing zero page register [ zp[2]:154 [ bsearch16u::result#0 ] ] with [ zp[2]:123 [ memset::end#0 atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] ]
Allocated (was zp[2]:16) zp[2]:2 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 malloc::size#3 malloc::mem#0 SQUARES#0 ]
Allocated (was zp[2]:29) zp[2]:4 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 init_angle_screen::screen#0 init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ]
Allocated (was zp[1]:34) zp[1]:6 [ sin_offset_x#11 sin_offset_x#10 sin_offset_x#13 make_plasma_charset::i#2 make_plasma_charset::i#1 init_angle_screen::y#5 init_angle_screen::y#1 init_dist_screen::y#10 init_dist_screen::y#1 ]
Allocated (was zp[2]:36) zp[2]:7 [ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 make_plasma_charset::c#2 make_plasma_charset::c#1 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 heap_head#13 heap_head#0 ]
Allocated (was zp[2]:64) zp[2]:9 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 init_squares::sqr#2 init_squares::sqr#1 doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ]
Allocated (was zp[2]:67) zp[2]:11 [ SCREEN_DIST#0 ]
Allocated (was zp[2]:69) zp[2]:13 [ SCREEN_ANGLE#0 ]
Allocated (was zp[2]:76) zp[2]:15 [ sqr::return#2 init_dist_screen::yds#0 atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ]
Allocated (was zp[2]:81) zp[2]:17 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$9 ]
Allocated (was zp[1]:108) zp[1]:19 [ init_angle_screen::ang_w#0 sin_offset_y#11 sin_offset_y#10 sin_offset_y#13 ]
Allocated (was zp[1]:113) zp[1]:20 [ make_plasma_charset::s#0 doplasma::y#4 doplasma::y#1 init_angle_screen::x#2 init_angle_screen::x#1 init_dist_screen::x#2 init_dist_screen::x#1 ]
Allocated (was zp[1]:122) zp[1]:21 [ make_plasma_charset::$7 init_angle_screen::xb#2 init_angle_screen::xb#1 init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Allocated (was zp[2]:125) zp[2]:22 [ doplasma::sin_x#0 init_angle_screen::xw#0 atan2_16::x#0 ]
Allocated (was zp[2]:127) zp[2]:24 [ doplasma::sin_y#0 init_angle_screen::yw#0 atan2_16::y#0 ]
Allocated (was zp[2]:152) zp[2]:26 [ bsearch16u::pivot#0 make_plasma_charset::$10 make_plasma_charset::$11 make_plasma_charset::$16 atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
Allocated (was zp[2]:154) zp[2]:28 [ bsearch16u::result#0 memset::end#0 atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]

ASSEMBLER BEFORE OPTIMIZATION
  // File Comments
// Plasma based on the distance/angle to the screen center
  // Upstart
  // Commodore 64 PRG executable file
.file [name="plasma-center.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(__start)
  // Global Constants & labels
  /// SID Channel Control Register Noise Waveform
  .const SID_CONTROL_NOISE = $80
  /// The colors of the C64
  .const BLACK = 0
  .const SIZEOF_UNSIGNED_INT = 2
  // The number of iterations performed during 16-bit CORDIC atan2 calculation
  .const CORDIC_ITERATIONS_16 = $f
  .const OFFSET_STRUCT_MOS6581_SID_CH3_FREQ = $e
  .const OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL = $12
  .const OFFSET_STRUCT_MOS6581_SID_CH3_OSC = $1b
  // The number of squares to pre-calculate. Limits what values sqr() can calculate and the result of sqrt()
  .const NUM_SQUARES = $30
  /// $D018 VIC-II base addresses
  // @see #VICII_MEMORY
  .label D018 = $d018
  /// The SID MOS 6581/8580
  .label SID = $d400
  /// Color Ram
  .label COLS = $d800
  // Plasma charset
  .label CHARSET = $2000
  // Plasma screen 1
  .label SCREEN1 = $2800
  // Plasma screen 2
  .label SCREEN2 = $2c00
  // Top of the heap used by malloc()
  .label HEAP_TOP = $a000
  .label print_screen = $400
  // Head of the heap. Moved backward each malloc()
  .label heap_head = 7
  // Squares for each char value SQUARES[i] = i*i
  // Initialized by init_squares()
  .label SQUARES = 2
  .label print_char_cursor = 4
  // Screen containing distance to center
  .label SCREEN_DIST = $b
  // Screen containing angle to center
  .label SCREEN_ANGLE = $d
  // Offsets for the sines
  .label sin_offset_x = 6
  .label sin_offset_y = $13
.segment Code
  // __start
__start: {
    // [1] phi from __start to __start::__init1 [phi:__start->__start::__init1]
  __init1_from___start:
    jmp __init1
    // __start::__init1
  __init1:
    // [2] call malloc
    // [9] phi from __start::__init1 to malloc [phi:__start::__init1->malloc]
  malloc_from___init1:
    // [9] phi malloc::size#3 = $3e8 [phi:__start::__init1->malloc#0] -- vwuz1=vwuc1 
    lda #<$3e8
    sta.z malloc.size
    lda #>$3e8
    sta.z malloc.size+1
    // [9] phi heap_head#13 = HEAP_TOP [phi:__start::__init1->malloc#1] -- pbuz1=pbuc1 
    lda #<HEAP_TOP
    sta.z heap_head
    lda #>HEAP_TOP
    sta.z heap_head+1
    jsr malloc
    jmp __b2
    // __start::@2
  __b2:
    // [3] SCREEN_DIST#0 = (char *)(void *)malloc::mem#0 -- pbuz1=pbuz2 
    lda.z malloc.mem
    sta.z SCREEN_DIST
    lda.z malloc.mem+1
    sta.z SCREEN_DIST+1
    // [4] call malloc
    // [9] phi from __start::@2 to malloc [phi:__start::@2->malloc]
  malloc_from___b2:
    // [9] phi malloc::size#3 = $3e8 [phi:__start::@2->malloc#0] -- vwuz1=vwuc1 
    lda #<$3e8
    sta.z malloc.size
    lda #>$3e8
    sta.z malloc.size+1
    // [9] phi heap_head#13 = heap_head#0 [phi:__start::@2->malloc#1] -- register_copy 
    jsr malloc
    jmp __b3
    // __start::@3
  __b3:
    // [5] SCREEN_ANGLE#0 = (char *)(void *)malloc::mem#0 -- pbuz1=pbuz2 
    lda.z malloc.mem
    sta.z SCREEN_ANGLE
    lda.z malloc.mem+1
    sta.z SCREEN_ANGLE+1
    // [6] phi from __start::@3 to __start::@1 [phi:__start::@3->__start::@1]
  __b1_from___b3:
    jmp __b1
    // __start::@1
  __b1:
    // [7] call main
    jsr main
    jmp __breturn
    // __start::@return
  __breturn:
    // [8] return 
    rts
}
  // malloc
// Allocates a block of size chars of memory, returning a pointer to the beginning of the block.
// The content of the newly allocated block of memory is not initialized, remaining with indeterminate values.
// void * malloc(__zp(2) unsigned int size)
malloc: {
    .label mem = 2
    .label size = 2
    // [10] malloc::mem#0 = heap_head#13 - malloc::size#3 -- pbuz1=pbuz2_minus_vwuz1 
    lda.z heap_head
    sec
    sbc.z mem
    sta.z mem
    lda.z heap_head+1
    sbc.z mem+1
    sta.z mem+1
    // [11] heap_head#0 = malloc::mem#0 -- pbuz1=pbuz2 
    lda.z mem
    sta.z heap_head
    lda.z mem+1
    sta.z heap_head+1
    jmp __breturn
    // malloc::@return
  __breturn:
    // [12] return 
    rts
}
  // main
main: {
    .const toD0181_return = (>(SCREEN1&$3fff)*4)|(>CHARSET)/4&$f
    .const toD0182_return = (>(SCREEN2&$3fff)*4)|(>CHARSET)/4&$f
    // [13] init_dist_screen::screen#0 = SCREEN_DIST#0 -- pbuz1=pbuz2 
    lda.z SCREEN_DIST
    sta.z init_dist_screen.screen
    lda.z SCREEN_DIST+1
    sta.z init_dist_screen.screen+1
    // [14] call init_dist_screen
    // [29] phi from main to init_dist_screen [phi:main->init_dist_screen]
  init_dist_screen_from_main:
    jsr init_dist_screen
    jmp __b5
    // main::@5
  __b5:
    // [15] init_angle_screen::screen#0 = SCREEN_ANGLE#0 -- pbuz1=pbuz2 
    lda.z SCREEN_ANGLE
    sta.z init_angle_screen.screen
    lda.z SCREEN_ANGLE+1
    sta.z init_angle_screen.screen+1
    // [16] call init_angle_screen
    jsr init_angle_screen
    // [17] phi from main::@5 to main::@6 [phi:main::@5->main::@6]
  __b6_from___b5:
    jmp __b6
    // main::@6
  __b6:
    // [18] call make_plasma_charset
    // [100] phi from main::@6 to make_plasma_charset [phi:main::@6->make_plasma_charset]
  make_plasma_charset_from___b6:
    jsr make_plasma_charset
    // [19] phi from main::@6 to main::@7 [phi:main::@6->main::@7]
  __b7_from___b6:
    jmp __b7
    // main::@7
  __b7:
    // [20] call memset
    // [131] phi from main::@7 to memset [phi:main::@7->memset]
  memset_from___b7:
    // [131] phi memset::c#4 = BLACK [phi:main::@7->memset#0] -- vbuxx=vbuc1 
    ldx #BLACK
    // [131] phi memset::str#3 = (void *)COLS [phi:main::@7->memset#1] -- pvoz1=pvoc1 
    lda #<COLS
    sta.z memset.str
    lda #>COLS
    sta.z memset.str+1
    jsr memset
    // [21] phi from main::@7 to main::@1 [phi:main::@7->main::@1]
  __b1_from___b7:
    // [21] phi sin_offset_y#10 = 0 [phi:main::@7->main::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_offset_y
    // [21] phi sin_offset_x#10 = 0 [phi:main::@7->main::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_offset_x
    jmp __b1
  // Show double-buffered plasma
    // main::@1
  __b1:
    // [22] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  __b2_from___b1:
    jmp __b2
    // main::@2
  __b2:
    // [23] call doplasma
    // [139] phi from main::@2 to doplasma [phi:main::@2->doplasma]
  doplasma_from___b2:
    // [139] phi doplasma::screen#6 = SCREEN1 [phi:main::@2->doplasma#0] -- pbuz1=pbuc1 
    lda #<SCREEN1
    sta.z doplasma.screen
    lda #>SCREEN1
    sta.z doplasma.screen+1
    // [139] phi sin_offset_y#11 = sin_offset_y#10 [phi:main::@2->doplasma#1] -- register_copy 
    // [139] phi sin_offset_x#11 = sin_offset_x#10 [phi:main::@2->doplasma#2] -- register_copy 
    jsr doplasma
    // [24] phi from main::@2 to main::toD0181 [phi:main::@2->main::toD0181]
  toD0181_from___b2:
    jmp toD0181
    // main::toD0181
  toD0181:
    jmp __b3
    // main::@3
  __b3:
    // [25] *D018 = main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
    // [26] call doplasma
    // [139] phi from main::@3 to doplasma [phi:main::@3->doplasma]
  doplasma_from___b3:
    // [139] phi doplasma::screen#6 = SCREEN2 [phi:main::@3->doplasma#0] -- pbuz1=pbuc1 
    lda #<SCREEN2
    sta.z doplasma.screen
    lda #>SCREEN2
    sta.z doplasma.screen+1
    // [139] phi sin_offset_y#11 = sin_offset_y#13 [phi:main::@3->doplasma#1] -- register_copy 
    // [139] phi sin_offset_x#11 = sin_offset_x#13 [phi:main::@3->doplasma#2] -- register_copy 
    jsr doplasma
    // [27] phi from main::@3 to main::toD0182 [phi:main::@3->main::toD0182]
  toD0182_from___b3:
    jmp toD0182
    // main::toD0182
  toD0182:
    jmp __b4
    // main::@4
  __b4:
    // [28] *D018 = main::toD0182_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0182_return
    sta D018
    // [21] phi from main::@4 to main::@1 [phi:main::@4->main::@1]
  __b1_from___b4:
    // [21] phi sin_offset_y#10 = sin_offset_y#13 [phi:main::@4->main::@1#0] -- register_copy 
    // [21] phi sin_offset_x#10 = sin_offset_x#13 [phi:main::@4->main::@1#1] -- register_copy 
    jmp __b1
}
  // init_dist_screen
// Populates 1000 bytes (a screen) with values representing the distance to the center.
// The actual value stored is distance*2 to increase precision
// void init_dist_screen(__zp(4) char *screen)
init_dist_screen: {
    .label screen = 4
    .label screen_bottomline = 7
    .label yds = $f
    .label screen_topline = 4
    .label y = 6
    .label xds = $11
    .label ds = $11
    .label x = $14
    .label xb = $15
    // [30] call init_squares
    // [158] phi from init_dist_screen to init_squares [phi:init_dist_screen->init_squares]
  init_squares_from_init_dist_screen:
    jsr init_squares
    jmp __b11
    // init_dist_screen::@11
  __b11:
    // [31] init_dist_screen::screen_bottomline#0 = init_dist_screen::screen#0 + (unsigned int)$28*$18 -- pbuz1=pbuz2_plus_vwuc1 
    lda.z screen
    clc
    adc #<$28*$18
    sta.z screen_bottomline
    lda.z screen+1
    adc #>$28*$18
    sta.z screen_bottomline+1
    // [32] phi from init_dist_screen::@11 to init_dist_screen::@1 [phi:init_dist_screen::@11->init_dist_screen::@1]
  __b1_from___b11:
    // [32] phi init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#0 [phi:init_dist_screen::@11->init_dist_screen::@1#0] -- register_copy 
    // [32] phi init_dist_screen::screen_topline#11 = init_dist_screen::screen#0 [phi:init_dist_screen::@11->init_dist_screen::@1#1] -- register_copy 
    // [32] phi init_dist_screen::y#10 = 0 [phi:init_dist_screen::@11->init_dist_screen::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta.z y
    jmp __b1
    // [32] phi from init_dist_screen::@7 to init_dist_screen::@1 [phi:init_dist_screen::@7->init_dist_screen::@1]
  __b1_from___b7:
    // [32] phi init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#1 [phi:init_dist_screen::@7->init_dist_screen::@1#0] -- register_copy 
    // [32] phi init_dist_screen::screen_topline#11 = init_dist_screen::screen_topline#1 [phi:init_dist_screen::@7->init_dist_screen::@1#1] -- register_copy 
    // [32] phi init_dist_screen::y#10 = init_dist_screen::y#1 [phi:init_dist_screen::@7->init_dist_screen::@1#2] -- register_copy 
    jmp __b1
    // init_dist_screen::@1
  __b1:
    // [33] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z y
    asl
    // [34] if(init_dist_screen::y2#0>=$18) goto init_dist_screen::@2 -- vbuaa_ge_vbuc1_then_la1 
    cmp #$18
    bcs __b2
    jmp __b3
    // init_dist_screen::@3
  __b3:
    // [35] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    sec
    adc #$18
    // [36] phi from init_dist_screen::@2 init_dist_screen::@3 to init_dist_screen::@4 [phi:init_dist_screen::@2/init_dist_screen::@3->init_dist_screen::@4]
  __b4_from___b2:
  __b4_from___b3:
    // [36] phi init_dist_screen::yd#0 = init_dist_screen::$7 [phi:init_dist_screen::@2/init_dist_screen::@3->init_dist_screen::@4#0] -- register_copy 
    jmp __b4
    // init_dist_screen::@4
  __b4:
    // [37] sqr::val#0 = init_dist_screen::yd#0
    // [38] call sqr
    // [171] phi from init_dist_screen::@4 to sqr [phi:init_dist_screen::@4->sqr]
  sqr_from___b4:
    // [171] phi sqr::val#2 = sqr::val#0 [phi:init_dist_screen::@4->sqr#0] -- register_copy 
    jsr sqr
    // [39] sqr::return#2 = sqr::return#0 -- vwuz1=vwuz2 
    lda.z sqr.return
    sta.z sqr.return_1
    lda.z sqr.return+1
    sta.z sqr.return_1+1
    jmp __b12
    // init_dist_screen::@12
  __b12:
    // [40] init_dist_screen::yds#0 = sqr::return#2
    // [41] phi from init_dist_screen::@12 to init_dist_screen::@5 [phi:init_dist_screen::@12->init_dist_screen::@5]
  __b5_from___b12:
    // [41] phi init_dist_screen::xb#2 = $27 [phi:init_dist_screen::@12->init_dist_screen::@5#0] -- vbuz1=vbuc1 
    lda #$27
    sta.z xb
    // [41] phi init_dist_screen::x#2 = 0 [phi:init_dist_screen::@12->init_dist_screen::@5#1] -- vbuz1=vbuc1 
    lda #0
    sta.z x
    jmp __b5
    // init_dist_screen::@5
  __b5:
    // [42] if(init_dist_screen::x#2<$13+1) goto init_dist_screen::@6 -- vbuz1_lt_vbuc1_then_la1 
    lda.z x
    cmp #$13+1
    bcc __b6
    jmp __b7
    // init_dist_screen::@7
  __b7:
    // [43] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z screen_topline
    sta.z screen_topline
    bcc !+
    inc.z screen_topline+1
  !:
    // [44] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28 -- pbuz1=pbuz1_minus_vbuc1 
    sec
    lda.z screen_bottomline
    sbc #$28
    sta.z screen_bottomline
    lda.z screen_bottomline+1
    sbc #0
    sta.z screen_bottomline+1
    // [45] init_dist_screen::y#1 = ++ init_dist_screen::y#10 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [46] if(init_dist_screen::y#1!=$d) goto init_dist_screen::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$d
    cmp.z y
    bne __b1_from___b7
    jmp __breturn
    // init_dist_screen::@return
  __breturn:
    // [47] return 
    rts
    // init_dist_screen::@6
  __b6:
    // [48] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z x
    asl
    // [49] if(init_dist_screen::x2#0>=$27) goto init_dist_screen::@8 -- vbuaa_ge_vbuc1_then_la1 
    cmp #$27
    bcs __b8
    jmp __b9
    // init_dist_screen::@9
  __b9:
    // [50] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    sec
    adc #$27
    // [51] phi from init_dist_screen::@8 init_dist_screen::@9 to init_dist_screen::@10 [phi:init_dist_screen::@8/init_dist_screen::@9->init_dist_screen::@10]
  __b10_from___b8:
  __b10_from___b9:
    // [51] phi init_dist_screen::xd#0 = init_dist_screen::$16 [phi:init_dist_screen::@8/init_dist_screen::@9->init_dist_screen::@10#0] -- register_copy 
    jmp __b10
    // init_dist_screen::@10
  __b10:
    // [52] sqr::val#1 = init_dist_screen::xd#0
    // [53] call sqr
    // [171] phi from init_dist_screen::@10 to sqr [phi:init_dist_screen::@10->sqr]
  sqr_from___b10:
    // [171] phi sqr::val#2 = sqr::val#1 [phi:init_dist_screen::@10->sqr#0] -- register_copy 
    jsr sqr
    // [54] sqr::return#3 = sqr::return#0
    jmp __b13
    // init_dist_screen::@13
  __b13:
    // [55] init_dist_screen::xds#0 = sqr::return#3
    // [56] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0 -- vwuz1=vwuz1_plus_vwuz2 
    clc
    lda.z ds
    adc.z yds
    sta.z ds
    lda.z ds+1
    adc.z yds+1
    sta.z ds+1
    // [57] sqrt::val#0 = init_dist_screen::ds#0
    // [58] call sqrt
    jsr sqrt
    // [59] sqrt::return#2 = sqrt::return#0
    jmp __b14
    // init_dist_screen::@14
  __b14:
    // [60] init_dist_screen::d#0 = sqrt::return#2
    // [61] init_dist_screen::screen_topline#11[init_dist_screen::x#2] = init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy.z x
    sta (screen_topline),y
    // [62] init_dist_screen::screen_bottomline#11[init_dist_screen::x#2] = init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy.z x
    sta (screen_bottomline),y
    // [63] init_dist_screen::screen_topline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy.z xb
    sta (screen_topline),y
    // [64] init_dist_screen::screen_bottomline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy.z xb
    sta (screen_bottomline),y
    // [65] init_dist_screen::x#1 = ++ init_dist_screen::x#2 -- vbuz1=_inc_vbuz1 
    inc.z x
    // [66] init_dist_screen::xb#1 = -- init_dist_screen::xb#2 -- vbuz1=_dec_vbuz1 
    dec.z xb
    // [41] phi from init_dist_screen::@14 to init_dist_screen::@5 [phi:init_dist_screen::@14->init_dist_screen::@5]
  __b5_from___b14:
    // [41] phi init_dist_screen::xb#2 = init_dist_screen::xb#1 [phi:init_dist_screen::@14->init_dist_screen::@5#0] -- register_copy 
    // [41] phi init_dist_screen::x#2 = init_dist_screen::x#1 [phi:init_dist_screen::@14->init_dist_screen::@5#1] -- register_copy 
    jmp __b5
    // init_dist_screen::@8
  __b8:
    // [67] init_dist_screen::$16 = init_dist_screen::x2#0 - $27 -- vbuaa=vbuaa_minus_vbuc1 
    sec
    sbc #$27
    jmp __b10_from___b8
    // init_dist_screen::@2
  __b2:
    // [68] init_dist_screen::$7 = init_dist_screen::y2#0 - $18 -- vbuaa=vbuaa_minus_vbuc1 
    sec
    sbc #$18
    jmp __b4_from___b2
}
  // init_angle_screen
// Populates 1000 bytes (a screen) with values representing the angle to the center.
// Utilizes symmetry around the  center
// void init_angle_screen(__zp(4) char *screen)
init_angle_screen: {
    .label __9 = $11
    .label screen = 4
    .label screen_bottomline = 4
    .label xw = $16
    .label yw = $18
    .label angle_w = $11
    .label ang_w = $13
    .label x = $14
    .label xb = $15
    .label screen_topline = 2
    .label y = 6
    // [69] init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#0 + (unsigned int)$28*$c -- pbuz1=pbuz1_plus_vwuc1 
    lda.z screen_bottomline
    clc
    adc #<$28*$c
    sta.z screen_bottomline
    lda.z screen_bottomline+1
    adc #>$28*$c
    sta.z screen_bottomline+1
    // [70] init_angle_screen::screen_topline#7 = init_angle_screen::screen_bottomline#0 -- pbuz1=pbuz2 
    lda.z screen_bottomline
    sta.z screen_topline
    lda.z screen_bottomline+1
    sta.z screen_topline+1
    // [71] phi from init_angle_screen to init_angle_screen::@1 [phi:init_angle_screen->init_angle_screen::@1]
  __b1_from_init_angle_screen:
    // [71] phi init_angle_screen::screen_bottomline#6 = init_angle_screen::screen_bottomline#0 [phi:init_angle_screen->init_angle_screen::@1#0] -- register_copy 
    // [71] phi init_angle_screen::screen_topline#6 = init_angle_screen::screen_topline#7 [phi:init_angle_screen->init_angle_screen::@1#1] -- register_copy 
    // [71] phi init_angle_screen::y#5 = 0 [phi:init_angle_screen->init_angle_screen::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta.z y
    jmp __b1
    // [71] phi from init_angle_screen::@4 to init_angle_screen::@1 [phi:init_angle_screen::@4->init_angle_screen::@1]
  __b1_from___b4:
    // [71] phi init_angle_screen::screen_bottomline#6 = init_angle_screen::screen_bottomline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#0] -- register_copy 
    // [71] phi init_angle_screen::screen_topline#6 = init_angle_screen::screen_topline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#1] -- register_copy 
    // [71] phi init_angle_screen::y#5 = init_angle_screen::y#1 [phi:init_angle_screen::@4->init_angle_screen::@1#2] -- register_copy 
    jmp __b1
    // init_angle_screen::@1
  __b1:
    // [72] phi from init_angle_screen::@1 to init_angle_screen::@2 [phi:init_angle_screen::@1->init_angle_screen::@2]
  __b2_from___b1:
    // [72] phi init_angle_screen::xb#2 = $27 [phi:init_angle_screen::@1->init_angle_screen::@2#0] -- vbuz1=vbuc1 
    lda #$27
    sta.z xb
    // [72] phi init_angle_screen::x#2 = 0 [phi:init_angle_screen::@1->init_angle_screen::@2#1] -- vbuz1=vbuc1 
    lda #0
    sta.z x
    jmp __b2
    // init_angle_screen::@2
  __b2:
    // [73] if(init_angle_screen::x#2<$13+1) goto init_angle_screen::@3 -- vbuz1_lt_vbuc1_then_la1 
    lda.z x
    cmp #$13+1
    bcc __b3
    jmp __b4
    // init_angle_screen::@4
  __b4:
    // [74] init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#6 - $28 -- pbuz1=pbuz1_minus_vbuc1 
    sec
    lda.z screen_topline
    sbc #$28
    sta.z screen_topline
    lda.z screen_topline+1
    sbc #0
    sta.z screen_topline+1
    // [75] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z screen_bottomline
    sta.z screen_bottomline
    bcc !+
    inc.z screen_bottomline+1
  !:
    // [76] init_angle_screen::y#1 = ++ init_angle_screen::y#5 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [77] if(init_angle_screen::y#1!=$d) goto init_angle_screen::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$d
    cmp.z y
    bne __b1_from___b4
    jmp __breturn
    // init_angle_screen::@return
  __breturn:
    // [78] return 
    rts
    // init_angle_screen::@3
  __b3:
    // [79] init_angle_screen::$3 = init_angle_screen::x#2 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z x
    asl
    // [80] init_angle_screen::$4 = $27 - init_angle_screen::$3 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    sec
    adc #$27
    // [81] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 -- vwuz1=vbuaa_word_vbuc1 
    ldy #0
    sta.z xw+1
    sty.z xw
    // [82] init_angle_screen::$6 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z y
    asl
    // [83] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0 -- vwuz1=vbuaa_word_vbuc1 
    ldy #0
    sta.z yw+1
    sty.z yw
    // [84] atan2_16::x#0 = (int)init_angle_screen::xw#0
    // [85] atan2_16::y#0 = (int)init_angle_screen::yw#0
    // [86] call atan2_16
    jsr atan2_16
    // [87] atan2_16::return#2 = atan2_16::return#0
    jmp __b5
    // init_angle_screen::@5
  __b5:
    // [88] init_angle_screen::angle_w#0 = atan2_16::return#2
    // [89] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1 
    lda #$80
    clc
    adc.z __9
    sta.z __9
    bcc !+
    inc.z __9+1
  !:
    // [90] init_angle_screen::ang_w#0 = byte1  init_angle_screen::$9 -- vbuz1=_byte1_vwuz2 
    lda.z __9+1
    sta.z ang_w
    // [91] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda.z ang_w
    ldy.z xb
    sta (screen_bottomline),y
    // [92] init_angle_screen::$11 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1 
    lda.z ang_w
    eor #$ff
    clc
    adc #1
    // [93] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy.z xb
    sta (screen_topline),y
    // [94] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1 
    lda #$80
    clc
    adc.z ang_w
    // [95] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy.z x
    sta (screen_topline),y
    // [96] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1 
    lda #$80
    sec
    sbc.z ang_w
    // [97] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy.z x
    sta (screen_bottomline),y
    // [98] init_angle_screen::x#1 = ++ init_angle_screen::x#2 -- vbuz1=_inc_vbuz1 
    inc.z x
    // [99] init_angle_screen::xb#1 = -- init_angle_screen::xb#2 -- vbuz1=_dec_vbuz1 
    dec.z xb
    // [72] phi from init_angle_screen::@5 to init_angle_screen::@2 [phi:init_angle_screen::@5->init_angle_screen::@2]
  __b2_from___b5:
    // [72] phi init_angle_screen::xb#2 = init_angle_screen::xb#1 [phi:init_angle_screen::@5->init_angle_screen::@2#0] -- register_copy 
    // [72] phi init_angle_screen::x#2 = init_angle_screen::x#1 [phi:init_angle_screen::@5->init_angle_screen::@2#1] -- register_copy 
    jmp __b2
}
  // make_plasma_charset
// Make a plasma-friendly charset where the chars are randomly filled
// void make_plasma_charset(char *charset)
make_plasma_charset: {
    .label __7 = $15
    .label __10 = $1a
    .label __11 = $1a
    .label s = $14
    .label i = 6
    .label c = 7
    .label __16 = $1a
    jmp sid_rnd_init1
    // make_plasma_charset::sid_rnd_init1
  sid_rnd_init1:
    // [101] *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff -- _deref_pwuc1=vwuc2 
    lda #<$ffff
    sta SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ
    lda #>$ffff
    sta SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ+1
    // [102] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE -- _deref_pbuc1=vbuc2 
    lda #SID_CONTROL_NOISE
    sta SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL
    // [103] phi from make_plasma_charset::sid_rnd_init1 to make_plasma_charset::@11 [phi:make_plasma_charset::sid_rnd_init1->make_plasma_charset::@11]
  __b11_from_sid_rnd_init1:
    jmp __b11
    // make_plasma_charset::@11
  __b11:
    // [104] call print_cls
    // [227] phi from make_plasma_charset::@11 to print_cls [phi:make_plasma_charset::@11->print_cls]
  print_cls_from___b11:
    jsr print_cls
    // [105] phi from make_plasma_charset::@11 to make_plasma_charset::@1 [phi:make_plasma_charset::@11->make_plasma_charset::@1]
  __b1_from___b11:
    // [105] phi print_char_cursor#19 = print_screen#0 [phi:make_plasma_charset::@11->make_plasma_charset::@1#0] -- pbuz1=pbuc1 
    lda #<print_screen
    sta.z print_char_cursor
    lda #>print_screen
    sta.z print_char_cursor+1
    // [105] phi make_plasma_charset::c#2 = 0 [phi:make_plasma_charset::@11->make_plasma_charset::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z c
    lda #>0
    sta.z c+1
    jmp __b1
    // make_plasma_charset::@1
  __b1:
    // [106] if(make_plasma_charset::c#2<$100) goto make_plasma_charset::@2 -- vwuz1_lt_vwuc1_then_la1 
    lda.z c+1
    cmp #>$100
    bcc __b2
    bne !+
    lda.z c
    cmp #<$100
    bcc __b2
  !:
    jmp __breturn
    // make_plasma_charset::@return
  __breturn:
    // [107] return 
    rts
    // make_plasma_charset::@2
  __b2:
    // [108] make_plasma_charset::$3 = byte0  make_plasma_charset::c#2 -- vbuxx=_byte0_vwuz1 
    ldx.z c
    // [109] make_plasma_charset::s#0 = SINTABLE[make_plasma_charset::$3] -- vbuz1=pbuc1_derefidx_vbuxx 
    lda SINTABLE,x
    sta.z s
    // [110] phi from make_plasma_charset::@2 to make_plasma_charset::@3 [phi:make_plasma_charset::@2->make_plasma_charset::@3]
  __b3_from___b2:
    // [110] phi make_plasma_charset::i#2 = 0 [phi:make_plasma_charset::@2->make_plasma_charset::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp __b3
    // make_plasma_charset::@3
  __b3:
    // [111] if(make_plasma_charset::i#2<8) goto make_plasma_charset::@5 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i
    cmp #8
    bcc __b5_from___b3
    jmp __b4
    // make_plasma_charset::@4
  __b4:
    // [112] make_plasma_charset::$12 = make_plasma_charset::c#2 & 7 -- vbuaa=vwuz1_band_vbuc1 
    lda #7
    and.z c
    // [113] if(make_plasma_charset::$12!=0) goto make_plasma_charset::@10 -- vbuaa_neq_0_then_la1 
    cmp #0
    bne __b10_from___b4
    // [114] phi from make_plasma_charset::@4 to make_plasma_charset::@9 [phi:make_plasma_charset::@4->make_plasma_charset::@9]
  __b9_from___b4:
    jmp __b9
    // make_plasma_charset::@9
  __b9:
    // [115] call print_char
    jsr print_char
    // [116] phi from make_plasma_charset::@4 make_plasma_charset::@9 to make_plasma_charset::@10 [phi:make_plasma_charset::@4/make_plasma_charset::@9->make_plasma_charset::@10]
  __b10_from___b4:
  __b10_from___b9:
    // [116] phi print_char_cursor#32 = print_char_cursor#19 [phi:make_plasma_charset::@4/make_plasma_charset::@9->make_plasma_charset::@10#0] -- register_copy 
    jmp __b10
    // make_plasma_charset::@10
  __b10:
    // [117] make_plasma_charset::c#1 = ++ make_plasma_charset::c#2 -- vwuz1=_inc_vwuz1 
    inc.z c
    bne !+
    inc.z c+1
  !:
    // [105] phi from make_plasma_charset::@10 to make_plasma_charset::@1 [phi:make_plasma_charset::@10->make_plasma_charset::@1]
  __b1_from___b10:
    // [105] phi print_char_cursor#19 = print_char_cursor#32 [phi:make_plasma_charset::@10->make_plasma_charset::@1#0] -- register_copy 
    // [105] phi make_plasma_charset::c#2 = make_plasma_charset::c#1 [phi:make_plasma_charset::@10->make_plasma_charset::@1#1] -- register_copy 
    jmp __b1
    // [118] phi from make_plasma_charset::@3 to make_plasma_charset::@5 [phi:make_plasma_charset::@3->make_plasma_charset::@5]
  __b5_from___b3:
    // [118] phi make_plasma_charset::b#2 = 0 [phi:make_plasma_charset::@3->make_plasma_charset::@5#0] -- vbuyy=vbuc1 
    ldy #0
    // [118] phi make_plasma_charset::ii#2 = 0 [phi:make_plasma_charset::@3->make_plasma_charset::@5#1] -- vbuxx=vbuc1 
    ldx #0
    jmp __b5
    // make_plasma_charset::@5
  __b5:
    // [119] if(make_plasma_charset::ii#2<8) goto make_plasma_charset::sid_rnd1 -- vbuxx_lt_vbuc1_then_la1 
    cpx #8
    bcc sid_rnd1
    jmp __b6
    // make_plasma_charset::@6
  __b6:
    // [120] make_plasma_charset::$10 = make_plasma_charset::c#2 << 3 -- vwuz1=vwuz2_rol_3 
    lda.z c
    asl
    sta.z __10
    lda.z c+1
    rol
    sta.z __10+1
    asl.z __10
    rol.z __10+1
    asl.z __10
    rol.z __10+1
    // [121] make_plasma_charset::$11 = make_plasma_charset::$10 + make_plasma_charset::i#2 -- vwuz1=vwuz1_plus_vbuz2 
    lda.z i
    clc
    adc.z __11
    sta.z __11
    bcc !+
    inc.z __11+1
  !:
    // [122] make_plasma_charset::$16 = CHARSET + make_plasma_charset::$11 -- pbuz1=pbuc1_plus_vwuz1 
    lda.z __16
    clc
    adc #<CHARSET
    sta.z __16
    lda.z __16+1
    adc #>CHARSET
    sta.z __16+1
    // [123] *make_plasma_charset::$16 = make_plasma_charset::b#2 -- _deref_pbuz1=vbuyy 
    tya
    ldy #0
    sta (__16),y
    // [124] make_plasma_charset::i#1 = ++ make_plasma_charset::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [110] phi from make_plasma_charset::@6 to make_plasma_charset::@3 [phi:make_plasma_charset::@6->make_plasma_charset::@3]
  __b3_from___b6:
    // [110] phi make_plasma_charset::i#2 = make_plasma_charset::i#1 [phi:make_plasma_charset::@6->make_plasma_charset::@3#0] -- register_copy 
    jmp __b3
    // make_plasma_charset::sid_rnd1
  sid_rnd1:
    // [125] make_plasma_charset::sid_rnd1_return#0 = *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_OSC) -- vbuaa=_deref_pbuc1 
    lda SID+OFFSET_STRUCT_MOS6581_SID_CH3_OSC
    jmp __b12
    // make_plasma_charset::@12
  __b12:
    // [126] make_plasma_charset::$7 = make_plasma_charset::sid_rnd1_return#0 & $ff -- vbuz1=vbuaa_band_vbuc1 
    and #$ff
    sta.z __7
    // [127] if(make_plasma_charset::$7<=make_plasma_charset::s#0) goto make_plasma_charset::@7 -- vbuz1_le_vbuz2_then_la1 
    lda.z s
    cmp.z __7
    bcs __b7_from___b12
    jmp __b8
    // make_plasma_charset::@8
  __b8:
    // [128] make_plasma_charset::b#1 = make_plasma_charset::b#2 | make_plasma_charset::bittab[make_plasma_charset::ii#2] -- vbuyy=vbuyy_bor_pbuc1_derefidx_vbuxx 
    tya
    ora bittab,x
    tay
    // [129] phi from make_plasma_charset::@12 make_plasma_charset::@8 to make_plasma_charset::@7 [phi:make_plasma_charset::@12/make_plasma_charset::@8->make_plasma_charset::@7]
  __b7_from___b12:
  __b7_from___b8:
    // [129] phi make_plasma_charset::b#6 = make_plasma_charset::b#2 [phi:make_plasma_charset::@12/make_plasma_charset::@8->make_plasma_charset::@7#0] -- register_copy 
    jmp __b7
    // make_plasma_charset::@7
  __b7:
    // [130] make_plasma_charset::ii#1 = ++ make_plasma_charset::ii#2 -- vbuxx=_inc_vbuxx 
    inx
    // [118] phi from make_plasma_charset::@7 to make_plasma_charset::@5 [phi:make_plasma_charset::@7->make_plasma_charset::@5]
  __b5_from___b7:
    // [118] phi make_plasma_charset::b#2 = make_plasma_charset::b#6 [phi:make_plasma_charset::@7->make_plasma_charset::@5#0] -- register_copy 
    // [118] phi make_plasma_charset::ii#2 = make_plasma_charset::ii#1 [phi:make_plasma_charset::@7->make_plasma_charset::@5#1] -- register_copy 
    jmp __b5
  .segment Data
    bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80
}
.segment Code
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
// void * memset(__zp(4) void *str, __register(X) char c, unsigned int num)
memset: {
    .label end = $1c
    .label dst = 4
    .label str = 4
    jmp __b1
    // memset::@1
  __b1:
    // [132] memset::end#0 = (char *)memset::str#3 + $3e8 -- pbuz1=pbuz2_plus_vwuc1 
    lda.z str
    clc
    adc #<$3e8
    sta.z end
    lda.z str+1
    adc #>$3e8
    sta.z end+1
    // [133] memset::dst#4 = (char *)memset::str#3
    // [134] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2]
  __b2_from___b1:
  __b2_from___b3:
    // [134] phi memset::dst#2 = memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy 
    jmp __b2
    // memset::@2
  __b2:
    // [135] if(memset::dst#2!=memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 
    lda.z dst+1
    cmp.z end+1
    bne __b3
    lda.z dst
    cmp.z end
    bne __b3
    jmp __breturn
    // memset::@return
  __breturn:
    // [136] return 
    rts
    // memset::@3
  __b3:
    // [137] *memset::dst#2 = memset::c#4 -- _deref_pbuz1=vbuxx 
    txa
    ldy #0
    sta (dst),y
    // [138] memset::dst#1 = ++ memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    jmp __b2_from___b3
}
  // doplasma
// Render plasma to the passed screen
// void doplasma(__zp($f) char *screen)
doplasma: {
    .label angle = 7
    .label dist = 9
    .label sin_x = $16
    .label sin_y = $18
    .label screen = $f
    .label y = $14
    // [140] doplasma::angle#0 = SCREEN_ANGLE#0 -- pbuz1=pbuz2 
    lda.z SCREEN_ANGLE
    sta.z angle
    lda.z SCREEN_ANGLE+1
    sta.z angle+1
    // [141] doplasma::dist#0 = SCREEN_DIST#0 -- pbuz1=pbuz2 
    lda.z SCREEN_DIST
    sta.z dist
    lda.z SCREEN_DIST+1
    sta.z dist+1
    // [142] doplasma::sin_x#0 = SINTABLE + sin_offset_x#11 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z sin_offset_x
    clc
    adc #<SINTABLE
    sta.z sin_x
    lda #>SINTABLE
    adc #0
    sta.z sin_x+1
    // [143] doplasma::sin_y#0 = SINTABLE + sin_offset_y#11 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z sin_offset_y
    clc
    adc #<SINTABLE
    sta.z sin_y
    lda #>SINTABLE
    adc #0
    sta.z sin_y+1
    // [144] phi from doplasma to doplasma::@1 [phi:doplasma->doplasma::@1]
  __b1_from_doplasma:
    // [144] phi doplasma::y#4 = 0 [phi:doplasma->doplasma::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z y
    // [144] phi doplasma::screen#5 = doplasma::screen#6 [phi:doplasma->doplasma::@1#1] -- register_copy 
    // [144] phi doplasma::dist#4 = doplasma::dist#0 [phi:doplasma->doplasma::@1#2] -- register_copy 
    // [144] phi doplasma::angle#4 = doplasma::angle#0 [phi:doplasma->doplasma::@1#3] -- register_copy 
    jmp __b1
    // [144] phi from doplasma::@3 to doplasma::@1 [phi:doplasma::@3->doplasma::@1]
  __b1_from___b3:
    // [144] phi doplasma::y#4 = doplasma::y#1 [phi:doplasma::@3->doplasma::@1#0] -- register_copy 
    // [144] phi doplasma::screen#5 = doplasma::screen#2 [phi:doplasma::@3->doplasma::@1#1] -- register_copy 
    // [144] phi doplasma::dist#4 = doplasma::dist#1 [phi:doplasma::@3->doplasma::@1#2] -- register_copy 
    // [144] phi doplasma::angle#4 = doplasma::angle#1 [phi:doplasma::@3->doplasma::@1#3] -- register_copy 
    jmp __b1
    // doplasma::@1
  __b1:
    // [145] phi from doplasma::@1 to doplasma::@2 [phi:doplasma::@1->doplasma::@2]
  __b2_from___b1:
    // [145] phi doplasma::x#2 = 0 [phi:doplasma::@1->doplasma::@2#0] -- vbuxx=vbuc1 
    ldx #0
    jmp __b2
    // [145] phi from doplasma::@2 to doplasma::@2 [phi:doplasma::@2->doplasma::@2]
  __b2_from___b2:
    // [145] phi doplasma::x#2 = doplasma::x#1 [phi:doplasma::@2->doplasma::@2#0] -- register_copy 
    jmp __b2
    // doplasma::@2
  __b2:
    // [146] doplasma::$2 = doplasma::sin_x#0[doplasma::angle#4[doplasma::x#2]] + doplasma::sin_y#0[doplasma::dist#4[doplasma::x#2]] -- vbuaa=pbuz1_derefidx_(pbuz2_derefidx_vbuxx)_plus_pbuz3_derefidx_(pbuz4_derefidx_vbuxx) 
    txa
    tay
    lda (dist),y
    sta.z $ff
    lda (angle),y
    tay
    lda (sin_x),y
    ldy.z $ff
    clc
    adc (sin_y),y
    // [147] doplasma::screen#5[doplasma::x#2] = doplasma::$2 -- pbuz1_derefidx_vbuxx=vbuaa 
    stx.z $ff
    ldy.z $ff
    sta (screen),y
    // [148] doplasma::x#1 = ++ doplasma::x#2 -- vbuxx=_inc_vbuxx 
    inx
    // [149] if(doplasma::x#1!=$28) goto doplasma::@2 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$28
    bne __b2_from___b2
    jmp __b3
    // doplasma::@3
  __b3:
    // [150] doplasma::screen#2 = doplasma::screen#5 + $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z screen
    sta.z screen
    bcc !+
    inc.z screen+1
  !:
    // [151] doplasma::angle#1 = doplasma::angle#4 + $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z angle
    sta.z angle
    bcc !+
    inc.z angle+1
  !:
    // [152] doplasma::dist#1 = doplasma::dist#4 + $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z dist
    sta.z dist
    bcc !+
    inc.z dist+1
  !:
    // [153] doplasma::y#1 = ++ doplasma::y#4 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [154] if(doplasma::y#1!=$1a) goto doplasma::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$1a
    cmp.z y
    bne __b1_from___b3
    jmp __b4
    // doplasma::@4
  __b4:
    // [155] sin_offset_x#13 = sin_offset_x#11 - 3 -- vbuz1=vbuz1_minus_vbuc1 
    lax.z sin_offset_x
    axs #3
    stx.z sin_offset_x
    // [156] sin_offset_y#13 = sin_offset_y#11 - 7 -- vbuz1=vbuz1_minus_vbuc1 
    lax.z sin_offset_y
    axs #7
    stx.z sin_offset_y
    jmp __breturn
    // doplasma::@return
  __breturn:
    // [157] return 
    rts
}
  // init_squares
// Initialize squares table
// Uses iterative formula (x+1)^2 = x^2 + 2*x + 1
init_squares: {
    .label squares = $f
    .label sqr = 9
    // [159] call malloc
    // [9] phi from init_squares to malloc [phi:init_squares->malloc]
  malloc_from_init_squares:
    // [9] phi malloc::size#3 = NUM_SQUARES#2*SIZEOF_UNSIGNED_INT [phi:init_squares->malloc#0] -- vwuz1=vbuc1 
    lda #<NUM_SQUARES*SIZEOF_UNSIGNED_INT
    sta.z malloc.size
    lda #>NUM_SQUARES*SIZEOF_UNSIGNED_INT
    sta.z malloc.size+1
    // [9] phi heap_head#13 = heap_head#0 [phi:init_squares->malloc#1] -- register_copy 
    jsr malloc
    jmp __b3
    // init_squares::@3
  __b3:
    // [160] SQUARES#0 = (void *)malloc::mem#0
    // [161] init_squares::squares#0 = (unsigned int *)SQUARES#0 -- pwuz1=pwuz2 
    lda.z SQUARES
    sta.z squares
    lda.z SQUARES+1
    sta.z squares+1
    // [162] phi from init_squares::@3 to init_squares::@1 [phi:init_squares::@3->init_squares::@1]
  __b1_from___b3:
    // [162] phi init_squares::squares#2 = init_squares::squares#0 [phi:init_squares::@3->init_squares::@1#0] -- register_copy 
    // [162] phi init_squares::sqr#2 = 0 [phi:init_squares::@3->init_squares::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z sqr
    lda #>0
    sta.z sqr+1
    // [162] phi init_squares::i#2 = 0 [phi:init_squares::@3->init_squares::@1#2] -- vbuxx=vbuc1 
    ldx #0
    jmp __b1
    // init_squares::@1
  __b1:
    // [163] if(init_squares::i#2<NUM_SQUARES#2) goto init_squares::@2 -- vbuxx_lt_vbuc1_then_la1 
    cpx #NUM_SQUARES
    bcc __b2
    jmp __breturn
    // init_squares::@return
  __breturn:
    // [164] return 
    rts
    // init_squares::@2
  __b2:
    // [165] *init_squares::squares#2 = init_squares::sqr#2 -- _deref_pwuz1=vwuz2 
    ldy #0
    lda.z sqr
    sta (squares),y
    iny
    lda.z sqr+1
    sta (squares),y
    // [166] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_UNSIGNED_INT -- pwuz1=pwuz1_plus_vbuc1 
    lda #SIZEOF_UNSIGNED_INT
    clc
    adc.z squares
    sta.z squares
    bcc !+
    inc.z squares+1
  !:
    // [167] init_squares::$3 = init_squares::i#2 << 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // [168] init_squares::$4 = init_squares::$3 + 1 -- vbuaa=vbuaa_plus_1 
    clc
    adc #1
    // [169] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4 -- vwuz1=vwuz1_plus_vbuaa 
    clc
    adc.z sqr
    sta.z sqr
    bcc !+
    inc.z sqr+1
  !:
    // [170] init_squares::i#1 = ++ init_squares::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [162] phi from init_squares::@2 to init_squares::@1 [phi:init_squares::@2->init_squares::@1]
  __b1_from___b2:
    // [162] phi init_squares::squares#2 = init_squares::squares#1 [phi:init_squares::@2->init_squares::@1#0] -- register_copy 
    // [162] phi init_squares::sqr#2 = init_squares::sqr#1 [phi:init_squares::@2->init_squares::@1#1] -- register_copy 
    // [162] phi init_squares::i#2 = init_squares::i#1 [phi:init_squares::@2->init_squares::@1#2] -- register_copy 
    jmp __b1
}
  // sqr
// Find the square of a char value
// Uses a table of squares that must be initialized by calling init_squares()
// __zp($11) unsigned int sqr(__register(A) char val)
sqr: {
    .label return = $11
    .label return_1 = $f
    // [172] sqr::$0 = sqr::val#2 << 1 -- vbuaa=vbuaa_rol_1 
    asl
    // [173] sqr::return#0 = ((unsigned int *)SQUARES#0)[sqr::$0] -- vwuz1=pwuz2_derefidx_vbuaa 
    tay
    lda (SQUARES),y
    sta.z return
    iny
    lda (SQUARES),y
    sta.z return+1
    jmp __breturn
    // sqr::@return
  __breturn:
    // [174] return 
    rts
}
  // sqrt
// Find the (integer) square root of a unsigned int value
// If the square is not an integer then it returns the largest integer N where N*N <= val
// Uses a table of squares that must be initialized by calling init_squares()
// __register(A) char sqrt(__zp($11) unsigned int val)
sqrt: {
    .label __1 = 9
    .label __2 = 9
    .label found = 9
    .label val = $11
    // [175] bsearch16u::key#0 = sqrt::val#0
    // [176] bsearch16u::items#1 = (unsigned int *)SQUARES#0 -- pwuz1=pwuz2 
    lda.z SQUARES
    sta.z bsearch16u.items
    lda.z SQUARES+1
    sta.z bsearch16u.items+1
    // [177] call bsearch16u
    // [233] phi from sqrt to bsearch16u [phi:sqrt->bsearch16u]
  bsearch16u_from_sqrt:
    jsr bsearch16u
    // [178] bsearch16u::return#3 = bsearch16u::return#1
    jmp __b1
    // sqrt::@1
  __b1:
    // [179] sqrt::found#0 = bsearch16u::return#3
    // [180] sqrt::$2 = sqrt::found#0 - (unsigned int *)SQUARES#0 -- vwuz1=pwuz1_minus_pwuz2 
    lda.z __2
    sec
    sbc.z SQUARES
    sta.z __2
    lda.z __2+1
    sbc.z SQUARES+1
    sta.z __2+1
    // [181] sqrt::$1 = sqrt::$2 >> 1 -- vwuz1=vwuz1_ror_1 
    lsr.z __1+1
    ror.z __1
    // [182] sqrt::return#0 = (char)sqrt::$1 -- vbuaa=_byte_vwuz1 
    lda.z __1
    jmp __breturn
    // sqrt::@return
  __breturn:
    // [183] return 
    rts
}
  // atan2_16
// Find the atan2(x, y) - which is the angle of the line from (0,0) to (x,y)
// Finding the angle requires a binary search using CORDIC_ITERATIONS_16
// Returns the angle in hex-degrees (0=0, 0x8000=PI, 0x10000=2*PI)
// __zp($11) unsigned int atan2_16(__zp($16) int x, __zp($18) int y)
atan2_16: {
    .label __2 = 9
    .label __7 = $f
    .label yi = 9
    .label xi = $f
    .label angle = $11
    .label xd = $1c
    .label yd = $1a
    .label return = $11
    .label x = $16
    .label y = $18
    // [184] if(atan2_16::y#0>=0) goto atan2_16::@1 -- vwsz1_ge_0_then_la1 
    lda.z y+1
    bpl __b1
    jmp __b2
    // atan2_16::@2
  __b2:
    // [185] atan2_16::$2 = - atan2_16::y#0 -- vwsz1=_neg_vwsz2 
    sec
    lda #0
    sbc.z y
    sta.z __2
    lda #0
    sbc.z y+1
    sta.z __2+1
    // [186] phi from atan2_16::@1 atan2_16::@2 to atan2_16::@3 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3]
  __b3_from___b1:
  __b3_from___b2:
    // [186] phi atan2_16::yi#0 = atan2_16::yi#16 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3#0] -- register_copy 
    jmp __b3
    // atan2_16::@3
  __b3:
    // [187] if(atan2_16::x#0>=0) goto atan2_16::@4 -- vwsz1_ge_0_then_la1 
    lda.z x+1
    bpl __b4
    jmp __b5
    // atan2_16::@5
  __b5:
    // [188] atan2_16::$7 = - atan2_16::x#0 -- vwsz1=_neg_vwsz2 
    sec
    lda #0
    sbc.z x
    sta.z __7
    lda #0
    sbc.z x+1
    sta.z __7+1
    // [189] phi from atan2_16::@4 atan2_16::@5 to atan2_16::@6 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6]
  __b6_from___b4:
  __b6_from___b5:
    // [189] phi atan2_16::xi#0 = atan2_16::xi#13 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6#0] -- register_copy 
    jmp __b6
    // atan2_16::@6
  __b6:
    // [190] phi from atan2_16::@6 to atan2_16::@10 [phi:atan2_16::@6->atan2_16::@10]
  __b10_from___b6:
    // [190] phi atan2_16::angle#12 = 0 [phi:atan2_16::@6->atan2_16::@10#0] -- vwuz1=vwuc1 
    lda #<0
    sta.z angle
    lda #>0
    sta.z angle+1
    // [190] phi atan2_16::i#2 = 0 [phi:atan2_16::@6->atan2_16::@10#1] -- vbuxx=vbuc1 
    ldx #0
    // [190] phi atan2_16::xi#3 = atan2_16::xi#0 [phi:atan2_16::@6->atan2_16::@10#2] -- register_copy 
    // [190] phi atan2_16::yi#3 = atan2_16::yi#0 [phi:atan2_16::@6->atan2_16::@10#3] -- register_copy 
    jmp __b10
    // atan2_16::@10
  __b10:
    // [191] if(atan2_16::yi#3!=0) goto atan2_16::@11 -- vwsz1_neq_0_then_la1 
    lda.z yi+1
    ora.z yi
    bne __b11
    // [192] phi from atan2_16::@10 atan2_16::@19 to atan2_16::@12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12]
  __b12_from___b10:
  __b12_from___b19:
    // [192] phi atan2_16::angle#6 = atan2_16::angle#12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12#0] -- register_copy 
    jmp __b12
    // atan2_16::@12
  __b12:
    // [193] atan2_16::angle#1 = atan2_16::angle#6 >> 1 -- vwuz1=vwuz1_ror_1 
    lsr.z angle+1
    ror.z angle
    // [194] if(atan2_16::x#0>=0) goto atan2_16::@7 -- vwsz1_ge_0_then_la1 
    lda.z x+1
    bpl __b7_from___b12
    jmp __b21
    // atan2_16::@21
  __b21:
    // [195] atan2_16::angle#4 = $8000 - atan2_16::angle#1 -- vwuz1=vwuc1_minus_vwuz1 
    lda #<$8000
    sec
    sbc.z angle
    sta.z angle
    lda #>$8000
    sbc.z angle+1
    sta.z angle+1
    // [196] phi from atan2_16::@12 atan2_16::@21 to atan2_16::@7 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7]
  __b7_from___b12:
  __b7_from___b21:
    // [196] phi atan2_16::angle#11 = atan2_16::angle#1 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7#0] -- register_copy 
    jmp __b7
    // atan2_16::@7
  __b7:
    // [197] if(atan2_16::y#0>=0) goto atan2_16::@8 -- vwsz1_ge_0_then_la1 
    lda.z y+1
    bpl __b8_from___b7
    jmp __b9
    // atan2_16::@9
  __b9:
    // [198] atan2_16::angle#5 = - atan2_16::angle#11 -- vwuz1=_neg_vwuz1 
    sec
    lda #0
    sbc.z angle
    sta.z angle
    lda #0
    sbc.z angle+1
    sta.z angle+1
    // [199] phi from atan2_16::@7 atan2_16::@9 to atan2_16::@8 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8]
  __b8_from___b7:
  __b8_from___b9:
    // [199] phi atan2_16::return#0 = atan2_16::angle#11 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8#0] -- register_copy 
    jmp __b8
    // atan2_16::@8
  __b8:
    jmp __breturn
    // atan2_16::@return
  __breturn:
    // [200] return 
    rts
    // atan2_16::@11
  __b11:
    // [201] atan2_16::shift#5 = atan2_16::i#2 -- vbuyy=vbuxx 
    txa
    tay
    // [202] atan2_16::xd#10 = atan2_16::xi#3 -- vwsz1=vwsz2 
    lda.z xi
    sta.z xd
    lda.z xi+1
    sta.z xd+1
    // [203] atan2_16::yd#10 = atan2_16::yi#3 -- vwsz1=vwsz2 
    lda.z yi
    sta.z yd
    lda.z yi+1
    sta.z yd+1
    // [204] phi from atan2_16::@11 atan2_16::@14 to atan2_16::@13 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13]
  __b13_from___b11:
  __b13_from___b14:
    // [204] phi atan2_16::yd#3 = atan2_16::yd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#0] -- register_copy 
    // [204] phi atan2_16::xd#3 = atan2_16::xd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#1] -- register_copy 
    // [204] phi atan2_16::shift#2 = atan2_16::shift#5 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#2] -- register_copy 
    jmp __b13
    // atan2_16::@13
  __b13:
    // [205] if(atan2_16::shift#2>=2) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1 
    cpy #2
    bcs __b14
    jmp __b15
    // atan2_16::@15
  __b15:
    // [206] if(0==atan2_16::shift#2) goto atan2_16::@17 -- 0_eq_vbuyy_then_la1 
    cpy #0
    beq __b17_from___b15
    jmp __b16
    // atan2_16::@16
  __b16:
    // [207] atan2_16::xd#2 = atan2_16::xd#3 >> 1 -- vwsz1=vwsz1_ror_1 
    lda.z xd+1
    cmp #$80
    ror.z xd+1
    ror.z xd
    // [208] atan2_16::yd#2 = atan2_16::yd#3 >> 1 -- vwsz1=vwsz1_ror_1 
    lda.z yd+1
    cmp #$80
    ror.z yd+1
    ror.z yd
    // [209] phi from atan2_16::@15 atan2_16::@16 to atan2_16::@17 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17]
  __b17_from___b15:
  __b17_from___b16:
    // [209] phi atan2_16::xd#5 = atan2_16::xd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#0] -- register_copy 
    // [209] phi atan2_16::yd#5 = atan2_16::yd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#1] -- register_copy 
    jmp __b17
    // atan2_16::@17
  __b17:
    // [210] if(atan2_16::yi#3>=0) goto atan2_16::@18 -- vwsz1_ge_0_then_la1 
    lda.z yi+1
    bpl __b18
    jmp __b20
    // atan2_16::@20
  __b20:
    // [211] atan2_16::xi#2 = atan2_16::xi#3 - atan2_16::yd#5 -- vwsz1=vwsz1_minus_vwsz2 
    lda.z xi
    sec
    sbc.z yd
    sta.z xi
    lda.z xi+1
    sbc.z yd+1
    sta.z xi+1
    // [212] atan2_16::yi#2 = atan2_16::yi#3 + atan2_16::xd#5 -- vwsz1=vwsz1_plus_vwsz2 
    clc
    lda.z yi
    adc.z xd
    sta.z yi
    lda.z yi+1
    adc.z xd+1
    sta.z yi+1
    // [213] atan2_16::$23 = atan2_16::i#2 << 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // [214] atan2_16::angle#3 = atan2_16::angle#12 - CORDIC_ATAN2_ANGLES_16[atan2_16::$23] -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuaa 
    tay
    lda.z angle
    sec
    sbc CORDIC_ATAN2_ANGLES_16,y
    sta.z angle
    lda.z angle+1
    sbc CORDIC_ATAN2_ANGLES_16+1,y
    sta.z angle+1
    // [215] phi from atan2_16::@18 atan2_16::@20 to atan2_16::@19 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19]
  __b19_from___b18:
  __b19_from___b20:
    // [215] phi atan2_16::xi#8 = atan2_16::xi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#0] -- register_copy 
    // [215] phi atan2_16::angle#13 = atan2_16::angle#2 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#1] -- register_copy 
    // [215] phi atan2_16::yi#8 = atan2_16::yi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#2] -- register_copy 
    jmp __b19
    // atan2_16::@19
  __b19:
    // [216] atan2_16::i#1 = ++ atan2_16::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [217] if(atan2_16::i#1==CORDIC_ITERATIONS_16-1+1) goto atan2_16::@12 -- vbuxx_eq_vbuc1_then_la1 
    cpx #CORDIC_ITERATIONS_16-1+1
    beq __b12_from___b19
    // [190] phi from atan2_16::@19 to atan2_16::@10 [phi:atan2_16::@19->atan2_16::@10]
  __b10_from___b19:
    // [190] phi atan2_16::angle#12 = atan2_16::angle#13 [phi:atan2_16::@19->atan2_16::@10#0] -- register_copy 
    // [190] phi atan2_16::i#2 = atan2_16::i#1 [phi:atan2_16::@19->atan2_16::@10#1] -- register_copy 
    // [190] phi atan2_16::xi#3 = atan2_16::xi#8 [phi:atan2_16::@19->atan2_16::@10#2] -- register_copy 
    // [190] phi atan2_16::yi#3 = atan2_16::yi#8 [phi:atan2_16::@19->atan2_16::@10#3] -- register_copy 
    jmp __b10
    // atan2_16::@18
  __b18:
    // [218] atan2_16::xi#1 = atan2_16::xi#3 + atan2_16::yd#5 -- vwsz1=vwsz1_plus_vwsz2 
    clc
    lda.z xi
    adc.z yd
    sta.z xi
    lda.z xi+1
    adc.z yd+1
    sta.z xi+1
    // [219] atan2_16::yi#1 = atan2_16::yi#3 - atan2_16::xd#5 -- vwsz1=vwsz1_minus_vwsz2 
    lda.z yi
    sec
    sbc.z xd
    sta.z yi
    lda.z yi+1
    sbc.z xd+1
    sta.z yi+1
    // [220] atan2_16::$22 = atan2_16::i#2 << 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // [221] atan2_16::angle#2 = atan2_16::angle#12 + CORDIC_ATAN2_ANGLES_16[atan2_16::$22] -- vwuz1=vwuz1_plus_pwuc1_derefidx_vbuaa 
    tay
    clc
    lda.z angle
    adc CORDIC_ATAN2_ANGLES_16,y
    sta.z angle
    lda.z angle+1
    adc CORDIC_ATAN2_ANGLES_16+1,y
    sta.z angle+1
    jmp __b19_from___b18
    // atan2_16::@14
  __b14:
    // [222] atan2_16::xd#1 = atan2_16::xd#3 >> 2 -- vwsz1=vwsz1_ror_2 
    lda.z xd+1
    cmp #$80
    ror.z xd+1
    ror.z xd
    lda.z xd+1
    cmp #$80
    ror.z xd+1
    ror.z xd
    // [223] atan2_16::yd#1 = atan2_16::yd#3 >> 2 -- vwsz1=vwsz1_ror_2 
    lda.z yd+1
    cmp #$80
    ror.z yd+1
    ror.z yd
    lda.z yd+1
    cmp #$80
    ror.z yd+1
    ror.z yd
    // [224] atan2_16::shift#1 = atan2_16::shift#2 - 2 -- vbuyy=vbuyy_minus_2 
    dey
    dey
    jmp __b13_from___b14
    // atan2_16::@4
  __b4:
    // [225] atan2_16::xi#13 = atan2_16::x#0 -- vwsz1=vwsz2 
    lda.z x
    sta.z xi
    lda.z x+1
    sta.z xi+1
    jmp __b6_from___b4
    // atan2_16::@1
  __b1:
    // [226] atan2_16::yi#16 = atan2_16::y#0 -- vwsz1=vwsz2 
    lda.z y
    sta.z yi
    lda.z y+1
    sta.z yi+1
    jmp __b3_from___b1
}
  // print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    // [228] call memset
    // [131] phi from print_cls to memset [phi:print_cls->memset]
  memset_from_print_cls:
    // [131] phi memset::c#4 = ' ' [phi:print_cls->memset#0] -- vbuxx=vbuc1 
    ldx #' '
    // [131] phi memset::str#3 = (void *)print_screen#0 [phi:print_cls->memset#1] -- pvoz1=pvoc1 
    lda #<print_screen
    sta.z memset.str
    lda #>print_screen
    sta.z memset.str+1
    jsr memset
    jmp __breturn
    // print_cls::@return
  __breturn:
    // [229] return 
    rts
}
  // print_char
// Print a single char
// void print_char(char ch)
print_char: {
    .const ch = '.'
    // [230] *print_char_cursor#19 = print_char::ch#0 -- _deref_pbuz1=vbuc1 
    lda #ch
    ldy #0
    sta (print_char_cursor),y
    // [231] print_char_cursor#0 = ++ print_char_cursor#19 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    jmp __breturn
    // print_char::@return
  __breturn:
    // [232] return 
    rts
}
  // bsearch16u
// Searches an array of nitems unsigned ints, the initial member of which is pointed to by base, for a member that matches the value key.
// - key - The value to look for
// - items - Pointer to the start of the array to search in
// - num - The number of items in the array
// Returns pointer to an entry in the array that matches the search key
// __zp(9) unsigned int * bsearch16u(__zp($11) unsigned int key, __zp(9) unsigned int *items, __register(X) char num)
bsearch16u: {
    .label __2 = 9
    .label pivot = $1a
    .label result = $1c
    .label return = 9
    .label items = 9
    .label key = $11
    // [234] phi from bsearch16u to bsearch16u::@3 [phi:bsearch16u->bsearch16u::@3]
  __b3_from_bsearch16u:
    // [234] phi bsearch16u::items#2 = bsearch16u::items#1 [phi:bsearch16u->bsearch16u::@3#0] -- register_copy 
    // [234] phi bsearch16u::num#3 = NUM_SQUARES#2 [phi:bsearch16u->bsearch16u::@3#1] -- vbuxx=vbuc1 
    ldx #NUM_SQUARES
    jmp __b3
    // bsearch16u::@3
  __b3:
    // [235] if(bsearch16u::num#3>0) goto bsearch16u::@4 -- vbuxx_gt_0_then_la1 
    cpx #0
    bne __b4
    jmp __b5
    // bsearch16u::@5
  __b5:
    // [236] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@2 -- _deref_pwuz1_le_vwuz2_then_la1 
    ldy #1
    lda (items),y
    cmp.z key+1
    bne !+
    dey
    lda (items),y
    cmp.z key
    beq __b2_from___b5
  !:
    bcc __b2_from___b5
    jmp __b1
    // bsearch16u::@1
  __b1:
    // [237] bsearch16u::$2 = bsearch16u::items#2 - 1*SIZEOF_UNSIGNED_INT -- pwuz1=pwuz1_minus_vbuc1 
    sec
    lda.z __2
    sbc #1*SIZEOF_UNSIGNED_INT
    sta.z __2
    lda.z __2+1
    sbc #0
    sta.z __2+1
    // [238] phi from bsearch16u::@1 bsearch16u::@5 to bsearch16u::@2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2]
  __b2_from___b1:
  __b2_from___b5:
    // [238] phi bsearch16u::return#2 = bsearch16u::$2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2#0] -- register_copy 
    jmp __b2
    // bsearch16u::@2
  __b2:
    // [239] phi from bsearch16u::@2 bsearch16u::@8 to bsearch16u::@return [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return]
  __breturn_from___b2:
  __breturn_from___b8:
    // [239] phi bsearch16u::return#1 = bsearch16u::return#2 [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return#0] -- register_copy 
    jmp __breturn
    // bsearch16u::@return
  __breturn:
    // [240] return 
    rts
    // bsearch16u::@4
  __b4:
    // [241] bsearch16u::$6 = bsearch16u::num#3 >> 1 -- vbuaa=vbuxx_ror_1 
    txa
    lsr
    // [242] bsearch16u::$14 = bsearch16u::$6 << 1 -- vbuaa=vbuaa_rol_1 
    asl
    // [243] bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14 -- pwuz1=pwuz2_plus_vbuaa 
    clc
    adc.z items
    sta.z pivot
    lda #0
    adc.z items+1
    sta.z pivot+1
    // [244] bsearch16u::result#0 = (int)bsearch16u::key#0 - (int)*bsearch16u::pivot#0 -- vwsz1=vwsz2_minus__deref_pwsz3 
    sec
    lda.z key
    ldy #0
    sbc (pivot),y
    sta.z result
    lda.z key+1
    iny
    sbc (pivot),y
    sta.z result+1
    // [245] if(bsearch16u::result#0!=0) goto bsearch16u::@6 -- vwsz1_neq_0_then_la1 
    lda.z result+1
    ora.z result
    bne __b6
    jmp __b8
    // bsearch16u::@8
  __b8:
    // [246] bsearch16u::return#7 = bsearch16u::pivot#0 -- pwuz1=pwuz2 
    lda.z pivot
    sta.z return
    lda.z pivot+1
    sta.z return+1
    jmp __breturn_from___b8
    // bsearch16u::@6
  __b6:
    // [247] if(bsearch16u::result#0<=0) goto bsearch16u::@7 -- vwsz1_le_0_then_la1 
    lda.z result+1
    bmi __b7_from___b6
    bne !+
    lda.z result
    beq __b7_from___b6
  !:
    jmp __b9
    // bsearch16u::@9
  __b9:
    // [248] bsearch16u::items#0 = bsearch16u::pivot#0 + 1*SIZEOF_UNSIGNED_INT -- pwuz1=pwuz2_plus_vbuc1 
    lda #1*SIZEOF_UNSIGNED_INT
    clc
    adc.z pivot
    sta.z items
    lda #0
    adc.z pivot+1
    sta.z items+1
    // [249] bsearch16u::num#1 = -- bsearch16u::num#3 -- vbuxx=_dec_vbuxx 
    dex
    // [250] phi from bsearch16u::@6 bsearch16u::@9 to bsearch16u::@7 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7]
  __b7_from___b6:
  __b7_from___b9:
    // [250] phi bsearch16u::items#8 = bsearch16u::items#2 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#0] -- register_copy 
    // [250] phi bsearch16u::num#5 = bsearch16u::num#3 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#1] -- register_copy 
    jmp __b7
    // bsearch16u::@7
  __b7:
    // [251] bsearch16u::num#0 = bsearch16u::num#5 >> 1 -- vbuxx=vbuxx_ror_1 
    txa
    lsr
    tax
    // [234] phi from bsearch16u::@7 to bsearch16u::@3 [phi:bsearch16u::@7->bsearch16u::@3]
  __b3_from___b7:
    // [234] phi bsearch16u::items#2 = bsearch16u::items#8 [phi:bsearch16u::@7->bsearch16u::@3#0] -- register_copy 
    // [234] phi bsearch16u::num#3 = bsearch16u::num#0 [phi:bsearch16u::@7->bsearch16u::@3#1] -- register_copy 
    jmp __b3
}
  // File Data
.segment Data
  // Angles representing ATAN(0.5), ATAN(0.25), ATAN(0.125), ...
CORDIC_ATAN2_ANGLES_16:
.for (var i=0; i<CORDIC_ITERATIONS_16; i++)
        .word 256*2*256*atan(1/pow(2,i))/PI/2

  .align $100
SINTABLE:
.for(var i=0;i<$200;i++)
        .byte round(127.5+127.5*sin(2*PI*i/256))


ASSEMBLER OPTIMIZATIONS
Removing instruction jmp __init1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __b7
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp toD0181
Removing instruction jmp __b3
Removing instruction jmp toD0182
Removing instruction jmp __b4
Removing instruction jmp __b11
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b12
Removing instruction jmp __b5
Removing instruction jmp __b7
Removing instruction jmp __breturn
Removing instruction jmp __b9
Removing instruction jmp __b10
Removing instruction jmp __b13
Removing instruction jmp __b14
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b4
Removing instruction jmp __breturn
Removing instruction jmp __b5
Removing instruction jmp sid_rnd_init1
Removing instruction jmp __b11
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b9
Removing instruction jmp __b10
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __b12
Removing instruction jmp __b8
Removing instruction jmp __b7
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __breturn
Removing instruction jmp __b3
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __b10
Removing instruction jmp __b12
Removing instruction jmp __b21
Removing instruction jmp __b7
Removing instruction jmp __b9
Removing instruction jmp __b8
Removing instruction jmp __breturn
Removing instruction jmp __b13
Removing instruction jmp __b15
Removing instruction jmp __b16
Removing instruction jmp __b17
Removing instruction jmp __b20
Removing instruction jmp __b19
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b3
Removing instruction jmp __b5
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b8
Removing instruction jmp __b9
Removing instruction jmp __b7
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda #0
Removing instruction ldy.z x
Removing instruction ldy.z xb
Removing instruction ldy #0
Removing instruction lda.z ang_w
Removing instruction lda.z ang_w
Removing instruction ldy.z xb
Removing instruction ldy.z x
Removing instruction lda #>0
Removing instruction lda #>0
Replacing instruction ldx #0 with TAX
Removing instruction lda #>0
Replacing instruction ldx #0 with TAX
Removing instruction lda.z result+1
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label __b1 with __b2
Replacing label __b1_from___b7 with __b1
Replacing label __b10_from___b8 with __b10
Replacing label __b4_from___b2 with __b4
Replacing label __b1_from___b4 with __b1
Replacing label __b10_from___b4 with __b10
Replacing label __b7_from___b12 with __b7
Replacing label __b2_from___b3 with __b2
Replacing label __b2_from___b2 with __b2
Replacing label __b1_from___b3 with __b1
Replacing label __b7_from___b12 with __b7
Replacing label __b8_from___b7 with __b8
Replacing label __b17_from___b15 with __b17
Replacing label __b12_from___b19 with __b12
Replacing label __b19_from___b18 with __b19
Replacing label __b13_from___b14 with __b13
Replacing label __b6_from___b4 with __b6
Replacing label __b3_from___b1 with __b3
Replacing label __b2_from___b5 with __b2
Replacing label __b2_from___b5 with __b2
Replacing label __breturn_from___b8 with __b2
Replacing label __b7_from___b6 with __b7
Replacing label __b7_from___b6 with __b7
Removing instruction __init1_from___start:
Removing instruction malloc_from___init1:
Removing instruction __b1_from___b3:
Removing instruction __b6_from___b5:
Removing instruction make_plasma_charset_from___b6:
Removing instruction __b7_from___b6:
Removing instruction memset_from___b7:
Removing instruction __b1:
Removing instruction __b2_from___b1:
Removing instruction doplasma_from___b2:
Removing instruction toD0181_from___b2:
Removing instruction toD0181:
Removing instruction toD0182_from___b3:
Removing instruction toD0182:
Removing instruction __b1_from___b7:
Removing instruction __b4_from___b2:
Removing instruction __b4_from___b3:
Removing instruction sqr_from___b4:
Removing instruction __b5_from___b12:
Removing instruction __b10_from___b8:
Removing instruction __b10_from___b9:
Removing instruction sqr_from___b10:
Removing instruction __b1_from___b4:
Removing instruction __b2_from___b1:
Removing instruction __b11_from_sid_rnd_init1:
Removing instruction print_cls_from___b11:
Removing instruction __b9_from___b4:
Removing instruction __b10_from___b4:
Removing instruction __b10_from___b9:
Removing instruction __b7_from___b12:
Removing instruction __b7_from___b8:
Removing instruction __b2_from___b1:
Removing instruction __b2_from___b3:
Removing instruction __b1_from___b3:
Removing instruction __b2_from___b1:
Removing instruction __b2_from___b2:
Removing instruction __b3_from___b1:
Removing instruction __b3_from___b2:
Removing instruction __b6_from___b4:
Removing instruction __b6_from___b5:
Removing instruction __b10_from___b6:
Removing instruction __b12_from___b10:
Removing instruction __b12_from___b19:
Removing instruction __b7_from___b12:
Removing instruction __b7_from___b21:
Removing instruction __b8_from___b7:
Removing instruction __b8_from___b9:
Removing instruction __breturn:
Removing instruction __b13_from___b11:
Removing instruction __b13_from___b14:
Removing instruction __b17_from___b15:
Removing instruction __b17_from___b16:
Removing instruction __b19_from___b18:
Removing instruction __b19_from___b20:
Removing instruction __b2_from___b1:
Removing instruction __b2_from___b5:
Removing instruction __breturn_from___b2:
Removing instruction __breturn_from___b8:
Removing instruction __breturn:
Removing instruction __b7_from___b6:
Removing instruction __b7_from___b9:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction __init1:
Removing instruction __b2:
Removing instruction malloc_from___b2:
Removing instruction __b3:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction init_dist_screen_from_main:
Removing instruction __b5:
Removing instruction __b6:
Removing instruction __b7:
Removing instruction __b1_from___b7:
Removing instruction __b3:
Removing instruction doplasma_from___b3:
Removing instruction __b4:
Removing instruction __b1_from___b4:
Removing instruction init_squares_from_init_dist_screen:
Removing instruction __b11:
Removing instruction __b1_from___b11:
Removing instruction __b3:
Removing instruction __b12:
Removing instruction __b7:
Removing instruction __breturn:
Removing instruction __b9:
Removing instruction __b13:
Removing instruction __b14:
Removing instruction __b5_from___b14:
Removing instruction __b1_from_init_angle_screen:
Removing instruction __b4:
Removing instruction __breturn:
Removing instruction __b5:
Removing instruction __b2_from___b5:
Removing instruction sid_rnd_init1:
Removing instruction __b11:
Removing instruction __b1_from___b11:
Removing instruction __breturn:
Removing instruction __b3_from___b2:
Removing instruction __b4:
Removing instruction __b9:
Removing instruction __b1_from___b10:
Removing instruction __b6:
Removing instruction __b3_from___b6:
Removing instruction __b12:
Removing instruction __b8:
Removing instruction __b5_from___b7:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction __b1_from_doplasma:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __breturn:
Removing instruction malloc_from_init_squares:
Removing instruction __b3:
Removing instruction __b1_from___b3:
Removing instruction __breturn:
Removing instruction __b1_from___b2:
Removing instruction __breturn:
Removing instruction bsearch16u_from_sqrt:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction __b2:
Removing instruction __b5:
Removing instruction __b21:
Removing instruction __b9:
Removing instruction __b15:
Removing instruction __b16:
Removing instruction __b20:
Removing instruction __b10_from___b19:
Removing instruction memset_from_print_cls:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __b3_from_bsearch16u:
Removing instruction __b5:
Removing instruction __b1:
Removing instruction __b8:
Removing instruction __b9:
Removing instruction __b3_from___b7:
Succesful ASM optimization Pass5UnusedLabelElimination
Replacing jump to rts with rts in jmp __b2
Succesful ASM optimization Pass5DoubleJumpElimination
Relabelling long label __b5_from___b3 to __b4
Succesful ASM optimization Pass5RelabelLongLabels
Removing instruction jmp __b1
Removing instruction jmp __b1
Removing instruction jmp __b1
Removing instruction jmp __b2
Succesful ASM optimization Pass5NextJumpElimination
Fixing long branch [769] beq __b12 to bne
Fixing long branch [664] bpl __b1 to bmi
Fixing long branch [676] bpl __b4 to bmi

FINAL SYMBOL TABLE
__constant const char BLACK = 0
__constant char * const CHARSET = (char *) 8192
__constant char * const COLS = (char *) 55296
__constant unsigned int CORDIC_ATAN2_ANGLES_16[CORDIC_ITERATIONS_16] = kickasm {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++)
        .word 256*2*256*atan(1/pow(2,i))/PI/2
 }}
__constant const char CORDIC_ITERATIONS_16 = $f
__constant char * const D018 = (char *) 53272
__constant char *HEAP_TOP = (char *) 40960
char NUM_SQUARES
__constant char NUM_SQUARES#2 = $30 // NUM_SQUARES
__constant char OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL = $12
__constant char OFFSET_STRUCT_MOS6581_SID_CH3_FREQ = $e
__constant char OFFSET_STRUCT_MOS6581_SID_CH3_OSC = $1b
__constant char RADIX::BINARY = 2
__constant char RADIX::DECIMAL = $a
__constant char RADIX::HEXADECIMAL = $10
__constant char RADIX::OCTAL = 8
__constant char * const SCREEN1 = (char *) 10240
__constant char * const SCREEN2 = (char *) 11264
char *SCREEN_ANGLE
char *SCREEN_ANGLE#0 // SCREEN_ANGLE zp[2]:13 27.405405405405403
char *SCREEN_DIST
char *SCREEN_DIST#0 // SCREEN_DIST zp[2]:11 26.0
__constant struct MOS6581_SID * const SID = (struct MOS6581_SID *) 54272
__constant const char SID_CONTROL_NOISE = $80
__constant const char SINTABLE[$200] = kickasm {{ .for(var i=0;i<$200;i++)
        .byte round(127.5+127.5*sin(2*PI*i/256))
 }}
__constant char SIZEOF_UNSIGNED_INT = 2
unsigned int *SQUARES
void *SQUARES#0 // SQUARES zp[2]:2 16.14516129032258
void __start()
unsigned int atan2_16(int x , int y)
int atan2_16::$2 // zp[2]:9 200002.0
char atan2_16::$22 // reg byte a 2.00000002E8
char atan2_16::$23 // reg byte a 2.00000002E8
int atan2_16::$7 // zp[2]:15 200002.0
unsigned int atan2_16::angle
unsigned int atan2_16::angle#1 // angle zp[2]:17 150001.5
unsigned int atan2_16::angle#11 // angle zp[2]:17 200002.0
unsigned int atan2_16::angle#12 // angle zp[2]:17 1.904761923809524E7
unsigned int atan2_16::angle#13 // angle zp[2]:17 1.3333333466666667E8
unsigned int atan2_16::angle#2 // angle zp[2]:17 2.00000002E8
unsigned int atan2_16::angle#3 // angle zp[2]:17 2.00000002E8
unsigned int atan2_16::angle#4 // angle zp[2]:17 200002.0
unsigned int atan2_16::angle#5 // angle zp[2]:17 200002.0
unsigned int atan2_16::angle#6 // angle zp[2]:17 2.00100003E8
char atan2_16::i
char atan2_16::i#1 // reg byte x 1.500000015E8
char atan2_16::i#2 // reg byte x 2.0833333541666668E7
unsigned int atan2_16::return
unsigned int atan2_16::return#0 // return zp[2]:17 70001.0
unsigned int atan2_16::return#2 // return zp[2]:17 20002.0
char atan2_16::shift
char atan2_16::shift#1 // reg byte y 2.000000002E9
char atan2_16::shift#2 // reg byte y 8.0000000125E8
char atan2_16::shift#5 // reg byte y 6.6666667333333336E7
int atan2_16::x
int atan2_16::x#0 // x zp[2]:22 10789.605263157895
int atan2_16::xd
int atan2_16::xd#1 // xd zp[2]:28 6.666666673333334E8
int atan2_16::xd#10 // xd zp[2]:28 1.00000001E8
int atan2_16::xd#2 // xd zp[2]:28 1.00000001E8
int atan2_16::xd#3 // xd zp[2]:28 7.666666683333335E8
int atan2_16::xd#5 // xd zp[2]:28 1.00000001E8
int atan2_16::xi
int atan2_16::xi#0 // xi zp[2]:15 300003.0
int atan2_16::xi#1 // xi zp[2]:15 5.00000005E7
int atan2_16::xi#13 // xi zp[2]:15 200002.0
int atan2_16::xi#2 // xi zp[2]:15 5.00000005E7
int atan2_16::xi#3 // xi zp[2]:15 2.6673333666666668E7
int atan2_16::xi#8 // xi zp[2]:15 1.00000001E8
int atan2_16::y
int atan2_16::y#0 // y zp[2]:24 10250.125
int atan2_16::yd
int atan2_16::yd#1 // yd zp[2]:26 1.000000001E9
int atan2_16::yd#10 // yd zp[2]:26 2.00000002E8
int atan2_16::yd#2 // yd zp[2]:26 2.00000002E8
int atan2_16::yd#3 // yd zp[2]:26 4.6000000099999994E8
int atan2_16::yd#5 // yd zp[2]:26 2.00000002E8
int atan2_16::yi
int atan2_16::yi#0 // yi zp[2]:9 60000.600000000006
int atan2_16::yi#1 // yi zp[2]:9 6.6666667333333336E7
int atan2_16::yi#16 // yi zp[2]:9 200002.0
int atan2_16::yi#2 // yi zp[2]:9 6.6666667333333336E7
int atan2_16::yi#3 // yi zp[2]:9 3.53000004117647E7
int atan2_16::yi#8 // yi zp[2]:9 1.00000001E8
unsigned int * bsearch16u(unsigned int key , unsigned int *items , char num)
char bsearch16u::$14 // reg byte a 2.000000002E9
unsigned int *bsearch16u::$2 // zp[2]:9 2000002.0
char bsearch16u::$6 // reg byte a 2.000000002E9
unsigned int *bsearch16u::items
unsigned int *bsearch16u::items#0 // items zp[2]:9 1.000000001E9
unsigned int *bsearch16u::items#1 // items zp[2]:9 550001.0
unsigned int *bsearch16u::items#2 // items zp[2]:9 3.337777785555556E8
unsigned int *bsearch16u::items#8 // items zp[2]:9 1.5000000015E9
unsigned int bsearch16u::key
unsigned int bsearch16u::key#0 // key zp[2]:17 73333.46666666667
char bsearch16u::num
char bsearch16u::num#0 // reg byte x 2.000000002E9
char bsearch16u::num#1 // reg byte x 2.000000002E9
char bsearch16u::num#3 // reg byte x 5.555555561111112E8
char bsearch16u::num#5 // reg byte x 3.000000003E9
unsigned int *bsearch16u::pivot
unsigned int *bsearch16u::pivot#0 // pivot zp[2]:26 5.0025000075E8
int bsearch16u::result
int bsearch16u::result#0 // result zp[2]:28 1.5000000015E9
unsigned int *bsearch16u::return
unsigned int *bsearch16u::return#1 // return zp[2]:9 700001.0
unsigned int *bsearch16u::return#2 // return zp[2]:9 3000003.0
unsigned int *bsearch16u::return#3 // return zp[2]:9 200002.0
unsigned int *bsearch16u::return#7 // return zp[2]:9 2000002.0
void doplasma(char *screen)
char doplasma::$2 // reg byte a 2000002.0
char *doplasma::angle
char *doplasma::angle#0 // angle zp[2]:7 500.5
char *doplasma::angle#1 // angle zp[2]:7 50000.5
char *doplasma::angle#4 // angle zp[2]:7 171571.99999999997
char *doplasma::dist
char *doplasma::dist#0 // dist zp[2]:9 667.3333333333334
char *doplasma::dist#1 // dist zp[2]:9 66667.33333333333
char *doplasma::dist#4 // dist zp[2]:9 150125.5
char *doplasma::screen
char *doplasma::screen#2 // screen zp[2]:15 40000.4
char *doplasma::screen#5 // screen zp[2]:15 200167.33333333334
char *doplasma::screen#6 // screen zp[2]:15 200.2
char *doplasma::sin_x
char *doplasma::sin_x#0 // sin_x zp[2]:22 77000.15384615384
char *doplasma::sin_y
char *doplasma::sin_y#0 // sin_y zp[2]:24 83416.83333333334
char doplasma::x
char doplasma::x#1 // reg byte x 1500001.5
char doplasma::x#2 // reg byte x 1666668.3333333335
char doplasma::y
char doplasma::y#1 // y zp[1]:20 150001.5
char doplasma::y#4 // y zp[1]:20 22222.444444444445
char *heap_head
char *heap_head#0 // heap_head zp[2]:7 1100.4
char *heap_head#13 // heap_head zp[2]:7 11004.0
void init_angle_screen(char *screen)
char init_angle_screen::$11 // reg byte a 20002.0
char init_angle_screen::$12 // reg byte a 20002.0
char init_angle_screen::$13 // reg byte a 20002.0
char init_angle_screen::$3 // reg byte a 20002.0
char init_angle_screen::$4 // reg byte a 20002.0
char init_angle_screen::$6 // reg byte a 20002.0
unsigned int init_angle_screen::$9 // zp[2]:17 20002.0
char init_angle_screen::ang_w
char init_angle_screen::ang_w#0 // ang_w zp[1]:19 8334.166666666666
unsigned int init_angle_screen::angle_w
unsigned int init_angle_screen::angle_w#0 // angle_w zp[2]:17 20002.0
char *init_angle_screen::screen
char *init_angle_screen::screen#0 // screen zp[2]:4 112.0
char *init_angle_screen::screen_bottomline
char *init_angle_screen::screen_bottomline#0 // screen_bottomline zp[2]:4 151.5
char *init_angle_screen::screen_bottomline#1 // screen_bottomline zp[2]:4 667.3333333333334
char *init_angle_screen::screen_bottomline#6 // screen_bottomline zp[2]:4 884.2
char *init_angle_screen::screen_topline
char *init_angle_screen::screen_topline#1 // screen_topline zp[2]:2 500.5
char *init_angle_screen::screen_topline#6 // screen_topline zp[2]:2 921.0416666666666
char *init_angle_screen::screen_topline#7 // screen_topline zp[2]:2 202.0
char init_angle_screen::x
char init_angle_screen::x#1 // x zp[1]:20 10001.0
char init_angle_screen::x#2 // x zp[1]:20 2857.4285714285716
char init_angle_screen::xb
char init_angle_screen::xb#1 // xb zp[1]:21 20002.0
char init_angle_screen::xb#2 // xb zp[1]:21 1818.3636363636363
int init_angle_screen::xw
unsigned int init_angle_screen::xw#0 // xw zp[2]:22 3333.6666666666665
char init_angle_screen::y
char init_angle_screen::y#1 // y zp[1]:6 1501.5
char init_angle_screen::y#5 // y zp[1]:6 461.65384615384613
int init_angle_screen::yw
unsigned int init_angle_screen::yw#0 // yw zp[2]:24 5000.5
void init_dist_screen(char *screen)
char init_dist_screen::$14 // reg byte a 20002.0
char init_dist_screen::$16 // reg byte a 20002.0
char init_dist_screen::$5 // reg byte a 2002.0
char init_dist_screen::$7 // reg byte a 2002.0
char init_dist_screen::d
char init_dist_screen::d#0 // reg byte a 12501.25
unsigned int init_dist_screen::ds
unsigned int init_dist_screen::ds#0 // ds zp[2]:17 20002.0
char *init_dist_screen::screen
char *init_dist_screen::screen#0 // screen zp[2]:4 53.25
char *init_dist_screen::screen_bottomline
char *init_dist_screen::screen_bottomline#0 // screen_bottomline zp[2]:7 202.0
char *init_dist_screen::screen_bottomline#1 // screen_bottomline zp[2]:7 667.3333333333334
char *init_dist_screen::screen_bottomline#11 // screen_bottomline zp[2]:7 669.8484848484848
char *init_dist_screen::screen_topline
char *init_dist_screen::screen_topline#1 // screen_topline zp[2]:4 500.5
char *init_dist_screen::screen_topline#11 // screen_topline zp[2]:4 690.78125
char init_dist_screen::x
char init_dist_screen::x#1 // x zp[1]:20 10001.0
char init_dist_screen::x#2 // x zp[1]:20 3000.3
char init_dist_screen::x2
char init_dist_screen::x2#0 // reg byte a 20002.0
char init_dist_screen::xb
char init_dist_screen::xb#1 // xb zp[1]:21 20002.0
char init_dist_screen::xb#2 // xb zp[1]:21 1904.952380952381
char init_dist_screen::xd
char init_dist_screen::xd#0 // reg byte a 30003.0
unsigned int init_dist_screen::xds
unsigned int init_dist_screen::xds#0 // xds zp[2]:17 20002.0
char init_dist_screen::y
char init_dist_screen::y#1 // y zp[1]:6 1501.5
char init_dist_screen::y#10 // y zp[1]:6 88.32352941176471
char init_dist_screen::y2
char init_dist_screen::y2#0 // reg byte a 2002.0
char init_dist_screen::yd
char init_dist_screen::yd#0 // reg byte a 3003.0
unsigned int init_dist_screen::yds
unsigned int init_dist_screen::yds#0 // yds zp[2]:15 478.3478260869565
void init_squares()
char init_squares::$3 // reg byte a 20002.0
char init_squares::$4 // reg byte a 20002.0
char init_squares::i
char init_squares::i#1 // reg byte x 20002.0
char init_squares::i#2 // reg byte x 5714.857142857143
unsigned int init_squares::sqr
unsigned int init_squares::sqr#1 // sqr zp[2]:9 10001.0
unsigned int init_squares::sqr#2 // sqr zp[2]:9 5000.5
unsigned int *init_squares::squares
unsigned int *init_squares::squares#0 // squares zp[2]:15 2002.0
unsigned int *init_squares::squares#1 // squares zp[2]:15 4000.4
unsigned int *init_squares::squares#2 // squares zp[2]:15 10334.666666666666
void main()
char *main::toD0181_gfx
char main::toD0181_return
__constant char main::toD0181_return#0 = byte1 (unsigned int)SCREEN1&$3fff*4|byte1 (unsigned int)CHARSET/4&$f // toD0181_return
char *main::toD0181_screen
char *main::toD0182_gfx
char main::toD0182_return
__constant char main::toD0182_return#0 = byte1 (unsigned int)SCREEN2&$3fff*4|byte1 (unsigned int)CHARSET/4&$f // toD0182_return
char *main::toD0182_screen
void make_plasma_charset(char *charset)
unsigned int make_plasma_charset::$10 // zp[2]:26 20002.0
unsigned int make_plasma_charset::$11 // zp[2]:26 20002.0
char make_plasma_charset::$12 // reg byte a 2002.0
char *make_plasma_charset::$16 // zp[2]:26 20002.0
char make_plasma_charset::$3 // reg byte x 2002.0
char make_plasma_charset::$7 // zp[1]:21 200002.0
char make_plasma_charset::b
char make_plasma_charset::b#1 // reg byte y 200002.0
char make_plasma_charset::b#2 // reg byte y 38750.5
char make_plasma_charset::b#6 // reg byte y 150001.5
__constant const char make_plasma_charset::bittab[8] = { 1, 2, 4, 8, $10, $20, $40, $80 }
unsigned int make_plasma_charset::c
unsigned int make_plasma_charset::c#1 // c zp[2]:7 2002.0
unsigned int make_plasma_charset::c#2 // c zp[2]:7 625.25
char *make_plasma_charset::charset
char make_plasma_charset::i
char make_plasma_charset::i#1 // i zp[1]:6 20002.0
char make_plasma_charset::i#2 // i zp[1]:6 2857.4285714285716
char make_plasma_charset::ii
char make_plasma_charset::ii#1 // reg byte x 200002.0
char make_plasma_charset::ii#2 // reg byte x 57143.42857142857
char make_plasma_charset::s
char make_plasma_charset::s#0 // s zp[1]:20 6312.625
char make_plasma_charset::sid_rnd1_return
char make_plasma_charset::sid_rnd1_return#0 // reg byte a 200002.0
void * malloc(unsigned int size)
char *malloc::mem
char *malloc::mem#0 // mem zp[2]:2 3333.6666666666665
void *malloc::return
unsigned int malloc::size
unsigned int malloc::size#3 // size zp[2]:2 10001.0
void * memset(void *str , char c , unsigned int num)
char memset::c
char memset::c#4 // reg byte x 14285.857142857143
char *memset::dst
char *memset::dst#1 // dst zp[2]:4 200002.0
char *memset::dst#2 // dst zp[2]:4 136668.3333333333
char *memset::dst#4 // dst zp[2]:4 20002.0
char *memset::end
char *memset::end#0 // end zp[2]:28 18333.666666666664
unsigned int memset::num
void *memset::return
void *memset::str
void *memset::str#3 // str zp[2]:4
void print_char(char ch)
char print_char::ch
__constant char print_char::ch#0 = '.' // ch
char *print_char_cursor
char *print_char_cursor#0 // print_char_cursor zp[2]:4 3667.333333333333
char *print_char_cursor#19 // print_char_cursor zp[2]:4 956.695652173913
char *print_char_cursor#32 // print_char_cursor zp[2]:4 1501.5
void print_cls()
char *print_line_cursor
char *print_screen
__constant char *print_screen#0 = (char *) 1024 // print_screen
char sin_offset_x
char sin_offset_x#10 // sin_offset_x zp[1]:6 101.0
char sin_offset_x#11 // sin_offset_x zp[1]:6 137.75
char sin_offset_x#13 // sin_offset_x zp[1]:6 133.66666666666669
char sin_offset_y
char sin_offset_y#10 // sin_offset_y zp[1]:19 101.0
char sin_offset_y#11 // sin_offset_y zp[1]:19 129.64705882352942
char sin_offset_y#13 // sin_offset_y zp[1]:19 150.375
unsigned int sqr(char val)
char sqr::$0 // reg byte a 200002.0
unsigned int sqr::return
unsigned int sqr::return#0 // return zp[2]:17 27750.75
unsigned int sqr::return#2 // return_1 zp[2]:15 2002.0
unsigned int sqr::return#3 // return zp[2]:17 20002.0
char sqr::val
char sqr::val#0 // reg byte a 2002.0
char sqr::val#1 // reg byte a 20002.0
char sqr::val#2 // reg byte a 111003.0
char sqrt(unsigned int val)
unsigned int sqrt::$1 // zp[2]:9 100001.0
unsigned int sqrt::$2 // zp[2]:9 200002.0
unsigned int *sqrt::found
unsigned int *sqrt::found#0 // found zp[2]:9 200002.0
char sqrt::return
char sqrt::return#0 // reg byte a 36667.33333333333
char sqrt::return#2 // reg byte a 20002.0
char sqrt::sq
unsigned int sqrt::val
unsigned int sqrt::val#0 // val zp[2]:17 110002.0

reg byte a [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ]
zp[2]:2 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 malloc::size#3 malloc::mem#0 SQUARES#0 ]
reg byte x [ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ]
reg byte y [ make_plasma_charset::b#2 make_plasma_charset::b#6 make_plasma_charset::b#1 ]
zp[2]:4 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 print_char_cursor#19 print_char_cursor#32 print_char_cursor#0 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 init_angle_screen::screen#0 init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ]
reg byte x [ memset::c#4 ]
zp[1]:6 [ sin_offset_x#11 sin_offset_x#10 sin_offset_x#13 make_plasma_charset::i#2 make_plasma_charset::i#1 init_angle_screen::y#5 init_angle_screen::y#1 init_dist_screen::y#10 init_dist_screen::y#1 ]
zp[2]:7 [ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 make_plasma_charset::c#2 make_plasma_charset::c#1 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 heap_head#13 heap_head#0 ]
reg byte x [ doplasma::x#2 doplasma::x#1 ]
reg byte x [ init_squares::i#2 init_squares::i#1 ]
reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ]
reg byte x [ atan2_16::i#2 atan2_16::i#1 ]
reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
zp[2]:9 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 init_squares::sqr#2 init_squares::sqr#1 doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ]
reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
zp[2]:11 [ SCREEN_DIST#0 ]
zp[2]:13 [ SCREEN_ANGLE#0 ]
reg byte a [ init_dist_screen::y2#0 ]
zp[2]:15 [ sqr::return#2 init_dist_screen::yds#0 atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ]
reg byte a [ init_dist_screen::x2#0 ]
zp[2]:17 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$9 ]
reg byte a [ sqrt::return#2 ]
reg byte a [ init_dist_screen::d#0 ]
reg byte a [ init_angle_screen::$3 ]
reg byte a [ init_angle_screen::$4 ]
reg byte a [ init_angle_screen::$6 ]
zp[1]:19 [ init_angle_screen::ang_w#0 sin_offset_y#11 sin_offset_y#10 sin_offset_y#13 ]
reg byte a [ init_angle_screen::$11 ]
reg byte a [ init_angle_screen::$12 ]
reg byte a [ init_angle_screen::$13 ]
reg byte x [ make_plasma_charset::$3 ]
zp[1]:20 [ make_plasma_charset::s#0 doplasma::y#4 doplasma::y#1 init_angle_screen::x#2 init_angle_screen::x#1 init_dist_screen::x#2 init_dist_screen::x#1 ]
reg byte a [ make_plasma_charset::$12 ]
reg byte a [ make_plasma_charset::sid_rnd1_return#0 ]
zp[1]:21 [ make_plasma_charset::$7 init_angle_screen::xb#2 init_angle_screen::xb#1 init_dist_screen::xb#2 init_dist_screen::xb#1 ]
zp[2]:22 [ doplasma::sin_x#0 init_angle_screen::xw#0 atan2_16::x#0 ]
zp[2]:24 [ doplasma::sin_y#0 init_angle_screen::yw#0 atan2_16::y#0 ]
reg byte a [ doplasma::$2 ]
reg byte a [ init_squares::$3 ]
reg byte a [ init_squares::$4 ]
reg byte a [ sqr::$0 ]
reg byte a [ sqrt::return#0 ]
reg byte a [ atan2_16::$23 ]
reg byte a [ atan2_16::$22 ]
reg byte a [ bsearch16u::$6 ]
reg byte a [ bsearch16u::$14 ]
zp[2]:26 [ bsearch16u::pivot#0 make_plasma_charset::$10 make_plasma_charset::$11 make_plasma_charset::$16 atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
zp[2]:28 [ bsearch16u::result#0 memset::end#0 atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]


FINAL ASSEMBLER
Score: 1203161

  // File Comments
// Plasma based on the distance/angle to the screen center
  // Upstart
  // Commodore 64 PRG executable file
.file [name="plasma-center.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(__start)
  // Global Constants & labels
  /// SID Channel Control Register Noise Waveform
  .const SID_CONTROL_NOISE = $80
  /// The colors of the C64
  .const BLACK = 0
  .const SIZEOF_UNSIGNED_INT = 2
  // The number of iterations performed during 16-bit CORDIC atan2 calculation
  .const CORDIC_ITERATIONS_16 = $f
  .const OFFSET_STRUCT_MOS6581_SID_CH3_FREQ = $e
  .const OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL = $12
  .const OFFSET_STRUCT_MOS6581_SID_CH3_OSC = $1b
  // The number of squares to pre-calculate. Limits what values sqr() can calculate and the result of sqrt()
  .const NUM_SQUARES = $30
  /// $D018 VIC-II base addresses
  // @see #VICII_MEMORY
  .label D018 = $d018
  /// The SID MOS 6581/8580
  .label SID = $d400
  /// Color Ram
  .label COLS = $d800
  // Plasma charset
  .label CHARSET = $2000
  // Plasma screen 1
  .label SCREEN1 = $2800
  // Plasma screen 2
  .label SCREEN2 = $2c00
  // Top of the heap used by malloc()
  .label HEAP_TOP = $a000
  .label print_screen = $400
  // Head of the heap. Moved backward each malloc()
  .label heap_head = 7
  // Squares for each char value SQUARES[i] = i*i
  // Initialized by init_squares()
  .label SQUARES = 2
  .label print_char_cursor = 4
  // Screen containing distance to center
  .label SCREEN_DIST = $b
  // Screen containing angle to center
  .label SCREEN_ANGLE = $d
  // Offsets for the sines
  .label sin_offset_x = 6
  .label sin_offset_y = $13
.segment Code
  // __start
__start: {
    // [1] phi from __start to __start::__init1 [phi:__start->__start::__init1]
    // __start::__init1
    // byte* SCREEN_DIST = malloc(1000)
    // [2] call malloc
    // [9] phi from __start::__init1 to malloc [phi:__start::__init1->malloc]
    // [9] phi malloc::size#3 = $3e8 [phi:__start::__init1->malloc#0] -- vwuz1=vwuc1 
    lda #<$3e8
    sta.z malloc.size
    lda #>$3e8
    sta.z malloc.size+1
    // [9] phi heap_head#13 = HEAP_TOP [phi:__start::__init1->malloc#1] -- pbuz1=pbuc1 
    lda #<HEAP_TOP
    sta.z heap_head
    lda #>HEAP_TOP
    sta.z heap_head+1
    jsr malloc
    // __start::@2
    // byte* SCREEN_DIST = malloc(1000)
    // [3] SCREEN_DIST#0 = (char *)(void *)malloc::mem#0 -- pbuz1=pbuz2 
    lda.z malloc.mem
    sta.z SCREEN_DIST
    lda.z malloc.mem+1
    sta.z SCREEN_DIST+1
    // byte* SCREEN_ANGLE = malloc(1000)
    // [4] call malloc
    // [9] phi from __start::@2 to malloc [phi:__start::@2->malloc]
    // [9] phi malloc::size#3 = $3e8 [phi:__start::@2->malloc#0] -- vwuz1=vwuc1 
    lda #<$3e8
    sta.z malloc.size
    lda #>$3e8
    sta.z malloc.size+1
    // [9] phi heap_head#13 = heap_head#0 [phi:__start::@2->malloc#1] -- register_copy 
    jsr malloc
    // __start::@3
    // byte* SCREEN_ANGLE = malloc(1000)
    // [5] SCREEN_ANGLE#0 = (char *)(void *)malloc::mem#0 -- pbuz1=pbuz2 
    lda.z malloc.mem
    sta.z SCREEN_ANGLE
    lda.z malloc.mem+1
    sta.z SCREEN_ANGLE+1
    // [6] phi from __start::@3 to __start::@1 [phi:__start::@3->__start::@1]
    // __start::@1
    // [7] call main
    jsr main
    // __start::@return
    // [8] return 
    rts
}
  // malloc
// Allocates a block of size chars of memory, returning a pointer to the beginning of the block.
// The content of the newly allocated block of memory is not initialized, remaining with indeterminate values.
// void * malloc(__zp(2) unsigned int size)
malloc: {
    .label mem = 2
    .label size = 2
    // unsigned char* mem = heap_head-size
    // [10] malloc::mem#0 = heap_head#13 - malloc::size#3 -- pbuz1=pbuz2_minus_vwuz1 
    lda.z heap_head
    sec
    sbc.z mem
    sta.z mem
    lda.z heap_head+1
    sbc.z mem+1
    sta.z mem+1
    // heap_head = mem
    // [11] heap_head#0 = malloc::mem#0 -- pbuz1=pbuz2 
    lda.z mem
    sta.z heap_head
    lda.z mem+1
    sta.z heap_head+1
    // malloc::@return
    // }
    // [12] return 
    rts
}
  // main
main: {
    .const toD0181_return = (>(SCREEN1&$3fff)*4)|(>CHARSET)/4&$f
    .const toD0182_return = (>(SCREEN2&$3fff)*4)|(>CHARSET)/4&$f
    // init_dist_screen(SCREEN_DIST)
    // [13] init_dist_screen::screen#0 = SCREEN_DIST#0 -- pbuz1=pbuz2 
    lda.z SCREEN_DIST
    sta.z init_dist_screen.screen
    lda.z SCREEN_DIST+1
    sta.z init_dist_screen.screen+1
    // [14] call init_dist_screen
    // [29] phi from main to init_dist_screen [phi:main->init_dist_screen]
    jsr init_dist_screen
    // main::@5
    // init_angle_screen(SCREEN_ANGLE)
    // [15] init_angle_screen::screen#0 = SCREEN_ANGLE#0 -- pbuz1=pbuz2 
    lda.z SCREEN_ANGLE
    sta.z init_angle_screen.screen
    lda.z SCREEN_ANGLE+1
    sta.z init_angle_screen.screen+1
    // [16] call init_angle_screen
    jsr init_angle_screen
    // [17] phi from main::@5 to main::@6 [phi:main::@5->main::@6]
    // main::@6
    // make_plasma_charset(CHARSET)
    // [18] call make_plasma_charset
    // [100] phi from main::@6 to make_plasma_charset [phi:main::@6->make_plasma_charset]
    jsr make_plasma_charset
    // [19] phi from main::@6 to main::@7 [phi:main::@6->main::@7]
    // main::@7
    // memset(COLS, BLACK, 1000)
    // [20] call memset
    // [131] phi from main::@7 to memset [phi:main::@7->memset]
    // [131] phi memset::c#4 = BLACK [phi:main::@7->memset#0] -- vbuxx=vbuc1 
    ldx #BLACK
    // [131] phi memset::str#3 = (void *)COLS [phi:main::@7->memset#1] -- pvoz1=pvoc1 
    lda #<COLS
    sta.z memset.str
    lda #>COLS
    sta.z memset.str+1
    jsr memset
    // [21] phi from main::@7 to main::@1 [phi:main::@7->main::@1]
    // [21] phi sin_offset_y#10 = 0 [phi:main::@7->main::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z sin_offset_y
    // [21] phi sin_offset_x#10 = 0 [phi:main::@7->main::@1#1] -- vbuz1=vbuc1 
    sta.z sin_offset_x
  // Show double-buffered plasma
    // main::@1
    // [22] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
    // main::@2
  __b2:
    // doplasma(SCREEN1)
    // [23] call doplasma
    // [139] phi from main::@2 to doplasma [phi:main::@2->doplasma]
    // [139] phi doplasma::screen#6 = SCREEN1 [phi:main::@2->doplasma#0] -- pbuz1=pbuc1 
    lda #<SCREEN1
    sta.z doplasma.screen
    lda #>SCREEN1
    sta.z doplasma.screen+1
    // [139] phi sin_offset_y#11 = sin_offset_y#10 [phi:main::@2->doplasma#1] -- register_copy 
    // [139] phi sin_offset_x#11 = sin_offset_x#10 [phi:main::@2->doplasma#2] -- register_copy 
    jsr doplasma
    // [24] phi from main::@2 to main::toD0181 [phi:main::@2->main::toD0181]
    // main::toD0181
    // main::@3
    // *D018 = toD018(SCREEN1, CHARSET)
    // [25] *D018 = main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
    // doplasma(SCREEN2)
    // [26] call doplasma
    // [139] phi from main::@3 to doplasma [phi:main::@3->doplasma]
    // [139] phi doplasma::screen#6 = SCREEN2 [phi:main::@3->doplasma#0] -- pbuz1=pbuc1 
    lda #<SCREEN2
    sta.z doplasma.screen
    lda #>SCREEN2
    sta.z doplasma.screen+1
    // [139] phi sin_offset_y#11 = sin_offset_y#13 [phi:main::@3->doplasma#1] -- register_copy 
    // [139] phi sin_offset_x#11 = sin_offset_x#13 [phi:main::@3->doplasma#2] -- register_copy 
    jsr doplasma
    // [27] phi from main::@3 to main::toD0182 [phi:main::@3->main::toD0182]
    // main::toD0182
    // main::@4
    // *D018 = toD018(SCREEN2, CHARSET)
    // [28] *D018 = main::toD0182_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0182_return
    sta D018
    // [21] phi from main::@4 to main::@1 [phi:main::@4->main::@1]
    // [21] phi sin_offset_y#10 = sin_offset_y#13 [phi:main::@4->main::@1#0] -- register_copy 
    // [21] phi sin_offset_x#10 = sin_offset_x#13 [phi:main::@4->main::@1#1] -- register_copy 
    jmp __b2
}
  // init_dist_screen
// Populates 1000 bytes (a screen) with values representing the distance to the center.
// The actual value stored is distance*2 to increase precision
// void init_dist_screen(__zp(4) char *screen)
init_dist_screen: {
    .label screen = 4
    .label screen_bottomline = 7
    .label yds = $f
    .label screen_topline = 4
    .label y = 6
    .label xds = $11
    .label ds = $11
    .label x = $14
    .label xb = $15
    // init_squares()
    // [30] call init_squares
    // [158] phi from init_dist_screen to init_squares [phi:init_dist_screen->init_squares]
    jsr init_squares
    // init_dist_screen::@11
    // byte *screen_bottomline = screen+40*24
    // [31] init_dist_screen::screen_bottomline#0 = init_dist_screen::screen#0 + (unsigned int)$28*$18 -- pbuz1=pbuz2_plus_vwuc1 
    lda.z screen
    clc
    adc #<$28*$18
    sta.z screen_bottomline
    lda.z screen+1
    adc #>$28*$18
    sta.z screen_bottomline+1
    // [32] phi from init_dist_screen::@11 to init_dist_screen::@1 [phi:init_dist_screen::@11->init_dist_screen::@1]
    // [32] phi init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#0 [phi:init_dist_screen::@11->init_dist_screen::@1#0] -- register_copy 
    // [32] phi init_dist_screen::screen_topline#11 = init_dist_screen::screen#0 [phi:init_dist_screen::@11->init_dist_screen::@1#1] -- register_copy 
    // [32] phi init_dist_screen::y#10 = 0 [phi:init_dist_screen::@11->init_dist_screen::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta.z y
    // [32] phi from init_dist_screen::@7 to init_dist_screen::@1 [phi:init_dist_screen::@7->init_dist_screen::@1]
    // [32] phi init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#1 [phi:init_dist_screen::@7->init_dist_screen::@1#0] -- register_copy 
    // [32] phi init_dist_screen::screen_topline#11 = init_dist_screen::screen_topline#1 [phi:init_dist_screen::@7->init_dist_screen::@1#1] -- register_copy 
    // [32] phi init_dist_screen::y#10 = init_dist_screen::y#1 [phi:init_dist_screen::@7->init_dist_screen::@1#2] -- register_copy 
    // init_dist_screen::@1
  __b1:
    // byte y2 = y*2
    // [33] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z y
    asl
    // (y2>=24)?(y2-24):(24-y2)
    // [34] if(init_dist_screen::y2#0>=$18) goto init_dist_screen::@2 -- vbuaa_ge_vbuc1_then_la1 
    cmp #$18
    bcs __b2
    // init_dist_screen::@3
    // [35] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    sec
    adc #$18
    // [36] phi from init_dist_screen::@2 init_dist_screen::@3 to init_dist_screen::@4 [phi:init_dist_screen::@2/init_dist_screen::@3->init_dist_screen::@4]
    // [36] phi init_dist_screen::yd#0 = init_dist_screen::$7 [phi:init_dist_screen::@2/init_dist_screen::@3->init_dist_screen::@4#0] -- register_copy 
    // init_dist_screen::@4
  __b4:
    // word yds = sqr(yd)
    // [37] sqr::val#0 = init_dist_screen::yd#0
    // [38] call sqr
    // [171] phi from init_dist_screen::@4 to sqr [phi:init_dist_screen::@4->sqr]
    // [171] phi sqr::val#2 = sqr::val#0 [phi:init_dist_screen::@4->sqr#0] -- register_copy 
    jsr sqr
    // word yds = sqr(yd)
    // [39] sqr::return#2 = sqr::return#0 -- vwuz1=vwuz2 
    lda.z sqr.return
    sta.z sqr.return_1
    lda.z sqr.return+1
    sta.z sqr.return_1+1
    // init_dist_screen::@12
    // [40] init_dist_screen::yds#0 = sqr::return#2
    // [41] phi from init_dist_screen::@12 to init_dist_screen::@5 [phi:init_dist_screen::@12->init_dist_screen::@5]
    // [41] phi init_dist_screen::xb#2 = $27 [phi:init_dist_screen::@12->init_dist_screen::@5#0] -- vbuz1=vbuc1 
    lda #$27
    sta.z xb
    // [41] phi init_dist_screen::x#2 = 0 [phi:init_dist_screen::@12->init_dist_screen::@5#1] -- vbuz1=vbuc1 
    lda #0
    sta.z x
    // init_dist_screen::@5
  __b5:
    // for( byte x=0,xb=39; x<=19; x++, xb--)
    // [42] if(init_dist_screen::x#2<$13+1) goto init_dist_screen::@6 -- vbuz1_lt_vbuc1_then_la1 
    lda.z x
    cmp #$13+1
    bcc __b6
    // init_dist_screen::@7
    // screen_topline += 40
    // [43] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z screen_topline
    sta.z screen_topline
    bcc !+
    inc.z screen_topline+1
  !:
    // screen_bottomline -= 40
    // [44] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28 -- pbuz1=pbuz1_minus_vbuc1 
    sec
    lda.z screen_bottomline
    sbc #$28
    sta.z screen_bottomline
    lda.z screen_bottomline+1
    sbc #0
    sta.z screen_bottomline+1
    // for(byte y: 0..12)
    // [45] init_dist_screen::y#1 = ++ init_dist_screen::y#10 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [46] if(init_dist_screen::y#1!=$d) goto init_dist_screen::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$d
    cmp.z y
    bne __b1
    // init_dist_screen::@return
    // }
    // [47] return 
    rts
    // init_dist_screen::@6
  __b6:
    // byte x2 = x*2
    // [48] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z x
    asl
    // (x2>=39)?(x2-39):(39-x2)
    // [49] if(init_dist_screen::x2#0>=$27) goto init_dist_screen::@8 -- vbuaa_ge_vbuc1_then_la1 
    cmp #$27
    bcs __b8
    // init_dist_screen::@9
    // [50] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    sec
    adc #$27
    // [51] phi from init_dist_screen::@8 init_dist_screen::@9 to init_dist_screen::@10 [phi:init_dist_screen::@8/init_dist_screen::@9->init_dist_screen::@10]
    // [51] phi init_dist_screen::xd#0 = init_dist_screen::$16 [phi:init_dist_screen::@8/init_dist_screen::@9->init_dist_screen::@10#0] -- register_copy 
    // init_dist_screen::@10
  __b10:
    // word xds = sqr(xd)
    // [52] sqr::val#1 = init_dist_screen::xd#0
    // [53] call sqr
    // [171] phi from init_dist_screen::@10 to sqr [phi:init_dist_screen::@10->sqr]
    // [171] phi sqr::val#2 = sqr::val#1 [phi:init_dist_screen::@10->sqr#0] -- register_copy 
    jsr sqr
    // word xds = sqr(xd)
    // [54] sqr::return#3 = sqr::return#0
    // init_dist_screen::@13
    // [55] init_dist_screen::xds#0 = sqr::return#3
    // word ds = xds+yds
    // [56] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0 -- vwuz1=vwuz1_plus_vwuz2 
    clc
    lda.z ds
    adc.z yds
    sta.z ds
    lda.z ds+1
    adc.z yds+1
    sta.z ds+1
    // byte d = sqrt(ds)
    // [57] sqrt::val#0 = init_dist_screen::ds#0
    // [58] call sqrt
    jsr sqrt
    // [59] sqrt::return#2 = sqrt::return#0
    // init_dist_screen::@14
    // [60] init_dist_screen::d#0 = sqrt::return#2
    // screen_topline[x] = d
    // [61] init_dist_screen::screen_topline#11[init_dist_screen::x#2] = init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy.z x
    sta (screen_topline),y
    // screen_bottomline[x] = d
    // [62] init_dist_screen::screen_bottomline#11[init_dist_screen::x#2] = init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa 
    sta (screen_bottomline),y
    // screen_topline[xb] = d
    // [63] init_dist_screen::screen_topline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy.z xb
    sta (screen_topline),y
    // screen_bottomline[xb] = d
    // [64] init_dist_screen::screen_bottomline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa 
    sta (screen_bottomline),y
    // for( byte x=0,xb=39; x<=19; x++, xb--)
    // [65] init_dist_screen::x#1 = ++ init_dist_screen::x#2 -- vbuz1=_inc_vbuz1 
    inc.z x
    // [66] init_dist_screen::xb#1 = -- init_dist_screen::xb#2 -- vbuz1=_dec_vbuz1 
    dec.z xb
    // [41] phi from init_dist_screen::@14 to init_dist_screen::@5 [phi:init_dist_screen::@14->init_dist_screen::@5]
    // [41] phi init_dist_screen::xb#2 = init_dist_screen::xb#1 [phi:init_dist_screen::@14->init_dist_screen::@5#0] -- register_copy 
    // [41] phi init_dist_screen::x#2 = init_dist_screen::x#1 [phi:init_dist_screen::@14->init_dist_screen::@5#1] -- register_copy 
    jmp __b5
    // init_dist_screen::@8
  __b8:
    // (x2>=39)?(x2-39):(39-x2)
    // [67] init_dist_screen::$16 = init_dist_screen::x2#0 - $27 -- vbuaa=vbuaa_minus_vbuc1 
    sec
    sbc #$27
    jmp __b10
    // init_dist_screen::@2
  __b2:
    // (y2>=24)?(y2-24):(24-y2)
    // [68] init_dist_screen::$7 = init_dist_screen::y2#0 - $18 -- vbuaa=vbuaa_minus_vbuc1 
    sec
    sbc #$18
    jmp __b4
}
  // init_angle_screen
// Populates 1000 bytes (a screen) with values representing the angle to the center.
// Utilizes symmetry around the  center
// void init_angle_screen(__zp(4) char *screen)
init_angle_screen: {
    .label __9 = $11
    .label screen = 4
    .label screen_bottomline = 4
    .label xw = $16
    .label yw = $18
    .label angle_w = $11
    .label ang_w = $13
    .label x = $14
    .label xb = $15
    .label screen_topline = 2
    .label y = 6
    // byte* screen_topline = screen+40*12
    // [69] init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#0 + (unsigned int)$28*$c -- pbuz1=pbuz1_plus_vwuc1 
    lda.z screen_bottomline
    clc
    adc #<$28*$c
    sta.z screen_bottomline
    lda.z screen_bottomline+1
    adc #>$28*$c
    sta.z screen_bottomline+1
    // [70] init_angle_screen::screen_topline#7 = init_angle_screen::screen_bottomline#0 -- pbuz1=pbuz2 
    lda.z screen_bottomline
    sta.z screen_topline
    lda.z screen_bottomline+1
    sta.z screen_topline+1
    // [71] phi from init_angle_screen to init_angle_screen::@1 [phi:init_angle_screen->init_angle_screen::@1]
    // [71] phi init_angle_screen::screen_bottomline#6 = init_angle_screen::screen_bottomline#0 [phi:init_angle_screen->init_angle_screen::@1#0] -- register_copy 
    // [71] phi init_angle_screen::screen_topline#6 = init_angle_screen::screen_topline#7 [phi:init_angle_screen->init_angle_screen::@1#1] -- register_copy 
    // [71] phi init_angle_screen::y#5 = 0 [phi:init_angle_screen->init_angle_screen::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta.z y
    // [71] phi from init_angle_screen::@4 to init_angle_screen::@1 [phi:init_angle_screen::@4->init_angle_screen::@1]
    // [71] phi init_angle_screen::screen_bottomline#6 = init_angle_screen::screen_bottomline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#0] -- register_copy 
    // [71] phi init_angle_screen::screen_topline#6 = init_angle_screen::screen_topline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#1] -- register_copy 
    // [71] phi init_angle_screen::y#5 = init_angle_screen::y#1 [phi:init_angle_screen::@4->init_angle_screen::@1#2] -- register_copy 
    // init_angle_screen::@1
  __b1:
    // [72] phi from init_angle_screen::@1 to init_angle_screen::@2 [phi:init_angle_screen::@1->init_angle_screen::@2]
    // [72] phi init_angle_screen::xb#2 = $27 [phi:init_angle_screen::@1->init_angle_screen::@2#0] -- vbuz1=vbuc1 
    lda #$27
    sta.z xb
    // [72] phi init_angle_screen::x#2 = 0 [phi:init_angle_screen::@1->init_angle_screen::@2#1] -- vbuz1=vbuc1 
    lda #0
    sta.z x
    // init_angle_screen::@2
  __b2:
    // for( byte x=0,xb=39; x<=19; x++, xb--)
    // [73] if(init_angle_screen::x#2<$13+1) goto init_angle_screen::@3 -- vbuz1_lt_vbuc1_then_la1 
    lda.z x
    cmp #$13+1
    bcc __b3
    // init_angle_screen::@4
    // screen_topline -= 40
    // [74] init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#6 - $28 -- pbuz1=pbuz1_minus_vbuc1 
    sec
    lda.z screen_topline
    sbc #$28
    sta.z screen_topline
    lda.z screen_topline+1
    sbc #0
    sta.z screen_topline+1
    // screen_bottomline += 40
    // [75] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z screen_bottomline
    sta.z screen_bottomline
    bcc !+
    inc.z screen_bottomline+1
  !:
    // for(byte y: 0..12)
    // [76] init_angle_screen::y#1 = ++ init_angle_screen::y#5 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [77] if(init_angle_screen::y#1!=$d) goto init_angle_screen::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$d
    cmp.z y
    bne __b1
    // init_angle_screen::@return
    // }
    // [78] return 
    rts
    // init_angle_screen::@3
  __b3:
    // x*2
    // [79] init_angle_screen::$3 = init_angle_screen::x#2 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z x
    asl
    // 39-x*2
    // [80] init_angle_screen::$4 = $27 - init_angle_screen::$3 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    sec
    adc #$27
    // MAKEWORD( 39-x*2, 0 )
    // [81] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 -- vwuz1=vbuaa_word_vbuc1 
    ldy #0
    sta.z xw+1
    sty.z xw
    // y*2
    // [82] init_angle_screen::$6 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z y
    asl
    // MAKEWORD( y*2, 0 )
    // [83] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0 -- vwuz1=vbuaa_word_vbuc1 
    sta.z yw+1
    sty.z yw
    // word angle_w = atan2_16(xw, yw)
    // [84] atan2_16::x#0 = (int)init_angle_screen::xw#0
    // [85] atan2_16::y#0 = (int)init_angle_screen::yw#0
    // [86] call atan2_16
    jsr atan2_16
    // [87] atan2_16::return#2 = atan2_16::return#0
    // init_angle_screen::@5
    // [88] init_angle_screen::angle_w#0 = atan2_16::return#2
    // angle_w+0x0080
    // [89] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1 
    lda #$80
    clc
    adc.z __9
    sta.z __9
    bcc !+
    inc.z __9+1
  !:
    // byte ang_w = BYTE1(angle_w+0x0080)
    // [90] init_angle_screen::ang_w#0 = byte1  init_angle_screen::$9 -- vbuz1=_byte1_vwuz2 
    lda.z __9+1
    sta.z ang_w
    // screen_bottomline[xb] = ang_w
    // [91] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3 
    ldy.z xb
    sta (screen_bottomline),y
    // -ang_w
    // [92] init_angle_screen::$11 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1 
    eor #$ff
    clc
    adc #1
    // screen_topline[xb] = -ang_w
    // [93] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa 
    sta (screen_topline),y
    // 0x80+ang_w
    // [94] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1 
    lda #$80
    clc
    adc.z ang_w
    // screen_topline[x] = 0x80+ang_w
    // [95] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy.z x
    sta (screen_topline),y
    // 0x80-ang_w
    // [96] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1 
    lda #$80
    sec
    sbc.z ang_w
    // screen_bottomline[x] = 0x80-ang_w
    // [97] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13 -- pbuz1_derefidx_vbuz2=vbuaa 
    sta (screen_bottomline),y
    // for( byte x=0,xb=39; x<=19; x++, xb--)
    // [98] init_angle_screen::x#1 = ++ init_angle_screen::x#2 -- vbuz1=_inc_vbuz1 
    inc.z x
    // [99] init_angle_screen::xb#1 = -- init_angle_screen::xb#2 -- vbuz1=_dec_vbuz1 
    dec.z xb
    // [72] phi from init_angle_screen::@5 to init_angle_screen::@2 [phi:init_angle_screen::@5->init_angle_screen::@2]
    // [72] phi init_angle_screen::xb#2 = init_angle_screen::xb#1 [phi:init_angle_screen::@5->init_angle_screen::@2#0] -- register_copy 
    // [72] phi init_angle_screen::x#2 = init_angle_screen::x#1 [phi:init_angle_screen::@5->init_angle_screen::@2#1] -- register_copy 
    jmp __b2
}
  // make_plasma_charset
// Make a plasma-friendly charset where the chars are randomly filled
// void make_plasma_charset(char *charset)
make_plasma_charset: {
    .label __7 = $15
    .label __10 = $1a
    .label __11 = $1a
    .label s = $14
    .label i = 6
    .label c = 7
    .label __16 = $1a
    // make_plasma_charset::sid_rnd_init1
    // SID->CH3_FREQ = 0xffff
    // [101] *((unsigned int *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ) = $ffff -- _deref_pwuc1=vwuc2 
    lda #<$ffff
    sta SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ
    lda #>$ffff
    sta SID+OFFSET_STRUCT_MOS6581_SID_CH3_FREQ+1
    // SID->CH3_CONTROL = SID_CONTROL_NOISE
    // [102] *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL) = SID_CONTROL_NOISE -- _deref_pbuc1=vbuc2 
    lda #SID_CONTROL_NOISE
    sta SID+OFFSET_STRUCT_MOS6581_SID_CH3_CONTROL
    // [103] phi from make_plasma_charset::sid_rnd_init1 to make_plasma_charset::@11 [phi:make_plasma_charset::sid_rnd_init1->make_plasma_charset::@11]
    // make_plasma_charset::@11
    // print_cls()
    // [104] call print_cls
    // [227] phi from make_plasma_charset::@11 to print_cls [phi:make_plasma_charset::@11->print_cls]
    jsr print_cls
    // [105] phi from make_plasma_charset::@11 to make_plasma_charset::@1 [phi:make_plasma_charset::@11->make_plasma_charset::@1]
    // [105] phi print_char_cursor#19 = print_screen#0 [phi:make_plasma_charset::@11->make_plasma_charset::@1#0] -- pbuz1=pbuc1 
    lda #<print_screen
    sta.z print_char_cursor
    lda #>print_screen
    sta.z print_char_cursor+1
    // [105] phi make_plasma_charset::c#2 = 0 [phi:make_plasma_charset::@11->make_plasma_charset::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z c
    sta.z c+1
    // make_plasma_charset::@1
  __b1:
    // for (unsigned int c = 0; c < 0x100; ++c)
    // [106] if(make_plasma_charset::c#2<$100) goto make_plasma_charset::@2 -- vwuz1_lt_vwuc1_then_la1 
    lda.z c+1
    cmp #>$100
    bcc __b2
    bne !+
    lda.z c
    cmp #<$100
    bcc __b2
  !:
    // make_plasma_charset::@return
    // }
    // [107] return 
    rts
    // make_plasma_charset::@2
  __b2:
    // BYTE0(c)
    // [108] make_plasma_charset::$3 = byte0  make_plasma_charset::c#2 -- vbuxx=_byte0_vwuz1 
    ldx.z c
    // char s = SINTABLE[BYTE0(c)]
    // [109] make_plasma_charset::s#0 = SINTABLE[make_plasma_charset::$3] -- vbuz1=pbuc1_derefidx_vbuxx 
    lda SINTABLE,x
    sta.z s
    // [110] phi from make_plasma_charset::@2 to make_plasma_charset::@3 [phi:make_plasma_charset::@2->make_plasma_charset::@3]
    // [110] phi make_plasma_charset::i#2 = 0 [phi:make_plasma_charset::@2->make_plasma_charset::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    // make_plasma_charset::@3
  __b3:
    // for ( char i = 0; i < 8; ++i)
    // [111] if(make_plasma_charset::i#2<8) goto make_plasma_charset::@5 -- vbuz1_lt_vbuc1_then_la1 
    lda.z i
    cmp #8
    bcc __b4
    // make_plasma_charset::@4
    // c & 0x07
    // [112] make_plasma_charset::$12 = make_plasma_charset::c#2 & 7 -- vbuaa=vwuz1_band_vbuc1 
    lda #7
    and.z c
    // if ((c & 0x07) == 0)
    // [113] if(make_plasma_charset::$12!=0) goto make_plasma_charset::@10 -- vbuaa_neq_0_then_la1 
    cmp #0
    bne __b10
    // [114] phi from make_plasma_charset::@4 to make_plasma_charset::@9 [phi:make_plasma_charset::@4->make_plasma_charset::@9]
    // make_plasma_charset::@9
    // print_char('.')
    // [115] call print_char
    jsr print_char
    // [116] phi from make_plasma_charset::@4 make_plasma_charset::@9 to make_plasma_charset::@10 [phi:make_plasma_charset::@4/make_plasma_charset::@9->make_plasma_charset::@10]
    // [116] phi print_char_cursor#32 = print_char_cursor#19 [phi:make_plasma_charset::@4/make_plasma_charset::@9->make_plasma_charset::@10#0] -- register_copy 
    // make_plasma_charset::@10
  __b10:
    // for (unsigned int c = 0; c < 0x100; ++c)
    // [117] make_plasma_charset::c#1 = ++ make_plasma_charset::c#2 -- vwuz1=_inc_vwuz1 
    inc.z c
    bne !+
    inc.z c+1
  !:
    // [105] phi from make_plasma_charset::@10 to make_plasma_charset::@1 [phi:make_plasma_charset::@10->make_plasma_charset::@1]
    // [105] phi print_char_cursor#19 = print_char_cursor#32 [phi:make_plasma_charset::@10->make_plasma_charset::@1#0] -- register_copy 
    // [105] phi make_plasma_charset::c#2 = make_plasma_charset::c#1 [phi:make_plasma_charset::@10->make_plasma_charset::@1#1] -- register_copy 
    jmp __b1
    // [118] phi from make_plasma_charset::@3 to make_plasma_charset::@5 [phi:make_plasma_charset::@3->make_plasma_charset::@5]
  __b4:
    // [118] phi make_plasma_charset::b#2 = 0 [phi:make_plasma_charset::@3->make_plasma_charset::@5#0] -- vbuyy=vbuc1 
    ldy #0
    // [118] phi make_plasma_charset::ii#2 = 0 [phi:make_plasma_charset::@3->make_plasma_charset::@5#1] -- vbuxx=vbuc1 
    ldx #0
    // make_plasma_charset::@5
  __b5:
    // for (char ii = 0; ii < 8; ++ii)
    // [119] if(make_plasma_charset::ii#2<8) goto make_plasma_charset::sid_rnd1 -- vbuxx_lt_vbuc1_then_la1 
    cpx #8
    bcc sid_rnd1
    // make_plasma_charset::@6
    // c*8
    // [120] make_plasma_charset::$10 = make_plasma_charset::c#2 << 3 -- vwuz1=vwuz2_rol_3 
    lda.z c
    asl
    sta.z __10
    lda.z c+1
    rol
    sta.z __10+1
    asl.z __10
    rol.z __10+1
    asl.z __10
    rol.z __10+1
    // (c*8) + i
    // [121] make_plasma_charset::$11 = make_plasma_charset::$10 + make_plasma_charset::i#2 -- vwuz1=vwuz1_plus_vbuz2 
    lda.z i
    clc
    adc.z __11
    sta.z __11
    bcc !+
    inc.z __11+1
  !:
    // charset[(c*8) + i] = b
    // [122] make_plasma_charset::$16 = CHARSET + make_plasma_charset::$11 -- pbuz1=pbuc1_plus_vwuz1 
    lda.z __16
    clc
    adc #<CHARSET
    sta.z __16
    lda.z __16+1
    adc #>CHARSET
    sta.z __16+1
    // [123] *make_plasma_charset::$16 = make_plasma_charset::b#2 -- _deref_pbuz1=vbuyy 
    tya
    ldy #0
    sta (__16),y
    // for ( char i = 0; i < 8; ++i)
    // [124] make_plasma_charset::i#1 = ++ make_plasma_charset::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [110] phi from make_plasma_charset::@6 to make_plasma_charset::@3 [phi:make_plasma_charset::@6->make_plasma_charset::@3]
    // [110] phi make_plasma_charset::i#2 = make_plasma_charset::i#1 [phi:make_plasma_charset::@6->make_plasma_charset::@3#0] -- register_copy 
    jmp __b3
    // make_plasma_charset::sid_rnd1
  sid_rnd1:
    // return SID->CH3_OSC;
    // [125] make_plasma_charset::sid_rnd1_return#0 = *((char *)SID+OFFSET_STRUCT_MOS6581_SID_CH3_OSC) -- vbuaa=_deref_pbuc1 
    lda SID+OFFSET_STRUCT_MOS6581_SID_CH3_OSC
    // make_plasma_charset::@12
    // sid_rnd() & 0xFF
    // [126] make_plasma_charset::$7 = make_plasma_charset::sid_rnd1_return#0 & $ff -- vbuz1=vbuaa_band_vbuc1 
    and #$ff
    sta.z __7
    // if ((sid_rnd() & 0xFF) > s)
    // [127] if(make_plasma_charset::$7<=make_plasma_charset::s#0) goto make_plasma_charset::@7 -- vbuz1_le_vbuz2_then_la1 
    lda.z s
    cmp.z __7
    bcs __b7
    // make_plasma_charset::@8
    // b |= bittab[ii]
    // [128] make_plasma_charset::b#1 = make_plasma_charset::b#2 | make_plasma_charset::bittab[make_plasma_charset::ii#2] -- vbuyy=vbuyy_bor_pbuc1_derefidx_vbuxx 
    tya
    ora bittab,x
    tay
    // [129] phi from make_plasma_charset::@12 make_plasma_charset::@8 to make_plasma_charset::@7 [phi:make_plasma_charset::@12/make_plasma_charset::@8->make_plasma_charset::@7]
    // [129] phi make_plasma_charset::b#6 = make_plasma_charset::b#2 [phi:make_plasma_charset::@12/make_plasma_charset::@8->make_plasma_charset::@7#0] -- register_copy 
    // make_plasma_charset::@7
  __b7:
    // for (char ii = 0; ii < 8; ++ii)
    // [130] make_plasma_charset::ii#1 = ++ make_plasma_charset::ii#2 -- vbuxx=_inc_vbuxx 
    inx
    // [118] phi from make_plasma_charset::@7 to make_plasma_charset::@5 [phi:make_plasma_charset::@7->make_plasma_charset::@5]
    // [118] phi make_plasma_charset::b#2 = make_plasma_charset::b#6 [phi:make_plasma_charset::@7->make_plasma_charset::@5#0] -- register_copy 
    // [118] phi make_plasma_charset::ii#2 = make_plasma_charset::ii#1 [phi:make_plasma_charset::@7->make_plasma_charset::@5#1] -- register_copy 
    jmp __b5
  .segment Data
    bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80
}
.segment Code
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
// void * memset(__zp(4) void *str, __register(X) char c, unsigned int num)
memset: {
    .label end = $1c
    .label dst = 4
    .label str = 4
    // memset::@1
    // char* end = (char*)str + num
    // [132] memset::end#0 = (char *)memset::str#3 + $3e8 -- pbuz1=pbuz2_plus_vwuc1 
    lda.z str
    clc
    adc #<$3e8
    sta.z end
    lda.z str+1
    adc #>$3e8
    sta.z end+1
    // [133] memset::dst#4 = (char *)memset::str#3
    // [134] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2]
    // [134] phi memset::dst#2 = memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy 
    // memset::@2
  __b2:
    // for(char* dst = str; dst!=end; dst++)
    // [135] if(memset::dst#2!=memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 
    lda.z dst+1
    cmp.z end+1
    bne __b3
    lda.z dst
    cmp.z end
    bne __b3
    // memset::@return
    // }
    // [136] return 
    rts
    // memset::@3
  __b3:
    // *dst = c
    // [137] *memset::dst#2 = memset::c#4 -- _deref_pbuz1=vbuxx 
    txa
    ldy #0
    sta (dst),y
    // for(char* dst = str; dst!=end; dst++)
    // [138] memset::dst#1 = ++ memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    jmp __b2
}
  // doplasma
// Render plasma to the passed screen
// void doplasma(__zp($f) char *screen)
doplasma: {
    .label angle = 7
    .label dist = 9
    .label sin_x = $16
    .label sin_y = $18
    .label screen = $f
    .label y = $14
    // char* angle = SCREEN_ANGLE
    // [140] doplasma::angle#0 = SCREEN_ANGLE#0 -- pbuz1=pbuz2 
    lda.z SCREEN_ANGLE
    sta.z angle
    lda.z SCREEN_ANGLE+1
    sta.z angle+1
    // char* dist = SCREEN_DIST
    // [141] doplasma::dist#0 = SCREEN_DIST#0 -- pbuz1=pbuz2 
    lda.z SCREEN_DIST
    sta.z dist
    lda.z SCREEN_DIST+1
    sta.z dist+1
    // byte* sin_x = SINTABLE+sin_offset_x
    // [142] doplasma::sin_x#0 = SINTABLE + sin_offset_x#11 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z sin_offset_x
    clc
    adc #<SINTABLE
    sta.z sin_x
    lda #>SINTABLE
    adc #0
    sta.z sin_x+1
    // byte* sin_y = SINTABLE+sin_offset_y
    // [143] doplasma::sin_y#0 = SINTABLE + sin_offset_y#11 -- pbuz1=pbuc1_plus_vbuz2 
    lda.z sin_offset_y
    clc
    adc #<SINTABLE
    sta.z sin_y
    lda #>SINTABLE
    adc #0
    sta.z sin_y+1
    // [144] phi from doplasma to doplasma::@1 [phi:doplasma->doplasma::@1]
    // [144] phi doplasma::y#4 = 0 [phi:doplasma->doplasma::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z y
    // [144] phi doplasma::screen#5 = doplasma::screen#6 [phi:doplasma->doplasma::@1#1] -- register_copy 
    // [144] phi doplasma::dist#4 = doplasma::dist#0 [phi:doplasma->doplasma::@1#2] -- register_copy 
    // [144] phi doplasma::angle#4 = doplasma::angle#0 [phi:doplasma->doplasma::@1#3] -- register_copy 
    // [144] phi from doplasma::@3 to doplasma::@1 [phi:doplasma::@3->doplasma::@1]
    // [144] phi doplasma::y#4 = doplasma::y#1 [phi:doplasma::@3->doplasma::@1#0] -- register_copy 
    // [144] phi doplasma::screen#5 = doplasma::screen#2 [phi:doplasma::@3->doplasma::@1#1] -- register_copy 
    // [144] phi doplasma::dist#4 = doplasma::dist#1 [phi:doplasma::@3->doplasma::@1#2] -- register_copy 
    // [144] phi doplasma::angle#4 = doplasma::angle#1 [phi:doplasma::@3->doplasma::@1#3] -- register_copy 
    // doplasma::@1
  __b1:
    // [145] phi from doplasma::@1 to doplasma::@2 [phi:doplasma::@1->doplasma::@2]
    // [145] phi doplasma::x#2 = 0 [phi:doplasma::@1->doplasma::@2#0] -- vbuxx=vbuc1 
    ldx #0
    // [145] phi from doplasma::@2 to doplasma::@2 [phi:doplasma::@2->doplasma::@2]
    // [145] phi doplasma::x#2 = doplasma::x#1 [phi:doplasma::@2->doplasma::@2#0] -- register_copy 
    // doplasma::@2
  __b2:
    // sin_x[angle[x]] + sin_y[dist[x]]
    // [146] doplasma::$2 = doplasma::sin_x#0[doplasma::angle#4[doplasma::x#2]] + doplasma::sin_y#0[doplasma::dist#4[doplasma::x#2]] -- vbuaa=pbuz1_derefidx_(pbuz2_derefidx_vbuxx)_plus_pbuz3_derefidx_(pbuz4_derefidx_vbuxx) 
    txa
    tay
    lda (dist),y
    sta.z $ff
    lda (angle),y
    tay
    lda (sin_x),y
    ldy.z $ff
    clc
    adc (sin_y),y
    // screen[x] = sin_x[angle[x]] + sin_y[dist[x]]
    // [147] doplasma::screen#5[doplasma::x#2] = doplasma::$2 -- pbuz1_derefidx_vbuxx=vbuaa 
    stx.z $ff
    ldy.z $ff
    sta (screen),y
    // for( char x: 0..39)
    // [148] doplasma::x#1 = ++ doplasma::x#2 -- vbuxx=_inc_vbuxx 
    inx
    // [149] if(doplasma::x#1!=$28) goto doplasma::@2 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$28
    bne __b2
    // doplasma::@3
    // screen += 40
    // [150] doplasma::screen#2 = doplasma::screen#5 + $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z screen
    sta.z screen
    bcc !+
    inc.z screen+1
  !:
    // angle += 40
    // [151] doplasma::angle#1 = doplasma::angle#4 + $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z angle
    sta.z angle
    bcc !+
    inc.z angle+1
  !:
    // dist += 40
    // [152] doplasma::dist#1 = doplasma::dist#4 + $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc.z dist
    sta.z dist
    bcc !+
    inc.z dist+1
  !:
    // for( char y: 0..25)
    // [153] doplasma::y#1 = ++ doplasma::y#4 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [154] if(doplasma::y#1!=$1a) goto doplasma::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$1a
    cmp.z y
    bne __b1
    // doplasma::@4
    // sin_offset_x -= 3
    // [155] sin_offset_x#13 = sin_offset_x#11 - 3 -- vbuz1=vbuz1_minus_vbuc1 
    lax.z sin_offset_x
    axs #3
    stx.z sin_offset_x
    // sin_offset_y -= 7
    // [156] sin_offset_y#13 = sin_offset_y#11 - 7 -- vbuz1=vbuz1_minus_vbuc1 
    lax.z sin_offset_y
    axs #7
    stx.z sin_offset_y
    // doplasma::@return
    // }
    // [157] return 
    rts
}
  // init_squares
// Initialize squares table
// Uses iterative formula (x+1)^2 = x^2 + 2*x + 1
init_squares: {
    .label squares = $f
    .label sqr = 9
    // malloc(NUM_SQUARES*sizeof(unsigned int))
    // [159] call malloc
    // [9] phi from init_squares to malloc [phi:init_squares->malloc]
    // [9] phi malloc::size#3 = NUM_SQUARES#2*SIZEOF_UNSIGNED_INT [phi:init_squares->malloc#0] -- vwuz1=vbuc1 
    lda #<NUM_SQUARES*SIZEOF_UNSIGNED_INT
    sta.z malloc.size
    lda #>NUM_SQUARES*SIZEOF_UNSIGNED_INT
    sta.z malloc.size+1
    // [9] phi heap_head#13 = heap_head#0 [phi:init_squares->malloc#1] -- register_copy 
    jsr malloc
    // init_squares::@3
    // malloc(NUM_SQUARES*sizeof(unsigned int))
    // [160] SQUARES#0 = (void *)malloc::mem#0
    // unsigned int* squares = SQUARES
    // [161] init_squares::squares#0 = (unsigned int *)SQUARES#0 -- pwuz1=pwuz2 
    lda.z SQUARES
    sta.z squares
    lda.z SQUARES+1
    sta.z squares+1
    // [162] phi from init_squares::@3 to init_squares::@1 [phi:init_squares::@3->init_squares::@1]
    // [162] phi init_squares::squares#2 = init_squares::squares#0 [phi:init_squares::@3->init_squares::@1#0] -- register_copy 
    // [162] phi init_squares::sqr#2 = 0 [phi:init_squares::@3->init_squares::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z sqr
    sta.z sqr+1
    // [162] phi init_squares::i#2 = 0 [phi:init_squares::@3->init_squares::@1#2] -- vbuxx=vbuc1 
    tax
    // init_squares::@1
  __b1:
    // for(char i=0;i<NUM_SQUARES;i++)
    // [163] if(init_squares::i#2<NUM_SQUARES#2) goto init_squares::@2 -- vbuxx_lt_vbuc1_then_la1 
    cpx #NUM_SQUARES
    bcc __b2
    // init_squares::@return
    // }
    // [164] return 
    rts
    // init_squares::@2
  __b2:
    // *squares++ = sqr
    // [165] *init_squares::squares#2 = init_squares::sqr#2 -- _deref_pwuz1=vwuz2 
    ldy #0
    lda.z sqr
    sta (squares),y
    iny
    lda.z sqr+1
    sta (squares),y
    // *squares++ = sqr;
    // [166] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_UNSIGNED_INT -- pwuz1=pwuz1_plus_vbuc1 
    lda #SIZEOF_UNSIGNED_INT
    clc
    adc.z squares
    sta.z squares
    bcc !+
    inc.z squares+1
  !:
    // i*2
    // [167] init_squares::$3 = init_squares::i#2 << 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // i*2+1
    // [168] init_squares::$4 = init_squares::$3 + 1 -- vbuaa=vbuaa_plus_1 
    clc
    adc #1
    // sqr += i*2+1
    // [169] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4 -- vwuz1=vwuz1_plus_vbuaa 
    clc
    adc.z sqr
    sta.z sqr
    bcc !+
    inc.z sqr+1
  !:
    // for(char i=0;i<NUM_SQUARES;i++)
    // [170] init_squares::i#1 = ++ init_squares::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [162] phi from init_squares::@2 to init_squares::@1 [phi:init_squares::@2->init_squares::@1]
    // [162] phi init_squares::squares#2 = init_squares::squares#1 [phi:init_squares::@2->init_squares::@1#0] -- register_copy 
    // [162] phi init_squares::sqr#2 = init_squares::sqr#1 [phi:init_squares::@2->init_squares::@1#1] -- register_copy 
    // [162] phi init_squares::i#2 = init_squares::i#1 [phi:init_squares::@2->init_squares::@1#2] -- register_copy 
    jmp __b1
}
  // sqr
// Find the square of a char value
// Uses a table of squares that must be initialized by calling init_squares()
// __zp($11) unsigned int sqr(__register(A) char val)
sqr: {
    .label return = $11
    .label return_1 = $f
    // return SQUARES[val];
    // [172] sqr::$0 = sqr::val#2 << 1 -- vbuaa=vbuaa_rol_1 
    asl
    // [173] sqr::return#0 = ((unsigned int *)SQUARES#0)[sqr::$0] -- vwuz1=pwuz2_derefidx_vbuaa 
    tay
    lda (SQUARES),y
    sta.z return
    iny
    lda (SQUARES),y
    sta.z return+1
    // sqr::@return
    // }
    // [174] return 
    rts
}
  // sqrt
// Find the (integer) square root of a unsigned int value
// If the square is not an integer then it returns the largest integer N where N*N <= val
// Uses a table of squares that must be initialized by calling init_squares()
// __register(A) char sqrt(__zp($11) unsigned int val)
sqrt: {
    .label __1 = 9
    .label __2 = 9
    .label found = 9
    .label val = $11
    // unsigned int* found = bsearch16u(val, SQUARES, NUM_SQUARES)
    // [175] bsearch16u::key#0 = sqrt::val#0
    // [176] bsearch16u::items#1 = (unsigned int *)SQUARES#0 -- pwuz1=pwuz2 
    lda.z SQUARES
    sta.z bsearch16u.items
    lda.z SQUARES+1
    sta.z bsearch16u.items+1
    // [177] call bsearch16u
    // [233] phi from sqrt to bsearch16u [phi:sqrt->bsearch16u]
    jsr bsearch16u
    // unsigned int* found = bsearch16u(val, SQUARES, NUM_SQUARES)
    // [178] bsearch16u::return#3 = bsearch16u::return#1
    // sqrt::@1
    // [179] sqrt::found#0 = bsearch16u::return#3
    // found-SQUARES
    // [180] sqrt::$2 = sqrt::found#0 - (unsigned int *)SQUARES#0 -- vwuz1=pwuz1_minus_pwuz2 
    lda.z __2
    sec
    sbc.z SQUARES
    sta.z __2
    lda.z __2+1
    sbc.z SQUARES+1
    sta.z __2+1
    // [181] sqrt::$1 = sqrt::$2 >> 1 -- vwuz1=vwuz1_ror_1 
    lsr.z __1+1
    ror.z __1
    // char sq = (char)(found-SQUARES)
    // [182] sqrt::return#0 = (char)sqrt::$1 -- vbuaa=_byte_vwuz1 
    lda.z __1
    // sqrt::@return
    // }
    // [183] return 
    rts
}
  // atan2_16
// Find the atan2(x, y) - which is the angle of the line from (0,0) to (x,y)
// Finding the angle requires a binary search using CORDIC_ITERATIONS_16
// Returns the angle in hex-degrees (0=0, 0x8000=PI, 0x10000=2*PI)
// __zp($11) unsigned int atan2_16(__zp($16) int x, __zp($18) int y)
atan2_16: {
    .label __2 = 9
    .label __7 = $f
    .label yi = 9
    .label xi = $f
    .label angle = $11
    .label xd = $1c
    .label yd = $1a
    .label return = $11
    .label x = $16
    .label y = $18
    // (y>=0)?y:-y
    // [184] if(atan2_16::y#0>=0) goto atan2_16::@1 -- vwsz1_ge_0_then_la1 
    lda.z y+1
    bmi !__b1+
    jmp __b1
  !__b1:
    // atan2_16::@2
    // [185] atan2_16::$2 = - atan2_16::y#0 -- vwsz1=_neg_vwsz2 
    sec
    lda #0
    sbc.z y
    sta.z __2
    lda #0
    sbc.z y+1
    sta.z __2+1
    // [186] phi from atan2_16::@1 atan2_16::@2 to atan2_16::@3 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3]
    // [186] phi atan2_16::yi#0 = atan2_16::yi#16 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3#0] -- register_copy 
    // atan2_16::@3
  __b3:
    // (x>=0)?x:-x
    // [187] if(atan2_16::x#0>=0) goto atan2_16::@4 -- vwsz1_ge_0_then_la1 
    lda.z x+1
    bmi !__b4+
    jmp __b4
  !__b4:
    // atan2_16::@5
    // [188] atan2_16::$7 = - atan2_16::x#0 -- vwsz1=_neg_vwsz2 
    sec
    lda #0
    sbc.z x
    sta.z __7
    lda #0
    sbc.z x+1
    sta.z __7+1
    // [189] phi from atan2_16::@4 atan2_16::@5 to atan2_16::@6 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6]
    // [189] phi atan2_16::xi#0 = atan2_16::xi#13 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6#0] -- register_copy 
    // atan2_16::@6
  __b6:
    // [190] phi from atan2_16::@6 to atan2_16::@10 [phi:atan2_16::@6->atan2_16::@10]
    // [190] phi atan2_16::angle#12 = 0 [phi:atan2_16::@6->atan2_16::@10#0] -- vwuz1=vwuc1 
    lda #<0
    sta.z angle
    sta.z angle+1
    // [190] phi atan2_16::i#2 = 0 [phi:atan2_16::@6->atan2_16::@10#1] -- vbuxx=vbuc1 
    tax
    // [190] phi atan2_16::xi#3 = atan2_16::xi#0 [phi:atan2_16::@6->atan2_16::@10#2] -- register_copy 
    // [190] phi atan2_16::yi#3 = atan2_16::yi#0 [phi:atan2_16::@6->atan2_16::@10#3] -- register_copy 
    // atan2_16::@10
  __b10:
    // if(yi==0)
    // [191] if(atan2_16::yi#3!=0) goto atan2_16::@11 -- vwsz1_neq_0_then_la1 
    lda.z yi+1
    ora.z yi
    bne __b11
    // [192] phi from atan2_16::@10 atan2_16::@19 to atan2_16::@12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12]
    // [192] phi atan2_16::angle#6 = atan2_16::angle#12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12#0] -- register_copy 
    // atan2_16::@12
  __b12:
    // angle /=2
    // [193] atan2_16::angle#1 = atan2_16::angle#6 >> 1 -- vwuz1=vwuz1_ror_1 
    lsr.z angle+1
    ror.z angle
    // if(x<0)
    // [194] if(atan2_16::x#0>=0) goto atan2_16::@7 -- vwsz1_ge_0_then_la1 
    lda.z x+1
    bpl __b7
    // atan2_16::@21
    // angle = 0x8000-angle
    // [195] atan2_16::angle#4 = $8000 - atan2_16::angle#1 -- vwuz1=vwuc1_minus_vwuz1 
    lda #<$8000
    sec
    sbc.z angle
    sta.z angle
    lda #>$8000
    sbc.z angle+1
    sta.z angle+1
    // [196] phi from atan2_16::@12 atan2_16::@21 to atan2_16::@7 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7]
    // [196] phi atan2_16::angle#11 = atan2_16::angle#1 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7#0] -- register_copy 
    // atan2_16::@7
  __b7:
    // if(y<0)
    // [197] if(atan2_16::y#0>=0) goto atan2_16::@8 -- vwsz1_ge_0_then_la1 
    lda.z y+1
    bpl __b8
    // atan2_16::@9
    // angle = -angle
    // [198] atan2_16::angle#5 = - atan2_16::angle#11 -- vwuz1=_neg_vwuz1 
    sec
    lda #0
    sbc.z angle
    sta.z angle
    lda #0
    sbc.z angle+1
    sta.z angle+1
    // [199] phi from atan2_16::@7 atan2_16::@9 to atan2_16::@8 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8]
    // [199] phi atan2_16::return#0 = atan2_16::angle#11 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8#0] -- register_copy 
    // atan2_16::@8
  __b8:
    // atan2_16::@return
    // }
    // [200] return 
    rts
    // atan2_16::@11
  __b11:
    // [201] atan2_16::shift#5 = atan2_16::i#2 -- vbuyy=vbuxx 
    txa
    tay
    // [202] atan2_16::xd#10 = atan2_16::xi#3 -- vwsz1=vwsz2 
    lda.z xi
    sta.z xd
    lda.z xi+1
    sta.z xd+1
    // [203] atan2_16::yd#10 = atan2_16::yi#3 -- vwsz1=vwsz2 
    lda.z yi
    sta.z yd
    lda.z yi+1
    sta.z yd+1
    // [204] phi from atan2_16::@11 atan2_16::@14 to atan2_16::@13 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13]
    // [204] phi atan2_16::yd#3 = atan2_16::yd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#0] -- register_copy 
    // [204] phi atan2_16::xd#3 = atan2_16::xd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#1] -- register_copy 
    // [204] phi atan2_16::shift#2 = atan2_16::shift#5 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#2] -- register_copy 
    // atan2_16::@13
  __b13:
    // while(shift>=2)
    // [205] if(atan2_16::shift#2>=2) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1 
    cpy #2
    bcs __b14
    // atan2_16::@15
    // if(shift)
    // [206] if(0==atan2_16::shift#2) goto atan2_16::@17 -- 0_eq_vbuyy_then_la1 
    cpy #0
    beq __b17
    // atan2_16::@16
    // xd >>= 1
    // [207] atan2_16::xd#2 = atan2_16::xd#3 >> 1 -- vwsz1=vwsz1_ror_1 
    lda.z xd+1
    cmp #$80
    ror.z xd+1
    ror.z xd
    // yd >>= 1
    // [208] atan2_16::yd#2 = atan2_16::yd#3 >> 1 -- vwsz1=vwsz1_ror_1 
    lda.z yd+1
    cmp #$80
    ror.z yd+1
    ror.z yd
    // [209] phi from atan2_16::@15 atan2_16::@16 to atan2_16::@17 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17]
    // [209] phi atan2_16::xd#5 = atan2_16::xd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#0] -- register_copy 
    // [209] phi atan2_16::yd#5 = atan2_16::yd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#1] -- register_copy 
    // atan2_16::@17
  __b17:
    // if(yi>=0)
    // [210] if(atan2_16::yi#3>=0) goto atan2_16::@18 -- vwsz1_ge_0_then_la1 
    lda.z yi+1
    bpl __b18
    // atan2_16::@20
    // xi -= yd
    // [211] atan2_16::xi#2 = atan2_16::xi#3 - atan2_16::yd#5 -- vwsz1=vwsz1_minus_vwsz2 
    lda.z xi
    sec
    sbc.z yd
    sta.z xi
    lda.z xi+1
    sbc.z yd+1
    sta.z xi+1
    // yi += xd
    // [212] atan2_16::yi#2 = atan2_16::yi#3 + atan2_16::xd#5 -- vwsz1=vwsz1_plus_vwsz2 
    clc
    lda.z yi
    adc.z xd
    sta.z yi
    lda.z yi+1
    adc.z xd+1
    sta.z yi+1
    // angle -= CORDIC_ATAN2_ANGLES_16[i]
    // [213] atan2_16::$23 = atan2_16::i#2 << 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // [214] atan2_16::angle#3 = atan2_16::angle#12 - CORDIC_ATAN2_ANGLES_16[atan2_16::$23] -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuaa 
    tay
    lda.z angle
    sec
    sbc CORDIC_ATAN2_ANGLES_16,y
    sta.z angle
    lda.z angle+1
    sbc CORDIC_ATAN2_ANGLES_16+1,y
    sta.z angle+1
    // [215] phi from atan2_16::@18 atan2_16::@20 to atan2_16::@19 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19]
    // [215] phi atan2_16::xi#8 = atan2_16::xi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#0] -- register_copy 
    // [215] phi atan2_16::angle#13 = atan2_16::angle#2 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#1] -- register_copy 
    // [215] phi atan2_16::yi#8 = atan2_16::yi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#2] -- register_copy 
    // atan2_16::@19
  __b19:
    // for( char i: 0..CORDIC_ITERATIONS_16-1)
    // [216] atan2_16::i#1 = ++ atan2_16::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [217] if(atan2_16::i#1==CORDIC_ITERATIONS_16-1+1) goto atan2_16::@12 -- vbuxx_eq_vbuc1_then_la1 
    cpx #CORDIC_ITERATIONS_16-1+1
    bne !__b12+
    jmp __b12
  !__b12:
    // [190] phi from atan2_16::@19 to atan2_16::@10 [phi:atan2_16::@19->atan2_16::@10]
    // [190] phi atan2_16::angle#12 = atan2_16::angle#13 [phi:atan2_16::@19->atan2_16::@10#0] -- register_copy 
    // [190] phi atan2_16::i#2 = atan2_16::i#1 [phi:atan2_16::@19->atan2_16::@10#1] -- register_copy 
    // [190] phi atan2_16::xi#3 = atan2_16::xi#8 [phi:atan2_16::@19->atan2_16::@10#2] -- register_copy 
    // [190] phi atan2_16::yi#3 = atan2_16::yi#8 [phi:atan2_16::@19->atan2_16::@10#3] -- register_copy 
    jmp __b10
    // atan2_16::@18
  __b18:
    // xi += yd
    // [218] atan2_16::xi#1 = atan2_16::xi#3 + atan2_16::yd#5 -- vwsz1=vwsz1_plus_vwsz2 
    clc
    lda.z xi
    adc.z yd
    sta.z xi
    lda.z xi+1
    adc.z yd+1
    sta.z xi+1
    // yi -= xd
    // [219] atan2_16::yi#1 = atan2_16::yi#3 - atan2_16::xd#5 -- vwsz1=vwsz1_minus_vwsz2 
    lda.z yi
    sec
    sbc.z xd
    sta.z yi
    lda.z yi+1
    sbc.z xd+1
    sta.z yi+1
    // angle += CORDIC_ATAN2_ANGLES_16[i]
    // [220] atan2_16::$22 = atan2_16::i#2 << 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // [221] atan2_16::angle#2 = atan2_16::angle#12 + CORDIC_ATAN2_ANGLES_16[atan2_16::$22] -- vwuz1=vwuz1_plus_pwuc1_derefidx_vbuaa 
    tay
    clc
    lda.z angle
    adc CORDIC_ATAN2_ANGLES_16,y
    sta.z angle
    lda.z angle+1
    adc CORDIC_ATAN2_ANGLES_16+1,y
    sta.z angle+1
    jmp __b19
    // atan2_16::@14
  __b14:
    // xd >>= 2
    // [222] atan2_16::xd#1 = atan2_16::xd#3 >> 2 -- vwsz1=vwsz1_ror_2 
    lda.z xd+1
    cmp #$80
    ror.z xd+1
    ror.z xd
    lda.z xd+1
    cmp #$80
    ror.z xd+1
    ror.z xd
    // yd >>= 2
    // [223] atan2_16::yd#1 = atan2_16::yd#3 >> 2 -- vwsz1=vwsz1_ror_2 
    lda.z yd+1
    cmp #$80
    ror.z yd+1
    ror.z yd
    lda.z yd+1
    cmp #$80
    ror.z yd+1
    ror.z yd
    // shift -=2
    // [224] atan2_16::shift#1 = atan2_16::shift#2 - 2 -- vbuyy=vbuyy_minus_2 
    dey
    dey
    jmp __b13
    // atan2_16::@4
  __b4:
    // (x>=0)?x:-x
    // [225] atan2_16::xi#13 = atan2_16::x#0 -- vwsz1=vwsz2 
    lda.z x
    sta.z xi
    lda.z x+1
    sta.z xi+1
    jmp __b6
    // atan2_16::@1
  __b1:
    // (y>=0)?y:-y
    // [226] atan2_16::yi#16 = atan2_16::y#0 -- vwsz1=vwsz2 
    lda.z y
    sta.z yi
    lda.z y+1
    sta.z yi+1
    jmp __b3
}
  // print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    // memset(print_screen, ' ', 1000)
    // [228] call memset
    // [131] phi from print_cls to memset [phi:print_cls->memset]
    // [131] phi memset::c#4 = ' ' [phi:print_cls->memset#0] -- vbuxx=vbuc1 
    ldx #' '
    // [131] phi memset::str#3 = (void *)print_screen#0 [phi:print_cls->memset#1] -- pvoz1=pvoc1 
    lda #<print_screen
    sta.z memset.str
    lda #>print_screen
    sta.z memset.str+1
    jsr memset
    // print_cls::@return
    // }
    // [229] return 
    rts
}
  // print_char
// Print a single char
// void print_char(char ch)
print_char: {
    .const ch = '.'
    // *(print_char_cursor++) = ch
    // [230] *print_char_cursor#19 = print_char::ch#0 -- _deref_pbuz1=vbuc1 
    lda #ch
    ldy #0
    sta (print_char_cursor),y
    // *(print_char_cursor++) = ch;
    // [231] print_char_cursor#0 = ++ print_char_cursor#19 -- pbuz1=_inc_pbuz1 
    inc.z print_char_cursor
    bne !+
    inc.z print_char_cursor+1
  !:
    // print_char::@return
    // }
    // [232] return 
    rts
}
  // bsearch16u
// Searches an array of nitems unsigned ints, the initial member of which is pointed to by base, for a member that matches the value key.
// - key - The value to look for
// - items - Pointer to the start of the array to search in
// - num - The number of items in the array
// Returns pointer to an entry in the array that matches the search key
// __zp(9) unsigned int * bsearch16u(__zp($11) unsigned int key, __zp(9) unsigned int *items, __register(X) char num)
bsearch16u: {
    .label __2 = 9
    .label pivot = $1a
    .label result = $1c
    .label return = 9
    .label items = 9
    .label key = $11
    // [234] phi from bsearch16u to bsearch16u::@3 [phi:bsearch16u->bsearch16u::@3]
    // [234] phi bsearch16u::items#2 = bsearch16u::items#1 [phi:bsearch16u->bsearch16u::@3#0] -- register_copy 
    // [234] phi bsearch16u::num#3 = NUM_SQUARES#2 [phi:bsearch16u->bsearch16u::@3#1] -- vbuxx=vbuc1 
    ldx #NUM_SQUARES
    // bsearch16u::@3
  __b3:
    // while (num > 0)
    // [235] if(bsearch16u::num#3>0) goto bsearch16u::@4 -- vbuxx_gt_0_then_la1 
    cpx #0
    bne __b4
    // bsearch16u::@5
    // *items<=key?items:items-1
    // [236] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@2 -- _deref_pwuz1_le_vwuz2_then_la1 
    ldy #1
    lda (items),y
    cmp.z key+1
    bne !+
    dey
    lda (items),y
    cmp.z key
    beq __b2
  !:
    bcc __b2
    // bsearch16u::@1
    // [237] bsearch16u::$2 = bsearch16u::items#2 - 1*SIZEOF_UNSIGNED_INT -- pwuz1=pwuz1_minus_vbuc1 
    sec
    lda.z __2
    sbc #1*SIZEOF_UNSIGNED_INT
    sta.z __2
    lda.z __2+1
    sbc #0
    sta.z __2+1
    // [238] phi from bsearch16u::@1 bsearch16u::@5 to bsearch16u::@2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2]
    // [238] phi bsearch16u::return#2 = bsearch16u::$2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2#0] -- register_copy 
    // bsearch16u::@2
  __b2:
    // [239] phi from bsearch16u::@2 bsearch16u::@8 to bsearch16u::@return [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return]
    // [239] phi bsearch16u::return#1 = bsearch16u::return#2 [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return#0] -- register_copy 
    // bsearch16u::@return
    // }
    // [240] return 
    rts
    // bsearch16u::@4
  __b4:
    // num >> 1
    // [241] bsearch16u::$6 = bsearch16u::num#3 >> 1 -- vbuaa=vbuxx_ror_1 
    txa
    lsr
    // unsigned int* pivot = items + (num >> 1)
    // [242] bsearch16u::$14 = bsearch16u::$6 << 1 -- vbuaa=vbuaa_rol_1 
    asl
    // [243] bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14 -- pwuz1=pwuz2_plus_vbuaa 
    clc
    adc.z items
    sta.z pivot
    lda #0
    adc.z items+1
    sta.z pivot+1
    // signed int result = (signed int)key-(signed int)*pivot
    // [244] bsearch16u::result#0 = (int)bsearch16u::key#0 - (int)*bsearch16u::pivot#0 -- vwsz1=vwsz2_minus__deref_pwsz3 
    sec
    lda.z key
    ldy #0
    sbc (pivot),y
    sta.z result
    lda.z key+1
    iny
    sbc (pivot),y
    sta.z result+1
    // if (result == 0)
    // [245] if(bsearch16u::result#0!=0) goto bsearch16u::@6 -- vwsz1_neq_0_then_la1 
    ora.z result
    bne __b6
    // bsearch16u::@8
    // [246] bsearch16u::return#7 = bsearch16u::pivot#0 -- pwuz1=pwuz2 
    lda.z pivot
    sta.z return
    lda.z pivot+1
    sta.z return+1
    rts
    // bsearch16u::@6
  __b6:
    // if (result > 0)
    // [247] if(bsearch16u::result#0<=0) goto bsearch16u::@7 -- vwsz1_le_0_then_la1 
    lda.z result+1
    bmi __b7
    bne !+
    lda.z result
    beq __b7
  !:
    // bsearch16u::@9
    // items = pivot+1
    // [248] bsearch16u::items#0 = bsearch16u::pivot#0 + 1*SIZEOF_UNSIGNED_INT -- pwuz1=pwuz2_plus_vbuc1 
    lda #1*SIZEOF_UNSIGNED_INT
    clc
    adc.z pivot
    sta.z items
    lda #0
    adc.z pivot+1
    sta.z items+1
    // num--;
    // [249] bsearch16u::num#1 = -- bsearch16u::num#3 -- vbuxx=_dec_vbuxx 
    dex
    // [250] phi from bsearch16u::@6 bsearch16u::@9 to bsearch16u::@7 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7]
    // [250] phi bsearch16u::items#8 = bsearch16u::items#2 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#0] -- register_copy 
    // [250] phi bsearch16u::num#5 = bsearch16u::num#3 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#1] -- register_copy 
    // bsearch16u::@7
  __b7:
    // num >>= 1
    // [251] bsearch16u::num#0 = bsearch16u::num#5 >> 1 -- vbuxx=vbuxx_ror_1 
    txa
    lsr
    tax
    // [234] phi from bsearch16u::@7 to bsearch16u::@3 [phi:bsearch16u::@7->bsearch16u::@3]
    // [234] phi bsearch16u::items#2 = bsearch16u::items#8 [phi:bsearch16u::@7->bsearch16u::@3#0] -- register_copy 
    // [234] phi bsearch16u::num#3 = bsearch16u::num#0 [phi:bsearch16u::@7->bsearch16u::@3#1] -- register_copy 
    jmp __b3
}
  // File Data
.segment Data
  // Angles representing ATAN(0.5), ATAN(0.25), ATAN(0.125), ...
CORDIC_ATAN2_ANGLES_16:
.for (var i=0; i<CORDIC_ITERATIONS_16; i++)
        .word 256*2*256*atan(1/pow(2,i))/PI/2

  .align $100
SINTABLE:
.for(var i=0;i<$200;i++)
        .byte round(127.5+127.5*sin(2*PI*i/256))


