Inlined call vicSelectGfxBank::$0 = call toDd00(vicSelectGfxBank::gfx)
Inlined call call __init
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 main::$8
Eliminating unused variable with no statement main::$11
Eliminating unused variable with no statement main::$16
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
Eliminating unused variable with no statement __start::__init1_$2
Eliminating unused variable with no statement __start::__init1_$3
Eliminating unused variable with no statement __start::__init1_$4

CONTROL FLOW GRAPH SSA

void * malloc(unsigned int size)
malloc: scope:[malloc]  from __start::@2 __start::@3 __start::@4 __start::@5 __start::__init1 init_buckets::@5 init_squares
  malloc::size#7 = phi( __start::@2/malloc::size#3, __start::@3/malloc::size#4, __start::@4/malloc::size#5, __start::@5/malloc::size#6, __start::__init1/malloc::size#2, init_buckets::@5/malloc::size#1, init_squares/malloc::size#0 )
  heap_head#19 = phi( __start::@2/heap_head#12, __start::@3/heap_head#13, __start::@4/heap_head#14, __start::@5/heap_head#15, __start::__init1/heap_head#11, init_buckets::@5/heap_head#37, init_squares/heap_head#38 )
  malloc::mem#0 = heap_head#19 - malloc::size#7
  heap_head#0 = malloc::mem#0
  malloc::return#0 = ((void *)) malloc::mem#0
  to:malloc::@return
malloc::@return: scope:[malloc]  from malloc
  heap_head#20 = phi( malloc/heap_head#0 )
  malloc::return#9 = phi( malloc/malloc::return#0 )
  malloc::return#1 = malloc::return#9
  heap_head#1 = heap_head#20
  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#38 = phi( init_dist_screen/heap_head#44 )
  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#21 = phi( init_squares/heap_head#1 )
  malloc::return#10 = phi( init_squares/malloc::return#2 )
  init_squares::$1 = malloc::return#10
  heap_head#2 = heap_head#21
  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#39 = phi( init_squares::@2/heap_head#47, 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#47 = phi( init_squares::@1/heap_head#39 )
  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#22 = phi( init_squares::@1/heap_head#39 )
  heap_head#3 = heap_head#22
  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 main()
main: scope:[main]  from __start::@1
  BUCKET_IDX#18 = phi( __start::@1/BUCKET_IDX#9 )
  BUCKETS#27 = phi( __start::@1/BUCKETS#13 )
  BUCKET_SIZES#21 = phi( __start::@1/BUCKET_SIZES#15 )
  SCREEN_ANGLE#5 = phi( __start::@1/SCREEN_ANGLE#8 )
  SQUARES#23 = phi( __start::@1/SQUARES#27 )
  heap_head#40 = phi( __start::@1/heap_head#46 )
  NUM_SQUARES#18 = phi( __start::@1/NUM_SQUARES#21 )
  SCREEN_DIST#2 = phi( __start::@1/SCREEN_DIST#5 )
  asm { sei  }
  init_dist_screen::screen#0 = SCREEN_DIST#2
  call init_dist_screen
  to:main::@17
main::@17: scope:[main]  from main
  BUCKET_IDX#17 = phi( main/BUCKET_IDX#18 )
  BUCKETS#24 = phi( main/BUCKETS#27 )
  BUCKET_SIZES#16 = phi( main/BUCKET_SIZES#21 )
  SCREEN_DIST#6 = phi( main/SCREEN_DIST#2 )
  SCREEN_ANGLE#2 = phi( main/SCREEN_ANGLE#5 )
  SQUARES#13 = phi( main/SQUARES#5 )
  heap_head#23 = phi( main/heap_head#10 )
  NUM_SQUARES#10 = phi( main/NUM_SQUARES#3 )
  NUM_SQUARES#0 = NUM_SQUARES#10
  heap_head#4 = heap_head#23
  SQUARES#2 = SQUARES#13
  init_angle_screen::screen#0 = SCREEN_ANGLE#2
  call init_angle_screen
  to:main::@18
main::@18: scope:[main]  from main::@17
  BUCKET_IDX#16 = phi( main::@17/BUCKET_IDX#17 )
  SCREEN_ANGLE#22 = phi( main::@17/SCREEN_ANGLE#2 )
  SQUARES#47 = phi( main::@17/SQUARES#2 )
  NUM_SQUARES#37 = phi( main::@17/NUM_SQUARES#0 )
  BUCKETS#20 = phi( main::@17/BUCKETS#24 )
  BUCKET_SIZES#14 = phi( main::@17/BUCKET_SIZES#16 )
  heap_head#41 = phi( main::@17/heap_head#4 )
  SCREEN_DIST#3 = phi( main::@17/SCREEN_DIST#6 )
  init_buckets::screen#0 = SCREEN_DIST#3
  call init_buckets
  to:main::@19
main::@19: scope:[main]  from main::@18
  SCREEN_ANGLE#21 = phi( main::@18/SCREEN_ANGLE#22 )
  SQUARES#40 = phi( main::@18/SQUARES#47 )
  NUM_SQUARES#30 = phi( main::@18/NUM_SQUARES#37 )
  BUCKET_SIZES#19 = phi( main::@18/BUCKET_SIZES#14 )
  BUCKETS#16 = phi( main::@18/BUCKETS#20 )
  heap_head#24 = phi( main::@18/heap_head#8 )
  heap_head#5 = heap_head#24
  main::bucket_idx#0 = 0
  to:main::@1
main::@1: scope:[main]  from main::@12 main::@13 main::@19
  SCREEN_ANGLE#18 = phi( main::@12/SCREEN_ANGLE#19, main::@13/SCREEN_ANGLE#20, main::@19/SCREEN_ANGLE#21 )
  SQUARES#29 = phi( main::@12/SQUARES#38, main::@13/SQUARES#39, main::@19/SQUARES#40 )
  heap_head#48 = phi( main::@12/heap_head#54, main::@13/heap_head#55, main::@19/heap_head#5 )
  NUM_SQUARES#22 = phi( main::@12/NUM_SQUARES#28, main::@13/NUM_SQUARES#29, main::@19/NUM_SQUARES#30 )
  BUCKET_SIZES#13 = phi( main::@12/BUCKET_SIZES#17, main::@13/BUCKET_SIZES#18, main::@19/BUCKET_SIZES#19 )
  BUCKETS#10 = phi( main::@12/BUCKETS#14, main::@13/BUCKETS#15, main::@19/BUCKETS#16 )
  main::bucket_idx#6 = phi( main::@12/main::bucket_idx#8, main::@13/main::bucket_idx#9, main::@19/main::bucket_idx#0 )
  if(true) goto main::@2
  to:main::@15
main::@2: scope:[main]  from main::@1 main::@2
  SCREEN_ANGLE#16 = phi( main::@1/SCREEN_ANGLE#18, main::@2/SCREEN_ANGLE#16 )
  SQUARES#51 = phi( main::@1/SQUARES#29, main::@2/SQUARES#51 )
  heap_head#67 = phi( main::@1/heap_head#48, main::@2/heap_head#67 )
  NUM_SQUARES#43 = phi( main::@1/NUM_SQUARES#22, main::@2/NUM_SQUARES#43 )
  BUCKET_SIZES#7 = phi( main::@1/BUCKET_SIZES#13, main::@2/BUCKET_SIZES#7 )
  BUCKETS#6 = phi( main::@1/BUCKETS#10, main::@2/BUCKETS#6 )
  main::bucket_idx#4 = phi( main::@1/main::bucket_idx#6, main::@2/main::bucket_idx#4 )
  main::$3 = *RASTER != $ff
  if(main::$3) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@2
  SCREEN_ANGLE#13 = phi( main::@2/SCREEN_ANGLE#16 )
  SQUARES#48 = phi( main::@2/SQUARES#51 )
  heap_head#61 = phi( main::@2/heap_head#67 )
  NUM_SQUARES#38 = phi( main::@2/NUM_SQUARES#43 )
  BUCKET_SIZES#2 = phi( main::@2/BUCKET_SIZES#7 )
  BUCKETS#2 = phi( main::@2/BUCKETS#6 )
  main::bucket_idx#2 = phi( main::@2/main::bucket_idx#4 )
  *BORDER_COLOR = ++ *BORDER_COLOR
  main::$23 = main::bucket_idx#2 * SIZEOF_POINTER
  main::bucket#0 = BUCKETS#2[main::$23]
  main::bucket_size#0 = BUCKET_SIZES#2[main::bucket_idx#2]
  main::$5 = main::bucket_size#0 > 0
  main::$6 = ! main::$5
  if(main::$6) goto main::@5
  to:main::@4
main::@5: scope:[main]  from main::@3 main::@8
  SCREEN_ANGLE#24 = phi( main::@3/SCREEN_ANGLE#13, main::@8/SCREEN_ANGLE#23 )
  BUCKET_SIZES#23 = phi( main::@3/BUCKET_SIZES#2, main::@8/BUCKET_SIZES#22 )
  BUCKETS#22 = phi( main::@3/BUCKETS#2, main::@8/BUCKETS#21 )
  SQUARES#41 = phi( main::@3/SQUARES#48, main::@8/SQUARES#49 )
  heap_head#56 = phi( main::@3/heap_head#61, main::@8/heap_head#62 )
  NUM_SQUARES#31 = phi( main::@3/NUM_SQUARES#38, main::@8/NUM_SQUARES#39 )
  main::bucket_idx#3 = phi( main::@3/main::bucket_idx#2, main::@8/main::bucket_idx#5 )
  main::bucket_idx#1 = ++ main::bucket_idx#3
  main::$18 = main::bucket_idx#1 == NUM_BUCKETS
  main::$19 = ! main::$18
  if(main::$19) goto main::@13
  to:main::@14
main::@4: scope:[main]  from main::@3
  BUCKET_SIZES#26 = phi( main::@3/BUCKET_SIZES#2 )
  BUCKETS#28 = phi( main::@3/BUCKETS#2 )
  SQUARES#54 = phi( main::@3/SQUARES#48 )
  heap_head#73 = phi( main::@3/heap_head#61 )
  NUM_SQUARES#48 = phi( main::@3/NUM_SQUARES#38 )
  main::bucket_idx#10 = phi( main::@3/main::bucket_idx#2 )
  SCREEN_ANGLE#10 = phi( main::@3/SCREEN_ANGLE#13 )
  main::bucket#3 = phi( main::@3/main::bucket#0 )
  main::bucket_size#2 = phi( main::@3/main::bucket_size#0 )
  main::min_angle#0 = $ff
  main::min_offset#0 = $ffff
  main::i#0 = 0
  to:main::@6
main::@6: scope:[main]  from main::@4 main::@9
  BUCKET_SIZES#25 = phi( main::@4/BUCKET_SIZES#26, main::@9/BUCKET_SIZES#27 )
  BUCKETS#25 = phi( main::@4/BUCKETS#28, main::@9/BUCKETS#29 )
  SQUARES#52 = phi( main::@4/SQUARES#54, main::@9/SQUARES#55 )
  heap_head#68 = phi( main::@4/heap_head#73, main::@9/heap_head#74 )
  NUM_SQUARES#44 = phi( main::@4/NUM_SQUARES#48, main::@9/NUM_SQUARES#49 )
  main::bucket_idx#7 = phi( main::@4/main::bucket_idx#10, main::@9/main::bucket_idx#11 )
  main::min_angle#4 = phi( main::@4/main::min_angle#0, main::@9/main::min_angle#5 )
  SCREEN_ANGLE#9 = phi( main::@4/SCREEN_ANGLE#10, main::@9/SCREEN_ANGLE#11 )
  main::min_offset#4 = phi( main::@4/main::min_offset#0, main::@9/main::min_offset#5 )
  main::bucket#2 = phi( main::@4/main::bucket#3, main::@9/main::bucket#4 )
  main::bucket_size#1 = phi( main::@4/main::bucket_size#2, main::@9/main::bucket_size#3 )
  main::i#2 = phi( main::@4/main::i#0, main::@9/main::i#1 )
  main::$7 = main::i#2 < main::bucket_size#1
  if(main::$7) goto main::@7
  to:main::@8
main::@7: scope:[main]  from main::@6
  BUCKET_SIZES#30 = phi( main::@6/BUCKET_SIZES#25 )
  BUCKETS#33 = phi( main::@6/BUCKETS#25 )
  SQUARES#59 = phi( main::@6/SQUARES#52 )
  heap_head#81 = phi( main::@6/heap_head#68 )
  NUM_SQUARES#54 = phi( main::@6/NUM_SQUARES#44 )
  main::bucket_idx#14 = phi( main::@6/main::bucket_idx#7 )
  main::min_offset#7 = phi( main::@6/main::min_offset#4 )
  main::bucket_size#6 = phi( main::@6/main::bucket_size#1 )
  main::min_angle#3 = phi( main::@6/main::min_angle#4 )
  SCREEN_ANGLE#6 = phi( main::@6/SCREEN_ANGLE#9 )
  main::bucket#1 = phi( main::@6/main::bucket#2 )
  main::i#3 = phi( main::@6/main::i#2 )
  main::$24 = main::i#3 * SIZEOF_UNSIGNED_INT
  main::offset#0 = main::bucket#1[main::$24]
  main::fill#0 = SCREEN_FILL + main::offset#0
  main::$9 = *main::fill#0 != FILL_CHAR
  main::$10 = ! main::$9
  if(main::$10) goto main::@9
  to:main::@10
main::@8: scope:[main]  from main::@6
  SCREEN_ANGLE#23 = phi( main::@6/SCREEN_ANGLE#9 )
  BUCKET_SIZES#22 = phi( main::@6/BUCKET_SIZES#25 )
  BUCKETS#21 = phi( main::@6/BUCKETS#25 )
  SQUARES#49 = phi( main::@6/SQUARES#52 )
  heap_head#62 = phi( main::@6/heap_head#68 )
  NUM_SQUARES#39 = phi( main::@6/NUM_SQUARES#44 )
  main::bucket_idx#5 = phi( main::@6/main::bucket_idx#7 )
  main::min_offset#2 = phi( main::@6/main::min_offset#4 )
  main::$14 = main::min_offset#2 != $ffff
  main::$15 = ! main::$14
  if(main::$15) goto main::@5
  to:main::@12
main::@9: scope:[main]  from main::@10 main::@11 main::@7
  BUCKET_SIZES#27 = phi( main::@10/BUCKET_SIZES#28, main::@11/BUCKET_SIZES#29, main::@7/BUCKET_SIZES#30 )
  BUCKETS#29 = phi( main::@10/BUCKETS#31, main::@11/BUCKETS#32, main::@7/BUCKETS#33 )
  SQUARES#55 = phi( main::@10/SQUARES#57, main::@11/SQUARES#58, main::@7/SQUARES#59 )
  heap_head#74 = phi( main::@10/heap_head#79, main::@11/heap_head#80, main::@7/heap_head#81 )
  NUM_SQUARES#49 = phi( main::@10/NUM_SQUARES#52, main::@11/NUM_SQUARES#53, main::@7/NUM_SQUARES#54 )
  main::bucket_idx#11 = phi( main::@10/main::bucket_idx#12, main::@11/main::bucket_idx#13, main::@7/main::bucket_idx#14 )
  main::min_angle#5 = phi( main::@10/main::min_angle#2, main::@11/main::min_angle#1, main::@7/main::min_angle#3 )
  SCREEN_ANGLE#11 = phi( main::@10/SCREEN_ANGLE#3, main::@11/SCREEN_ANGLE#14, main::@7/SCREEN_ANGLE#6 )
  main::min_offset#5 = phi( main::@10/main::min_offset#6, main::@11/main::min_offset#1, main::@7/main::min_offset#7 )
  main::bucket#4 = phi( main::@10/main::bucket#5, main::@11/main::bucket#6, main::@7/main::bucket#1 )
  main::bucket_size#3 = phi( main::@10/main::bucket_size#4, main::@11/main::bucket_size#5, main::@7/main::bucket_size#6 )
  main::i#4 = phi( main::@10/main::i#5, main::@11/main::i#6, main::@7/main::i#3 )
  main::i#1 = ++ main::i#4
  to:main::@6
main::@10: scope:[main]  from main::@7
  BUCKET_SIZES#28 = phi( main::@7/BUCKET_SIZES#30 )
  BUCKETS#31 = phi( main::@7/BUCKETS#33 )
  SQUARES#57 = phi( main::@7/SQUARES#59 )
  heap_head#79 = phi( main::@7/heap_head#81 )
  NUM_SQUARES#52 = phi( main::@7/NUM_SQUARES#54 )
  main::bucket_idx#12 = phi( main::@7/main::bucket_idx#14 )
  main::min_offset#6 = phi( main::@7/main::min_offset#7 )
  main::bucket#5 = phi( main::@7/main::bucket#1 )
  main::bucket_size#4 = phi( main::@7/main::bucket_size#6 )
  main::i#5 = phi( main::@7/main::i#3 )
  main::min_angle#2 = phi( main::@7/main::min_angle#3 )
  main::offset#1 = phi( main::@7/main::offset#0 )
  SCREEN_ANGLE#3 = phi( main::@7/SCREEN_ANGLE#6 )
  main::angle#0 = SCREEN_ANGLE#3 + main::offset#1
  main::$12 = *main::angle#0 <= main::min_angle#2
  main::$13 = ! main::$12
  if(main::$13) goto main::@9
  to:main::@11
main::@11: scope:[main]  from main::@10
  BUCKET_SIZES#29 = phi( main::@10/BUCKET_SIZES#28 )
  BUCKETS#32 = phi( main::@10/BUCKETS#31 )
  SQUARES#58 = phi( main::@10/SQUARES#57 )
  heap_head#80 = phi( main::@10/heap_head#79 )
  NUM_SQUARES#53 = phi( main::@10/NUM_SQUARES#52 )
  main::bucket_idx#13 = phi( main::@10/main::bucket_idx#12 )
  SCREEN_ANGLE#14 = phi( main::@10/SCREEN_ANGLE#3 )
  main::bucket#6 = phi( main::@10/main::bucket#5 )
  main::bucket_size#5 = phi( main::@10/main::bucket_size#4 )
  main::i#6 = phi( main::@10/main::i#5 )
  main::offset#2 = phi( main::@10/main::offset#1 )
  main::angle#1 = phi( main::@10/main::angle#0 )
  main::min_angle#1 = *main::angle#1
  main::min_offset#1 = main::offset#2
  to:main::@9
main::@12: scope:[main]  from main::@8
  SCREEN_ANGLE#19 = phi( main::@8/SCREEN_ANGLE#23 )
  SQUARES#38 = phi( main::@8/SQUARES#49 )
  heap_head#54 = phi( main::@8/heap_head#62 )
  NUM_SQUARES#28 = phi( main::@8/NUM_SQUARES#39 )
  BUCKET_SIZES#17 = phi( main::@8/BUCKET_SIZES#22 )
  BUCKETS#14 = phi( main::@8/BUCKETS#21 )
  main::bucket_idx#8 = phi( main::@8/main::bucket_idx#5 )
  main::min_offset#3 = phi( main::@8/main::min_offset#2 )
  main::fill1#0 = SCREEN_FILL + main::min_offset#3
  *main::fill1#0 = FILL_CHAR
  *BORDER_COLOR = -- *BORDER_COLOR
  to:main::@1
main::@13: scope:[main]  from main::@5
  SCREEN_ANGLE#20 = phi( main::@5/SCREEN_ANGLE#24 )
  SQUARES#39 = phi( main::@5/SQUARES#41 )
  heap_head#55 = phi( main::@5/heap_head#56 )
  NUM_SQUARES#29 = phi( main::@5/NUM_SQUARES#31 )
  BUCKET_SIZES#18 = phi( main::@5/BUCKET_SIZES#23 )
  BUCKETS#15 = phi( main::@5/BUCKETS#22 )
  main::bucket_idx#9 = phi( main::@5/main::bucket_idx#1 )
  *BORDER_COLOR = -- *BORDER_COLOR
  to:main::@1
main::@14: scope:[main]  from main::@5
  SQUARES#30 = phi( main::@5/SQUARES#41 )
  heap_head#49 = phi( main::@5/heap_head#56 )
  NUM_SQUARES#23 = phi( main::@5/NUM_SQUARES#31 )
  *BORDER_COLOR = -- *BORDER_COLOR
  to:main::@15
main::@15: scope:[main]  from main::@1 main::@14 main::@16
  SQUARES#24 = phi( main::@1/SQUARES#29, main::@14/SQUARES#30, main::@16/SQUARES#31 )
  heap_head#42 = phi( main::@1/heap_head#48, main::@14/heap_head#49, main::@16/heap_head#50 )
  NUM_SQUARES#19 = phi( main::@1/NUM_SQUARES#22, main::@14/NUM_SQUARES#23, main::@16/NUM_SQUARES#24 )
  if(true) goto main::@16
  to:main::@return
main::@16: scope:[main]  from main::@15
  SQUARES#31 = phi( main::@15/SQUARES#24 )
  heap_head#50 = phi( main::@15/heap_head#42 )
  NUM_SQUARES#24 = phi( main::@15/NUM_SQUARES#19 )
  *(COLS+$3e7) = ++ *(COLS+$3e7)
  to:main::@15
main::@return: scope:[main]  from main::@15
  SQUARES#14 = phi( main::@15/SQUARES#24 )
  heap_head#25 = phi( main::@15/heap_head#42 )
  NUM_SQUARES#11 = phi( main::@15/NUM_SQUARES#19 )
  NUM_SQUARES#1 = NUM_SQUARES#11
  heap_head#6 = heap_head#25
  SQUARES#3 = SQUARES#14
  return 
  to:@return

void init_buckets(char *screen)
init_buckets: scope:[init_buckets]  from main::@18
  BUCKET_IDX#15 = phi( main::@18/BUCKET_IDX#16 )
  BUCKETS#30 = phi( main::@18/BUCKETS#20 )
  heap_head#75 = phi( main::@18/heap_head#41 )
  init_buckets::screen#6 = phi( main::@18/init_buckets::screen#0 )
  BUCKET_SIZES#8 = phi( main::@18/BUCKET_SIZES#14 )
  init_buckets::i#0 = 0
  to:init_buckets::@1
init_buckets::@1: scope:[init_buckets]  from init_buckets init_buckets::@1
  BUCKET_IDX#14 = phi( init_buckets/BUCKET_IDX#15, init_buckets::@1/BUCKET_IDX#14 )
  BUCKETS#26 = phi( init_buckets/BUCKETS#30, init_buckets::@1/BUCKETS#26 )
  heap_head#69 = phi( init_buckets/heap_head#75, init_buckets::@1/heap_head#69 )
  init_buckets::screen#4 = phi( init_buckets/init_buckets::screen#6, init_buckets::@1/init_buckets::screen#4 )
  init_buckets::i#2 = phi( init_buckets/init_buckets::i#0, init_buckets::@1/init_buckets::i#1 )
  BUCKET_SIZES#3 = phi( init_buckets/BUCKET_SIZES#8, init_buckets::@1/BUCKET_SIZES#3 )
  BUCKET_SIZES#3[init_buckets::i#2] = 0
  init_buckets::i#1 = init_buckets::i#2 + rangenext(0,NUM_BUCKETS-1)
  init_buckets::$0 = init_buckets::i#1 != rangelast(0,NUM_BUCKETS-1)
  if(init_buckets::$0) goto init_buckets::@1
  to:init_buckets::@2
init_buckets::@2: scope:[init_buckets]  from init_buckets::@1
  BUCKET_IDX#13 = phi( init_buckets::@1/BUCKET_IDX#14 )
  BUCKETS#23 = phi( init_buckets::@1/BUCKETS#26 )
  heap_head#63 = phi( init_buckets::@1/heap_head#69 )
  BUCKET_SIZES#9 = phi( init_buckets::@1/BUCKET_SIZES#3 )
  init_buckets::screen#1 = phi( init_buckets::@1/init_buckets::screen#4 )
  init_buckets::dist#0 = init_buckets::screen#1
  init_buckets::i1#0 = 0
  to:init_buckets::@3
init_buckets::@3: scope:[init_buckets]  from init_buckets::@2 init_buckets::@3
  init_buckets::screen#11 = phi( init_buckets::@2/init_buckets::screen#1, init_buckets::@3/init_buckets::screen#11 )
  BUCKET_IDX#12 = phi( init_buckets::@2/BUCKET_IDX#13, init_buckets::@3/BUCKET_IDX#12 )
  BUCKETS#17 = phi( init_buckets::@2/BUCKETS#23, init_buckets::@3/BUCKETS#17 )
  heap_head#57 = phi( init_buckets::@2/heap_head#63, init_buckets::@3/heap_head#57 )
  init_buckets::i1#2 = phi( init_buckets::@2/init_buckets::i1#0, init_buckets::@3/init_buckets::i1#1 )
  init_buckets::dist#4 = phi( init_buckets::@2/init_buckets::dist#0, init_buckets::@3/init_buckets::dist#1 )
  BUCKET_SIZES#4 = phi( init_buckets::@2/BUCKET_SIZES#9, init_buckets::@3/BUCKET_SIZES#4 )
  BUCKET_SIZES#4[*init_buckets::dist#4] = ++ BUCKET_SIZES#4[*init_buckets::dist#4]
  init_buckets::dist#1 = ++ init_buckets::dist#4
  init_buckets::i1#1 = init_buckets::i1#2 + rangenext(0,$3e7)
  init_buckets::$2 = init_buckets::i1#1 != rangelast(0,$3e7)
  if(init_buckets::$2) goto init_buckets::@3
  to:init_buckets::@4
init_buckets::@4: scope:[init_buckets]  from init_buckets::@3
  init_buckets::screen#10 = phi( init_buckets::@3/init_buckets::screen#11 )
  BUCKET_IDX#11 = phi( init_buckets::@3/BUCKET_IDX#12 )
  BUCKETS#11 = phi( init_buckets::@3/BUCKETS#17 )
  heap_head#51 = phi( init_buckets::@3/heap_head#57 )
  BUCKET_SIZES#11 = phi( init_buckets::@3/BUCKET_SIZES#4 )
  init_buckets::i2#0 = 0
  to:init_buckets::@5
init_buckets::@5: scope:[init_buckets]  from init_buckets::@10 init_buckets::@4
  init_buckets::screen#9 = phi( init_buckets::@10/init_buckets::screen#8, init_buckets::@4/init_buckets::screen#10 )
  BUCKET_IDX#10 = phi( init_buckets::@10/BUCKET_IDX#8, init_buckets::@4/BUCKET_IDX#11 )
  BUCKETS#7 = phi( init_buckets::@10/BUCKETS#3, init_buckets::@4/BUCKETS#11 )
  heap_head#37 = phi( init_buckets::@10/heap_head#7, init_buckets::@4/heap_head#51 )
  init_buckets::i2#2 = phi( init_buckets::@10/init_buckets::i2#1, init_buckets::@4/init_buckets::i2#0 )
  BUCKET_SIZES#5 = phi( init_buckets::@10/BUCKET_SIZES#10, init_buckets::@4/BUCKET_SIZES#11 )
  init_buckets::$3 = BUCKET_SIZES#5[init_buckets::i2#2] * SIZEOF_POINTER
  malloc::size#1 = init_buckets::$3
  call malloc
  malloc::return#3 = malloc::return#1
  to:init_buckets::@10
init_buckets::@10: scope:[init_buckets]  from init_buckets::@5
  init_buckets::screen#8 = phi( init_buckets::@5/init_buckets::screen#9 )
  BUCKET_IDX#8 = phi( init_buckets::@5/BUCKET_IDX#10 )
  BUCKET_SIZES#10 = phi( init_buckets::@5/BUCKET_SIZES#5 )
  BUCKETS#3 = phi( init_buckets::@5/BUCKETS#7 )
  init_buckets::i2#3 = phi( init_buckets::@5/init_buckets::i2#2 )
  heap_head#26 = phi( init_buckets::@5/heap_head#1 )
  malloc::return#11 = phi( init_buckets::@5/malloc::return#3 )
  init_buckets::$4 = malloc::return#11
  heap_head#7 = heap_head#26
  init_buckets::$11 = init_buckets::i2#3 * SIZEOF_POINTER
  BUCKETS#3[init_buckets::$11] = ((unsigned int *)) init_buckets::$4
  init_buckets::i2#1 = init_buckets::i2#3 + rangenext(0,NUM_BUCKETS-1)
  init_buckets::$5 = init_buckets::i2#1 != rangelast(0,NUM_BUCKETS-1)
  if(init_buckets::$5) goto init_buckets::@5
  to:init_buckets::@6
init_buckets::@6: scope:[init_buckets]  from init_buckets::@10
  heap_head#64 = phi( init_buckets::@10/heap_head#7 )
  BUCKETS#18 = phi( init_buckets::@10/BUCKETS#3 )
  init_buckets::screen#7 = phi( init_buckets::@10/init_buckets::screen#8 )
  BUCKET_IDX#5 = phi( init_buckets::@10/BUCKET_IDX#8 )
  init_buckets::i3#0 = 0
  to:init_buckets::@7
init_buckets::@7: scope:[init_buckets]  from init_buckets::@6 init_buckets::@7
  heap_head#58 = phi( init_buckets::@6/heap_head#64, init_buckets::@7/heap_head#58 )
  BUCKETS#12 = phi( init_buckets::@6/BUCKETS#18, init_buckets::@7/BUCKETS#12 )
  init_buckets::screen#5 = phi( init_buckets::@6/init_buckets::screen#7, init_buckets::@7/init_buckets::screen#5 )
  init_buckets::i3#2 = phi( init_buckets::@6/init_buckets::i3#0, init_buckets::@7/init_buckets::i3#1 )
  BUCKET_IDX#2 = phi( init_buckets::@6/BUCKET_IDX#5, init_buckets::@7/BUCKET_IDX#2 )
  BUCKET_IDX#2[init_buckets::i3#2] = 0
  init_buckets::i3#1 = init_buckets::i3#2 + rangenext(0,NUM_BUCKETS-1)
  init_buckets::$6 = init_buckets::i3#1 != rangelast(0,NUM_BUCKETS-1)
  if(init_buckets::$6) goto init_buckets::@7
  to:init_buckets::@8
init_buckets::@8: scope:[init_buckets]  from init_buckets::@7
  heap_head#52 = phi( init_buckets::@7/heap_head#58 )
  BUCKET_IDX#6 = phi( init_buckets::@7/BUCKET_IDX#2 )
  BUCKETS#8 = phi( init_buckets::@7/BUCKETS#12 )
  init_buckets::screen#2 = phi( init_buckets::@7/init_buckets::screen#5 )
  init_buckets::dist#2 = init_buckets::screen#2
  init_buckets::i4#0 = 0
  to:init_buckets::@9
init_buckets::@9: scope:[init_buckets]  from init_buckets::@8 init_buckets::@9
  heap_head#43 = phi( init_buckets::@8/heap_head#52, init_buckets::@9/heap_head#43 )
  init_buckets::i4#2 = phi( init_buckets::@8/init_buckets::i4#0, init_buckets::@9/init_buckets::i4#1 )
  BUCKET_IDX#3 = phi( init_buckets::@8/BUCKET_IDX#6, init_buckets::@9/BUCKET_IDX#3 )
  init_buckets::screen#3 = phi( init_buckets::@8/init_buckets::screen#2, init_buckets::@9/init_buckets::screen#3 )
  BUCKETS#4 = phi( init_buckets::@8/BUCKETS#8, init_buckets::@9/BUCKETS#4 )
  init_buckets::dist#5 = phi( init_buckets::@8/init_buckets::dist#2, init_buckets::@9/init_buckets::dist#3 )
  init_buckets::distance#0 = *init_buckets::dist#5
  init_buckets::$14 = (unsigned int)init_buckets::distance#0
  init_buckets::$12 = init_buckets::$14 * SIZEOF_POINTER
  init_buckets::bucket#0 = BUCKETS#4[init_buckets::$12]
  init_buckets::$7 = init_buckets::dist#5 - init_buckets::screen#3
  init_buckets::$13 = BUCKET_IDX#3[init_buckets::distance#0] * SIZEOF_UNSIGNED_INT
  init_buckets::bucket#0[init_buckets::$13] = init_buckets::$7
  BUCKET_IDX#3[init_buckets::distance#0] = ++ BUCKET_IDX#3[init_buckets::distance#0]
  init_buckets::dist#3 = ++ init_buckets::dist#5
  init_buckets::i4#1 = init_buckets::i4#2 + rangenext(0,$3e7)
  init_buckets::$10 = init_buckets::i4#1 != rangelast(0,$3e7)
  if(init_buckets::$10) goto init_buckets::@9
  to:init_buckets::@return
init_buckets::@return: scope:[init_buckets]  from init_buckets::@9
  heap_head#27 = phi( init_buckets::@9/heap_head#43 )
  heap_head#8 = heap_head#27
  return 
  to:@return

void init_angle_screen(char *screen)
init_angle_screen: scope:[init_angle_screen]  from main::@17
  init_angle_screen::screen#1 = phi( main::@17/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#44 = phi( main/heap_head#40 )
  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#55 = 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#28 = phi( init_dist_screen/heap_head#3 )
  heap_head#9 = heap_head#28
  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#76 = phi( init_dist_screen::@11/heap_head#9, init_dist_screen::@7/heap_head#45 )
  NUM_SQUARES#50 = phi( init_dist_screen::@11/NUM_SQUARES#55, 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#42 = 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#70 = phi( init_dist_screen::@1/heap_head#76 )
  NUM_SQUARES#45 = phi( init_dist_screen::@1/NUM_SQUARES#50 )
  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#32 = phi( init_dist_screen::@1/SQUARES#42 )
  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#71 = phi( init_dist_screen::@1/heap_head#76 )
  NUM_SQUARES#46 = phi( init_dist_screen::@1/NUM_SQUARES#50 )
  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#33 = phi( init_dist_screen::@1/SQUARES#42 )
  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#65 = phi( init_dist_screen::@2/heap_head#70, init_dist_screen::@3/heap_head#71 )
  NUM_SQUARES#40 = phi( init_dist_screen::@2/NUM_SQUARES#45, init_dist_screen::@3/NUM_SQUARES#46 )
  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#32, init_dist_screen::@3/SQUARES#33 )
  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#43 = phi( init_dist_screen::@4/SQUARES#21 )
  heap_head#59 = phi( init_dist_screen::@4/heap_head#65 )
  NUM_SQUARES#32 = phi( init_dist_screen::@4/NUM_SQUARES#40 )
  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#34 = phi( init_dist_screen::@12/SQUARES#43, init_dist_screen::@14/SQUARES#44 )
  heap_head#53 = phi( init_dist_screen::@12/heap_head#59, init_dist_screen::@14/heap_head#60 )
  NUM_SQUARES#25 = phi( init_dist_screen::@12/NUM_SQUARES#32, init_dist_screen::@14/NUM_SQUARES#33 )
  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#82 = phi( init_dist_screen::@5/heap_head#53 )
  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#41 = phi( init_dist_screen::@5/NUM_SQUARES#25 )
  init_dist_screen::yds#5 = phi( init_dist_screen::@5/init_dist_screen::yds#6 )
  SQUARES#45 = phi( init_dist_screen::@5/SQUARES#34 )
  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#34 )
  heap_head#45 = phi( init_dist_screen::@5/heap_head#53 )
  NUM_SQUARES#20 = phi( init_dist_screen::@5/NUM_SQUARES#25 )
  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#77 = phi( init_dist_screen::@6/heap_head#82 )
  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#34 = phi( init_dist_screen::@6/NUM_SQUARES#41 )
  init_dist_screen::yds#3 = phi( init_dist_screen::@6/init_dist_screen::yds#5 )
  SQUARES#35 = phi( init_dist_screen::@6/SQUARES#45 )
  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#78 = phi( init_dist_screen::@6/heap_head#82 )
  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#35 = phi( init_dist_screen::@6/NUM_SQUARES#41 )
  init_dist_screen::yds#4 = phi( init_dist_screen::@6/init_dist_screen::yds#5 )
  SQUARES#36 = phi( init_dist_screen::@6/SQUARES#45 )
  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#72 = phi( init_dist_screen::@8/heap_head#77, init_dist_screen::@9/heap_head#78 )
  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#26 = phi( init_dist_screen::@8/NUM_SQUARES#34, init_dist_screen::@9/NUM_SQUARES#35 )
  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#35, init_dist_screen::@9/SQUARES#36 )
  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#66 = phi( init_dist_screen::@10/heap_head#72 )
  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#26 )
  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#44 = phi( init_dist_screen::@13/SQUARES#22 )
  heap_head#60 = phi( init_dist_screen::@13/heap_head#66 )
  NUM_SQUARES#33 = 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#29 = phi( init_dist_screen::@7/heap_head#45 )
  NUM_SQUARES#12 = phi( init_dist_screen::@7/NUM_SQUARES#20 )
  NUM_SQUARES#3 = NUM_SQUARES#12
  heap_head#10 = heap_head#29
  SQUARES#5 = SQUARES#16
  return 
  to:@return

void __start()
__start: scope:[__start]  from
  to:__start::__init1
__start::__init1: scope:[__start]  from __start
  heap_head#11 = HEAP_TOP
  NUM_SQUARES#4 = $ff
  SQUARES#6 = (unsigned int *) 0
  malloc::size#2 = $3e8
  call malloc
  malloc::return#4 = malloc::return#1
  to:__start::@2
__start::@2: scope:[__start]  from __start::__init1
  SQUARES#56 = phi( __start::__init1/SQUARES#6 )
  NUM_SQUARES#51 = phi( __start::__init1/NUM_SQUARES#4 )
  heap_head#30 = phi( __start::__init1/heap_head#1 )
  malloc::return#12 = phi( __start::__init1/malloc::return#4 )
  SCREEN_DIST#0 = ((char *)) malloc::return#12
  heap_head#12 = heap_head#30
  malloc::size#3 = $3e8
  call malloc
  malloc::return#5 = malloc::return#1
  to:__start::@3
__start::@3: scope:[__start]  from __start::@2
  SQUARES#53 = phi( __start::@2/SQUARES#56 )
  NUM_SQUARES#47 = phi( __start::@2/NUM_SQUARES#51 )
  SCREEN_DIST#11 = phi( __start::@2/SCREEN_DIST#0 )
  heap_head#31 = phi( __start::@2/heap_head#1 )
  malloc::return#13 = phi( __start::@2/malloc::return#5 )
  SCREEN_ANGLE#0 = ((char *)) malloc::return#13
  heap_head#13 = heap_head#31
  malloc::size#4 = NUM_BUCKETS*SIZEOF_CHAR
  call malloc
  malloc::return#6 = malloc::return#1
  to:__start::@4
__start::@4: scope:[__start]  from __start::@3
  SCREEN_ANGLE#17 = phi( __start::@3/SCREEN_ANGLE#0 )
  SQUARES#50 = phi( __start::@3/SQUARES#53 )
  NUM_SQUARES#42 = phi( __start::@3/NUM_SQUARES#47 )
  SCREEN_DIST#10 = phi( __start::@3/SCREEN_DIST#11 )
  heap_head#32 = phi( __start::@3/heap_head#1 )
  malloc::return#14 = phi( __start::@3/malloc::return#6 )
  BUCKET_SIZES#0 = ((char *)) malloc::return#14
  heap_head#14 = heap_head#32
  malloc::size#5 = NUM_BUCKETS*SIZEOF_POINTER
  call malloc
  malloc::return#7 = malloc::return#1
  to:__start::@5
__start::@5: scope:[__start]  from __start::@4
  BUCKET_SIZES#24 = phi( __start::@4/BUCKET_SIZES#0 )
  SCREEN_ANGLE#15 = phi( __start::@4/SCREEN_ANGLE#17 )
  SQUARES#46 = phi( __start::@4/SQUARES#50 )
  NUM_SQUARES#36 = phi( __start::@4/NUM_SQUARES#42 )
  SCREEN_DIST#9 = phi( __start::@4/SCREEN_DIST#10 )
  heap_head#33 = phi( __start::@4/heap_head#1 )
  malloc::return#15 = phi( __start::@4/malloc::return#7 )
  BUCKETS#0 = ((unsigned int **)) malloc::return#15
  heap_head#15 = heap_head#33
  malloc::size#6 = NUM_BUCKETS*SIZEOF_CHAR
  call malloc
  malloc::return#8 = malloc::return#1
  to:__start::@6
__start::@6: scope:[__start]  from __start::@5
  BUCKETS#19 = phi( __start::@5/BUCKETS#0 )
  BUCKET_SIZES#20 = phi( __start::@5/BUCKET_SIZES#24 )
  SCREEN_ANGLE#12 = phi( __start::@5/SCREEN_ANGLE#15 )
  SQUARES#37 = phi( __start::@5/SQUARES#46 )
  NUM_SQUARES#27 = phi( __start::@5/NUM_SQUARES#36 )
  SCREEN_DIST#8 = phi( __start::@5/SCREEN_DIST#9 )
  heap_head#34 = phi( __start::@5/heap_head#1 )
  malloc::return#16 = phi( __start::@5/malloc::return#8 )
  BUCKET_IDX#0 = ((char *)) malloc::return#16
  heap_head#16 = heap_head#34
  to:__start::@1
__start::@1: scope:[__start]  from __start::@6
  BUCKET_IDX#9 = phi( __start::@6/BUCKET_IDX#0 )
  BUCKETS#13 = phi( __start::@6/BUCKETS#19 )
  BUCKET_SIZES#15 = phi( __start::@6/BUCKET_SIZES#20 )
  SCREEN_ANGLE#8 = phi( __start::@6/SCREEN_ANGLE#12 )
  SQUARES#27 = phi( __start::@6/SQUARES#37 )
  heap_head#46 = phi( __start::@6/heap_head#16 )
  NUM_SQUARES#21 = phi( __start::@6/NUM_SQUARES#27 )
  SCREEN_DIST#5 = phi( __start::@6/SCREEN_DIST#8 )
  call main
  to:__start::@7
__start::@7: scope:[__start]  from __start::@1
  BUCKET_IDX#7 = phi( __start::@1/BUCKET_IDX#9 )
  BUCKETS#9 = phi( __start::@1/BUCKETS#13 )
  BUCKET_SIZES#12 = phi( __start::@1/BUCKET_SIZES#15 )
  SCREEN_ANGLE#7 = phi( __start::@1/SCREEN_ANGLE#8 )
  SCREEN_DIST#7 = phi( __start::@1/SCREEN_DIST#5 )
  SQUARES#17 = phi( __start::@1/SQUARES#3 )
  heap_head#35 = phi( __start::@1/heap_head#6 )
  NUM_SQUARES#13 = phi( __start::@1/NUM_SQUARES#1 )
  NUM_SQUARES#5 = NUM_SQUARES#13
  heap_head#17 = heap_head#35
  SQUARES#7 = SQUARES#17
  to:__start::@return
__start::@return: scope:[__start]  from __start::@7
  BUCKET_IDX#4 = phi( __start::@7/BUCKET_IDX#7 )
  BUCKETS#5 = phi( __start::@7/BUCKETS#9 )
  BUCKET_SIZES#6 = phi( __start::@7/BUCKET_SIZES#12 )
  SCREEN_ANGLE#4 = phi( __start::@7/SCREEN_ANGLE#7 )
  SCREEN_DIST#4 = phi( __start::@7/SCREEN_DIST#7 )
  SQUARES#18 = phi( __start::@7/SQUARES#7 )
  NUM_SQUARES#14 = phi( __start::@7/NUM_SQUARES#5 )
  heap_head#36 = phi( __start::@7/heap_head#17 )
  heap_head#18 = heap_head#36
  NUM_SQUARES#6 = NUM_SQUARES#14
  SQUARES#8 = SQUARES#18
  SCREEN_DIST#1 = SCREEN_DIST#4
  SCREEN_ANGLE#1 = SCREEN_ANGLE#4
  BUCKET_SIZES#1 = BUCKET_SIZES#6
  BUCKETS#1 = BUCKETS#5
  BUCKET_IDX#1 = BUCKET_IDX#4
  return 
  to:@return

SYMBOL TABLE SSA
__constant char * const BORDER_COLOR = (char *)$d020
unsigned int **BUCKETS
unsigned int **BUCKETS#0
unsigned int **BUCKETS#1
unsigned int **BUCKETS#10
unsigned int **BUCKETS#11
unsigned int **BUCKETS#12
unsigned int **BUCKETS#13
unsigned int **BUCKETS#14
unsigned int **BUCKETS#15
unsigned int **BUCKETS#16
unsigned int **BUCKETS#17
unsigned int **BUCKETS#18
unsigned int **BUCKETS#19
unsigned int **BUCKETS#2
unsigned int **BUCKETS#20
unsigned int **BUCKETS#21
unsigned int **BUCKETS#22
unsigned int **BUCKETS#23
unsigned int **BUCKETS#24
unsigned int **BUCKETS#25
unsigned int **BUCKETS#26
unsigned int **BUCKETS#27
unsigned int **BUCKETS#28
unsigned int **BUCKETS#29
unsigned int **BUCKETS#3
unsigned int **BUCKETS#30
unsigned int **BUCKETS#31
unsigned int **BUCKETS#32
unsigned int **BUCKETS#33
unsigned int **BUCKETS#4
unsigned int **BUCKETS#5
unsigned int **BUCKETS#6
unsigned int **BUCKETS#7
unsigned int **BUCKETS#8
unsigned int **BUCKETS#9
char *BUCKET_IDX
char *BUCKET_IDX#0
char *BUCKET_IDX#1
char *BUCKET_IDX#10
char *BUCKET_IDX#11
char *BUCKET_IDX#12
char *BUCKET_IDX#13
char *BUCKET_IDX#14
char *BUCKET_IDX#15
char *BUCKET_IDX#16
char *BUCKET_IDX#17
char *BUCKET_IDX#18
char *BUCKET_IDX#2
char *BUCKET_IDX#3
char *BUCKET_IDX#4
char *BUCKET_IDX#5
char *BUCKET_IDX#6
char *BUCKET_IDX#7
char *BUCKET_IDX#8
char *BUCKET_IDX#9
char *BUCKET_SIZES
char *BUCKET_SIZES#0
char *BUCKET_SIZES#1
char *BUCKET_SIZES#10
char *BUCKET_SIZES#11
char *BUCKET_SIZES#12
char *BUCKET_SIZES#13
char *BUCKET_SIZES#14
char *BUCKET_SIZES#15
char *BUCKET_SIZES#16
char *BUCKET_SIZES#17
char *BUCKET_SIZES#18
char *BUCKET_SIZES#19
char *BUCKET_SIZES#2
char *BUCKET_SIZES#20
char *BUCKET_SIZES#21
char *BUCKET_SIZES#22
char *BUCKET_SIZES#23
char *BUCKET_SIZES#24
char *BUCKET_SIZES#25
char *BUCKET_SIZES#26
char *BUCKET_SIZES#27
char *BUCKET_SIZES#28
char *BUCKET_SIZES#29
char *BUCKET_SIZES#3
char *BUCKET_SIZES#30
char *BUCKET_SIZES#4
char *BUCKET_SIZES#5
char *BUCKET_SIZES#6
char *BUCKET_SIZES#7
char *BUCKET_SIZES#8
char *BUCKET_SIZES#9
__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 const char FILL_CHAR = '*'
__constant char *HEAP_TOP = (char *)$a000
__constant const char NUM_BUCKETS = $30
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#48
char NUM_SQUARES#49
char NUM_SQUARES#5
char NUM_SQUARES#50
char NUM_SQUARES#51
char NUM_SQUARES#52
char NUM_SQUARES#53
char NUM_SQUARES#54
char NUM_SQUARES#55
char NUM_SQUARES#6
char NUM_SQUARES#7
char NUM_SQUARES#8
char NUM_SQUARES#9
__constant char RADIX::BINARY = 2
__constant char RADIX::DECIMAL = $a
__constant char RADIX::HEXADECIMAL = $10
__constant char RADIX::OCTAL = 8
__constant char * const RASTER = (char *)$d012
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#21
char *SCREEN_ANGLE#22
char *SCREEN_ANGLE#23
char *SCREEN_ANGLE#24
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#2
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 char * const SCREEN_FILL = (char *)$400
__constant char SIZEOF_CHAR = 1
__constant char SIZEOF_POINTER = 2
__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#52
unsigned int *SQUARES#53
unsigned int *SQUARES#54
unsigned int *SQUARES#55
unsigned int *SQUARES#56
unsigned int *SQUARES#57
unsigned int *SQUARES#58
unsigned int *SQUARES#59
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
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#57
char *heap_head#58
char *heap_head#59
char *heap_head#6
char *heap_head#60
char *heap_head#61
char *heap_head#62
char *heap_head#63
char *heap_head#64
char *heap_head#65
char *heap_head#66
char *heap_head#67
char *heap_head#68
char *heap_head#69
char *heap_head#7
char *heap_head#70
char *heap_head#71
char *heap_head#72
char *heap_head#73
char *heap_head#74
char *heap_head#75
char *heap_head#76
char *heap_head#77
char *heap_head#78
char *heap_head#79
char *heap_head#8
char *heap_head#80
char *heap_head#81
char *heap_head#82
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_buckets(char *screen)
bool init_buckets::$0
bool init_buckets::$10
unsigned int init_buckets::$11
unsigned int init_buckets::$12
char init_buckets::$13
unsigned int init_buckets::$14
bool init_buckets::$2
char init_buckets::$3
void *init_buckets::$4
bool init_buckets::$5
bool init_buckets::$6
unsigned int init_buckets::$7
unsigned int *init_buckets::bucket
unsigned int *init_buckets::bucket#0
char *init_buckets::dist
char *init_buckets::dist#0
char *init_buckets::dist#1
char *init_buckets::dist#2
char *init_buckets::dist#3
char *init_buckets::dist#4
char *init_buckets::dist#5
char init_buckets::distance
char init_buckets::distance#0
char init_buckets::i
char init_buckets::i#0
char init_buckets::i#1
char init_buckets::i#2
unsigned int init_buckets::i1
unsigned int init_buckets::i1#0
unsigned int init_buckets::i1#1
unsigned int init_buckets::i1#2
unsigned int init_buckets::i2
unsigned int init_buckets::i2#0
unsigned int init_buckets::i2#1
unsigned int init_buckets::i2#2
unsigned int init_buckets::i2#3
char init_buckets::i3
char init_buckets::i3#0
char init_buckets::i3#1
char init_buckets::i3#2
unsigned int init_buckets::i4
unsigned int init_buckets::i4#0
unsigned int init_buckets::i4#1
unsigned int init_buckets::i4#2
char *init_buckets::screen
char *init_buckets::screen#0
char *init_buckets::screen#1
char *init_buckets::screen#10
char *init_buckets::screen#11
char *init_buckets::screen#2
char *init_buckets::screen#3
char *init_buckets::screen#4
char *init_buckets::screen#5
char *init_buckets::screen#6
char *init_buckets::screen#7
char *init_buckets::screen#8
char *init_buckets::screen#9
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()
bool main::$10
bool main::$12
bool main::$13
bool main::$14
bool main::$15
bool main::$18
bool main::$19
char main::$23
char main::$24
bool main::$3
bool main::$5
bool main::$6
bool main::$7
bool main::$9
char *main::angle
char *main::angle#0
char *main::angle#1
unsigned int *main::bucket
unsigned int *main::bucket#0
unsigned int *main::bucket#1
unsigned int *main::bucket#2
unsigned int *main::bucket#3
unsigned int *main::bucket#4
unsigned int *main::bucket#5
unsigned int *main::bucket#6
char main::bucket_idx
char main::bucket_idx#0
char main::bucket_idx#1
char main::bucket_idx#10
char main::bucket_idx#11
char main::bucket_idx#12
char main::bucket_idx#13
char main::bucket_idx#14
char main::bucket_idx#2
char main::bucket_idx#3
char main::bucket_idx#4
char main::bucket_idx#5
char main::bucket_idx#6
char main::bucket_idx#7
char main::bucket_idx#8
char main::bucket_idx#9
char main::bucket_size
char main::bucket_size#0
char main::bucket_size#1
char main::bucket_size#2
char main::bucket_size#3
char main::bucket_size#4
char main::bucket_size#5
char main::bucket_size#6
char *main::fill
char *main::fill#0
char *main::fill1
char *main::fill1#0
char main::i
char main::i#0
char main::i#1
char main::i#2
char main::i#3
char main::i#4
char main::i#5
char main::i#6
char main::min_angle
char main::min_angle#0
char main::min_angle#1
char main::min_angle#2
char main::min_angle#3
char main::min_angle#4
char main::min_angle#5
unsigned int main::min_offset
unsigned int main::min_offset#0
unsigned int main::min_offset#1
unsigned int main::min_offset#2
unsigned int main::min_offset#3
unsigned int main::min_offset#4
unsigned int main::min_offset#5
unsigned int main::min_offset#6
unsigned int main::min_offset#7
unsigned int main::offset
unsigned int main::offset#0
unsigned int main::offset#1
unsigned int main::offset#2
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#10
void *malloc::return#11
void *malloc::return#12
void *malloc::return#13
void *malloc::return#14
void *malloc::return#15
void *malloc::return#16
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
void *malloc::return#9
unsigned int malloc::size
unsigned int malloc::size#0
unsigned int malloc::size#1
unsigned int malloc::size#2
unsigned int malloc::size#3
unsigned int malloc::size#4
unsigned int malloc::size#5
unsigned int malloc::size#6
unsigned int malloc::size#7
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 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) $ff in main::$3 = *RASTER != $ff
Adding number conversion cast (unumber) 0 in main::$5 = main::bucket_size#0 > 0
Adding number conversion cast (unumber) $ffff in main::$14 = main::min_offset#2 != $ffff
Adding number conversion cast (unumber) $3e7 in *(COLS+$3e7) = ++ *(COLS+$3e7)
Adding number conversion cast (unumber) 0 in BUCKET_SIZES#3[init_buckets::i#2] = 0
Adding number conversion cast (unumber) 1 in init_buckets::i#1 = init_buckets::i#2 + rangenext(0,NUM_BUCKETS-1)
Adding number conversion cast (unumber) 1 in init_buckets::i2#1 = init_buckets::i2#3 + rangenext(0,NUM_BUCKETS-1)
Adding number conversion cast (unumber) 0 in BUCKET_IDX#2[init_buckets::i3#2] = 0
Adding number conversion cast (unumber) 1 in init_buckets::i3#1 = init_buckets::i3#2 + rangenext(0,NUM_BUCKETS-1)
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#65 = phi( init_dist_screen::@2/heap_head#70, init_dist_screen::@3/heap_head#71 )
  NUM_SQUARES#40 = phi( init_dist_screen::@2/NUM_SQUARES#45, init_dist_screen::@3/NUM_SQUARES#46 )
  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#32, init_dist_screen::@3/SQUARES#33 )
  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#72 = phi( init_dist_screen::@8/heap_head#77, init_dist_screen::@9/heap_head#78 )
  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#26 = phi( init_dist_screen::@8/NUM_SQUARES#34, init_dist_screen::@9/NUM_SQUARES#35 )
  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#35, init_dist_screen::@9/SQUARES#36 )
  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) $3e8 in malloc::size#2 = $3e8
Adding number conversion cast (unumber) $3e8 in malloc::size#3 = $3e8
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast malloc::return#0 = (void *)malloc::mem#0
Inlining cast SQUARES#0 = (unsigned int *)init_squares::$1
Inlining cast BUCKET_SIZES#3[init_buckets::i#2] = (unumber)0
Inlining cast BUCKETS#3[init_buckets::$11] = (unsigned int *)init_buckets::$4
Inlining cast BUCKET_IDX#2[init_buckets::i3#2] = (unumber)0
Inlining cast NUM_SQUARES#2 = (unumber)$30
Inlining cast malloc::size#2 = (unumber)$3e8
Inlining cast SCREEN_DIST#0 = (char *)malloc::return#12
Inlining cast malloc::size#3 = (unumber)$3e8
Inlining cast SCREEN_ANGLE#0 = (char *)malloc::return#13
Inlining cast BUCKET_SIZES#0 = (char *)malloc::return#14
Inlining cast BUCKETS#0 = (unsigned int **)malloc::return#15
Inlining cast BUCKET_IDX#0 = (char *)malloc::return#16
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (char *) 53266
Simplifying constant pointer cast (char *) 53280
Simplifying constant pointer cast (char *) 55296
Simplifying constant pointer cast (char *) 1024
Simplifying constant pointer cast (char *) 40960
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 $ff
Simplifying constant integer cast 0
Simplifying constant integer cast $ffff
Simplifying constant integer cast $3e7
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 1
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 $3e8
Simplifying constant integer cast $3e8
Successful SSA optimization PassNCastSimplification
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 (char) $ff
Finalized unsigned number type (char) 0
Finalized unsigned number type (unsigned int) $ffff
Finalized unsigned number type (unsigned int) $3e7
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 1
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) $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 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
Inversing boolean not [20] bsearch16u::$10 = bsearch16u::result#0 != 0 from [19] bsearch16u::$9 = bsearch16u::result#0 == 0
Inversing boolean not [27] bsearch16u::$12 = bsearch16u::result#1 <= 0 from [26] bsearch16u::$11 = bsearch16u::result#1 > 0
Inversing boolean not [119] atan2_16::$17 = atan2_16::yi#3 != 0 from [118] atan2_16::$16 = atan2_16::yi#3 == 0
Inversing boolean not [128] atan2_16::$11 = atan2_16::x#4 >= 0 from [127] atan2_16::$10 = atan2_16::x#4 < 0
Inversing boolean not [139] atan2_16::$19 = 0 == atan2_16::shift#4 from [138] atan2_16::$24 = 0 != atan2_16::shift#4
Inversing boolean not [163] atan2_16::$14 = atan2_16::y#4 >= 0 from [162] atan2_16::$13 = atan2_16::y#4 < 0
Inversing boolean not [203] main::$6 = main::bucket_size#0 <= 0 from [202] main::$5 = main::bucket_size#0 > 0
Inversing boolean not [208] main::$19 = main::bucket_idx#1 != NUM_BUCKETS from [207] main::$18 = main::bucket_idx#1 == NUM_BUCKETS
Inversing boolean not [222] main::$10 = *main::fill#0 == FILL_CHAR from [221] main::$9 = *main::fill#0 != FILL_CHAR
Inversing boolean not [226] main::$15 = main::min_offset#2 == $ffff from [225] main::$14 = main::min_offset#2 != $ffff
Inversing boolean not [233] main::$13 = *main::angle#0 > main::min_angle#2 from [232] main::$12 = *main::angle#0 <= main::min_angle#2
Successful SSA optimization Pass2UnaryNotSimplification
Alias malloc::return#0 = malloc::return#9 malloc::return#1 
Alias heap_head#0 = heap_head#20 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#10 = malloc::return#2 
Alias NUM_SQUARES#16 = NUM_SQUARES#7 
Alias heap_head#2 = heap_head#21 
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#22 = heap_head#47 heap_head#39 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 SCREEN_ANGLE#2 = SCREEN_ANGLE#5 SCREEN_ANGLE#22 SCREEN_ANGLE#21 
Alias SCREEN_DIST#2 = SCREEN_DIST#6 SCREEN_DIST#3 
Alias BUCKET_SIZES#14 = BUCKET_SIZES#16 BUCKET_SIZES#21 BUCKET_SIZES#19 
Alias BUCKETS#16 = BUCKETS#24 BUCKETS#27 BUCKETS#20 
Alias BUCKET_IDX#16 = BUCKET_IDX#17 BUCKET_IDX#18 
Alias NUM_SQUARES#0 = NUM_SQUARES#10 NUM_SQUARES#37 NUM_SQUARES#30 
Alias heap_head#23 = heap_head#4 heap_head#41 
Alias SQUARES#13 = SQUARES#2 SQUARES#47 SQUARES#40 
Alias heap_head#24 = heap_head#5 
Alias main::bucket_idx#10 = main::bucket_idx#2 main::bucket_idx#4 
Alias BUCKETS#2 = BUCKETS#6 BUCKETS#28 
Alias BUCKET_SIZES#2 = BUCKET_SIZES#7 BUCKET_SIZES#26 
Alias NUM_SQUARES#38 = NUM_SQUARES#43 NUM_SQUARES#48 
Alias heap_head#61 = heap_head#67 heap_head#73 
Alias SQUARES#48 = SQUARES#51 SQUARES#54 
Alias SCREEN_ANGLE#10 = SCREEN_ANGLE#13 SCREEN_ANGLE#16 
Alias main::bucket_size#0 = main::bucket_size#2 
Alias main::bucket#0 = main::bucket#3 
Alias main::i#2 = main::i#3 main::i#5 main::i#6 
Alias main::bucket#1 = main::bucket#2 main::bucket#5 main::bucket#6 
Alias SCREEN_ANGLE#14 = SCREEN_ANGLE#6 SCREEN_ANGLE#9 SCREEN_ANGLE#23 SCREEN_ANGLE#3 SCREEN_ANGLE#19 
Alias main::min_angle#2 = main::min_angle#3 main::min_angle#4 
Alias main::bucket_size#1 = main::bucket_size#6 main::bucket_size#4 main::bucket_size#5 
Alias main::min_offset#2 = main::min_offset#7 main::min_offset#4 main::min_offset#6 main::min_offset#3 
Alias main::bucket_idx#12 = main::bucket_idx#14 main::bucket_idx#7 main::bucket_idx#5 main::bucket_idx#13 main::bucket_idx#8 
Alias NUM_SQUARES#28 = NUM_SQUARES#54 NUM_SQUARES#44 NUM_SQUARES#39 NUM_SQUARES#52 NUM_SQUARES#53 
Alias heap_head#54 = heap_head#81 heap_head#68 heap_head#62 heap_head#79 heap_head#80 
Alias SQUARES#38 = SQUARES#59 SQUARES#52 SQUARES#49 SQUARES#57 SQUARES#58 
Alias BUCKETS#14 = BUCKETS#33 BUCKETS#25 BUCKETS#21 BUCKETS#31 BUCKETS#32 
Alias BUCKET_SIZES#17 = BUCKET_SIZES#30 BUCKET_SIZES#25 BUCKET_SIZES#22 BUCKET_SIZES#28 BUCKET_SIZES#29 
Alias main::offset#0 = main::offset#1 main::offset#2 main::min_offset#1 
Alias main::angle#0 = main::angle#1 
Alias main::bucket_idx#1 = main::bucket_idx#9 
Alias BUCKETS#15 = BUCKETS#22 
Alias BUCKET_SIZES#18 = BUCKET_SIZES#23 
Alias NUM_SQUARES#23 = NUM_SQUARES#29 NUM_SQUARES#31 
Alias heap_head#49 = heap_head#55 heap_head#56 
Alias SQUARES#30 = SQUARES#39 SQUARES#41 
Alias SCREEN_ANGLE#20 = SCREEN_ANGLE#24 
Alias NUM_SQUARES#1 = NUM_SQUARES#24 NUM_SQUARES#19 NUM_SQUARES#11 
Alias heap_head#25 = heap_head#50 heap_head#42 heap_head#6 
Alias SQUARES#14 = SQUARES#31 SQUARES#24 SQUARES#3 
Alias init_buckets::screen#1 = init_buckets::screen#4 init_buckets::dist#0 
Alias BUCKET_SIZES#3 = BUCKET_SIZES#9 
Alias heap_head#63 = heap_head#69 
Alias BUCKETS#23 = BUCKETS#26 
Alias BUCKET_IDX#13 = BUCKET_IDX#14 
Alias BUCKET_SIZES#11 = BUCKET_SIZES#4 
Alias heap_head#51 = heap_head#57 
Alias BUCKETS#11 = BUCKETS#17 
Alias BUCKET_IDX#11 = BUCKET_IDX#12 
Alias init_buckets::screen#10 = init_buckets::screen#11 
Alias malloc::size#1 = init_buckets::$3 
Alias malloc::return#11 = malloc::return#3 
Alias init_buckets::i2#2 = init_buckets::i2#3 
Alias BUCKETS#18 = BUCKETS#3 BUCKETS#7 
Alias BUCKET_SIZES#10 = BUCKET_SIZES#5 
Alias BUCKET_IDX#10 = BUCKET_IDX#8 BUCKET_IDX#5 
Alias init_buckets::screen#7 = init_buckets::screen#8 init_buckets::screen#9 
Alias heap_head#26 = heap_head#7 heap_head#64 
Alias init_buckets::screen#2 = init_buckets::screen#5 init_buckets::dist#2 
Alias BUCKETS#12 = BUCKETS#8 
Alias BUCKET_IDX#2 = BUCKET_IDX#6 
Alias heap_head#52 = heap_head#58 
Alias heap_head#27 = heap_head#43 heap_head#8 
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#55 
Alias heap_head#28 = heap_head#9 
Alias SQUARES#15 = SQUARES#4 
Alias init_dist_screen::y2#0 = init_dist_screen::y2#1 init_dist_screen::y2#2 
Alias SQUARES#32 = SQUARES#42 SQUARES#33 
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#45 = NUM_SQUARES#50 NUM_SQUARES#46 
Alias heap_head#70 = heap_head#76 heap_head#71 
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#32 = NUM_SQUARES#40 
Alias heap_head#59 = heap_head#65 
Alias SQUARES#21 = SQUARES#43 
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#45 SQUARES#34 SQUARES#26 SQUARES#35 SQUARES#36 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#41 NUM_SQUARES#25 NUM_SQUARES#20 NUM_SQUARES#34 NUM_SQUARES#35 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#10 = heap_head#82 heap_head#53 heap_head#45 heap_head#77 heap_head#78 heap_head#29 
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#44 
Alias NUM_SQUARES#17 = NUM_SQUARES#26 NUM_SQUARES#33 
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#60 = heap_head#66 heap_head#72 
Alias sqrt::return#2 = sqrt::return#4 
Alias malloc::return#12 = malloc::return#4 
Alias NUM_SQUARES#21 = NUM_SQUARES#51 NUM_SQUARES#4 NUM_SQUARES#47 NUM_SQUARES#42 NUM_SQUARES#36 NUM_SQUARES#27 
Alias SQUARES#27 = SQUARES#56 SQUARES#6 SQUARES#53 SQUARES#50 SQUARES#46 SQUARES#37 
Alias heap_head#12 = heap_head#30 
Alias malloc::return#13 = malloc::return#5 
Alias SCREEN_DIST#0 = SCREEN_DIST#11 SCREEN_DIST#10 SCREEN_DIST#9 SCREEN_DIST#8 SCREEN_DIST#5 SCREEN_DIST#7 SCREEN_DIST#4 SCREEN_DIST#1 
Alias heap_head#13 = heap_head#31 
Alias malloc::return#14 = malloc::return#6 
Alias SCREEN_ANGLE#0 = SCREEN_ANGLE#17 SCREEN_ANGLE#15 SCREEN_ANGLE#12 SCREEN_ANGLE#8 SCREEN_ANGLE#7 SCREEN_ANGLE#4 SCREEN_ANGLE#1 
Alias heap_head#14 = heap_head#32 
Alias malloc::return#15 = malloc::return#7 
Alias BUCKET_SIZES#0 = BUCKET_SIZES#24 BUCKET_SIZES#20 BUCKET_SIZES#15 BUCKET_SIZES#12 BUCKET_SIZES#6 BUCKET_SIZES#1 
Alias heap_head#15 = heap_head#33 
Alias malloc::return#16 = malloc::return#8 
Alias BUCKETS#0 = BUCKETS#19 BUCKETS#13 BUCKETS#9 BUCKETS#5 BUCKETS#1 
Alias heap_head#16 = heap_head#34 heap_head#46 
Alias BUCKET_IDX#0 = BUCKET_IDX#9 BUCKET_IDX#7 BUCKET_IDX#4 BUCKET_IDX#1 
Alias NUM_SQUARES#13 = NUM_SQUARES#5 NUM_SQUARES#14 NUM_SQUARES#6 
Alias heap_head#17 = heap_head#35 heap_head#36 heap_head#18 
Alias SQUARES#17 = SQUARES#7 SQUARES#18 SQUARES#8 
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 main::i#2 = main::i#4 
Alias main::bucket_size#1 = main::bucket_size#3 
Alias main::bucket#1 = main::bucket#4 
Alias SCREEN_ANGLE#11 = SCREEN_ANGLE#14 
Alias main::bucket_idx#11 = main::bucket_idx#12 
Alias NUM_SQUARES#28 = NUM_SQUARES#49 
Alias heap_head#54 = heap_head#74 
Alias SQUARES#38 = SQUARES#55 
Alias BUCKETS#14 = BUCKETS#29 
Alias BUCKET_SIZES#17 = BUCKET_SIZES#27 
Alias SQUARES#21 = SQUARES#32 
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#32 = NUM_SQUARES#45 
Alias heap_head#59 = heap_head#70 
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#10 = heap_head#60 
Successful SSA optimization Pass2AliasElimination
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#38 heap_head#44
Identical Phi Values heap_head#2 heap_head#0
Identical Phi Values NUM_SQUARES#15 NUM_SQUARES#16
Identical Phi Values heap_head#22 heap_head#2
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 SCREEN_DIST#2 SCREEN_DIST#0
Identical Phi Values NUM_SQUARES#18 NUM_SQUARES#21
Identical Phi Values heap_head#40 heap_head#16
Identical Phi Values SQUARES#23 SQUARES#27
Identical Phi Values SCREEN_ANGLE#2 SCREEN_ANGLE#0
Identical Phi Values BUCKET_SIZES#14 BUCKET_SIZES#0
Identical Phi Values BUCKETS#16 BUCKETS#0
Identical Phi Values BUCKET_IDX#16 BUCKET_IDX#0
Identical Phi Values NUM_SQUARES#0 NUM_SQUARES#12
Identical Phi Values heap_head#23 heap_head#10
Identical Phi Values SQUARES#13 SQUARES#16
Identical Phi Values heap_head#24 heap_head#27
Identical Phi Values main::bucket_idx#10 main::bucket_idx#6
Identical Phi Values BUCKETS#2 BUCKETS#10
Identical Phi Values BUCKET_SIZES#2 BUCKET_SIZES#13
Identical Phi Values NUM_SQUARES#38 NUM_SQUARES#22
Identical Phi Values heap_head#61 heap_head#48
Identical Phi Values SQUARES#48 SQUARES#29
Identical Phi Values SCREEN_ANGLE#10 SCREEN_ANGLE#18
Identical Phi Values main::bucket_size#1 main::bucket_size#0
Identical Phi Values main::bucket#1 main::bucket#0
Identical Phi Values SCREEN_ANGLE#11 SCREEN_ANGLE#10
Identical Phi Values main::bucket_idx#11 main::bucket_idx#10
Identical Phi Values NUM_SQUARES#28 NUM_SQUARES#38
Identical Phi Values heap_head#54 heap_head#61
Identical Phi Values SQUARES#38 SQUARES#48
Identical Phi Values BUCKETS#14 BUCKETS#2
Identical Phi Values BUCKET_SIZES#17 BUCKET_SIZES#2
Identical Phi Values BUCKET_SIZES#8 BUCKET_SIZES#14
Identical Phi Values init_buckets::screen#6 init_buckets::screen#0
Identical Phi Values heap_head#75 heap_head#23
Identical Phi Values BUCKETS#30 BUCKETS#16
Identical Phi Values BUCKET_IDX#15 BUCKET_IDX#16
Identical Phi Values BUCKET_SIZES#3 BUCKET_SIZES#8
Identical Phi Values init_buckets::screen#1 init_buckets::screen#6
Identical Phi Values heap_head#63 heap_head#75
Identical Phi Values BUCKETS#23 BUCKETS#30
Identical Phi Values BUCKET_IDX#13 BUCKET_IDX#15
Identical Phi Values BUCKET_SIZES#11 BUCKET_SIZES#3
Identical Phi Values heap_head#51 heap_head#63
Identical Phi Values BUCKETS#11 BUCKETS#23
Identical Phi Values BUCKET_IDX#11 BUCKET_IDX#13
Identical Phi Values init_buckets::screen#10 init_buckets::screen#1
Identical Phi Values BUCKET_SIZES#10 BUCKET_SIZES#11
Identical Phi Values BUCKETS#18 BUCKETS#11
Identical Phi Values BUCKET_IDX#10 BUCKET_IDX#11
Identical Phi Values init_buckets::screen#7 init_buckets::screen#10
Identical Phi Values heap_head#26 heap_head#0
Identical Phi Values BUCKET_IDX#2 BUCKET_IDX#10
Identical Phi Values init_buckets::screen#2 init_buckets::screen#7
Identical Phi Values BUCKETS#12 BUCKETS#18
Identical Phi Values heap_head#52 heap_head#26
Identical Phi Values BUCKETS#4 BUCKETS#12
Identical Phi Values init_buckets::screen#3 init_buckets::screen#2
Identical Phi Values BUCKET_IDX#3 BUCKET_IDX#2
Identical Phi Values heap_head#27 heap_head#52
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#44 heap_head#40
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#28 heap_head#22
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#32
Identical Phi Values heap_head#10 heap_head#59
Identical Phi Values SQUARES#16 SQUARES#21
Identical Phi Values init_dist_screen::yds#1 init_dist_screen::yds#0
Identical Phi Values heap_head#12 heap_head#0
Identical Phi Values heap_head#13 heap_head#0
Identical Phi Values heap_head#14 heap_head#0
Identical Phi Values heap_head#15 heap_head#0
Identical Phi Values heap_head#16 heap_head#0
Identical Phi Values NUM_SQUARES#13 NUM_SQUARES#1
Identical Phi Values heap_head#17 heap_head#25
Identical Phi Values SQUARES#17 SQUARES#14
Successful SSA optimization Pass2IdenticalPhiElimination
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 main::bucket_idx#3 main::bucket_idx#6
Identical Phi Values NUM_SQUARES#23 NUM_SQUARES#22
Identical Phi Values heap_head#49 heap_head#48
Identical Phi Values SQUARES#30 SQUARES#29
Identical Phi Values BUCKETS#15 BUCKETS#10
Identical Phi Values BUCKET_SIZES#18 BUCKET_SIZES#13
Identical Phi Values SCREEN_ANGLE#20 SCREEN_ANGLE#18
Identical Phi Values SQUARES#21 SQUARES#0
Identical Phi Values NUM_SQUARES#32 NUM_SQUARES#2
Identical Phi Values heap_head#59 heap_head#0
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values BUCKETS#10 BUCKETS#0
Identical Phi Values BUCKET_SIZES#13 BUCKET_SIZES#0
Identical Phi Values NUM_SQUARES#22 NUM_SQUARES#2
Identical Phi Values heap_head#48 heap_head#0
Identical Phi Values SQUARES#29 SQUARES#0
Identical Phi Values SCREEN_ANGLE#18 SCREEN_ANGLE#0
Identical Phi Values NUM_SQUARES#1 NUM_SQUARES#22
Identical Phi Values heap_head#25 heap_head#48
Identical Phi Values SQUARES#14 SQUARES#29
Identical Phi Values heap_head#37 heap_head#0
Successful SSA optimization Pass2IdenticalPhiElimination
Identified duplicate assignment right side [314] init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#0 + (unsigned int)$28*$c
Successful SSA optimization Pass2DuplicateRValueIdentification
Simple Condition bsearch16u::$5 [8] if(bsearch16u::num#3>0) goto bsearch16u::@5
Simple Condition bsearch16u::$10 [16] if(bsearch16u::result#0!=0) goto bsearch16u::@7
Simple Condition bsearch16u::$0 [18] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@1
Simple Condition bsearch16u::$12 [20] if(bsearch16u::result#0<=0) goto bsearch16u::@8
Simple Condition init_squares::$2 [43] if(init_squares::i#2<NUM_SQUARES#2) goto init_squares::@2
Simple Condition atan2_16::$0 [68] if(atan2_16::y#0>=0) goto atan2_16::@1
Simple Condition atan2_16::$5 [72] if(atan2_16::x#0>=0) goto atan2_16::@4
Simple Condition atan2_16::$17 [79] if(atan2_16::yi#3!=0) goto atan2_16::@11
Simple Condition atan2_16::$11 [83] if(atan2_16::x#0>=0) goto atan2_16::@7
Simple Condition atan2_16::$18 [86] if(atan2_16::shift#2>=2) goto atan2_16::@14
Simple Condition atan2_16::$19 [91] if(0==atan2_16::shift#2) goto atan2_16::@17
Simple Condition atan2_16::$20 [94] if(atan2_16::yi#3>=0) goto atan2_16::@18
Simple Condition atan2_16::$21 [108] if(atan2_16::i#1!=rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@10
Simple Condition atan2_16::$14 [111] if(atan2_16::y#0>=0) goto atan2_16::@8
Simple Condition main::$3 [131] if(*RASTER!=$ff) goto main::@2
Simple Condition main::$6 [137] if(main::bucket_size#0<=0) goto main::@5
Simple Condition main::$19 [141] if(main::bucket_idx#1!=NUM_BUCKETS) goto main::@13
Simple Condition main::$7 [147] if(main::i#2<main::bucket_size#0) goto main::@7
Simple Condition main::$10 [152] if(*main::fill#0==FILL_CHAR) goto main::@9
Simple Condition main::$15 [154] if(main::min_offset#2==$ffff) goto main::@5
Simple Condition main::$13 [159] if(*main::angle#0>main::min_angle#2) goto main::@9
Simple Condition init_buckets::$0 [176] if(init_buckets::i#1!=rangelast(0,NUM_BUCKETS-1)) goto init_buckets::@1
Simple Condition init_buckets::$2 [183] if(init_buckets::i1#1!=rangelast(0,$3e7)) goto init_buckets::@3
Simple Condition init_buckets::$5 [195] if(init_buckets::i2#1!=rangelast(0,NUM_BUCKETS-1)) goto init_buckets::@5
Simple Condition init_buckets::$6 [201] if(init_buckets::i3#1!=rangelast(0,NUM_BUCKETS-1)) goto init_buckets::@7
Simple Condition init_buckets::$10 [215] if(init_buckets::i4#1!=rangelast(0,$3e7)) goto init_buckets::@9
Simple Condition init_angle_screen::$2 [226] if(init_angle_screen::x#2<=$13) goto init_angle_screen::@3
Simple Condition init_angle_screen::$14 [254] if(init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1
Simple Condition init_dist_screen::$3 [265] if(init_dist_screen::y2#0>=$18) goto init_dist_screen::@2
Simple Condition init_dist_screen::$10 [277] if(init_dist_screen::x#2<=$13) goto init_dist_screen::@6
Simple Condition init_dist_screen::$12 [280] if(init_dist_screen::x2#0>=$27) goto init_dist_screen::@8
Simple Condition init_dist_screen::$21 [285] if(init_dist_screen::y#1!=rangelast(0,$c)) goto init_dist_screen::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Negating conditional jump and destination [108] if(atan2_16::i#1==rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@12
Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
Constant right-side identified [25] bsearch16u::$15 = 1 * SIZEOF_UNSIGNED_INT
Constant right-side identified [28] 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 main::bucket_idx#0 = 0
Constant main::min_angle#0 = $ff
Constant main::min_offset#0 = $ffff
Constant main::i#0 = 0
Constant init_buckets::i#0 = 0
Constant init_buckets::i1#0 = 0
Constant init_buckets::i2#0 = 0
Constant init_buckets::i3#0 = 0
Constant init_buckets::i4#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 heap_head#11 = HEAP_TOP
Constant NUM_SQUARES#21 = $ff
Constant SQUARES#27 = (unsigned int *) 0
Constant malloc::size#2 = $3e8
Constant malloc::size#3 = $3e8
Constant malloc::size#4 = NUM_BUCKETS*SIZEOF_CHAR
Constant malloc::size#5 = NUM_BUCKETS*SIZEOF_POINTER
Constant malloc::size#6 = NUM_BUCKETS*SIZEOF_CHAR
Successful SSA optimization Pass2ConstantIdentification
Constant bsearch16u::num#2 = NUM_SQUARES#2
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [128] if(true) goto main::@2
if() condition always true - replacing block destination [167] if(true) goto main::@16
Successful SSA optimization Pass2ConstantIfs
Resolved ranged next value [106] atan2_16::i#1 = ++ atan2_16::i#2 to ++
Resolved ranged comparison value [108] 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 [174] init_buckets::i#1 = ++ init_buckets::i#2 to ++
Resolved ranged comparison value [176] if(init_buckets::i#1!=rangelast(0,NUM_BUCKETS-1)) goto init_buckets::@1 to NUM_BUCKETS-1+1
Resolved ranged next value [181] init_buckets::i1#1 = ++ init_buckets::i1#2 to ++
Resolved ranged comparison value [183] if(init_buckets::i1#1!=rangelast(0,$3e7)) goto init_buckets::@3 to $3e8
Resolved ranged next value [193] init_buckets::i2#1 = ++ init_buckets::i2#2 to ++
Resolved ranged comparison value [195] if(init_buckets::i2#1!=rangelast(0,NUM_BUCKETS-1)) goto init_buckets::@5 to NUM_BUCKETS-1+1
Resolved ranged next value [199] init_buckets::i3#1 = ++ init_buckets::i3#2 to ++
Resolved ranged comparison value [201] if(init_buckets::i3#1!=rangelast(0,NUM_BUCKETS-1)) goto init_buckets::@7 to NUM_BUCKETS-1+1
Resolved ranged next value [213] init_buckets::i4#1 = ++ init_buckets::i4#2 to ++
Resolved ranged comparison value [215] if(init_buckets::i4#1!=rangelast(0,$3e7)) goto init_buckets::@9 to $3e8
Resolved ranged next value [252] init_angle_screen::y#1 = ++ init_angle_screen::y#5 to ++
Resolved ranged comparison value [254] if(init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1 to $d
Resolved ranged next value [283] init_dist_screen::y#1 = ++ init_dist_screen::y#10 to ++
Resolved ranged comparison value [285] if(init_dist_screen::y#1!=rangelast(0,$c)) goto init_dist_screen::@1 to $d
Rewriting conditional comparison [226] if(init_angle_screen::x#2<=$13) goto init_angle_screen::@3
Rewriting conditional comparison [277] if(init_dist_screen::x#2<=$13) goto init_dist_screen::@6
De-inlining pointer[w] to *(pointer+w)   [186] malloc::size#1 = BUCKET_SIZES#0[init_buckets::i2#2] * SIZEOF_POINTER
De-inlining pointer[w] to *(pointer+w)   [192] BUCKETS#0[init_buckets::$11] = (unsigned int *)init_buckets::$4
De-inlining pointer[w] to *(pointer+w)   [207] init_buckets::bucket#0 = BUCKETS#0[init_buckets::$12]
Successful SSA optimization Pass2DeInlineWordDerefIdx
Removing unused block main::@return
Successful SSA optimization Pass2EliminateUnusedBlocks
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) NUM_BUCKETS-1+1 in if(init_buckets::i#1!=NUM_BUCKETS-1+1) goto init_buckets::@1
Adding number conversion cast (unumber) 1 in if(init_buckets::i#1!=(unumber)NUM_BUCKETS-1+1) goto init_buckets::@1
Adding number conversion cast (unumber) $3e8 in if(init_buckets::i1#1!=$3e8) goto init_buckets::@3
Adding number conversion cast (unumber) NUM_BUCKETS-1+1 in if(init_buckets::i2#1!=NUM_BUCKETS-1+1) goto init_buckets::@5
Adding number conversion cast (unumber) 1 in if(init_buckets::i2#1!=(unumber)NUM_BUCKETS-1+1) goto init_buckets::@5
Adding number conversion cast (unumber) NUM_BUCKETS-1+1 in if(init_buckets::i3#1!=NUM_BUCKETS-1+1) goto init_buckets::@7
Adding number conversion cast (unumber) 1 in if(init_buckets::i3#1!=(unumber)NUM_BUCKETS-1+1) goto init_buckets::@7
Adding number conversion cast (unumber) $3e8 in if(init_buckets::i4#1!=$3e8) goto init_buckets::@9
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 NUM_BUCKETS-1+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast $3e8
Simplifying constant integer cast NUM_BUCKETS-1+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast NUM_BUCKETS-1+(unumber)1
Simplifying constant integer cast 1
Simplifying constant integer cast $3e8
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) 1
Finalized unsigned number type (unsigned int) $3e8
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 1
Finalized unsigned number type (unsigned int) $3e8
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 [24] malloc::size#0 = NUM_SQUARES#2 * SIZEOF_UNSIGNED_INT
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant malloc::size#0 = NUM_SQUARES#2*SIZEOF_UNSIGNED_INT
Successful SSA optimization Pass2ConstantIdentification
Inlining Noop Cast [3] malloc::return#0 = (void *)malloc::mem#0 keeping malloc::mem#0
Inlining Noop Cast [10] bsearch16u::$17 = (int)bsearch16u::key#0 keeping bsearch16u::key#0
Inlining Noop Cast [11] bsearch16u::$18 = (int)*bsearch16u::pivot#0 keeping *bsearch16u::pivot#0
Successful SSA optimization Pass2NopCastInlining
Inlining Noop Cast [25] malloc::return#10 = (void *)malloc::mem#0 keeping malloc::mem#0
Inlining Noop Cast [136] malloc::return#11 = (void *)malloc::mem#0 keeping malloc::mem#0
Inlining Noop Cast [233] malloc::return#12 = (void *)malloc::mem#0 keeping malloc::mem#0
Inlining Noop Cast [236] malloc::return#13 = (void *)malloc::mem#0 keeping malloc::mem#0
Inlining Noop Cast [239] malloc::return#14 = (void *)malloc::mem#0 keeping malloc::mem#0
Inlining Noop Cast [242] malloc::return#15 = (void *)malloc::mem#0 keeping malloc::mem#0
Inlining Noop Cast [245] malloc::return#16 = (void *)malloc::mem#0 keeping malloc::mem#0
Successful SSA optimization Pass2NopCastInlining
Inlining Noop Cast [27] SQUARES#0 = (unsigned int *)init_squares::$1 keeping SQUARES#0
Inlining Noop Cast [168] init_angle_screen::xw#0 = (int)init_angle_screen::$5 keeping init_angle_screen::xw#0
Inlining Noop Cast [171] 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 [8] bsearch16u::$14 = bsearch16u::$6 * SIZEOF_UNSIGNED_INT
Rewriting multiplication to use shift [33] init_squares::$3 = init_squares::i#2 * 2
Rewriting multiplication to use shift [39] sqr::$0 = sqr::val#2 * SIZEOF_UNSIGNED_INT
Rewriting division to use shift [48] sqrt::$1 = sqrt::$2 / SIZEOF_UNSIGNED_INT
Rewriting division to use shift [60] atan2_16::angle#1 = atan2_16::angle#6 / 2
Rewriting multiplication to use shift [74] atan2_16::$22 = atan2_16::i#2 * SIZEOF_UNSIGNED_INT
Rewriting multiplication to use shift [78] atan2_16::$23 = atan2_16::i#2 * SIZEOF_UNSIGNED_INT
Rewriting multiplication to use shift [99] main::$23 = main::bucket_idx#6 * SIZEOF_POINTER
Rewriting multiplication to use shift [107] main::$24 = main::i#2 * SIZEOF_UNSIGNED_INT
Rewriting multiplication to use shift [134] malloc::size#1 = *init_buckets::$15 * SIZEOF_POINTER
Rewriting multiplication to use shift [138] init_buckets::$11 = init_buckets::i2#2 * SIZEOF_POINTER
Rewriting multiplication to use shift [150] init_buckets::$12 = init_buckets::$14 * SIZEOF_POINTER
Rewriting multiplication to use shift [154] init_buckets::$13 = BUCKET_IDX#0[init_buckets::distance#0] * SIZEOF_UNSIGNED_INT
Rewriting multiplication to use shift [165] init_angle_screen::$3 = init_angle_screen::x#2 * 2
Rewriting multiplication to use shift [169] init_angle_screen::$6 = init_angle_screen::y#5 * 2
Rewriting multiplication to use shift [196] init_dist_screen::y2#0 = init_dist_screen::y#10 * 2
Rewriting multiplication to use shift [207] init_dist_screen::x2#0 = init_dist_screen::x#2 * 2
Successful SSA optimization Pass2MultiplyToShiftRewriting
Inlining constant with var siblings malloc::size#2
Inlining constant with var siblings malloc::size#3
Inlining constant with var siblings malloc::size#4
Inlining constant with var siblings malloc::size#5
Inlining constant with var siblings malloc::size#6
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 main::bucket_idx#0
Inlining constant with var siblings main::min_angle#0
Inlining constant with var siblings main::min_offset#0
Inlining constant with var siblings main::i#0
Inlining constant with var siblings init_buckets::i#0
Inlining constant with var siblings init_buckets::i1#0
Inlining constant with var siblings init_buckets::i2#0
Inlining constant with var siblings init_buckets::i3#0
Inlining constant with var siblings init_buckets::i4#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 heap_head#11
Constant inlined init_buckets::i1#0 = 0
Constant inlined init_squares::sqr#0 = 0
Constant inlined main::bucket_idx#0 = 0
Constant inlined init_angle_screen::y#0 = 0
Constant inlined init_angle_screen::x#0 = 0
Constant inlined atan2_16::angle#0 = 0
Constant inlined init_buckets::i#0 = 0
Constant inlined init_dist_screen::y#0 = 0
Constant inlined init_dist_screen::xb#0 = $27
Constant inlined init_dist_screen::x#0 = 0
Constant inlined main::i#0 = 0
Constant inlined main::min_offset#0 = $ffff
Constant inlined init_buckets::i3#0 = 0
Constant inlined init_buckets::i2#0 = 0
Constant inlined init_buckets::i4#0 = 0
Constant inlined malloc::size#5 = NUM_BUCKETS*SIZEOF_POINTER
Constant inlined malloc::size#4 = NUM_BUCKETS*SIZEOF_CHAR
Constant inlined malloc::size#3 = $3e8
Constant inlined malloc::size#2 = $3e8
Constant inlined main::min_angle#0 = $ff
Constant inlined bsearch16u::num#2 = NUM_SQUARES#2
Constant inlined init_angle_screen::xb#0 = $27
Constant inlined malloc::size#6 = NUM_BUCKETS*SIZEOF_CHAR
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#0 = NUM_SQUARES#2*SIZEOF_UNSIGNED_INT
Constant inlined heap_head#11 = HEAP_TOP
Constant inlined init_squares::i#0 = 0
Successful SSA optimization Pass2ConstantInlining
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) $a
Finalized unsigned number type (char) $10
Finalized unsigned number type (char) $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 main::@20(between main::@10 and main::@9)
Added new block during phi lifting main::@21(between main::@7 and main::@9)
Added new block during phi lifting init_buckets::@11(between init_buckets::@1 and init_buckets::@1)
Added new block during phi lifting init_buckets::@12(between init_buckets::@3 and init_buckets::@3)
Added new block during phi lifting init_buckets::@13(between init_buckets::@10 and init_buckets::@5)
Added new block during phi lifting init_buckets::@14(between init_buckets::@7 and init_buckets::@7)
Added new block during phi lifting init_buckets::@15(between init_buckets::@9 and init_buckets::@9)
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)
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::@7
Adding NOP phi() at start of main::@19
Adding NOP phi() at start of main::@4
Adding NOP phi() at start of main::@15
Adding NOP phi() at start of init_dist_screen
Adding NOP phi() at start of init_buckets
Adding NOP phi() at start of init_buckets::@4
Adding NOP phi() at start of init_buckets::@6
CALL GRAPH
Calls in [__start] to malloc:2 malloc:5 malloc:8 malloc:11 malloc:14 main:17 
Calls in [main] to init_dist_screen:26 init_angle_screen:28 init_buckets:30 
Calls in [init_dist_screen] to init_squares:73 sqr:85 sqr:105 sqrt:110 
Calls in [init_angle_screen] to atan2_16:146 
Calls in [init_buckets] to malloc:179 
Calls in [init_squares] to malloc:214 
Calls in [sqrt] to bsearch16u:236 

Created 54 initial phi equivalence classes
Coalesced [4] heap_head#83 = heap_head#0
Coalesced (already) [7] heap_head#84 = heap_head#0
Coalesced (already) [10] heap_head#85 = heap_head#0
Coalesced (already) [13] heap_head#86 = heap_head#0
Not coalescing [22] heap_head#0 = malloc::mem#0
Coalesced (already) [46] main::bucket_idx#15 = main::bucket_idx#6
Coalesced [53] main::bucket_idx#16 = main::bucket_idx#1
Coalesced [61] main::min_offset#10 = main::offset#0
Coalesced [62] main::min_angle#8 = main::min_angle#1
Coalesced [65] main::i#7 = main::i#1
Not coalescing [66] main::min_offset#8 = main::min_offset#5
Coalesced [67] main::min_angle#6 = main::min_angle#5
Not coalescing [68] main::min_offset#9 = main::min_offset#2
Coalesced (already) [69] main::min_angle#7 = main::min_angle#2
Not coalescing [70] main::min_offset#11 = main::min_offset#2
Coalesced (already) [71] main::min_angle#9 = main::min_angle#2
Coalesced [75] init_dist_screen::screen_topline#15 = init_dist_screen::screen#0
Coalesced [76] init_dist_screen::screen_bottomline#15 = init_dist_screen::screen_bottomline#0
Coalesced [81] init_dist_screen::yd#2 = init_dist_screen::$5
Coalesced [84] sqr::val#4 = sqr::val#0
Coalesced [95] init_dist_screen::y#15 = init_dist_screen::y#1
Coalesced [96] init_dist_screen::screen_topline#16 = init_dist_screen::screen_topline#1
Coalesced [97] init_dist_screen::screen_bottomline#16 = init_dist_screen::screen_bottomline#1
Coalesced [101] init_dist_screen::xd#2 = init_dist_screen::$14
Coalesced [104] sqr::val#3 = sqr::val#1
Coalesced [119] init_dist_screen::x#9 = init_dist_screen::x#1
Coalesced [120] init_dist_screen::xb#9 = init_dist_screen::xb#1
Coalesced [122] init_dist_screen::xd#1 = init_dist_screen::$16
Coalesced [124] init_dist_screen::yd#1 = init_dist_screen::$7
Not coalescing [126] init_angle_screen::screen_topline#7 = init_angle_screen::screen_bottomline#0
Coalesced [127] init_angle_screen::screen_bottomline#7 = init_angle_screen::screen_bottomline#0
Coalesced [136] init_angle_screen::y#7 = init_angle_screen::y#1
Coalesced [137] init_angle_screen::screen_topline#8 = init_angle_screen::screen_topline#1
Coalesced [138] init_angle_screen::screen_bottomline#8 = init_angle_screen::screen_bottomline#1
Coalesced [160] init_angle_screen::x#5 = init_angle_screen::x#1
Coalesced [161] init_angle_screen::xb#5 = init_angle_screen::xb#1
Not coalescing [167] init_buckets::dist#6 = init_buckets::screen#0
Coalesced (already) [177] heap_head#87 = heap_head#0
Coalesced [178] malloc::size#8 = malloc::size#1
Not coalescing [191] init_buckets::dist#8 = init_buckets::screen#0
Coalesced [206] init_buckets::dist#9 = init_buckets::dist#3
Coalesced [207] init_buckets::i4#3 = init_buckets::i4#1
Coalesced [208] init_buckets::i3#3 = init_buckets::i3#1
Coalesced [209] init_buckets::i2#4 = init_buckets::i2#1
Coalesced [210] init_buckets::dist#7 = init_buckets::dist#1
Coalesced [211] init_buckets::i1#3 = init_buckets::i1#1
Coalesced [212] init_buckets::i#3 = init_buckets::i#1
Coalesced (already) [213] heap_head#88 = heap_head#0
Coalesced [217] init_squares::squares#5 = init_squares::squares#0
Coalesced [227] init_squares::i#4 = init_squares::i#1
Coalesced [228] init_squares::sqr#4 = init_squares::sqr#1
Coalesced [229] init_squares::squares#4 = init_squares::squares#1
Coalesced [245] atan2_16::yi#17 = atan2_16::$2
Coalesced [249] atan2_16::xi#14 = atan2_16::$7
Coalesced [251] atan2_16::yi#19 = atan2_16::yi#0
Coalesced [252] atan2_16::xi#16 = atan2_16::xi#0
Coalesced [255] atan2_16::angle#22 = atan2_16::angle#12
Coalesced [260] atan2_16::angle#27 = atan2_16::angle#4
Coalesced [264] atan2_16::return#6 = atan2_16::angle#5
Coalesced [267] atan2_16::return#5 = atan2_16::angle#11
Coalesced [268] atan2_16::angle#26 = atan2_16::angle#1
Not coalescing [269] atan2_16::shift#5 = atan2_16::i#2
Not coalescing [270] atan2_16::xd#10 = atan2_16::xi#3
Not coalescing [271] atan2_16::yd#10 = atan2_16::yi#3
Coalesced [277] atan2_16::yd#13 = atan2_16::yd#2
Coalesced [278] atan2_16::xd#13 = atan2_16::xd#2
Coalesced [285] atan2_16::yi#21 = atan2_16::yi#2
Coalesced [286] atan2_16::angle#25 = atan2_16::angle#3
Coalesced [287] atan2_16::xi#18 = atan2_16::xi#2
Coalesced [291] atan2_16::yi#18 = atan2_16::yi#8
Coalesced [292] atan2_16::xi#15 = atan2_16::xi#8
Coalesced [293] atan2_16::i#12 = atan2_16::i#1
Coalesced [294] atan2_16::angle#21 = atan2_16::angle#13
Coalesced (already) [295] atan2_16::angle#23 = atan2_16::angle#13
Coalesced [300] atan2_16::yi#20 = atan2_16::yi#1
Coalesced [301] atan2_16::angle#24 = atan2_16::angle#2
Coalesced [302] atan2_16::xi#17 = atan2_16::xi#1
Coalesced [303] atan2_16::yd#12 = atan2_16::yd#3
Coalesced [304] atan2_16::xd#12 = atan2_16::xd#3
Coalesced [308] atan2_16::shift#6 = atan2_16::shift#1
Coalesced [309] atan2_16::xd#11 = atan2_16::xd#1
Coalesced [310] atan2_16::yd#11 = atan2_16::yd#1
Not coalescing [311] atan2_16::xi#13 = atan2_16::x#0
Not coalescing [312] atan2_16::yi#16 = atan2_16::y#0
Coalesced [313] bsearch16u::items#10 = bsearch16u::items#1
Coalesced [318] bsearch16u::return#9 = bsearch16u::$2
Coalesced [320] bsearch16u::return#6 = bsearch16u::return#2
Coalesced [323] bsearch16u::return#8 = bsearch16u::items#2
Not coalescing [329] bsearch16u::return#7 = bsearch16u::pivot#0
Coalesced [333] bsearch16u::num#10 = bsearch16u::num#1
Coalesced [334] bsearch16u::items#12 = bsearch16u::items#0
Coalesced [337] bsearch16u::num#9 = bsearch16u::num#0
Coalesced [338] bsearch16u::items#11 = bsearch16u::items#8
Coalesced [339] bsearch16u::num#11 = bsearch16u::num#3
Coalesced (already) [340] bsearch16u::items#13 = bsearch16u::items#2
Coalesced down to 45 phi equivalence classes
Culled Empty Block label __start::@7
Culled Empty Block label main::@19
Culled Empty Block label main::@4
Culled Empty Block label main::@15
Culled Empty Block label init_dist_screen::@15
Culled Empty Block label init_angle_screen::@6
Culled Empty Block label init_buckets::@4
Culled Empty Block label init_buckets::@6
Culled Empty Block label init_buckets::@15
Culled Empty Block label init_buckets::@14
Culled Empty Block label init_buckets::@13
Culled Empty Block label init_buckets::@12
Culled Empty Block label init_buckets::@11
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 bsearch16u::@1
Culled Empty Block label bsearch16u::@11
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 main::@5 to main::@4
Renumbering block main::@6 to main::@5
Renumbering block main::@7 to main::@6
Renumbering block main::@8 to main::@7
Renumbering block main::@9 to main::@8
Renumbering block main::@10 to main::@9
Renumbering block main::@11 to main::@10
Renumbering block main::@12 to main::@11
Renumbering block main::@13 to main::@12
Renumbering block main::@14 to main::@13
Renumbering block main::@16 to main::@14
Renumbering block main::@17 to main::@15
Renumbering block main::@18 to main::@16
Renumbering block main::@20 to main::@17
Renumbering block main::@21 to main::@18
Renumbering block init_buckets::@5 to init_buckets::@4
Renumbering block init_buckets::@7 to init_buckets::@5
Renumbering block init_buckets::@8 to init_buckets::@6
Renumbering block init_buckets::@9 to init_buckets::@7
Renumbering block init_buckets::@10 to init_buckets::@8
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 init_dist_screen
Adding NOP phi() at start of init_buckets
Adding NOP phi() at start of init_squares
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
  [6] call malloc
  to:__start::@4
__start::@4: scope:[__start]  from __start::@3
  [7] BUCKET_SIZES#0 = (char *)(void *)malloc::mem#0
  [8] call malloc
  to:__start::@5
__start::@5: scope:[__start]  from __start::@4
  [9] BUCKETS#0 = (unsigned int **)(void *)malloc::mem#0
  [10] call malloc
  to:__start::@6
__start::@6: scope:[__start]  from __start::@5
  [11] BUCKET_IDX#0 = (char *)(void *)malloc::mem#0
  to:__start::@1
__start::@1: scope:[__start]  from __start::@6
  [12] phi()
  [13] call main
  to:__start::@return
__start::@return: scope:[__start]  from __start::@1
  [14] return 
  to:@return

void * malloc(unsigned int size)
malloc: scope:[malloc]  from __start::@2 __start::@3 __start::@4 __start::@5 __start::__init1 init_buckets::@4 init_squares
  [15] malloc::size#7 = phi( __start::@2/$3e8, __start::@3/NUM_BUCKETS*SIZEOF_CHAR, __start::@4/NUM_BUCKETS*SIZEOF_POINTER, __start::@5/NUM_BUCKETS*SIZEOF_CHAR, __start::__init1/$3e8, init_buckets::@4/malloc::size#1, init_squares/NUM_SQUARES#2*SIZEOF_UNSIGNED_INT )
  [15] heap_head#19 = phi( __start::@2/heap_head#0, __start::@3/heap_head#0, __start::@4/heap_head#0, __start::@5/heap_head#0, __start::__init1/HEAP_TOP, init_buckets::@4/heap_head#0, init_squares/heap_head#0 )
  [16] malloc::mem#0 = heap_head#19 - malloc::size#7
  [17] heap_head#0 = malloc::mem#0
  to:malloc::@return
malloc::@return: scope:[malloc]  from malloc
  [18] return 
  to:@return

void main()
main: scope:[main]  from __start::@1
  asm { sei  }
  [20] init_dist_screen::screen#0 = SCREEN_DIST#0
  [21] call init_dist_screen
  to:main::@15
main::@15: scope:[main]  from main
  [22] init_angle_screen::screen#0 = SCREEN_ANGLE#0
  [23] call init_angle_screen
  to:main::@16
main::@16: scope:[main]  from main::@15
  [24] init_buckets::screen#0 = SCREEN_DIST#0
  [25] call init_buckets
  to:main::@1
main::@1: scope:[main]  from main::@11 main::@12 main::@16
  [26] main::bucket_idx#6 = phi( main::@11/main::bucket_idx#6, main::@12/main::bucket_idx#1, main::@16/0 )
  to:main::@2
main::@2: scope:[main]  from main::@1 main::@2
  [27] if(*RASTER!=$ff) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@2
  [28] *BORDER_COLOR = ++ *BORDER_COLOR
  [29] main::$23 = main::bucket_idx#6 << 1
  [30] main::bucket#0 = BUCKETS#0[main::$23]
  [31] main::bucket_size#0 = BUCKET_SIZES#0[main::bucket_idx#6]
  [32] if(main::bucket_size#0<=0) goto main::@4
  to:main::@5
main::@5: scope:[main]  from main::@3 main::@8
  [33] main::min_angle#2 = phi( main::@3/$ff, main::@8/main::min_angle#5 )
  [33] main::min_offset#2 = phi( main::@3/$ffff, main::@8/main::min_offset#8 )
  [33] main::i#2 = phi( main::@3/0, main::@8/main::i#1 )
  [34] if(main::i#2<main::bucket_size#0) goto main::@6
  to:main::@7
main::@7: scope:[main]  from main::@5
  [35] if(main::min_offset#2==$ffff) goto main::@4
  to:main::@11
main::@11: scope:[main]  from main::@7
  [36] main::fill1#0 = SCREEN_FILL + main::min_offset#2
  [37] *main::fill1#0 = FILL_CHAR
  [38] *BORDER_COLOR = -- *BORDER_COLOR
  to:main::@1
main::@4: scope:[main]  from main::@3 main::@7
  [39] main::bucket_idx#1 = ++ main::bucket_idx#6
  [40] if(main::bucket_idx#1!=NUM_BUCKETS) goto main::@12
  to:main::@13
main::@13: scope:[main]  from main::@4
  [41] *BORDER_COLOR = -- *BORDER_COLOR
  to:main::@14
main::@14: scope:[main]  from main::@13 main::@14
  [42] *(COLS+$3e7) = ++ *(COLS+$3e7)
  to:main::@14
main::@12: scope:[main]  from main::@4
  [43] *BORDER_COLOR = -- *BORDER_COLOR
  to:main::@1
main::@6: scope:[main]  from main::@5
  [44] main::$24 = main::i#2 << 1
  [45] main::offset#0 = main::bucket#0[main::$24]
  [46] main::fill#0 = SCREEN_FILL + main::offset#0
  [47] if(*main::fill#0==FILL_CHAR) goto main::@18
  to:main::@9
main::@9: scope:[main]  from main::@6
  [48] main::angle#0 = SCREEN_ANGLE#0 + main::offset#0
  [49] if(*main::angle#0>main::min_angle#2) goto main::@17
  to:main::@10
main::@10: scope:[main]  from main::@9
  [50] main::min_angle#1 = *main::angle#0
  to:main::@8
main::@8: scope:[main]  from main::@10 main::@17 main::@18
  [51] main::min_angle#5 = phi( main::@17/main::min_angle#2, main::@10/main::min_angle#1, main::@18/main::min_angle#2 )
  [51] main::min_offset#5 = phi( main::@17/main::min_offset#9, main::@10/main::offset#0, main::@18/main::min_offset#11 )
  [52] main::i#1 = ++ main::i#2
  [53] main::min_offset#8 = main::min_offset#5
  to:main::@5
main::@17: scope:[main]  from main::@9
  [54] main::min_offset#9 = main::min_offset#2
  to:main::@8
main::@18: scope:[main]  from main::@6
  [55] main::min_offset#11 = main::min_offset#2
  to:main::@8

void init_dist_screen(char *screen)
init_dist_screen: scope:[init_dist_screen]  from main
  [56] phi()
  [57] call init_squares
  to:init_dist_screen::@11
init_dist_screen::@11: scope:[init_dist_screen]  from init_dist_screen
  [58] 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
  [59] 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 )
  [59] 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 )
  [59] init_dist_screen::y#10 = phi( init_dist_screen::@11/0, init_dist_screen::@7/init_dist_screen::y#1 )
  [60] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1
  [61] 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
  [62] 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
  [63] init_dist_screen::yd#0 = phi( init_dist_screen::@2/init_dist_screen::$7, init_dist_screen::@3/init_dist_screen::$5 )
  [64] sqr::val#0 = init_dist_screen::yd#0
  [65] call sqr
  [66] sqr::return#2 = sqr::return#0
  to:init_dist_screen::@12
init_dist_screen::@12: scope:[init_dist_screen]  from init_dist_screen::@4
  [67] 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
  [68] init_dist_screen::xb#2 = phi( init_dist_screen::@12/$27, init_dist_screen::@14/init_dist_screen::xb#1 )
  [68] init_dist_screen::x#2 = phi( init_dist_screen::@12/0, init_dist_screen::@14/init_dist_screen::x#1 )
  [69] 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
  [70] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28
  [71] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28
  [72] init_dist_screen::y#1 = ++ init_dist_screen::y#10
  [73] 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
  [74] return 
  to:@return
init_dist_screen::@6: scope:[init_dist_screen]  from init_dist_screen::@5
  [75] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1
  [76] 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
  [77] 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
  [78] init_dist_screen::xd#0 = phi( init_dist_screen::@8/init_dist_screen::$16, init_dist_screen::@9/init_dist_screen::$14 )
  [79] sqr::val#1 = init_dist_screen::xd#0
  [80] call sqr
  [81] sqr::return#3 = sqr::return#0
  to:init_dist_screen::@13
init_dist_screen::@13: scope:[init_dist_screen]  from init_dist_screen::@10
  [82] init_dist_screen::xds#0 = sqr::return#3
  [83] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0
  [84] sqrt::val#0 = init_dist_screen::ds#0
  [85] call sqrt
  [86] sqrt::return#2 = sqrt::return#0
  to:init_dist_screen::@14
init_dist_screen::@14: scope:[init_dist_screen]  from init_dist_screen::@13
  [87] init_dist_screen::d#0 = sqrt::return#2
  [88] init_dist_screen::screen_topline#11[init_dist_screen::x#2] = init_dist_screen::d#0
  [89] init_dist_screen::screen_bottomline#11[init_dist_screen::x#2] = init_dist_screen::d#0
  [90] init_dist_screen::screen_topline#11[init_dist_screen::xb#2] = init_dist_screen::d#0
  [91] init_dist_screen::screen_bottomline#11[init_dist_screen::xb#2] = init_dist_screen::d#0
  [92] init_dist_screen::x#1 = ++ init_dist_screen::x#2
  [93] 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
  [94] 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
  [95] 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::@15
  [96] init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#0 + (unsigned int)$28*$c
  [97] 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
  [98] 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 )
  [98] 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 )
  [98] 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
  [99] init_angle_screen::xb#2 = phi( init_angle_screen::@1/$27, init_angle_screen::@5/init_angle_screen::xb#1 )
  [99] init_angle_screen::x#2 = phi( init_angle_screen::@1/0, init_angle_screen::@5/init_angle_screen::x#1 )
  [100] 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
  [101] init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#6 - $28
  [102] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28
  [103] init_angle_screen::y#1 = ++ init_angle_screen::y#5
  [104] 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
  [105] return 
  to:@return
init_angle_screen::@3: scope:[init_angle_screen]  from init_angle_screen::@2
  [106] init_angle_screen::$3 = init_angle_screen::x#2 << 1
  [107] init_angle_screen::$4 = $27 - init_angle_screen::$3
  [108] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0
  [109] init_angle_screen::$6 = init_angle_screen::y#5 << 1
  [110] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0
  [111] atan2_16::x#0 = (int)init_angle_screen::xw#0
  [112] atan2_16::y#0 = (int)init_angle_screen::yw#0
  [113] call atan2_16
  [114] 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
  [115] init_angle_screen::angle_w#0 = atan2_16::return#2
  [116] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
  [117] init_angle_screen::ang_w#0 = byte1  init_angle_screen::$9
  [118] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0
  [119] init_angle_screen::$11 = - init_angle_screen::ang_w#0
  [120] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11
  [121] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
  [122] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12
  [123] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
  [124] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13
  [125] init_angle_screen::x#1 = ++ init_angle_screen::x#2
  [126] init_angle_screen::xb#1 = -- init_angle_screen::xb#2
  to:init_angle_screen::@2

void init_buckets(char *screen)
init_buckets: scope:[init_buckets]  from main::@16
  [127] phi()
  to:init_buckets::@1
init_buckets::@1: scope:[init_buckets]  from init_buckets init_buckets::@1
  [128] init_buckets::i#2 = phi( init_buckets/0, init_buckets::@1/init_buckets::i#1 )
  [129] BUCKET_SIZES#0[init_buckets::i#2] = 0
  [130] init_buckets::i#1 = ++ init_buckets::i#2
  [131] if(init_buckets::i#1!=NUM_BUCKETS-1+1) goto init_buckets::@1
  to:init_buckets::@2
init_buckets::@2: scope:[init_buckets]  from init_buckets::@1
  [132] init_buckets::dist#6 = init_buckets::screen#0
  to:init_buckets::@3
init_buckets::@3: scope:[init_buckets]  from init_buckets::@2 init_buckets::@3
  [133] init_buckets::i1#2 = phi( init_buckets::@2/0, init_buckets::@3/init_buckets::i1#1 )
  [133] init_buckets::dist#4 = phi( init_buckets::@2/init_buckets::dist#6, init_buckets::@3/init_buckets::dist#1 )
  [134] BUCKET_SIZES#0[*init_buckets::dist#4] = ++ BUCKET_SIZES#0[*init_buckets::dist#4]
  [135] init_buckets::dist#1 = ++ init_buckets::dist#4
  [136] init_buckets::i1#1 = ++ init_buckets::i1#2
  [137] if(init_buckets::i1#1!=$3e8) goto init_buckets::@3
  to:init_buckets::@4
init_buckets::@4: scope:[init_buckets]  from init_buckets::@3 init_buckets::@8
  [138] init_buckets::i2#2 = phi( init_buckets::@8/init_buckets::i2#1, init_buckets::@3/0 )
  [139] init_buckets::$15 = BUCKET_SIZES#0 + init_buckets::i2#2
  [140] malloc::size#1 = *init_buckets::$15 << 1
  [141] call malloc
  to:init_buckets::@8
init_buckets::@8: scope:[init_buckets]  from init_buckets::@4
  [142] init_buckets::$4 = (void *)malloc::mem#0
  [143] init_buckets::$11 = init_buckets::i2#2 << 1
  [144] init_buckets::$16 = BUCKETS#0 + init_buckets::$11
  [145] *init_buckets::$16 = (unsigned int *)init_buckets::$4
  [146] init_buckets::i2#1 = ++ init_buckets::i2#2
  [147] if(init_buckets::i2#1!=NUM_BUCKETS-1+1) goto init_buckets::@4
  to:init_buckets::@5
init_buckets::@5: scope:[init_buckets]  from init_buckets::@5 init_buckets::@8
  [148] init_buckets::i3#2 = phi( init_buckets::@8/0, init_buckets::@5/init_buckets::i3#1 )
  [149] BUCKET_IDX#0[init_buckets::i3#2] = 0
  [150] init_buckets::i3#1 = ++ init_buckets::i3#2
  [151] if(init_buckets::i3#1!=NUM_BUCKETS-1+1) goto init_buckets::@5
  to:init_buckets::@6
init_buckets::@6: scope:[init_buckets]  from init_buckets::@5
  [152] init_buckets::dist#8 = init_buckets::screen#0
  to:init_buckets::@7
init_buckets::@7: scope:[init_buckets]  from init_buckets::@6 init_buckets::@7
  [153] init_buckets::i4#2 = phi( init_buckets::@6/0, init_buckets::@7/init_buckets::i4#1 )
  [153] init_buckets::dist#5 = phi( init_buckets::@6/init_buckets::dist#8, init_buckets::@7/init_buckets::dist#3 )
  [154] init_buckets::distance#0 = *init_buckets::dist#5
  [155] init_buckets::$14 = (unsigned int)init_buckets::distance#0
  [156] init_buckets::$12 = init_buckets::$14 << 1
  [157] init_buckets::$17 = BUCKETS#0 + init_buckets::$12
  [158] init_buckets::bucket#0 = *init_buckets::$17
  [159] init_buckets::$7 = init_buckets::dist#5 - init_buckets::screen#0
  [160] init_buckets::$13 = BUCKET_IDX#0[init_buckets::distance#0] << 1
  [161] init_buckets::bucket#0[init_buckets::$13] = init_buckets::$7
  [162] BUCKET_IDX#0[init_buckets::distance#0] = ++ BUCKET_IDX#0[init_buckets::distance#0]
  [163] init_buckets::dist#3 = ++ init_buckets::dist#5
  [164] init_buckets::i4#1 = ++ init_buckets::i4#2
  [165] if(init_buckets::i4#1!=$3e8) goto init_buckets::@7
  to:init_buckets::@return
init_buckets::@return: scope:[init_buckets]  from init_buckets::@7
  [166] return 
  to:@return

void init_squares()
init_squares: scope:[init_squares]  from init_dist_screen
  [167] phi()
  [168] call malloc
  to:init_squares::@3
init_squares::@3: scope:[init_squares]  from init_squares
  [169] SQUARES#0 = (void *)malloc::mem#0
  [170] 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
  [171] init_squares::squares#2 = phi( init_squares::@2/init_squares::squares#1, init_squares::@3/init_squares::squares#0 )
  [171] init_squares::sqr#2 = phi( init_squares::@2/init_squares::sqr#1, init_squares::@3/0 )
  [171] init_squares::i#2 = phi( init_squares::@2/init_squares::i#1, init_squares::@3/0 )
  [172] 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
  [173] return 
  to:@return
init_squares::@2: scope:[init_squares]  from init_squares::@1
  [174] *init_squares::squares#2 = init_squares::sqr#2
  [175] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_UNSIGNED_INT
  [176] init_squares::$3 = init_squares::i#2 << 1
  [177] init_squares::$4 = init_squares::$3 + 1
  [178] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4
  [179] 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
  [180] sqr::val#2 = phi( init_dist_screen::@10/sqr::val#1, init_dist_screen::@4/sqr::val#0 )
  [181] sqr::$0 = sqr::val#2 << 1
  [182] sqr::return#0 = ((unsigned int *)SQUARES#0)[sqr::$0]
  to:sqr::@return
sqr::@return: scope:[sqr]  from sqr
  [183] return 
  to:@return

char sqrt(unsigned int val)
sqrt: scope:[sqrt]  from init_dist_screen::@13
  [184] bsearch16u::key#0 = sqrt::val#0
  [185] bsearch16u::items#1 = (unsigned int *)SQUARES#0
  [186] call bsearch16u
  [187] bsearch16u::return#3 = bsearch16u::return#1
  to:sqrt::@1
sqrt::@1: scope:[sqrt]  from sqrt
  [188] sqrt::found#0 = bsearch16u::return#3
  [189] sqrt::$2 = sqrt::found#0 - (unsigned int *)SQUARES#0
  [190] sqrt::$1 = sqrt::$2 >> 1
  [191] sqrt::return#0 = (char)sqrt::$1
  to:sqrt::@return
sqrt::@return: scope:[sqrt]  from sqrt::@1
  [192] return 
  to:@return

unsigned int atan2_16(int x , int y)
atan2_16: scope:[atan2_16]  from init_angle_screen::@3
  [193] if(atan2_16::y#0>=0) goto atan2_16::@1
  to:atan2_16::@2
atan2_16::@2: scope:[atan2_16]  from atan2_16
  [194] atan2_16::$2 = - atan2_16::y#0
  to:atan2_16::@3
atan2_16::@3: scope:[atan2_16]  from atan2_16::@1 atan2_16::@2
  [195] atan2_16::yi#0 = phi( atan2_16::@1/atan2_16::yi#16, atan2_16::@2/atan2_16::$2 )
  [196] if(atan2_16::x#0>=0) goto atan2_16::@4
  to:atan2_16::@5
atan2_16::@5: scope:[atan2_16]  from atan2_16::@3
  [197] atan2_16::$7 = - atan2_16::x#0
  to:atan2_16::@6
atan2_16::@6: scope:[atan2_16]  from atan2_16::@4 atan2_16::@5
  [198] 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
  [199] atan2_16::angle#12 = phi( atan2_16::@19/atan2_16::angle#13, atan2_16::@6/0 )
  [199] atan2_16::i#2 = phi( atan2_16::@19/atan2_16::i#1, atan2_16::@6/0 )
  [199] atan2_16::xi#3 = phi( atan2_16::@19/atan2_16::xi#8, atan2_16::@6/atan2_16::xi#0 )
  [199] atan2_16::yi#3 = phi( atan2_16::@19/atan2_16::yi#8, atan2_16::@6/atan2_16::yi#0 )
  [200] 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
  [201] atan2_16::angle#6 = phi( atan2_16::@10/atan2_16::angle#12, atan2_16::@19/atan2_16::angle#13 )
  [202] atan2_16::angle#1 = atan2_16::angle#6 >> 1
  [203] if(atan2_16::x#0>=0) goto atan2_16::@7
  to:atan2_16::@21
atan2_16::@21: scope:[atan2_16]  from atan2_16::@12
  [204] 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
  [205] atan2_16::angle#11 = phi( atan2_16::@12/atan2_16::angle#1, atan2_16::@21/atan2_16::angle#4 )
  [206] if(atan2_16::y#0>=0) goto atan2_16::@8
  to:atan2_16::@9
atan2_16::@9: scope:[atan2_16]  from atan2_16::@7
  [207] 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
  [208] 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
  [209] return 
  to:@return
atan2_16::@11: scope:[atan2_16]  from atan2_16::@10
  [210] atan2_16::shift#5 = atan2_16::i#2
  [211] atan2_16::xd#10 = atan2_16::xi#3
  [212] 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
  [213] atan2_16::yd#3 = phi( atan2_16::@11/atan2_16::yd#10, atan2_16::@14/atan2_16::yd#1 )
  [213] atan2_16::xd#3 = phi( atan2_16::@11/atan2_16::xd#10, atan2_16::@14/atan2_16::xd#1 )
  [213] atan2_16::shift#2 = phi( atan2_16::@11/atan2_16::shift#5, atan2_16::@14/atan2_16::shift#1 )
  [214] if(atan2_16::shift#2>=2) goto atan2_16::@14
  to:atan2_16::@15
atan2_16::@15: scope:[atan2_16]  from atan2_16::@13
  [215] if(0==atan2_16::shift#2) goto atan2_16::@17
  to:atan2_16::@16
atan2_16::@16: scope:[atan2_16]  from atan2_16::@15
  [216] atan2_16::xd#2 = atan2_16::xd#3 >> 1
  [217] 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
  [218] atan2_16::xd#5 = phi( atan2_16::@15/atan2_16::xd#3, atan2_16::@16/atan2_16::xd#2 )
  [218] atan2_16::yd#5 = phi( atan2_16::@15/atan2_16::yd#3, atan2_16::@16/atan2_16::yd#2 )
  [219] if(atan2_16::yi#3>=0) goto atan2_16::@18
  to:atan2_16::@20
atan2_16::@20: scope:[atan2_16]  from atan2_16::@17
  [220] atan2_16::xi#2 = atan2_16::xi#3 - atan2_16::yd#5
  [221] atan2_16::yi#2 = atan2_16::yi#3 + atan2_16::xd#5
  [222] atan2_16::$23 = atan2_16::i#2 << 1
  [223] 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
  [224] atan2_16::xi#8 = phi( atan2_16::@18/atan2_16::xi#1, atan2_16::@20/atan2_16::xi#2 )
  [224] atan2_16::angle#13 = phi( atan2_16::@18/atan2_16::angle#2, atan2_16::@20/atan2_16::angle#3 )
  [224] atan2_16::yi#8 = phi( atan2_16::@18/atan2_16::yi#1, atan2_16::@20/atan2_16::yi#2 )
  [225] atan2_16::i#1 = ++ atan2_16::i#2
  [226] 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
  [227] atan2_16::xi#1 = atan2_16::xi#3 + atan2_16::yd#5
  [228] atan2_16::yi#1 = atan2_16::yi#3 - atan2_16::xd#5
  [229] atan2_16::$22 = atan2_16::i#2 << 1
  [230] 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
  [231] atan2_16::xd#1 = atan2_16::xd#3 >> 2
  [232] atan2_16::yd#1 = atan2_16::yd#3 >> 2
  [233] atan2_16::shift#1 = atan2_16::shift#2 - 2
  to:atan2_16::@13
atan2_16::@4: scope:[atan2_16]  from atan2_16::@3
  [234] atan2_16::xi#13 = atan2_16::x#0
  to:atan2_16::@6
atan2_16::@1: scope:[atan2_16]  from atan2_16
  [235] atan2_16::yi#16 = atan2_16::y#0
  to:atan2_16::@3

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

null depth in calling loop Loop head: init_buckets::@4 tails: init_buckets::@8 blocks: init_buckets::@8 init_buckets::@4  in scope malloc

VARIABLE REGISTER WEIGHTS
unsigned int **BUCKETS
unsigned int **BUCKETS#0 // 26.645569620253163
char *BUCKET_IDX
char *BUCKET_IDX#0 // 85.23404255319149
char *BUCKET_SIZES
char *BUCKET_SIZES#0 // 50.70370370370371
char NUM_SQUARES
char *SCREEN_ANGLE
char *SCREEN_ANGLE#0 // 23.58139534883721
char *SCREEN_DIST
char *SCREEN_DIST#0 // 1.5999999999999999
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
char *heap_head
char *heap_head#0 // 129.1505376344086
char *heap_head#19 // 12011.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_buckets(char *screen)
unsigned int init_buckets::$11 // 2002.0
unsigned int init_buckets::$12 // 2002.0
char init_buckets::$13 // 2002.0
unsigned int init_buckets::$14 // 2002.0
char *init_buckets::$15 // 2002.0
unsigned int **init_buckets::$16 // 2002.0
unsigned int **init_buckets::$17 // 2002.0
void *init_buckets::$4 // 333.6666666666667
unsigned int init_buckets::$7 // 1001.0
unsigned int *init_buckets::bucket
unsigned int *init_buckets::bucket#0 // 667.3333333333334
char *init_buckets::dist
char *init_buckets::dist#1 // 667.3333333333334
char *init_buckets::dist#3 // 667.3333333333334
char *init_buckets::dist#4 // 2052.5
char *init_buckets::dist#5 // 410.5
char *init_buckets::dist#6 // 202.0
char *init_buckets::dist#8 // 202.0
char init_buckets::distance
char init_buckets::distance#0 // 500.5
char init_buckets::i
char init_buckets::i#1 // 1501.5
char init_buckets::i#2 // 1501.5
unsigned int init_buckets::i1
unsigned int init_buckets::i1#1 // 1501.5
unsigned int init_buckets::i1#2 // 667.3333333333334
unsigned int init_buckets::i2
unsigned int init_buckets::i2#1 // 1501.5
unsigned int init_buckets::i2#2 // 500.5
char init_buckets::i3
char init_buckets::i3#1 // 1501.5
char init_buckets::i3#2 // 1501.5
unsigned int init_buckets::i4
unsigned int init_buckets::i4#1 // 1501.5
unsigned int init_buckets::i4#2 // 182.0
char *init_buckets::screen
char *init_buckets::screen#0 // 30.349999999999998
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::$23 // 202.0
char main::$24 // 2002.0
char *main::angle
char *main::angle#0 // 1501.5
unsigned int *main::bucket
unsigned int *main::bucket#0 // 64.82352941176471
char main::bucket_idx
char main::bucket_idx#1 // 101.0
char main::bucket_idx#6 // 24.24
char main::bucket_size
char main::bucket_size#0 // 75.1875
char *main::fill
char *main::fill#0 // 2002.0
char *main::fill1
char *main::fill1#0 // 202.0
char main::i
char main::i#1 // 1001.0
char main::i#2 // 333.6666666666667
char main::min_angle
char main::min_angle#1 // 2002.0
char main::min_angle#2 // 400.4
char main::min_angle#5 // 1334.6666666666667
unsigned int main::min_offset
unsigned int main::min_offset#11 // 2002.0
unsigned int main::min_offset#2 // 356.11111111111114
unsigned int main::min_offset#5 // 2002.0
unsigned int main::min_offset#8 // 2002.0
unsigned int main::min_offset#9 // 2002.0
unsigned int main::offset
unsigned int main::offset#0 // 667.3333333333334
void * malloc(unsigned int size)
char *malloc::mem
char *malloc::mem#0 // 2000.2
void *malloc::return
unsigned int malloc::size
unsigned int malloc::size#1 // 2002.0
unsigned int malloc::size#7 // 11002.0
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#19 heap_head#0 ]
[ malloc::size#7 malloc::size#1 ]
[ main::bucket_idx#6 main::bucket_idx#1 ]
[ main::i#2 main::i#1 ]
[ main::min_offset#2 main::min_offset#8 ]
[ main::min_angle#2 main::min_angle#5 main::min_angle#1 ]
[ main::min_offset#5 main::min_offset#9 main::offset#0 main::min_offset#11 ]
[ 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 ]
[ init_buckets::i#2 init_buckets::i#1 ]
[ init_buckets::dist#4 init_buckets::dist#6 init_buckets::dist#1 ]
[ init_buckets::i1#2 init_buckets::i1#1 ]
[ init_buckets::i2#2 init_buckets::i2#1 ]
[ init_buckets::i3#2 init_buckets::i3#1 ]
[ init_buckets::dist#5 init_buckets::dist#8 init_buckets::dist#3 ]
[ init_buckets::i4#2 init_buckets::i4#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 BUCKET_SIZES#0 to live range equivalence class [ BUCKET_SIZES#0 ]
Added variable BUCKETS#0 to live range equivalence class [ BUCKETS#0 ]
Added variable BUCKET_IDX#0 to live range equivalence class [ BUCKET_IDX#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_buckets::screen#0 to live range equivalence class [ init_buckets::screen#0 ]
Added variable main::$23 to live range equivalence class [ main::$23 ]
Added variable main::bucket#0 to live range equivalence class [ main::bucket#0 ]
Added variable main::bucket_size#0 to live range equivalence class [ main::bucket_size#0 ]
Added variable main::fill1#0 to live range equivalence class [ main::fill1#0 ]
Added variable main::$24 to live range equivalence class [ main::$24 ]
Added variable main::fill#0 to live range equivalence class [ main::fill#0 ]
Added variable main::angle#0 to live range equivalence class [ main::angle#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 init_buckets::$15 to live range equivalence class [ init_buckets::$15 ]
Added variable init_buckets::$4 to live range equivalence class [ init_buckets::$4 ]
Added variable init_buckets::$11 to live range equivalence class [ init_buckets::$11 ]
Added variable init_buckets::$16 to live range equivalence class [ init_buckets::$16 ]
Added variable init_buckets::distance#0 to live range equivalence class [ init_buckets::distance#0 ]
Added variable init_buckets::$14 to live range equivalence class [ init_buckets::$14 ]
Added variable init_buckets::$12 to live range equivalence class [ init_buckets::$12 ]
Added variable init_buckets::$17 to live range equivalence class [ init_buckets::$17 ]
Added variable init_buckets::bucket#0 to live range equivalence class [ init_buckets::bucket#0 ]
Added variable init_buckets::$7 to live range equivalence class [ init_buckets::$7 ]
Added variable init_buckets::$13 to live range equivalence class [ init_buckets::$13 ]
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#19 heap_head#0 ]
[ malloc::size#7 malloc::size#1 ]
[ main::bucket_idx#6 main::bucket_idx#1 ]
[ main::i#2 main::i#1 ]
[ main::min_offset#2 main::min_offset#8 ]
[ main::min_angle#2 main::min_angle#5 main::min_angle#1 ]
[ main::min_offset#5 main::min_offset#9 main::offset#0 main::min_offset#11 ]
[ 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 ]
[ init_buckets::i#2 init_buckets::i#1 ]
[ init_buckets::dist#4 init_buckets::dist#6 init_buckets::dist#1 ]
[ init_buckets::i1#2 init_buckets::i1#1 ]
[ init_buckets::i2#2 init_buckets::i2#1 ]
[ init_buckets::i3#2 init_buckets::i3#1 ]
[ init_buckets::dist#5 init_buckets::dist#8 init_buckets::dist#3 ]
[ init_buckets::i4#2 init_buckets::i4#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 ]
[ BUCKET_SIZES#0 ]
[ BUCKETS#0 ]
[ BUCKET_IDX#0 ]
[ malloc::mem#0 ]
[ init_angle_screen::screen#0 ]
[ init_buckets::screen#0 ]
[ main::$23 ]
[ main::bucket#0 ]
[ main::bucket_size#0 ]
[ main::fill1#0 ]
[ main::$24 ]
[ main::fill#0 ]
[ main::angle#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 ]
[ init_buckets::$15 ]
[ init_buckets::$4 ]
[ init_buckets::$11 ]
[ init_buckets::$16 ]
[ init_buckets::distance#0 ]
[ init_buckets::$14 ]
[ init_buckets::$12 ]
[ init_buckets::$17 ]
[ init_buckets::bucket#0 ]
[ init_buckets::$7 ]
[ init_buckets::$13 ]
[ 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#19 heap_head#0 ]
Allocated zp[2]:4 [ malloc::size#7 malloc::size#1 ]
Allocated zp[1]:6 [ main::bucket_idx#6 main::bucket_idx#1 ]
Allocated zp[1]:7 [ main::i#2 main::i#1 ]
Allocated zp[2]:8 [ main::min_offset#2 main::min_offset#8 ]
Allocated zp[1]:10 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ]
Allocated zp[2]:11 [ main::min_offset#5 main::min_offset#9 main::offset#0 main::min_offset#11 ]
Allocated zp[1]:13 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
Allocated zp[2]:14 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ]
Allocated zp[2]:16 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ]
Allocated zp[1]:18 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
Allocated zp[1]:19 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Allocated zp[1]:20 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Allocated zp[1]:21 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ]
Allocated zp[1]:22 [ init_angle_screen::y#5 init_angle_screen::y#1 ]
Allocated zp[2]:23 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ]
Allocated zp[2]:25 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ]
Allocated zp[1]:27 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
Allocated zp[1]:28 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Allocated zp[1]:29 [ init_buckets::i#2 init_buckets::i#1 ]
Allocated zp[2]:30 [ init_buckets::dist#4 init_buckets::dist#6 init_buckets::dist#1 ]
Allocated zp[2]:32 [ init_buckets::i1#2 init_buckets::i1#1 ]
Allocated zp[2]:34 [ init_buckets::i2#2 init_buckets::i2#1 ]
Allocated zp[1]:36 [ init_buckets::i3#2 init_buckets::i3#1 ]
Allocated zp[2]:37 [ init_buckets::dist#5 init_buckets::dist#8 init_buckets::dist#3 ]
Allocated zp[2]:39 [ init_buckets::i4#2 init_buckets::i4#1 ]
Allocated zp[1]:41 [ init_squares::i#2 init_squares::i#1 ]
Allocated zp[2]:42 [ init_squares::sqr#2 init_squares::sqr#1 ]
Allocated zp[2]:44 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ]
Allocated zp[1]:46 [ sqr::val#2 sqr::val#1 sqr::val#0 ]
Allocated zp[2]:47 [ 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]:49 [ 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]:51 [ atan2_16::i#2 atan2_16::i#1 ]
Allocated zp[2]:52 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ]
Allocated zp[2]:54 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ]
Allocated zp[1]:56 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
Allocated zp[2]:57 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
Allocated zp[2]:59 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
Allocated zp[2]:61 [ 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]:63 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
Allocated zp[2]:64 [ SCREEN_DIST#0 ]
Allocated zp[2]:66 [ SCREEN_ANGLE#0 ]
Allocated zp[2]:68 [ BUCKET_SIZES#0 ]
Allocated zp[2]:70 [ BUCKETS#0 ]
Allocated zp[2]:72 [ BUCKET_IDX#0 ]
Allocated zp[2]:74 [ malloc::mem#0 ]
Allocated zp[2]:76 [ init_angle_screen::screen#0 ]
Allocated zp[2]:78 [ init_buckets::screen#0 ]
Allocated zp[1]:80 [ main::$23 ]
Allocated zp[2]:81 [ main::bucket#0 ]
Allocated zp[1]:83 [ main::bucket_size#0 ]
Allocated zp[2]:84 [ main::fill1#0 ]
Allocated zp[1]:86 [ main::$24 ]
Allocated zp[2]:87 [ main::fill#0 ]
Allocated zp[2]:89 [ main::angle#0 ]
Allocated zp[1]:91 [ init_dist_screen::y2#0 ]
Allocated zp[2]:92 [ sqr::return#2 ]
Allocated zp[2]:94 [ init_dist_screen::yds#0 ]
Allocated zp[1]:96 [ init_dist_screen::x2#0 ]
Allocated zp[2]:97 [ sqr::return#3 ]
Allocated zp[2]:99 [ init_dist_screen::xds#0 ]
Allocated zp[2]:101 [ init_dist_screen::ds#0 ]
Allocated zp[2]:103 [ sqrt::val#0 ]
Allocated zp[1]:105 [ sqrt::return#2 ]
Allocated zp[1]:106 [ init_dist_screen::d#0 ]
Allocated zp[1]:107 [ init_angle_screen::$3 ]
Allocated zp[1]:108 [ init_angle_screen::$4 ]
Allocated zp[2]:109 [ init_angle_screen::xw#0 ]
Allocated zp[1]:111 [ init_angle_screen::$6 ]
Allocated zp[2]:112 [ init_angle_screen::yw#0 ]
Allocated zp[2]:114 [ atan2_16::x#0 ]
Allocated zp[2]:116 [ atan2_16::y#0 ]
Allocated zp[2]:118 [ atan2_16::return#2 ]
Allocated zp[2]:120 [ init_angle_screen::angle_w#0 ]
Allocated zp[2]:122 [ init_angle_screen::$9 ]
Allocated zp[1]:124 [ init_angle_screen::ang_w#0 ]
Allocated zp[1]:125 [ init_angle_screen::$11 ]
Allocated zp[1]:126 [ init_angle_screen::$12 ]
Allocated zp[1]:127 [ init_angle_screen::$13 ]
Allocated zp[2]:128 [ init_buckets::$15 ]
Allocated zp[2]:130 [ init_buckets::$4 ]
Allocated zp[2]:132 [ init_buckets::$11 ]
Allocated zp[2]:134 [ init_buckets::$16 ]
Allocated zp[1]:136 [ init_buckets::distance#0 ]
Allocated zp[2]:137 [ init_buckets::$14 ]
Allocated zp[2]:139 [ init_buckets::$12 ]
Allocated zp[2]:141 [ init_buckets::$17 ]
Allocated zp[2]:143 [ init_buckets::bucket#0 ]
Allocated zp[2]:145 [ init_buckets::$7 ]
Allocated zp[1]:147 [ init_buckets::$13 ]
Allocated zp[2]:148 [ SQUARES#0 ]
Allocated zp[1]:150 [ init_squares::$3 ]
Allocated zp[1]:151 [ init_squares::$4 ]
Allocated zp[1]:152 [ sqr::$0 ]
Allocated zp[2]:153 [ sqr::return#0 ]
Allocated zp[2]:155 [ bsearch16u::key#0 ]
Allocated zp[2]:157 [ bsearch16u::return#3 ]
Allocated zp[2]:159 [ sqrt::found#0 ]
Allocated zp[2]:161 [ sqrt::$2 ]
Allocated zp[2]:163 [ sqrt::$1 ]
Allocated zp[1]:165 [ sqrt::return#0 ]
Allocated zp[1]:166 [ atan2_16::$23 ]
Allocated zp[1]:167 [ atan2_16::$22 ]
Allocated zp[1]:168 [ bsearch16u::$6 ]
Allocated zp[1]:169 [ bsearch16u::$14 ]
Allocated zp[2]:170 [ bsearch16u::pivot#0 ]
Allocated zp[2]:172 [ 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#19 } }  ) 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 ] { { heap_head#0 = heap_head#19 } }  ) always clobbers reg byte a 
Statement [7] BUCKET_SIZES#0 = (char *)(void *)malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 heap_head#0 ] (  [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 heap_head#0 ] { { heap_head#0 = heap_head#19 } }  ) always clobbers reg byte a 
Statement [9] BUCKETS#0 = (unsigned int **)(void *)malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 heap_head#0 ] (  [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 heap_head#0 ] { { heap_head#0 = heap_head#19 } }  ) always clobbers reg byte a 
Statement [11] BUCKET_IDX#0 = (char *)(void *)malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 ] (  [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 ] { }  ) always clobbers reg byte a 
Statement [16] malloc::mem#0 = heap_head#19 - malloc::size#7 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { }  malloc:4 [ SCREEN_DIST#0 malloc::mem#0 ] { { heap_head#0 = heap_head#19 } }  malloc:6 [ SCREEN_DIST#0 SCREEN_ANGLE#0 malloc::mem#0 ] { { heap_head#0 = heap_head#19 } }  malloc:8 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 malloc::mem#0 ] { { heap_head#0 = heap_head#19 } }  malloc:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 malloc::mem#0 ] { { heap_head#0 = heap_head#19 } }  main:13::init_buckets:25::malloc:141 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::mem#0 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } { heap_head#0 = heap_head#19 } { malloc::size#1 = malloc::size#7 } }  main:13::init_dist_screen:21::init_squares:57::malloc:168 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 malloc::mem#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { heap_head#0 = heap_head#19 } }  ) always clobbers reg byte a 
Statement [17] 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#19 } }  malloc:6 [ SCREEN_DIST#0 SCREEN_ANGLE#0 malloc::mem#0 heap_head#0 ] { { heap_head#0 = heap_head#19 } }  malloc:8 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 malloc::mem#0 heap_head#0 ] { { heap_head#0 = heap_head#19 } }  malloc:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 malloc::mem#0 heap_head#0 ] { { heap_head#0 = heap_head#19 } }  main:13::init_buckets:25::malloc:141 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::mem#0 heap_head#0 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } { heap_head#0 = heap_head#19 } { malloc::size#1 = malloc::size#7 } }  main:13::init_dist_screen:21::init_squares:57::malloc:168 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#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#19 } }  ) always clobbers reg byte a 
Statement [20] init_dist_screen::screen#0 = SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_dist_screen::screen#0 ] ( main:13 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_dist_screen::screen#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [22] init_angle_screen::screen#0 = SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::screen#0 ] ( main:13 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::screen#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [24] init_buckets::screen#0 = SCREEN_DIST#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [27] if(*RASTER!=$ff) goto main::@2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::bucket_idx#6 main::bucket_idx#1 ]
Statement [29] main::$23 = main::bucket_idx#6 << 1 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::$23 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::$23 ] { }  ) always clobbers reg byte a 
Statement [30] main::bucket#0 = BUCKETS#0[main::$23] [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 ] { }  ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::bucket_idx#6 main::bucket_idx#1 ]
Statement [31] main::bucket_size#0 = BUCKET_SIZES#0[main::bucket_idx#6] [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 ] { }  ) always clobbers reg byte a reg byte y 
Statement [35] if(main::min_offset#2==$ffff) goto main::@4 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::min_offset#2 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::min_offset#2 ] { }  ) always clobbers reg byte a 
Statement [36] main::fill1#0 = SCREEN_FILL + main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::fill1#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::fill1#0 ] { }  ) always clobbers reg byte a 
Statement [37] *main::fill1#0 = FILL_CHAR [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] { }  ) always clobbers reg byte a reg byte y 
Statement [44] main::$24 = main::i#2 << 1 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::$24 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::$24 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:83 [ main::bucket_size#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::i#2 main::i#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:10 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ]
Statement [45] main::offset#0 = main::bucket#0[main::$24] [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] { }  ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:83 [ main::bucket_size#0 ]
Removing always clobbered register reg byte y as potential for zp[1]:7 [ main::i#2 main::i#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:10 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ]
Statement [46] main::fill#0 = SCREEN_FILL + main::offset#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::fill#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::fill#0 ] { }  ) always clobbers reg byte a 
Statement [47] if(*main::fill#0==FILL_CHAR) goto main::@18 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] { }  ) always clobbers reg byte a reg byte y 
Statement [48] main::angle#0 = SCREEN_ANGLE#0 + main::offset#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] { }  ) always clobbers reg byte a 
Statement [49] if(*main::angle#0>main::min_angle#2) goto main::@17 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] { }  ) always clobbers reg byte a reg byte y 
Statement [50] main::min_angle#1 = *main::angle#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::offset#0 main::min_angle#1 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::offset#0 main::min_angle#1 ] { }  ) always clobbers reg byte a reg byte y 
Statement [53] main::min_offset#8 = main::min_offset#5 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#1 main::min_offset#8 main::min_angle#5 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#1 main::min_offset#8 main::min_angle#5 ] { }  ) always clobbers reg byte a 
Statement [54] main::min_offset#9 = main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#9 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#9 ] { }  ) always clobbers reg byte a 
Statement [55] main::min_offset#11 = main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#11 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#11 ] { }  ) always clobbers reg byte a 
Statement [58] init_dist_screen::screen_bottomline#0 = init_dist_screen::screen#0 + (unsigned int)$28*$18 [ heap_head#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#0 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [60] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1 [ heap_head#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 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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]:13 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
Statement [62] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [66] sqr::return#2 = sqr::return#0 [ heap_head#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#0 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [67] init_dist_screen::yds#0 = sqr::return#2 [ heap_head#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 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [70] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28 [ heap_head#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#0 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [71] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28 [ heap_head#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#0 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [75] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1 [ heap_head#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 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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]:19 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:20 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Statement [77] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [81] sqr::return#3 = sqr::return#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [82] init_dist_screen::xds#0 = sqr::return#3 [ heap_head#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 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [83] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [84] sqrt::val#0 = init_dist_screen::ds#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [96] init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#0 + (unsigned int)$28*$c [ init_angle_screen::screen_bottomline#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::screen_bottomline#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [97] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [101] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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]:22 [ init_angle_screen::y#5 init_angle_screen::y#1 ]
Statement [102] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [106] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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]:27 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:28 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Statement [107] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [109] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [111] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [112] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [114] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [115] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [116] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [119] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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]:124 [ init_angle_screen::ang_w#0 ]
Statement [121] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [123] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [129] BUCKET_SIZES#0[init_buckets::i#2] = 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i#2 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:29 [ init_buckets::i#2 init_buckets::i#1 ]
Statement [132] init_buckets::dist#6 = init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#6 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#6 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [134] BUCKET_SIZES#0[*init_buckets::dist#4] = ++ BUCKET_SIZES#0[*init_buckets::dist#4] [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [137] if(init_buckets::i1#1!=$3e8) goto init_buckets::@3 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#1 init_buckets::i1#1 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#1 init_buckets::i1#1 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [139] init_buckets::$15 = BUCKET_SIZES#0 + init_buckets::i2#2 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$15 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$15 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } { heap_head#0 = heap_head#19 } { malloc::size#1 = malloc::size#7 } }  ) always clobbers reg byte a 
Statement [140] malloc::size#1 = *init_buckets::$15 << 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 malloc::size#1 init_buckets::screen#0 init_buckets::i2#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 malloc::size#1 init_buckets::screen#0 init_buckets::i2#2 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } { heap_head#0 = heap_head#19 } { malloc::size#1 = malloc::size#7 } }  ) always clobbers reg byte a reg byte y 
Statement [142] init_buckets::$4 = (void *)malloc::mem#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [143] init_buckets::$11 = init_buckets::i2#2 << 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$11 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$11 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [144] init_buckets::$16 = BUCKETS#0 + init_buckets::$11 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$16 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$16 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [145] *init_buckets::$16 = (unsigned int *)init_buckets::$4 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [147] if(init_buckets::i2#1!=NUM_BUCKETS-1+1) goto init_buckets::@4 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#1 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#1 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [149] BUCKET_IDX#0[init_buckets::i3#2] = 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i3#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i3#2 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:36 [ init_buckets::i3#2 init_buckets::i3#1 ]
Statement [152] init_buckets::dist#8 = init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#8 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#8 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [154] init_buckets::distance#0 = *init_buckets::dist#5 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [155] init_buckets::$14 = (unsigned int)init_buckets::distance#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$14 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$14 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:136 [ init_buckets::distance#0 ]
Statement [156] init_buckets::$12 = init_buckets::$14 << 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$12 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$12 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [157] init_buckets::$17 = BUCKETS#0 + init_buckets::$12 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$17 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$17 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [158] init_buckets::bucket#0 = *init_buckets::$17 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:136 [ init_buckets::distance#0 ]
Statement [159] init_buckets::$7 = init_buckets::dist#5 - init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$7 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$7 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [160] init_buckets::$13 = BUCKET_IDX#0[init_buckets::distance#0] << 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$7 init_buckets::$13 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$7 init_buckets::$13 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [161] init_buckets::bucket#0[init_buckets::$13] = init_buckets::$7 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [162] BUCKET_IDX#0[init_buckets::distance#0] = ++ BUCKET_IDX#0[init_buckets::distance#0] [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [165] if(init_buckets::i4#1!=$3e8) goto init_buckets::@7 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#3 init_buckets::i4#1 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#3 init_buckets::i4#1 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [169] SQUARES#0 = (void *)malloc::mem#0 [ heap_head#0 SQUARES#0 ] ( main:13::init_dist_screen:21::init_squares:57 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [170] init_squares::squares#0 = (unsigned int *)SQUARES#0 [ heap_head#0 SQUARES#0 init_squares::squares#0 ] ( main:13::init_dist_screen:21::init_squares:57 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#0 SQUARES#0 init_squares::squares#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [174] *init_squares::squares#2 = init_squares::sqr#2 [ heap_head#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:13::init_dist_screen:21::init_squares:57 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#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]:41 [ init_squares::i#2 init_squares::i#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:41 [ init_squares::i#2 init_squares::i#1 ]
Statement [175] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_UNSIGNED_INT [ heap_head#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:13::init_dist_screen:21::init_squares:57 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#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 [176] init_squares::$3 = init_squares::i#2 << 1 [ heap_head#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:13::init_dist_screen:21::init_squares:57 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#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 [178] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4 [ heap_head#0 SQUARES#0 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:13::init_dist_screen:21::init_squares:57 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#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 [181] sqr::$0 = sqr::val#2 << 1 [ SQUARES#0 sqr::$0 ] ( main:13::init_dist_screen:21::sqr:65 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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:13::init_dist_screen:21::sqr:80 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [182] sqr::return#0 = ((unsigned int *)SQUARES#0)[sqr::$0] [ sqr::return#0 SQUARES#0 ] ( main:13::init_dist_screen:21::sqr:65 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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:13::init_dist_screen:21::sqr:80 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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]:13 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:19 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:20 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Statement [184] bsearch16u::key#0 = sqrt::val#0 [ SQUARES#0 bsearch16u::key#0 ] ( main:13::init_dist_screen:21::sqrt:85 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [185] bsearch16u::items#1 = (unsigned int *)SQUARES#0 [ SQUARES#0 bsearch16u::key#0 bsearch16u::items#1 ] ( main:13::init_dist_screen:21::sqrt:85 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [187] bsearch16u::return#3 = bsearch16u::return#1 [ SQUARES#0 bsearch16u::return#3 ] ( main:13::init_dist_screen:21::sqrt:85 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [188] sqrt::found#0 = bsearch16u::return#3 [ SQUARES#0 sqrt::found#0 ] ( main:13::init_dist_screen:21::sqrt:85 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [189] sqrt::$2 = sqrt::found#0 - (unsigned int *)SQUARES#0 [ SQUARES#0 sqrt::$2 ] ( main:13::init_dist_screen:21::sqrt:85 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [190] sqrt::$1 = sqrt::$2 >> 1 [ SQUARES#0 sqrt::$1 ] ( main:13::init_dist_screen:21::sqrt:85 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [193] if(atan2_16::y#0>=0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [194] atan2_16::$2 = - atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [196] if(atan2_16::x#0>=0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [197] atan2_16::$7 = - atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [200] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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]:51 [ atan2_16::i#2 atan2_16::i#1 ]
Statement [202] atan2_16::angle#1 = atan2_16::angle#6 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [203] if(atan2_16::x#0>=0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [204] atan2_16::angle#4 = $8000 - atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [206] if(atan2_16::y#0>=0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [207] atan2_16::angle#5 = - atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [211] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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]:56 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
Statement [212] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [216] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [217] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [219] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [220] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [221] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [222] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [223] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [227] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [228] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [229] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [230] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [231] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [232] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [234] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [235] atan2_16::yi#16 = atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [239] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [240] bsearch16u::$2 = bsearch16u::items#2 - 1*SIZEOF_UNSIGNED_INT [ bsearch16u::$2 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [244] bsearch16u::$6 = bsearch16u::num#3 >> 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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]:63 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
Statement [245] bsearch16u::$14 = bsearch16u::$6 << 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [246] bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [247] 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:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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]:63 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
Statement [248] if(bsearch16u::result#0!=0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [249] bsearch16u::return#7 = bsearch16u::pivot#0 [ bsearch16u::return#7 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [250] if(bsearch16u::result#0<=0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [251] bsearch16u::items#0 = bsearch16u::pivot#0 + 1*SIZEOF_UNSIGNED_INT [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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#19 } }  ) 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 ] { { heap_head#0 = heap_head#19 } }  ) always clobbers reg byte a 
Statement [7] BUCKET_SIZES#0 = (char *)(void *)malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 heap_head#0 ] (  [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 heap_head#0 ] { { heap_head#0 = heap_head#19 } }  ) always clobbers reg byte a 
Statement [9] BUCKETS#0 = (unsigned int **)(void *)malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 heap_head#0 ] (  [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 heap_head#0 ] { { heap_head#0 = heap_head#19 } }  ) always clobbers reg byte a 
Statement [11] BUCKET_IDX#0 = (char *)(void *)malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 ] (  [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 ] { }  ) always clobbers reg byte a 
Statement [16] malloc::mem#0 = heap_head#19 - malloc::size#7 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { }  malloc:4 [ SCREEN_DIST#0 malloc::mem#0 ] { { heap_head#0 = heap_head#19 } }  malloc:6 [ SCREEN_DIST#0 SCREEN_ANGLE#0 malloc::mem#0 ] { { heap_head#0 = heap_head#19 } }  malloc:8 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 malloc::mem#0 ] { { heap_head#0 = heap_head#19 } }  malloc:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 malloc::mem#0 ] { { heap_head#0 = heap_head#19 } }  main:13::init_buckets:25::malloc:141 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::mem#0 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } { heap_head#0 = heap_head#19 } { malloc::size#1 = malloc::size#7 } }  main:13::init_dist_screen:21::init_squares:57::malloc:168 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 malloc::mem#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { heap_head#0 = heap_head#19 } }  ) always clobbers reg byte a 
Statement [17] 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#19 } }  malloc:6 [ SCREEN_DIST#0 SCREEN_ANGLE#0 malloc::mem#0 heap_head#0 ] { { heap_head#0 = heap_head#19 } }  malloc:8 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 malloc::mem#0 heap_head#0 ] { { heap_head#0 = heap_head#19 } }  malloc:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 malloc::mem#0 heap_head#0 ] { { heap_head#0 = heap_head#19 } }  main:13::init_buckets:25::malloc:141 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::mem#0 heap_head#0 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } { heap_head#0 = heap_head#19 } { malloc::size#1 = malloc::size#7 } }  main:13::init_dist_screen:21::init_squares:57::malloc:168 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#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#19 } }  ) always clobbers reg byte a 
Statement [20] init_dist_screen::screen#0 = SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_dist_screen::screen#0 ] ( main:13 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_dist_screen::screen#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [22] init_angle_screen::screen#0 = SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::screen#0 ] ( main:13 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::screen#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [24] init_buckets::screen#0 = SCREEN_DIST#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [27] if(*RASTER!=$ff) goto main::@2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] { }  ) always clobbers reg byte a 
Statement [29] main::$23 = main::bucket_idx#6 << 1 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::$23 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::$23 ] { }  ) always clobbers reg byte a 
Statement [30] main::bucket#0 = BUCKETS#0[main::$23] [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 ] { }  ) always clobbers reg byte a reg byte y 
Statement [31] main::bucket_size#0 = BUCKET_SIZES#0[main::bucket_idx#6] [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 ] { }  ) always clobbers reg byte a reg byte y 
Statement [35] if(main::min_offset#2==$ffff) goto main::@4 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::min_offset#2 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::min_offset#2 ] { }  ) always clobbers reg byte a 
Statement [36] main::fill1#0 = SCREEN_FILL + main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::fill1#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::fill1#0 ] { }  ) always clobbers reg byte a 
Statement [37] *main::fill1#0 = FILL_CHAR [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] { }  ) always clobbers reg byte a reg byte y 
Statement [44] main::$24 = main::i#2 << 1 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::$24 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::$24 ] { }  ) always clobbers reg byte a 
Statement [45] main::offset#0 = main::bucket#0[main::$24] [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] { }  ) always clobbers reg byte a reg byte y 
Statement [46] main::fill#0 = SCREEN_FILL + main::offset#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::fill#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::fill#0 ] { }  ) always clobbers reg byte a 
Statement [47] if(*main::fill#0==FILL_CHAR) goto main::@18 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] { }  ) always clobbers reg byte a reg byte y 
Statement [48] main::angle#0 = SCREEN_ANGLE#0 + main::offset#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] { }  ) always clobbers reg byte a 
Statement [49] if(*main::angle#0>main::min_angle#2) goto main::@17 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] { }  ) always clobbers reg byte a reg byte y 
Statement [50] main::min_angle#1 = *main::angle#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::offset#0 main::min_angle#1 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::offset#0 main::min_angle#1 ] { }  ) always clobbers reg byte a reg byte y 
Statement [53] main::min_offset#8 = main::min_offset#5 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#1 main::min_offset#8 main::min_angle#5 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#1 main::min_offset#8 main::min_angle#5 ] { }  ) always clobbers reg byte a 
Statement [54] main::min_offset#9 = main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#9 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#9 ] { }  ) always clobbers reg byte a 
Statement [55] main::min_offset#11 = main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#11 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#11 ] { }  ) always clobbers reg byte a 
Statement [58] init_dist_screen::screen_bottomline#0 = init_dist_screen::screen#0 + (unsigned int)$28*$18 [ heap_head#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#0 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [60] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1 [ heap_head#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 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [62] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [66] sqr::return#2 = sqr::return#0 [ heap_head#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#0 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [67] init_dist_screen::yds#0 = sqr::return#2 [ heap_head#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 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [70] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28 [ heap_head#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#0 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [71] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28 [ heap_head#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#0 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [75] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1 [ heap_head#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 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [77] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [81] sqr::return#3 = sqr::return#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [82] init_dist_screen::xds#0 = sqr::return#3 [ heap_head#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 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [83] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [84] sqrt::val#0 = init_dist_screen::ds#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [88] init_dist_screen::screen_topline#11[init_dist_screen::x#2] = init_dist_screen::d#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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]:106 [ init_dist_screen::d#0 ]
Statement [89] init_dist_screen::screen_bottomline#11[init_dist_screen::x#2] = init_dist_screen::d#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [90] init_dist_screen::screen_topline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [91] init_dist_screen::screen_bottomline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [96] init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#0 + (unsigned int)$28*$c [ init_angle_screen::screen_bottomline#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::screen_bottomline#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [97] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [101] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [102] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [106] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [107] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [109] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [111] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [112] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [114] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [115] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [116] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [118] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [119] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [121] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [123] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [129] BUCKET_SIZES#0[init_buckets::i#2] = 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i#2 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [132] init_buckets::dist#6 = init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#6 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#6 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [134] BUCKET_SIZES#0[*init_buckets::dist#4] = ++ BUCKET_SIZES#0[*init_buckets::dist#4] [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [137] if(init_buckets::i1#1!=$3e8) goto init_buckets::@3 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#1 init_buckets::i1#1 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#1 init_buckets::i1#1 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [139] init_buckets::$15 = BUCKET_SIZES#0 + init_buckets::i2#2 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$15 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$15 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } { heap_head#0 = heap_head#19 } { malloc::size#1 = malloc::size#7 } }  ) always clobbers reg byte a 
Statement [140] malloc::size#1 = *init_buckets::$15 << 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 malloc::size#1 init_buckets::screen#0 init_buckets::i2#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 malloc::size#1 init_buckets::screen#0 init_buckets::i2#2 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } { heap_head#0 = heap_head#19 } { malloc::size#1 = malloc::size#7 } }  ) always clobbers reg byte a reg byte y 
Statement [142] init_buckets::$4 = (void *)malloc::mem#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [143] init_buckets::$11 = init_buckets::i2#2 << 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$11 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$11 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [144] init_buckets::$16 = BUCKETS#0 + init_buckets::$11 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$16 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$16 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [145] *init_buckets::$16 = (unsigned int *)init_buckets::$4 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [147] if(init_buckets::i2#1!=NUM_BUCKETS-1+1) goto init_buckets::@4 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#1 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#1 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [149] BUCKET_IDX#0[init_buckets::i3#2] = 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i3#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i3#2 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [152] init_buckets::dist#8 = init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#8 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#8 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [154] init_buckets::distance#0 = *init_buckets::dist#5 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [155] init_buckets::$14 = (unsigned int)init_buckets::distance#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$14 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$14 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [156] init_buckets::$12 = init_buckets::$14 << 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$12 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$12 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [157] init_buckets::$17 = BUCKETS#0 + init_buckets::$12 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$17 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$17 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [158] init_buckets::bucket#0 = *init_buckets::$17 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [159] init_buckets::$7 = init_buckets::dist#5 - init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$7 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$7 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [160] init_buckets::$13 = BUCKET_IDX#0[init_buckets::distance#0] << 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$7 init_buckets::$13 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$7 init_buckets::$13 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [161] init_buckets::bucket#0[init_buckets::$13] = init_buckets::$7 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [162] BUCKET_IDX#0[init_buckets::distance#0] = ++ BUCKET_IDX#0[init_buckets::distance#0] [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [165] if(init_buckets::i4#1!=$3e8) goto init_buckets::@7 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#3 init_buckets::i4#1 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#3 init_buckets::i4#1 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [169] SQUARES#0 = (void *)malloc::mem#0 [ heap_head#0 SQUARES#0 ] ( main:13::init_dist_screen:21::init_squares:57 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [170] init_squares::squares#0 = (unsigned int *)SQUARES#0 [ heap_head#0 SQUARES#0 init_squares::squares#0 ] ( main:13::init_dist_screen:21::init_squares:57 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#0 SQUARES#0 init_squares::squares#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [174] *init_squares::squares#2 = init_squares::sqr#2 [ heap_head#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:13::init_dist_screen:21::init_squares:57 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#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 [175] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_UNSIGNED_INT [ heap_head#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:13::init_dist_screen:21::init_squares:57 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#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 [176] init_squares::$3 = init_squares::i#2 << 1 [ heap_head#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:13::init_dist_screen:21::init_squares:57 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#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 [178] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4 [ heap_head#0 SQUARES#0 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:13::init_dist_screen:21::init_squares:57 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#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 [181] sqr::$0 = sqr::val#2 << 1 [ SQUARES#0 sqr::$0 ] ( main:13::init_dist_screen:21::sqr:65 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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:13::init_dist_screen:21::sqr:80 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [182] sqr::return#0 = ((unsigned int *)SQUARES#0)[sqr::$0] [ sqr::return#0 SQUARES#0 ] ( main:13::init_dist_screen:21::sqr:65 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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:13::init_dist_screen:21::sqr:80 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [184] bsearch16u::key#0 = sqrt::val#0 [ SQUARES#0 bsearch16u::key#0 ] ( main:13::init_dist_screen:21::sqrt:85 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [185] bsearch16u::items#1 = (unsigned int *)SQUARES#0 [ SQUARES#0 bsearch16u::key#0 bsearch16u::items#1 ] ( main:13::init_dist_screen:21::sqrt:85 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [187] bsearch16u::return#3 = bsearch16u::return#1 [ SQUARES#0 bsearch16u::return#3 ] ( main:13::init_dist_screen:21::sqrt:85 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [188] sqrt::found#0 = bsearch16u::return#3 [ SQUARES#0 sqrt::found#0 ] ( main:13::init_dist_screen:21::sqrt:85 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [189] sqrt::$2 = sqrt::found#0 - (unsigned int *)SQUARES#0 [ SQUARES#0 sqrt::$2 ] ( main:13::init_dist_screen:21::sqrt:85 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [190] sqrt::$1 = sqrt::$2 >> 1 [ SQUARES#0 sqrt::$1 ] ( main:13::init_dist_screen:21::sqrt:85 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [193] if(atan2_16::y#0>=0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [194] atan2_16::$2 = - atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [196] if(atan2_16::x#0>=0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [197] atan2_16::$7 = - atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [200] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [202] atan2_16::angle#1 = atan2_16::angle#6 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [203] if(atan2_16::x#0>=0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [204] atan2_16::angle#4 = $8000 - atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [206] if(atan2_16::y#0>=0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [207] atan2_16::angle#5 = - atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [211] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [212] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [216] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [217] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [219] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [220] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [221] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [222] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [223] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [227] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [228] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [229] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [230] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [231] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [232] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [234] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [235] atan2_16::yi#16 = atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [239] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [240] bsearch16u::$2 = bsearch16u::items#2 - 1*SIZEOF_UNSIGNED_INT [ bsearch16u::$2 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [244] bsearch16u::$6 = bsearch16u::num#3 >> 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [245] bsearch16u::$14 = bsearch16u::$6 << 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [246] bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [247] 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:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [248] if(bsearch16u::result#0!=0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [249] bsearch16u::return#7 = bsearch16u::pivot#0 [ bsearch16u::return#7 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [250] if(bsearch16u::result#0<=0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [251] bsearch16u::items#0 = bsearch16u::pivot#0 + 1*SIZEOF_UNSIGNED_INT [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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#19 } }  ) 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 ] { { heap_head#0 = heap_head#19 } }  ) always clobbers reg byte a 
Statement [7] BUCKET_SIZES#0 = (char *)(void *)malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 heap_head#0 ] (  [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 heap_head#0 ] { { heap_head#0 = heap_head#19 } }  ) always clobbers reg byte a 
Statement [9] BUCKETS#0 = (unsigned int **)(void *)malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 heap_head#0 ] (  [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 heap_head#0 ] { { heap_head#0 = heap_head#19 } }  ) always clobbers reg byte a 
Statement [11] BUCKET_IDX#0 = (char *)(void *)malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 ] (  [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 ] { }  ) always clobbers reg byte a 
Statement [16] malloc::mem#0 = heap_head#19 - malloc::size#7 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { }  malloc:4 [ SCREEN_DIST#0 malloc::mem#0 ] { { heap_head#0 = heap_head#19 } }  malloc:6 [ SCREEN_DIST#0 SCREEN_ANGLE#0 malloc::mem#0 ] { { heap_head#0 = heap_head#19 } }  malloc:8 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 malloc::mem#0 ] { { heap_head#0 = heap_head#19 } }  malloc:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 malloc::mem#0 ] { { heap_head#0 = heap_head#19 } }  main:13::init_buckets:25::malloc:141 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::mem#0 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } { heap_head#0 = heap_head#19 } { malloc::size#1 = malloc::size#7 } }  main:13::init_dist_screen:21::init_squares:57::malloc:168 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 malloc::mem#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } { heap_head#0 = heap_head#19 } }  ) always clobbers reg byte a 
Statement [17] 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#19 } }  malloc:6 [ SCREEN_DIST#0 SCREEN_ANGLE#0 malloc::mem#0 heap_head#0 ] { { heap_head#0 = heap_head#19 } }  malloc:8 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 malloc::mem#0 heap_head#0 ] { { heap_head#0 = heap_head#19 } }  malloc:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 malloc::mem#0 heap_head#0 ] { { heap_head#0 = heap_head#19 } }  main:13::init_buckets:25::malloc:141 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i2#2 malloc::mem#0 heap_head#0 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } { heap_head#0 = heap_head#19 } { malloc::size#1 = malloc::size#7 } }  main:13::init_dist_screen:21::init_squares:57::malloc:168 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#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#19 } }  ) always clobbers reg byte a 
Statement [20] init_dist_screen::screen#0 = SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_dist_screen::screen#0 ] ( main:13 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_dist_screen::screen#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [22] init_angle_screen::screen#0 = SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::screen#0 ] ( main:13 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::screen#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [24] init_buckets::screen#0 = SCREEN_DIST#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [27] if(*RASTER!=$ff) goto main::@2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] { }  ) always clobbers reg byte a 
Statement [29] main::$23 = main::bucket_idx#6 << 1 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::$23 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::$23 ] { }  ) always clobbers reg byte a 
Statement [30] main::bucket#0 = BUCKETS#0[main::$23] [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 ] { }  ) always clobbers reg byte a reg byte y 
Statement [31] main::bucket_size#0 = BUCKET_SIZES#0[main::bucket_idx#6] [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 ] { }  ) always clobbers reg byte a reg byte y 
Statement [35] if(main::min_offset#2==$ffff) goto main::@4 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::min_offset#2 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::min_offset#2 ] { }  ) always clobbers reg byte a 
Statement [36] main::fill1#0 = SCREEN_FILL + main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::fill1#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::fill1#0 ] { }  ) always clobbers reg byte a 
Statement [37] *main::fill1#0 = FILL_CHAR [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 ] { }  ) always clobbers reg byte a reg byte y 
Statement [44] main::$24 = main::i#2 << 1 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::$24 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::$24 ] { }  ) always clobbers reg byte a 
Statement [45] main::offset#0 = main::bucket#0[main::$24] [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] { }  ) always clobbers reg byte a reg byte y 
Statement [46] main::fill#0 = SCREEN_FILL + main::offset#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::fill#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::fill#0 ] { }  ) always clobbers reg byte a 
Statement [47] if(*main::fill#0==FILL_CHAR) goto main::@18 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 ] { }  ) always clobbers reg byte a reg byte y 
Statement [48] main::angle#0 = SCREEN_ANGLE#0 + main::offset#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] { }  ) always clobbers reg byte a 
Statement [49] if(*main::angle#0>main::min_angle#2) goto main::@17 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_offset#2 main::min_angle#2 main::offset#0 main::angle#0 ] { }  ) always clobbers reg byte a reg byte y 
Statement [50] main::min_angle#1 = *main::angle#0 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::offset#0 main::min_angle#1 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::offset#0 main::min_angle#1 ] { }  ) always clobbers reg byte a reg byte y 
Statement [53] main::min_offset#8 = main::min_offset#5 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#1 main::min_offset#8 main::min_angle#5 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#1 main::min_offset#8 main::min_angle#5 ] { }  ) always clobbers reg byte a 
Statement [54] main::min_offset#9 = main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#9 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#9 ] { }  ) always clobbers reg byte a 
Statement [55] main::min_offset#11 = main::min_offset#2 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#11 ] ( main:13 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 main::bucket_idx#6 main::bucket#0 main::bucket_size#0 main::i#2 main::min_angle#2 main::min_offset#11 ] { }  ) always clobbers reg byte a 
Statement [58] init_dist_screen::screen_bottomline#0 = init_dist_screen::screen#0 + (unsigned int)$28*$18 [ heap_head#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#0 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [60] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1 [ heap_head#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 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [62] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [66] sqr::return#2 = sqr::return#0 [ heap_head#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#0 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [67] init_dist_screen::yds#0 = sqr::return#2 [ heap_head#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 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [70] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28 [ heap_head#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#0 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [71] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28 [ heap_head#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#0 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [75] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1 [ heap_head#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 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [77] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [81] sqr::return#3 = sqr::return#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [82] init_dist_screen::xds#0 = sqr::return#3 [ heap_head#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 ] ( main:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [83] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [84] sqrt::val#0 = init_dist_screen::ds#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [88] init_dist_screen::screen_topline#11[init_dist_screen::x#2] = init_dist_screen::d#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [89] init_dist_screen::screen_bottomline#11[init_dist_screen::x#2] = init_dist_screen::d#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [90] init_dist_screen::screen_topline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [91] init_dist_screen::screen_bottomline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 [ heap_head#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:13::init_dist_screen:21 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [96] init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#0 + (unsigned int)$28*$c [ init_angle_screen::screen_bottomline#0 ] ( main:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_angle_screen::screen_bottomline#0 ] { { SCREEN_ANGLE#0 = init_angle_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [97] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [101] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [102] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [106] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [107] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [109] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [111] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [112] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [114] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [115] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [116] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [118] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [119] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [121] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [123] 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:13::init_angle_screen:23 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [129] BUCKET_SIZES#0[init_buckets::i#2] = 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i#2 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [132] init_buckets::dist#6 = init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#6 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#6 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [134] BUCKET_SIZES#0[*init_buckets::dist#4] = ++ BUCKET_SIZES#0[*init_buckets::dist#4] [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#4 init_buckets::i1#2 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [137] if(init_buckets::i1#1!=$3e8) goto init_buckets::@3 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#1 init_buckets::i1#1 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::dist#1 init_buckets::i1#1 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [139] init_buckets::$15 = BUCKET_SIZES#0 + init_buckets::i2#2 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$15 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$15 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } { heap_head#0 = heap_head#19 } { malloc::size#1 = malloc::size#7 } }  ) always clobbers reg byte a 
Statement [140] malloc::size#1 = *init_buckets::$15 << 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 malloc::size#1 init_buckets::screen#0 init_buckets::i2#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 malloc::size#1 init_buckets::screen#0 init_buckets::i2#2 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } { heap_head#0 = heap_head#19 } { malloc::size#1 = malloc::size#7 } }  ) always clobbers reg byte a reg byte y 
Statement [142] init_buckets::$4 = (void *)malloc::mem#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [143] init_buckets::$11 = init_buckets::i2#2 << 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$11 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$11 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [144] init_buckets::$16 = BUCKETS#0 + init_buckets::$11 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$16 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 init_buckets::$4 init_buckets::$16 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [145] *init_buckets::$16 = (unsigned int *)init_buckets::$4 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#2 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [147] if(init_buckets::i2#1!=NUM_BUCKETS-1+1) goto init_buckets::@4 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#1 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#0 init_buckets::screen#0 init_buckets::i2#1 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [149] BUCKET_IDX#0[init_buckets::i3#2] = 0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i3#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::i3#2 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [152] init_buckets::dist#8 = init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#8 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#8 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [154] init_buckets::distance#0 = *init_buckets::dist#5 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [155] init_buckets::$14 = (unsigned int)init_buckets::distance#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$14 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$14 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [156] init_buckets::$12 = init_buckets::$14 << 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$12 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$12 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [157] init_buckets::$17 = BUCKETS#0 + init_buckets::$12 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$17 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::$17 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [158] init_buckets::bucket#0 = *init_buckets::$17 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [159] init_buckets::$7 = init_buckets::dist#5 - init_buckets::screen#0 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$7 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$7 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [160] init_buckets::$13 = BUCKET_IDX#0[init_buckets::distance#0] << 1 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$7 init_buckets::$13 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 init_buckets::bucket#0 init_buckets::$7 init_buckets::$13 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [161] init_buckets::bucket#0[init_buckets::$13] = init_buckets::$7 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 init_buckets::distance#0 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [162] BUCKET_IDX#0[init_buckets::distance#0] = ++ BUCKET_IDX#0[init_buckets::distance#0] [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#5 init_buckets::i4#2 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a reg byte y 
Statement [165] if(init_buckets::i4#1!=$3e8) goto init_buckets::@7 [ BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#3 init_buckets::i4#1 ] ( main:13::init_buckets:25 [ SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_buckets::screen#0 init_buckets::dist#3 init_buckets::i4#1 ] { { SCREEN_DIST#0 = init_buckets::screen#0 } }  ) always clobbers reg byte a 
Statement [169] SQUARES#0 = (void *)malloc::mem#0 [ heap_head#0 SQUARES#0 ] ( main:13::init_dist_screen:21::init_squares:57 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#0 SQUARES#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [170] init_squares::squares#0 = (unsigned int *)SQUARES#0 [ heap_head#0 SQUARES#0 init_squares::squares#0 ] ( main:13::init_dist_screen:21::init_squares:57 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#0 SQUARES#0 init_squares::squares#0 ] { { SCREEN_DIST#0 = init_dist_screen::screen#0 } }  ) always clobbers reg byte a 
Statement [174] *init_squares::squares#2 = init_squares::sqr#2 [ heap_head#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:13::init_dist_screen:21::init_squares:57 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#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 [175] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_UNSIGNED_INT [ heap_head#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:13::init_dist_screen:21::init_squares:57 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#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 [176] init_squares::$3 = init_squares::i#2 << 1 [ heap_head#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:13::init_dist_screen:21::init_squares:57 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#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 [178] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4 [ heap_head#0 SQUARES#0 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:13::init_dist_screen:21::init_squares:57 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 init_dist_screen::screen#0 heap_head#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 [181] sqr::$0 = sqr::val#2 << 1 [ SQUARES#0 sqr::$0 ] ( main:13::init_dist_screen:21::sqr:65 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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:13::init_dist_screen:21::sqr:80 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [182] sqr::return#0 = ((unsigned int *)SQUARES#0)[sqr::$0] [ sqr::return#0 SQUARES#0 ] ( main:13::init_dist_screen:21::sqr:65 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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:13::init_dist_screen:21::sqr:80 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [184] bsearch16u::key#0 = sqrt::val#0 [ SQUARES#0 bsearch16u::key#0 ] ( main:13::init_dist_screen:21::sqrt:85 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [185] bsearch16u::items#1 = (unsigned int *)SQUARES#0 [ SQUARES#0 bsearch16u::key#0 bsearch16u::items#1 ] ( main:13::init_dist_screen:21::sqrt:85 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [187] bsearch16u::return#3 = bsearch16u::return#1 [ SQUARES#0 bsearch16u::return#3 ] ( main:13::init_dist_screen:21::sqrt:85 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [188] sqrt::found#0 = bsearch16u::return#3 [ SQUARES#0 sqrt::found#0 ] ( main:13::init_dist_screen:21::sqrt:85 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [189] sqrt::$2 = sqrt::found#0 - (unsigned int *)SQUARES#0 [ SQUARES#0 sqrt::$2 ] ( main:13::init_dist_screen:21::sqrt:85 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [190] sqrt::$1 = sqrt::$2 >> 1 [ SQUARES#0 sqrt::$1 ] ( main:13::init_dist_screen:21::sqrt:85 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [193] if(atan2_16::y#0>=0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [194] atan2_16::$2 = - atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [196] if(atan2_16::x#0>=0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [197] atan2_16::$7 = - atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [200] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [202] atan2_16::angle#1 = atan2_16::angle#6 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [203] if(atan2_16::x#0>=0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [204] atan2_16::angle#4 = $8000 - atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [206] if(atan2_16::y#0>=0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [207] atan2_16::angle#5 = - atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [211] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [212] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [216] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [217] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [219] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [220] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [221] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [222] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [223] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [227] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [228] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [229] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [230] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [231] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [232] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [234] 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:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [235] atan2_16::yi#16 = atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:13::init_angle_screen:23::atan2_16:113 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [239] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [240] bsearch16u::$2 = bsearch16u::items#2 - 1*SIZEOF_UNSIGNED_INT [ bsearch16u::$2 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [244] bsearch16u::$6 = bsearch16u::num#3 >> 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [245] bsearch16u::$14 = bsearch16u::$6 << 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [246] bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [247] 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:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [248] if(bsearch16u::result#0!=0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [249] bsearch16u::return#7 = bsearch16u::pivot#0 [ bsearch16u::return#7 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [250] if(bsearch16u::result#0<=0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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 [251] bsearch16u::items#0 = bsearch16u::pivot#0 + 1*SIZEOF_UNSIGNED_INT [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:13::init_dist_screen:21::sqrt:85::bsearch16u:186 [ SCREEN_DIST#0 SCREEN_ANGLE#0 BUCKET_SIZES#0 BUCKETS#0 BUCKET_IDX#0 heap_head#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#19 heap_head#0 ] : zp[2]:2 , 
Potential registers zp[2]:4 [ malloc::size#7 malloc::size#1 ] : zp[2]:4 , 
Potential registers zp[1]:6 [ main::bucket_idx#6 main::bucket_idx#1 ] : zp[1]:6 , reg byte x , 
Potential registers zp[1]:7 [ main::i#2 main::i#1 ] : zp[1]:7 , reg byte x , 
Potential registers zp[2]:8 [ main::min_offset#2 main::min_offset#8 ] : zp[2]:8 , 
Potential registers zp[1]:10 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ] : zp[1]:10 , reg byte x , 
Potential registers zp[2]:11 [ main::min_offset#5 main::min_offset#9 main::offset#0 main::min_offset#11 ] : zp[2]:11 , 
Potential registers zp[1]:13 [ init_dist_screen::y#10 init_dist_screen::y#1 ] : zp[1]:13 , reg byte x , 
Potential registers zp[2]:14 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] : zp[2]:14 , 
Potential registers zp[2]:16 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] : zp[2]:16 , 
Potential registers zp[1]:18 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] : zp[1]:18 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:19 [ init_dist_screen::x#2 init_dist_screen::x#1 ] : zp[1]:19 , reg byte x , 
Potential registers zp[1]:20 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] : zp[1]:20 , reg byte x , 
Potential registers zp[1]:21 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] : zp[1]:21 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:22 [ init_angle_screen::y#5 init_angle_screen::y#1 ] : zp[1]:22 , reg byte x , reg byte y , 
Potential registers zp[2]:23 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] : zp[2]:23 , 
Potential registers zp[2]:25 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] : zp[2]:25 , 
Potential registers zp[1]:27 [ init_angle_screen::x#2 init_angle_screen::x#1 ] : zp[1]:27 , reg byte x , reg byte y , 
Potential registers zp[1]:28 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] : zp[1]:28 , reg byte x , reg byte y , 
Potential registers zp[1]:29 [ init_buckets::i#2 init_buckets::i#1 ] : zp[1]:29 , reg byte x , reg byte y , 
Potential registers zp[2]:30 [ init_buckets::dist#4 init_buckets::dist#6 init_buckets::dist#1 ] : zp[2]:30 , 
Potential registers zp[2]:32 [ init_buckets::i1#2 init_buckets::i1#1 ] : zp[2]:32 , 
Potential registers zp[2]:34 [ init_buckets::i2#2 init_buckets::i2#1 ] : zp[2]:34 , 
Potential registers zp[1]:36 [ init_buckets::i3#2 init_buckets::i3#1 ] : zp[1]:36 , reg byte x , reg byte y , 
Potential registers zp[2]:37 [ init_buckets::dist#5 init_buckets::dist#8 init_buckets::dist#3 ] : zp[2]:37 , 
Potential registers zp[2]:39 [ init_buckets::i4#2 init_buckets::i4#1 ] : zp[2]:39 , 
Potential registers zp[1]:41 [ init_squares::i#2 init_squares::i#1 ] : zp[1]:41 , reg byte x , 
Potential registers zp[2]:42 [ init_squares::sqr#2 init_squares::sqr#1 ] : zp[2]:42 , 
Potential registers zp[2]:44 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] : zp[2]:44 , 
Potential registers zp[1]:46 [ sqr::val#2 sqr::val#1 sqr::val#0 ] : zp[1]:46 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:47 [ 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]:47 , 
Potential registers zp[2]:49 [ 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]:49 , 
Potential registers zp[1]:51 [ atan2_16::i#2 atan2_16::i#1 ] : zp[1]:51 , reg byte x , reg byte y , 
Potential registers zp[2]:52 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] : zp[2]:52 , 
Potential registers zp[2]:54 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] : zp[2]:54 , 
Potential registers zp[1]:56 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] : zp[1]:56 , reg byte x , reg byte y , 
Potential registers zp[2]:57 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] : zp[2]:57 , 
Potential registers zp[2]:59 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] : zp[2]:59 , 
Potential registers zp[2]:61 [ 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]:61 , 
Potential registers zp[1]:63 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] : zp[1]:63 , reg byte x , 
Potential registers zp[2]:64 [ SCREEN_DIST#0 ] : zp[2]:64 , 
Potential registers zp[2]:66 [ SCREEN_ANGLE#0 ] : zp[2]:66 , 
Potential registers zp[2]:68 [ BUCKET_SIZES#0 ] : zp[2]:68 , 
Potential registers zp[2]:70 [ BUCKETS#0 ] : zp[2]:70 , 
Potential registers zp[2]:72 [ BUCKET_IDX#0 ] : zp[2]:72 , 
Potential registers zp[2]:74 [ malloc::mem#0 ] : zp[2]:74 , 
Potential registers zp[2]:76 [ init_angle_screen::screen#0 ] : zp[2]:76 , 
Potential registers zp[2]:78 [ init_buckets::screen#0 ] : zp[2]:78 , 
Potential registers zp[1]:80 [ main::$23 ] : zp[1]:80 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:81 [ main::bucket#0 ] : zp[2]:81 , 
Potential registers zp[1]:83 [ main::bucket_size#0 ] : zp[1]:83 , reg byte x , 
Potential registers zp[2]:84 [ main::fill1#0 ] : zp[2]:84 , 
Potential registers zp[1]:86 [ main::$24 ] : zp[1]:86 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:87 [ main::fill#0 ] : zp[2]:87 , 
Potential registers zp[2]:89 [ main::angle#0 ] : zp[2]:89 , 
Potential registers zp[1]:91 [ init_dist_screen::y2#0 ] : zp[1]:91 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:92 [ sqr::return#2 ] : zp[2]:92 , 
Potential registers zp[2]:94 [ init_dist_screen::yds#0 ] : zp[2]:94 , 
Potential registers zp[1]:96 [ init_dist_screen::x2#0 ] : zp[1]:96 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:97 [ sqr::return#3 ] : zp[2]:97 , 
Potential registers zp[2]:99 [ init_dist_screen::xds#0 ] : zp[2]:99 , 
Potential registers zp[2]:101 [ init_dist_screen::ds#0 ] : zp[2]:101 , 
Potential registers zp[2]:103 [ sqrt::val#0 ] : zp[2]:103 , 
Potential registers zp[1]:105 [ sqrt::return#2 ] : zp[1]:105 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:106 [ init_dist_screen::d#0 ] : zp[1]:106 , reg byte a , reg byte x , 
Potential registers zp[1]:107 [ init_angle_screen::$3 ] : zp[1]:107 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:108 [ init_angle_screen::$4 ] : zp[1]:108 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:109 [ init_angle_screen::xw#0 ] : zp[2]:109 , 
Potential registers zp[1]:111 [ init_angle_screen::$6 ] : zp[1]:111 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:112 [ init_angle_screen::yw#0 ] : zp[2]:112 , 
Potential registers zp[2]:114 [ atan2_16::x#0 ] : zp[2]:114 , 
Potential registers zp[2]:116 [ atan2_16::y#0 ] : zp[2]:116 , 
Potential registers zp[2]:118 [ atan2_16::return#2 ] : zp[2]:118 , 
Potential registers zp[2]:120 [ init_angle_screen::angle_w#0 ] : zp[2]:120 , 
Potential registers zp[2]:122 [ init_angle_screen::$9 ] : zp[2]:122 , 
Potential registers zp[1]:124 [ init_angle_screen::ang_w#0 ] : zp[1]:124 , reg byte x , reg byte y , 
Potential registers zp[1]:125 [ init_angle_screen::$11 ] : zp[1]:125 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:126 [ init_angle_screen::$12 ] : zp[1]:126 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:127 [ init_angle_screen::$13 ] : zp[1]:127 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:128 [ init_buckets::$15 ] : zp[2]:128 , 
Potential registers zp[2]:130 [ init_buckets::$4 ] : zp[2]:130 , 
Potential registers zp[2]:132 [ init_buckets::$11 ] : zp[2]:132 , 
Potential registers zp[2]:134 [ init_buckets::$16 ] : zp[2]:134 , 
Potential registers zp[1]:136 [ init_buckets::distance#0 ] : zp[1]:136 , reg byte x , 
Potential registers zp[2]:137 [ init_buckets::$14 ] : zp[2]:137 , 
Potential registers zp[2]:139 [ init_buckets::$12 ] : zp[2]:139 , 
Potential registers zp[2]:141 [ init_buckets::$17 ] : zp[2]:141 , 
Potential registers zp[2]:143 [ init_buckets::bucket#0 ] : zp[2]:143 , 
Potential registers zp[2]:145 [ init_buckets::$7 ] : zp[2]:145 , 
Potential registers zp[1]:147 [ init_buckets::$13 ] : zp[1]:147 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:148 [ SQUARES#0 ] : zp[2]:148 , 
Potential registers zp[1]:150 [ init_squares::$3 ] : zp[1]:150 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:151 [ init_squares::$4 ] : zp[1]:151 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:152 [ sqr::$0 ] : zp[1]:152 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:153 [ sqr::return#0 ] : zp[2]:153 , 
Potential registers zp[2]:155 [ bsearch16u::key#0 ] : zp[2]:155 , 
Potential registers zp[2]:157 [ bsearch16u::return#3 ] : zp[2]:157 , 
Potential registers zp[2]:159 [ sqrt::found#0 ] : zp[2]:159 , 
Potential registers zp[2]:161 [ sqrt::$2 ] : zp[2]:161 , 
Potential registers zp[2]:163 [ sqrt::$1 ] : zp[2]:163 , 
Potential registers zp[1]:165 [ sqrt::return#0 ] : zp[1]:165 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:166 [ atan2_16::$23 ] : zp[1]:166 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:167 [ atan2_16::$22 ] : zp[1]:167 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:168 [ bsearch16u::$6 ] : zp[1]:168 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:169 [ bsearch16u::$14 ] : zp[1]:169 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:170 [ bsearch16u::pivot#0 ] : zp[2]:170 , 
Potential registers zp[2]:172 [ bsearch16u::result#0 ] : zp[2]:172 , 

REGISTER UPLIFT SCOPES
Uplift Scope [bsearch16u] 7,555,555,563.11: zp[1]:63 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] 2,842,027,790.06: zp[2]:61 [ 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]:168 [ bsearch16u::$6 ] 2,000,000,002: zp[1]:169 [ bsearch16u::$14 ] 1,500,000,001.5: zp[2]:172 [ bsearch16u::result#0 ] 500,250,000.75: zp[2]:170 [ bsearch16u::pivot#0 ] 200,002: zp[2]:157 [ bsearch16u::return#3 ] 73,333.47: zp[2]:155 [ bsearch16u::key#0 ] 
Uplift Scope [atan2_16] 2,866,666,670.58: zp[1]:56 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 2,060,000,008: zp[2]:57 [ 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]:59 [ 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]:52 [ 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]:47 [ 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]:49 [ 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]:166 [ atan2_16::$23 ] 200,000,002: zp[1]:167 [ atan2_16::$22 ] 170,833,335.04: zp[1]:51 [ atan2_16::i#2 atan2_16::i#1 ] 820,008.5: zp[2]:54 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] 20,002: zp[2]:118 [ atan2_16::return#2 ] 10,789.61: zp[2]:114 [ atan2_16::x#0 ] 10,250.12: zp[2]:116 [ atan2_16::y#0 ] 
Uplift Scope [sqrt] 200,002: zp[2]:159 [ sqrt::found#0 ] 200,002: zp[2]:161 [ sqrt::$2 ] 110,002: zp[2]:103 [ sqrt::val#0 ] 100,001: zp[2]:163 [ sqrt::$1 ] 36,667.33: zp[1]:165 [ sqrt::return#0 ] 20,002: zp[1]:105 [ sqrt::return#2 ] 
Uplift Scope [sqr] 200,002: zp[1]:152 [ sqr::$0 ] 133,007: zp[1]:46 [ sqr::val#2 sqr::val#1 sqr::val#0 ] 27,750.75: zp[2]:153 [ sqr::return#0 ] 20,002: zp[2]:97 [ sqr::return#3 ] 2,002: zp[2]:92 [ sqr::return#2 ] 
Uplift Scope [init_angle_screen] 21,820.36: zp[1]:28 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 20,002: zp[1]:107 [ init_angle_screen::$3 ] 20,002: zp[1]:108 [ init_angle_screen::$4 ] 20,002: zp[1]:111 [ init_angle_screen::$6 ] 20,002: zp[2]:120 [ init_angle_screen::angle_w#0 ] 20,002: zp[2]:122 [ init_angle_screen::$9 ] 20,002: zp[1]:125 [ init_angle_screen::$11 ] 20,002: zp[1]:126 [ init_angle_screen::$12 ] 20,002: zp[1]:127 [ init_angle_screen::$13 ] 12,858.43: zp[1]:27 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 8,334.17: zp[1]:124 [ init_angle_screen::ang_w#0 ] 5,000.5: zp[2]:112 [ init_angle_screen::yw#0 ] 3,333.67: zp[2]:109 [ init_angle_screen::xw#0 ] 1,963.15: zp[1]:22 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 1,703.03: zp[2]:25 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 1,623.54: zp[2]:23 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] 112: zp[2]:76 [ init_angle_screen::screen#0 ] 
Uplift Scope [init_dist_screen] 70,007: zp[1]:21 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] 21,906.95: zp[1]:20 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 20,002: zp[1]:96 [ init_dist_screen::x2#0 ] 20,002: zp[2]:99 [ init_dist_screen::xds#0 ] 20,002: zp[2]:101 [ init_dist_screen::ds#0 ] 13,001.3: zp[1]:19 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 12,501.25: zp[1]:106 [ init_dist_screen::d#0 ] 7,007: zp[1]:18 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 2,002: zp[1]:91 [ init_dist_screen::y2#0 ] 1,589.82: zp[1]:13 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 1,539.18: zp[2]:16 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] 1,244.53: zp[2]:14 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] 478.35: zp[2]:94 [ init_dist_screen::yds#0 ] 
Uplift Scope [init_squares] 25,716.86: zp[1]:41 [ init_squares::i#2 init_squares::i#1 ] 20,002: zp[1]:150 [ init_squares::$3 ] 20,002: zp[1]:151 [ init_squares::$4 ] 16,337.07: zp[2]:44 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] 15,001.5: zp[2]:42 [ init_squares::sqr#2 init_squares::sqr#1 ] 
Uplift Scope [init_buckets] 3,003: zp[1]:29 [ init_buckets::i#2 init_buckets::i#1 ] 3,003: zp[1]:36 [ init_buckets::i3#2 init_buckets::i3#1 ] 2,921.83: zp[2]:30 [ init_buckets::dist#4 init_buckets::dist#6 init_buckets::dist#1 ] 2,168.83: zp[2]:32 [ init_buckets::i1#2 init_buckets::i1#1 ] 2,002: zp[2]:34 [ init_buckets::i2#2 init_buckets::i2#1 ] 2,002: zp[2]:128 [ init_buckets::$15 ] 2,002: zp[2]:132 [ init_buckets::$11 ] 2,002: zp[2]:134 [ init_buckets::$16 ] 2,002: zp[2]:137 [ init_buckets::$14 ] 2,002: zp[2]:139 [ init_buckets::$12 ] 2,002: zp[2]:141 [ init_buckets::$17 ] 2,002: zp[1]:147 [ init_buckets::$13 ] 1,683.5: zp[2]:39 [ init_buckets::i4#2 init_buckets::i4#1 ] 1,279.83: zp[2]:37 [ init_buckets::dist#5 init_buckets::dist#8 init_buckets::dist#3 ] 1,001: zp[2]:145 [ init_buckets::$7 ] 667.33: zp[2]:143 [ init_buckets::bucket#0 ] 500.5: zp[1]:136 [ init_buckets::distance#0 ] 333.67: zp[2]:130 [ init_buckets::$4 ] 30.35: zp[2]:78 [ init_buckets::screen#0 ] 
Uplift Scope [main] 6,673.33: zp[2]:11 [ main::min_offset#5 main::min_offset#9 main::offset#0 main::min_offset#11 ] 3,737.07: zp[1]:10 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ] 2,358.11: zp[2]:8 [ main::min_offset#2 main::min_offset#8 ] 2,002: zp[1]:86 [ main::$24 ] 2,002: zp[2]:87 [ main::fill#0 ] 1,501.5: zp[2]:89 [ main::angle#0 ] 1,334.67: zp[1]:7 [ main::i#2 main::i#1 ] 202: zp[1]:80 [ main::$23 ] 202: zp[2]:84 [ main::fill1#0 ] 125.24: zp[1]:6 [ main::bucket_idx#6 main::bucket_idx#1 ] 75.19: zp[1]:83 [ main::bucket_size#0 ] 64.82: zp[2]:81 [ main::bucket#0 ] 
Uplift Scope [malloc] 13,004: zp[2]:4 [ malloc::size#7 malloc::size#1 ] 2,000.2: zp[2]:74 [ malloc::mem#0 ] 
Uplift Scope [] 12,140.15: zp[2]:2 [ heap_head#19 heap_head#0 ] 85.23: zp[2]:72 [ BUCKET_IDX#0 ] 50.7: zp[2]:68 [ BUCKET_SIZES#0 ] 26.65: zp[2]:70 [ BUCKETS#0 ] 23.58: zp[2]:66 [ SCREEN_ANGLE#0 ] 16.15: zp[2]:148 [ SQUARES#0 ] 1.6: zp[2]:64 [ SCREEN_DIST#0 ] 
Uplift Scope [MOS6526_CIA] 
Uplift Scope [MOS6569_VICII] 
Uplift Scope [MOS6581_SID] 
Uplift Scope [RADIX] 
Uplift Scope [__start] 

Uplifting [bsearch16u] best 1341981 combination reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] zp[2]:61 [ 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]:172 [ bsearch16u::result#0 ] zp[2]:170 [ bsearch16u::pivot#0 ] zp[2]:157 [ bsearch16u::return#3 ] zp[2]:155 [ bsearch16u::key#0 ] 
Uplifting [atan2_16] best 1229981 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:57 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:59 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:52 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:47 [ 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]:49 [ 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]:54 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] zp[2]:118 [ atan2_16::return#2 ] zp[2]:114 [ atan2_16::x#0 ] zp[2]:116 [ atan2_16::y#0 ] 
Limited combination testing to 100 combinations of 144 possible.
Uplifting [sqrt] best 1229078 combination zp[2]:159 [ sqrt::found#0 ] zp[2]:161 [ sqrt::$2 ] zp[2]:103 [ sqrt::val#0 ] zp[2]:163 [ sqrt::$1 ] reg byte a [ sqrt::return#0 ] reg byte a [ sqrt::return#2 ] 
Uplifting [sqr] best 1228741 combination reg byte a [ sqr::$0 ] reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ] zp[2]:153 [ sqr::return#0 ] zp[2]:97 [ sqr::return#3 ] zp[2]:92 [ sqr::return#2 ] 
Uplifting [init_angle_screen] best 1227141 combination zp[1]:28 [ 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]:120 [ init_angle_screen::angle_w#0 ] zp[2]:122 [ init_angle_screen::$9 ] zp[1]:125 [ init_angle_screen::$11 ] zp[1]:126 [ init_angle_screen::$12 ] zp[1]:127 [ init_angle_screen::$13 ] zp[1]:27 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:124 [ init_angle_screen::ang_w#0 ] zp[2]:112 [ init_angle_screen::yw#0 ] zp[2]:109 [ init_angle_screen::xw#0 ] zp[1]:22 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:25 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:23 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] zp[2]:76 [ init_angle_screen::screen#0 ] 
Limited combination testing to 100 combinations of 331776 possible.
Uplifting [init_dist_screen] best 1223941 combination reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] zp[1]:20 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] reg byte a [ init_dist_screen::x2#0 ] zp[2]:99 [ init_dist_screen::xds#0 ] zp[2]:101 [ init_dist_screen::ds#0 ] zp[1]:19 [ init_dist_screen::x#2 init_dist_screen::x#1 ] reg byte a [ init_dist_screen::d#0 ] zp[1]:18 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] zp[1]:91 [ init_dist_screen::y2#0 ] zp[1]:13 [ init_dist_screen::y#10 init_dist_screen::y#1 ] zp[2]:16 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] zp[2]:14 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] zp[2]:94 [ init_dist_screen::yds#0 ] 
Limited combination testing to 100 combinations of 6144 possible.
Uplifting [init_squares] best 1223741 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]:44 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] zp[2]:42 [ init_squares::sqr#2 init_squares::sqr#1 ] 
Uplifting [init_buckets] best 1223461 combination reg byte y [ init_buckets::i#2 init_buckets::i#1 ] reg byte y [ init_buckets::i3#2 init_buckets::i3#1 ] zp[2]:30 [ init_buckets::dist#4 init_buckets::dist#6 init_buckets::dist#1 ] zp[2]:32 [ init_buckets::i1#2 init_buckets::i1#1 ] zp[2]:34 [ init_buckets::i2#2 init_buckets::i2#1 ] zp[2]:128 [ init_buckets::$15 ] zp[2]:132 [ init_buckets::$11 ] zp[2]:134 [ init_buckets::$16 ] zp[2]:137 [ init_buckets::$14 ] zp[2]:139 [ init_buckets::$12 ] zp[2]:141 [ init_buckets::$17 ] reg byte a [ init_buckets::$13 ] zp[2]:39 [ init_buckets::i4#2 init_buckets::i4#1 ] zp[2]:37 [ init_buckets::dist#5 init_buckets::dist#8 init_buckets::dist#3 ] zp[2]:145 [ init_buckets::$7 ] zp[2]:143 [ init_buckets::bucket#0 ] zp[1]:136 [ init_buckets::distance#0 ] zp[2]:130 [ init_buckets::$4 ] zp[2]:78 [ init_buckets::screen#0 ] 
Uplifting [main] best 1222021 combination zp[2]:11 [ main::min_offset#5 main::min_offset#9 main::offset#0 main::min_offset#11 ] zp[1]:10 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ] zp[2]:8 [ main::min_offset#2 main::min_offset#8 ] reg byte a [ main::$24 ] zp[2]:87 [ main::fill#0 ] zp[2]:89 [ main::angle#0 ] reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$23 ] zp[2]:84 [ main::fill1#0 ] zp[1]:6 [ main::bucket_idx#6 main::bucket_idx#1 ] zp[1]:83 [ main::bucket_size#0 ] zp[2]:81 [ main::bucket#0 ] 
Limited combination testing to 100 combinations of 256 possible.
Uplifting [malloc] best 1222021 combination zp[2]:4 [ malloc::size#7 malloc::size#1 ] zp[2]:74 [ malloc::mem#0 ] 
Uplifting [] best 1222021 combination zp[2]:2 [ heap_head#19 heap_head#0 ] zp[2]:72 [ BUCKET_IDX#0 ] zp[2]:68 [ BUCKET_SIZES#0 ] zp[2]:70 [ BUCKETS#0 ] zp[2]:66 [ SCREEN_ANGLE#0 ] zp[2]:148 [ SQUARES#0 ] zp[2]:64 [ SCREEN_DIST#0 ] 
Uplifting [MOS6526_CIA] best 1222021 combination 
Uplifting [MOS6569_VICII] best 1222021 combination 
Uplifting [MOS6581_SID] best 1222021 combination 
Uplifting [RADIX] best 1222021 combination 
Uplifting [__start] best 1222021 combination 
Attempting to uplift remaining variables inzp[1]:20 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Uplifting [init_dist_screen] best 1222021 combination zp[1]:20 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 
Attempting to uplift remaining variables inzp[1]:28 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Uplifting [init_angle_screen] best 1222021 combination zp[1]:28 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 
Attempting to uplift remaining variables inzp[1]:125 [ init_angle_screen::$11 ]
Uplifting [init_angle_screen] best 1221421 combination reg byte a [ init_angle_screen::$11 ] 
Attempting to uplift remaining variables inzp[1]:126 [ init_angle_screen::$12 ]
Uplifting [init_angle_screen] best 1221021 combination reg byte a [ init_angle_screen::$12 ] 
Attempting to uplift remaining variables inzp[1]:127 [ init_angle_screen::$13 ]
Uplifting [init_angle_screen] best 1220421 combination reg byte a [ init_angle_screen::$13 ] 
Attempting to uplift remaining variables inzp[1]:19 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Uplifting [init_dist_screen] best 1220421 combination zp[1]:19 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 
Attempting to uplift remaining variables inzp[1]:27 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
Uplifting [init_angle_screen] best 1220421 combination zp[1]:27 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 
Attempting to uplift remaining variables inzp[1]:124 [ init_angle_screen::ang_w#0 ]
Uplifting [init_angle_screen] best 1220421 combination zp[1]:124 [ init_angle_screen::ang_w#0 ] 
Attempting to uplift remaining variables inzp[1]:18 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
Uplifting [init_dist_screen] best 1220351 combination reg byte a [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 
Attempting to uplift remaining variables inzp[1]:10 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ]
Uplifting [main] best 1220351 combination zp[1]:10 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ] 
Attempting to uplift remaining variables inzp[1]:91 [ init_dist_screen::y2#0 ]
Uplifting [init_dist_screen] best 1220251 combination reg byte a [ init_dist_screen::y2#0 ] 
Attempting to uplift remaining variables inzp[1]:22 [ init_angle_screen::y#5 init_angle_screen::y#1 ]
Uplifting [init_angle_screen] best 1220251 combination zp[1]:22 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 
Attempting to uplift remaining variables inzp[1]:13 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
Uplifting [init_dist_screen] best 1220251 combination zp[1]:13 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 
Attempting to uplift remaining variables inzp[1]:136 [ init_buckets::distance#0 ]
Uplifting [init_buckets] best 1220251 combination zp[1]:136 [ init_buckets::distance#0 ] 
Attempting to uplift remaining variables inzp[1]:6 [ main::bucket_idx#6 main::bucket_idx#1 ]
Uplifting [main] best 1220251 combination zp[1]:6 [ main::bucket_idx#6 main::bucket_idx#1 ] 
Attempting to uplift remaining variables inzp[1]:83 [ main::bucket_size#0 ]
Uplifting [main] best 1220251 combination zp[1]:83 [ main::bucket_size#0 ] 
Coalescing zero page register [ zp[2]:4 [ malloc::size#7 malloc::size#1 ] ] with [ zp[2]:74 [ malloc::mem#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:4 [ malloc::size#7 malloc::size#1 malloc::mem#0 ] ] with [ zp[2]:128 [ init_buckets::$15 ] ] - score: 1
Coalescing zero page register [ zp[2]:8 [ main::min_offset#2 main::min_offset#8 ] ] with [ zp[2]:84 [ main::fill1#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:25 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] ] with [ zp[2]:76 [ init_angle_screen::screen#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:52 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] ] with [ zp[2]:54 [ 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]:61 [ 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]:157 [ bsearch16u::return#3 ] ] - score: 1
Coalescing zero page register [ zp[2]:64 [ SCREEN_DIST#0 ] ] with [ zp[2]:78 [ init_buckets::screen#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:92 [ sqr::return#2 ] ] with [ zp[2]:94 [ init_dist_screen::yds#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:97 [ sqr::return#3 ] ] with [ zp[2]:99 [ init_dist_screen::xds#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:97 [ sqr::return#3 init_dist_screen::xds#0 ] ] with [ zp[2]:153 [ sqr::return#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:101 [ init_dist_screen::ds#0 ] ] with [ zp[2]:103 [ sqrt::val#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:109 [ init_angle_screen::xw#0 ] ] with [ zp[2]:114 [ atan2_16::x#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:112 [ init_angle_screen::yw#0 ] ] with [ zp[2]:116 [ atan2_16::y#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:118 [ atan2_16::return#2 ] ] with [ zp[2]:120 [ init_angle_screen::angle_w#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:132 [ init_buckets::$11 ] ] with [ zp[2]:134 [ init_buckets::$16 ] ] - score: 1
Coalescing zero page register [ zp[2]:137 [ init_buckets::$14 ] ] with [ zp[2]:139 [ init_buckets::$12 ] ] - score: 1
Coalescing zero page register [ zp[2]:141 [ init_buckets::$17 ] ] with [ zp[2]:143 [ init_buckets::bucket#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:159 [ sqrt::found#0 ] ] with [ zp[2]:161 [ sqrt::$2 ] ] - score: 1
Coalescing zero page register [ zp[2]:4 [ malloc::size#7 malloc::size#1 malloc::mem#0 init_buckets::$15 ] ] with [ zp[2]:130 [ init_buckets::$4 ] ] - score: 1
Coalescing zero page register [ zp[2]:4 [ malloc::size#7 malloc::size#1 malloc::mem#0 init_buckets::$15 init_buckets::$4 ] ] with [ zp[2]:148 [ SQUARES#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:52 [ 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]:118 [ atan2_16::return#2 init_angle_screen::angle_w#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:61 [ 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]:159 [ sqrt::found#0 sqrt::$2 ] ] - score: 1
Coalescing zero page register [ zp[2]:97 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 ] ] with [ zp[2]:101 [ init_dist_screen::ds#0 sqrt::val#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:137 [ init_buckets::$14 init_buckets::$12 ] ] with [ zp[2]:141 [ init_buckets::$17 init_buckets::bucket#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:52 [ 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]:122 [ init_angle_screen::$9 ] ] - score: 1
Coalescing zero page register [ zp[2]:61 [ 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]:163 [ sqrt::$1 ] ] - score: 1
Coalescing zero page register [ zp[2]:97 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 ] ] with [ zp[2]:155 [ bsearch16u::key#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:8 [ main::min_offset#2 main::min_offset#8 main::fill1#0 ] ] with [ zp[2]:2 [ heap_head#19 heap_head#0 ] ]
Coalescing zero page register [ zp[2]:11 [ main::min_offset#5 main::min_offset#9 main::offset#0 main::min_offset#11 ] ] with [ zp[2]:4 [ malloc::size#7 malloc::size#1 malloc::mem#0 init_buckets::$15 init_buckets::$4 SQUARES#0 ] ]
Coalescing zero page register [ zp[1]:22 [ init_angle_screen::y#5 init_angle_screen::y#1 ] ] with [ zp[1]:13 [ init_dist_screen::y#10 init_dist_screen::y#1 ] ]
Coalescing zero page register [ zp[2]:23 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] ] with [ zp[2]:14 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] ]
Coalescing zero page register [ zp[2]:25 [ 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]:16 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] ]
Coalescing zero page register [ zp[1]:27 [ init_angle_screen::x#2 init_angle_screen::x#1 ] ] with [ zp[1]:19 [ init_dist_screen::x#2 init_dist_screen::x#1 ] ]
Coalescing zero page register [ zp[1]:28 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] ] with [ zp[1]:20 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] ]
Coalescing zero page register [ zp[2]:42 [ init_squares::sqr#2 init_squares::sqr#1 ] ] with [ zp[2]:30 [ init_buckets::dist#4 init_buckets::dist#6 init_buckets::dist#1 ] ]
Coalescing zero page register [ zp[2]:44 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] ] with [ zp[2]:32 [ init_buckets::i1#2 init_buckets::i1#1 ] ]
Coalescing zero page register [ zp[2]:47 [ 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]:34 [ init_buckets::i2#2 init_buckets::i2#1 ] ]
Coalescing zero page register [ zp[2]:49 [ 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]:37 [ init_buckets::dist#5 init_buckets::dist#8 init_buckets::dist#3 ] ]
Coalescing zero page register [ zp[2]:52 [ 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 ] ] with [ zp[2]:39 [ init_buckets::i4#2 init_buckets::i4#1 ] ]
Coalescing zero page register [ zp[2]:61 [ 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]:57 [ 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]:81 [ main::bucket#0 ] ] with [ zp[2]:59 [ 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]:87 [ main::fill#0 ] ] with [ zp[2]:64 [ SCREEN_DIST#0 init_buckets::screen#0 ] ]
Coalescing zero page register [ zp[2]:89 [ main::angle#0 ] ] with [ zp[2]:72 [ BUCKET_IDX#0 ] ]
Coalescing zero page register [ zp[2]:109 [ init_angle_screen::xw#0 atan2_16::x#0 ] ] with [ zp[2]:92 [ sqr::return#2 init_dist_screen::yds#0 ] ]
Coalescing zero page register [ zp[2]:112 [ init_angle_screen::yw#0 atan2_16::y#0 ] ] with [ zp[2]:97 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 ] ]
Coalescing zero page register [ zp[1]:136 [ init_buckets::distance#0 ] ] with [ zp[1]:124 [ init_angle_screen::ang_w#0 ] ]
Coalescing zero page register [ zp[2]:170 [ bsearch16u::pivot#0 ] ] with [ zp[2]:132 [ init_buckets::$11 init_buckets::$16 ] ]
Coalescing zero page register [ zp[2]:172 [ bsearch16u::result#0 ] ] with [ zp[2]:137 [ init_buckets::$14 init_buckets::$12 init_buckets::$17 init_buckets::bucket#0 ] ]
Coalescing zero page register [ zp[2]:61 [ 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::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] ] with [ zp[2]:42 [ init_squares::sqr#2 init_squares::sqr#1 init_buckets::dist#4 init_buckets::dist#6 init_buckets::dist#1 ] ]
Coalescing zero page register [ zp[2]:81 [ main::bucket#0 atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] ] with [ zp[2]:44 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 init_buckets::i1#2 init_buckets::i1#1 ] ]
Coalescing zero page register [ zp[1]:83 [ main::bucket_size#0 ] ] with [ zp[1]:22 [ 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]:145 [ init_buckets::$7 ] ] with [ zp[2]:23 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] ]
Allocated (was zp[1]:6) zp[1]:2 [ main::bucket_idx#6 main::bucket_idx#1 ]
Allocated (was zp[2]:8) zp[2]:3 [ main::min_offset#2 main::min_offset#8 main::fill1#0 heap_head#19 heap_head#0 ]
Allocated (was zp[1]:10) zp[1]:5 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ]
Allocated (was zp[2]:11) zp[2]:6 [ main::min_offset#5 main::min_offset#9 main::offset#0 main::min_offset#11 malloc::size#7 malloc::size#1 malloc::mem#0 init_buckets::$15 init_buckets::$4 SQUARES#0 ]
Allocated (was zp[2]:25) zp[2]:8 [ 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_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ]
Allocated (was zp[1]:27) zp[1]:10 [ init_angle_screen::x#2 init_angle_screen::x#1 init_dist_screen::x#2 init_dist_screen::x#1 ]
Allocated (was zp[1]:28) zp[1]:11 [ init_angle_screen::xb#2 init_angle_screen::xb#1 init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Allocated (was zp[2]:47) zp[2]:12 [ 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_buckets::i2#2 init_buckets::i2#1 ]
Allocated (was zp[2]:49) zp[2]:14 [ 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_buckets::dist#5 init_buckets::dist#8 init_buckets::dist#3 ]
Allocated (was zp[2]:52) zp[2]:16 [ 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 init_buckets::i4#2 init_buckets::i4#1 ]
Allocated (was zp[2]:61) zp[2]:18 [ 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::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 init_squares::sqr#2 init_squares::sqr#1 init_buckets::dist#4 init_buckets::dist#6 init_buckets::dist#1 ]
Allocated (was zp[2]:66) zp[2]:20 [ SCREEN_ANGLE#0 ]
Allocated (was zp[2]:68) zp[2]:22 [ BUCKET_SIZES#0 ]
Allocated (was zp[2]:70) zp[2]:24 [ BUCKETS#0 ]
Allocated (was zp[2]:81) zp[2]:26 [ main::bucket#0 atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 init_buckets::i1#2 init_buckets::i1#1 ]
Allocated (was zp[1]:83) zp[1]:28 [ main::bucket_size#0 init_angle_screen::y#5 init_angle_screen::y#1 init_dist_screen::y#10 init_dist_screen::y#1 ]
Allocated (was zp[2]:87) zp[2]:29 [ main::fill#0 SCREEN_DIST#0 init_buckets::screen#0 ]
Allocated (was zp[2]:89) zp[2]:31 [ main::angle#0 BUCKET_IDX#0 ]
Allocated (was zp[2]:109) zp[2]:33 [ init_angle_screen::xw#0 atan2_16::x#0 sqr::return#2 init_dist_screen::yds#0 ]
Allocated (was zp[2]:112) zp[2]:35 [ init_angle_screen::yw#0 atan2_16::y#0 sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 ]
Allocated (was zp[1]:136) zp[1]:37 [ init_buckets::distance#0 init_angle_screen::ang_w#0 ]
Allocated (was zp[2]:145) zp[2]:38 [ init_buckets::$7 init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ]
Allocated (was zp[2]:170) zp[2]:40 [ bsearch16u::pivot#0 init_buckets::$11 init_buckets::$16 ]
Allocated (was zp[2]:172) zp[2]:42 [ bsearch16u::result#0 init_buckets::$14 init_buckets::$12 init_buckets::$17 init_buckets::bucket#0 ]

ASSEMBLER BEFORE OPTIMIZATION
  // File Comments
// Fill screen using a spiral based on distance-to-center / angle-to-center
// Utilizes a bucket sort for identifying the minimum angle/distance
  // Upstart
  // Commodore 64 PRG executable file
.file [name="screen-show-spiral-buckets.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
  .const SIZEOF_UNSIGNED_INT = 2
  // The number of iterations performed during 16-bit CORDIC atan2 calculation
  .const CORDIC_ITERATIONS_16 = $f
  // Char to fill with
  .const FILL_CHAR = '*'
  // The number of buckets in our bucket sort
  .const NUM_BUCKETS = $30
  .const SIZEOF_CHAR = 1
  .const SIZEOF_POINTER = 2
  // The number of squares to pre-calculate. Limits what values sqr() can calculate and the result of sqrt()
  .const NUM_SQUARES = $30
  /// $D012 RASTER Raster counter
  .label RASTER = $d012
  /// $D020 Border Color
  .label BORDER_COLOR = $d020
  /// Color Ram
  .label COLS = $d800
  // Screen containing angle to center
  .label SCREEN_FILL = $400
  // Top of the heap used by malloc()
  .label HEAP_TOP = $a000
  // Head of the heap. Moved backward each malloc()
  .label heap_head = 3
  // Squares for each char value SQUARES[i] = i*i
  // Initialized by init_squares()
  .label SQUARES = 6
  // Screen containing distance to center
  .label SCREEN_DIST = $1d
  // Screen containing angle to center
  .label SCREEN_ANGLE = $14
  // Array containing the bucket size for each of the distance buckets
  .label BUCKET_SIZES = $16
  // Buckets containing screen indices for each distance from the center.
  // BUCKETS[dist] is an array of words containing screen indices.
  // The size of the array BUCKETS[dist] is BUCKET_SIZES[dist]
  .label BUCKETS = $18
  // Current index into each bucket. Used while populating the buckets. (After population the end the values will be equal to the bucket sizes)
  .label BUCKET_IDX = $1f
.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
    // [15] phi from __start::__init1 to malloc [phi:__start::__init1->malloc]
  malloc_from___init1:
    // [15] phi malloc::size#7 = $3e8 [phi:__start::__init1->malloc#0] -- vwuz1=vwuc1 
    lda #<$3e8
    sta.z malloc.size
    lda #>$3e8
    sta.z malloc.size+1
    // [15] phi heap_head#19 = 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
    // [15] phi from __start::@2 to malloc [phi:__start::@2->malloc]
  malloc_from___b2:
    // [15] phi malloc::size#7 = $3e8 [phi:__start::@2->malloc#0] -- vwuz1=vwuc1 
    lda #<$3e8
    sta.z malloc.size
    lda #>$3e8
    sta.z malloc.size+1
    // [15] phi heap_head#19 = 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] call malloc
    // [15] phi from __start::@3 to malloc [phi:__start::@3->malloc]
  malloc_from___b3:
    // [15] phi malloc::size#7 = NUM_BUCKETS*SIZEOF_CHAR [phi:__start::@3->malloc#0] -- vwuz1=vbuc1 
    lda #<NUM_BUCKETS*SIZEOF_CHAR
    sta.z malloc.size
    lda #>NUM_BUCKETS*SIZEOF_CHAR
    sta.z malloc.size+1
    // [15] phi heap_head#19 = heap_head#0 [phi:__start::@3->malloc#1] -- register_copy 
    jsr malloc
    jmp __b4
    // __start::@4
  __b4:
    // [7] BUCKET_SIZES#0 = (char *)(void *)malloc::mem#0 -- pbuz1=pbuz2 
    lda.z malloc.mem
    sta.z BUCKET_SIZES
    lda.z malloc.mem+1
    sta.z BUCKET_SIZES+1
    // [8] call malloc
    // [15] phi from __start::@4 to malloc [phi:__start::@4->malloc]
  malloc_from___b4:
    // [15] phi malloc::size#7 = NUM_BUCKETS*SIZEOF_POINTER [phi:__start::@4->malloc#0] -- vwuz1=vbuc1 
    lda #<NUM_BUCKETS*SIZEOF_POINTER
    sta.z malloc.size
    lda #>NUM_BUCKETS*SIZEOF_POINTER
    sta.z malloc.size+1
    // [15] phi heap_head#19 = heap_head#0 [phi:__start::@4->malloc#1] -- register_copy 
    jsr malloc
    jmp __b5
    // __start::@5
  __b5:
    // [9] BUCKETS#0 = (unsigned int **)(void *)malloc::mem#0 -- qwuz1=qwuz2 
    lda.z malloc.mem
    sta.z BUCKETS
    lda.z malloc.mem+1
    sta.z BUCKETS+1
    // [10] call malloc
    // [15] phi from __start::@5 to malloc [phi:__start::@5->malloc]
  malloc_from___b5:
    // [15] phi malloc::size#7 = NUM_BUCKETS*SIZEOF_CHAR [phi:__start::@5->malloc#0] -- vwuz1=vbuc1 
    lda #<NUM_BUCKETS*SIZEOF_CHAR
    sta.z malloc.size
    lda #>NUM_BUCKETS*SIZEOF_CHAR
    sta.z malloc.size+1
    // [15] phi heap_head#19 = heap_head#0 [phi:__start::@5->malloc#1] -- register_copy 
    jsr malloc
    jmp __b6
    // __start::@6
  __b6:
    // [11] BUCKET_IDX#0 = (char *)(void *)malloc::mem#0 -- pbuz1=pbuz2 
    lda.z malloc.mem
    sta.z BUCKET_IDX
    lda.z malloc.mem+1
    sta.z BUCKET_IDX+1
    // [12] phi from __start::@6 to __start::@1 [phi:__start::@6->__start::@1]
  __b1_from___b6:
    jmp __b1
    // __start::@1
  __b1:
    // [13] call main
    jsr main
    jmp __breturn
    // __start::@return
  __breturn:
    // [14] 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(6) unsigned int size)
malloc: {
    .label mem = 6
    .label size = 6
    // [16] malloc::mem#0 = heap_head#19 - malloc::size#7 -- 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
    // [17] 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:
    // [18] return 
    rts
}
  // main
main: {
    .label bucket = $1a
    .label bucket_size = $1c
    // Animate a spiral walking through the buckets one at a time
    .label bucket_idx = 2
    .label offset = 6
    .label fill = $1d
    .label angle = $1f
    // Find the minimum unfilled angle in the current bucket
    .label min_angle = 5
    .label fill1 = 3
    .label min_offset = 3
    .label min_offset_1 = 6
    // asm { sei  }
    sei
    // [20] 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
    // [21] call init_dist_screen
    // [56] phi from main to init_dist_screen [phi:main->init_dist_screen]
  init_dist_screen_from_main:
    jsr init_dist_screen
    jmp __b15
    // main::@15
  __b15:
    // [22] 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
    // [23] call init_angle_screen
    jsr init_angle_screen
    jmp __b16
    // main::@16
  __b16:
    // [24] init_buckets::screen#0 = SCREEN_DIST#0
    // [25] call init_buckets
    // [127] phi from main::@16 to init_buckets [phi:main::@16->init_buckets]
  init_buckets_from___b16:
    jsr init_buckets
    // [26] phi from main::@16 to main::@1 [phi:main::@16->main::@1]
  __b1_from___b16:
    // [26] phi main::bucket_idx#6 = 0 [phi:main::@16->main::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z bucket_idx
    jmp __b1
    // main::@1
  __b1:
    jmp __b2
    // main::@2
  __b2:
    // [27] if(*RASTER!=$ff) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda #$ff
    cmp RASTER
    bne __b2
    jmp __b3
    // main::@3
  __b3:
    // [28] *BORDER_COLOR = ++ *BORDER_COLOR -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDER_COLOR
    // [29] main::$23 = main::bucket_idx#6 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z bucket_idx
    asl
    // [30] main::bucket#0 = BUCKETS#0[main::$23] -- pwuz1=qwuz2_derefidx_vbuaa 
    tay
    lda (BUCKETS),y
    sta.z bucket
    iny
    lda (BUCKETS),y
    sta.z bucket+1
    // [31] main::bucket_size#0 = BUCKET_SIZES#0[main::bucket_idx#6] -- vbuz1=pbuz2_derefidx_vbuz3 
    ldy.z bucket_idx
    lda (BUCKET_SIZES),y
    sta.z bucket_size
    // [32] if(main::bucket_size#0<=0) goto main::@4 -- vbuz1_le_0_then_la1 
    lda.z bucket_size
    cmp #0
    beq __b4
    // [33] phi from main::@3 to main::@5 [phi:main::@3->main::@5]
  __b5_from___b3:
    // [33] phi main::min_angle#2 = $ff [phi:main::@3->main::@5#0] -- vbuz1=vbuc1 
    lda #$ff
    sta.z min_angle
    // [33] phi main::min_offset#2 = $ffff [phi:main::@3->main::@5#1] -- vwuz1=vwuc1 
    lda #<$ffff
    sta.z min_offset
    lda #>$ffff
    sta.z min_offset+1
    // [33] phi main::i#2 = 0 [phi:main::@3->main::@5#2] -- vbuxx=vbuc1 
    ldx #0
    jmp __b5
    // main::@5
  __b5:
    // [34] if(main::i#2<main::bucket_size#0) goto main::@6 -- vbuxx_lt_vbuz1_then_la1 
    cpx.z bucket_size
    bcc __b6
    jmp __b7
    // main::@7
  __b7:
    // [35] if(main::min_offset#2==$ffff) goto main::@4 -- vwuz1_eq_vwuc1_then_la1 
    lda.z min_offset
    cmp #<$ffff
    bne !+
    lda.z min_offset+1
    cmp #>$ffff
    beq __b4
  !:
    jmp __b11
    // main::@11
  __b11:
    // [36] main::fill1#0 = SCREEN_FILL + main::min_offset#2 -- pbuz1=pbuc1_plus_vwuz1 
    // Found something to fill!
    lda.z fill1
    clc
    adc #<SCREEN_FILL
    sta.z fill1
    lda.z fill1+1
    adc #>SCREEN_FILL
    sta.z fill1+1
    // [37] *main::fill1#0 = FILL_CHAR -- _deref_pbuz1=vbuc1 
    lda #FILL_CHAR
    ldy #0
    sta (fill1),y
    // [38] *BORDER_COLOR = -- *BORDER_COLOR -- _deref_pbuc1=_dec__deref_pbuc1 
    dec BORDER_COLOR
    // [26] phi from main::@11 main::@12 to main::@1 [phi:main::@11/main::@12->main::@1]
  __b1_from___b11:
  __b1_from___b12:
    // [26] phi main::bucket_idx#6 = main::bucket_idx#6 [phi:main::@11/main::@12->main::@1#0] -- register_copy 
    jmp __b1
    // main::@4
  __b4:
    // [39] main::bucket_idx#1 = ++ main::bucket_idx#6 -- vbuz1=_inc_vbuz1 
    inc.z bucket_idx
    // [40] if(main::bucket_idx#1!=NUM_BUCKETS) goto main::@12 -- vbuz1_neq_vbuc1_then_la1 
    lda #NUM_BUCKETS
    cmp.z bucket_idx
    bne __b12
    jmp __b13
    // main::@13
  __b13:
    // [41] *BORDER_COLOR = -- *BORDER_COLOR -- _deref_pbuc1=_dec__deref_pbuc1 
    dec BORDER_COLOR
    jmp __b14
    // main::@14
  __b14:
    // [42] *(COLS+$3e7) = ++ *(COLS+$3e7) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc COLS+$3e7
    jmp __b14
    // main::@12
  __b12:
    // [43] *BORDER_COLOR = -- *BORDER_COLOR -- _deref_pbuc1=_dec__deref_pbuc1 
    dec BORDER_COLOR
    jmp __b1_from___b12
    // main::@6
  __b6:
    // [44] main::$24 = main::i#2 << 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // [45] main::offset#0 = main::bucket#0[main::$24] -- vwuz1=pwuz2_derefidx_vbuaa 
    tay
    lda (bucket),y
    sta.z offset
    iny
    lda (bucket),y
    sta.z offset+1
    // [46] main::fill#0 = SCREEN_FILL + main::offset#0 -- pbuz1=pbuc1_plus_vwuz2 
    lda.z offset
    clc
    adc #<SCREEN_FILL
    sta.z fill
    lda.z offset+1
    adc #>SCREEN_FILL
    sta.z fill+1
    // [47] if(*main::fill#0==FILL_CHAR) goto main::@18 -- _deref_pbuz1_eq_vbuc1_then_la1 
    lda #FILL_CHAR
    ldy #0
    cmp (fill),y
    beq __b18
    jmp __b9
    // main::@9
  __b9:
    // [48] main::angle#0 = SCREEN_ANGLE#0 + main::offset#0 -- pbuz1=pbuz2_plus_vwuz3 
    lda.z SCREEN_ANGLE
    clc
    adc.z offset
    sta.z angle
    lda.z SCREEN_ANGLE+1
    adc.z offset+1
    sta.z angle+1
    // [49] if(*main::angle#0>main::min_angle#2) goto main::@17 -- _deref_pbuz1_gt_vbuz2_then_la1 
    ldy #0
    lda (angle),y
    cmp.z min_angle
    beq !+
    bcs __b17
  !:
    jmp __b10
    // main::@10
  __b10:
    // [50] main::min_angle#1 = *main::angle#0 -- vbuz1=_deref_pbuz2 
    ldy #0
    lda (angle),y
    sta.z min_angle
    // [51] phi from main::@10 main::@17 main::@18 to main::@8 [phi:main::@10/main::@17/main::@18->main::@8]
  __b8_from___b10:
  __b8_from___b17:
  __b8_from___b18:
    // [51] phi main::min_angle#5 = main::min_angle#1 [phi:main::@10/main::@17/main::@18->main::@8#0] -- register_copy 
    // [51] phi main::min_offset#5 = main::offset#0 [phi:main::@10/main::@17/main::@18->main::@8#1] -- register_copy 
    jmp __b8
    // main::@8
  __b8:
    // [52] main::i#1 = ++ main::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [53] main::min_offset#8 = main::min_offset#5 -- vwuz1=vwuz2 
    lda.z min_offset_1
    sta.z min_offset
    lda.z min_offset_1+1
    sta.z min_offset+1
    // [33] phi from main::@8 to main::@5 [phi:main::@8->main::@5]
  __b5_from___b8:
    // [33] phi main::min_angle#2 = main::min_angle#5 [phi:main::@8->main::@5#0] -- register_copy 
    // [33] phi main::min_offset#2 = main::min_offset#8 [phi:main::@8->main::@5#1] -- register_copy 
    // [33] phi main::i#2 = main::i#1 [phi:main::@8->main::@5#2] -- register_copy 
    jmp __b5
    // main::@17
  __b17:
    // [54] main::min_offset#9 = main::min_offset#2 -- vwuz1=vwuz2 
    lda.z min_offset
    sta.z min_offset_1
    lda.z min_offset+1
    sta.z min_offset_1+1
    jmp __b8_from___b17
    // main::@18
  __b18:
    // [55] main::min_offset#11 = main::min_offset#2 -- vwuz1=vwuz2 
    lda.z min_offset
    sta.z min_offset_1
    lda.z min_offset+1
    sta.z min_offset_1+1
    jmp __b8_from___b18
}
  // 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
// Utilizes symmetry around the center
// void init_dist_screen(__zp($26) char *screen)
init_dist_screen: {
    .label screen = $26
    .label screen_bottomline = 8
    .label yds = $21
    .label screen_topline = $26
    .label y = $1c
    .label xds = $23
    .label ds = $23
    .label x = $a
    .label xb = $b
    // [57] call init_squares
    // [167] 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:
    // [58] 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
    // [59] phi from init_dist_screen::@11 to init_dist_screen::@1 [phi:init_dist_screen::@11->init_dist_screen::@1]
  __b1_from___b11:
    // [59] 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 
    // [59] phi init_dist_screen::screen_topline#11 = init_dist_screen::screen#0 [phi:init_dist_screen::@11->init_dist_screen::@1#1] -- register_copy 
    // [59] 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
    // [59] phi from init_dist_screen::@7 to init_dist_screen::@1 [phi:init_dist_screen::@7->init_dist_screen::@1]
  __b1_from___b7:
    // [59] 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 
    // [59] 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 
    // [59] 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:
    // [60] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z y
    asl
    // [61] 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:
    // [62] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    sec
    adc #$18
    // [63] 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:
    // [63] 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:
    // [64] sqr::val#0 = init_dist_screen::yd#0
    // [65] call sqr
    // [180] phi from init_dist_screen::@4 to sqr [phi:init_dist_screen::@4->sqr]
  sqr_from___b4:
    // [180] phi sqr::val#2 = sqr::val#0 [phi:init_dist_screen::@4->sqr#0] -- register_copy 
    jsr sqr
    // [66] 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:
    // [67] init_dist_screen::yds#0 = sqr::return#2
    // [68] phi from init_dist_screen::@12 to init_dist_screen::@5 [phi:init_dist_screen::@12->init_dist_screen::@5]
  __b5_from___b12:
    // [68] phi init_dist_screen::xb#2 = $27 [phi:init_dist_screen::@12->init_dist_screen::@5#0] -- vbuz1=vbuc1 
    lda #$27
    sta.z xb
    // [68] 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:
    // [69] 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:
    // [70] 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
  !:
    // [71] 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
    // [72] init_dist_screen::y#1 = ++ init_dist_screen::y#10 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [73] 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:
    // [74] return 
    rts
    // init_dist_screen::@6
  __b6:
    // [75] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z x
    asl
    // [76] 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:
    // [77] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    sec
    adc #$27
    // [78] 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:
    // [78] 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:
    // [79] sqr::val#1 = init_dist_screen::xd#0
    // [80] call sqr
    // [180] phi from init_dist_screen::@10 to sqr [phi:init_dist_screen::@10->sqr]
  sqr_from___b10:
    // [180] phi sqr::val#2 = sqr::val#1 [phi:init_dist_screen::@10->sqr#0] -- register_copy 
    jsr sqr
    // [81] sqr::return#3 = sqr::return#0
    jmp __b13
    // init_dist_screen::@13
  __b13:
    // [82] init_dist_screen::xds#0 = sqr::return#3
    // [83] 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
    // [84] sqrt::val#0 = init_dist_screen::ds#0
    // [85] call sqrt
    jsr sqrt
    // [86] sqrt::return#2 = sqrt::return#0
    jmp __b14
    // init_dist_screen::@14
  __b14:
    // [87] init_dist_screen::d#0 = sqrt::return#2
    // [88] 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
    // [89] 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
    // [90] 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
    // [91] 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
    // [92] init_dist_screen::x#1 = ++ init_dist_screen::x#2 -- vbuz1=_inc_vbuz1 
    inc.z x
    // [93] init_dist_screen::xb#1 = -- init_dist_screen::xb#2 -- vbuz1=_dec_vbuz1 
    dec.z xb
    // [68] phi from init_dist_screen::@14 to init_dist_screen::@5 [phi:init_dist_screen::@14->init_dist_screen::@5]
  __b5_from___b14:
    // [68] phi init_dist_screen::xb#2 = init_dist_screen::xb#1 [phi:init_dist_screen::@14->init_dist_screen::@5#0] -- register_copy 
    // [68] 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:
    // [94] 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:
    // [95] 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(8) char *screen)
init_angle_screen: {
    .label __9 = $10
    .label screen = 8
    .label screen_bottomline = 8
    .label xw = $21
    .label yw = $23
    .label angle_w = $10
    .label ang_w = $25
    .label x = $a
    .label xb = $b
    .label screen_topline = $26
    .label y = $1c
    // [96] 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
    // [97] 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
    // [98] phi from init_angle_screen to init_angle_screen::@1 [phi:init_angle_screen->init_angle_screen::@1]
  __b1_from_init_angle_screen:
    // [98] phi init_angle_screen::screen_bottomline#6 = init_angle_screen::screen_bottomline#0 [phi:init_angle_screen->init_angle_screen::@1#0] -- register_copy 
    // [98] phi init_angle_screen::screen_topline#6 = init_angle_screen::screen_topline#7 [phi:init_angle_screen->init_angle_screen::@1#1] -- register_copy 
    // [98] 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
    // [98] phi from init_angle_screen::@4 to init_angle_screen::@1 [phi:init_angle_screen::@4->init_angle_screen::@1]
  __b1_from___b4:
    // [98] 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 
    // [98] 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 
    // [98] 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:
    // [99] phi from init_angle_screen::@1 to init_angle_screen::@2 [phi:init_angle_screen::@1->init_angle_screen::@2]
  __b2_from___b1:
    // [99] phi init_angle_screen::xb#2 = $27 [phi:init_angle_screen::@1->init_angle_screen::@2#0] -- vbuz1=vbuc1 
    lda #$27
    sta.z xb
    // [99] 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:
    // [100] 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:
    // [101] 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
    // [102] 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
  !:
    // [103] init_angle_screen::y#1 = ++ init_angle_screen::y#5 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [104] 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:
    // [105] return 
    rts
    // init_angle_screen::@3
  __b3:
    // [106] init_angle_screen::$3 = init_angle_screen::x#2 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z x
    asl
    // [107] init_angle_screen::$4 = $27 - init_angle_screen::$3 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    sec
    adc #$27
    // [108] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 -- vwuz1=vbuaa_word_vbuc1 
    ldy #0
    sta.z xw+1
    sty.z xw
    // [109] init_angle_screen::$6 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z y
    asl
    // [110] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0 -- vwuz1=vbuaa_word_vbuc1 
    ldy #0
    sta.z yw+1
    sty.z yw
    // [111] atan2_16::x#0 = (int)init_angle_screen::xw#0
    // [112] atan2_16::y#0 = (int)init_angle_screen::yw#0
    // [113] call atan2_16
    jsr atan2_16
    // [114] atan2_16::return#2 = atan2_16::return#0
    jmp __b5
    // init_angle_screen::@5
  __b5:
    // [115] init_angle_screen::angle_w#0 = atan2_16::return#2
    // [116] 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
  !:
    // [117] init_angle_screen::ang_w#0 = byte1  init_angle_screen::$9 -- vbuz1=_byte1_vwuz2 
    lda.z __9+1
    sta.z ang_w
    // [118] 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
    // [119] init_angle_screen::$11 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1 
    lda.z ang_w
    eor #$ff
    clc
    adc #1
    // [120] 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
    // [121] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1 
    lda #$80
    clc
    adc.z ang_w
    // [122] 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
    // [123] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1 
    lda #$80
    sec
    sbc.z ang_w
    // [124] 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
    // [125] init_angle_screen::x#1 = ++ init_angle_screen::x#2 -- vbuz1=_inc_vbuz1 
    inc.z x
    // [126] init_angle_screen::xb#1 = -- init_angle_screen::xb#2 -- vbuz1=_dec_vbuz1 
    dec.z xb
    // [99] phi from init_angle_screen::@5 to init_angle_screen::@2 [phi:init_angle_screen::@5->init_angle_screen::@2]
  __b2_from___b5:
    // [99] phi init_angle_screen::xb#2 = init_angle_screen::xb#1 [phi:init_angle_screen::@5->init_angle_screen::@2#0] -- register_copy 
    // [99] 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
}
  // init_buckets
// Initialize buckets containing indices of chars on the screen with specific distances to the center.
// void init_buckets(__zp($1d) char *screen)
init_buckets: {
    .label __4 = 6
    .label __7 = $26
    .label __11 = $28
    .label __12 = $2a
    .label __14 = $2a
    .label screen = $1d
    .label dist = $12
    .label i1 = $1a
    .label i2 = $c
    .label distance = $25
    .label bucket = $2a
    .label dist_1 = $e
    .label i4 = $10
    .label __15 = 6
    .label __16 = $28
    .label __17 = $2a
    // [128] phi from init_buckets to init_buckets::@1 [phi:init_buckets->init_buckets::@1]
  __b1_from_init_buckets:
    // [128] phi init_buckets::i#2 = 0 [phi:init_buckets->init_buckets::@1#0] -- vbuyy=vbuc1 
    ldy #0
    jmp __b1
  // Init bucket sizes to 0
    // [128] phi from init_buckets::@1 to init_buckets::@1 [phi:init_buckets::@1->init_buckets::@1]
  __b1_from___b1:
    // [128] phi init_buckets::i#2 = init_buckets::i#1 [phi:init_buckets::@1->init_buckets::@1#0] -- register_copy 
    jmp __b1
    // init_buckets::@1
  __b1:
    // [129] BUCKET_SIZES#0[init_buckets::i#2] = 0 -- pbuz1_derefidx_vbuyy=vbuc1 
    lda #0
    sta (BUCKET_SIZES),y
    // [130] init_buckets::i#1 = ++ init_buckets::i#2 -- vbuyy=_inc_vbuyy 
    iny
    // [131] if(init_buckets::i#1!=NUM_BUCKETS-1+1) goto init_buckets::@1 -- vbuyy_neq_vbuc1_then_la1 
    cpy #NUM_BUCKETS-1+1
    bne __b1_from___b1
    jmp __b2
    // init_buckets::@2
  __b2:
    // [132] init_buckets::dist#6 = init_buckets::screen#0 -- pbuz1=pbuz2 
    lda.z screen
    sta.z dist
    lda.z screen+1
    sta.z dist+1
    // [133] phi from init_buckets::@2 to init_buckets::@3 [phi:init_buckets::@2->init_buckets::@3]
  __b3_from___b2:
    // [133] phi init_buckets::i1#2 = 0 [phi:init_buckets::@2->init_buckets::@3#0] -- vwuz1=vwuc1 
    lda #<0
    sta.z i1
    lda #>0
    sta.z i1+1
    // [133] phi init_buckets::dist#4 = init_buckets::dist#6 [phi:init_buckets::@2->init_buckets::@3#1] -- register_copy 
    jmp __b3
    // [133] phi from init_buckets::@3 to init_buckets::@3 [phi:init_buckets::@3->init_buckets::@3]
  __b3_from___b3:
    // [133] phi init_buckets::i1#2 = init_buckets::i1#1 [phi:init_buckets::@3->init_buckets::@3#0] -- register_copy 
    // [133] phi init_buckets::dist#4 = init_buckets::dist#1 [phi:init_buckets::@3->init_buckets::@3#1] -- register_copy 
    jmp __b3
    // init_buckets::@3
  __b3:
    // [134] BUCKET_SIZES#0[*init_buckets::dist#4] = ++ BUCKET_SIZES#0[*init_buckets::dist#4] -- pbuz1_derefidx_(_deref_pbuz2)=_inc_pbuz1_derefidx_(_deref_pbuz2) 
    ldy #0
    lda (dist),y
    tay
    clc
    lda (BUCKET_SIZES),y
    adc #1
    sta (BUCKET_SIZES),y
    // [135] init_buckets::dist#1 = ++ init_buckets::dist#4 -- pbuz1=_inc_pbuz1 
    inc.z dist
    bne !+
    inc.z dist+1
  !:
    // [136] init_buckets::i1#1 = ++ init_buckets::i1#2 -- vwuz1=_inc_vwuz1 
    inc.z i1
    bne !+
    inc.z i1+1
  !:
    // [137] if(init_buckets::i1#1!=$3e8) goto init_buckets::@3 -- vwuz1_neq_vwuc1_then_la1 
    lda.z i1+1
    cmp #>$3e8
    bne __b3_from___b3
    lda.z i1
    cmp #<$3e8
    bne __b3_from___b3
    // [138] phi from init_buckets::@3 to init_buckets::@4 [phi:init_buckets::@3->init_buckets::@4]
  __b4_from___b3:
    // [138] phi init_buckets::i2#2 = 0 [phi:init_buckets::@3->init_buckets::@4#0] -- vwuz1=vwuc1 
    lda #<0
    sta.z i2
    lda #>0
    sta.z i2+1
    jmp __b4
  // Allocate the buckets
    // [138] phi from init_buckets::@8 to init_buckets::@4 [phi:init_buckets::@8->init_buckets::@4]
  __b4_from___b8:
    // [138] phi init_buckets::i2#2 = init_buckets::i2#1 [phi:init_buckets::@8->init_buckets::@4#0] -- register_copy 
    jmp __b4
    // init_buckets::@4
  __b4:
    // [139] init_buckets::$15 = BUCKET_SIZES#0 + init_buckets::i2#2 -- pbuz1=pbuz2_plus_vwuz3 
    lda.z BUCKET_SIZES
    clc
    adc.z i2
    sta.z __15
    lda.z BUCKET_SIZES+1
    adc.z i2+1
    sta.z __15+1
    // [140] malloc::size#1 = *init_buckets::$15 << 1 -- vwuz1=_deref_pbuz1_rol_1 
    ldy #0
    lda (malloc.size),y
    asl
    sta.z malloc.size
    lda #0
    rol
    sta.z malloc.size+1
    // [141] call malloc
    // [15] phi from init_buckets::@4 to malloc [phi:init_buckets::@4->malloc]
  malloc_from___b4:
    // [15] phi malloc::size#7 = malloc::size#1 [phi:init_buckets::@4->malloc#0] -- register_copy 
    // [15] phi heap_head#19 = heap_head#0 [phi:init_buckets::@4->malloc#1] -- register_copy 
    jsr malloc
    jmp __b8
    // init_buckets::@8
  __b8:
    // [142] init_buckets::$4 = (void *)malloc::mem#0
    // [143] init_buckets::$11 = init_buckets::i2#2 << 1 -- vwuz1=vwuz2_rol_1 
    lda.z i2
    asl
    sta.z __11
    lda.z i2+1
    rol
    sta.z __11+1
    // [144] init_buckets::$16 = BUCKETS#0 + init_buckets::$11 -- qwuz1=qwuz2_plus_vwuz1 
    lda.z __16
    clc
    adc.z BUCKETS
    sta.z __16
    lda.z __16+1
    adc.z BUCKETS+1
    sta.z __16+1
    // [145] *init_buckets::$16 = (unsigned int *)init_buckets::$4 -- _deref_qwuz1=pwuz2 
    ldy #0
    lda.z __4
    sta (__16),y
    iny
    lda.z __4+1
    sta (__16),y
    // [146] init_buckets::i2#1 = ++ init_buckets::i2#2 -- vwuz1=_inc_vwuz1 
    inc.z i2
    bne !+
    inc.z i2+1
  !:
    // [147] if(init_buckets::i2#1!=NUM_BUCKETS-1+1) goto init_buckets::@4 -- vwuz1_neq_vbuc1_then_la1 
    lda.z i2+1
    bne __b4_from___b8
    lda.z i2
    cmp #NUM_BUCKETS-1+1
    bne __b4_from___b8
    // [148] phi from init_buckets::@8 to init_buckets::@5 [phi:init_buckets::@8->init_buckets::@5]
  __b5_from___b8:
    // [148] phi init_buckets::i3#2 = 0 [phi:init_buckets::@8->init_buckets::@5#0] -- vbuyy=vbuc1 
    ldy #0
    jmp __b5
  // Iterate all distances and fill the buckets with indices into the screens
    // [148] phi from init_buckets::@5 to init_buckets::@5 [phi:init_buckets::@5->init_buckets::@5]
  __b5_from___b5:
    // [148] phi init_buckets::i3#2 = init_buckets::i3#1 [phi:init_buckets::@5->init_buckets::@5#0] -- register_copy 
    jmp __b5
    // init_buckets::@5
  __b5:
    // [149] BUCKET_IDX#0[init_buckets::i3#2] = 0 -- pbuz1_derefidx_vbuyy=vbuc1 
    lda #0
    sta (BUCKET_IDX),y
    // [150] init_buckets::i3#1 = ++ init_buckets::i3#2 -- vbuyy=_inc_vbuyy 
    iny
    // [151] if(init_buckets::i3#1!=NUM_BUCKETS-1+1) goto init_buckets::@5 -- vbuyy_neq_vbuc1_then_la1 
    cpy #NUM_BUCKETS-1+1
    bne __b5_from___b5
    jmp __b6
    // init_buckets::@6
  __b6:
    // [152] init_buckets::dist#8 = init_buckets::screen#0 -- pbuz1=pbuz2 
    lda.z screen
    sta.z dist_1
    lda.z screen+1
    sta.z dist_1+1
    // [153] phi from init_buckets::@6 to init_buckets::@7 [phi:init_buckets::@6->init_buckets::@7]
  __b7_from___b6:
    // [153] phi init_buckets::i4#2 = 0 [phi:init_buckets::@6->init_buckets::@7#0] -- vwuz1=vwuc1 
    lda #<0
    sta.z i4
    lda #>0
    sta.z i4+1
    // [153] phi init_buckets::dist#5 = init_buckets::dist#8 [phi:init_buckets::@6->init_buckets::@7#1] -- register_copy 
    jmp __b7
    // [153] phi from init_buckets::@7 to init_buckets::@7 [phi:init_buckets::@7->init_buckets::@7]
  __b7_from___b7:
    // [153] phi init_buckets::i4#2 = init_buckets::i4#1 [phi:init_buckets::@7->init_buckets::@7#0] -- register_copy 
    // [153] phi init_buckets::dist#5 = init_buckets::dist#3 [phi:init_buckets::@7->init_buckets::@7#1] -- register_copy 
    jmp __b7
    // init_buckets::@7
  __b7:
    // [154] init_buckets::distance#0 = *init_buckets::dist#5 -- vbuz1=_deref_pbuz2 
    ldy #0
    lda (dist_1),y
    sta.z distance
    // [155] init_buckets::$14 = (unsigned int)init_buckets::distance#0 -- vwuz1=_word_vbuz2 
    lda.z distance
    sta.z __14
    lda #0
    sta.z __14+1
    // [156] init_buckets::$12 = init_buckets::$14 << 1 -- vwuz1=vwuz1_rol_1 
    asl.z __12
    rol.z __12+1
    // [157] init_buckets::$17 = BUCKETS#0 + init_buckets::$12 -- qwuz1=qwuz2_plus_vwuz1 
    lda.z __17
    clc
    adc.z BUCKETS
    sta.z __17
    lda.z __17+1
    adc.z BUCKETS+1
    sta.z __17+1
    // [158] init_buckets::bucket#0 = *init_buckets::$17 -- pwuz1=_deref_qwuz1 
    ldy #0
    lda (bucket),y
    pha
    iny
    lda (bucket),y
    sta.z bucket+1
    pla
    sta.z bucket
    // [159] init_buckets::$7 = init_buckets::dist#5 - init_buckets::screen#0 -- vwuz1=pbuz2_minus_pbuz3 
    lda.z dist_1
    sec
    sbc.z screen
    sta.z __7
    lda.z dist_1+1
    sbc.z screen+1
    sta.z __7+1
    // [160] init_buckets::$13 = BUCKET_IDX#0[init_buckets::distance#0] << 1 -- vbuaa=pbuz1_derefidx_vbuz2_rol_1 
    ldy.z distance
    lda (BUCKET_IDX),y
    asl
    // [161] init_buckets::bucket#0[init_buckets::$13] = init_buckets::$7 -- pwuz1_derefidx_vbuaa=vwuz2 
    tay
    lda.z __7
    sta (bucket),y
    iny
    lda.z __7+1
    sta (bucket),y
    // [162] BUCKET_IDX#0[init_buckets::distance#0] = ++ BUCKET_IDX#0[init_buckets::distance#0] -- pbuz1_derefidx_vbuz2=_inc_pbuz1_derefidx_vbuz2 
    ldy.z distance
    clc
    lda (BUCKET_IDX),y
    adc #1
    sta (BUCKET_IDX),y
    // [163] init_buckets::dist#3 = ++ init_buckets::dist#5 -- pbuz1=_inc_pbuz1 
    inc.z dist_1
    bne !+
    inc.z dist_1+1
  !:
    // [164] init_buckets::i4#1 = ++ init_buckets::i4#2 -- vwuz1=_inc_vwuz1 
    inc.z i4
    bne !+
    inc.z i4+1
  !:
    // [165] if(init_buckets::i4#1!=$3e8) goto init_buckets::@7 -- vwuz1_neq_vwuc1_then_la1 
    lda.z i4+1
    cmp #>$3e8
    bne __b7_from___b7
    lda.z i4
    cmp #<$3e8
    bne __b7_from___b7
    jmp __breturn
    // init_buckets::@return
  __breturn:
    // [166] return 
    rts
}
  // init_squares
// Initialize squares table
// Uses iterative formula (x+1)^2 = x^2 + 2*x + 1
init_squares: {
    .label squares = $1a
    .label sqr = $12
    // [168] call malloc
    // [15] phi from init_squares to malloc [phi:init_squares->malloc]
  malloc_from_init_squares:
    // [15] phi malloc::size#7 = 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
    // [15] phi heap_head#19 = heap_head#0 [phi:init_squares->malloc#1] -- register_copy 
    jsr malloc
    jmp __b3
    // init_squares::@3
  __b3:
    // [169] SQUARES#0 = (void *)malloc::mem#0
    // [170] init_squares::squares#0 = (unsigned int *)SQUARES#0 -- pwuz1=pwuz2 
    lda.z SQUARES
    sta.z squares
    lda.z SQUARES+1
    sta.z squares+1
    // [171] phi from init_squares::@3 to init_squares::@1 [phi:init_squares::@3->init_squares::@1]
  __b1_from___b3:
    // [171] phi init_squares::squares#2 = init_squares::squares#0 [phi:init_squares::@3->init_squares::@1#0] -- register_copy 
    // [171] 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
    // [171] phi init_squares::i#2 = 0 [phi:init_squares::@3->init_squares::@1#2] -- vbuxx=vbuc1 
    ldx #0
    jmp __b1
    // init_squares::@1
  __b1:
    // [172] 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:
    // [173] return 
    rts
    // init_squares::@2
  __b2:
    // [174] *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
    // [175] 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
  !:
    // [176] init_squares::$3 = init_squares::i#2 << 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // [177] init_squares::$4 = init_squares::$3 + 1 -- vbuaa=vbuaa_plus_1 
    clc
    adc #1
    // [178] 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
  !:
    // [179] init_squares::i#1 = ++ init_squares::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [171] phi from init_squares::@2 to init_squares::@1 [phi:init_squares::@2->init_squares::@1]
  __b1_from___b2:
    // [171] phi init_squares::squares#2 = init_squares::squares#1 [phi:init_squares::@2->init_squares::@1#0] -- register_copy 
    // [171] phi init_squares::sqr#2 = init_squares::sqr#1 [phi:init_squares::@2->init_squares::@1#1] -- register_copy 
    // [171] 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($23) unsigned int sqr(__register(A) char val)
sqr: {
    .label return = $23
    .label return_1 = $21
    // [181] sqr::$0 = sqr::val#2 << 1 -- vbuaa=vbuaa_rol_1 
    asl
    // [182] 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:
    // [183] 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($23) unsigned int val)
sqrt: {
    .label __1 = $12
    .label __2 = $12
    .label found = $12
    .label val = $23
    // [184] bsearch16u::key#0 = sqrt::val#0
    // [185] 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
    // [186] call bsearch16u
    // [236] phi from sqrt to bsearch16u [phi:sqrt->bsearch16u]
  bsearch16u_from_sqrt:
    jsr bsearch16u
    // [187] bsearch16u::return#3 = bsearch16u::return#1
    jmp __b1
    // sqrt::@1
  __b1:
    // [188] sqrt::found#0 = bsearch16u::return#3
    // [189] 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
    // [190] sqrt::$1 = sqrt::$2 >> 1 -- vwuz1=vwuz1_ror_1 
    lsr.z __1+1
    ror.z __1
    // [191] sqrt::return#0 = (char)sqrt::$1 -- vbuaa=_byte_vwuz1 
    lda.z __1
    jmp __breturn
    // sqrt::@return
  __breturn:
    // [192] 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($10) unsigned int atan2_16(__zp($21) int x, __zp($23) int y)
atan2_16: {
    .label __2 = $c
    .label __7 = $e
    .label yi = $c
    .label xi = $e
    .label angle = $10
    .label xd = $1a
    .label yd = $12
    .label return = $10
    .label x = $21
    .label y = $23
    // [193] 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:
    // [194] 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
    // [195] 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:
    // [195] 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:
    // [196] 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:
    // [197] 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
    // [198] 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:
    // [198] 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:
    // [199] phi from atan2_16::@6 to atan2_16::@10 [phi:atan2_16::@6->atan2_16::@10]
  __b10_from___b6:
    // [199] 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
    // [199] phi atan2_16::i#2 = 0 [phi:atan2_16::@6->atan2_16::@10#1] -- vbuxx=vbuc1 
    ldx #0
    // [199] phi atan2_16::xi#3 = atan2_16::xi#0 [phi:atan2_16::@6->atan2_16::@10#2] -- register_copy 
    // [199] 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:
    // [200] if(atan2_16::yi#3!=0) goto atan2_16::@11 -- vwsz1_neq_0_then_la1 
    lda.z yi+1
    ora.z yi
    bne __b11
    // [201] 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:
    // [201] 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:
    // [202] atan2_16::angle#1 = atan2_16::angle#6 >> 1 -- vwuz1=vwuz1_ror_1 
    lsr.z angle+1
    ror.z angle
    // [203] 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:
    // [204] 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
    // [205] 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:
    // [205] 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:
    // [206] 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:
    // [207] 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
    // [208] 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:
    // [208] 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:
    // [209] return 
    rts
    // atan2_16::@11
  __b11:
    // [210] atan2_16::shift#5 = atan2_16::i#2 -- vbuyy=vbuxx 
    txa
    tay
    // [211] atan2_16::xd#10 = atan2_16::xi#3 -- vwsz1=vwsz2 
    lda.z xi
    sta.z xd
    lda.z xi+1
    sta.z xd+1
    // [212] atan2_16::yd#10 = atan2_16::yi#3 -- vwsz1=vwsz2 
    lda.z yi
    sta.z yd
    lda.z yi+1
    sta.z yd+1
    // [213] 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:
    // [213] phi atan2_16::yd#3 = atan2_16::yd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#0] -- register_copy 
    // [213] phi atan2_16::xd#3 = atan2_16::xd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#1] -- register_copy 
    // [213] 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:
    // [214] 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:
    // [215] 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:
    // [216] 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
    // [217] 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
    // [218] 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:
    // [218] phi atan2_16::xd#5 = atan2_16::xd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#0] -- register_copy 
    // [218] 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:
    // [219] 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:
    // [220] 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
    // [221] 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
    // [222] atan2_16::$23 = atan2_16::i#2 << 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // [223] 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
    // [224] 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:
    // [224] phi atan2_16::xi#8 = atan2_16::xi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#0] -- register_copy 
    // [224] phi atan2_16::angle#13 = atan2_16::angle#2 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#1] -- register_copy 
    // [224] 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:
    // [225] atan2_16::i#1 = ++ atan2_16::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [226] 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
    // [199] phi from atan2_16::@19 to atan2_16::@10 [phi:atan2_16::@19->atan2_16::@10]
  __b10_from___b19:
    // [199] phi atan2_16::angle#12 = atan2_16::angle#13 [phi:atan2_16::@19->atan2_16::@10#0] -- register_copy 
    // [199] phi atan2_16::i#2 = atan2_16::i#1 [phi:atan2_16::@19->atan2_16::@10#1] -- register_copy 
    // [199] phi atan2_16::xi#3 = atan2_16::xi#8 [phi:atan2_16::@19->atan2_16::@10#2] -- register_copy 
    // [199] 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:
    // [227] 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
    // [228] 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
    // [229] atan2_16::$22 = atan2_16::i#2 << 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // [230] 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:
    // [231] 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
    // [232] 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
    // [233] atan2_16::shift#1 = atan2_16::shift#2 - 2 -- vbuyy=vbuyy_minus_2 
    dey
    dey
    jmp __b13_from___b14
    // atan2_16::@4
  __b4:
    // [234] 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:
    // [235] 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
}
  // 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($12) unsigned int * bsearch16u(__zp($23) unsigned int key, __zp($12) unsigned int *items, __register(X) char num)
bsearch16u: {
    .label __2 = $12
    .label pivot = $28
    .label result = $2a
    .label return = $12
    .label items = $12
    .label key = $23
    // [237] phi from bsearch16u to bsearch16u::@3 [phi:bsearch16u->bsearch16u::@3]
  __b3_from_bsearch16u:
    // [237] phi bsearch16u::items#2 = bsearch16u::items#1 [phi:bsearch16u->bsearch16u::@3#0] -- register_copy 
    // [237] phi bsearch16u::num#3 = NUM_SQUARES#2 [phi:bsearch16u->bsearch16u::@3#1] -- vbuxx=vbuc1 
    ldx #NUM_SQUARES
    jmp __b3
    // bsearch16u::@3
  __b3:
    // [238] if(bsearch16u::num#3>0) goto bsearch16u::@4 -- vbuxx_gt_0_then_la1 
    cpx #0
    bne __b4
    jmp __b5
    // bsearch16u::@5
  __b5:
    // [239] 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:
    // [240] 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
    // [241] phi from bsearch16u::@1 bsearch16u::@5 to bsearch16u::@2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2]
  __b2_from___b1:
  __b2_from___b5:
    // [241] phi bsearch16u::return#2 = bsearch16u::$2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2#0] -- register_copy 
    jmp __b2
    // bsearch16u::@2
  __b2:
    // [242] phi from bsearch16u::@2 bsearch16u::@8 to bsearch16u::@return [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return]
  __breturn_from___b2:
  __breturn_from___b8:
    // [242] phi bsearch16u::return#1 = bsearch16u::return#2 [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return#0] -- register_copy 
    jmp __breturn
    // bsearch16u::@return
  __breturn:
    // [243] return 
    rts
    // bsearch16u::@4
  __b4:
    // [244] bsearch16u::$6 = bsearch16u::num#3 >> 1 -- vbuaa=vbuxx_ror_1 
    txa
    lsr
    // [245] bsearch16u::$14 = bsearch16u::$6 << 1 -- vbuaa=vbuaa_rol_1 
    asl
    // [246] 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
    // [247] 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
    // [248] 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:
    // [249] 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:
    // [250] 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:
    // [251] 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
    // [252] bsearch16u::num#1 = -- bsearch16u::num#3 -- vbuxx=_dec_vbuxx 
    dex
    // [253] phi from bsearch16u::@6 bsearch16u::@9 to bsearch16u::@7 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7]
  __b7_from___b6:
  __b7_from___b9:
    // [253] phi bsearch16u::items#8 = bsearch16u::items#2 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#0] -- register_copy 
    // [253] phi bsearch16u::num#5 = bsearch16u::num#3 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#1] -- register_copy 
    jmp __b7
    // bsearch16u::@7
  __b7:
    // [254] bsearch16u::num#0 = bsearch16u::num#5 >> 1 -- vbuxx=vbuxx_ror_1 
    txa
    lsr
    tax
    // [237] phi from bsearch16u::@7 to bsearch16u::@3 [phi:bsearch16u::@7->bsearch16u::@3]
  __b3_from___b7:
    // [237] phi bsearch16u::items#2 = bsearch16u::items#8 [phi:bsearch16u::@7->bsearch16u::@3#0] -- register_copy 
    // [237] 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


ASSEMBLER OPTIMIZATIONS
Removing instruction jmp __init1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b15
Removing instruction jmp __b16
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b5
Removing instruction jmp __b7
Removing instruction jmp __b11
Removing instruction jmp __b13
Removing instruction jmp __b14
Removing instruction jmp __b9
Removing instruction jmp __b10
Removing instruction jmp __b8
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 __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b8
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __b7
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 __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.z bucket_size
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 lda #0 with TYA
Removing instruction lda #>0
Removing instruction lda.z distance
Replacing instruction lda #0 with TYA
Removing instruction ldy #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 __b8_from___b17 with __b8
Replacing label __b8_from___b18 with __b8
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 __b1_from___b1 with __b1
Replacing label __b3_from___b3 with __b3
Replacing label __b3_from___b3 with __b3
Replacing label __b4_from___b8 with __b4
Replacing label __b4_from___b8 with __b4
Replacing label __b5_from___b5 with __b5
Replacing label __b7_from___b7 with __b7
Replacing label __b7_from___b7 with __b7
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___b6:
Removing instruction init_buckets_from___b16:
Removing instruction __b1:
Removing instruction __b1_from___b11:
Removing instruction __b8_from___b10:
Removing instruction __b8_from___b17:
Removing instruction __b8_from___b18:
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 __b1_from___b1:
Removing instruction __b3_from___b3:
Removing instruction __b4_from___b8:
Removing instruction __b5_from___b5:
Removing instruction __b7_from___b7:
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 malloc_from___b3:
Removing instruction __b4:
Removing instruction malloc_from___b4:
Removing instruction __b5:
Removing instruction malloc_from___b5:
Removing instruction __b6:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction init_dist_screen_from_main:
Removing instruction __b15:
Removing instruction __b16:
Removing instruction __b1_from___b16:
Removing instruction __b3:
Removing instruction __b5_from___b3:
Removing instruction __b7:
Removing instruction __b11:
Removing instruction __b13:
Removing instruction __b9:
Removing instruction __b10:
Removing instruction __b5_from___b8:
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 __b1_from_init_buckets:
Removing instruction __b2:
Removing instruction __b3_from___b2:
Removing instruction __b4_from___b3:
Removing instruction malloc_from___b4:
Removing instruction __b8:
Removing instruction __b5_from___b8:
Removing instruction __b6:
Removing instruction __b7_from___b6:
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 __b3_from_bsearch16u:
Removing instruction __b5:
Removing instruction __b1:
Removing instruction __b8:
Removing instruction __b9:
Removing instruction __b3_from___b7:
Succesful ASM optimization Pass5UnusedLabelElimination
Skipping double jump to __b2 in jmp __b1_from___b12
Replacing jump to rts with rts in jmp __b2
Succesful ASM optimization Pass5DoubleJumpElimination
Relabelling long label __b1_from___b12 to __b1
Succesful ASM optimization Pass5RelabelLongLabels
Removing instruction jmp __b1
Removing instruction jmp __b1
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b7
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction ldy #0
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Removing instruction __b1:
Succesful ASM optimization Pass5UnusedLabelElimination
Fixing long branch [852] beq __b12 to bne
Fixing long branch [747] bpl __b1 to bmi
Fixing long branch [759] bpl __b4 to bmi

FINAL SYMBOL TABLE
__constant char * const BORDER_COLOR = (char *) 53280
unsigned int **BUCKETS
unsigned int **BUCKETS#0 // BUCKETS zp[2]:24 26.645569620253163
char *BUCKET_IDX
char *BUCKET_IDX#0 // BUCKET_IDX zp[2]:31 85.23404255319149
char *BUCKET_SIZES
char *BUCKET_SIZES#0 // BUCKET_SIZES zp[2]:22 50.70370370370371
__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 const char FILL_CHAR = '*'
__constant char *HEAP_TOP = (char *) 40960
__constant const char NUM_BUCKETS = $30
char NUM_SQUARES
__constant char NUM_SQUARES#2 = $30 // NUM_SQUARES
__constant char RADIX::BINARY = 2
__constant char RADIX::DECIMAL = $a
__constant char RADIX::HEXADECIMAL = $10
__constant char RADIX::OCTAL = 8
__constant char * const RASTER = (char *) 53266
char *SCREEN_ANGLE
char *SCREEN_ANGLE#0 // SCREEN_ANGLE zp[2]:20 23.58139534883721
char *SCREEN_DIST
char *SCREEN_DIST#0 // SCREEN_DIST zp[2]:29 1.5999999999999999
__constant char * const SCREEN_FILL = (char *) 1024
__constant char SIZEOF_CHAR = 1
__constant char SIZEOF_POINTER = 2
__constant char SIZEOF_UNSIGNED_INT = 2
unsigned int *SQUARES
void *SQUARES#0 // SQUARES zp[2]:6 16.14516129032258
void __start()
unsigned int atan2_16(int x , int y)
int atan2_16::$2 // zp[2]:12 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]:14 200002.0
unsigned int atan2_16::angle
unsigned int atan2_16::angle#1 // angle zp[2]:16 150001.5
unsigned int atan2_16::angle#11 // angle zp[2]:16 200002.0
unsigned int atan2_16::angle#12 // angle zp[2]:16 1.904761923809524E7
unsigned int atan2_16::angle#13 // angle zp[2]:16 1.3333333466666667E8
unsigned int atan2_16::angle#2 // angle zp[2]:16 2.00000002E8
unsigned int atan2_16::angle#3 // angle zp[2]:16 2.00000002E8
unsigned int atan2_16::angle#4 // angle zp[2]:16 200002.0
unsigned int atan2_16::angle#5 // angle zp[2]:16 200002.0
unsigned int atan2_16::angle#6 // angle zp[2]:16 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]:16 70001.0
unsigned int atan2_16::return#2 // return zp[2]:16 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]:33 10789.605263157895
int atan2_16::xd
int atan2_16::xd#1 // xd zp[2]:26 6.666666673333334E8
int atan2_16::xd#10 // xd zp[2]:26 1.00000001E8
int atan2_16::xd#2 // xd zp[2]:26 1.00000001E8
int atan2_16::xd#3 // xd zp[2]:26 7.666666683333335E8
int atan2_16::xd#5 // xd zp[2]:26 1.00000001E8
int atan2_16::xi
int atan2_16::xi#0 // xi zp[2]:14 300003.0
int atan2_16::xi#1 // xi zp[2]:14 5.00000005E7
int atan2_16::xi#13 // xi zp[2]:14 200002.0
int atan2_16::xi#2 // xi zp[2]:14 5.00000005E7
int atan2_16::xi#3 // xi zp[2]:14 2.6673333666666668E7
int atan2_16::xi#8 // xi zp[2]:14 1.00000001E8
int atan2_16::y
int atan2_16::y#0 // y zp[2]:35 10250.125
int atan2_16::yd
int atan2_16::yd#1 // yd zp[2]:18 1.000000001E9
int atan2_16::yd#10 // yd zp[2]:18 2.00000002E8
int atan2_16::yd#2 // yd zp[2]:18 2.00000002E8
int atan2_16::yd#3 // yd zp[2]:18 4.6000000099999994E8
int atan2_16::yd#5 // yd zp[2]:18 2.00000002E8
int atan2_16::yi
int atan2_16::yi#0 // yi zp[2]:12 60000.600000000006
int atan2_16::yi#1 // yi zp[2]:12 6.6666667333333336E7
int atan2_16::yi#16 // yi zp[2]:12 200002.0
int atan2_16::yi#2 // yi zp[2]:12 6.6666667333333336E7
int atan2_16::yi#3 // yi zp[2]:12 3.53000004117647E7
int atan2_16::yi#8 // yi zp[2]:12 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]:18 2000002.0
char bsearch16u::$6 // reg byte a 2.000000002E9
unsigned int *bsearch16u::items
unsigned int *bsearch16u::items#0 // items zp[2]:18 1.000000001E9
unsigned int *bsearch16u::items#1 // items zp[2]:18 550001.0
unsigned int *bsearch16u::items#2 // items zp[2]:18 3.337777785555556E8
unsigned int *bsearch16u::items#8 // items zp[2]:18 1.5000000015E9
unsigned int bsearch16u::key
unsigned int bsearch16u::key#0 // key zp[2]:35 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]:40 5.0025000075E8
int bsearch16u::result
int bsearch16u::result#0 // result zp[2]:42 1.5000000015E9
unsigned int *bsearch16u::return
unsigned int *bsearch16u::return#1 // return zp[2]:18 700001.0
unsigned int *bsearch16u::return#2 // return zp[2]:18 3000003.0
unsigned int *bsearch16u::return#3 // return zp[2]:18 200002.0
unsigned int *bsearch16u::return#7 // return zp[2]:18 2000002.0
char *heap_head
char *heap_head#0 // heap_head zp[2]:3 129.1505376344086
char *heap_head#19 // heap_head zp[2]:3 12011.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]:16 20002.0
char init_angle_screen::ang_w
char init_angle_screen::ang_w#0 // ang_w zp[1]:37 8334.166666666666
unsigned int init_angle_screen::angle_w
unsigned int init_angle_screen::angle_w#0 // angle_w zp[2]:16 20002.0
char *init_angle_screen::screen
char *init_angle_screen::screen#0 // screen zp[2]:8 112.0
char *init_angle_screen::screen_bottomline
char *init_angle_screen::screen_bottomline#0 // screen_bottomline zp[2]:8 151.5
char *init_angle_screen::screen_bottomline#1 // screen_bottomline zp[2]:8 667.3333333333334
char *init_angle_screen::screen_bottomline#6 // screen_bottomline zp[2]:8 884.2
char *init_angle_screen::screen_topline
char *init_angle_screen::screen_topline#1 // screen_topline zp[2]:38 500.5
char *init_angle_screen::screen_topline#6 // screen_topline zp[2]:38 921.0416666666666
char *init_angle_screen::screen_topline#7 // screen_topline zp[2]:38 202.0
char init_angle_screen::x
char init_angle_screen::x#1 // x zp[1]:10 10001.0
char init_angle_screen::x#2 // x zp[1]:10 2857.4285714285716
char init_angle_screen::xb
char init_angle_screen::xb#1 // xb zp[1]:11 20002.0
char init_angle_screen::xb#2 // xb zp[1]:11 1818.3636363636363
int init_angle_screen::xw
unsigned int init_angle_screen::xw#0 // xw zp[2]:33 3333.6666666666665
char init_angle_screen::y
char init_angle_screen::y#1 // y zp[1]:28 1501.5
char init_angle_screen::y#5 // y zp[1]:28 461.65384615384613
int init_angle_screen::yw
unsigned int init_angle_screen::yw#0 // yw zp[2]:35 5000.5
void init_buckets(char *screen)
unsigned int init_buckets::$11 // zp[2]:40 2002.0
unsigned int init_buckets::$12 // zp[2]:42 2002.0
char init_buckets::$13 // reg byte a 2002.0
unsigned int init_buckets::$14 // zp[2]:42 2002.0
char *init_buckets::$15 // zp[2]:6 2002.0
unsigned int **init_buckets::$16 // zp[2]:40 2002.0
unsigned int **init_buckets::$17 // zp[2]:42 2002.0
void *init_buckets::$4 // zp[2]:6 333.6666666666667
unsigned int init_buckets::$7 // zp[2]:38 1001.0
unsigned int *init_buckets::bucket
unsigned int *init_buckets::bucket#0 // bucket zp[2]:42 667.3333333333334
char *init_buckets::dist
char *init_buckets::dist#1 // dist zp[2]:18 667.3333333333334
char *init_buckets::dist#3 // dist_1 zp[2]:14 667.3333333333334
char *init_buckets::dist#4 // dist zp[2]:18 2052.5
char *init_buckets::dist#5 // dist_1 zp[2]:14 410.5
char *init_buckets::dist#6 // dist zp[2]:18 202.0
char *init_buckets::dist#8 // dist_1 zp[2]:14 202.0
char init_buckets::distance
char init_buckets::distance#0 // distance zp[1]:37 500.5
char init_buckets::i
char init_buckets::i#1 // reg byte y 1501.5
char init_buckets::i#2 // reg byte y 1501.5
unsigned int init_buckets::i1
unsigned int init_buckets::i1#1 // i1 zp[2]:26 1501.5
unsigned int init_buckets::i1#2 // i1 zp[2]:26 667.3333333333334
unsigned int init_buckets::i2
unsigned int init_buckets::i2#1 // i2 zp[2]:12 1501.5
unsigned int init_buckets::i2#2 // i2 zp[2]:12 500.5
char init_buckets::i3
char init_buckets::i3#1 // reg byte y 1501.5
char init_buckets::i3#2 // reg byte y 1501.5
unsigned int init_buckets::i4
unsigned int init_buckets::i4#1 // i4 zp[2]:16 1501.5
unsigned int init_buckets::i4#2 // i4 zp[2]:16 182.0
char *init_buckets::screen
char *init_buckets::screen#0 // screen zp[2]:29 30.349999999999998
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]:35 20002.0
char *init_dist_screen::screen
char *init_dist_screen::screen#0 // screen zp[2]:38 53.25
char *init_dist_screen::screen_bottomline
char *init_dist_screen::screen_bottomline#0 // screen_bottomline zp[2]:8 202.0
char *init_dist_screen::screen_bottomline#1 // screen_bottomline zp[2]:8 667.3333333333334
char *init_dist_screen::screen_bottomline#11 // screen_bottomline zp[2]:8 669.8484848484848
char *init_dist_screen::screen_topline
char *init_dist_screen::screen_topline#1 // screen_topline zp[2]:38 500.5
char *init_dist_screen::screen_topline#11 // screen_topline zp[2]:38 690.78125
char init_dist_screen::x
char init_dist_screen::x#1 // x zp[1]:10 10001.0
char init_dist_screen::x#2 // x zp[1]:10 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]:11 20002.0
char init_dist_screen::xb#2 // xb zp[1]:11 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]:35 20002.0
char init_dist_screen::y
char init_dist_screen::y#1 // y zp[1]:28 1501.5
char init_dist_screen::y#10 // y zp[1]:28 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]:33 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]:18 10001.0
unsigned int init_squares::sqr#2 // sqr zp[2]:18 5000.5
unsigned int *init_squares::squares
unsigned int *init_squares::squares#0 // squares zp[2]:26 2002.0
unsigned int *init_squares::squares#1 // squares zp[2]:26 4000.4
unsigned int *init_squares::squares#2 // squares zp[2]:26 10334.666666666666
void main()
char main::$23 // reg byte a 202.0
char main::$24 // reg byte a 2002.0
char *main::angle
char *main::angle#0 // angle zp[2]:31 1501.5
unsigned int *main::bucket
unsigned int *main::bucket#0 // bucket zp[2]:26 64.82352941176471
char main::bucket_idx
char main::bucket_idx#1 // bucket_idx zp[1]:2 101.0
char main::bucket_idx#6 // bucket_idx zp[1]:2 24.24
char main::bucket_size
char main::bucket_size#0 // bucket_size zp[1]:28 75.1875
char *main::fill
char *main::fill#0 // fill zp[2]:29 2002.0
char *main::fill1
char *main::fill1#0 // fill1 zp[2]:3 202.0
char main::i
char main::i#1 // reg byte x 1001.0
char main::i#2 // reg byte x 333.6666666666667
char main::min_angle
char main::min_angle#1 // min_angle zp[1]:5 2002.0
char main::min_angle#2 // min_angle zp[1]:5 400.4
char main::min_angle#5 // min_angle zp[1]:5 1334.6666666666667
unsigned int main::min_offset
unsigned int main::min_offset#11 // min_offset_1 zp[2]:6 2002.0
unsigned int main::min_offset#2 // min_offset zp[2]:3 356.11111111111114
unsigned int main::min_offset#5 // min_offset_1 zp[2]:6 2002.0
unsigned int main::min_offset#8 // min_offset zp[2]:3 2002.0
unsigned int main::min_offset#9 // min_offset_1 zp[2]:6 2002.0
unsigned int main::offset
unsigned int main::offset#0 // offset zp[2]:6 667.3333333333334
void * malloc(unsigned int size)
char *malloc::mem
char *malloc::mem#0 // mem zp[2]:6 2000.2
void *malloc::return
unsigned int malloc::size
unsigned int malloc::size#1 // size zp[2]:6 2002.0
unsigned int malloc::size#7 // size zp[2]:6 11002.0
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]:35 27750.75
unsigned int sqr::return#2 // return_1 zp[2]:33 2002.0
unsigned int sqr::return#3 // return zp[2]:35 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]:18 100001.0
unsigned int sqrt::$2 // zp[2]:18 200002.0
unsigned int *sqrt::found
unsigned int *sqrt::found#0 // found zp[2]:18 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]:35 110002.0

zp[1]:2 [ main::bucket_idx#6 main::bucket_idx#1 ]
reg byte x [ main::i#2 main::i#1 ]
zp[2]:3 [ main::min_offset#2 main::min_offset#8 main::fill1#0 heap_head#19 heap_head#0 ]
zp[1]:5 [ main::min_angle#2 main::min_angle#5 main::min_angle#1 ]
zp[2]:6 [ main::min_offset#5 main::min_offset#9 main::offset#0 main::min_offset#11 malloc::size#7 malloc::size#1 malloc::mem#0 init_buckets::$15 init_buckets::$4 SQUARES#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]:8 [ 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_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ]
zp[1]:10 [ init_angle_screen::x#2 init_angle_screen::x#1 init_dist_screen::x#2 init_dist_screen::x#1 ]
zp[1]:11 [ init_angle_screen::xb#2 init_angle_screen::xb#1 init_dist_screen::xb#2 init_dist_screen::xb#1 ]
reg byte y [ init_buckets::i#2 init_buckets::i#1 ]
reg byte y [ init_buckets::i3#2 init_buckets::i3#1 ]
reg byte x [ init_squares::i#2 init_squares::i#1 ]
reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ]
zp[2]:12 [ 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_buckets::i2#2 init_buckets::i2#1 ]
zp[2]:14 [ 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_buckets::dist#5 init_buckets::dist#8 init_buckets::dist#3 ]
reg byte x [ atan2_16::i#2 atan2_16::i#1 ]
zp[2]:16 [ 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 init_buckets::i4#2 init_buckets::i4#1 ]
reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
zp[2]:18 [ 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::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 init_squares::sqr#2 init_squares::sqr#1 init_buckets::dist#4 init_buckets::dist#6 init_buckets::dist#1 ]
reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
zp[2]:20 [ SCREEN_ANGLE#0 ]
zp[2]:22 [ BUCKET_SIZES#0 ]
zp[2]:24 [ BUCKETS#0 ]
reg byte a [ main::$23 ]
zp[2]:26 [ main::bucket#0 atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 init_buckets::i1#2 init_buckets::i1#1 ]
zp[1]:28 [ main::bucket_size#0 init_angle_screen::y#5 init_angle_screen::y#1 init_dist_screen::y#10 init_dist_screen::y#1 ]
reg byte a [ main::$24 ]
zp[2]:29 [ main::fill#0 SCREEN_DIST#0 init_buckets::screen#0 ]
zp[2]:31 [ main::angle#0 BUCKET_IDX#0 ]
reg byte a [ init_dist_screen::y2#0 ]
reg byte a [ init_dist_screen::x2#0 ]
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 ]
zp[2]:33 [ init_angle_screen::xw#0 atan2_16::x#0 sqr::return#2 init_dist_screen::yds#0 ]
reg byte a [ init_angle_screen::$6 ]
zp[2]:35 [ init_angle_screen::yw#0 atan2_16::y#0 sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 ]
reg byte a [ init_angle_screen::$11 ]
reg byte a [ init_angle_screen::$12 ]
reg byte a [ init_angle_screen::$13 ]
zp[1]:37 [ init_buckets::distance#0 init_angle_screen::ang_w#0 ]
zp[2]:38 [ init_buckets::$7 init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ]
reg byte a [ init_buckets::$13 ]
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]:40 [ bsearch16u::pivot#0 init_buckets::$11 init_buckets::$16 ]
zp[2]:42 [ bsearch16u::result#0 init_buckets::$14 init_buckets::$12 init_buckets::$17 init_buckets::bucket#0 ]


FINAL ASSEMBLER
Score: 1111688

  // File Comments
// Fill screen using a spiral based on distance-to-center / angle-to-center
// Utilizes a bucket sort for identifying the minimum angle/distance
  // Upstart
  // Commodore 64 PRG executable file
.file [name="screen-show-spiral-buckets.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
  .const SIZEOF_UNSIGNED_INT = 2
  // The number of iterations performed during 16-bit CORDIC atan2 calculation
  .const CORDIC_ITERATIONS_16 = $f
  // Char to fill with
  .const FILL_CHAR = '*'
  // The number of buckets in our bucket sort
  .const NUM_BUCKETS = $30
  .const SIZEOF_CHAR = 1
  .const SIZEOF_POINTER = 2
  // The number of squares to pre-calculate. Limits what values sqr() can calculate and the result of sqrt()
  .const NUM_SQUARES = $30
  /// $D012 RASTER Raster counter
  .label RASTER = $d012
  /// $D020 Border Color
  .label BORDER_COLOR = $d020
  /// Color Ram
  .label COLS = $d800
  // Screen containing angle to center
  .label SCREEN_FILL = $400
  // Top of the heap used by malloc()
  .label HEAP_TOP = $a000
  // Head of the heap. Moved backward each malloc()
  .label heap_head = 3
  // Squares for each char value SQUARES[i] = i*i
  // Initialized by init_squares()
  .label SQUARES = 6
  // Screen containing distance to center
  .label SCREEN_DIST = $1d
  // Screen containing angle to center
  .label SCREEN_ANGLE = $14
  // Array containing the bucket size for each of the distance buckets
  .label BUCKET_SIZES = $16
  // Buckets containing screen indices for each distance from the center.
  // BUCKETS[dist] is an array of words containing screen indices.
  // The size of the array BUCKETS[dist] is BUCKET_SIZES[dist]
  .label BUCKETS = $18
  // Current index into each bucket. Used while populating the buckets. (After population the end the values will be equal to the bucket sizes)
  .label BUCKET_IDX = $1f
.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
    // [15] phi from __start::__init1 to malloc [phi:__start::__init1->malloc]
    // [15] phi malloc::size#7 = $3e8 [phi:__start::__init1->malloc#0] -- vwuz1=vwuc1 
    lda #<$3e8
    sta.z malloc.size
    lda #>$3e8
    sta.z malloc.size+1
    // [15] phi heap_head#19 = 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
    // [15] phi from __start::@2 to malloc [phi:__start::@2->malloc]
    // [15] phi malloc::size#7 = $3e8 [phi:__start::@2->malloc#0] -- vwuz1=vwuc1 
    lda #<$3e8
    sta.z malloc.size
    lda #>$3e8
    sta.z malloc.size+1
    // [15] phi heap_head#19 = 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
    // byte* BUCKET_SIZES = malloc(NUM_BUCKETS*sizeof(byte))
    // [6] call malloc
    // [15] phi from __start::@3 to malloc [phi:__start::@3->malloc]
    // [15] phi malloc::size#7 = NUM_BUCKETS*SIZEOF_CHAR [phi:__start::@3->malloc#0] -- vwuz1=vbuc1 
    lda #<NUM_BUCKETS*SIZEOF_CHAR
    sta.z malloc.size
    lda #>NUM_BUCKETS*SIZEOF_CHAR
    sta.z malloc.size+1
    // [15] phi heap_head#19 = heap_head#0 [phi:__start::@3->malloc#1] -- register_copy 
    jsr malloc
    // __start::@4
    // byte* BUCKET_SIZES = malloc(NUM_BUCKETS*sizeof(byte))
    // [7] BUCKET_SIZES#0 = (char *)(void *)malloc::mem#0 -- pbuz1=pbuz2 
    lda.z malloc.mem
    sta.z BUCKET_SIZES
    lda.z malloc.mem+1
    sta.z BUCKET_SIZES+1
    // word** BUCKETS = malloc(NUM_BUCKETS*sizeof(word*))
    // [8] call malloc
    // [15] phi from __start::@4 to malloc [phi:__start::@4->malloc]
    // [15] phi malloc::size#7 = NUM_BUCKETS*SIZEOF_POINTER [phi:__start::@4->malloc#0] -- vwuz1=vbuc1 
    lda #<NUM_BUCKETS*SIZEOF_POINTER
    sta.z malloc.size
    lda #>NUM_BUCKETS*SIZEOF_POINTER
    sta.z malloc.size+1
    // [15] phi heap_head#19 = heap_head#0 [phi:__start::@4->malloc#1] -- register_copy 
    jsr malloc
    // __start::@5
    // word** BUCKETS = malloc(NUM_BUCKETS*sizeof(word*))
    // [9] BUCKETS#0 = (unsigned int **)(void *)malloc::mem#0 -- qwuz1=qwuz2 
    lda.z malloc.mem
    sta.z BUCKETS
    lda.z malloc.mem+1
    sta.z BUCKETS+1
    // byte* BUCKET_IDX = malloc(NUM_BUCKETS*sizeof(byte))
    // [10] call malloc
    // [15] phi from __start::@5 to malloc [phi:__start::@5->malloc]
    // [15] phi malloc::size#7 = NUM_BUCKETS*SIZEOF_CHAR [phi:__start::@5->malloc#0] -- vwuz1=vbuc1 
    lda #<NUM_BUCKETS*SIZEOF_CHAR
    sta.z malloc.size
    lda #>NUM_BUCKETS*SIZEOF_CHAR
    sta.z malloc.size+1
    // [15] phi heap_head#19 = heap_head#0 [phi:__start::@5->malloc#1] -- register_copy 
    jsr malloc
    // __start::@6
    // byte* BUCKET_IDX = malloc(NUM_BUCKETS*sizeof(byte))
    // [11] BUCKET_IDX#0 = (char *)(void *)malloc::mem#0 -- pbuz1=pbuz2 
    lda.z malloc.mem
    sta.z BUCKET_IDX
    lda.z malloc.mem+1
    sta.z BUCKET_IDX+1
    // [12] phi from __start::@6 to __start::@1 [phi:__start::@6->__start::@1]
    // __start::@1
    // [13] call main
    jsr main
    // __start::@return
    // [14] 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(6) unsigned int size)
malloc: {
    .label mem = 6
    .label size = 6
    // unsigned char* mem = heap_head-size
    // [16] malloc::mem#0 = heap_head#19 - malloc::size#7 -- 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
    // [17] 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
    // }
    // [18] return 
    rts
}
  // main
main: {
    .label bucket = $1a
    .label bucket_size = $1c
    // Animate a spiral walking through the buckets one at a time
    .label bucket_idx = 2
    .label offset = 6
    .label fill = $1d
    .label angle = $1f
    // Find the minimum unfilled angle in the current bucket
    .label min_angle = 5
    .label fill1 = 3
    .label min_offset = 3
    .label min_offset_1 = 6
    // asm
    // asm { sei  }
    sei
    // init_dist_screen(SCREEN_DIST)
    // [20] 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
    // [21] call init_dist_screen
    // [56] phi from main to init_dist_screen [phi:main->init_dist_screen]
    jsr init_dist_screen
    // main::@15
    // init_angle_screen(SCREEN_ANGLE)
    // [22] 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
    // [23] call init_angle_screen
    jsr init_angle_screen
    // main::@16
    // init_buckets(SCREEN_DIST)
    // [24] init_buckets::screen#0 = SCREEN_DIST#0
    // [25] call init_buckets
    // [127] phi from main::@16 to init_buckets [phi:main::@16->init_buckets]
    jsr init_buckets
    // [26] phi from main::@16 to main::@1 [phi:main::@16->main::@1]
    // [26] phi main::bucket_idx#6 = 0 [phi:main::@16->main::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z bucket_idx
    // main::@1
    // main::@2
  __b2:
    // while (*RASTER!=0xff)
    // [27] if(*RASTER!=$ff) goto main::@2 -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda #$ff
    cmp RASTER
    bne __b2
    // main::@3
    // (*BORDER_COLOR)++;
    // [28] *BORDER_COLOR = ++ *BORDER_COLOR -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BORDER_COLOR
    // word* bucket = BUCKETS[bucket_idx]
    // [29] main::$23 = main::bucket_idx#6 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z bucket_idx
    asl
    // [30] main::bucket#0 = BUCKETS#0[main::$23] -- pwuz1=qwuz2_derefidx_vbuaa 
    tay
    lda (BUCKETS),y
    sta.z bucket
    iny
    lda (BUCKETS),y
    sta.z bucket+1
    // byte bucket_size = BUCKET_SIZES[bucket_idx]
    // [31] main::bucket_size#0 = BUCKET_SIZES#0[main::bucket_idx#6] -- vbuz1=pbuz2_derefidx_vbuz3 
    ldy.z bucket_idx
    lda (BUCKET_SIZES),y
    sta.z bucket_size
    // if(bucket_size>0)
    // [32] if(main::bucket_size#0<=0) goto main::@4 -- vbuz1_le_0_then_la1 
    cmp #0
    beq __b4
    // [33] phi from main::@3 to main::@5 [phi:main::@3->main::@5]
    // [33] phi main::min_angle#2 = $ff [phi:main::@3->main::@5#0] -- vbuz1=vbuc1 
    lda #$ff
    sta.z min_angle
    // [33] phi main::min_offset#2 = $ffff [phi:main::@3->main::@5#1] -- vwuz1=vwuc1 
    lda #<$ffff
    sta.z min_offset
    lda #>$ffff
    sta.z min_offset+1
    // [33] phi main::i#2 = 0 [phi:main::@3->main::@5#2] -- vbuxx=vbuc1 
    ldx #0
    // main::@5
  __b5:
    // for( byte i=0;i<bucket_size;i++)
    // [34] if(main::i#2<main::bucket_size#0) goto main::@6 -- vbuxx_lt_vbuz1_then_la1 
    cpx.z bucket_size
    bcc __b6
    // main::@7
    // if(min_offset!=0xffff)
    // [35] if(main::min_offset#2==$ffff) goto main::@4 -- vwuz1_eq_vwuc1_then_la1 
    lda.z min_offset
    cmp #<$ffff
    bne !+
    lda.z min_offset+1
    cmp #>$ffff
    beq __b4
  !:
    // main::@11
    // byte* fill = SCREEN_FILL+min_offset
    // [36] main::fill1#0 = SCREEN_FILL + main::min_offset#2 -- pbuz1=pbuc1_plus_vwuz1 
    // Found something to fill!
    lda.z fill1
    clc
    adc #<SCREEN_FILL
    sta.z fill1
    lda.z fill1+1
    adc #>SCREEN_FILL
    sta.z fill1+1
    // *fill = FILL_CHAR
    // [37] *main::fill1#0 = FILL_CHAR -- _deref_pbuz1=vbuc1 
    lda #FILL_CHAR
    ldy #0
    sta (fill1),y
    // (*BORDER_COLOR)--;
    // [38] *BORDER_COLOR = -- *BORDER_COLOR -- _deref_pbuc1=_dec__deref_pbuc1 
    dec BORDER_COLOR
    // [26] phi from main::@11 main::@12 to main::@1 [phi:main::@11/main::@12->main::@1]
    // [26] phi main::bucket_idx#6 = main::bucket_idx#6 [phi:main::@11/main::@12->main::@1#0] -- register_copy 
    jmp __b2
    // main::@4
  __b4:
    // bucket_idx++;
    // [39] main::bucket_idx#1 = ++ main::bucket_idx#6 -- vbuz1=_inc_vbuz1 
    inc.z bucket_idx
    // if(bucket_idx==NUM_BUCKETS)
    // [40] if(main::bucket_idx#1!=NUM_BUCKETS) goto main::@12 -- vbuz1_neq_vbuc1_then_la1 
    lda #NUM_BUCKETS
    cmp.z bucket_idx
    bne __b12
    // main::@13
    // (*BORDER_COLOR)--;
    // [41] *BORDER_COLOR = -- *BORDER_COLOR -- _deref_pbuc1=_dec__deref_pbuc1 
    dec BORDER_COLOR
    // main::@14
  __b14:
    // (*(COLS+999))++;
    // [42] *(COLS+$3e7) = ++ *(COLS+$3e7) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc COLS+$3e7
    jmp __b14
    // main::@12
  __b12:
    // (*BORDER_COLOR)--;
    // [43] *BORDER_COLOR = -- *BORDER_COLOR -- _deref_pbuc1=_dec__deref_pbuc1 
    dec BORDER_COLOR
    jmp __b2
    // main::@6
  __b6:
    // word offset = bucket[i]
    // [44] main::$24 = main::i#2 << 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // [45] main::offset#0 = main::bucket#0[main::$24] -- vwuz1=pwuz2_derefidx_vbuaa 
    tay
    lda (bucket),y
    sta.z offset
    iny
    lda (bucket),y
    sta.z offset+1
    // byte* fill = SCREEN_FILL+offset
    // [46] main::fill#0 = SCREEN_FILL + main::offset#0 -- pbuz1=pbuc1_plus_vwuz2 
    lda.z offset
    clc
    adc #<SCREEN_FILL
    sta.z fill
    lda.z offset+1
    adc #>SCREEN_FILL
    sta.z fill+1
    // if(*fill!=FILL_CHAR)
    // [47] if(*main::fill#0==FILL_CHAR) goto main::@18 -- _deref_pbuz1_eq_vbuc1_then_la1 
    lda #FILL_CHAR
    ldy #0
    cmp (fill),y
    beq __b18
    // main::@9
    // byte* angle = SCREEN_ANGLE+offset
    // [48] main::angle#0 = SCREEN_ANGLE#0 + main::offset#0 -- pbuz1=pbuz2_plus_vwuz3 
    lda.z SCREEN_ANGLE
    clc
    adc.z offset
    sta.z angle
    lda.z SCREEN_ANGLE+1
    adc.z offset+1
    sta.z angle+1
    // if(*angle<=min_angle)
    // [49] if(*main::angle#0>main::min_angle#2) goto main::@17 -- _deref_pbuz1_gt_vbuz2_then_la1 
    lda (angle),y
    cmp.z min_angle
    beq !+
    bcs __b17
  !:
    // main::@10
    // min_angle = *angle
    // [50] main::min_angle#1 = *main::angle#0 -- vbuz1=_deref_pbuz2 
    ldy #0
    lda (angle),y
    sta.z min_angle
    // [51] phi from main::@10 main::@17 main::@18 to main::@8 [phi:main::@10/main::@17/main::@18->main::@8]
    // [51] phi main::min_angle#5 = main::min_angle#1 [phi:main::@10/main::@17/main::@18->main::@8#0] -- register_copy 
    // [51] phi main::min_offset#5 = main::offset#0 [phi:main::@10/main::@17/main::@18->main::@8#1] -- register_copy 
    // main::@8
  __b8:
    // for( byte i=0;i<bucket_size;i++)
    // [52] main::i#1 = ++ main::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [53] main::min_offset#8 = main::min_offset#5 -- vwuz1=vwuz2 
    lda.z min_offset_1
    sta.z min_offset
    lda.z min_offset_1+1
    sta.z min_offset+1
    // [33] phi from main::@8 to main::@5 [phi:main::@8->main::@5]
    // [33] phi main::min_angle#2 = main::min_angle#5 [phi:main::@8->main::@5#0] -- register_copy 
    // [33] phi main::min_offset#2 = main::min_offset#8 [phi:main::@8->main::@5#1] -- register_copy 
    // [33] phi main::i#2 = main::i#1 [phi:main::@8->main::@5#2] -- register_copy 
    jmp __b5
    // main::@17
  __b17:
    // [54] main::min_offset#9 = main::min_offset#2 -- vwuz1=vwuz2 
    lda.z min_offset
    sta.z min_offset_1
    lda.z min_offset+1
    sta.z min_offset_1+1
    jmp __b8
    // main::@18
  __b18:
    // [55] main::min_offset#11 = main::min_offset#2 -- vwuz1=vwuz2 
    lda.z min_offset
    sta.z min_offset_1
    lda.z min_offset+1
    sta.z min_offset_1+1
    jmp __b8
}
  // 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
// Utilizes symmetry around the center
// void init_dist_screen(__zp($26) char *screen)
init_dist_screen: {
    .label screen = $26
    .label screen_bottomline = 8
    .label yds = $21
    .label screen_topline = $26
    .label y = $1c
    .label xds = $23
    .label ds = $23
    .label x = $a
    .label xb = $b
    // init_squares()
    // [57] call init_squares
    // [167] 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
    // [58] 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
    // [59] phi from init_dist_screen::@11 to init_dist_screen::@1 [phi:init_dist_screen::@11->init_dist_screen::@1]
    // [59] 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 
    // [59] phi init_dist_screen::screen_topline#11 = init_dist_screen::screen#0 [phi:init_dist_screen::@11->init_dist_screen::@1#1] -- register_copy 
    // [59] phi init_dist_screen::y#10 = 0 [phi:init_dist_screen::@11->init_dist_screen::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta.z y
    // [59] phi from init_dist_screen::@7 to init_dist_screen::@1 [phi:init_dist_screen::@7->init_dist_screen::@1]
    // [59] 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 
    // [59] 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 
    // [59] 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
    // [60] 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)
    // [61] 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
    // [62] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    sec
    adc #$18
    // [63] 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]
    // [63] 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)
    // [64] sqr::val#0 = init_dist_screen::yd#0
    // [65] call sqr
    // [180] phi from init_dist_screen::@4 to sqr [phi:init_dist_screen::@4->sqr]
    // [180] phi sqr::val#2 = sqr::val#0 [phi:init_dist_screen::@4->sqr#0] -- register_copy 
    jsr sqr
    // word yds = sqr(yd)
    // [66] 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
    // [67] init_dist_screen::yds#0 = sqr::return#2
    // [68] phi from init_dist_screen::@12 to init_dist_screen::@5 [phi:init_dist_screen::@12->init_dist_screen::@5]
    // [68] phi init_dist_screen::xb#2 = $27 [phi:init_dist_screen::@12->init_dist_screen::@5#0] -- vbuz1=vbuc1 
    lda #$27
    sta.z xb
    // [68] 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--)
    // [69] 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
    // [70] 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
    // [71] 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)
    // [72] init_dist_screen::y#1 = ++ init_dist_screen::y#10 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [73] 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
    // }
    // [74] return 
    rts
    // init_dist_screen::@6
  __b6:
    // byte x2 = x*2
    // [75] 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)
    // [76] 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
    // [77] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    sec
    adc #$27
    // [78] 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]
    // [78] 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)
    // [79] sqr::val#1 = init_dist_screen::xd#0
    // [80] call sqr
    // [180] phi from init_dist_screen::@10 to sqr [phi:init_dist_screen::@10->sqr]
    // [180] phi sqr::val#2 = sqr::val#1 [phi:init_dist_screen::@10->sqr#0] -- register_copy 
    jsr sqr
    // word xds = sqr(xd)
    // [81] sqr::return#3 = sqr::return#0
    // init_dist_screen::@13
    // [82] init_dist_screen::xds#0 = sqr::return#3
    // word ds = xds+yds
    // [83] 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)
    // [84] sqrt::val#0 = init_dist_screen::ds#0
    // [85] call sqrt
    jsr sqrt
    // [86] sqrt::return#2 = sqrt::return#0
    // init_dist_screen::@14
    // [87] init_dist_screen::d#0 = sqrt::return#2
    // screen_topline[x] = d
    // [88] 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
    // [89] 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
    // [90] 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
    // [91] 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--)
    // [92] init_dist_screen::x#1 = ++ init_dist_screen::x#2 -- vbuz1=_inc_vbuz1 
    inc.z x
    // [93] init_dist_screen::xb#1 = -- init_dist_screen::xb#2 -- vbuz1=_dec_vbuz1 
    dec.z xb
    // [68] phi from init_dist_screen::@14 to init_dist_screen::@5 [phi:init_dist_screen::@14->init_dist_screen::@5]
    // [68] phi init_dist_screen::xb#2 = init_dist_screen::xb#1 [phi:init_dist_screen::@14->init_dist_screen::@5#0] -- register_copy 
    // [68] 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)
    // [94] 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)
    // [95] 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(8) char *screen)
init_angle_screen: {
    .label __9 = $10
    .label screen = 8
    .label screen_bottomline = 8
    .label xw = $21
    .label yw = $23
    .label angle_w = $10
    .label ang_w = $25
    .label x = $a
    .label xb = $b
    .label screen_topline = $26
    .label y = $1c
    // byte* screen_topline = screen+40*12
    // [96] 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
    // [97] 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
    // [98] phi from init_angle_screen to init_angle_screen::@1 [phi:init_angle_screen->init_angle_screen::@1]
    // [98] phi init_angle_screen::screen_bottomline#6 = init_angle_screen::screen_bottomline#0 [phi:init_angle_screen->init_angle_screen::@1#0] -- register_copy 
    // [98] phi init_angle_screen::screen_topline#6 = init_angle_screen::screen_topline#7 [phi:init_angle_screen->init_angle_screen::@1#1] -- register_copy 
    // [98] phi init_angle_screen::y#5 = 0 [phi:init_angle_screen->init_angle_screen::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta.z y
    // [98] phi from init_angle_screen::@4 to init_angle_screen::@1 [phi:init_angle_screen::@4->init_angle_screen::@1]
    // [98] 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 
    // [98] 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 
    // [98] 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:
    // [99] phi from init_angle_screen::@1 to init_angle_screen::@2 [phi:init_angle_screen::@1->init_angle_screen::@2]
    // [99] phi init_angle_screen::xb#2 = $27 [phi:init_angle_screen::@1->init_angle_screen::@2#0] -- vbuz1=vbuc1 
    lda #$27
    sta.z xb
    // [99] 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--)
    // [100] 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
    // [101] 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
    // [102] 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)
    // [103] init_angle_screen::y#1 = ++ init_angle_screen::y#5 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [104] 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
    // }
    // [105] return 
    rts
    // init_angle_screen::@3
  __b3:
    // x*2
    // [106] init_angle_screen::$3 = init_angle_screen::x#2 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z x
    asl
    // 39-x*2
    // [107] init_angle_screen::$4 = $27 - init_angle_screen::$3 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    sec
    adc #$27
    // MAKEWORD( 39-x*2, 0 )
    // [108] 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
    // [109] init_angle_screen::$6 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z y
    asl
    // MAKEWORD( y*2, 0 )
    // [110] 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)
    // [111] atan2_16::x#0 = (int)init_angle_screen::xw#0
    // [112] atan2_16::y#0 = (int)init_angle_screen::yw#0
    // [113] call atan2_16
    jsr atan2_16
    // [114] atan2_16::return#2 = atan2_16::return#0
    // init_angle_screen::@5
    // [115] init_angle_screen::angle_w#0 = atan2_16::return#2
    // angle_w+0x0080
    // [116] 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)
    // [117] 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
    // [118] 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
    // [119] init_angle_screen::$11 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1 
    eor #$ff
    clc
    adc #1
    // screen_topline[xb] = -ang_w
    // [120] 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
    // [121] 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
    // [122] 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
    // [123] 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
    // [124] 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--)
    // [125] init_angle_screen::x#1 = ++ init_angle_screen::x#2 -- vbuz1=_inc_vbuz1 
    inc.z x
    // [126] init_angle_screen::xb#1 = -- init_angle_screen::xb#2 -- vbuz1=_dec_vbuz1 
    dec.z xb
    // [99] phi from init_angle_screen::@5 to init_angle_screen::@2 [phi:init_angle_screen::@5->init_angle_screen::@2]
    // [99] phi init_angle_screen::xb#2 = init_angle_screen::xb#1 [phi:init_angle_screen::@5->init_angle_screen::@2#0] -- register_copy 
    // [99] 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
}
  // init_buckets
// Initialize buckets containing indices of chars on the screen with specific distances to the center.
// void init_buckets(__zp($1d) char *screen)
init_buckets: {
    .label __4 = 6
    .label __7 = $26
    .label __11 = $28
    .label __12 = $2a
    .label __14 = $2a
    .label screen = $1d
    .label dist = $12
    .label i1 = $1a
    .label i2 = $c
    .label distance = $25
    .label bucket = $2a
    .label dist_1 = $e
    .label i4 = $10
    .label __15 = 6
    .label __16 = $28
    .label __17 = $2a
    // [128] phi from init_buckets to init_buckets::@1 [phi:init_buckets->init_buckets::@1]
    // [128] phi init_buckets::i#2 = 0 [phi:init_buckets->init_buckets::@1#0] -- vbuyy=vbuc1 
    ldy #0
  // Init bucket sizes to 0
    // [128] phi from init_buckets::@1 to init_buckets::@1 [phi:init_buckets::@1->init_buckets::@1]
    // [128] phi init_buckets::i#2 = init_buckets::i#1 [phi:init_buckets::@1->init_buckets::@1#0] -- register_copy 
    // init_buckets::@1
  __b1:
    // BUCKET_SIZES[i]=0
    // [129] BUCKET_SIZES#0[init_buckets::i#2] = 0 -- pbuz1_derefidx_vbuyy=vbuc1 
    lda #0
    sta (BUCKET_SIZES),y
    // for(byte i:0..NUM_BUCKETS-1)
    // [130] init_buckets::i#1 = ++ init_buckets::i#2 -- vbuyy=_inc_vbuyy 
    iny
    // [131] if(init_buckets::i#1!=NUM_BUCKETS-1+1) goto init_buckets::@1 -- vbuyy_neq_vbuc1_then_la1 
    cpy #NUM_BUCKETS-1+1
    bne __b1
    // init_buckets::@2
    // [132] init_buckets::dist#6 = init_buckets::screen#0 -- pbuz1=pbuz2 
    lda.z screen
    sta.z dist
    lda.z screen+1
    sta.z dist+1
    // [133] phi from init_buckets::@2 to init_buckets::@3 [phi:init_buckets::@2->init_buckets::@3]
    // [133] phi init_buckets::i1#2 = 0 [phi:init_buckets::@2->init_buckets::@3#0] -- vwuz1=vwuc1 
    lda #<0
    sta.z i1
    sta.z i1+1
    // [133] phi init_buckets::dist#4 = init_buckets::dist#6 [phi:init_buckets::@2->init_buckets::@3#1] -- register_copy 
    // [133] phi from init_buckets::@3 to init_buckets::@3 [phi:init_buckets::@3->init_buckets::@3]
    // [133] phi init_buckets::i1#2 = init_buckets::i1#1 [phi:init_buckets::@3->init_buckets::@3#0] -- register_copy 
    // [133] phi init_buckets::dist#4 = init_buckets::dist#1 [phi:init_buckets::@3->init_buckets::@3#1] -- register_copy 
    // init_buckets::@3
  __b3:
    // BUCKET_SIZES[*dist]++;
    // [134] BUCKET_SIZES#0[*init_buckets::dist#4] = ++ BUCKET_SIZES#0[*init_buckets::dist#4] -- pbuz1_derefidx_(_deref_pbuz2)=_inc_pbuz1_derefidx_(_deref_pbuz2) 
    ldy #0
    lda (dist),y
    tay
    clc
    lda (BUCKET_SIZES),y
    adc #1
    sta (BUCKET_SIZES),y
    // dist++;
    // [135] init_buckets::dist#1 = ++ init_buckets::dist#4 -- pbuz1=_inc_pbuz1 
    inc.z dist
    bne !+
    inc.z dist+1
  !:
    // for( word i:0..999)
    // [136] init_buckets::i1#1 = ++ init_buckets::i1#2 -- vwuz1=_inc_vwuz1 
    inc.z i1
    bne !+
    inc.z i1+1
  !:
    // [137] if(init_buckets::i1#1!=$3e8) goto init_buckets::@3 -- vwuz1_neq_vwuc1_then_la1 
    lda.z i1+1
    cmp #>$3e8
    bne __b3
    lda.z i1
    cmp #<$3e8
    bne __b3
    // [138] phi from init_buckets::@3 to init_buckets::@4 [phi:init_buckets::@3->init_buckets::@4]
    // [138] phi init_buckets::i2#2 = 0 [phi:init_buckets::@3->init_buckets::@4#0] -- vwuz1=vwuc1 
    lda #<0
    sta.z i2
    sta.z i2+1
  // Allocate the buckets
    // [138] phi from init_buckets::@8 to init_buckets::@4 [phi:init_buckets::@8->init_buckets::@4]
    // [138] phi init_buckets::i2#2 = init_buckets::i2#1 [phi:init_buckets::@8->init_buckets::@4#0] -- register_copy 
    // init_buckets::@4
  __b4:
    // malloc(BUCKET_SIZES[i]*sizeof(byte*))
    // [139] init_buckets::$15 = BUCKET_SIZES#0 + init_buckets::i2#2 -- pbuz1=pbuz2_plus_vwuz3 
    lda.z BUCKET_SIZES
    clc
    adc.z i2
    sta.z __15
    lda.z BUCKET_SIZES+1
    adc.z i2+1
    sta.z __15+1
    // [140] malloc::size#1 = *init_buckets::$15 << 1 -- vwuz1=_deref_pbuz1_rol_1 
    ldy #0
    lda (malloc.size),y
    asl
    sta.z malloc.size
    tya
    rol
    sta.z malloc.size+1
    // [141] call malloc
    // [15] phi from init_buckets::@4 to malloc [phi:init_buckets::@4->malloc]
    // [15] phi malloc::size#7 = malloc::size#1 [phi:init_buckets::@4->malloc#0] -- register_copy 
    // [15] phi heap_head#19 = heap_head#0 [phi:init_buckets::@4->malloc#1] -- register_copy 
    jsr malloc
    // init_buckets::@8
    // malloc(BUCKET_SIZES[i]*sizeof(byte*))
    // [142] init_buckets::$4 = (void *)malloc::mem#0
    // BUCKETS[i] = malloc(BUCKET_SIZES[i]*sizeof(byte*))
    // [143] init_buckets::$11 = init_buckets::i2#2 << 1 -- vwuz1=vwuz2_rol_1 
    lda.z i2
    asl
    sta.z __11
    lda.z i2+1
    rol
    sta.z __11+1
    // [144] init_buckets::$16 = BUCKETS#0 + init_buckets::$11 -- qwuz1=qwuz2_plus_vwuz1 
    lda.z __16
    clc
    adc.z BUCKETS
    sta.z __16
    lda.z __16+1
    adc.z BUCKETS+1
    sta.z __16+1
    // [145] *init_buckets::$16 = (unsigned int *)init_buckets::$4 -- _deref_qwuz1=pwuz2 
    ldy #0
    lda.z __4
    sta (__16),y
    iny
    lda.z __4+1
    sta (__16),y
    // for( word i:0..NUM_BUCKETS-1)
    // [146] init_buckets::i2#1 = ++ init_buckets::i2#2 -- vwuz1=_inc_vwuz1 
    inc.z i2
    bne !+
    inc.z i2+1
  !:
    // [147] if(init_buckets::i2#1!=NUM_BUCKETS-1+1) goto init_buckets::@4 -- vwuz1_neq_vbuc1_then_la1 
    lda.z i2+1
    bne __b4
    lda.z i2
    cmp #NUM_BUCKETS-1+1
    bne __b4
    // [148] phi from init_buckets::@8 to init_buckets::@5 [phi:init_buckets::@8->init_buckets::@5]
    // [148] phi init_buckets::i3#2 = 0 [phi:init_buckets::@8->init_buckets::@5#0] -- vbuyy=vbuc1 
    ldy #0
  // Iterate all distances and fill the buckets with indices into the screens
    // [148] phi from init_buckets::@5 to init_buckets::@5 [phi:init_buckets::@5->init_buckets::@5]
    // [148] phi init_buckets::i3#2 = init_buckets::i3#1 [phi:init_buckets::@5->init_buckets::@5#0] -- register_copy 
    // init_buckets::@5
  __b5:
    // BUCKET_IDX[i]=0
    // [149] BUCKET_IDX#0[init_buckets::i3#2] = 0 -- pbuz1_derefidx_vbuyy=vbuc1 
    lda #0
    sta (BUCKET_IDX),y
    // for(byte i:0..NUM_BUCKETS-1)
    // [150] init_buckets::i3#1 = ++ init_buckets::i3#2 -- vbuyy=_inc_vbuyy 
    iny
    // [151] if(init_buckets::i3#1!=NUM_BUCKETS-1+1) goto init_buckets::@5 -- vbuyy_neq_vbuc1_then_la1 
    cpy #NUM_BUCKETS-1+1
    bne __b5
    // init_buckets::@6
    // [152] init_buckets::dist#8 = init_buckets::screen#0 -- pbuz1=pbuz2 
    lda.z screen
    sta.z dist_1
    lda.z screen+1
    sta.z dist_1+1
    // [153] phi from init_buckets::@6 to init_buckets::@7 [phi:init_buckets::@6->init_buckets::@7]
    // [153] phi init_buckets::i4#2 = 0 [phi:init_buckets::@6->init_buckets::@7#0] -- vwuz1=vwuc1 
    lda #<0
    sta.z i4
    sta.z i4+1
    // [153] phi init_buckets::dist#5 = init_buckets::dist#8 [phi:init_buckets::@6->init_buckets::@7#1] -- register_copy 
    // [153] phi from init_buckets::@7 to init_buckets::@7 [phi:init_buckets::@7->init_buckets::@7]
    // [153] phi init_buckets::i4#2 = init_buckets::i4#1 [phi:init_buckets::@7->init_buckets::@7#0] -- register_copy 
    // [153] phi init_buckets::dist#5 = init_buckets::dist#3 [phi:init_buckets::@7->init_buckets::@7#1] -- register_copy 
    // init_buckets::@7
  __b7:
    // byte distance = *dist
    // [154] init_buckets::distance#0 = *init_buckets::dist#5 -- vbuz1=_deref_pbuz2 
    ldy #0
    lda (dist_1),y
    sta.z distance
    // word* bucket = BUCKETS[(word)distance]
    // [155] init_buckets::$14 = (unsigned int)init_buckets::distance#0 -- vwuz1=_word_vbuz2 
    sta.z __14
    tya
    sta.z __14+1
    // [156] init_buckets::$12 = init_buckets::$14 << 1 -- vwuz1=vwuz1_rol_1 
    asl.z __12
    rol.z __12+1
    // [157] init_buckets::$17 = BUCKETS#0 + init_buckets::$12 -- qwuz1=qwuz2_plus_vwuz1 
    lda.z __17
    clc
    adc.z BUCKETS
    sta.z __17
    lda.z __17+1
    adc.z BUCKETS+1
    sta.z __17+1
    // [158] init_buckets::bucket#0 = *init_buckets::$17 -- pwuz1=_deref_qwuz1 
    lda (bucket),y
    pha
    iny
    lda (bucket),y
    sta.z bucket+1
    pla
    sta.z bucket
    // dist-screen
    // [159] init_buckets::$7 = init_buckets::dist#5 - init_buckets::screen#0 -- vwuz1=pbuz2_minus_pbuz3 
    lda.z dist_1
    sec
    sbc.z screen
    sta.z __7
    lda.z dist_1+1
    sbc.z screen+1
    sta.z __7+1
    // bucket[BUCKET_IDX[distance]] = dist-screen
    // [160] init_buckets::$13 = BUCKET_IDX#0[init_buckets::distance#0] << 1 -- vbuaa=pbuz1_derefidx_vbuz2_rol_1 
    ldy.z distance
    lda (BUCKET_IDX),y
    asl
    // [161] init_buckets::bucket#0[init_buckets::$13] = init_buckets::$7 -- pwuz1_derefidx_vbuaa=vwuz2 
    tay
    lda.z __7
    sta (bucket),y
    iny
    lda.z __7+1
    sta (bucket),y
    // BUCKET_IDX[distance]++;
    // [162] BUCKET_IDX#0[init_buckets::distance#0] = ++ BUCKET_IDX#0[init_buckets::distance#0] -- pbuz1_derefidx_vbuz2=_inc_pbuz1_derefidx_vbuz2 
    ldy.z distance
    clc
    lda (BUCKET_IDX),y
    adc #1
    sta (BUCKET_IDX),y
    // *dist++;
    // [163] init_buckets::dist#3 = ++ init_buckets::dist#5 -- pbuz1=_inc_pbuz1 
    inc.z dist_1
    bne !+
    inc.z dist_1+1
  !:
    // for(word i:0..999)
    // [164] init_buckets::i4#1 = ++ init_buckets::i4#2 -- vwuz1=_inc_vwuz1 
    inc.z i4
    bne !+
    inc.z i4+1
  !:
    // [165] if(init_buckets::i4#1!=$3e8) goto init_buckets::@7 -- vwuz1_neq_vwuc1_then_la1 
    lda.z i4+1
    cmp #>$3e8
    bne __b7
    lda.z i4
    cmp #<$3e8
    bne __b7
    // init_buckets::@return
    // }
    // [166] return 
    rts
}
  // init_squares
// Initialize squares table
// Uses iterative formula (x+1)^2 = x^2 + 2*x + 1
init_squares: {
    .label squares = $1a
    .label sqr = $12
    // malloc(NUM_SQUARES*sizeof(unsigned int))
    // [168] call malloc
    // [15] phi from init_squares to malloc [phi:init_squares->malloc]
    // [15] phi malloc::size#7 = 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
    // [15] phi heap_head#19 = heap_head#0 [phi:init_squares->malloc#1] -- register_copy 
    jsr malloc
    // init_squares::@3
    // malloc(NUM_SQUARES*sizeof(unsigned int))
    // [169] SQUARES#0 = (void *)malloc::mem#0
    // unsigned int* squares = SQUARES
    // [170] init_squares::squares#0 = (unsigned int *)SQUARES#0 -- pwuz1=pwuz2 
    lda.z SQUARES
    sta.z squares
    lda.z SQUARES+1
    sta.z squares+1
    // [171] phi from init_squares::@3 to init_squares::@1 [phi:init_squares::@3->init_squares::@1]
    // [171] phi init_squares::squares#2 = init_squares::squares#0 [phi:init_squares::@3->init_squares::@1#0] -- register_copy 
    // [171] 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
    // [171] 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++)
    // [172] 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
    // }
    // [173] return 
    rts
    // init_squares::@2
  __b2:
    // *squares++ = sqr
    // [174] *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;
    // [175] 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
    // [176] init_squares::$3 = init_squares::i#2 << 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // i*2+1
    // [177] init_squares::$4 = init_squares::$3 + 1 -- vbuaa=vbuaa_plus_1 
    clc
    adc #1
    // sqr += i*2+1
    // [178] 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++)
    // [179] init_squares::i#1 = ++ init_squares::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [171] phi from init_squares::@2 to init_squares::@1 [phi:init_squares::@2->init_squares::@1]
    // [171] phi init_squares::squares#2 = init_squares::squares#1 [phi:init_squares::@2->init_squares::@1#0] -- register_copy 
    // [171] phi init_squares::sqr#2 = init_squares::sqr#1 [phi:init_squares::@2->init_squares::@1#1] -- register_copy 
    // [171] 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($23) unsigned int sqr(__register(A) char val)
sqr: {
    .label return = $23
    .label return_1 = $21
    // return SQUARES[val];
    // [181] sqr::$0 = sqr::val#2 << 1 -- vbuaa=vbuaa_rol_1 
    asl
    // [182] 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
    // }
    // [183] 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($23) unsigned int val)
sqrt: {
    .label __1 = $12
    .label __2 = $12
    .label found = $12
    .label val = $23
    // unsigned int* found = bsearch16u(val, SQUARES, NUM_SQUARES)
    // [184] bsearch16u::key#0 = sqrt::val#0
    // [185] 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
    // [186] call bsearch16u
    // [236] phi from sqrt to bsearch16u [phi:sqrt->bsearch16u]
    jsr bsearch16u
    // unsigned int* found = bsearch16u(val, SQUARES, NUM_SQUARES)
    // [187] bsearch16u::return#3 = bsearch16u::return#1
    // sqrt::@1
    // [188] sqrt::found#0 = bsearch16u::return#3
    // found-SQUARES
    // [189] 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
    // [190] sqrt::$1 = sqrt::$2 >> 1 -- vwuz1=vwuz1_ror_1 
    lsr.z __1+1
    ror.z __1
    // char sq = (char)(found-SQUARES)
    // [191] sqrt::return#0 = (char)sqrt::$1 -- vbuaa=_byte_vwuz1 
    lda.z __1
    // sqrt::@return
    // }
    // [192] 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($10) unsigned int atan2_16(__zp($21) int x, __zp($23) int y)
atan2_16: {
    .label __2 = $c
    .label __7 = $e
    .label yi = $c
    .label xi = $e
    .label angle = $10
    .label xd = $1a
    .label yd = $12
    .label return = $10
    .label x = $21
    .label y = $23
    // (y>=0)?y:-y
    // [193] 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
    // [194] 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
    // [195] phi from atan2_16::@1 atan2_16::@2 to atan2_16::@3 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3]
    // [195] 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
    // [196] 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
    // [197] 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
    // [198] phi from atan2_16::@4 atan2_16::@5 to atan2_16::@6 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6]
    // [198] 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:
    // [199] phi from atan2_16::@6 to atan2_16::@10 [phi:atan2_16::@6->atan2_16::@10]
    // [199] 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
    // [199] phi atan2_16::i#2 = 0 [phi:atan2_16::@6->atan2_16::@10#1] -- vbuxx=vbuc1 
    tax
    // [199] phi atan2_16::xi#3 = atan2_16::xi#0 [phi:atan2_16::@6->atan2_16::@10#2] -- register_copy 
    // [199] 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)
    // [200] if(atan2_16::yi#3!=0) goto atan2_16::@11 -- vwsz1_neq_0_then_la1 
    lda.z yi+1
    ora.z yi
    bne __b11
    // [201] phi from atan2_16::@10 atan2_16::@19 to atan2_16::@12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12]
    // [201] 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
    // [202] atan2_16::angle#1 = atan2_16::angle#6 >> 1 -- vwuz1=vwuz1_ror_1 
    lsr.z angle+1
    ror.z angle
    // if(x<0)
    // [203] 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
    // [204] 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
    // [205] phi from atan2_16::@12 atan2_16::@21 to atan2_16::@7 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7]
    // [205] 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)
    // [206] 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
    // [207] 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
    // [208] phi from atan2_16::@7 atan2_16::@9 to atan2_16::@8 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8]
    // [208] 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
    // }
    // [209] return 
    rts
    // atan2_16::@11
  __b11:
    // [210] atan2_16::shift#5 = atan2_16::i#2 -- vbuyy=vbuxx 
    txa
    tay
    // [211] atan2_16::xd#10 = atan2_16::xi#3 -- vwsz1=vwsz2 
    lda.z xi
    sta.z xd
    lda.z xi+1
    sta.z xd+1
    // [212] atan2_16::yd#10 = atan2_16::yi#3 -- vwsz1=vwsz2 
    lda.z yi
    sta.z yd
    lda.z yi+1
    sta.z yd+1
    // [213] phi from atan2_16::@11 atan2_16::@14 to atan2_16::@13 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13]
    // [213] phi atan2_16::yd#3 = atan2_16::yd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#0] -- register_copy 
    // [213] phi atan2_16::xd#3 = atan2_16::xd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#1] -- register_copy 
    // [213] 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)
    // [214] if(atan2_16::shift#2>=2) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1 
    cpy #2
    bcs __b14
    // atan2_16::@15
    // if(shift)
    // [215] if(0==atan2_16::shift#2) goto atan2_16::@17 -- 0_eq_vbuyy_then_la1 
    cpy #0
    beq __b17
    // atan2_16::@16
    // xd >>= 1
    // [216] 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
    // [217] 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
    // [218] phi from atan2_16::@15 atan2_16::@16 to atan2_16::@17 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17]
    // [218] phi atan2_16::xd#5 = atan2_16::xd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#0] -- register_copy 
    // [218] 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)
    // [219] 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
    // [220] 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
    // [221] 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]
    // [222] atan2_16::$23 = atan2_16::i#2 << 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // [223] 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
    // [224] phi from atan2_16::@18 atan2_16::@20 to atan2_16::@19 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19]
    // [224] phi atan2_16::xi#8 = atan2_16::xi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#0] -- register_copy 
    // [224] phi atan2_16::angle#13 = atan2_16::angle#2 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#1] -- register_copy 
    // [224] 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)
    // [225] atan2_16::i#1 = ++ atan2_16::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [226] 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:
    // [199] phi from atan2_16::@19 to atan2_16::@10 [phi:atan2_16::@19->atan2_16::@10]
    // [199] phi atan2_16::angle#12 = atan2_16::angle#13 [phi:atan2_16::@19->atan2_16::@10#0] -- register_copy 
    // [199] phi atan2_16::i#2 = atan2_16::i#1 [phi:atan2_16::@19->atan2_16::@10#1] -- register_copy 
    // [199] phi atan2_16::xi#3 = atan2_16::xi#8 [phi:atan2_16::@19->atan2_16::@10#2] -- register_copy 
    // [199] 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
    // [227] 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
    // [228] 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]
    // [229] atan2_16::$22 = atan2_16::i#2 << 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // [230] 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
    // [231] 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
    // [232] 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
    // [233] 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
    // [234] 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
    // [235] 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
}
  // 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($12) unsigned int * bsearch16u(__zp($23) unsigned int key, __zp($12) unsigned int *items, __register(X) char num)
bsearch16u: {
    .label __2 = $12
    .label pivot = $28
    .label result = $2a
    .label return = $12
    .label items = $12
    .label key = $23
    // [237] phi from bsearch16u to bsearch16u::@3 [phi:bsearch16u->bsearch16u::@3]
    // [237] phi bsearch16u::items#2 = bsearch16u::items#1 [phi:bsearch16u->bsearch16u::@3#0] -- register_copy 
    // [237] phi bsearch16u::num#3 = NUM_SQUARES#2 [phi:bsearch16u->bsearch16u::@3#1] -- vbuxx=vbuc1 
    ldx #NUM_SQUARES
    // bsearch16u::@3
  __b3:
    // while (num > 0)
    // [238] if(bsearch16u::num#3>0) goto bsearch16u::@4 -- vbuxx_gt_0_then_la1 
    cpx #0
    bne __b4
    // bsearch16u::@5
    // *items<=key?items:items-1
    // [239] 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
    // [240] 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
    // [241] phi from bsearch16u::@1 bsearch16u::@5 to bsearch16u::@2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2]
    // [241] phi bsearch16u::return#2 = bsearch16u::$2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2#0] -- register_copy 
    // bsearch16u::@2
  __b2:
    // [242] phi from bsearch16u::@2 bsearch16u::@8 to bsearch16u::@return [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return]
    // [242] phi bsearch16u::return#1 = bsearch16u::return#2 [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return#0] -- register_copy 
    // bsearch16u::@return
    // }
    // [243] return 
    rts
    // bsearch16u::@4
  __b4:
    // num >> 1
    // [244] bsearch16u::$6 = bsearch16u::num#3 >> 1 -- vbuaa=vbuxx_ror_1 
    txa
    lsr
    // unsigned int* pivot = items + (num >> 1)
    // [245] bsearch16u::$14 = bsearch16u::$6 << 1 -- vbuaa=vbuaa_rol_1 
    asl
    // [246] 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
    // [247] 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)
    // [248] if(bsearch16u::result#0!=0) goto bsearch16u::@6 -- vwsz1_neq_0_then_la1 
    ora.z result
    bne __b6
    // bsearch16u::@8
    // [249] 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)
    // [250] 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
    // [251] 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--;
    // [252] bsearch16u::num#1 = -- bsearch16u::num#3 -- vbuxx=_dec_vbuxx 
    dex
    // [253] phi from bsearch16u::@6 bsearch16u::@9 to bsearch16u::@7 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7]
    // [253] phi bsearch16u::items#8 = bsearch16u::items#2 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#0] -- register_copy 
    // [253] phi bsearch16u::num#5 = bsearch16u::num#3 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#1] -- register_copy 
    // bsearch16u::@7
  __b7:
    // num >>= 1
    // [254] bsearch16u::num#0 = bsearch16u::num#5 >> 1 -- vbuxx=vbuxx_ror_1 
    txa
    lsr
    tax
    // [237] phi from bsearch16u::@7 to bsearch16u::@3 [phi:bsearch16u::@7->bsearch16u::@3]
    // [237] phi bsearch16u::items#2 = bsearch16u::items#8 [phi:bsearch16u::@7->bsearch16u::@3#0] -- register_copy 
    // [237] 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


