Resolved forward reference FONT_HEX_PROTO to FONT_HEX_PROTO
Resolved forward reference FONT_HEX_PROTO to FONT_HEX_PROTO
Inlined call vicSelectGfxBank::$0 = call toDd00(vicSelectGfxBank::gfx)
Inlined call main::$1 = call toD018(SCREEN, CHARSET)
Inlined call main::$7 = call toD018(main::BASE_SCREEN, main::BASE_CHARSET)
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 clock::$0
Eliminating unused variable with no statement main::$5
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

CONTROL FLOW GRAPH SSA

void * malloc(unsigned int size)
malloc: scope:[malloc]  from init_squares
  malloc::size#1 = phi( init_squares/malloc::size#0 )
  heap_head#11 = phi( init_squares/heap_head#21 )
  malloc::mem#0 = heap_head#11 - malloc::size#1
  heap_head#0 = malloc::mem#0
  malloc::return#0 = ((void *)) malloc::mem#0
  to:malloc::@return
malloc::@return: scope:[malloc]  from malloc
  heap_head#12 = phi( malloc/heap_head#0 )
  malloc::return#3 = phi( malloc/malloc::return#0 )
  malloc::return#1 = malloc::return#3
  heap_head#1 = heap_head#12
  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#21 = phi( init_dist_screen/heap_head#25 )
  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#13 = phi( init_squares/heap_head#1 )
  malloc::return#4 = phi( init_squares/malloc::return#2 )
  init_squares::$1 = malloc::return#4
  heap_head#2 = heap_head#13
  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#22 = phi( init_squares::@2/heap_head#28, 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#28 = phi( init_squares::@1/heap_head#22 )
  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#14 = phi( init_squares::@1/heap_head#22 )
  heap_head#3 = heap_head#14
  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

void init_font_hex(char *charset)
init_font_hex: scope:[init_font_hex]  from main
  init_font_hex::charset#6 = phi( main/init_font_hex::charset#1 )
  init_font_hex::proto_hi#0 = FONT_HEX_PROTO
  init_font_hex::c#0 = 0
  to:init_font_hex::@1
init_font_hex::@1: scope:[init_font_hex]  from init_font_hex init_font_hex::@5
  init_font_hex::c#6 = phi( init_font_hex/init_font_hex::c#0, init_font_hex::@5/init_font_hex::c#1 )
  init_font_hex::proto_hi#6 = phi( init_font_hex/init_font_hex::proto_hi#0, init_font_hex::@5/init_font_hex::proto_hi#1 )
  init_font_hex::charset#5 = phi( init_font_hex/init_font_hex::charset#6, init_font_hex::@5/init_font_hex::charset#7 )
  init_font_hex::proto_lo#0 = FONT_HEX_PROTO
  init_font_hex::c1#0 = 0
  to:init_font_hex::@2
init_font_hex::@2: scope:[init_font_hex]  from init_font_hex::@1 init_font_hex::@4
  init_font_hex::c#5 = phi( init_font_hex::@1/init_font_hex::c#6, init_font_hex::@4/init_font_hex::c#3 )
  init_font_hex::c1#4 = phi( init_font_hex::@1/init_font_hex::c1#0, init_font_hex::@4/init_font_hex::c1#1 )
  init_font_hex::proto_lo#4 = phi( init_font_hex::@1/init_font_hex::proto_lo#0, init_font_hex::@4/init_font_hex::proto_lo#1 )
  init_font_hex::proto_hi#4 = phi( init_font_hex::@1/init_font_hex::proto_hi#6, init_font_hex::@4/init_font_hex::proto_hi#5 )
  init_font_hex::charset#2 = phi( init_font_hex::@1/init_font_hex::charset#5, init_font_hex::@4/init_font_hex::charset#0 )
  init_font_hex::idx#0 = 0
  init_font_hex::charset#2[init_font_hex::idx#0] = 0
  init_font_hex::idx#1 = ++ init_font_hex::idx#0
  init_font_hex::i#0 = 0
  to:init_font_hex::@3
init_font_hex::@3: scope:[init_font_hex]  from init_font_hex::@2 init_font_hex::@3
  init_font_hex::c#4 = phi( init_font_hex::@2/init_font_hex::c#5, init_font_hex::@3/init_font_hex::c#4 )
  init_font_hex::c1#3 = phi( init_font_hex::@2/init_font_hex::c1#4, init_font_hex::@3/init_font_hex::c1#3 )
  init_font_hex::idx#5 = phi( init_font_hex::@2/init_font_hex::idx#1, init_font_hex::@3/init_font_hex::idx#2 )
  init_font_hex::charset#3 = phi( init_font_hex::@2/init_font_hex::charset#2, init_font_hex::@3/init_font_hex::charset#3 )
  init_font_hex::proto_lo#2 = phi( init_font_hex::@2/init_font_hex::proto_lo#4, init_font_hex::@3/init_font_hex::proto_lo#2 )
  init_font_hex::i#2 = phi( init_font_hex::@2/init_font_hex::i#0, init_font_hex::@3/init_font_hex::i#1 )
  init_font_hex::proto_hi#2 = phi( init_font_hex::@2/init_font_hex::proto_hi#4, init_font_hex::@3/init_font_hex::proto_hi#2 )
  init_font_hex::$0 = init_font_hex::proto_hi#2[init_font_hex::i#2] << 4
  init_font_hex::$1 = init_font_hex::proto_lo#2[init_font_hex::i#2] << 1
  init_font_hex::$2 = init_font_hex::$0 | init_font_hex::$1
  init_font_hex::charset#3[init_font_hex::idx#5] = init_font_hex::$2
  init_font_hex::idx#2 = ++ init_font_hex::idx#5
  init_font_hex::i#1 = init_font_hex::i#2 + rangenext(0,4)
  init_font_hex::$3 = init_font_hex::i#1 != rangelast(0,4)
  if(init_font_hex::$3) goto init_font_hex::@3
  to:init_font_hex::@4
init_font_hex::@4: scope:[init_font_hex]  from init_font_hex::@3
  init_font_hex::c#3 = phi( init_font_hex::@3/init_font_hex::c#4 )
  init_font_hex::proto_hi#5 = phi( init_font_hex::@3/init_font_hex::proto_hi#2 )
  init_font_hex::c1#2 = phi( init_font_hex::@3/init_font_hex::c1#3 )
  init_font_hex::proto_lo#3 = phi( init_font_hex::@3/init_font_hex::proto_lo#2 )
  init_font_hex::idx#6 = phi( init_font_hex::@3/init_font_hex::idx#2 )
  init_font_hex::charset#4 = phi( init_font_hex::@3/init_font_hex::charset#3 )
  init_font_hex::charset#4[init_font_hex::idx#6] = 0
  init_font_hex::idx#3 = ++ init_font_hex::idx#6
  init_font_hex::charset#4[init_font_hex::idx#3] = 0
  init_font_hex::idx#4 = ++ init_font_hex::idx#3
  init_font_hex::proto_lo#1 = init_font_hex::proto_lo#3 + 5
  init_font_hex::charset#0 = init_font_hex::charset#4 + 8
  init_font_hex::c1#1 = init_font_hex::c1#2 + rangenext(0,$f)
  init_font_hex::$4 = init_font_hex::c1#1 != rangelast(0,$f)
  if(init_font_hex::$4) goto init_font_hex::@2
  to:init_font_hex::@5
init_font_hex::@5: scope:[init_font_hex]  from init_font_hex::@4
  init_font_hex::charset#7 = phi( init_font_hex::@4/init_font_hex::charset#0 )
  init_font_hex::c#2 = phi( init_font_hex::@4/init_font_hex::c#3 )
  init_font_hex::proto_hi#3 = phi( init_font_hex::@4/init_font_hex::proto_hi#5 )
  init_font_hex::proto_hi#1 = init_font_hex::proto_hi#3 + 5
  init_font_hex::c#1 = init_font_hex::c#2 + rangenext(0,$f)
  init_font_hex::$5 = init_font_hex::c#1 != rangelast(0,$f)
  if(init_font_hex::$5) goto init_font_hex::@1
  to:init_font_hex::@return
init_font_hex::@return: scope:[init_font_hex]  from init_font_hex::@5
  return 
  to:@return

unsigned long clock()
clock: scope:[clock]  from main::@5
  *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
  clock::ticks#0 = $ffffffff - *CIA2_TIMER_AB
  *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
  clock::return#0 = clock::ticks#0
  to:clock::@return
clock::@return: scope:[clock]  from clock
  clock::return#3 = phi( clock/clock::return#0 )
  clock::return#1 = clock::return#3
  return 
  to:@return

void clock_start()
clock_start: scope:[clock_start]  from main::@1
  *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
  *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
  *CIA2_TIMER_AB = $ffffffff
  *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
  *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
  to:clock_start::@return
clock_start::@return: scope:[clock_start]  from clock_start
  return 
  to:@return

void print_uint_at(unsigned int w , char *at)
print_uint_at: scope:[print_uint_at]  from print_ulong_at print_ulong_at::@1
  print_uint_at::at#2 = phi( print_ulong_at/print_uint_at::at#0, print_ulong_at::@1/print_uint_at::at#1 )
  print_uint_at::w#2 = phi( print_ulong_at/print_uint_at::w#0, print_ulong_at::@1/print_uint_at::w#1 )
  print_uint_at::$0 = byte1  print_uint_at::w#2
  print_uchar_at::b#0 = print_uint_at::$0
  print_uchar_at::at#0 = print_uint_at::at#2
  call print_uchar_at
  to:print_uint_at::@1
print_uint_at::@1: scope:[print_uint_at]  from print_uint_at
  print_uint_at::at#3 = phi( print_uint_at/print_uint_at::at#2 )
  print_uint_at::w#3 = phi( print_uint_at/print_uint_at::w#2 )
  print_uint_at::$2 = byte0  print_uint_at::w#3
  print_uint_at::$3 = print_uint_at::at#3 + 2
  print_uchar_at::b#1 = print_uint_at::$2
  print_uchar_at::at#1 = print_uint_at::$3
  call print_uchar_at
  to:print_uint_at::@2
print_uint_at::@2: scope:[print_uint_at]  from print_uint_at::@1
  to:print_uint_at::@return
print_uint_at::@return: scope:[print_uint_at]  from print_uint_at::@2
  return 
  to:@return

void print_ulong_at(unsigned long dw , char *at)
print_ulong_at: scope:[print_ulong_at]  from main::@6
  print_ulong_at::at#1 = phi( main::@6/print_ulong_at::at#0 )
  print_ulong_at::dw#1 = phi( main::@6/print_ulong_at::dw#0 )
  print_ulong_at::$0 = word1  print_ulong_at::dw#1
  print_uint_at::w#0 = print_ulong_at::$0
  print_uint_at::at#0 = print_ulong_at::at#1
  call print_uint_at
  to:print_ulong_at::@1
print_ulong_at::@1: scope:[print_ulong_at]  from print_ulong_at
  print_ulong_at::at#2 = phi( print_ulong_at/print_ulong_at::at#1 )
  print_ulong_at::dw#2 = phi( print_ulong_at/print_ulong_at::dw#1 )
  print_ulong_at::$2 = word0  print_ulong_at::dw#2
  print_ulong_at::$3 = print_ulong_at::at#2 + 4
  print_uint_at::w#1 = print_ulong_at::$2
  print_uint_at::at#1 = print_ulong_at::$3
  call print_uint_at
  to:print_ulong_at::@2
print_ulong_at::@2: scope:[print_ulong_at]  from print_ulong_at::@1
  to:print_ulong_at::@return
print_ulong_at::@return: scope:[print_ulong_at]  from print_ulong_at::@2
  return 
  to:@return

void print_uchar_at(char b , char *at)
print_uchar_at: scope:[print_uchar_at]  from print_uint_at print_uint_at::@1
  print_uchar_at::at#2 = phi( print_uint_at/print_uchar_at::at#0, print_uint_at::@1/print_uchar_at::at#1 )
  print_uchar_at::b#2 = phi( print_uint_at/print_uchar_at::b#0, print_uint_at::@1/print_uchar_at::b#1 )
  print_uchar_at::$0 = print_uchar_at::b#2 >> 4
  print_char_at::ch#0 = print_hextab[print_uchar_at::$0]
  print_char_at::at#0 = print_uchar_at::at#2
  call print_char_at
  to:print_uchar_at::@1
print_uchar_at::@1: scope:[print_uchar_at]  from print_uchar_at
  print_uchar_at::at#3 = phi( print_uchar_at/print_uchar_at::at#2 )
  print_uchar_at::b#3 = phi( print_uchar_at/print_uchar_at::b#2 )
  print_uchar_at::$2 = print_uchar_at::b#3 & $f
  print_uchar_at::$3 = print_uchar_at::at#3 + 1
  print_char_at::ch#1 = print_hextab[print_uchar_at::$2]
  print_char_at::at#1 = print_uchar_at::$3
  call print_char_at
  to:print_uchar_at::@2
print_uchar_at::@2: scope:[print_uchar_at]  from print_uchar_at::@1
  to:print_uchar_at::@return
print_uchar_at::@return: scope:[print_uchar_at]  from print_uchar_at::@2
  return 
  to:@return

void print_char_at(char ch , char *at)
print_char_at: scope:[print_char_at]  from print_uchar_at print_uchar_at::@1
  print_char_at::at#2 = phi( print_uchar_at/print_char_at::at#0, print_uchar_at::@1/print_char_at::at#1 )
  print_char_at::ch#2 = phi( print_uchar_at/print_char_at::ch#0, print_uchar_at::@1/print_char_at::ch#1 )
  *print_char_at::at#2 = print_char_at::ch#2
  to:print_char_at::@return
print_char_at::@return: scope:[print_char_at]  from print_char_at
  return 
  to:@return

void main()
main: scope:[main]  from __start::@1
  SQUARES#46 = phi( __start::@1/SQUARES#27 )
  heap_head#45 = phi( __start::@1/heap_head#27 )
  NUM_SQUARES#40 = phi( __start::@1/NUM_SQUARES#21 )
  init_font_hex::charset#1 = CHARSET
  call init_font_hex
  to:main::@3
main::@3: scope:[main]  from main
  SQUARES#44 = phi( main/SQUARES#46 )
  heap_head#40 = phi( main/heap_head#45 )
  NUM_SQUARES#36 = phi( main/NUM_SQUARES#40 )
  main::toD0181_screen#0 = SCREEN
  main::toD0181_gfx#0 = CHARSET
  to:main::toD0181
main::toD0181: scope:[main]  from main::@3
  SQUARES#42 = phi( main::@3/SQUARES#44 )
  heap_head#36 = phi( main::@3/heap_head#40 )
  NUM_SQUARES#32 = phi( main::@3/NUM_SQUARES#36 )
  main::toD0181_gfx#1 = phi( main::@3/main::toD0181_gfx#0 )
  main::toD0181_screen#1 = phi( main::@3/main::toD0181_screen#0 )
  main::toD0181_$7 = (unsigned int)main::toD0181_screen#1
  main::toD0181_$0 = main::toD0181_$7 & $3fff
  main::toD0181_$1 = main::toD0181_$0 * 4
  main::toD0181_$2 = byte1  main::toD0181_$1
  main::toD0181_$3 = byte1  (unsigned int)main::toD0181_gfx#1
  main::toD0181_$4 = main::toD0181_$3 / 4
  main::toD0181_$5 = main::toD0181_$4 & $f
  main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5
  main::toD0181_return#0 = main::toD0181_$6
  to:main::toD0181_@return
main::toD0181_@return: scope:[main]  from main::toD0181
  SQUARES#36 = phi( main::toD0181/SQUARES#42 )
  heap_head#32 = phi( main::toD0181/heap_head#36 )
  NUM_SQUARES#26 = phi( main::toD0181/NUM_SQUARES#32 )
  main::toD0181_return#2 = phi( main::toD0181/main::toD0181_return#0 )
  main::toD0181_return#1 = main::toD0181_return#2
  to:main::@1
main::@1: scope:[main]  from main::toD0181_@return
  SQUARES#29 = phi( main::toD0181_@return/SQUARES#36 )
  heap_head#29 = phi( main::toD0181_@return/heap_head#32 )
  NUM_SQUARES#22 = phi( main::toD0181_@return/NUM_SQUARES#26 )
  main::toD0181_return#3 = phi( main::toD0181_@return/main::toD0181_return#1 )
  main::$1 = main::toD0181_return#3
  *D018 = main::$1
  call clock_start
  to:main::@4
main::@4: scope:[main]  from main::@1
  SQUARES#23 = phi( main::@1/SQUARES#29 )
  heap_head#23 = phi( main::@1/heap_head#29 )
  NUM_SQUARES#18 = phi( main::@1/NUM_SQUARES#22 )
  init_dist_screen::screen#0 = SCREEN
  call init_dist_screen
  to:main::@5
main::@5: scope:[main]  from main::@4
  SQUARES#13 = phi( main::@4/SQUARES#5 )
  heap_head#15 = phi( main::@4/heap_head#7 )
  NUM_SQUARES#10 = phi( main::@4/NUM_SQUARES#3 )
  NUM_SQUARES#0 = NUM_SQUARES#10
  heap_head#4 = heap_head#15
  SQUARES#2 = SQUARES#13
  call clock
  clock::return#2 = clock::return#1
  to:main::@6
main::@6: scope:[main]  from main::@5
  SQUARES#45 = phi( main::@5/SQUARES#2 )
  heap_head#41 = phi( main::@5/heap_head#4 )
  NUM_SQUARES#37 = phi( main::@5/NUM_SQUARES#0 )
  clock::return#4 = phi( main::@5/clock::return#2 )
  main::$4 = clock::return#4
  main::cyclecount#0 = main::$4 - CLOCKS_PER_INIT
  print_ulong_at::dw#0 = main::cyclecount#0
  print_ulong_at::at#0 = main::BASE_SCREEN
  call print_ulong_at
  to:main::@7
main::@7: scope:[main]  from main::@6
  SQUARES#43 = phi( main::@6/SQUARES#45 )
  heap_head#37 = phi( main::@6/heap_head#41 )
  NUM_SQUARES#33 = phi( main::@6/NUM_SQUARES#37 )
  main::toD0182_screen#0 = main::BASE_SCREEN
  main::toD0182_gfx#0 = main::BASE_CHARSET
  to:main::toD0182
main::toD0182: scope:[main]  from main::@7
  SQUARES#37 = phi( main::@7/SQUARES#43 )
  heap_head#33 = phi( main::@7/heap_head#37 )
  NUM_SQUARES#27 = phi( main::@7/NUM_SQUARES#33 )
  main::toD0182_gfx#1 = phi( main::@7/main::toD0182_gfx#0 )
  main::toD0182_screen#1 = phi( main::@7/main::toD0182_screen#0 )
  main::toD0182_$7 = (unsigned int)main::toD0182_screen#1
  main::toD0182_$0 = main::toD0182_$7 & $3fff
  main::toD0182_$1 = main::toD0182_$0 * 4
  main::toD0182_$2 = byte1  main::toD0182_$1
  main::toD0182_$3 = byte1  (unsigned int)main::toD0182_gfx#1
  main::toD0182_$4 = main::toD0182_$3 / 4
  main::toD0182_$5 = main::toD0182_$4 & $f
  main::toD0182_$6 = main::toD0182_$2 | main::toD0182_$5
  main::toD0182_return#0 = main::toD0182_$6
  to:main::toD0182_@return
main::toD0182_@return: scope:[main]  from main::toD0182
  SQUARES#30 = phi( main::toD0182/SQUARES#37 )
  heap_head#30 = phi( main::toD0182/heap_head#33 )
  NUM_SQUARES#23 = phi( main::toD0182/NUM_SQUARES#27 )
  main::toD0182_return#2 = phi( main::toD0182/main::toD0182_return#0 )
  main::toD0182_return#1 = main::toD0182_return#2
  to:main::@2
main::@2: scope:[main]  from main::toD0182_@return
  SQUARES#24 = phi( main::toD0182_@return/SQUARES#30 )
  heap_head#24 = phi( main::toD0182_@return/heap_head#30 )
  NUM_SQUARES#19 = phi( main::toD0182_@return/NUM_SQUARES#23 )
  main::toD0182_return#3 = phi( main::toD0182_@return/main::toD0182_return#1 )
  main::$7 = main::toD0182_return#3
  *D018 = main::$7
  to:main::@return
main::@return: scope:[main]  from main::@2
  SQUARES#14 = phi( main::@2/SQUARES#24 )
  heap_head#16 = phi( main::@2/heap_head#24 )
  NUM_SQUARES#11 = phi( main::@2/NUM_SQUARES#19 )
  NUM_SQUARES#1 = NUM_SQUARES#11
  heap_head#5 = heap_head#16
  SQUARES#3 = SQUARES#14
  return 
  to:@return

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

void __start()
__start: scope:[__start]  from
  to:__start::__init1
__start::__init1: scope:[__start]  from __start
  heap_head#8 = HEAP_TOP
  NUM_SQUARES#4 = $ff
  SQUARES#6 = (unsigned int *) 0
  to:__start::@1
__start::@1: scope:[__start]  from __start::__init1
  SQUARES#27 = phi( __start::__init1/SQUARES#6 )
  heap_head#27 = phi( __start::__init1/heap_head#8 )
  NUM_SQUARES#21 = phi( __start::__init1/NUM_SQUARES#4 )
  call main
  to:__start::@2
__start::@2: scope:[__start]  from __start::@1
  SQUARES#17 = phi( __start::@1/SQUARES#3 )
  heap_head#19 = phi( __start::@1/heap_head#5 )
  NUM_SQUARES#13 = phi( __start::@1/NUM_SQUARES#1 )
  NUM_SQUARES#5 = NUM_SQUARES#13
  heap_head#9 = heap_head#19
  SQUARES#7 = SQUARES#17
  to:__start::@return
__start::@return: scope:[__start]  from __start::@2
  SQUARES#18 = phi( __start::@2/SQUARES#7 )
  NUM_SQUARES#14 = phi( __start::@2/NUM_SQUARES#5 )
  heap_head#20 = phi( __start::@2/heap_head#9 )
  heap_head#10 = heap_head#20
  NUM_SQUARES#6 = NUM_SQUARES#14
  SQUARES#8 = SQUARES#18
  return 
  to:@return

SYMBOL TABLE SSA
__constant char * const CHARSET = (char *)$2000
__constant struct MOS6526_CIA * const CIA2 = (struct MOS6526_CIA *)$dd00
__constant unsigned long * const CIA2_TIMER_AB = (unsigned long *)$dd04
__constant const char CIA_TIMER_CONTROL_A_COUNT_CYCLES = 0
__constant const char CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = $40
__constant const char CIA_TIMER_CONTROL_CONTINUOUS = 0
__constant const char CIA_TIMER_CONTROL_START = 1
__constant const char CIA_TIMER_CONTROL_STOP = 0
__constant const unsigned long CLOCKS_PER_INIT = $12
__constant char * const D018 = (char *)$d018
__constant char FONT_HEX_PROTO[] = { 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4 }
__constant char *HEAP_TOP = (char *)$a000
char NUM_SQUARES
char NUM_SQUARES#0
char NUM_SQUARES#1
char NUM_SQUARES#10
char NUM_SQUARES#11
char NUM_SQUARES#12
char NUM_SQUARES#13
char NUM_SQUARES#14
char NUM_SQUARES#15
char NUM_SQUARES#16
char NUM_SQUARES#17
char NUM_SQUARES#18
char NUM_SQUARES#19
char NUM_SQUARES#2
char NUM_SQUARES#20
char NUM_SQUARES#21
char NUM_SQUARES#22
char NUM_SQUARES#23
char NUM_SQUARES#24
char NUM_SQUARES#25
char NUM_SQUARES#26
char NUM_SQUARES#27
char NUM_SQUARES#28
char NUM_SQUARES#29
char NUM_SQUARES#3
char NUM_SQUARES#30
char NUM_SQUARES#31
char NUM_SQUARES#32
char NUM_SQUARES#33
char NUM_SQUARES#34
char NUM_SQUARES#35
char NUM_SQUARES#36
char NUM_SQUARES#37
char NUM_SQUARES#38
char NUM_SQUARES#39
char NUM_SQUARES#4
char NUM_SQUARES#40
char NUM_SQUARES#41
char NUM_SQUARES#42
char NUM_SQUARES#5
char NUM_SQUARES#6
char NUM_SQUARES#7
char NUM_SQUARES#8
char NUM_SQUARES#9
__constant char OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
__constant char OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
__constant char RADIX::BINARY = 2
__constant char RADIX::DECIMAL = $a
__constant char RADIX::HEXADECIMAL = $10
__constant char RADIX::OCTAL = 8
__constant char * const SCREEN = (char *)$2800
__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#5
unsigned int *SQUARES#6
unsigned int *SQUARES#7
unsigned int *SQUARES#8
unsigned int *SQUARES#9
void __start()
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
unsigned long clock()
unsigned long clock::return
unsigned long clock::return#0
unsigned long clock::return#1
unsigned long clock::return#2
unsigned long clock::return#3
unsigned long clock::return#4
unsigned long clock::ticks
unsigned long clock::ticks#0
void clock_start()
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#6
char *heap_head#7
char *heap_head#8
char *heap_head#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_font_hex(char *charset)
char init_font_hex::$0
char init_font_hex::$1
char init_font_hex::$2
bool init_font_hex::$3
bool init_font_hex::$4
bool init_font_hex::$5
char init_font_hex::c
char init_font_hex::c#0
char init_font_hex::c#1
char init_font_hex::c#2
char init_font_hex::c#3
char init_font_hex::c#4
char init_font_hex::c#5
char init_font_hex::c#6
char init_font_hex::c1
char init_font_hex::c1#0
char init_font_hex::c1#1
char init_font_hex::c1#2
char init_font_hex::c1#3
char init_font_hex::c1#4
char *init_font_hex::charset
char *init_font_hex::charset#0
char *init_font_hex::charset#1
char *init_font_hex::charset#2
char *init_font_hex::charset#3
char *init_font_hex::charset#4
char *init_font_hex::charset#5
char *init_font_hex::charset#6
char *init_font_hex::charset#7
char init_font_hex::i
char init_font_hex::i#0
char init_font_hex::i#1
char init_font_hex::i#2
char init_font_hex::idx
char init_font_hex::idx#0
char init_font_hex::idx#1
char init_font_hex::idx#2
char init_font_hex::idx#3
char init_font_hex::idx#4
char init_font_hex::idx#5
char init_font_hex::idx#6
char *init_font_hex::proto_hi
char *init_font_hex::proto_hi#0
char *init_font_hex::proto_hi#1
char *init_font_hex::proto_hi#2
char *init_font_hex::proto_hi#3
char *init_font_hex::proto_hi#4
char *init_font_hex::proto_hi#5
char *init_font_hex::proto_hi#6
char *init_font_hex::proto_lo
char *init_font_hex::proto_lo#0
char *init_font_hex::proto_lo#1
char *init_font_hex::proto_lo#2
char *init_font_hex::proto_lo#3
char *init_font_hex::proto_lo#4
void init_squares()
char init_squares::$0
void *init_squares::$1
bool init_squares::$2
number init_squares::$3
number init_squares::$4
char init_squares::i
char init_squares::i#0
char init_squares::i#1
char init_squares::i#2
char init_squares::i#3
unsigned int init_squares::sqr
unsigned int init_squares::sqr#0
unsigned int init_squares::sqr#1
unsigned int init_squares::sqr#2
unsigned int init_squares::sqr#3
unsigned int *init_squares::squares
unsigned int *init_squares::squares#0
unsigned int *init_squares::squares#1
unsigned int *init_squares::squares#2
unsigned int *init_squares::squares#3
void main()
char main::$1
unsigned long main::$4
char main::$7
__constant char *main::BASE_CHARSET = (char *)$1000
__constant char *main::BASE_SCREEN = (char *)$400
unsigned long main::cyclecount
unsigned long main::cyclecount#0
number main::toD0181_$0
number main::toD0181_$1
char main::toD0181_$2
char main::toD0181_$3
number main::toD0181_$4
number main::toD0181_$5
number main::toD0181_$6
unsigned int main::toD0181_$7
char *main::toD0181_gfx
char *main::toD0181_gfx#0
char *main::toD0181_gfx#1
char main::toD0181_return
char main::toD0181_return#0
char main::toD0181_return#1
char main::toD0181_return#2
char main::toD0181_return#3
char *main::toD0181_screen
char *main::toD0181_screen#0
char *main::toD0181_screen#1
number main::toD0182_$0
number main::toD0182_$1
char main::toD0182_$2
char main::toD0182_$3
number main::toD0182_$4
number main::toD0182_$5
number main::toD0182_$6
unsigned int main::toD0182_$7
char *main::toD0182_gfx
char *main::toD0182_gfx#0
char *main::toD0182_gfx#1
char main::toD0182_return
char main::toD0182_return#0
char main::toD0182_return#1
char main::toD0182_return#2
char main::toD0182_return#3
char *main::toD0182_screen
char *main::toD0182_screen#0
char *main::toD0182_screen#1
void * malloc(unsigned int size)
char *malloc::mem
char *malloc::mem#0
void *malloc::return
void *malloc::return#0
void *malloc::return#1
void *malloc::return#2
void *malloc::return#3
void *malloc::return#4
unsigned int malloc::size
unsigned int malloc::size#0
unsigned int malloc::size#1
void print_char_at(char ch , char *at)
char *print_char_at::at
char *print_char_at::at#0
char *print_char_at::at#1
char *print_char_at::at#2
char print_char_at::ch
char print_char_at::ch#0
char print_char_at::ch#1
char print_char_at::ch#2
__constant const char print_hextab[] = "0123456789abcdef"z
void print_uchar_at(char b , char *at)
char print_uchar_at::$0
number print_uchar_at::$2
char *print_uchar_at::$3
char *print_uchar_at::at
char *print_uchar_at::at#0
char *print_uchar_at::at#1
char *print_uchar_at::at#2
char *print_uchar_at::at#3
char print_uchar_at::b
char print_uchar_at::b#0
char print_uchar_at::b#1
char print_uchar_at::b#2
char print_uchar_at::b#3
void print_uint_at(unsigned int w , char *at)
char print_uint_at::$0
char print_uint_at::$2
char *print_uint_at::$3
char *print_uint_at::at
char *print_uint_at::at#0
char *print_uint_at::at#1
char *print_uint_at::at#2
char *print_uint_at::at#3
unsigned int print_uint_at::w
unsigned int print_uint_at::w#0
unsigned int print_uint_at::w#1
unsigned int print_uint_at::w#2
unsigned int print_uint_at::w#3
void print_ulong_at(unsigned long dw , char *at)
unsigned int print_ulong_at::$0
unsigned int print_ulong_at::$2
char *print_ulong_at::$3
char *print_ulong_at::at
char *print_ulong_at::at#0
char *print_ulong_at::at#1
char *print_ulong_at::at#2
unsigned long print_ulong_at::dw
unsigned long print_ulong_at::dw#0
unsigned long print_ulong_at::dw#1
unsigned long print_ulong_at::dw#2
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 (unumber) 0 in init_font_hex::charset#2[init_font_hex::idx#0] = 0
Adding number conversion cast (unumber) 4 in init_font_hex::$0 = init_font_hex::proto_hi#2[init_font_hex::i#2] << 4
Adding number conversion cast (unumber) 1 in init_font_hex::$1 = init_font_hex::proto_lo#2[init_font_hex::i#2] << 1
Adding number conversion cast (unumber) 0 in init_font_hex::charset#4[init_font_hex::idx#6] = 0
Adding number conversion cast (unumber) 0 in init_font_hex::charset#4[init_font_hex::idx#3] = 0
Adding number conversion cast (unumber) 5 in init_font_hex::proto_lo#1 = init_font_hex::proto_lo#3 + 5
Adding number conversion cast (unumber) 8 in init_font_hex::charset#0 = init_font_hex::charset#4 + 8
Adding number conversion cast (unumber) 5 in init_font_hex::proto_hi#1 = init_font_hex::proto_hi#3 + 5
Adding number conversion cast (unumber) $ffffffff in clock::ticks#0 = $ffffffff - *CIA2_TIMER_AB
Adding number conversion cast (unumber) $ffffffff in *CIA2_TIMER_AB = $ffffffff
Adding number conversion cast (unumber) 2 in print_uint_at::$3 = print_uint_at::at#3 + 2
Adding number conversion cast (unumber) 4 in print_ulong_at::$3 = print_ulong_at::at#2 + 4
Adding number conversion cast (unumber) 4 in print_uchar_at::$0 = print_uchar_at::b#2 >> 4
Adding number conversion cast (unumber) $f in print_uchar_at::$2 = print_uchar_at::b#3 & $f
Adding number conversion cast (unumber) print_uchar_at::$2 in print_uchar_at::$2 = print_uchar_at::b#3 & (unumber)$f
Adding number conversion cast (unumber) 1 in print_uchar_at::$3 = print_uchar_at::at#3 + 1
Adding number conversion cast (unumber) $3fff in main::toD0181_$0 = main::toD0181_$7 & $3fff
Adding number conversion cast (unumber) main::toD0181_$0 in main::toD0181_$0 = main::toD0181_$7 & (unumber)$3fff
Adding number conversion cast (unumber) 4 in main::toD0181_$1 = main::toD0181_$0 * 4
Adding number conversion cast (unumber) main::toD0181_$1 in main::toD0181_$1 = main::toD0181_$0 * (unumber)4
Adding number conversion cast (unumber) 4 in main::toD0181_$4 = main::toD0181_$3 / 4
Adding number conversion cast (unumber) main::toD0181_$4 in main::toD0181_$4 = main::toD0181_$3 / (unumber)4
Adding number conversion cast (unumber) $f in main::toD0181_$5 = main::toD0181_$4 & $f
Adding number conversion cast (unumber) main::toD0181_$5 in main::toD0181_$5 = main::toD0181_$4 & (unumber)$f
Adding number conversion cast (unumber) main::toD0181_$6 in main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5
Adding number conversion cast (unumber) $3fff in main::toD0182_$0 = main::toD0182_$7 & $3fff
Adding number conversion cast (unumber) main::toD0182_$0 in main::toD0182_$0 = main::toD0182_$7 & (unumber)$3fff
Adding number conversion cast (unumber) 4 in main::toD0182_$1 = main::toD0182_$0 * 4
Adding number conversion cast (unumber) main::toD0182_$1 in main::toD0182_$1 = main::toD0182_$0 * (unumber)4
Adding number conversion cast (unumber) 4 in main::toD0182_$4 = main::toD0182_$3 / 4
Adding number conversion cast (unumber) main::toD0182_$4 in main::toD0182_$4 = main::toD0182_$3 / (unumber)4
Adding number conversion cast (unumber) $f in main::toD0182_$5 = main::toD0182_$4 & $f
Adding number conversion cast (unumber) main::toD0182_$5 in main::toD0182_$5 = main::toD0182_$4 & (unumber)$f
Adding number conversion cast (unumber) main::toD0182_$6 in main::toD0182_$6 = main::toD0182_$2 | main::toD0182_$5
Adding number conversion cast (unumber) $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#38 = phi( init_dist_screen::@2/heap_head#42, init_dist_screen::@3/heap_head#43 )
  NUM_SQUARES#34 = phi( init_dist_screen::@2/NUM_SQUARES#38, init_dist_screen::@3/NUM_SQUARES#39 )
  init_dist_screen::y#7 = phi( init_dist_screen::@2/init_dist_screen::y#9, init_dist_screen::@3/init_dist_screen::y#10 )
  init_dist_screen::screen_bottomline#8 = phi( init_dist_screen::@2/init_dist_screen::screen_bottomline#11, init_dist_screen::@3/init_dist_screen::screen_bottomline#12 )
  init_dist_screen::screen_topline#8 = phi( init_dist_screen::@2/init_dist_screen::screen_topline#11, init_dist_screen::@3/init_dist_screen::screen_topline#12 )
  SQUARES#21 = phi( init_dist_screen::@2/SQUARES#31, init_dist_screen::@3/SQUARES#32 )
  init_dist_screen::$8 = phi( init_dist_screen::@2/init_dist_screen::$7, init_dist_screen::@3/init_dist_screen::$5 )
Adding number conversion cast (unumber) $13 in init_dist_screen::$10 = init_dist_screen::x#2 <= $13
Adding number conversion cast (unumber) 2 in init_dist_screen::x2#0 = init_dist_screen::x#3 * 2
Adding number conversion cast (unumber) $27 in init_dist_screen::$12 = init_dist_screen::x2#0 >= $27
Adding number conversion cast (unumber) $28 in init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#2 + $28
Adding number conversion cast (unumber) $28 in init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#2 - $28
Adding number conversion cast (unumber) $27 in init_dist_screen::$15 = init_dist_screen::x2#1 - $27
Adding number conversion cast (unumber) init_dist_screen::$15 in init_dist_screen::$15 = init_dist_screen::x2#1 - (unumber)$27
Adding number conversion cast (unumber) init_dist_screen::$16 in init_dist_screen::$16 = init_dist_screen::$15
Adding number conversion cast (unumber) $27 in init_dist_screen::$13 = $27 - init_dist_screen::x2#2
Adding number conversion cast (unumber) init_dist_screen::$13 in init_dist_screen::$13 = (unumber)$27 - init_dist_screen::x2#2
Adding number conversion cast (unumber) init_dist_screen::$14 in init_dist_screen::$14 = init_dist_screen::$13
Adding number conversion cast (unumber) init_dist_screen::$17 in heap_head#44 = phi( init_dist_screen::@8/heap_head#47, init_dist_screen::@9/heap_head#48 )
  init_dist_screen::y#11 = phi( init_dist_screen::@8/init_dist_screen::y#12, init_dist_screen::@9/init_dist_screen::y#13 )
  init_dist_screen::xb#4 = phi( init_dist_screen::@8/init_dist_screen::xb#5, init_dist_screen::@9/init_dist_screen::xb#6 )
  init_dist_screen::screen_bottomline#7 = phi( init_dist_screen::@8/init_dist_screen::screen_bottomline#9, init_dist_screen::@9/init_dist_screen::screen_bottomline#10 )
  init_dist_screen::x#6 = phi( init_dist_screen::@8/init_dist_screen::x#7, init_dist_screen::@9/init_dist_screen::x#8 )
  init_dist_screen::screen_topline#7 = phi( init_dist_screen::@8/init_dist_screen::screen_topline#9, init_dist_screen::@9/init_dist_screen::screen_topline#10 )
  NUM_SQUARES#25 = phi( init_dist_screen::@8/NUM_SQUARES#30, init_dist_screen::@9/NUM_SQUARES#31 )
  init_dist_screen::yds#2 = phi( init_dist_screen::@8/init_dist_screen::yds#3, init_dist_screen::@9/init_dist_screen::yds#4 )
  SQUARES#20 = phi( init_dist_screen::@8/SQUARES#34, init_dist_screen::@9/SQUARES#35 )
  init_dist_screen::$17 = phi( init_dist_screen::@8/init_dist_screen::$16, init_dist_screen::@9/init_dist_screen::$14 )
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast malloc::return#0 = (void *)malloc::mem#0
Inlining cast SQUARES#0 = (unsigned int *)init_squares::$1
Inlining cast init_font_hex::charset#2[init_font_hex::idx#0] = (unumber)0
Inlining cast init_font_hex::charset#4[init_font_hex::idx#6] = (unumber)0
Inlining cast init_font_hex::charset#4[init_font_hex::idx#3] = (unumber)0
Inlining cast *CIA2_TIMER_AB = (unumber)$ffffffff
Inlining cast NUM_SQUARES#2 = (unumber)$30
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (char *) 53272
Simplifying constant pointer cast (struct MOS6526_CIA *) 56576
Simplifying constant pointer cast (unsigned long *) 56580
Simplifying constant pointer cast (char *) 8192
Simplifying constant pointer cast (char *) 10240
Simplifying constant pointer cast (char *) 1024
Simplifying constant pointer cast (char *) 4096
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 4
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 5
Simplifying constant integer cast 8
Simplifying constant integer cast 5
Simplifying constant integer cast $ffffffff
Simplifying constant integer cast $ffffffff
Simplifying constant integer cast 2
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast 1
Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast $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
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 unsigned number type (char) 0
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 0
Finalized unsigned number type (char) 5
Finalized unsigned number type (char) 8
Finalized unsigned number type (char) 5
Finalized unsigned number type (unsigned long) $ffffffff
Finalized unsigned number type (unsigned long) $ffffffff
Finalized unsigned number type (char) 2
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) $f
Finalized unsigned number type (char) 1
Finalized unsigned number type (unsigned int) $3fff
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) $f
Finalized unsigned number type (unsigned int) $3fff
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) 4
Finalized unsigned number type (char) $f
Finalized unsigned number type (char) $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
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 char in print_uchar_at::$2 = print_uchar_at::b#3 & $f
Inferred type updated to unsigned int in main::toD0181_$0 = main::toD0181_$7 & $3fff
Inferred type updated to unsigned int in main::toD0181_$1 = main::toD0181_$0 * 4
Inferred type updated to char in main::toD0181_$4 = main::toD0181_$3 / 4
Inferred type updated to char in main::toD0181_$5 = main::toD0181_$4 & $f
Inferred type updated to char in main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5
Inferred type updated to unsigned int in main::toD0182_$0 = main::toD0182_$7 & $3fff
Inferred type updated to unsigned int in main::toD0182_$1 = main::toD0182_$0 * 4
Inferred type updated to char in main::toD0182_$4 = main::toD0182_$3 / 4
Inferred type updated to char in main::toD0182_$5 = main::toD0182_$4 & $f
Inferred type updated to char in main::toD0182_$6 = main::toD0182_$2 | main::toD0182_$5
Inferred type updated to char in init_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
Successful SSA optimization Pass2UnaryNotSimplification
Alias malloc::return#0 = malloc::return#3 malloc::return#1 
Alias heap_head#0 = heap_head#12 heap_head#1 
Alias bsearch16u::num#3 = bsearch16u::num#4 bsearch16u::num#8 bsearch16u::num#6 
Alias bsearch16u::items#2 = bsearch16u::items#6 bsearch16u::items#3 bsearch16u::items#9 bsearch16u::items#4 bsearch16u::$3 bsearch16u::items#5 
Alias bsearch16u::key#1 = bsearch16u::key#3 bsearch16u::key#2 bsearch16u::key#7 bsearch16u::key#6 
Alias bsearch16u::result#0 = bsearch16u::result#1 
Alias bsearch16u::pivot#0 = bsearch16u::pivot#3 bsearch16u::pivot#1 bsearch16u::return#0 bsearch16u::pivot#2 
Alias bsearch16u::return#1 = bsearch16u::return#4 
Alias bsearch16u::items#0 = bsearch16u::$13 
Alias bsearch16u::$2 = bsearch16u::$1 
Alias bsearch16u::return#2 = bsearch16u::$4 
Alias malloc::size#0 = init_squares::$0 
Alias malloc::return#2 = malloc::return#4 
Alias NUM_SQUARES#16 = NUM_SQUARES#7 
Alias heap_head#13 = heap_head#2 
Alias init_squares::sqr#2 = init_squares::sqr#3 
Alias init_squares::squares#2 = init_squares::squares#3 
Alias init_squares::i#2 = init_squares::i#3 
Alias NUM_SQUARES#15 = NUM_SQUARES#8 
Alias heap_head#14 = heap_head#28 heap_head#22 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 init_font_hex::charset#3 = init_font_hex::charset#4 
Alias init_font_hex::idx#2 = init_font_hex::idx#6 
Alias init_font_hex::proto_lo#2 = init_font_hex::proto_lo#3 
Alias init_font_hex::c1#2 = init_font_hex::c1#3 
Alias init_font_hex::proto_hi#2 = init_font_hex::proto_hi#5 init_font_hex::proto_hi#3 
Alias init_font_hex::c#2 = init_font_hex::c#3 init_font_hex::c#4 
Alias init_font_hex::charset#0 = init_font_hex::charset#7 
Alias clock::return#0 = clock::ticks#0 clock::return#3 clock::return#1 
Alias print_uchar_at::b#0 = print_uint_at::$0 
Alias print_uint_at::w#2 = print_uint_at::w#3 
Alias print_uint_at::at#2 = print_uint_at::at#3 
Alias print_uchar_at::b#1 = print_uint_at::$2 
Alias print_uchar_at::at#1 = print_uint_at::$3 
Alias print_uint_at::w#0 = print_ulong_at::$0 
Alias print_ulong_at::dw#1 = print_ulong_at::dw#2 
Alias print_ulong_at::at#1 = print_ulong_at::at#2 
Alias print_uint_at::w#1 = print_ulong_at::$2 
Alias print_uint_at::at#1 = print_ulong_at::$3 
Alias print_uchar_at::b#2 = print_uchar_at::b#3 
Alias print_uchar_at::at#2 = print_uchar_at::at#3 
Alias print_char_at::at#1 = print_uchar_at::$3 
Alias NUM_SQUARES#18 = NUM_SQUARES#36 NUM_SQUARES#40 NUM_SQUARES#32 NUM_SQUARES#26 NUM_SQUARES#22 
Alias heap_head#23 = heap_head#40 heap_head#45 heap_head#36 heap_head#32 heap_head#29 
Alias SQUARES#23 = SQUARES#44 SQUARES#46 SQUARES#42 SQUARES#36 SQUARES#29 
Alias main::toD0181_screen#0 = main::toD0181_screen#1 
Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 
Alias main::toD0181_return#0 = main::toD0181_$6 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$1 
Alias NUM_SQUARES#0 = NUM_SQUARES#10 NUM_SQUARES#37 NUM_SQUARES#33 NUM_SQUARES#27 NUM_SQUARES#23 NUM_SQUARES#19 NUM_SQUARES#11 NUM_SQUARES#1 
Alias heap_head#15 = heap_head#4 heap_head#41 heap_head#37 heap_head#33 heap_head#30 heap_head#24 heap_head#16 heap_head#5 
Alias SQUARES#13 = SQUARES#2 SQUARES#45 SQUARES#43 SQUARES#37 SQUARES#30 SQUARES#24 SQUARES#14 SQUARES#3 
Alias clock::return#2 = clock::return#4 
Alias main::toD0182_screen#0 = main::toD0182_screen#1 
Alias main::toD0182_gfx#0 = main::toD0182_gfx#1 
Alias main::toD0182_return#0 = main::toD0182_$6 main::toD0182_return#2 main::toD0182_return#1 main::toD0182_return#3 main::$7 
Alias init_dist_screen::screen#1 = init_dist_screen::screen#2 init_dist_screen::screen_topline#0 
Alias NUM_SQUARES#2 = NUM_SQUARES#42 
Alias heap_head#17 = heap_head#6 
Alias SQUARES#15 = SQUARES#4 
Alias init_dist_screen::y2#0 = init_dist_screen::y2#1 init_dist_screen::y2#2 
Alias SQUARES#31 = SQUARES#38 SQUARES#32 
Alias init_dist_screen::screen_topline#11 = init_dist_screen::screen_topline#14 init_dist_screen::screen_topline#12 
Alias init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#14 init_dist_screen::screen_bottomline#12 
Alias init_dist_screen::y#10 = init_dist_screen::y#9 init_dist_screen::y#2 
Alias NUM_SQUARES#38 = NUM_SQUARES#41 NUM_SQUARES#39 
Alias heap_head#42 = heap_head#46 heap_head#43 
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#28 = NUM_SQUARES#34 
Alias heap_head#34 = heap_head#38 
Alias SQUARES#21 = SQUARES#39 
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#41 SQUARES#33 SQUARES#26 SQUARES#34 SQUARES#35 SQUARES#5 
Alias init_dist_screen::yds#3 = init_dist_screen::yds#5 init_dist_screen::yds#6 init_dist_screen::yds#4 
Alias NUM_SQUARES#12 = NUM_SQUARES#35 NUM_SQUARES#24 NUM_SQUARES#20 NUM_SQUARES#30 NUM_SQUARES#31 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#18 = heap_head#49 heap_head#31 heap_head#26 heap_head#47 heap_head#48 heap_head#7 
Alias init_dist_screen::x2#0 = init_dist_screen::x2#1 init_dist_screen::x2#2 
Alias init_dist_screen::$16 = init_dist_screen::$15 
Alias init_dist_screen::$14 = init_dist_screen::$13 
Alias init_dist_screen::xd#0 = init_dist_screen::$17 
Alias sqr::return#3 = sqr::return#6 
Alias init_dist_screen::yds#1 = init_dist_screen::yds#2 init_dist_screen::yds#7 
Alias SQUARES#20 = SQUARES#22 SQUARES#40 
Alias NUM_SQUARES#17 = NUM_SQUARES#25 NUM_SQUARES#29 
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#35 = heap_head#39 heap_head#44 
Alias sqrt::return#2 = sqrt::return#4 
Alias NUM_SQUARES#21 = NUM_SQUARES#4 
Alias heap_head#27 = heap_head#8 
Alias SQUARES#27 = SQUARES#6 
Alias NUM_SQUARES#13 = NUM_SQUARES#5 NUM_SQUARES#14 NUM_SQUARES#6 
Alias heap_head#10 = heap_head#9 heap_head#19 heap_head#20 
Alias SQUARES#17 = SQUARES#7 SQUARES#18 SQUARES#8 
Successful SSA optimization Pass2AliasElimination
Alias bsearch16u::key#1 = bsearch16u::key#5 
Alias SQUARES#21 = SQUARES#31 
Alias init_dist_screen::screen_topline#11 = init_dist_screen::screen_topline#6 
Alias init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#6 
Alias init_dist_screen::y#10 = init_dist_screen::y#5 
Alias NUM_SQUARES#28 = NUM_SQUARES#38 
Alias heap_head#34 = heap_head#42 
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#18 = heap_head#35 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values heap_head#11 heap_head#21
Identical Phi Values malloc::size#1 malloc::size#0
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#21 heap_head#25
Identical Phi Values heap_head#13 heap_head#0
Identical Phi Values NUM_SQUARES#15 NUM_SQUARES#16
Identical Phi Values heap_head#14 heap_head#13
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 init_font_hex::charset#6 init_font_hex::charset#1
Identical Phi Values init_font_hex::proto_hi#2 init_font_hex::proto_hi#4
Identical Phi Values init_font_hex::proto_lo#2 init_font_hex::proto_lo#4
Identical Phi Values init_font_hex::charset#3 init_font_hex::charset#2
Identical Phi Values init_font_hex::c1#2 init_font_hex::c1#4
Identical Phi Values init_font_hex::c#2 init_font_hex::c#5
Identical Phi Values print_ulong_at::dw#1 print_ulong_at::dw#0
Identical Phi Values print_ulong_at::at#1 print_ulong_at::at#0
Identical Phi Values NUM_SQUARES#18 NUM_SQUARES#21
Identical Phi Values heap_head#23 heap_head#27
Identical Phi Values SQUARES#23 SQUARES#27
Identical Phi Values NUM_SQUARES#0 NUM_SQUARES#12
Identical Phi Values heap_head#15 heap_head#18
Identical Phi Values SQUARES#13 SQUARES#16
Identical Phi Values heap_head#25 heap_head#23
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#17 heap_head#14
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#28
Identical Phi Values heap_head#18 heap_head#34
Identical Phi Values SQUARES#16 SQUARES#21
Identical Phi Values init_dist_screen::yds#1 init_dist_screen::yds#0
Identical Phi Values NUM_SQUARES#13 NUM_SQUARES#0
Identical Phi Values heap_head#10 heap_head#15
Identical Phi Values SQUARES#17 SQUARES#13
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values SQUARES#10 SQUARES#21
Identical Phi Values init_font_hex::proto_hi#4 init_font_hex::proto_hi#6
Identical Phi Values init_font_hex::c#5 init_font_hex::c#6
Identical Phi Values SQUARES#21 SQUARES#0
Identical Phi Values NUM_SQUARES#28 NUM_SQUARES#2
Identical Phi Values heap_head#34 heap_head#0
Successful SSA optimization Pass2IdenticalPhiElimination
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 init_font_hex::$3 [85] if(init_font_hex::i#1!=rangelast(0,4)) goto init_font_hex::@3
Simple Condition init_font_hex::$4 [94] if(init_font_hex::c1#1!=rangelast(0,$f)) goto init_font_hex::@2
Simple Condition init_font_hex::$5 [98] if(init_font_hex::c#1!=rangelast(0,$f)) goto init_font_hex::@1
Simple Condition init_dist_screen::$3 [185] if(init_dist_screen::y2#0>=$18) goto init_dist_screen::@2
Simple Condition init_dist_screen::$10 [197] if(init_dist_screen::x#2<=$13) goto init_dist_screen::@6
Simple Condition init_dist_screen::$12 [200] if(init_dist_screen::x2#0>=$27) goto init_dist_screen::@8
Simple Condition init_dist_screen::$21 [205] if(init_dist_screen::y#1!=rangelast(0,$c)) goto init_dist_screen::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
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 init_font_hex::proto_hi#0 = FONT_HEX_PROTO
Constant init_font_hex::c#0 = 0
Constant init_font_hex::proto_lo#0 = FONT_HEX_PROTO
Constant init_font_hex::c1#0 = 0
Constant init_font_hex::idx#0 = 0
Constant init_font_hex::i#0 = 0
Constant init_font_hex::charset#1 = CHARSET
Constant main::toD0181_screen#0 = SCREEN
Constant main::toD0181_gfx#0 = CHARSET
Constant init_dist_screen::screen#0 = SCREEN
Constant print_ulong_at::at#0 = main::BASE_SCREEN
Constant main::toD0182_screen#0 = main::BASE_SCREEN
Constant main::toD0182_gfx#0 = main::BASE_CHARSET
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#27 = HEAP_TOP
Constant NUM_SQUARES#21 = $ff
Constant SQUARES#27 = (unsigned int *) 0
Successful SSA optimization Pass2ConstantIdentification
Constant bsearch16u::num#2 = NUM_SQUARES#2
Constant print_uint_at::at#0 = print_ulong_at::at#0
Constant main::toD0181_$7 = (unsigned int)main::toD0181_screen#0
Constant main::toD0182_$7 = (unsigned int)main::toD0182_screen#0
Successful SSA optimization Pass2ConstantIdentification
Constant value identified (unsigned int)main::toD0181_gfx#0 in [148] main::toD0181_$3 = byte1  (unsigned int)main::toD0181_gfx#0
Constant value identified (unsigned int)main::toD0182_gfx#0 in [170] main::toD0182_$3 = byte1  (unsigned int)main::toD0182_gfx#0
Successful SSA optimization Pass2ConstantValues
Resolved ranged next value [83] init_font_hex::i#1 = ++ init_font_hex::i#2 to ++
Resolved ranged comparison value [85] if(init_font_hex::i#1!=rangelast(0,4)) goto init_font_hex::@3 to 5
Resolved ranged next value [92] init_font_hex::c1#1 = ++ init_font_hex::c1#4 to ++
Resolved ranged comparison value [94] if(init_font_hex::c1#1!=rangelast(0,$f)) goto init_font_hex::@2 to $10
Resolved ranged next value [96] init_font_hex::c#1 = ++ init_font_hex::c#6 to ++
Resolved ranged comparison value [98] if(init_font_hex::c#1!=rangelast(0,$f)) goto init_font_hex::@1 to $10
Resolved ranged next value [203] init_dist_screen::y#1 = ++ init_dist_screen::y#10 to ++
Resolved ranged comparison value [205] if(init_dist_screen::y#1!=rangelast(0,$c)) goto init_dist_screen::@1 to $d
Rewriting conditional comparison [197] if(init_dist_screen::x#2<=$13) goto init_dist_screen::@6
Simplifying constant evaluating to zero CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES in [100] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
Simplifying constant evaluating to zero CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES in [104] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
Simplifying constant evaluating to zero CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS in [105] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
Successful SSA optimization PassNSimplifyConstantZero
Simplifying expression containing zero init_font_hex::charset#2 in [74] init_font_hex::charset#2[init_font_hex::idx#0] = 0
Simplifying expression containing zero CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS in [102] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
Simplifying expression containing zero CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A in [105] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = 0|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
Simplifying expression containing zero CIA_TIMER_CONTROL_START in [107] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
Simplifying expression containing zero CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS in [108] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
Successful SSA optimization PassNSimplifyExpressionWithZero
Simplifying expression containing zero CIA_TIMER_CONTROL_START in [102] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS
Simplifying expression containing zero CIA_TIMER_CONTROL_START in [108] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS
Successful SSA optimization PassNSimplifyExpressionWithZero
Eliminating unused variable heap_head#0 and assignment [1] heap_head#0 = malloc::mem#0
Eliminating unused variable init_font_hex::idx#4 and assignment [66] init_font_hex::idx#4 = ++ init_font_hex::idx#3
Eliminating unused constant CIA_TIMER_CONTROL_STOP
Eliminating unused constant CIA_TIMER_CONTROL_CONTINUOUS
Eliminating unused constant CIA_TIMER_CONTROL_A_COUNT_CYCLES
Eliminating unused constant NUM_SQUARES#21
Eliminating unused constant SQUARES#27
Successful SSA optimization PassNEliminateUnusedVars
Removing unused procedure __start
Removing unused procedure block __start
Removing unused procedure block __start::__init1
Removing unused procedure block __start::@1
Removing unused procedure block __start::@2
Removing unused procedure block __start::@return
Successful SSA optimization PassNEliminateEmptyStart
Adding number conversion cast (unumber) 5 in [61] if(init_font_hex::i#1!=5) goto init_font_hex::@3
Adding number conversion cast (unumber) $10 in [68] if(init_font_hex::c1#1!=$10) goto init_font_hex::@2
Adding number conversion cast (unumber) $10 in [71] if(init_font_hex::c#1!=$10) goto init_font_hex::@1
Adding number conversion cast (unumber) $13+1 in [149] if(init_dist_screen::x#2<$13+1) goto init_dist_screen::@6
Adding number conversion cast (unumber) 1 in [149] if(init_dist_screen::x#2<(unumber)$13+1) goto init_dist_screen::@6
Adding number conversion cast (unumber) $d in [155] if(init_dist_screen::y#1!=$d) goto init_dist_screen::@1
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast 5
Simplifying constant integer cast $10
Simplifying constant integer cast $10
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) 5
Finalized unsigned number type (char) $10
Finalized unsigned number type (char) $10
Finalized unsigned number type (char) 1
Finalized unsigned number type (char) $d
Successful SSA optimization PassNFinalizeNumberTypeConversions
Constant right-side identified [22] malloc::size#0 = NUM_SQUARES#2 * SIZEOF_UNSIGNED_INT
Constant right-side identified [53] init_font_hex::idx#1 = ++ init_font_hex::idx#0
Constant right-side identified [94] print_uint_at::at#1 = print_ulong_at::at#0 + 4
Constant right-side identified [111] main::toD0181_$0 = main::toD0181_$7 & $3fff
Constant right-side identified [114] main::toD0181_$3 = byte1  (unsigned int)main::toD0181_gfx#0
Constant right-side identified [127] main::toD0182_$0 = main::toD0182_$7 & $3fff
Constant right-side identified [130] main::toD0182_$3 = byte1  (unsigned int)main::toD0182_gfx#0
Constant right-side identified [137] init_dist_screen::screen_bottomline#0 = init_dist_screen::screen#0 + (unsigned int)$28*$18
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant malloc::size#0 = NUM_SQUARES#2*SIZEOF_UNSIGNED_INT
Constant init_font_hex::idx#1 = ++init_font_hex::idx#0
Constant print_uint_at::at#1 = print_ulong_at::at#0+4
Constant main::toD0181_$0 = main::toD0181_$7&$3fff
Constant main::toD0181_$3 = byte1 (unsigned int)main::toD0181_gfx#0
Constant main::toD0182_$0 = main::toD0182_$7&$3fff
Constant main::toD0182_$3 = byte1 (unsigned int)main::toD0182_gfx#0
Constant init_dist_screen::screen_bottomline#0 = init_dist_screen::screen#0+(unsigned int)$28*$18
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [0] malloc::mem#0 = heap_head#27 - malloc::size#0
Constant right-side identified [108] main::toD0181_$1 = main::toD0181_$0 * 4
Constant right-side identified [110] main::toD0181_$4 = main::toD0181_$3 / 4
Constant right-side identified [122] main::toD0182_$1 = main::toD0182_$0 * 4
Constant right-side identified [124] main::toD0182_$4 = main::toD0182_$3 / 4
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant malloc::mem#0 = heap_head#27-malloc::size#0
Constant main::toD0181_$1 = main::toD0181_$0*4
Constant main::toD0181_$4 = main::toD0181_$3/4
Constant main::toD0182_$1 = main::toD0182_$0*4
Constant main::toD0182_$4 = main::toD0182_$3/4
Successful SSA optimization Pass2ConstantIdentification
Constant malloc::return#0 = (void *)malloc::mem#0
Successful SSA optimization Pass2ConstantIdentification
Constant malloc::return#2 = malloc::return#0
Successful SSA optimization Pass2ConstantIdentification
Constant init_squares::$1 = malloc::return#2
Successful SSA optimization Pass2ConstantIdentification
Constant SQUARES#0 = (unsigned int *)init_squares::$1
Successful SSA optimization Pass2ConstantIdentification
Constant init_squares::squares#0 = SQUARES#0
Constant bsearch16u::items#1 = SQUARES#0
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [101] main::toD0181_$2 = byte1  main::toD0181_$1
Constant right-side identified [102] main::toD0181_$5 = main::toD0181_$4 & $f
Constant right-side identified [113] main::toD0182_$2 = byte1  main::toD0182_$1
Constant right-side identified [114] main::toD0182_$5 = main::toD0182_$4 & $f
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant main::toD0181_$2 = byte1 main::toD0181_$1
Constant main::toD0181_$5 = main::toD0181_$4&$f
Constant main::toD0182_$2 = byte1 main::toD0182_$1
Constant main::toD0182_$5 = main::toD0182_$4&$f
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [101] main::toD0181_return#0 = main::toD0181_$2 | main::toD0181_$5
Constant right-side identified [111] main::toD0182_return#0 = main::toD0182_$2 | main::toD0182_$5
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant main::toD0181_return#0 = main::toD0181_$2|main::toD0181_$5
Constant main::toD0182_return#0 = main::toD0182_$2|main::toD0182_$5
Successful SSA optimization Pass2ConstantIdentification
Inlining Noop Cast [6] bsearch16u::$17 = (int)bsearch16u::key#0 keeping bsearch16u::key#0
Inlining Noop Cast [7] bsearch16u::$18 = (int)*bsearch16u::pivot#0 keeping *bsearch16u::pivot#0
Successful SSA optimization Pass2NopCastInlining
Rewriting multiplication to use shift [4] bsearch16u::$14 = bsearch16u::$6 * SIZEOF_UNSIGNED_INT
Rewriting multiplication to use shift [25] init_squares::$3 = init_squares::i#2 * 2
Rewriting multiplication to use shift [31] sqr::$0 = sqr::val#2 * SIZEOF_UNSIGNED_INT
Rewriting division to use shift [39] sqrt::$1 = sqrt::$2 / SIZEOF_UNSIGNED_INT
Rewriting multiplication to use shift [114] init_dist_screen::y2#0 = init_dist_screen::y#10 * 2
Rewriting multiplication to use shift [125] init_dist_screen::x2#0 = init_dist_screen::x#2 * 2
Successful SSA optimization Pass2MultiplyToShiftRewriting
Inlining constant with different constant siblings malloc::return#2
Inlining constant with var siblings bsearch16u::num#2
Inlining constant with var siblings bsearch16u::items#1
Inlining constant with var siblings init_squares::sqr#0
Inlining constant with var siblings init_squares::i#0
Inlining constant with var siblings init_squares::squares#0
Inlining constant with var siblings init_font_hex::proto_hi#0
Inlining constant with var siblings init_font_hex::c#0
Inlining constant with var siblings init_font_hex::proto_lo#0
Inlining constant with var siblings init_font_hex::c1#0
Inlining constant with var siblings init_font_hex::idx#0
Inlining constant with var siblings init_font_hex::i#0
Inlining constant with var siblings init_font_hex::charset#1
Inlining constant with var siblings init_font_hex::idx#1
Inlining constant with var siblings print_uint_at::at#0
Inlining constant with var siblings print_uint_at::at#1
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 init_dist_screen::screen_bottomline#0
Constant inlined main::toD0181_screen#0 = SCREEN
Constant inlined main::toD0181_gfx#0 = CHARSET
Constant inlined init_squares::sqr#0 = 0
Constant inlined init_squares::squares#0 = SQUARES#0
Constant inlined print_uint_at::at#1 = main::BASE_SCREEN+4
Constant inlined print_uint_at::at#0 = main::BASE_SCREEN
Constant inlined init_font_hex::proto_hi#0 = FONT_HEX_PROTO
Constant inlined main::toD0182_$4 = byte1 (unsigned int)main::BASE_CHARSET/4
Constant inlined main::toD0182_$5 = byte1 (unsigned int)main::BASE_CHARSET/4&$f
Constant inlined main::toD0182_$7 = (unsigned int)main::BASE_SCREEN
Constant inlined main::toD0182_$0 = (unsigned int)main::BASE_SCREEN&$3fff
Constant inlined main::toD0182_$1 = (unsigned int)main::BASE_SCREEN&$3fff*4
Constant inlined main::toD0182_$2 = byte1 (unsigned int)main::BASE_SCREEN&$3fff*4
Constant inlined init_dist_screen::y#0 = 0
Constant inlined main::toD0182_$3 = byte1 (unsigned int)main::BASE_CHARSET
Constant inlined init_dist_screen::xb#0 = $27
Constant inlined init_font_hex::charset#1 = CHARSET
Constant inlined print_ulong_at::at#0 = main::BASE_SCREEN
Constant inlined init_dist_screen::x#0 = 0
Constant inlined heap_head#27 = HEAP_TOP
Constant inlined init_font_hex::c1#0 = 0
Constant inlined malloc::return#2 = malloc::return#0
Constant inlined main::toD0181_$7 = (unsigned int)SCREEN
Constant inlined bsearch16u::num#2 = NUM_SQUARES#2
Constant inlined main::toD0182_gfx#0 = main::BASE_CHARSET
Constant inlined bsearch16u::$15 = 1*SIZEOF_UNSIGNED_INT
Constant inlined main::toD0181_$2 = byte1 (unsigned int)SCREEN&$3fff*4
Constant inlined bsearch16u::$16 = 1*SIZEOF_UNSIGNED_INT
Constant inlined main::toD0181_$1 = (unsigned int)SCREEN&$3fff*4
Constant inlined main::toD0181_$0 = (unsigned int)SCREEN&$3fff
Constant inlined init_font_hex::i#0 = 0
Constant inlined main::toD0181_$5 = byte1 (unsigned int)CHARSET/4&$f
Constant inlined main::toD0181_$4 = byte1 (unsigned int)CHARSET/4
Constant inlined main::toD0181_$3 = byte1 (unsigned int)CHARSET
Constant inlined init_dist_screen::screen#0 = SCREEN
Constant inlined init_font_hex::idx#1 = ++0
Constant inlined init_font_hex::idx#0 = 0
Constant inlined init_dist_screen::screen_bottomline#0 = SCREEN+(unsigned int)$28*$18
Constant inlined init_squares::i#0 = 0
Constant inlined main::toD0182_screen#0 = main::BASE_SCREEN
Constant inlined init_font_hex::proto_lo#0 = FONT_HEX_PROTO
Constant inlined init_font_hex::c#0 = 0
Constant inlined init_squares::$1 = malloc::return#0
Constant inlined bsearch16u::items#1 = SQUARES#0
Successful SSA optimization Pass2ConstantInlining
Simplifying constant integer increment ++0
Successful SSA optimization Pass2ConstantSimplification
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) $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 init_font_hex::@6(between init_font_hex::@5 and init_font_hex::@1)
Added new block during phi lifting init_font_hex::@7(between init_font_hex::@4 and init_font_hex::@2)
Added new block during phi lifting init_font_hex::@8(between init_font_hex::@3 and init_font_hex::@3)
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 main
Adding NOP phi() at start of main::@3
Adding NOP phi() at start of main::toD0181
Adding NOP phi() at start of main::toD0181_@return
Adding NOP phi() at start of main::@4
Adding NOP phi() at start of main::@5
Adding NOP phi() at start of main::@7
Adding NOP phi() at start of main::toD0182
Adding NOP phi() at start of main::toD0182_@return
Adding NOP phi() at start of init_font_hex
Adding NOP phi() at start of init_dist_screen
Adding NOP phi() at start of init_dist_screen::@11
Adding NOP phi() at start of print_ulong_at::@2
Adding NOP phi() at start of init_squares
Adding NOP phi() at start of init_squares::@3
Adding NOP phi() at start of print_uint_at::@2
Adding NOP phi() at start of malloc
Adding NOP phi() at start of bsearch16u
Adding NOP phi() at start of print_uchar_at::@2
CALL GRAPH
Calls in [main] to init_font_hex:1 clock_start:6 init_dist_screen:8 clock:10 print_ulong_at:15 
Calls in [init_dist_screen] to init_squares:60 sqr:70 sqr:90 sqrt:95 
Calls in [print_ulong_at] to print_uint_at:116 print_uint_at:119 
Calls in [init_squares] to malloc:123 
Calls in [sqrt] to bsearch16u:142 
Calls in [print_uint_at] to print_uchar_at:154 print_uchar_at:159 
Calls in [print_uchar_at] to print_char_at:198 print_char_at:204 

Created 31 initial phi equivalence classes
Coalesced [23] init_font_hex::charset#9 = init_font_hex::charset#5
Coalesced [45] init_font_hex::charset#8 = init_font_hex::charset#0
Coalesced [46] init_font_hex::proto_hi#7 = init_font_hex::proto_hi#1
Coalesced [47] init_font_hex::c#7 = init_font_hex::c#1
Coalesced (already) [48] init_font_hex::charset#10 = init_font_hex::charset#0
Coalesced [49] init_font_hex::proto_lo#5 = init_font_hex::proto_lo#1
Coalesced [50] init_font_hex::c1#5 = init_font_hex::c1#1
Coalesced [51] init_font_hex::i#3 = init_font_hex::i#1
Coalesced [52] init_font_hex::idx#7 = init_font_hex::idx#2
Coalesced [66] init_dist_screen::yd#2 = init_dist_screen::$5
Coalesced [69] sqr::val#4 = sqr::val#0
Coalesced [80] init_dist_screen::y#15 = init_dist_screen::y#1
Coalesced [81] init_dist_screen::screen_topline#15 = init_dist_screen::screen_topline#1
Coalesced [82] init_dist_screen::screen_bottomline#15 = init_dist_screen::screen_bottomline#1
Coalesced [86] init_dist_screen::xd#2 = init_dist_screen::$14
Coalesced [89] sqr::val#3 = sqr::val#1
Coalesced [104] init_dist_screen::x#9 = init_dist_screen::x#1
Coalesced [105] init_dist_screen::xb#9 = init_dist_screen::xb#1
Coalesced [107] init_dist_screen::xd#1 = init_dist_screen::$16
Coalesced [109] init_dist_screen::yd#1 = init_dist_screen::$7
Coalesced [115] print_uint_at::w#4 = print_uint_at::w#0
Coalesced [118] print_uint_at::w#5 = print_uint_at::w#1
Coalesced [134] init_squares::i#4 = init_squares::i#1
Coalesced [135] init_squares::sqr#4 = init_squares::sqr#1
Coalesced [136] init_squares::squares#4 = init_squares::squares#1
Coalesced [152] print_uchar_at::b#4 = print_uchar_at::b#0
Coalesced [153] print_uchar_at::at#4 = print_uchar_at::at#0
Coalesced [157] print_uchar_at::b#5 = print_uchar_at::b#1
Coalesced [158] print_uchar_at::at#5 = print_uchar_at::at#1
Coalesced [169] bsearch16u::return#9 = bsearch16u::$2
Coalesced [171] bsearch16u::return#6 = bsearch16u::return#2
Coalesced [174] bsearch16u::return#8 = bsearch16u::items#2
Not coalescing [180] bsearch16u::return#7 = bsearch16u::pivot#0
Coalesced [184] bsearch16u::num#10 = bsearch16u::num#1
Coalesced [185] bsearch16u::items#11 = bsearch16u::items#0
Coalesced [188] bsearch16u::num#9 = bsearch16u::num#0
Coalesced [189] bsearch16u::items#10 = bsearch16u::items#8
Coalesced [190] bsearch16u::num#11 = bsearch16u::num#3
Coalesced (already) [191] bsearch16u::items#12 = bsearch16u::items#2
Coalesced [196] print_char_at::ch#3 = print_char_at::ch#0
Coalesced [197] print_char_at::at#3 = print_char_at::at#0
Coalesced [202] print_char_at::ch#4 = print_char_at::ch#1
Coalesced [203] print_char_at::at#4 = print_char_at::at#1
Coalesced down to 27 phi equivalence classes
Culled Empty Block label main::@3
Culled Empty Block label main::toD0181_@return
Culled Empty Block label main::@7
Culled Empty Block label main::toD0182_@return
Culled Empty Block label init_font_hex::@6
Culled Empty Block label init_font_hex::@7
Culled Empty Block label init_font_hex::@8
Culled Empty Block label init_dist_screen::@11
Culled Empty Block label init_dist_screen::@15
Culled Empty Block label print_ulong_at::@2
Culled Empty Block label init_squares::@3
Culled Empty Block label print_uint_at::@2
Culled Empty Block label bsearch16u::@1
Culled Empty Block label bsearch16u::@11
Culled Empty Block label print_uchar_at::@2
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::@4 to main::@3
Renumbering block main::@5 to main::@4
Renumbering block main::@6 to main::@5
Renumbering block init_dist_screen::@12 to init_dist_screen::@11
Renumbering block init_dist_screen::@13 to init_dist_screen::@12
Renumbering block init_dist_screen::@14 to init_dist_screen::@13
Adding NOP phi() at start of main
Adding NOP phi() at start of main::toD0181
Adding NOP phi() at start of main::@3
Adding NOP phi() at start of main::@4
Adding NOP phi() at start of main::toD0182
Adding NOP phi() at start of init_font_hex
Adding NOP phi() at start of init_dist_screen
Adding NOP phi() at start of init_squares
Adding NOP phi() at start of malloc
Adding NOP phi() at start of bsearch16u

FINAL CONTROL FLOW GRAPH

void main()
main: scope:[main]  from
  [0] phi()
  [1] call init_font_hex
  to:main::toD0181
main::toD0181: scope:[main]  from main
  [2] phi()
  to:main::@1
main::@1: scope:[main]  from main::toD0181
  [3] *D018 = main::toD0181_return#0
  [4] call clock_start
  to:main::@3
main::@3: scope:[main]  from main::@1
  [5] phi()
  [6] call init_dist_screen
  to:main::@4
main::@4: scope:[main]  from main::@3
  [7] phi()
  [8] call clock
  [9] clock::return#2 = clock::return#0
  to:main::@5
main::@5: scope:[main]  from main::@4
  [10] main::$4 = clock::return#2
  [11] main::cyclecount#0 = main::$4 - CLOCKS_PER_INIT
  [12] print_ulong_at::dw#0 = main::cyclecount#0
  [13] call print_ulong_at
  to:main::toD0182
main::toD0182: scope:[main]  from main::@5
  [14] phi()
  to:main::@2
main::@2: scope:[main]  from main::toD0182
  [15] *D018 = main::toD0182_return#0
  to:main::@return
main::@return: scope:[main]  from main::@2
  [16] return 
  to:@return

void init_font_hex(char *charset)
init_font_hex: scope:[init_font_hex]  from main
  [17] phi()
  to:init_font_hex::@1
init_font_hex::@1: scope:[init_font_hex]  from init_font_hex init_font_hex::@5
  [18] init_font_hex::c#6 = phi( init_font_hex/0, init_font_hex::@5/init_font_hex::c#1 )
  [18] init_font_hex::proto_hi#6 = phi( init_font_hex/FONT_HEX_PROTO, init_font_hex::@5/init_font_hex::proto_hi#1 )
  [18] init_font_hex::charset#5 = phi( init_font_hex/CHARSET, init_font_hex::@5/init_font_hex::charset#0 )
  to:init_font_hex::@2
init_font_hex::@2: scope:[init_font_hex]  from init_font_hex::@1 init_font_hex::@4
  [19] init_font_hex::c1#4 = phi( init_font_hex::@1/0, init_font_hex::@4/init_font_hex::c1#1 )
  [19] init_font_hex::proto_lo#4 = phi( init_font_hex::@1/FONT_HEX_PROTO, init_font_hex::@4/init_font_hex::proto_lo#1 )
  [19] init_font_hex::charset#2 = phi( init_font_hex::@1/init_font_hex::charset#5, init_font_hex::@4/init_font_hex::charset#0 )
  [20] *init_font_hex::charset#2 = 0
  to:init_font_hex::@3
init_font_hex::@3: scope:[init_font_hex]  from init_font_hex::@2 init_font_hex::@3
  [21] init_font_hex::idx#5 = phi( init_font_hex::@2/1, init_font_hex::@3/init_font_hex::idx#2 )
  [21] init_font_hex::i#2 = phi( init_font_hex::@2/0, init_font_hex::@3/init_font_hex::i#1 )
  [22] init_font_hex::$0 = init_font_hex::proto_hi#6[init_font_hex::i#2] << 4
  [23] init_font_hex::$1 = init_font_hex::proto_lo#4[init_font_hex::i#2] << 1
  [24] init_font_hex::$2 = init_font_hex::$0 | init_font_hex::$1
  [25] init_font_hex::charset#2[init_font_hex::idx#5] = init_font_hex::$2
  [26] init_font_hex::idx#2 = ++ init_font_hex::idx#5
  [27] init_font_hex::i#1 = ++ init_font_hex::i#2
  [28] if(init_font_hex::i#1!=5) goto init_font_hex::@3
  to:init_font_hex::@4
init_font_hex::@4: scope:[init_font_hex]  from init_font_hex::@3
  [29] init_font_hex::charset#2[init_font_hex::idx#2] = 0
  [30] init_font_hex::idx#3 = ++ init_font_hex::idx#2
  [31] init_font_hex::charset#2[init_font_hex::idx#3] = 0
  [32] init_font_hex::proto_lo#1 = init_font_hex::proto_lo#4 + 5
  [33] init_font_hex::charset#0 = init_font_hex::charset#2 + 8
  [34] init_font_hex::c1#1 = ++ init_font_hex::c1#4
  [35] if(init_font_hex::c1#1!=$10) goto init_font_hex::@2
  to:init_font_hex::@5
init_font_hex::@5: scope:[init_font_hex]  from init_font_hex::@4
  [36] init_font_hex::proto_hi#1 = init_font_hex::proto_hi#6 + 5
  [37] init_font_hex::c#1 = ++ init_font_hex::c#6
  [38] if(init_font_hex::c#1!=$10) goto init_font_hex::@1
  to:init_font_hex::@return
init_font_hex::@return: scope:[init_font_hex]  from init_font_hex::@5
  [39] return 
  to:@return

void clock_start()
clock_start: scope:[clock_start]  from main::@1
  [40] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0
  [41] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
  [42] *CIA2_TIMER_AB = $ffffffff
  [43] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
  [44] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START
  to:clock_start::@return
clock_start::@return: scope:[clock_start]  from clock_start
  [45] return 
  to:@return

void init_dist_screen(char *screen)
init_dist_screen: scope:[init_dist_screen]  from main::@3
  [46] phi()
  [47] call init_squares
  to:init_dist_screen::@1
init_dist_screen::@1: scope:[init_dist_screen]  from init_dist_screen init_dist_screen::@7
  [48] init_dist_screen::screen_bottomline#11 = phi( init_dist_screen/SCREEN+(unsigned int)$28*$18, init_dist_screen::@7/init_dist_screen::screen_bottomline#1 )
  [48] init_dist_screen::screen_topline#11 = phi( init_dist_screen/SCREEN, init_dist_screen::@7/init_dist_screen::screen_topline#1 )
  [48] init_dist_screen::y#10 = phi( init_dist_screen/0, init_dist_screen::@7/init_dist_screen::y#1 )
  [49] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1
  [50] 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
  [51] 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
  [52] init_dist_screen::yd#0 = phi( init_dist_screen::@2/init_dist_screen::$7, init_dist_screen::@3/init_dist_screen::$5 )
  [53] sqr::val#0 = init_dist_screen::yd#0
  [54] call sqr
  [55] sqr::return#2 = sqr::return#0
  to:init_dist_screen::@11
init_dist_screen::@11: scope:[init_dist_screen]  from init_dist_screen::@4
  [56] 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::@11 init_dist_screen::@13
  [57] init_dist_screen::xb#2 = phi( init_dist_screen::@11/$27, init_dist_screen::@13/init_dist_screen::xb#1 )
  [57] init_dist_screen::x#2 = phi( init_dist_screen::@11/0, init_dist_screen::@13/init_dist_screen::x#1 )
  [58] 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
  [59] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28
  [60] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28
  [61] init_dist_screen::y#1 = ++ init_dist_screen::y#10
  [62] 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
  [63] return 
  to:@return
init_dist_screen::@6: scope:[init_dist_screen]  from init_dist_screen::@5
  [64] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1
  [65] 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
  [66] 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
  [67] init_dist_screen::xd#0 = phi( init_dist_screen::@8/init_dist_screen::$16, init_dist_screen::@9/init_dist_screen::$14 )
  [68] sqr::val#1 = init_dist_screen::xd#0
  [69] call sqr
  [70] sqr::return#3 = sqr::return#0
  to:init_dist_screen::@12
init_dist_screen::@12: scope:[init_dist_screen]  from init_dist_screen::@10
  [71] init_dist_screen::xds#0 = sqr::return#3
  [72] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0
  [73] sqrt::val#0 = init_dist_screen::ds#0
  [74] call sqrt
  [75] sqrt::return#2 = sqrt::return#0
  to:init_dist_screen::@13
init_dist_screen::@13: scope:[init_dist_screen]  from init_dist_screen::@12
  [76] init_dist_screen::d#0 = sqrt::return#2
  [77] init_dist_screen::screen_topline#11[init_dist_screen::x#2] = init_dist_screen::d#0
  [78] init_dist_screen::screen_bottomline#11[init_dist_screen::x#2] = init_dist_screen::d#0
  [79] init_dist_screen::screen_topline#11[init_dist_screen::xb#2] = init_dist_screen::d#0
  [80] init_dist_screen::screen_bottomline#11[init_dist_screen::xb#2] = init_dist_screen::d#0
  [81] init_dist_screen::x#1 = ++ init_dist_screen::x#2
  [82] 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
  [83] 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
  [84] init_dist_screen::$7 = init_dist_screen::y2#0 - $18
  to:init_dist_screen::@4

unsigned long clock()
clock: scope:[clock]  from main::@4
  [85] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0
  [86] clock::return#0 = $ffffffff - *CIA2_TIMER_AB
  [87] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START
  to:clock::@return
clock::@return: scope:[clock]  from clock
  [88] return 
  to:@return

void print_ulong_at(unsigned long dw , char *at)
print_ulong_at: scope:[print_ulong_at]  from main::@5
  [89] print_uint_at::w#0 = word1  print_ulong_at::dw#0
  [90] call print_uint_at
  to:print_ulong_at::@1
print_ulong_at::@1: scope:[print_ulong_at]  from print_ulong_at
  [91] print_uint_at::w#1 = word0  print_ulong_at::dw#0
  [92] call print_uint_at
  to:print_ulong_at::@return
print_ulong_at::@return: scope:[print_ulong_at]  from print_ulong_at::@1
  [93] return 
  to:@return

void init_squares()
init_squares: scope:[init_squares]  from init_dist_screen
  [94] phi()
  [95] call malloc
  to:init_squares::@1
init_squares::@1: scope:[init_squares]  from init_squares init_squares::@2
  [96] init_squares::squares#2 = phi( init_squares::@2/init_squares::squares#1, init_squares/SQUARES#0 )
  [96] init_squares::sqr#2 = phi( init_squares::@2/init_squares::sqr#1, init_squares/0 )
  [96] init_squares::i#2 = phi( init_squares::@2/init_squares::i#1, init_squares/0 )
  [97] 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
  [98] return 
  to:@return
init_squares::@2: scope:[init_squares]  from init_squares::@1
  [99] *init_squares::squares#2 = init_squares::sqr#2
  [100] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_UNSIGNED_INT
  [101] init_squares::$3 = init_squares::i#2 << 1
  [102] init_squares::$4 = init_squares::$3 + 1
  [103] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4
  [104] 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
  [105] sqr::val#2 = phi( init_dist_screen::@10/sqr::val#1, init_dist_screen::@4/sqr::val#0 )
  [106] sqr::$0 = sqr::val#2 << 1
  [107] sqr::return#0 = SQUARES#0[sqr::$0]
  to:sqr::@return
sqr::@return: scope:[sqr]  from sqr
  [108] return 
  to:@return

char sqrt(unsigned int val)
sqrt: scope:[sqrt]  from init_dist_screen::@12
  [109] bsearch16u::key#0 = sqrt::val#0
  [110] call bsearch16u
  [111] bsearch16u::return#3 = bsearch16u::return#1
  to:sqrt::@1
sqrt::@1: scope:[sqrt]  from sqrt
  [112] sqrt::found#0 = bsearch16u::return#3
  [113] sqrt::$2 = sqrt::found#0 - SQUARES#0
  [114] sqrt::$1 = sqrt::$2 >> 1
  [115] sqrt::return#0 = (char)sqrt::$1
  to:sqrt::@return
sqrt::@return: scope:[sqrt]  from sqrt::@1
  [116] return 
  to:@return

void print_uint_at(unsigned int w , char *at)
print_uint_at: scope:[print_uint_at]  from print_ulong_at print_ulong_at::@1
  [117] print_uint_at::at#2 = phi( print_ulong_at/main::BASE_SCREEN, print_ulong_at::@1/main::BASE_SCREEN+4 )
  [117] print_uint_at::w#2 = phi( print_ulong_at/print_uint_at::w#0, print_ulong_at::@1/print_uint_at::w#1 )
  [118] print_uchar_at::b#0 = byte1  print_uint_at::w#2
  [119] print_uchar_at::at#0 = print_uint_at::at#2
  [120] call print_uchar_at
  to:print_uint_at::@1
print_uint_at::@1: scope:[print_uint_at]  from print_uint_at
  [121] print_uchar_at::b#1 = byte0  print_uint_at::w#2
  [122] print_uchar_at::at#1 = print_uint_at::at#2 + 2
  [123] call print_uchar_at
  to:print_uint_at::@return
print_uint_at::@return: scope:[print_uint_at]  from print_uint_at::@1
  [124] return 
  to:@return

void * malloc(unsigned int size)
malloc: scope:[malloc]  from init_squares
  [125] phi()
  to:malloc::@return
malloc::@return: scope:[malloc]  from malloc
  [126] return 
  to:@return

unsigned int * bsearch16u(unsigned int key , unsigned int *items , char num)
bsearch16u: scope:[bsearch16u]  from sqrt
  [127] phi()
  to:bsearch16u::@3
bsearch16u::@3: scope:[bsearch16u]  from bsearch16u bsearch16u::@7
  [128] bsearch16u::items#2 = phi( bsearch16u/SQUARES#0, bsearch16u::@7/bsearch16u::items#8 )
  [128] bsearch16u::num#3 = phi( bsearch16u/NUM_SQUARES#2, bsearch16u::@7/bsearch16u::num#0 )
  [129] if(bsearch16u::num#3>0) goto bsearch16u::@4
  to:bsearch16u::@5
bsearch16u::@5: scope:[bsearch16u]  from bsearch16u::@3
  [130] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@2
  to:bsearch16u::@1
bsearch16u::@1: scope:[bsearch16u]  from bsearch16u::@5
  [131] bsearch16u::$2 = bsearch16u::items#2 - 1*SIZEOF_UNSIGNED_INT
  to:bsearch16u::@2
bsearch16u::@2: scope:[bsearch16u]  from bsearch16u::@1 bsearch16u::@5
  [132] 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
  [133] bsearch16u::return#1 = phi( bsearch16u::@2/bsearch16u::return#2, bsearch16u::@8/bsearch16u::return#7 )
  [134] return 
  to:@return
bsearch16u::@4: scope:[bsearch16u]  from bsearch16u::@3
  [135] bsearch16u::$6 = bsearch16u::num#3 >> 1
  [136] bsearch16u::$14 = bsearch16u::$6 << 1
  [137] bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14
  [138] bsearch16u::result#0 = (int)bsearch16u::key#0 - (int)*bsearch16u::pivot#0
  [139] if(bsearch16u::result#0!=0) goto bsearch16u::@6
  to:bsearch16u::@8
bsearch16u::@8: scope:[bsearch16u]  from bsearch16u::@4
  [140] bsearch16u::return#7 = bsearch16u::pivot#0
  to:bsearch16u::@return
bsearch16u::@6: scope:[bsearch16u]  from bsearch16u::@4
  [141] if(bsearch16u::result#0<=0) goto bsearch16u::@7
  to:bsearch16u::@9
bsearch16u::@9: scope:[bsearch16u]  from bsearch16u::@6
  [142] bsearch16u::items#0 = bsearch16u::pivot#0 + 1*SIZEOF_UNSIGNED_INT
  [143] bsearch16u::num#1 = -- bsearch16u::num#3
  to:bsearch16u::@7
bsearch16u::@7: scope:[bsearch16u]  from bsearch16u::@6 bsearch16u::@9
  [144] bsearch16u::items#8 = phi( bsearch16u::@9/bsearch16u::items#0, bsearch16u::@6/bsearch16u::items#2 )
  [144] bsearch16u::num#5 = phi( bsearch16u::@9/bsearch16u::num#1, bsearch16u::@6/bsearch16u::num#3 )
  [145] bsearch16u::num#0 = bsearch16u::num#5 >> 1
  to:bsearch16u::@3

void print_uchar_at(char b , char *at)
print_uchar_at: scope:[print_uchar_at]  from print_uint_at print_uint_at::@1
  [146] print_uchar_at::at#2 = phi( print_uint_at/print_uchar_at::at#0, print_uint_at::@1/print_uchar_at::at#1 )
  [146] print_uchar_at::b#2 = phi( print_uint_at/print_uchar_at::b#0, print_uint_at::@1/print_uchar_at::b#1 )
  [147] print_uchar_at::$0 = print_uchar_at::b#2 >> 4
  [148] print_char_at::ch#0 = print_hextab[print_uchar_at::$0]
  [149] print_char_at::at#0 = print_uchar_at::at#2
  [150] call print_char_at
  to:print_uchar_at::@1
print_uchar_at::@1: scope:[print_uchar_at]  from print_uchar_at
  [151] print_uchar_at::$2 = print_uchar_at::b#2 & $f
  [152] print_char_at::at#1 = print_uchar_at::at#2 + 1
  [153] print_char_at::ch#1 = print_hextab[print_uchar_at::$2]
  [154] call print_char_at
  to:print_uchar_at::@return
print_uchar_at::@return: scope:[print_uchar_at]  from print_uchar_at::@1
  [155] return 
  to:@return

void print_char_at(char ch , char *at)
print_char_at: scope:[print_char_at]  from print_uchar_at print_uchar_at::@1
  [156] print_char_at::at#2 = phi( print_uchar_at/print_char_at::at#0, print_uchar_at::@1/print_char_at::at#1 )
  [156] print_char_at::ch#2 = phi( print_uchar_at/print_char_at::ch#0, print_uchar_at::@1/print_char_at::ch#1 )
  [157] *print_char_at::at#2 = print_char_at::ch#2
  to:print_char_at::@return
print_char_at::@return: scope:[print_char_at]  from print_char_at
  [158] return 
  to:@return


VARIABLE REGISTER WEIGHTS
char NUM_SQUARES
unsigned int *SQUARES
unsigned int * bsearch16u(unsigned int key , unsigned int *items , char num)
char bsearch16u::$14 // 2.00000002E8
unsigned int *bsearch16u::$2 // 200002.0
char bsearch16u::$6 // 2.00000002E8
unsigned int *bsearch16u::items
unsigned int *bsearch16u::items#0 // 1.00000001E8
unsigned int *bsearch16u::items#2 // 3.3366667333333336E7
unsigned int *bsearch16u::items#8 // 1.500000015E8
unsigned int bsearch16u::key
unsigned int bsearch16u::key#0 // 7857.285714285715
char bsearch16u::num
char bsearch16u::num#0 // 2.00000002E8
char bsearch16u::num#1 // 2.00000002E8
char bsearch16u::num#3 // 5.555555611111111E7
char bsearch16u::num#5 // 3.00000003E8
unsigned int *bsearch16u::pivot
unsigned int *bsearch16u::pivot#0 // 5.002500075E7
int bsearch16u::result
int bsearch16u::result#0 // 1.500000015E8
unsigned int *bsearch16u::return
unsigned int *bsearch16u::return#1 // 70001.0
unsigned int *bsearch16u::return#2 // 300003.0
unsigned int *bsearch16u::return#3 // 20002.0
unsigned int *bsearch16u::return#7 // 200002.0
unsigned long clock()
unsigned long clock::return
unsigned long clock::return#0 // 3.25
unsigned long clock::return#2 // 4.0
unsigned long clock::ticks
void clock_start()
char *heap_head
void init_dist_screen(char *screen)
char init_dist_screen::$14 // 2002.0
char init_dist_screen::$16 // 2002.0
char init_dist_screen::$5 // 202.0
char init_dist_screen::$7 // 202.0
char init_dist_screen::d
char init_dist_screen::d#0 // 1251.25
unsigned int init_dist_screen::ds
unsigned int init_dist_screen::ds#0 // 2002.0
char *init_dist_screen::screen
char *init_dist_screen::screen_bottomline
char *init_dist_screen::screen_bottomline#1 // 67.33333333333333
char *init_dist_screen::screen_bottomline#11 // 66.78787878787878
char *init_dist_screen::screen_topline
char *init_dist_screen::screen_topline#1 // 50.5
char *init_dist_screen::screen_topline#11 // 68.875
char init_dist_screen::x
char init_dist_screen::x#1 // 1001.0
char init_dist_screen::x#2 // 300.3
char init_dist_screen::x2
char init_dist_screen::x2#0 // 2002.0
char init_dist_screen::xb
char init_dist_screen::xb#1 // 2002.0
char init_dist_screen::xb#2 // 190.66666666666666
char init_dist_screen::xd
char init_dist_screen::xd#0 // 3003.0
unsigned int init_dist_screen::xds
unsigned int init_dist_screen::xds#0 // 2002.0
char init_dist_screen::y
char init_dist_screen::y#1 // 151.5
char init_dist_screen::y#10 // 8.911764705882353
char init_dist_screen::y2
char init_dist_screen::y2#0 // 202.0
char init_dist_screen::yd
char init_dist_screen::yd#0 // 303.0
unsigned int init_dist_screen::yds
unsigned int init_dist_screen::yds#0 // 47.91304347826087
void init_font_hex(char *charset)
char init_font_hex::$0 // 10001.0
char init_font_hex::$1 // 20002.0
char init_font_hex::$2 // 20002.0
char init_font_hex::c
char init_font_hex::c#1 // 151.5
char init_font_hex::c#6 // 10.631578947368421
char init_font_hex::c1
char init_font_hex::c1#1 // 1501.5
char init_font_hex::c1#4 // 133.46666666666667
char *init_font_hex::charset
char *init_font_hex::charset#0 // 350.5
char *init_font_hex::charset#2 // 1079.0714285714287
char *init_font_hex::charset#5 // 202.0
char init_font_hex::i
char init_font_hex::i#1 // 15001.5
char init_font_hex::i#2 // 6667.333333333333
char init_font_hex::idx
char init_font_hex::idx#2 // 5501.0
char init_font_hex::idx#3 // 2002.0
char init_font_hex::idx#5 // 6000.6
char *init_font_hex::proto_hi
char *init_font_hex::proto_hi#1 // 67.33333333333333
char *init_font_hex::proto_hi#6 // 566.8333333333333
char *init_font_hex::proto_lo
char *init_font_hex::proto_lo#1 // 500.5
char *init_font_hex::proto_lo#4 // 923.3076923076923
void init_squares()
char init_squares::$3 // 2002.0
char init_squares::$4 // 2002.0
char init_squares::i
char init_squares::i#1 // 2002.0
char init_squares::i#2 // 572.0
unsigned int init_squares::sqr
unsigned int init_squares::sqr#1 // 1001.0
unsigned int init_squares::sqr#2 // 500.5
unsigned int *init_squares::squares
unsigned int *init_squares::squares#1 // 400.4
unsigned int *init_squares::squares#2 // 1001.0
void main()
unsigned long main::$4 // 4.0
unsigned long main::cyclecount
unsigned long main::cyclecount#0 // 4.0
char *main::toD0181_gfx
char main::toD0181_return
char *main::toD0181_screen
char *main::toD0182_gfx
char main::toD0182_return
char *main::toD0182_screen
void * malloc(unsigned int size)
char *malloc::mem
void *malloc::return
unsigned int malloc::size
void print_char_at(char ch , char *at)
char *print_char_at::at
char *print_char_at::at#0 // 2002.0
char *print_char_at::at#1 // 1001.0
char *print_char_at::at#2 // 12003.0
char print_char_at::ch
char print_char_at::ch#0 // 1001.0
char print_char_at::ch#1 // 2002.0
char print_char_at::ch#2 // 12003.0
void print_uchar_at(char b , char *at)
char print_uchar_at::$0 // 2002.0
char print_uchar_at::$2 // 1001.0
char *print_uchar_at::at
char *print_uchar_at::at#0 // 202.0
char *print_uchar_at::at#1 // 202.0
char *print_uchar_at::at#2 // 367.33333333333337
char print_uchar_at::b
char print_uchar_at::b#0 // 101.0
char print_uchar_at::b#1 // 101.0
char print_uchar_at::b#2 // 440.79999999999995
void print_uint_at(unsigned int w , char *at)
char *print_uint_at::at
char *print_uint_at::at#2 // 40.4
unsigned int print_uint_at::w
unsigned int print_uint_at::w#0 // 22.0
unsigned int print_uint_at::w#1 // 22.0
unsigned int print_uint_at::w#2 // 56.0
void print_ulong_at(unsigned long dw , char *at)
char *print_ulong_at::at
unsigned long print_ulong_at::dw
unsigned long print_ulong_at::dw#0 // 8.0
unsigned int sqr(char val)
char sqr::$0 // 20002.0
unsigned int sqr::return
unsigned int sqr::return#0 // 2775.75
unsigned int sqr::return#2 // 202.0
unsigned int sqr::return#3 // 2002.0
char sqr::val
char sqr::val#0 // 202.0
char sqr::val#1 // 2002.0
char sqr::val#2 // 11103.0
char sqrt(unsigned int val)
unsigned int sqrt::$1 // 10001.0
unsigned int sqrt::$2 // 20002.0
unsigned int *sqrt::found
unsigned int *sqrt::found#0 // 20002.0
char sqrt::return
char sqrt::return#0 // 3667.333333333333
char sqrt::return#2 // 2002.0
char sqrt::sq
unsigned int sqrt::val
unsigned int sqrt::val#0 // 11002.0

Initial phi equivalence classes
[ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
[ init_font_hex::c#6 init_font_hex::c#1 ]
[ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
[ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
[ init_font_hex::c1#4 init_font_hex::c1#1 ]
[ init_font_hex::i#2 init_font_hex::i#1 ]
[ init_font_hex::idx#5 init_font_hex::idx#2 ]
[ init_dist_screen::y#10 init_dist_screen::y#1 ]
[ init_dist_screen::screen_topline#11 init_dist_screen::screen_topline#1 ]
[ init_dist_screen::screen_bottomline#11 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_squares::i#2 init_squares::i#1 ]
[ init_squares::sqr#2 init_squares::sqr#1 ]
[ init_squares::squares#2 init_squares::squares#1 ]
[ sqr::val#2 sqr::val#1 sqr::val#0 ]
[ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ]
[ print_uint_at::at#2 ]
[ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ]
[ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
[ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
[ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ]
[ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
[ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
Added variable clock::return#2 to live range equivalence class [ clock::return#2 ]
Added variable main::$4 to live range equivalence class [ main::$4 ]
Added variable main::cyclecount#0 to live range equivalence class [ main::cyclecount#0 ]
Added variable print_ulong_at::dw#0 to live range equivalence class [ print_ulong_at::dw#0 ]
Added variable init_font_hex::$0 to live range equivalence class [ init_font_hex::$0 ]
Added variable init_font_hex::$1 to live range equivalence class [ init_font_hex::$1 ]
Added variable init_font_hex::$2 to live range equivalence class [ init_font_hex::$2 ]
Added variable init_font_hex::idx#3 to live range equivalence class [ init_font_hex::idx#3 ]
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 clock::return#0 to live range equivalence class [ clock::return#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 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 ]
Added variable print_uchar_at::$0 to live range equivalence class [ print_uchar_at::$0 ]
Added variable print_uchar_at::$2 to live range equivalence class [ print_uchar_at::$2 ]
Complete equivalence classes
[ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
[ init_font_hex::c#6 init_font_hex::c#1 ]
[ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
[ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
[ init_font_hex::c1#4 init_font_hex::c1#1 ]
[ init_font_hex::i#2 init_font_hex::i#1 ]
[ init_font_hex::idx#5 init_font_hex::idx#2 ]
[ init_dist_screen::y#10 init_dist_screen::y#1 ]
[ init_dist_screen::screen_topline#11 init_dist_screen::screen_topline#1 ]
[ init_dist_screen::screen_bottomline#11 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_squares::i#2 init_squares::i#1 ]
[ init_squares::sqr#2 init_squares::sqr#1 ]
[ init_squares::squares#2 init_squares::squares#1 ]
[ sqr::val#2 sqr::val#1 sqr::val#0 ]
[ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ]
[ print_uint_at::at#2 ]
[ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ]
[ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
[ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
[ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ]
[ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
[ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
[ clock::return#2 ]
[ main::$4 ]
[ main::cyclecount#0 ]
[ print_ulong_at::dw#0 ]
[ init_font_hex::$0 ]
[ init_font_hex::$1 ]
[ init_font_hex::$2 ]
[ init_font_hex::idx#3 ]
[ 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 ]
[ clock::return#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 ]
[ bsearch16u::$6 ]
[ bsearch16u::$14 ]
[ bsearch16u::pivot#0 ]
[ bsearch16u::result#0 ]
[ print_uchar_at::$0 ]
[ print_uchar_at::$2 ]
Allocated zp[2]:2 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
Allocated zp[1]:4 [ init_font_hex::c#6 init_font_hex::c#1 ]
Allocated zp[2]:5 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
Allocated zp[2]:9 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
Allocated zp[1]:11 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
Allocated zp[1]:12 [ init_font_hex::i#2 init_font_hex::i#1 ]
Allocated zp[1]:13 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
Allocated zp[1]:14 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
Allocated zp[2]:15 [ init_dist_screen::screen_topline#11 init_dist_screen::screen_topline#1 ]
Allocated zp[2]:17 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#1 ]
Allocated zp[1]:19 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
Allocated zp[1]:20 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Allocated zp[1]:21 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Allocated zp[1]:22 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ]
Allocated zp[1]:23 [ init_squares::i#2 init_squares::i#1 ]
Allocated zp[2]:24 [ init_squares::sqr#2 init_squares::sqr#1 ]
Allocated zp[2]:26 [ init_squares::squares#2 init_squares::squares#1 ]
Allocated zp[1]:28 [ sqr::val#2 sqr::val#1 sqr::val#0 ]
Allocated zp[2]:29 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ]
Allocated zp[2]:31 [ print_uint_at::at#2 ]
Allocated zp[2]:33 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ]
Allocated zp[1]:35 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
Allocated zp[1]:36 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
Allocated zp[2]:37 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ]
Allocated zp[1]:39 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
Allocated zp[2]:40 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
Allocated zp[4]:42 [ clock::return#2 ]
Allocated zp[4]:46 [ main::$4 ]
Allocated zp[4]:50 [ main::cyclecount#0 ]
Allocated zp[4]:54 [ print_ulong_at::dw#0 ]
Allocated zp[1]:58 [ init_font_hex::$0 ]
Allocated zp[1]:59 [ init_font_hex::$1 ]
Allocated zp[1]:60 [ init_font_hex::$2 ]
Allocated zp[1]:61 [ init_font_hex::idx#3 ]
Allocated zp[1]:62 [ init_dist_screen::y2#0 ]
Allocated zp[2]:63 [ sqr::return#2 ]
Allocated zp[2]:65 [ init_dist_screen::yds#0 ]
Allocated zp[1]:67 [ init_dist_screen::x2#0 ]
Allocated zp[2]:68 [ sqr::return#3 ]
Allocated zp[2]:70 [ init_dist_screen::xds#0 ]
Allocated zp[2]:72 [ init_dist_screen::ds#0 ]
Allocated zp[2]:74 [ sqrt::val#0 ]
Allocated zp[1]:76 [ sqrt::return#2 ]
Allocated zp[1]:77 [ init_dist_screen::d#0 ]
Allocated zp[4]:78 [ clock::return#0 ]
Allocated zp[1]:82 [ init_squares::$3 ]
Allocated zp[1]:83 [ init_squares::$4 ]
Allocated zp[1]:84 [ sqr::$0 ]
Allocated zp[2]:85 [ sqr::return#0 ]
Allocated zp[2]:87 [ bsearch16u::key#0 ]
Allocated zp[2]:89 [ bsearch16u::return#3 ]
Allocated zp[2]:91 [ sqrt::found#0 ]
Allocated zp[2]:93 [ sqrt::$2 ]
Allocated zp[2]:95 [ sqrt::$1 ]
Allocated zp[1]:97 [ sqrt::return#0 ]
Allocated zp[1]:98 [ bsearch16u::$6 ]
Allocated zp[1]:99 [ bsearch16u::$14 ]
Allocated zp[2]:100 [ bsearch16u::pivot#0 ]
Allocated zp[2]:102 [ bsearch16u::result#0 ]
Allocated zp[1]:104 [ print_uchar_at::$0 ]
Allocated zp[1]:105 [ print_uchar_at::$2 ]
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [3] *D018 = main::toD0181_return#0 [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [9] clock::return#2 = clock::return#0 [ clock::return#2 ] (  [ clock::return#2 ] { { clock::return#0 = clock::return#2 } }  ) always clobbers reg byte a 
Statement [10] main::$4 = clock::return#2 [ main::$4 ] (  [ main::$4 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } }  ) always clobbers reg byte a 
Statement [11] main::cyclecount#0 = main::$4 - CLOCKS_PER_INIT [ main::cyclecount#0 ] (  [ main::cyclecount#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } }  ) always clobbers reg byte a 
Statement [12] print_ulong_at::dw#0 = main::cyclecount#0 [ print_ulong_at::dw#0 ] (  [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } }  ) always clobbers reg byte a 
Statement [15] *D018 = main::toD0182_return#0 [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [20] *init_font_hex::charset#2 = 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { }  ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte a as potential for zp[1]:4 [ init_font_hex::c#6 init_font_hex::c#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:4 [ init_font_hex::c#6 init_font_hex::c#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:11 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:11 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
Statement [22] init_font_hex::$0 = init_font_hex::proto_hi#6[init_font_hex::i#2] << 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:12 [ init_font_hex::i#2 init_font_hex::i#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:13 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
Statement [23] init_font_hex::$1 = init_font_hex::proto_lo#4[init_font_hex::i#2] << 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:58 [ init_font_hex::$0 ]
Statement [29] init_font_hex::charset#2[init_font_hex::idx#2] = 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] { }  ) always clobbers reg byte a 
Statement [31] init_font_hex::charset#2[init_font_hex::idx#3] = 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { }  ) always clobbers reg byte a 
Statement [32] init_font_hex::proto_lo#1 = init_font_hex::proto_lo#4 + 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { }  ) always clobbers reg byte a 
Statement [33] init_font_hex::charset#0 = init_font_hex::charset#2 + 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { }  ) always clobbers reg byte a 
Statement [36] init_font_hex::proto_hi#1 = init_font_hex::proto_hi#6 + 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( init_font_hex:1 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] { }  ) always clobbers reg byte a 
Statement [40] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0 [ ] ( clock_start:4 [ ] { }  ) always clobbers reg byte a 
Statement [41] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( clock_start:4 [ ] { }  ) always clobbers reg byte a 
Statement [42] *CIA2_TIMER_AB = $ffffffff [ ] ( clock_start:4 [ ] { }  ) always clobbers reg byte a 
Statement [43] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( clock_start:4 [ ] { }  ) always clobbers reg byte a 
Statement [44] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START [ ] ( clock_start:4 [ ] { }  ) always clobbers reg byte a 
Statement [49] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 ] ( init_dist_screen:6 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:14 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
Statement [51] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 ] ( init_dist_screen:6 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 ] { }  ) always clobbers reg byte a 
Statement [55] sqr::return#2 = sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 ] ( init_dist_screen:6 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } }  ) always clobbers reg byte a 
Statement [56] init_dist_screen::yds#0 = sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 ] ( init_dist_screen:6 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 ] { }  ) always clobbers reg byte a 
Statement [59] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 ] ( init_dist_screen:6 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 ] { }  ) always clobbers reg byte a 
Statement [60] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 ] ( init_dist_screen:6 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 ] { }  ) always clobbers reg byte a 
Statement [64] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 ] ( init_dist_screen:6 [ 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 ] { }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:20 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:21 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Statement [66] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 ] ( init_dist_screen:6 [ 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 ] { }  ) always clobbers reg byte a 
Statement [70] sqr::return#3 = sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 ] ( init_dist_screen:6 [ 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 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } }  ) always clobbers reg byte a 
Statement [71] init_dist_screen::xds#0 = sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 ] ( init_dist_screen:6 [ 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 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [72] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 ] ( init_dist_screen:6 [ 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 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [73] sqrt::val#0 = init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 ] ( init_dist_screen:6 [ 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 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [85] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0 [ ] ( clock:8 [ ] { { clock::return#0 = clock::return#2 } }  ) always clobbers reg byte a 
Statement [86] clock::return#0 = $ffffffff - *CIA2_TIMER_AB [ clock::return#0 ] ( clock:8 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } }  ) always clobbers reg byte a 
Statement [87] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START [ clock::return#0 ] ( clock:8 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } }  ) always clobbers reg byte a 
Statement [89] print_uint_at::w#0 = word1  print_ulong_at::dw#0 [ print_ulong_at::dw#0 print_uint_at::w#0 ] ( print_ulong_at:13 [ print_ulong_at::dw#0 print_uint_at::w#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } }  ) always clobbers reg byte a 
Statement [91] print_uint_at::w#1 = word0  print_ulong_at::dw#0 [ print_uint_at::w#1 ] ( print_ulong_at:13 [ print_uint_at::w#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } }  ) always clobbers reg byte a 
Statement [99] *init_squares::squares#2 = init_squares::sqr#2 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( init_dist_screen:6::init_squares:47 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { }  ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte a as potential for zp[1]:23 [ init_squares::i#2 init_squares::i#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:23 [ init_squares::i#2 init_squares::i#1 ]
Statement [100] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_UNSIGNED_INT [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( init_dist_screen:6::init_squares:47 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { }  ) always clobbers reg byte a 
Statement [101] init_squares::$3 = init_squares::i#2 << 1 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( init_dist_screen:6::init_squares:47 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { }  ) always clobbers reg byte a 
Statement [103] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4 [ init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( init_dist_screen:6::init_squares:47 [ init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { }  ) always clobbers reg byte a 
Statement [106] sqr::$0 = sqr::val#2 << 1 [ sqr::$0 ] ( init_dist_screen:6::sqr:54 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::$0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } }  init_dist_screen:6::sqr:69 [ 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::$0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } }  ) always clobbers reg byte a 
Statement [107] sqr::return#0 = SQUARES#0[sqr::$0] [ sqr::return#0 ] ( init_dist_screen:6::sqr:54 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } }  init_dist_screen:6::sqr:69 [ 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 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } }  ) always clobbers reg byte a 
Statement [109] bsearch16u::key#0 = sqrt::val#0 [ bsearch16u::key#0 ] ( init_dist_screen:6::sqrt:74 [ 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 bsearch16u::key#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 [111] bsearch16u::return#3 = bsearch16u::return#1 [ bsearch16u::return#3 ] ( init_dist_screen:6::sqrt:74 [ 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 bsearch16u::return#3 ] { { 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 [112] sqrt::found#0 = bsearch16u::return#3 [ sqrt::found#0 ] ( init_dist_screen:6::sqrt:74 [ 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::found#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [113] sqrt::$2 = sqrt::found#0 - SQUARES#0 [ sqrt::$2 ] ( init_dist_screen:6::sqrt:74 [ 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::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [114] sqrt::$1 = sqrt::$2 >> 1 [ sqrt::$1 ] ( init_dist_screen:6::sqrt:74 [ 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::$1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [119] print_uchar_at::at#0 = print_uint_at::at#2 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] ( print_ulong_at:13::print_uint_at:90 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:92 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:36 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
Statement [122] print_uchar_at::at#1 = print_uint_at::at#2 + 2 [ print_uchar_at::b#1 print_uchar_at::at#1 ] ( print_ulong_at:13::print_uint_at:90 [ print_ulong_at::dw#0 print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } }  print_ulong_at:13::print_uint_at:92 [ print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } }  ) always clobbers reg byte a 
Statement [130] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::items#2 ] { { 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]:14 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:20 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:21 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Statement [131] bsearch16u::$2 = bsearch16u::items#2 - 1*SIZEOF_UNSIGNED_INT [ bsearch16u::$2 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::$2 ] { { 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 [135] bsearch16u::$6 = bsearch16u::num#3 >> 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { 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]:35 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
Statement [136] bsearch16u::$14 = bsearch16u::$6 << 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] { { 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 [137] bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#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 [138] 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 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#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]:35 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
Statement [139] if(bsearch16u::result#0!=0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#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 [140] bsearch16u::return#7 = bsearch16u::pivot#0 [ bsearch16u::return#7 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::return#7 ] { { 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 [141] if(bsearch16u::result#0<=0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#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 [142] bsearch16u::items#0 = bsearch16u::pivot#0 + 1*SIZEOF_UNSIGNED_INT [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#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 [147] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] ( print_ulong_at:13::print_uint_at:90::print_uchar_at:120 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:120 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:123 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:123 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } }  ) always clobbers reg byte a 
Statement [149] print_char_at::at#0 = print_uchar_at::at#2 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( print_ulong_at:13::print_uint_at:90::print_uchar_at:120 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:120 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:123 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:123 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:39 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
Statement [151] print_uchar_at::$2 = print_uchar_at::b#2 & $f [ print_uchar_at::at#2 print_uchar_at::$2 ] ( print_ulong_at:13::print_uint_at:90::print_uchar_at:120 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:120 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:123 [ print_ulong_at::dw#0 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:123 [ print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  ) always clobbers reg byte a 
Statement [152] print_char_at::at#1 = print_uchar_at::at#2 + 1 [ print_uchar_at::$2 print_char_at::at#1 ] ( print_ulong_at:13::print_uint_at:90::print_uchar_at:120 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:120 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:123 [ print_ulong_at::dw#0 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:123 [ print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:105 [ print_uchar_at::$2 ]
Statement [157] *print_char_at::at#2 = print_char_at::ch#2 [ ] ( print_ulong_at:13::print_uint_at:90::print_uchar_at:120::print_char_at:150 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:120::print_char_at:150 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:123::print_char_at:150 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:123::print_char_at:150 [ print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:120::print_char_at:154 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:120::print_char_at:154 [ print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:123::print_char_at:154 [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:123::print_char_at:154 [ ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:36 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
Statement [3] *D018 = main::toD0181_return#0 [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [9] clock::return#2 = clock::return#0 [ clock::return#2 ] (  [ clock::return#2 ] { { clock::return#0 = clock::return#2 } }  ) always clobbers reg byte a 
Statement [10] main::$4 = clock::return#2 [ main::$4 ] (  [ main::$4 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } }  ) always clobbers reg byte a 
Statement [11] main::cyclecount#0 = main::$4 - CLOCKS_PER_INIT [ main::cyclecount#0 ] (  [ main::cyclecount#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } }  ) always clobbers reg byte a 
Statement [12] print_ulong_at::dw#0 = main::cyclecount#0 [ print_ulong_at::dw#0 ] (  [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } }  ) always clobbers reg byte a 
Statement [15] *D018 = main::toD0182_return#0 [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [20] *init_font_hex::charset#2 = 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { }  ) always clobbers reg byte a reg byte y 
Statement [22] init_font_hex::$0 = init_font_hex::proto_hi#6[init_font_hex::i#2] << 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { }  ) always clobbers reg byte a 
Statement [23] init_font_hex::$1 = init_font_hex::proto_lo#4[init_font_hex::i#2] << 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] { }  ) always clobbers reg byte a 
Statement [29] init_font_hex::charset#2[init_font_hex::idx#2] = 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] { }  ) always clobbers reg byte a 
Statement [31] init_font_hex::charset#2[init_font_hex::idx#3] = 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { }  ) always clobbers reg byte a 
Statement [32] init_font_hex::proto_lo#1 = init_font_hex::proto_lo#4 + 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { }  ) always clobbers reg byte a 
Statement [33] init_font_hex::charset#0 = init_font_hex::charset#2 + 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { }  ) always clobbers reg byte a 
Statement [36] init_font_hex::proto_hi#1 = init_font_hex::proto_hi#6 + 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( init_font_hex:1 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] { }  ) always clobbers reg byte a 
Statement [40] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0 [ ] ( clock_start:4 [ ] { }  ) always clobbers reg byte a 
Statement [41] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( clock_start:4 [ ] { }  ) always clobbers reg byte a 
Statement [42] *CIA2_TIMER_AB = $ffffffff [ ] ( clock_start:4 [ ] { }  ) always clobbers reg byte a 
Statement [43] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( clock_start:4 [ ] { }  ) always clobbers reg byte a 
Statement [44] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START [ ] ( clock_start:4 [ ] { }  ) always clobbers reg byte a 
Statement [49] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 ] ( init_dist_screen:6 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 ] { }  ) always clobbers reg byte a 
Statement [51] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 ] ( init_dist_screen:6 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 ] { }  ) always clobbers reg byte a 
Statement [55] sqr::return#2 = sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 ] ( init_dist_screen:6 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } }  ) always clobbers reg byte a 
Statement [56] init_dist_screen::yds#0 = sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 ] ( init_dist_screen:6 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 ] { }  ) always clobbers reg byte a 
Statement [59] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 ] ( init_dist_screen:6 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 ] { }  ) always clobbers reg byte a 
Statement [60] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 ] ( init_dist_screen:6 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 ] { }  ) always clobbers reg byte a 
Statement [64] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 ] ( init_dist_screen:6 [ 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 ] { }  ) always clobbers reg byte a 
Statement [66] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 ] ( init_dist_screen:6 [ 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 ] { }  ) always clobbers reg byte a 
Statement [70] sqr::return#3 = sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 ] ( init_dist_screen:6 [ 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 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } }  ) always clobbers reg byte a 
Statement [71] init_dist_screen::xds#0 = sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 ] ( init_dist_screen:6 [ 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 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [72] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 ] ( init_dist_screen:6 [ 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 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [73] sqrt::val#0 = init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 ] ( init_dist_screen:6 [ 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 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [77] init_dist_screen::screen_topline#11[init_dist_screen::x#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ( init_dist_screen:6 [ 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 ] { }  ) always clobbers reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:77 [ init_dist_screen::d#0 ]
Statement [78] init_dist_screen::screen_bottomline#11[init_dist_screen::x#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ( init_dist_screen:6 [ 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 ] { }  ) always clobbers reg byte y 
Statement [79] init_dist_screen::screen_topline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ( init_dist_screen:6 [ 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 ] { }  ) always clobbers reg byte y 
Statement [80] init_dist_screen::screen_bottomline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 ] ( init_dist_screen:6 [ 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 ] { }  ) always clobbers reg byte y 
Statement [85] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0 [ ] ( clock:8 [ ] { { clock::return#0 = clock::return#2 } }  ) always clobbers reg byte a 
Statement [86] clock::return#0 = $ffffffff - *CIA2_TIMER_AB [ clock::return#0 ] ( clock:8 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } }  ) always clobbers reg byte a 
Statement [87] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START [ clock::return#0 ] ( clock:8 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } }  ) always clobbers reg byte a 
Statement [89] print_uint_at::w#0 = word1  print_ulong_at::dw#0 [ print_ulong_at::dw#0 print_uint_at::w#0 ] ( print_ulong_at:13 [ print_ulong_at::dw#0 print_uint_at::w#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } }  ) always clobbers reg byte a 
Statement [91] print_uint_at::w#1 = word0  print_ulong_at::dw#0 [ print_uint_at::w#1 ] ( print_ulong_at:13 [ print_uint_at::w#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } }  ) always clobbers reg byte a 
Statement [99] *init_squares::squares#2 = init_squares::sqr#2 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( init_dist_screen:6::init_squares:47 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { }  ) always clobbers reg byte a reg byte y 
Statement [100] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_UNSIGNED_INT [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( init_dist_screen:6::init_squares:47 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { }  ) always clobbers reg byte a 
Statement [101] init_squares::$3 = init_squares::i#2 << 1 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( init_dist_screen:6::init_squares:47 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { }  ) always clobbers reg byte a 
Statement [103] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4 [ init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( init_dist_screen:6::init_squares:47 [ init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { }  ) always clobbers reg byte a 
Statement [106] sqr::$0 = sqr::val#2 << 1 [ sqr::$0 ] ( init_dist_screen:6::sqr:54 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::$0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } }  init_dist_screen:6::sqr:69 [ 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::$0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } }  ) always clobbers reg byte a 
Statement [107] sqr::return#0 = SQUARES#0[sqr::$0] [ sqr::return#0 ] ( init_dist_screen:6::sqr:54 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } }  init_dist_screen:6::sqr:69 [ 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 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } }  ) always clobbers reg byte a 
Statement [109] bsearch16u::key#0 = sqrt::val#0 [ bsearch16u::key#0 ] ( init_dist_screen:6::sqrt:74 [ 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 bsearch16u::key#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 [111] bsearch16u::return#3 = bsearch16u::return#1 [ bsearch16u::return#3 ] ( init_dist_screen:6::sqrt:74 [ 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 bsearch16u::return#3 ] { { 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 [112] sqrt::found#0 = bsearch16u::return#3 [ sqrt::found#0 ] ( init_dist_screen:6::sqrt:74 [ 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::found#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [113] sqrt::$2 = sqrt::found#0 - SQUARES#0 [ sqrt::$2 ] ( init_dist_screen:6::sqrt:74 [ 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::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [114] sqrt::$1 = sqrt::$2 >> 1 [ sqrt::$1 ] ( init_dist_screen:6::sqrt:74 [ 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::$1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [119] print_uchar_at::at#0 = print_uint_at::at#2 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] ( print_ulong_at:13::print_uint_at:90 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:92 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } }  ) always clobbers reg byte a 
Statement [122] print_uchar_at::at#1 = print_uint_at::at#2 + 2 [ print_uchar_at::b#1 print_uchar_at::at#1 ] ( print_ulong_at:13::print_uint_at:90 [ print_ulong_at::dw#0 print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } }  print_ulong_at:13::print_uint_at:92 [ print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } }  ) always clobbers reg byte a 
Statement [130] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::items#2 ] { { 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 [131] bsearch16u::$2 = bsearch16u::items#2 - 1*SIZEOF_UNSIGNED_INT [ bsearch16u::$2 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::$2 ] { { 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 [135] bsearch16u::$6 = bsearch16u::num#3 >> 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { 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 [136] bsearch16u::$14 = bsearch16u::$6 << 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] { { 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 [137] bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#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 [138] 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 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#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 [139] if(bsearch16u::result#0!=0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#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 [140] bsearch16u::return#7 = bsearch16u::pivot#0 [ bsearch16u::return#7 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::return#7 ] { { 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 [141] if(bsearch16u::result#0<=0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#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 [142] bsearch16u::items#0 = bsearch16u::pivot#0 + 1*SIZEOF_UNSIGNED_INT [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#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 [147] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] ( print_ulong_at:13::print_uint_at:90::print_uchar_at:120 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:120 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:123 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:123 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } }  ) always clobbers reg byte a 
Statement [149] print_char_at::at#0 = print_uchar_at::at#2 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( print_ulong_at:13::print_uint_at:90::print_uchar_at:120 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:120 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:123 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:123 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } }  ) always clobbers reg byte a 
Statement [151] print_uchar_at::$2 = print_uchar_at::b#2 & $f [ print_uchar_at::at#2 print_uchar_at::$2 ] ( print_ulong_at:13::print_uint_at:90::print_uchar_at:120 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:120 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:123 [ print_ulong_at::dw#0 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:123 [ print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  ) always clobbers reg byte a 
Statement [152] print_char_at::at#1 = print_uchar_at::at#2 + 1 [ print_uchar_at::$2 print_char_at::at#1 ] ( print_ulong_at:13::print_uint_at:90::print_uchar_at:120 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:120 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:123 [ print_ulong_at::dw#0 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:123 [ print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  ) always clobbers reg byte a 
Statement [157] *print_char_at::at#2 = print_char_at::ch#2 [ ] ( print_ulong_at:13::print_uint_at:90::print_uchar_at:120::print_char_at:150 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:120::print_char_at:150 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:123::print_char_at:150 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:123::print_char_at:150 [ print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:120::print_char_at:154 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:120::print_char_at:154 [ print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:123::print_char_at:154 [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:123::print_char_at:154 [ ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  ) always clobbers reg byte a reg byte y 
Statement [3] *D018 = main::toD0181_return#0 [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [9] clock::return#2 = clock::return#0 [ clock::return#2 ] (  [ clock::return#2 ] { { clock::return#0 = clock::return#2 } }  ) always clobbers reg byte a 
Statement [10] main::$4 = clock::return#2 [ main::$4 ] (  [ main::$4 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } }  ) always clobbers reg byte a 
Statement [11] main::cyclecount#0 = main::$4 - CLOCKS_PER_INIT [ main::cyclecount#0 ] (  [ main::cyclecount#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } }  ) always clobbers reg byte a 
Statement [12] print_ulong_at::dw#0 = main::cyclecount#0 [ print_ulong_at::dw#0 ] (  [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } }  ) always clobbers reg byte a 
Statement [15] *D018 = main::toD0182_return#0 [ ] (  [ ] { }  ) always clobbers reg byte a 
Statement [20] *init_font_hex::charset#2 = 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { }  ) always clobbers reg byte a reg byte y 
Statement [22] init_font_hex::$0 = init_font_hex::proto_hi#6[init_font_hex::i#2] << 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { }  ) always clobbers reg byte a 
Statement [23] init_font_hex::$1 = init_font_hex::proto_lo#4[init_font_hex::i#2] << 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] { }  ) always clobbers reg byte a 
Statement [29] init_font_hex::charset#2[init_font_hex::idx#2] = 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] { }  ) always clobbers reg byte a 
Statement [31] init_font_hex::charset#2[init_font_hex::idx#3] = 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { }  ) always clobbers reg byte a 
Statement [32] init_font_hex::proto_lo#1 = init_font_hex::proto_lo#4 + 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { }  ) always clobbers reg byte a 
Statement [33] init_font_hex::charset#0 = init_font_hex::charset#2 + 8 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { }  ) always clobbers reg byte a 
Statement [36] init_font_hex::proto_hi#1 = init_font_hex::proto_hi#6 + 5 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] ( init_font_hex:1 [ init_font_hex::c#6 init_font_hex::charset#0 init_font_hex::proto_hi#1 ] { }  ) always clobbers reg byte a 
Statement [40] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0 [ ] ( clock_start:4 [ ] { }  ) always clobbers reg byte a 
Statement [41] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( clock_start:4 [ ] { }  ) always clobbers reg byte a 
Statement [42] *CIA2_TIMER_AB = $ffffffff [ ] ( clock_start:4 [ ] { }  ) always clobbers reg byte a 
Statement [43] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( clock_start:4 [ ] { }  ) always clobbers reg byte a 
Statement [44] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START [ ] ( clock_start:4 [ ] { }  ) always clobbers reg byte a 
Statement [49] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 ] ( init_dist_screen:6 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 ] { }  ) always clobbers reg byte a 
Statement [51] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 ] ( init_dist_screen:6 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 ] { }  ) always clobbers reg byte a 
Statement [55] sqr::return#2 = sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 ] ( init_dist_screen:6 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } }  ) always clobbers reg byte a 
Statement [56] init_dist_screen::yds#0 = sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 ] ( init_dist_screen:6 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 ] { }  ) always clobbers reg byte a 
Statement [59] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 ] ( init_dist_screen:6 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 ] { }  ) always clobbers reg byte a 
Statement [60] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 ] ( init_dist_screen:6 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 ] { }  ) always clobbers reg byte a 
Statement [64] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 ] ( init_dist_screen:6 [ 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 ] { }  ) always clobbers reg byte a 
Statement [66] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 ] ( init_dist_screen:6 [ 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 ] { }  ) always clobbers reg byte a 
Statement [70] sqr::return#3 = sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 ] ( init_dist_screen:6 [ 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 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } }  ) always clobbers reg byte a 
Statement [71] init_dist_screen::xds#0 = sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 ] ( init_dist_screen:6 [ 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 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [72] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 ] ( init_dist_screen:6 [ 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 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [73] sqrt::val#0 = init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 ] ( init_dist_screen:6 [ 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 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [77] init_dist_screen::screen_topline#11[init_dist_screen::x#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ( init_dist_screen:6 [ 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 ] { }  ) always clobbers reg byte y 
Statement [78] init_dist_screen::screen_bottomline#11[init_dist_screen::x#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ( init_dist_screen:6 [ 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 ] { }  ) always clobbers reg byte y 
Statement [79] init_dist_screen::screen_topline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 ] ( init_dist_screen:6 [ 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 ] { }  ) always clobbers reg byte y 
Statement [80] init_dist_screen::screen_bottomline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 ] ( init_dist_screen:6 [ 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 ] { }  ) always clobbers reg byte y 
Statement [85] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0 [ ] ( clock:8 [ ] { { clock::return#0 = clock::return#2 } }  ) always clobbers reg byte a 
Statement [86] clock::return#0 = $ffffffff - *CIA2_TIMER_AB [ clock::return#0 ] ( clock:8 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } }  ) always clobbers reg byte a 
Statement [87] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START [ clock::return#0 ] ( clock:8 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } }  ) always clobbers reg byte a 
Statement [89] print_uint_at::w#0 = word1  print_ulong_at::dw#0 [ print_ulong_at::dw#0 print_uint_at::w#0 ] ( print_ulong_at:13 [ print_ulong_at::dw#0 print_uint_at::w#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } }  ) always clobbers reg byte a 
Statement [91] print_uint_at::w#1 = word0  print_ulong_at::dw#0 [ print_uint_at::w#1 ] ( print_ulong_at:13 [ print_uint_at::w#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } }  ) always clobbers reg byte a 
Statement [99] *init_squares::squares#2 = init_squares::sqr#2 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( init_dist_screen:6::init_squares:47 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { }  ) always clobbers reg byte a reg byte y 
Statement [100] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_UNSIGNED_INT [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( init_dist_screen:6::init_squares:47 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { }  ) always clobbers reg byte a 
Statement [101] init_squares::$3 = init_squares::i#2 << 1 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( init_dist_screen:6::init_squares:47 [ init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { }  ) always clobbers reg byte a 
Statement [103] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4 [ init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( init_dist_screen:6::init_squares:47 [ init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { }  ) always clobbers reg byte a 
Statement [106] sqr::$0 = sqr::val#2 << 1 [ sqr::$0 ] ( init_dist_screen:6::sqr:54 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::$0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } }  init_dist_screen:6::sqr:69 [ 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::$0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } }  ) always clobbers reg byte a 
Statement [107] sqr::return#0 = SQUARES#0[sqr::$0] [ sqr::return#0 ] ( init_dist_screen:6::sqr:54 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } }  init_dist_screen:6::sqr:69 [ 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 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } }  ) always clobbers reg byte a 
Statement [109] bsearch16u::key#0 = sqrt::val#0 [ bsearch16u::key#0 ] ( init_dist_screen:6::sqrt:74 [ 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 bsearch16u::key#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 [111] bsearch16u::return#3 = bsearch16u::return#1 [ bsearch16u::return#3 ] ( init_dist_screen:6::sqrt:74 [ 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 bsearch16u::return#3 ] { { 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 [112] sqrt::found#0 = bsearch16u::return#3 [ sqrt::found#0 ] ( init_dist_screen:6::sqrt:74 [ 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::found#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [113] sqrt::$2 = sqrt::found#0 - SQUARES#0 [ sqrt::$2 ] ( init_dist_screen:6::sqrt:74 [ 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::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [114] sqrt::$1 = sqrt::$2 >> 1 [ sqrt::$1 ] ( init_dist_screen:6::sqrt:74 [ 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::$1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } }  ) always clobbers reg byte a 
Statement [119] print_uchar_at::at#0 = print_uint_at::at#2 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] ( print_ulong_at:13::print_uint_at:90 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:92 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } }  ) always clobbers reg byte a 
Statement [122] print_uchar_at::at#1 = print_uint_at::at#2 + 2 [ print_uchar_at::b#1 print_uchar_at::at#1 ] ( print_ulong_at:13::print_uint_at:90 [ print_ulong_at::dw#0 print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } }  print_ulong_at:13::print_uint_at:92 [ print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } }  ) always clobbers reg byte a 
Statement [130] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::items#2 ] { { 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 [131] bsearch16u::$2 = bsearch16u::items#2 - 1*SIZEOF_UNSIGNED_INT [ bsearch16u::$2 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::$2 ] { { 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 [135] bsearch16u::$6 = bsearch16u::num#3 >> 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { 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 [136] bsearch16u::$14 = bsearch16u::$6 << 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] { { 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 [137] bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#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 [138] 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 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#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 [139] if(bsearch16u::result#0!=0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#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 [140] bsearch16u::return#7 = bsearch16u::pivot#0 [ bsearch16u::return#7 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::return#7 ] { { 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 [141] if(bsearch16u::result#0<=0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#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 [142] bsearch16u::items#0 = bsearch16u::pivot#0 + 1*SIZEOF_UNSIGNED_INT [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( init_dist_screen:6::sqrt:74::bsearch16u:110 [ 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 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#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 [147] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] ( print_ulong_at:13::print_uint_at:90::print_uchar_at:120 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:120 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:123 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:123 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } }  ) always clobbers reg byte a 
Statement [149] print_char_at::at#0 = print_uchar_at::at#2 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( print_ulong_at:13::print_uint_at:90::print_uchar_at:120 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:120 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:123 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:123 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } }  ) always clobbers reg byte a 
Statement [151] print_uchar_at::$2 = print_uchar_at::b#2 & $f [ print_uchar_at::at#2 print_uchar_at::$2 ] ( print_ulong_at:13::print_uint_at:90::print_uchar_at:120 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:120 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:123 [ print_ulong_at::dw#0 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:123 [ print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  ) always clobbers reg byte a 
Statement [152] print_char_at::at#1 = print_uchar_at::at#2 + 1 [ print_uchar_at::$2 print_char_at::at#1 ] ( print_ulong_at:13::print_uint_at:90::print_uchar_at:120 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:120 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:123 [ print_ulong_at::dw#0 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:123 [ print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  ) always clobbers reg byte a 
Statement [157] *print_char_at::at#2 = print_char_at::ch#2 [ ] ( print_ulong_at:13::print_uint_at:90::print_uchar_at:120::print_char_at:150 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:120::print_char_at:150 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:123::print_char_at:150 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:123::print_char_at:150 [ print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:120::print_char_at:154 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:120::print_char_at:154 [ print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:90::print_uchar_at:123::print_char_at:154 [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  print_ulong_at:13::print_uint_at:92::print_uchar_at:123::print_char_at:154 [ ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } }  ) always clobbers reg byte a reg byte y 
Potential registers zp[2]:2 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] : zp[2]:2 , 
Potential registers zp[1]:4 [ init_font_hex::c#6 init_font_hex::c#1 ] : zp[1]:4 , reg byte x , 
Potential registers zp[2]:5 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] : zp[2]:5 , 
Potential registers zp[2]:9 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] : zp[2]:9 , 
Potential registers zp[1]:11 [ init_font_hex::c1#4 init_font_hex::c1#1 ] : zp[1]:11 , reg byte x , 
Potential registers zp[1]:12 [ init_font_hex::i#2 init_font_hex::i#1 ] : zp[1]:12 , reg byte x , reg byte y , 
Potential registers zp[1]:13 [ init_font_hex::idx#5 init_font_hex::idx#2 ] : zp[1]:13 , reg byte x , reg byte y , 
Potential registers zp[1]:14 [ init_dist_screen::y#10 init_dist_screen::y#1 ] : zp[1]:14 , reg byte x , 
Potential registers zp[2]:15 [ init_dist_screen::screen_topline#11 init_dist_screen::screen_topline#1 ] : zp[2]:15 , 
Potential registers zp[2]:17 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#1 ] : zp[2]:17 , 
Potential registers zp[1]:19 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] : zp[1]:19 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:20 [ init_dist_screen::x#2 init_dist_screen::x#1 ] : zp[1]:20 , reg byte x , 
Potential registers zp[1]:21 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] : zp[1]:21 , reg byte x , 
Potential registers zp[1]:22 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] : zp[1]:22 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:23 [ init_squares::i#2 init_squares::i#1 ] : zp[1]:23 , reg byte x , 
Potential registers zp[2]:24 [ init_squares::sqr#2 init_squares::sqr#1 ] : zp[2]:24 , 
Potential registers zp[2]:26 [ init_squares::squares#2 init_squares::squares#1 ] : zp[2]:26 , 
Potential registers zp[1]:28 [ sqr::val#2 sqr::val#1 sqr::val#0 ] : zp[1]:28 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:29 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] : zp[2]:29 , 
Potential registers zp[2]:31 [ print_uint_at::at#2 ] : zp[2]:31 , 
Potential registers zp[2]:33 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ] : zp[2]:33 , 
Potential registers zp[1]:35 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] : zp[1]:35 , reg byte x , 
Potential registers zp[1]:36 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ] : zp[1]:36 , reg byte x , 
Potential registers zp[2]:37 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] : zp[2]:37 , 
Potential registers zp[1]:39 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] : zp[1]:39 , reg byte x , reg byte y , 
Potential registers zp[2]:40 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] : zp[2]:40 , 
Potential registers zp[4]:42 [ clock::return#2 ] : zp[4]:42 , 
Potential registers zp[4]:46 [ main::$4 ] : zp[4]:46 , 
Potential registers zp[4]:50 [ main::cyclecount#0 ] : zp[4]:50 , 
Potential registers zp[4]:54 [ print_ulong_at::dw#0 ] : zp[4]:54 , 
Potential registers zp[1]:58 [ init_font_hex::$0 ] : zp[1]:58 , reg byte x , reg byte y , 
Potential registers zp[1]:59 [ init_font_hex::$1 ] : zp[1]:59 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:60 [ init_font_hex::$2 ] : zp[1]:60 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:61 [ init_font_hex::idx#3 ] : zp[1]:61 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:62 [ init_dist_screen::y2#0 ] : zp[1]:62 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:63 [ sqr::return#2 ] : zp[2]:63 , 
Potential registers zp[2]:65 [ init_dist_screen::yds#0 ] : zp[2]:65 , 
Potential registers zp[1]:67 [ init_dist_screen::x2#0 ] : zp[1]:67 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:68 [ sqr::return#3 ] : zp[2]:68 , 
Potential registers zp[2]:70 [ init_dist_screen::xds#0 ] : zp[2]:70 , 
Potential registers zp[2]:72 [ init_dist_screen::ds#0 ] : zp[2]:72 , 
Potential registers zp[2]:74 [ sqrt::val#0 ] : zp[2]:74 , 
Potential registers zp[1]:76 [ sqrt::return#2 ] : zp[1]:76 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:77 [ init_dist_screen::d#0 ] : zp[1]:77 , reg byte a , reg byte x , 
Potential registers zp[4]:78 [ clock::return#0 ] : zp[4]:78 , 
Potential registers zp[1]:82 [ init_squares::$3 ] : zp[1]:82 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:83 [ init_squares::$4 ] : zp[1]:83 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:84 [ sqr::$0 ] : zp[1]:84 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:85 [ sqr::return#0 ] : zp[2]:85 , 
Potential registers zp[2]:87 [ bsearch16u::key#0 ] : zp[2]:87 , 
Potential registers zp[2]:89 [ bsearch16u::return#3 ] : zp[2]:89 , 
Potential registers zp[2]:91 [ sqrt::found#0 ] : zp[2]:91 , 
Potential registers zp[2]:93 [ sqrt::$2 ] : zp[2]:93 , 
Potential registers zp[2]:95 [ sqrt::$1 ] : zp[2]:95 , 
Potential registers zp[1]:97 [ sqrt::return#0 ] : zp[1]:97 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:98 [ bsearch16u::$6 ] : zp[1]:98 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:99 [ bsearch16u::$14 ] : zp[1]:99 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:100 [ bsearch16u::pivot#0 ] : zp[2]:100 , 
Potential registers zp[2]:102 [ bsearch16u::result#0 ] : zp[2]:102 , 
Potential registers zp[1]:104 [ print_uchar_at::$0 ] : zp[1]:104 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:105 [ print_uchar_at::$2 ] : zp[1]:105 , reg byte x , reg byte y , 

REGISTER UPLIFT SCOPES
Uplift Scope [bsearch16u] 755,555,563.11: zp[1]:35 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] 284,136,677.83: zp[2]:33 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ] 200,000,002: zp[1]:98 [ bsearch16u::$6 ] 200,000,002: zp[1]:99 [ bsearch16u::$14 ] 150,000,001.5: zp[2]:102 [ bsearch16u::result#0 ] 50,025,000.75: zp[2]:100 [ bsearch16u::pivot#0 ] 20,002: zp[2]:89 [ bsearch16u::return#3 ] 7,857.29: zp[2]:87 [ bsearch16u::key#0 ] 
Uplift Scope [init_font_hex] 21,668.83: zp[1]:12 [ init_font_hex::i#2 init_font_hex::i#1 ] 20,002: zp[1]:59 [ init_font_hex::$1 ] 20,002: zp[1]:60 [ init_font_hex::$2 ] 11,501.6: zp[1]:13 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 10,001: zp[1]:58 [ init_font_hex::$0 ] 2,002: zp[1]:61 [ init_font_hex::idx#3 ] 1,634.97: zp[1]:11 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 1,631.57: zp[2]:5 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 1,423.81: zp[2]:9 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 634.17: zp[2]:2 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 162.13: zp[1]:4 [ init_font_hex::c#6 init_font_hex::c#1 ] 
Uplift Scope [sqrt] 20,002: zp[2]:91 [ sqrt::found#0 ] 20,002: zp[2]:93 [ sqrt::$2 ] 11,002: zp[2]:74 [ sqrt::val#0 ] 10,001: zp[2]:95 [ sqrt::$1 ] 3,667.33: zp[1]:97 [ sqrt::return#0 ] 2,002: zp[1]:76 [ sqrt::return#2 ] 
Uplift Scope [sqr] 20,002: zp[1]:84 [ sqr::$0 ] 13,307: zp[1]:28 [ sqr::val#2 sqr::val#1 sqr::val#0 ] 2,775.75: zp[2]:85 [ sqr::return#0 ] 2,002: zp[2]:68 [ sqr::return#3 ] 202: zp[2]:63 [ sqr::return#2 ] 
Uplift Scope [print_char_at] 15,006: zp[1]:39 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] 15,006: zp[2]:40 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] 
Uplift Scope [init_dist_screen] 7,007: zp[1]:22 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] 2,192.67: zp[1]:21 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 2,002: zp[1]:67 [ init_dist_screen::x2#0 ] 2,002: zp[2]:70 [ init_dist_screen::xds#0 ] 2,002: zp[2]:72 [ init_dist_screen::ds#0 ] 1,301.3: zp[1]:20 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 1,251.25: zp[1]:77 [ init_dist_screen::d#0 ] 707: zp[1]:19 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 202: zp[1]:62 [ init_dist_screen::y2#0 ] 160.41: zp[1]:14 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 134.12: zp[2]:17 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#1 ] 119.38: zp[2]:15 [ init_dist_screen::screen_topline#11 init_dist_screen::screen_topline#1 ] 47.91: zp[2]:65 [ init_dist_screen::yds#0 ] 
Uplift Scope [init_squares] 2,574: zp[1]:23 [ init_squares::i#2 init_squares::i#1 ] 2,002: zp[1]:82 [ init_squares::$3 ] 2,002: zp[1]:83 [ init_squares::$4 ] 1,501.5: zp[2]:24 [ init_squares::sqr#2 init_squares::sqr#1 ] 1,401.4: zp[2]:26 [ init_squares::squares#2 init_squares::squares#1 ] 
Uplift Scope [print_uchar_at] 2,002: zp[1]:104 [ print_uchar_at::$0 ] 1,001: zp[1]:105 [ print_uchar_at::$2 ] 771.33: zp[2]:37 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] 642.8: zp[1]:36 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ] 
Uplift Scope [print_uint_at] 100: zp[2]:29 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] 40.4: zp[2]:31 [ print_uint_at::at#2 ] 
Uplift Scope [print_ulong_at] 8: zp[4]:54 [ print_ulong_at::dw#0 ] 
Uplift Scope [main] 4: zp[4]:46 [ main::$4 ] 4: zp[4]:50 [ main::cyclecount#0 ] 
Uplift Scope [clock] 4: zp[4]:42 [ clock::return#2 ] 3.25: zp[4]:78 [ clock::return#0 ] 
Uplift Scope [malloc] 
Uplift Scope [RADIX] 
Uplift Scope [MOS6526_CIA] 
Uplift Scope [MOS6569_VICII] 
Uplift Scope [MOS6581_SID] 
Uplift Scope [clock_start] 
Uplift Scope [] 

Uplifting [bsearch16u] best 260751 combination reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] zp[2]:33 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ] reg byte a [ bsearch16u::$6 ] reg byte a [ bsearch16u::$14 ] zp[2]:102 [ bsearch16u::result#0 ] zp[2]:100 [ bsearch16u::pivot#0 ] zp[2]:89 [ bsearch16u::return#3 ] zp[2]:87 [ bsearch16u::key#0 ] 
Uplifting [init_font_hex] best 241751 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp[1]:13 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp[1]:58 [ init_font_hex::$0 ] zp[1]:61 [ init_font_hex::idx#3 ] zp[1]:11 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp[2]:5 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp[2]:9 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp[2]:2 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp[1]:4 [ init_font_hex::c#6 init_font_hex::c#1 ] 
Limited combination testing to 100 combinations of 6912 possible.
Uplifting [sqrt] best 240848 combination zp[2]:91 [ sqrt::found#0 ] zp[2]:93 [ sqrt::$2 ] zp[2]:74 [ sqrt::val#0 ] zp[2]:95 [ sqrt::$1 ] reg byte a [ sqrt::return#0 ] reg byte a [ sqrt::return#2 ] 
Uplifting [sqr] best 240511 combination reg byte a [ sqr::$0 ] reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ] zp[2]:85 [ sqr::return#0 ] zp[2]:68 [ sqr::return#3 ] zp[2]:63 [ sqr::return#2 ] 
Uplifting [print_char_at] best 240504 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:40 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] 
Uplifting [init_dist_screen] best 237304 combination reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] zp[1]:21 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] reg byte a [ init_dist_screen::x2#0 ] zp[2]:70 [ init_dist_screen::xds#0 ] zp[2]:72 [ init_dist_screen::ds#0 ] zp[1]:20 [ init_dist_screen::x#2 init_dist_screen::x#1 ] reg byte a [ init_dist_screen::d#0 ] zp[1]:19 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] zp[1]:62 [ init_dist_screen::y2#0 ] zp[1]:14 [ init_dist_screen::y#10 init_dist_screen::y#1 ] zp[2]:17 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#1 ] zp[2]:15 [ init_dist_screen::screen_topline#11 init_dist_screen::screen_topline#1 ] zp[2]:65 [ init_dist_screen::yds#0 ] 
Limited combination testing to 100 combinations of 6144 possible.
Uplifting [init_squares] best 237104 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]:24 [ init_squares::sqr#2 init_squares::sqr#1 ] zp[2]:26 [ init_squares::squares#2 init_squares::squares#1 ] 
Uplifting [print_uchar_at] best 237096 combination reg byte a [ print_uchar_at::$0 ] reg byte y [ print_uchar_at::$2 ] zp[2]:37 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] zp[1]:36 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ] 
Uplifting [print_uint_at] best 237096 combination zp[2]:29 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] zp[2]:31 [ print_uint_at::at#2 ] 
Uplifting [print_ulong_at] best 237096 combination zp[4]:54 [ print_ulong_at::dw#0 ] 
Uplifting [main] best 237096 combination zp[4]:46 [ main::$4 ] zp[4]:50 [ main::cyclecount#0 ] 
Uplifting [clock] best 237096 combination zp[4]:42 [ clock::return#2 ] zp[4]:78 [ clock::return#0 ] 
Uplifting [malloc] best 237096 combination 
Uplifting [RADIX] best 237096 combination 
Uplifting [MOS6526_CIA] best 237096 combination 
Uplifting [MOS6569_VICII] best 237096 combination 
Uplifting [MOS6581_SID] best 237096 combination 
Uplifting [clock_start] best 237096 combination 
Uplifting [] best 237096 combination 
Attempting to uplift remaining variables inzp[1]:13 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
Uplifting [init_font_hex] best 237096 combination zp[1]:13 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 
Attempting to uplift remaining variables inzp[1]:58 [ init_font_hex::$0 ]
Uplifting [init_font_hex] best 237096 combination zp[1]:58 [ init_font_hex::$0 ] 
Attempting to uplift remaining variables inzp[1]:21 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Uplifting [init_dist_screen] best 237096 combination zp[1]:21 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 
Attempting to uplift remaining variables inzp[1]:61 [ init_font_hex::idx#3 ]
Uplifting [init_font_hex] best 236496 combination reg byte y [ init_font_hex::idx#3 ] 
Attempting to uplift remaining variables inzp[1]:11 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
Uplifting [init_font_hex] best 236496 combination zp[1]:11 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 
Attempting to uplift remaining variables inzp[1]:20 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Uplifting [init_dist_screen] best 236496 combination zp[1]:20 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 
Attempting to uplift remaining variables inzp[1]:19 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
Uplifting [init_dist_screen] best 236426 combination reg byte a [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 
Attempting to uplift remaining variables inzp[1]:36 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
Uplifting [print_uchar_at] best 236426 combination zp[1]:36 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ] 
Attempting to uplift remaining variables inzp[1]:62 [ init_dist_screen::y2#0 ]
Uplifting [init_dist_screen] best 236326 combination reg byte a [ init_dist_screen::y2#0 ] 
Attempting to uplift remaining variables inzp[1]:4 [ init_font_hex::c#6 init_font_hex::c#1 ]
Uplifting [init_font_hex] best 236326 combination zp[1]:4 [ init_font_hex::c#6 init_font_hex::c#1 ] 
Attempting to uplift remaining variables inzp[1]:14 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
Uplifting [init_dist_screen] best 236326 combination zp[1]:14 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 
Coalescing zero page register [ zp[2]:31 [ print_uint_at::at#2 ] ] with [ zp[2]:37 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] ] - score: 2
Coalescing zero page register [ zp[2]:33 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ] ] with [ zp[2]:89 [ bsearch16u::return#3 ] ] - score: 1
Coalescing zero page register [ zp[4]:42 [ clock::return#2 ] ] with [ zp[4]:46 [ main::$4 ] ] - score: 1
Coalescing zero page register [ zp[4]:42 [ clock::return#2 main::$4 ] ] with [ zp[4]:78 [ clock::return#0 ] ] - score: 1
Coalescing zero page register [ zp[4]:50 [ main::cyclecount#0 ] ] with [ zp[4]:54 [ print_ulong_at::dw#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:63 [ sqr::return#2 ] ] with [ zp[2]:65 [ init_dist_screen::yds#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:68 [ sqr::return#3 ] ] with [ zp[2]:70 [ init_dist_screen::xds#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:68 [ sqr::return#3 init_dist_screen::xds#0 ] ] with [ zp[2]:85 [ sqr::return#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:72 [ init_dist_screen::ds#0 ] ] with [ zp[2]:74 [ sqrt::val#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:91 [ sqrt::found#0 ] ] with [ zp[2]:93 [ sqrt::$2 ] ] - score: 1
Coalescing zero page register [ zp[2]:33 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 ] ] with [ zp[2]:91 [ sqrt::found#0 sqrt::$2 ] ] - score: 1
Coalescing zero page register [ zp[4]:42 [ clock::return#2 main::$4 clock::return#0 ] ] with [ zp[4]:50 [ main::cyclecount#0 print_ulong_at::dw#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:68 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 ] ] with [ zp[2]:72 [ init_dist_screen::ds#0 sqrt::val#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:33 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 ] ] with [ zp[2]:95 [ sqrt::$1 ] ] - score: 1
Coalescing zero page register [ zp[2]:68 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 ] ] with [ zp[2]:87 [ bsearch16u::key#0 ] ] - score: 1
Coalescing zero page register [ zp[1]:14 [ init_dist_screen::y#10 init_dist_screen::y#1 ] ] with [ zp[1]:4 [ init_font_hex::c#6 init_font_hex::c#1 ] ]
Coalescing zero page register [ zp[2]:15 [ init_dist_screen::screen_topline#11 init_dist_screen::screen_topline#1 ] ] with [ zp[2]:2 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] ]
Coalescing zero page register [ zp[2]:17 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#1 ] ] with [ zp[2]:5 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] ]
Coalescing zero page register [ zp[1]:20 [ init_dist_screen::x#2 init_dist_screen::x#1 ] ] with [ zp[1]:11 [ init_font_hex::c1#4 init_font_hex::c1#1 ] ]
Coalescing zero page register [ zp[1]:21 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] ] with [ zp[1]:13 [ init_font_hex::idx#5 init_font_hex::idx#2 ] ]
Coalescing zero page register [ zp[2]:24 [ init_squares::sqr#2 init_squares::sqr#1 ] ] with [ zp[2]:9 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] ]
Coalescing zero page register [ zp[2]:29 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] ] with [ zp[2]:26 [ init_squares::squares#2 init_squares::squares#1 ] ]
Coalescing zero page register [ zp[2]:33 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 ] ] with [ zp[2]:31 [ print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] ]
Coalescing zero page register [ zp[1]:58 [ init_font_hex::$0 ] ] with [ zp[1]:36 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ] ]
Coalescing zero page register [ zp[2]:63 [ sqr::return#2 init_dist_screen::yds#0 ] ] with [ zp[2]:40 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] ]
Coalescing zero page register [ zp[2]:33 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] ] with [ zp[2]:24 [ init_squares::sqr#2 init_squares::sqr#1 init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] ]
Coalescing zero page register [ zp[2]:68 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 ] ] with [ zp[2]:29 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 init_squares::squares#2 init_squares::squares#1 ] ]
Allocated (was zp[1]:14) zp[1]:2 [ init_dist_screen::y#10 init_dist_screen::y#1 init_font_hex::c#6 init_font_hex::c#1 ]
Allocated (was zp[2]:15) zp[2]:3 [ init_dist_screen::screen_topline#11 init_dist_screen::screen_topline#1 init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
Allocated (was zp[2]:17) zp[2]:5 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#1 init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
Allocated (was zp[1]:20) zp[1]:7 [ init_dist_screen::x#2 init_dist_screen::x#1 init_font_hex::c1#4 init_font_hex::c1#1 ]
Allocated (was zp[1]:21) zp[1]:9 [ init_dist_screen::xb#2 init_dist_screen::xb#1 init_font_hex::idx#5 init_font_hex::idx#2 ]
Allocated (was zp[2]:33) zp[2]:10 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 init_squares::sqr#2 init_squares::sqr#1 init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
Allocated (was zp[4]:42) zp[4]:12 [ clock::return#2 main::$4 clock::return#0 main::cyclecount#0 print_ulong_at::dw#0 ]
Allocated (was zp[1]:58) zp[1]:16 [ init_font_hex::$0 print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
Allocated (was zp[2]:63) zp[2]:17 [ sqr::return#2 init_dist_screen::yds#0 print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
Allocated (was zp[2]:68) zp[2]:19 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 init_squares::squares#2 init_squares::squares#1 ]
Allocated (was zp[2]:100) zp[2]:21 [ bsearch16u::pivot#0 ]
Allocated (was zp[2]:102) zp[2]:23 [ bsearch16u::result#0 ]

ASSEMBLER BEFORE OPTIMIZATION
  // File Comments
// Calculate the distance to the center of the screen - and show it using font-hex
  // Upstart
  // Commodore 64 PRG executable file
.file [name="screen-center-distance.prg", type="prg", segments="Program"]
.segmentdef Program [segments="Basic, Code, Data"]
.segmentdef Basic [start=$0801]
.segmentdef Code [start=$80d]
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
  // Global Constants & labels
  .const SIZEOF_UNSIGNED_INT = 2
  /// Timer Control - Start/stop timer (0:stop, 1: start)
  .const CIA_TIMER_CONTROL_START = 1
  /// Timer B Control - Timer counts (00:system cycles, 01: CNT pulses, 10: timer A underflow, 11: time A underflow while CNT is high)
  .const CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = $40
  /// Clock cycles used to start & read the cycle clock by calling clock_start() and clock() once. Can be subtracted when calculating the number of cycles used by a routine.
  /// To make precise cycle measurements interrupts and the display must be disabled so neither steals any cycles from the code.
  .const CLOCKS_PER_INIT = $12
  .const OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
  .const OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
  // The number of squares to pre-calculate. Limits what values sqr() can calculate and the result of sqrt()
  .const NUM_SQUARES = $30
  /// $D018 VIC-II base addresses
  // @see #VICII_MEMORY
  .label D018 = $d018
  /// The CIA#2: Serial bus, RS-232, VIC memory bank
  .label CIA2 = $dd00
  /// CIA#2 timer A&B as one single 32-bit value
  .label CIA2_TIMER_AB = $dd04
  .label CHARSET = $2000
  .label SCREEN = $2800
  // Top of the heap used by malloc()
  .label HEAP_TOP = $a000
  // Squares for each char value SQUARES[i] = i*i
  // Initialized by init_squares()
  .label SQUARES = malloc.return
.segment Code
  // main
main: {
    .const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
    .const toD0182_return = (>(BASE_SCREEN&$3fff)*4)|(>BASE_CHARSET)/4&$f
    .label BASE_SCREEN = $400
    .label BASE_CHARSET = $1000
    .label __4 = $c
    .label cyclecount = $c
    // [1] call init_font_hex
    // [17] phi from main to init_font_hex [phi:main->init_font_hex]
  init_font_hex_from_main:
    jsr init_font_hex
    // [2] phi from main to main::toD0181 [phi:main->main::toD0181]
  toD0181_from_main:
    jmp toD0181
    // main::toD0181
  toD0181:
    jmp __b1
    // main::@1
  __b1:
    // [3] *D018 = main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
    // [4] call clock_start
    jsr clock_start
    // [5] phi from main::@1 to main::@3 [phi:main::@1->main::@3]
  __b3_from___b1:
    jmp __b3
    // main::@3
  __b3:
    // [6] call init_dist_screen
    // [46] phi from main::@3 to init_dist_screen [phi:main::@3->init_dist_screen]
  init_dist_screen_from___b3:
    jsr init_dist_screen
    // [7] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
  __b4_from___b3:
    jmp __b4
    // main::@4
  __b4:
    // [8] call clock
    jsr clock
    // [9] clock::return#2 = clock::return#0
    jmp __b5
    // main::@5
  __b5:
    // [10] main::$4 = clock::return#2
    // [11] main::cyclecount#0 = main::$4 - CLOCKS_PER_INIT -- vduz1=vduz1_minus_vduc1 
    lda.z cyclecount
    sec
    sbc #<CLOCKS_PER_INIT
    sta.z cyclecount
    lda.z cyclecount+1
    sbc #>CLOCKS_PER_INIT
    sta.z cyclecount+1
    lda.z cyclecount+2
    sbc #<CLOCKS_PER_INIT>>$10
    sta.z cyclecount+2
    lda.z cyclecount+3
    sbc #>CLOCKS_PER_INIT>>$10
    sta.z cyclecount+3
    // [12] print_ulong_at::dw#0 = main::cyclecount#0
    // [13] call print_ulong_at
    jsr print_ulong_at
    // [14] phi from main::@5 to main::toD0182 [phi:main::@5->main::toD0182]
  toD0182_from___b5:
    jmp toD0182
    // main::toD0182
  toD0182:
    jmp __b2
    // main::@2
  __b2:
    // [15] *D018 = main::toD0182_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0182_return
    sta D018
    jmp __breturn
    // main::@return
  __breturn:
    // [16] return 
    rts
}
  // init_font_hex
// Make charset from proto chars
// void init_font_hex(__zp(5) char *charset)
init_font_hex: {
    .label __0 = $10
    .label idx = 9
    .label proto_lo = $a
    .label charset = 5
    .label c1 = 7
    .label proto_hi = 3
    .label c = 2
    // [18] phi from init_font_hex to init_font_hex::@1 [phi:init_font_hex->init_font_hex::@1]
  __b1_from_init_font_hex:
    // [18] phi init_font_hex::c#6 = 0 [phi:init_font_hex->init_font_hex::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z c
    // [18] phi init_font_hex::proto_hi#6 = FONT_HEX_PROTO [phi:init_font_hex->init_font_hex::@1#1] -- pbuz1=pbuc1 
    lda #<FONT_HEX_PROTO
    sta.z proto_hi
    lda #>FONT_HEX_PROTO
    sta.z proto_hi+1
    // [18] phi init_font_hex::charset#5 = CHARSET [phi:init_font_hex->init_font_hex::@1#2] -- pbuz1=pbuc1 
    lda #<CHARSET
    sta.z charset
    lda #>CHARSET
    sta.z charset+1
    jmp __b1
    // [18] phi from init_font_hex::@5 to init_font_hex::@1 [phi:init_font_hex::@5->init_font_hex::@1]
  __b1_from___b5:
    // [18] phi init_font_hex::c#6 = init_font_hex::c#1 [phi:init_font_hex::@5->init_font_hex::@1#0] -- register_copy 
    // [18] phi init_font_hex::proto_hi#6 = init_font_hex::proto_hi#1 [phi:init_font_hex::@5->init_font_hex::@1#1] -- register_copy 
    // [18] phi init_font_hex::charset#5 = init_font_hex::charset#0 [phi:init_font_hex::@5->init_font_hex::@1#2] -- register_copy 
    jmp __b1
    // init_font_hex::@1
  __b1:
    // [19] phi from init_font_hex::@1 to init_font_hex::@2 [phi:init_font_hex::@1->init_font_hex::@2]
  __b2_from___b1:
    // [19] phi init_font_hex::c1#4 = 0 [phi:init_font_hex::@1->init_font_hex::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z c1
    // [19] phi init_font_hex::proto_lo#4 = FONT_HEX_PROTO [phi:init_font_hex::@1->init_font_hex::@2#1] -- pbuz1=pbuc1 
    lda #<FONT_HEX_PROTO
    sta.z proto_lo
    lda #>FONT_HEX_PROTO
    sta.z proto_lo+1
    // [19] phi init_font_hex::charset#2 = init_font_hex::charset#5 [phi:init_font_hex::@1->init_font_hex::@2#2] -- register_copy 
    jmp __b2
    // [19] phi from init_font_hex::@4 to init_font_hex::@2 [phi:init_font_hex::@4->init_font_hex::@2]
  __b2_from___b4:
    // [19] phi init_font_hex::c1#4 = init_font_hex::c1#1 [phi:init_font_hex::@4->init_font_hex::@2#0] -- register_copy 
    // [19] phi init_font_hex::proto_lo#4 = init_font_hex::proto_lo#1 [phi:init_font_hex::@4->init_font_hex::@2#1] -- register_copy 
    // [19] phi init_font_hex::charset#2 = init_font_hex::charset#0 [phi:init_font_hex::@4->init_font_hex::@2#2] -- register_copy 
    jmp __b2
    // init_font_hex::@2
  __b2:
    // [20] *init_font_hex::charset#2 = 0 -- _deref_pbuz1=vbuc1 
    lda #0
    ldy #0
    sta (charset),y
    // [21] phi from init_font_hex::@2 to init_font_hex::@3 [phi:init_font_hex::@2->init_font_hex::@3]
  __b3_from___b2:
    // [21] phi init_font_hex::idx#5 = 1 [phi:init_font_hex::@2->init_font_hex::@3#0] -- vbuz1=vbuc1 
    lda #1
    sta.z idx
    // [21] phi init_font_hex::i#2 = 0 [phi:init_font_hex::@2->init_font_hex::@3#1] -- vbuxx=vbuc1 
    ldx #0
    jmp __b3
    // [21] phi from init_font_hex::@3 to init_font_hex::@3 [phi:init_font_hex::@3->init_font_hex::@3]
  __b3_from___b3:
    // [21] phi init_font_hex::idx#5 = init_font_hex::idx#2 [phi:init_font_hex::@3->init_font_hex::@3#0] -- register_copy 
    // [21] phi init_font_hex::i#2 = init_font_hex::i#1 [phi:init_font_hex::@3->init_font_hex::@3#1] -- register_copy 
    jmp __b3
    // init_font_hex::@3
  __b3:
    // [22] init_font_hex::$0 = init_font_hex::proto_hi#6[init_font_hex::i#2] << 4 -- vbuz1=pbuz2_derefidx_vbuxx_rol_4 
    txa
    tay
    lda (proto_hi),y
    asl
    asl
    asl
    asl
    sta.z __0
    // [23] init_font_hex::$1 = init_font_hex::proto_lo#4[init_font_hex::i#2] << 1 -- vbuaa=pbuz1_derefidx_vbuxx_rol_1 
    txa
    tay
    lda (proto_lo),y
    asl
    // [24] init_font_hex::$2 = init_font_hex::$0 | init_font_hex::$1 -- vbuaa=vbuz1_bor_vbuaa 
    ora.z __0
    // [25] init_font_hex::charset#2[init_font_hex::idx#5] = init_font_hex::$2 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy.z idx
    sta (charset),y
    // [26] init_font_hex::idx#2 = ++ init_font_hex::idx#5 -- vbuz1=_inc_vbuz1 
    inc.z idx
    // [27] init_font_hex::i#1 = ++ init_font_hex::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [28] if(init_font_hex::i#1!=5) goto init_font_hex::@3 -- vbuxx_neq_vbuc1_then_la1 
    cpx #5
    bne __b3_from___b3
    jmp __b4
    // init_font_hex::@4
  __b4:
    // [29] init_font_hex::charset#2[init_font_hex::idx#2] = 0 -- pbuz1_derefidx_vbuz2=vbuc1 
    lda #0
    ldy.z idx
    sta (charset),y
    // [30] init_font_hex::idx#3 = ++ init_font_hex::idx#2 -- vbuyy=_inc_vbuz1 
    ldy.z idx
    iny
    // [31] init_font_hex::charset#2[init_font_hex::idx#3] = 0 -- pbuz1_derefidx_vbuyy=vbuc1 
    lda #0
    sta (charset),y
    // [32] init_font_hex::proto_lo#1 = init_font_hex::proto_lo#4 + 5 -- pbuz1=pbuz1_plus_vbuc1 
    lda #5
    clc
    adc.z proto_lo
    sta.z proto_lo
    bcc !+
    inc.z proto_lo+1
  !:
    // [33] init_font_hex::charset#0 = init_font_hex::charset#2 + 8 -- pbuz1=pbuz1_plus_vbuc1 
    lda #8
    clc
    adc.z charset
    sta.z charset
    bcc !+
    inc.z charset+1
  !:
    // [34] init_font_hex::c1#1 = ++ init_font_hex::c1#4 -- vbuz1=_inc_vbuz1 
    inc.z c1
    // [35] if(init_font_hex::c1#1!=$10) goto init_font_hex::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda #$10
    cmp.z c1
    bne __b2_from___b4
    jmp __b5
    // init_font_hex::@5
  __b5:
    // [36] init_font_hex::proto_hi#1 = init_font_hex::proto_hi#6 + 5 -- pbuz1=pbuz1_plus_vbuc1 
    lda #5
    clc
    adc.z proto_hi
    sta.z proto_hi
    bcc !+
    inc.z proto_hi+1
  !:
    // [37] init_font_hex::c#1 = ++ init_font_hex::c#6 -- vbuz1=_inc_vbuz1 
    inc.z c
    // [38] if(init_font_hex::c#1!=$10) goto init_font_hex::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$10
    cmp.z c
    bne __b1_from___b5
    jmp __breturn
    // init_font_hex::@return
  __breturn:
    // [39] return 
    rts
}
  // clock_start
// Reset & start the processor clock time. The value can be read using clock().
// This uses CIA #2 Timer A+B on the C64
clock_start: {
    // [40] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0 -- _deref_pbuc1=vbuc2 
    // Setup CIA#2 timer A to count (down) CPU cycles
    lda #0
    sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
    // [41] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A -- _deref_pbuc1=vbuc2 
    lda #CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
    sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL
    // [42] *CIA2_TIMER_AB = $ffffffff -- _deref_pduc1=vduc2 
    lda #<$ffffffff
    sta CIA2_TIMER_AB
    lda #>$ffffffff
    sta CIA2_TIMER_AB+1
    lda #<$ffffffff>>$10
    sta CIA2_TIMER_AB+2
    lda #>$ffffffff>>$10
    sta CIA2_TIMER_AB+3
    // [43] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A -- _deref_pbuc1=vbuc2 
    lda #CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
    sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL
    // [44] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START -- _deref_pbuc1=vbuc2 
    lda #CIA_TIMER_CONTROL_START
    sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
    jmp __breturn
    // clock_start::@return
  __breturn:
    // [45] return 
    rts
}
  // init_dist_screen
// Populates 1000 bytes (a screen) with values representing the distance to the center.
// The actual value stored is distance*2 to increase precision
// void init_dist_screen(char *screen)
init_dist_screen: {
    .label yds = $11
    .label screen_topline = 3
    .label screen_bottomline = 5
    .label y = 2
    .label xds = $13
    .label ds = $13
    .label x = 7
    .label xb = 9
    // [47] call init_squares
    // [94] phi from init_dist_screen to init_squares [phi:init_dist_screen->init_squares]
  init_squares_from_init_dist_screen:
    jsr init_squares
    // [48] phi from init_dist_screen to init_dist_screen::@1 [phi:init_dist_screen->init_dist_screen::@1]
  __b1_from_init_dist_screen:
    // [48] phi init_dist_screen::screen_bottomline#11 = SCREEN+(unsigned int)$28*$18 [phi:init_dist_screen->init_dist_screen::@1#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$18
    sta.z screen_bottomline
    lda #>SCREEN+$28*$18
    sta.z screen_bottomline+1
    // [48] phi init_dist_screen::screen_topline#11 = SCREEN [phi:init_dist_screen->init_dist_screen::@1#1] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta.z screen_topline
    lda #>SCREEN
    sta.z screen_topline+1
    // [48] phi init_dist_screen::y#10 = 0 [phi:init_dist_screen->init_dist_screen::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta.z y
    jmp __b1
    // [48] phi from init_dist_screen::@7 to init_dist_screen::@1 [phi:init_dist_screen::@7->init_dist_screen::@1]
  __b1_from___b7:
    // [48] 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 
    // [48] 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 
    // [48] 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:
    // [49] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z y
    asl
    // [50] 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:
    // [51] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    sec
    adc #$18
    // [52] 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:
    // [52] 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:
    // [53] sqr::val#0 = init_dist_screen::yd#0
    // [54] call sqr
    // [105] phi from init_dist_screen::@4 to sqr [phi:init_dist_screen::@4->sqr]
  sqr_from___b4:
    // [105] phi sqr::val#2 = sqr::val#0 [phi:init_dist_screen::@4->sqr#0] -- register_copy 
    jsr sqr
    // [55] 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 __b11
    // init_dist_screen::@11
  __b11:
    // [56] init_dist_screen::yds#0 = sqr::return#2
    // [57] phi from init_dist_screen::@11 to init_dist_screen::@5 [phi:init_dist_screen::@11->init_dist_screen::@5]
  __b5_from___b11:
    // [57] phi init_dist_screen::xb#2 = $27 [phi:init_dist_screen::@11->init_dist_screen::@5#0] -- vbuz1=vbuc1 
    lda #$27
    sta.z xb
    // [57] phi init_dist_screen::x#2 = 0 [phi:init_dist_screen::@11->init_dist_screen::@5#1] -- vbuz1=vbuc1 
    lda #0
    sta.z x
    jmp __b5
    // init_dist_screen::@5
  __b5:
    // [58] 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:
    // [59] 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
  !:
    // [60] 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
    // [61] init_dist_screen::y#1 = ++ init_dist_screen::y#10 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [62] 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:
    // [63] return 
    rts
    // init_dist_screen::@6
  __b6:
    // [64] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1 -- vbuaa=vbuz1_rol_1 
    lda.z x
    asl
    // [65] 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:
    // [66] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    sec
    adc #$27
    // [67] 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:
    // [67] 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:
    // [68] sqr::val#1 = init_dist_screen::xd#0
    // [69] call sqr
    // [105] phi from init_dist_screen::@10 to sqr [phi:init_dist_screen::@10->sqr]
  sqr_from___b10:
    // [105] phi sqr::val#2 = sqr::val#1 [phi:init_dist_screen::@10->sqr#0] -- register_copy 
    jsr sqr
    // [70] sqr::return#3 = sqr::return#0
    jmp __b12
    // init_dist_screen::@12
  __b12:
    // [71] init_dist_screen::xds#0 = sqr::return#3
    // [72] 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
    // [73] sqrt::val#0 = init_dist_screen::ds#0
    // [74] call sqrt
    jsr sqrt
    // [75] sqrt::return#2 = sqrt::return#0
    jmp __b13
    // init_dist_screen::@13
  __b13:
    // [76] init_dist_screen::d#0 = sqrt::return#2
    // [77] 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
    // [78] 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
    // [79] 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
    // [80] 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
    // [81] init_dist_screen::x#1 = ++ init_dist_screen::x#2 -- vbuz1=_inc_vbuz1 
    inc.z x
    // [82] init_dist_screen::xb#1 = -- init_dist_screen::xb#2 -- vbuz1=_dec_vbuz1 
    dec.z xb
    // [57] phi from init_dist_screen::@13 to init_dist_screen::@5 [phi:init_dist_screen::@13->init_dist_screen::@5]
  __b5_from___b13:
    // [57] phi init_dist_screen::xb#2 = init_dist_screen::xb#1 [phi:init_dist_screen::@13->init_dist_screen::@5#0] -- register_copy 
    // [57] phi init_dist_screen::x#2 = init_dist_screen::x#1 [phi:init_dist_screen::@13->init_dist_screen::@5#1] -- register_copy 
    jmp __b5
    // init_dist_screen::@8
  __b8:
    // [83] 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:
    // [84] init_dist_screen::$7 = init_dist_screen::y2#0 - $18 -- vbuaa=vbuaa_minus_vbuc1 
    sec
    sbc #$18
    jmp __b4_from___b2
}
  // clock
// Returns the processor clock time used since the beginning of an implementation defined era (normally the beginning of the program).
// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start()
clock: {
    .label return = $c
    // [85] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0 -- _deref_pbuc1=vbuc2 
    // Stop the timer
    lda #0
    sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
    // [86] clock::return#0 = $ffffffff - *CIA2_TIMER_AB -- vduz1=vduc1_minus__deref_pduc2 
    lda #<$ffffffff
    sec
    sbc CIA2_TIMER_AB
    sta.z return
    lda #>$ffffffff
    sbc CIA2_TIMER_AB+1
    sta.z return+1
    lda #<$ffffffff>>$10
    sbc CIA2_TIMER_AB+2
    sta.z return+2
    lda #>$ffffffff>>$10
    sbc CIA2_TIMER_AB+3
    sta.z return+3
    // [87] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START -- _deref_pbuc1=vbuc2 
    // Start the timer
    lda #CIA_TIMER_CONTROL_START
    sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
    jmp __breturn
    // clock::@return
  __breturn:
    // [88] return 
    rts
}
  // print_ulong_at
// Print a unsigned long as HEX at a specific position
// void print_ulong_at(__zp($c) unsigned long dw, char *at)
print_ulong_at: {
    .label dw = $c
    // [89] print_uint_at::w#0 = word1  print_ulong_at::dw#0 -- vwuz1=_word1_vduz2 
    lda.z dw+2
    sta.z print_uint_at.w
    lda.z dw+3
    sta.z print_uint_at.w+1
    // [90] call print_uint_at
    // [117] phi from print_ulong_at to print_uint_at [phi:print_ulong_at->print_uint_at]
  print_uint_at_from_print_ulong_at:
    // [117] phi print_uint_at::at#2 = main::BASE_SCREEN [phi:print_ulong_at->print_uint_at#0] -- pbuz1=pbuc1 
    lda #<main.BASE_SCREEN
    sta.z print_uint_at.at
    lda #>main.BASE_SCREEN
    sta.z print_uint_at.at+1
    // [117] phi print_uint_at::w#2 = print_uint_at::w#0 [phi:print_ulong_at->print_uint_at#1] -- register_copy 
    jsr print_uint_at
    jmp __b1
    // print_ulong_at::@1
  __b1:
    // [91] print_uint_at::w#1 = word0  print_ulong_at::dw#0 -- vwuz1=_word0_vduz2 
    lda.z dw
    sta.z print_uint_at.w
    lda.z dw+1
    sta.z print_uint_at.w+1
    // [92] call print_uint_at
    // [117] phi from print_ulong_at::@1 to print_uint_at [phi:print_ulong_at::@1->print_uint_at]
  print_uint_at_from___b1:
    // [117] phi print_uint_at::at#2 = main::BASE_SCREEN+4 [phi:print_ulong_at::@1->print_uint_at#0] -- pbuz1=pbuc1 
    lda #<main.BASE_SCREEN+4
    sta.z print_uint_at.at
    lda #>main.BASE_SCREEN+4
    sta.z print_uint_at.at+1
    // [117] phi print_uint_at::w#2 = print_uint_at::w#1 [phi:print_ulong_at::@1->print_uint_at#1] -- register_copy 
    jsr print_uint_at
    jmp __breturn
    // print_ulong_at::@return
  __breturn:
    // [93] return 
    rts
}
  // init_squares
// Initialize squares table
// Uses iterative formula (x+1)^2 = x^2 + 2*x + 1
init_squares: {
    .label squares = $13
    .label sqr = $a
    // [95] call malloc
    // [125] phi from init_squares to malloc [phi:init_squares->malloc]
  malloc_from_init_squares:
    jsr malloc
    // [96] phi from init_squares to init_squares::@1 [phi:init_squares->init_squares::@1]
  __b1_from_init_squares:
    // [96] phi init_squares::squares#2 = SQUARES#0 [phi:init_squares->init_squares::@1#0] -- pwuz1=pwuc1 
    lda #<SQUARES
    sta.z squares
    lda #>SQUARES
    sta.z squares+1
    // [96] phi init_squares::sqr#2 = 0 [phi:init_squares->init_squares::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z sqr
    lda #>0
    sta.z sqr+1
    // [96] phi init_squares::i#2 = 0 [phi:init_squares->init_squares::@1#2] -- vbuxx=vbuc1 
    ldx #0
    jmp __b1
    // init_squares::@1
  __b1:
    // [97] 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:
    // [98] return 
    rts
    // init_squares::@2
  __b2:
    // [99] *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
    // [100] 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
  !:
    // [101] init_squares::$3 = init_squares::i#2 << 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // [102] init_squares::$4 = init_squares::$3 + 1 -- vbuaa=vbuaa_plus_1 
    clc
    adc #1
    // [103] 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
  !:
    // [104] init_squares::i#1 = ++ init_squares::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [96] phi from init_squares::@2 to init_squares::@1 [phi:init_squares::@2->init_squares::@1]
  __b1_from___b2:
    // [96] phi init_squares::squares#2 = init_squares::squares#1 [phi:init_squares::@2->init_squares::@1#0] -- register_copy 
    // [96] phi init_squares::sqr#2 = init_squares::sqr#1 [phi:init_squares::@2->init_squares::@1#1] -- register_copy 
    // [96] 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($13) unsigned int sqr(__register(A) char val)
sqr: {
    .label return = $13
    .label return_1 = $11
    // [106] sqr::$0 = sqr::val#2 << 1 -- vbuaa=vbuaa_rol_1 
    asl
    // [107] sqr::return#0 = SQUARES#0[sqr::$0] -- vwuz1=pwuc1_derefidx_vbuaa 
    tay
    lda SQUARES,y
    sta.z return
    lda SQUARES+1,y
    sta.z return+1
    jmp __breturn
    // sqr::@return
  __breturn:
    // [108] 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($13) unsigned int val)
sqrt: {
    .label __1 = $a
    .label __2 = $a
    .label found = $a
    .label val = $13
    // [109] bsearch16u::key#0 = sqrt::val#0
    // [110] call bsearch16u
    // [127] phi from sqrt to bsearch16u [phi:sqrt->bsearch16u]
  bsearch16u_from_sqrt:
    jsr bsearch16u
    // [111] bsearch16u::return#3 = bsearch16u::return#1
    jmp __b1
    // sqrt::@1
  __b1:
    // [112] sqrt::found#0 = bsearch16u::return#3
    // [113] sqrt::$2 = sqrt::found#0 - SQUARES#0 -- vwuz1=pwuz1_minus_pwuc1 
    lda.z __2
    sec
    sbc #<SQUARES
    sta.z __2
    lda.z __2+1
    sbc #>SQUARES
    sta.z __2+1
    // [114] sqrt::$1 = sqrt::$2 >> 1 -- vwuz1=vwuz1_ror_1 
    lsr.z __1+1
    ror.z __1
    // [115] sqrt::return#0 = (char)sqrt::$1 -- vbuaa=_byte_vwuz1 
    lda.z __1
    jmp __breturn
    // sqrt::@return
  __breturn:
    // [116] return 
    rts
}
  // print_uint_at
// Print a unsigned int as HEX at a specific position
// void print_uint_at(__zp($13) unsigned int w, __zp($a) char *at)
print_uint_at: {
    .label w = $13
    .label at = $a
    // [118] print_uchar_at::b#0 = byte1  print_uint_at::w#2 -- vbuz1=_byte1_vwuz2 
    lda.z w+1
    sta.z print_uchar_at.b
    // [119] print_uchar_at::at#0 = print_uint_at::at#2
    // [120] call print_uchar_at
    // [146] phi from print_uint_at to print_uchar_at [phi:print_uint_at->print_uchar_at]
  print_uchar_at_from_print_uint_at:
    // [146] phi print_uchar_at::at#2 = print_uchar_at::at#0 [phi:print_uint_at->print_uchar_at#0] -- register_copy 
    // [146] phi print_uchar_at::b#2 = print_uchar_at::b#0 [phi:print_uint_at->print_uchar_at#1] -- register_copy 
    jsr print_uchar_at
    jmp __b1
    // print_uint_at::@1
  __b1:
    // [121] print_uchar_at::b#1 = byte0  print_uint_at::w#2 -- vbuz1=_byte0_vwuz2 
    lda.z w
    sta.z print_uchar_at.b
    // [122] print_uchar_at::at#1 = print_uint_at::at#2 + 2 -- pbuz1=pbuz1_plus_vbuc1 
    lda #2
    clc
    adc.z print_uchar_at.at
    sta.z print_uchar_at.at
    bcc !+
    inc.z print_uchar_at.at+1
  !:
    // [123] call print_uchar_at
    // [146] phi from print_uint_at::@1 to print_uchar_at [phi:print_uint_at::@1->print_uchar_at]
  print_uchar_at_from___b1:
    // [146] phi print_uchar_at::at#2 = print_uchar_at::at#1 [phi:print_uint_at::@1->print_uchar_at#0] -- register_copy 
    // [146] phi print_uchar_at::b#2 = print_uchar_at::b#1 [phi:print_uint_at::@1->print_uchar_at#1] -- register_copy 
    jsr print_uchar_at
    jmp __breturn
    // print_uint_at::@return
  __breturn:
    // [124] 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(unsigned int size)
malloc: {
    .const size = NUM_SQUARES*SIZEOF_UNSIGNED_INT
    .label mem = HEAP_TOP-size
    .label return = mem
    jmp __breturn
    // malloc::@return
  __breturn:
    // [126] return 
    rts
}
  // bsearch16u
// Searches an array of nitems unsigned ints, the initial member of which is pointed to by base, for a member that matches the value key.
// - key - The value to look for
// - items - Pointer to the start of the array to search in
// - num - The number of items in the array
// Returns pointer to an entry in the array that matches the search key
// __zp($a) unsigned int * bsearch16u(__zp($13) unsigned int key, __zp($a) unsigned int *items, __register(X) char num)
bsearch16u: {
    .label __2 = $a
    .label pivot = $15
    .label result = $17
    .label return = $a
    .label items = $a
    .label key = $13
    // [128] phi from bsearch16u to bsearch16u::@3 [phi:bsearch16u->bsearch16u::@3]
  __b3_from_bsearch16u:
    // [128] phi bsearch16u::items#2 = SQUARES#0 [phi:bsearch16u->bsearch16u::@3#0] -- pwuz1=pwuc1 
    lda #<SQUARES
    sta.z items
    lda #>SQUARES
    sta.z items+1
    // [128] phi bsearch16u::num#3 = NUM_SQUARES#2 [phi:bsearch16u->bsearch16u::@3#1] -- vbuxx=vbuc1 
    ldx #NUM_SQUARES
    jmp __b3
    // bsearch16u::@3
  __b3:
    // [129] if(bsearch16u::num#3>0) goto bsearch16u::@4 -- vbuxx_gt_0_then_la1 
    cpx #0
    bne __b4
    jmp __b5
    // bsearch16u::@5
  __b5:
    // [130] 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:
    // [131] 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
    // [132] phi from bsearch16u::@1 bsearch16u::@5 to bsearch16u::@2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2]
  __b2_from___b1:
  __b2_from___b5:
    // [132] phi bsearch16u::return#2 = bsearch16u::$2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2#0] -- register_copy 
    jmp __b2
    // bsearch16u::@2
  __b2:
    // [133] phi from bsearch16u::@2 bsearch16u::@8 to bsearch16u::@return [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return]
  __breturn_from___b2:
  __breturn_from___b8:
    // [133] phi bsearch16u::return#1 = bsearch16u::return#2 [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return#0] -- register_copy 
    jmp __breturn
    // bsearch16u::@return
  __breturn:
    // [134] return 
    rts
    // bsearch16u::@4
  __b4:
    // [135] bsearch16u::$6 = bsearch16u::num#3 >> 1 -- vbuaa=vbuxx_ror_1 
    txa
    lsr
    // [136] bsearch16u::$14 = bsearch16u::$6 << 1 -- vbuaa=vbuaa_rol_1 
    asl
    // [137] 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
    // [138] 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
    // [139] 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:
    // [140] 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:
    // [141] 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:
    // [142] 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
    // [143] bsearch16u::num#1 = -- bsearch16u::num#3 -- vbuxx=_dec_vbuxx 
    dex
    // [144] phi from bsearch16u::@6 bsearch16u::@9 to bsearch16u::@7 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7]
  __b7_from___b6:
  __b7_from___b9:
    // [144] phi bsearch16u::items#8 = bsearch16u::items#2 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#0] -- register_copy 
    // [144] phi bsearch16u::num#5 = bsearch16u::num#3 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#1] -- register_copy 
    jmp __b7
    // bsearch16u::@7
  __b7:
    // [145] bsearch16u::num#0 = bsearch16u::num#5 >> 1 -- vbuxx=vbuxx_ror_1 
    txa
    lsr
    tax
    // [128] phi from bsearch16u::@7 to bsearch16u::@3 [phi:bsearch16u::@7->bsearch16u::@3]
  __b3_from___b7:
    // [128] phi bsearch16u::items#2 = bsearch16u::items#8 [phi:bsearch16u::@7->bsearch16u::@3#0] -- register_copy 
    // [128] phi bsearch16u::num#3 = bsearch16u::num#0 [phi:bsearch16u::@7->bsearch16u::@3#1] -- register_copy 
    jmp __b3
}
  // print_uchar_at
// Print a char as HEX at a specific position
// void print_uchar_at(__zp($10) char b, __zp($a) char *at)
print_uchar_at: {
    .label b = $10
    .label at = $a
    // [147] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 -- vbuaa=vbuz1_ror_4 
    lda.z b
    lsr
    lsr
    lsr
    lsr
    // [148] print_char_at::ch#0 = print_hextab[print_uchar_at::$0] -- vbuxx=pbuc1_derefidx_vbuaa 
    tay
    ldx print_hextab,y
    // [149] print_char_at::at#0 = print_uchar_at::at#2 -- pbuz1=pbuz2 
    lda.z at
    sta.z print_char_at.at
    lda.z at+1
    sta.z print_char_at.at+1
    // [150] call print_char_at
  // Table of hexadecimal digits
    // [156] phi from print_uchar_at to print_char_at [phi:print_uchar_at->print_char_at]
  print_char_at_from_print_uchar_at:
    // [156] phi print_char_at::at#2 = print_char_at::at#0 [phi:print_uchar_at->print_char_at#0] -- register_copy 
    // [156] phi print_char_at::ch#2 = print_char_at::ch#0 [phi:print_uchar_at->print_char_at#1] -- register_copy 
    jsr print_char_at
    jmp __b1
    // print_uchar_at::@1
  __b1:
    // [151] print_uchar_at::$2 = print_uchar_at::b#2 & $f -- vbuyy=vbuz1_band_vbuc1 
    lda #$f
    and.z b
    tay
    // [152] print_char_at::at#1 = print_uchar_at::at#2 + 1 -- pbuz1=pbuz2_plus_1 
    clc
    lda.z at
    adc #1
    sta.z print_char_at.at
    lda.z at+1
    adc #0
    sta.z print_char_at.at+1
    // [153] print_char_at::ch#1 = print_hextab[print_uchar_at::$2] -- vbuxx=pbuc1_derefidx_vbuyy 
    ldx print_hextab,y
    // [154] call print_char_at
    // [156] phi from print_uchar_at::@1 to print_char_at [phi:print_uchar_at::@1->print_char_at]
  print_char_at_from___b1:
    // [156] phi print_char_at::at#2 = print_char_at::at#1 [phi:print_uchar_at::@1->print_char_at#0] -- register_copy 
    // [156] phi print_char_at::ch#2 = print_char_at::ch#1 [phi:print_uchar_at::@1->print_char_at#1] -- register_copy 
    jsr print_char_at
    jmp __breturn
    // print_uchar_at::@return
  __breturn:
    // [155] return 
    rts
}
  // print_char_at
// Print a single char
// void print_char_at(__register(X) char ch, __zp($11) char *at)
print_char_at: {
    .label at = $11
    // [157] *print_char_at::at#2 = print_char_at::ch#2 -- _deref_pbuz1=vbuxx 
    txa
    ldy #0
    sta (at),y
    jmp __breturn
    // print_char_at::@return
  __breturn:
    // [158] return 
    rts
}
  // File Data
.segment Data
  // Bit patterns for symbols 0-f (3x5 pixels) used in font hex
  FONT_HEX_PROTO: .byte 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4
  print_hextab: .text "0123456789abcdef"

ASSEMBLER OPTIMIZATIONS
Removing instruction jmp toD0181
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp toD0182
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __b4
Removing instruction jmp __b11
Removing instruction jmp __b5
Removing instruction jmp __b7
Removing instruction jmp __breturn
Removing instruction jmp __b9
Removing instruction jmp __b10
Removing instruction jmp __b12
Removing instruction jmp __b13
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Removing instruction jmp __b3
Removing instruction jmp __b5
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b8
Removing instruction jmp __b9
Removing instruction jmp __b7
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __breturn
Succesful ASM optimization Pass5NextJumpElimination
Replacing instruction ldy #0 with TAY
Removing instruction ldy.z idx
Removing instruction lda #0
Removing instruction ldy.z x
Removing instruction ldy.z xb
Removing instruction lda #>0
Replacing instruction ldx #0 with TAX
Removing instruction lda.z result+1
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label __b3_from___b3 with __b3
Replacing label __b2_from___b4 with __b2
Replacing label __b1_from___b5 with __b1
Replacing label __b1_from___b7 with __b1
Replacing label __b10_from___b8 with __b10
Replacing label __b4_from___b2 with __b4
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 toD0181_from_main:
Removing instruction toD0181:
Removing instruction __b3_from___b1:
Removing instruction init_dist_screen_from___b3:
Removing instruction __b4_from___b3:
Removing instruction toD0182_from___b5:
Removing instruction toD0182:
Removing instruction __b1_from___b5:
Removing instruction __b2_from___b1:
Removing instruction __b2_from___b4:
Removing instruction __b3_from___b3:
Removing instruction __b1_from___b7:
Removing instruction __b4_from___b2:
Removing instruction __b4_from___b3:
Removing instruction sqr_from___b4:
Removing instruction __b5_from___b11:
Removing instruction __b10_from___b8:
Removing instruction __b10_from___b9:
Removing instruction sqr_from___b10:
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 init_font_hex_from_main:
Removing instruction __b1:
Removing instruction __b3:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __b2:
Removing instruction __breturn:
Removing instruction __b1_from_init_font_hex:
Removing instruction __b3_from___b2:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction init_squares_from_init_dist_screen:
Removing instruction __b1_from_init_dist_screen:
Removing instruction __b3:
Removing instruction __b11:
Removing instruction __b7:
Removing instruction __breturn:
Removing instruction __b9:
Removing instruction __b12:
Removing instruction __b13:
Removing instruction __b5_from___b13:
Removing instruction __breturn:
Removing instruction print_uint_at_from_print_ulong_at:
Removing instruction __b1:
Removing instruction print_uint_at_from___b1:
Removing instruction __breturn:
Removing instruction malloc_from_init_squares:
Removing instruction __b1_from_init_squares:
Removing instruction __breturn:
Removing instruction __b1_from___b2:
Removing instruction __breturn:
Removing instruction bsearch16u_from_sqrt:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction print_uchar_at_from_print_uint_at:
Removing instruction __b1:
Removing instruction print_uchar_at_from___b1:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction __b3_from_bsearch16u:
Removing instruction __b5:
Removing instruction __b1:
Removing instruction __b8:
Removing instruction __b9:
Removing instruction __b3_from___b7:
Removing instruction print_char_at_from_print_uchar_at:
Removing instruction __b1:
Removing instruction print_char_at_from___b1:
Removing instruction __breturn:
Removing instruction __breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Replacing jump to rts with rts in jmp __b2
Succesful ASM optimization Pass5DoubleJumpElimination
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b1
Succesful ASM optimization Pass5NextJumpElimination

FINAL SYMBOL TABLE
__constant char * const CHARSET = (char *) 8192
__constant struct MOS6526_CIA * const CIA2 = (struct MOS6526_CIA *) 56576
__constant unsigned long * const CIA2_TIMER_AB = (unsigned long *) 56580
__constant const char CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = $40
__constant const char CIA_TIMER_CONTROL_START = 1
__constant const unsigned long CLOCKS_PER_INIT = $12
__constant char * const D018 = (char *) 53272
__constant char FONT_HEX_PROTO[] = { 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4 }
__constant char *HEAP_TOP = (char *) 40960
char NUM_SQUARES
__constant char NUM_SQUARES#2 = $30 // NUM_SQUARES
__constant char OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
__constant char OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
__constant char RADIX::BINARY = 2
__constant char RADIX::DECIMAL = $a
__constant char RADIX::HEXADECIMAL = $10
__constant char RADIX::OCTAL = 8
__constant char * const SCREEN = (char *) 10240
__constant char SIZEOF_UNSIGNED_INT = 2
unsigned int *SQUARES
__constant unsigned int *SQUARES#0 = (unsigned int *)malloc::return#0 // SQUARES
unsigned int * bsearch16u(unsigned int key , unsigned int *items , char num)
char bsearch16u::$14 // reg byte a 2.00000002E8
unsigned int *bsearch16u::$2 // zp[2]:10 200002.0
char bsearch16u::$6 // reg byte a 2.00000002E8
unsigned int *bsearch16u::items
unsigned int *bsearch16u::items#0 // items zp[2]:10 1.00000001E8
unsigned int *bsearch16u::items#2 // items zp[2]:10 3.3366667333333336E7
unsigned int *bsearch16u::items#8 // items zp[2]:10 1.500000015E8
unsigned int bsearch16u::key
unsigned int bsearch16u::key#0 // key zp[2]:19 7857.285714285715
char bsearch16u::num
char bsearch16u::num#0 // reg byte x 2.00000002E8
char bsearch16u::num#1 // reg byte x 2.00000002E8
char bsearch16u::num#3 // reg byte x 5.555555611111111E7
char bsearch16u::num#5 // reg byte x 3.00000003E8
unsigned int *bsearch16u::pivot
unsigned int *bsearch16u::pivot#0 // pivot zp[2]:21 5.002500075E7
int bsearch16u::result
int bsearch16u::result#0 // result zp[2]:23 1.500000015E8
unsigned int *bsearch16u::return
unsigned int *bsearch16u::return#1 // return zp[2]:10 70001.0
unsigned int *bsearch16u::return#2 // return zp[2]:10 300003.0
unsigned int *bsearch16u::return#3 // return zp[2]:10 20002.0
unsigned int *bsearch16u::return#7 // return zp[2]:10 200002.0
unsigned long clock()
unsigned long clock::return
unsigned long clock::return#0 // return zp[4]:12 3.25
unsigned long clock::return#2 // return zp[4]:12 4.0
unsigned long clock::ticks
void clock_start()
char *heap_head
void init_dist_screen(char *screen)
char init_dist_screen::$14 // reg byte a 2002.0
char init_dist_screen::$16 // reg byte a 2002.0
char init_dist_screen::$5 // reg byte a 202.0
char init_dist_screen::$7 // reg byte a 202.0
char init_dist_screen::d
char init_dist_screen::d#0 // reg byte a 1251.25
unsigned int init_dist_screen::ds
unsigned int init_dist_screen::ds#0 // ds zp[2]:19 2002.0
char *init_dist_screen::screen
char *init_dist_screen::screen_bottomline
char *init_dist_screen::screen_bottomline#1 // screen_bottomline zp[2]:5 67.33333333333333
char *init_dist_screen::screen_bottomline#11 // screen_bottomline zp[2]:5 66.78787878787878
char *init_dist_screen::screen_topline
char *init_dist_screen::screen_topline#1 // screen_topline zp[2]:3 50.5
char *init_dist_screen::screen_topline#11 // screen_topline zp[2]:3 68.875
char init_dist_screen::x
char init_dist_screen::x#1 // x zp[1]:7 1001.0
char init_dist_screen::x#2 // x zp[1]:7 300.3
char init_dist_screen::x2
char init_dist_screen::x2#0 // reg byte a 2002.0
char init_dist_screen::xb
char init_dist_screen::xb#1 // xb zp[1]:9 2002.0
char init_dist_screen::xb#2 // xb zp[1]:9 190.66666666666666
char init_dist_screen::xd
char init_dist_screen::xd#0 // reg byte a 3003.0
unsigned int init_dist_screen::xds
unsigned int init_dist_screen::xds#0 // xds zp[2]:19 2002.0
char init_dist_screen::y
char init_dist_screen::y#1 // y zp[1]:2 151.5
char init_dist_screen::y#10 // y zp[1]:2 8.911764705882353
char init_dist_screen::y2
char init_dist_screen::y2#0 // reg byte a 202.0
char init_dist_screen::yd
char init_dist_screen::yd#0 // reg byte a 303.0
unsigned int init_dist_screen::yds
unsigned int init_dist_screen::yds#0 // yds zp[2]:17 47.91304347826087
void init_font_hex(char *charset)
char init_font_hex::$0 // zp[1]:16 10001.0
char init_font_hex::$1 // reg byte a 20002.0
char init_font_hex::$2 // reg byte a 20002.0
char init_font_hex::c
char init_font_hex::c#1 // c zp[1]:2 151.5
char init_font_hex::c#6 // c zp[1]:2 10.631578947368421
char init_font_hex::c1
char init_font_hex::c1#1 // c1 zp[1]:7 1501.5
char init_font_hex::c1#4 // c1 zp[1]:7 133.46666666666667
char *init_font_hex::charset
char *init_font_hex::charset#0 // charset zp[2]:5 350.5
char *init_font_hex::charset#2 // charset zp[2]:5 1079.0714285714287
char *init_font_hex::charset#5 // charset zp[2]:5 202.0
char init_font_hex::i
char init_font_hex::i#1 // reg byte x 15001.5
char init_font_hex::i#2 // reg byte x 6667.333333333333
char init_font_hex::idx
char init_font_hex::idx#2 // idx zp[1]:9 5501.0
char init_font_hex::idx#3 // reg byte y 2002.0
char init_font_hex::idx#5 // idx zp[1]:9 6000.6
char *init_font_hex::proto_hi
char *init_font_hex::proto_hi#1 // proto_hi zp[2]:3 67.33333333333333
char *init_font_hex::proto_hi#6 // proto_hi zp[2]:3 566.8333333333333
char *init_font_hex::proto_lo
char *init_font_hex::proto_lo#1 // proto_lo zp[2]:10 500.5
char *init_font_hex::proto_lo#4 // proto_lo zp[2]:10 923.3076923076923
void init_squares()
char init_squares::$3 // reg byte a 2002.0
char init_squares::$4 // reg byte a 2002.0
char init_squares::i
char init_squares::i#1 // reg byte x 2002.0
char init_squares::i#2 // reg byte x 572.0
unsigned int init_squares::sqr
unsigned int init_squares::sqr#1 // sqr zp[2]:10 1001.0
unsigned int init_squares::sqr#2 // sqr zp[2]:10 500.5
unsigned int *init_squares::squares
unsigned int *init_squares::squares#1 // squares zp[2]:19 400.4
unsigned int *init_squares::squares#2 // squares zp[2]:19 1001.0
void main()
unsigned long main::$4 // zp[4]:12 4.0
__constant char *main::BASE_CHARSET = (char *) 4096
__constant char *main::BASE_SCREEN = (char *) 1024
unsigned long main::cyclecount
unsigned long main::cyclecount#0 // cyclecount zp[4]:12 4.0
char *main::toD0181_gfx
char main::toD0181_return
__constant char main::toD0181_return#0 = byte1 (unsigned int)SCREEN&$3fff*4|byte1 (unsigned int)CHARSET/4&$f // toD0181_return
char *main::toD0181_screen
char *main::toD0182_gfx
char main::toD0182_return
__constant char main::toD0182_return#0 = byte1 (unsigned int)main::BASE_SCREEN&$3fff*4|byte1 (unsigned int)main::BASE_CHARSET/4&$f // toD0182_return
char *main::toD0182_screen
void * malloc(unsigned int size)
char *malloc::mem
__constant char *malloc::mem#0 = HEAP_TOP-malloc::size#0 // mem
void *malloc::return
__constant void *malloc::return#0 = (void *)malloc::mem#0 // return
unsigned int malloc::size
__constant unsigned int malloc::size#0 = NUM_SQUARES#2*SIZEOF_UNSIGNED_INT // size
void print_char_at(char ch , char *at)
char *print_char_at::at
char *print_char_at::at#0 // at zp[2]:17 2002.0
char *print_char_at::at#1 // at zp[2]:17 1001.0
char *print_char_at::at#2 // at zp[2]:17 12003.0
char print_char_at::ch
char print_char_at::ch#0 // reg byte x 1001.0
char print_char_at::ch#1 // reg byte x 2002.0
char print_char_at::ch#2 // reg byte x 12003.0
__constant const char print_hextab[] = "0123456789abcdef"z
void print_uchar_at(char b , char *at)
char print_uchar_at::$0 // reg byte a 2002.0
char print_uchar_at::$2 // reg byte y 1001.0
char *print_uchar_at::at
char *print_uchar_at::at#0 // at zp[2]:10 202.0
char *print_uchar_at::at#1 // at zp[2]:10 202.0
char *print_uchar_at::at#2 // at zp[2]:10 367.33333333333337
char print_uchar_at::b
char print_uchar_at::b#0 // b zp[1]:16 101.0
char print_uchar_at::b#1 // b zp[1]:16 101.0
char print_uchar_at::b#2 // b zp[1]:16 440.79999999999995
void print_uint_at(unsigned int w , char *at)
char *print_uint_at::at
char *print_uint_at::at#2 // at zp[2]:10 40.4
unsigned int print_uint_at::w
unsigned int print_uint_at::w#0 // w zp[2]:19 22.0
unsigned int print_uint_at::w#1 // w zp[2]:19 22.0
unsigned int print_uint_at::w#2 // w zp[2]:19 56.0
void print_ulong_at(unsigned long dw , char *at)
char *print_ulong_at::at
unsigned long print_ulong_at::dw
unsigned long print_ulong_at::dw#0 // dw zp[4]:12 8.0
unsigned int sqr(char val)
char sqr::$0 // reg byte a 20002.0
unsigned int sqr::return
unsigned int sqr::return#0 // return zp[2]:19 2775.75
unsigned int sqr::return#2 // return_1 zp[2]:17 202.0
unsigned int sqr::return#3 // return zp[2]:19 2002.0
char sqr::val
char sqr::val#0 // reg byte a 202.0
char sqr::val#1 // reg byte a 2002.0
char sqr::val#2 // reg byte a 11103.0
char sqrt(unsigned int val)
unsigned int sqrt::$1 // zp[2]:10 10001.0
unsigned int sqrt::$2 // zp[2]:10 20002.0
unsigned int *sqrt::found
unsigned int *sqrt::found#0 // found zp[2]:10 20002.0
char sqrt::return
char sqrt::return#0 // reg byte a 3667.333333333333
char sqrt::return#2 // reg byte a 2002.0
char sqrt::sq
unsigned int sqrt::val
unsigned int sqrt::val#0 // val zp[2]:19 11002.0

reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ]
zp[1]:2 [ init_dist_screen::y#10 init_dist_screen::y#1 init_font_hex::c#6 init_font_hex::c#1 ]
zp[2]:3 [ init_dist_screen::screen_topline#11 init_dist_screen::screen_topline#1 init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
zp[2]:5 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#1 init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
reg byte a [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
zp[1]:7 [ init_dist_screen::x#2 init_dist_screen::x#1 init_font_hex::c1#4 init_font_hex::c1#1 ]
zp[1]:9 [ init_dist_screen::xb#2 init_dist_screen::xb#1 init_font_hex::idx#5 init_font_hex::idx#2 ]
reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ]
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]:10 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 init_squares::sqr#2 init_squares::sqr#1 init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
zp[4]:12 [ clock::return#2 main::$4 clock::return#0 main::cyclecount#0 print_ulong_at::dw#0 ]
zp[1]:16 [ init_font_hex::$0 print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
reg byte a [ init_font_hex::$1 ]
reg byte a [ init_font_hex::$2 ]
reg byte y [ init_font_hex::idx#3 ]
reg byte a [ init_dist_screen::y2#0 ]
zp[2]:17 [ sqr::return#2 init_dist_screen::yds#0 print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
reg byte a [ init_dist_screen::x2#0 ]
zp[2]:19 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 init_squares::squares#2 init_squares::squares#1 ]
reg byte a [ sqrt::return#2 ]
reg byte a [ init_dist_screen::d#0 ]
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 [ bsearch16u::$6 ]
reg byte a [ bsearch16u::$14 ]
zp[2]:21 [ bsearch16u::pivot#0 ]
zp[2]:23 [ bsearch16u::result#0 ]
reg byte a [ print_uchar_at::$0 ]
reg byte y [ print_uchar_at::$2 ]


FINAL ASSEMBLER
Score: 201179

  // File Comments
// Calculate the distance to the center of the screen - and show it using font-hex
  // Upstart
  // Commodore 64 PRG executable file
.file [name="screen-center-distance.prg", type="prg", segments="Program"]
.segmentdef Program [segments="Basic, Code, Data"]
.segmentdef Basic [start=$0801]
.segmentdef Code [start=$80d]
.segmentdef Data [startAfter="Code"]
.segment Basic
:BasicUpstart(main)
  // Global Constants & labels
  .const SIZEOF_UNSIGNED_INT = 2
  /// Timer Control - Start/stop timer (0:stop, 1: start)
  .const CIA_TIMER_CONTROL_START = 1
  /// Timer B Control - Timer counts (00:system cycles, 01: CNT pulses, 10: timer A underflow, 11: time A underflow while CNT is high)
  .const CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = $40
  /// Clock cycles used to start & read the cycle clock by calling clock_start() and clock() once. Can be subtracted when calculating the number of cycles used by a routine.
  /// To make precise cycle measurements interrupts and the display must be disabled so neither steals any cycles from the code.
  .const CLOCKS_PER_INIT = $12
  .const OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL = $e
  .const OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL = $f
  // The number of squares to pre-calculate. Limits what values sqr() can calculate and the result of sqrt()
  .const NUM_SQUARES = $30
  /// $D018 VIC-II base addresses
  // @see #VICII_MEMORY
  .label D018 = $d018
  /// The CIA#2: Serial bus, RS-232, VIC memory bank
  .label CIA2 = $dd00
  /// CIA#2 timer A&B as one single 32-bit value
  .label CIA2_TIMER_AB = $dd04
  .label CHARSET = $2000
  .label SCREEN = $2800
  // Top of the heap used by malloc()
  .label HEAP_TOP = $a000
  // Squares for each char value SQUARES[i] = i*i
  // Initialized by init_squares()
  .label SQUARES = malloc.return
.segment Code
  // main
main: {
    .const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
    .const toD0182_return = (>(BASE_SCREEN&$3fff)*4)|(>BASE_CHARSET)/4&$f
    .label BASE_SCREEN = $400
    .label BASE_CHARSET = $1000
    .label __4 = $c
    .label cyclecount = $c
    // init_font_hex(CHARSET)
    // [1] call init_font_hex
    // [17] phi from main to init_font_hex [phi:main->init_font_hex]
    jsr init_font_hex
    // [2] phi from main to main::toD0181 [phi:main->main::toD0181]
    // main::toD0181
    // main::@1
    // *D018 = toD018(SCREEN, CHARSET)
    // [3] *D018 = main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
    // clock_start()
    // [4] call clock_start
    jsr clock_start
    // [5] phi from main::@1 to main::@3 [phi:main::@1->main::@3]
    // main::@3
    // init_dist_screen(SCREEN)
    // [6] call init_dist_screen
    // [46] phi from main::@3 to init_dist_screen [phi:main::@3->init_dist_screen]
    jsr init_dist_screen
    // [7] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
    // main::@4
    // clock()
    // [8] call clock
    jsr clock
    // [9] clock::return#2 = clock::return#0
    // main::@5
    // [10] main::$4 = clock::return#2
    // clock_t cyclecount = clock()-CLOCKS_PER_INIT
    // [11] main::cyclecount#0 = main::$4 - CLOCKS_PER_INIT -- vduz1=vduz1_minus_vduc1 
    lda.z cyclecount
    sec
    sbc #<CLOCKS_PER_INIT
    sta.z cyclecount
    lda.z cyclecount+1
    sbc #>CLOCKS_PER_INIT
    sta.z cyclecount+1
    lda.z cyclecount+2
    sbc #<CLOCKS_PER_INIT>>$10
    sta.z cyclecount+2
    lda.z cyclecount+3
    sbc #>CLOCKS_PER_INIT>>$10
    sta.z cyclecount+3
    // print_ulong_at(cyclecount, BASE_SCREEN)
    // [12] print_ulong_at::dw#0 = main::cyclecount#0
    // [13] call print_ulong_at
    jsr print_ulong_at
    // [14] phi from main::@5 to main::toD0182 [phi:main::@5->main::toD0182]
    // main::toD0182
    // main::@2
    // *D018 = toD018(BASE_SCREEN, BASE_CHARSET)
    // [15] *D018 = main::toD0182_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0182_return
    sta D018
    // main::@return
    // }
    // [16] return 
    rts
}
  // init_font_hex
// Make charset from proto chars
// void init_font_hex(__zp(5) char *charset)
init_font_hex: {
    .label __0 = $10
    .label idx = 9
    .label proto_lo = $a
    .label charset = 5
    .label c1 = 7
    .label proto_hi = 3
    .label c = 2
    // [18] phi from init_font_hex to init_font_hex::@1 [phi:init_font_hex->init_font_hex::@1]
    // [18] phi init_font_hex::c#6 = 0 [phi:init_font_hex->init_font_hex::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z c
    // [18] phi init_font_hex::proto_hi#6 = FONT_HEX_PROTO [phi:init_font_hex->init_font_hex::@1#1] -- pbuz1=pbuc1 
    lda #<FONT_HEX_PROTO
    sta.z proto_hi
    lda #>FONT_HEX_PROTO
    sta.z proto_hi+1
    // [18] phi init_font_hex::charset#5 = CHARSET [phi:init_font_hex->init_font_hex::@1#2] -- pbuz1=pbuc1 
    lda #<CHARSET
    sta.z charset
    lda #>CHARSET
    sta.z charset+1
    // [18] phi from init_font_hex::@5 to init_font_hex::@1 [phi:init_font_hex::@5->init_font_hex::@1]
    // [18] phi init_font_hex::c#6 = init_font_hex::c#1 [phi:init_font_hex::@5->init_font_hex::@1#0] -- register_copy 
    // [18] phi init_font_hex::proto_hi#6 = init_font_hex::proto_hi#1 [phi:init_font_hex::@5->init_font_hex::@1#1] -- register_copy 
    // [18] phi init_font_hex::charset#5 = init_font_hex::charset#0 [phi:init_font_hex::@5->init_font_hex::@1#2] -- register_copy 
    // init_font_hex::@1
  __b1:
    // [19] phi from init_font_hex::@1 to init_font_hex::@2 [phi:init_font_hex::@1->init_font_hex::@2]
    // [19] phi init_font_hex::c1#4 = 0 [phi:init_font_hex::@1->init_font_hex::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z c1
    // [19] phi init_font_hex::proto_lo#4 = FONT_HEX_PROTO [phi:init_font_hex::@1->init_font_hex::@2#1] -- pbuz1=pbuc1 
    lda #<FONT_HEX_PROTO
    sta.z proto_lo
    lda #>FONT_HEX_PROTO
    sta.z proto_lo+1
    // [19] phi init_font_hex::charset#2 = init_font_hex::charset#5 [phi:init_font_hex::@1->init_font_hex::@2#2] -- register_copy 
    // [19] phi from init_font_hex::@4 to init_font_hex::@2 [phi:init_font_hex::@4->init_font_hex::@2]
    // [19] phi init_font_hex::c1#4 = init_font_hex::c1#1 [phi:init_font_hex::@4->init_font_hex::@2#0] -- register_copy 
    // [19] phi init_font_hex::proto_lo#4 = init_font_hex::proto_lo#1 [phi:init_font_hex::@4->init_font_hex::@2#1] -- register_copy 
    // [19] phi init_font_hex::charset#2 = init_font_hex::charset#0 [phi:init_font_hex::@4->init_font_hex::@2#2] -- register_copy 
    // init_font_hex::@2
  __b2:
    // charset[idx++] = 0
    // [20] *init_font_hex::charset#2 = 0 -- _deref_pbuz1=vbuc1 
    lda #0
    tay
    sta (charset),y
    // [21] phi from init_font_hex::@2 to init_font_hex::@3 [phi:init_font_hex::@2->init_font_hex::@3]
    // [21] phi init_font_hex::idx#5 = 1 [phi:init_font_hex::@2->init_font_hex::@3#0] -- vbuz1=vbuc1 
    lda #1
    sta.z idx
    // [21] phi init_font_hex::i#2 = 0 [phi:init_font_hex::@2->init_font_hex::@3#1] -- vbuxx=vbuc1 
    ldx #0
    // [21] phi from init_font_hex::@3 to init_font_hex::@3 [phi:init_font_hex::@3->init_font_hex::@3]
    // [21] phi init_font_hex::idx#5 = init_font_hex::idx#2 [phi:init_font_hex::@3->init_font_hex::@3#0] -- register_copy 
    // [21] phi init_font_hex::i#2 = init_font_hex::i#1 [phi:init_font_hex::@3->init_font_hex::@3#1] -- register_copy 
    // init_font_hex::@3
  __b3:
    // proto_hi[i]<<4
    // [22] init_font_hex::$0 = init_font_hex::proto_hi#6[init_font_hex::i#2] << 4 -- vbuz1=pbuz2_derefidx_vbuxx_rol_4 
    txa
    tay
    lda (proto_hi),y
    asl
    asl
    asl
    asl
    sta.z __0
    // proto_lo[i]<<1
    // [23] init_font_hex::$1 = init_font_hex::proto_lo#4[init_font_hex::i#2] << 1 -- vbuaa=pbuz1_derefidx_vbuxx_rol_1 
    txa
    tay
    lda (proto_lo),y
    asl
    // proto_hi[i]<<4 | proto_lo[i]<<1
    // [24] init_font_hex::$2 = init_font_hex::$0 | init_font_hex::$1 -- vbuaa=vbuz1_bor_vbuaa 
    ora.z __0
    // charset[idx++] = proto_hi[i]<<4 | proto_lo[i]<<1
    // [25] init_font_hex::charset#2[init_font_hex::idx#5] = init_font_hex::$2 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy.z idx
    sta (charset),y
    // charset[idx++] = proto_hi[i]<<4 | proto_lo[i]<<1;
    // [26] init_font_hex::idx#2 = ++ init_font_hex::idx#5 -- vbuz1=_inc_vbuz1 
    inc.z idx
    // for( byte i: 0..4)
    // [27] init_font_hex::i#1 = ++ init_font_hex::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [28] if(init_font_hex::i#1!=5) goto init_font_hex::@3 -- vbuxx_neq_vbuc1_then_la1 
    cpx #5
    bne __b3
    // init_font_hex::@4
    // charset[idx++] = 0
    // [29] init_font_hex::charset#2[init_font_hex::idx#2] = 0 -- pbuz1_derefidx_vbuz2=vbuc1 
    lda #0
    ldy.z idx
    sta (charset),y
    // charset[idx++] = 0;
    // [30] init_font_hex::idx#3 = ++ init_font_hex::idx#2 -- vbuyy=_inc_vbuz1 
    iny
    // charset[idx++] = 0
    // [31] init_font_hex::charset#2[init_font_hex::idx#3] = 0 -- pbuz1_derefidx_vbuyy=vbuc1 
    sta (charset),y
    // proto_lo += 5
    // [32] init_font_hex::proto_lo#1 = init_font_hex::proto_lo#4 + 5 -- pbuz1=pbuz1_plus_vbuc1 
    lda #5
    clc
    adc.z proto_lo
    sta.z proto_lo
    bcc !+
    inc.z proto_lo+1
  !:
    // charset += 8
    // [33] init_font_hex::charset#0 = init_font_hex::charset#2 + 8 -- pbuz1=pbuz1_plus_vbuc1 
    lda #8
    clc
    adc.z charset
    sta.z charset
    bcc !+
    inc.z charset+1
  !:
    // for( byte c: 0..15 )
    // [34] init_font_hex::c1#1 = ++ init_font_hex::c1#4 -- vbuz1=_inc_vbuz1 
    inc.z c1
    // [35] if(init_font_hex::c1#1!=$10) goto init_font_hex::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda #$10
    cmp.z c1
    bne __b2
    // init_font_hex::@5
    // proto_hi += 5
    // [36] init_font_hex::proto_hi#1 = init_font_hex::proto_hi#6 + 5 -- pbuz1=pbuz1_plus_vbuc1 
    lda #5
    clc
    adc.z proto_hi
    sta.z proto_hi
    bcc !+
    inc.z proto_hi+1
  !:
    // for( byte c: 0..15 )
    // [37] init_font_hex::c#1 = ++ init_font_hex::c#6 -- vbuz1=_inc_vbuz1 
    inc.z c
    // [38] if(init_font_hex::c#1!=$10) goto init_font_hex::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$10
    cmp.z c
    bne __b1
    // init_font_hex::@return
    // }
    // [39] return 
    rts
}
  // clock_start
// Reset & start the processor clock time. The value can be read using clock().
// This uses CIA #2 Timer A+B on the C64
clock_start: {
    // CIA2->TIMER_A_CONTROL = CIA_TIMER_CONTROL_STOP | CIA_TIMER_CONTROL_CONTINUOUS | CIA_TIMER_CONTROL_A_COUNT_CYCLES
    // [40] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0 -- _deref_pbuc1=vbuc2 
    // Setup CIA#2 timer A to count (down) CPU cycles
    lda #0
    sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
    // CIA2->TIMER_B_CONTROL = CIA_TIMER_CONTROL_STOP | CIA_TIMER_CONTROL_CONTINUOUS | CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
    // [41] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A -- _deref_pbuc1=vbuc2 
    lda #CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
    sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL
    // *CIA2_TIMER_AB = 0xffffffff
    // [42] *CIA2_TIMER_AB = $ffffffff -- _deref_pduc1=vduc2 
    lda #<$ffffffff
    sta CIA2_TIMER_AB
    lda #>$ffffffff
    sta CIA2_TIMER_AB+1
    lda #<$ffffffff>>$10
    sta CIA2_TIMER_AB+2
    lda #>$ffffffff>>$10
    sta CIA2_TIMER_AB+3
    // CIA2->TIMER_B_CONTROL = CIA_TIMER_CONTROL_START | CIA_TIMER_CONTROL_CONTINUOUS | CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
    // [43] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A -- _deref_pbuc1=vbuc2 
    lda #CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
    sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL
    // CIA2->TIMER_A_CONTROL = CIA_TIMER_CONTROL_START | CIA_TIMER_CONTROL_CONTINUOUS | CIA_TIMER_CONTROL_A_COUNT_CYCLES
    // [44] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START -- _deref_pbuc1=vbuc2 
    lda #CIA_TIMER_CONTROL_START
    sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
    // clock_start::@return
    // }
    // [45] return 
    rts
}
  // init_dist_screen
// Populates 1000 bytes (a screen) with values representing the distance to the center.
// The actual value stored is distance*2 to increase precision
// void init_dist_screen(char *screen)
init_dist_screen: {
    .label yds = $11
    .label screen_topline = 3
    .label screen_bottomline = 5
    .label y = 2
    .label xds = $13
    .label ds = $13
    .label x = 7
    .label xb = 9
    // init_squares()
    // [47] call init_squares
    // [94] phi from init_dist_screen to init_squares [phi:init_dist_screen->init_squares]
    jsr init_squares
    // [48] phi from init_dist_screen to init_dist_screen::@1 [phi:init_dist_screen->init_dist_screen::@1]
    // [48] phi init_dist_screen::screen_bottomline#11 = SCREEN+(unsigned int)$28*$18 [phi:init_dist_screen->init_dist_screen::@1#0] -- pbuz1=pbuc1 
    lda #<SCREEN+$28*$18
    sta.z screen_bottomline
    lda #>SCREEN+$28*$18
    sta.z screen_bottomline+1
    // [48] phi init_dist_screen::screen_topline#11 = SCREEN [phi:init_dist_screen->init_dist_screen::@1#1] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta.z screen_topline
    lda #>SCREEN
    sta.z screen_topline+1
    // [48] phi init_dist_screen::y#10 = 0 [phi:init_dist_screen->init_dist_screen::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta.z y
    // [48] phi from init_dist_screen::@7 to init_dist_screen::@1 [phi:init_dist_screen::@7->init_dist_screen::@1]
    // [48] 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 
    // [48] 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 
    // [48] 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
    // [49] 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)
    // [50] 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
    // [51] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    sec
    adc #$18
    // [52] 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]
    // [52] 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)
    // [53] sqr::val#0 = init_dist_screen::yd#0
    // [54] call sqr
    // [105] phi from init_dist_screen::@4 to sqr [phi:init_dist_screen::@4->sqr]
    // [105] phi sqr::val#2 = sqr::val#0 [phi:init_dist_screen::@4->sqr#0] -- register_copy 
    jsr sqr
    // word yds = sqr(yd)
    // [55] 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::@11
    // [56] init_dist_screen::yds#0 = sqr::return#2
    // [57] phi from init_dist_screen::@11 to init_dist_screen::@5 [phi:init_dist_screen::@11->init_dist_screen::@5]
    // [57] phi init_dist_screen::xb#2 = $27 [phi:init_dist_screen::@11->init_dist_screen::@5#0] -- vbuz1=vbuc1 
    lda #$27
    sta.z xb
    // [57] phi init_dist_screen::x#2 = 0 [phi:init_dist_screen::@11->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--)
    // [58] 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
    // [59] 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
    // [60] 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)
    // [61] init_dist_screen::y#1 = ++ init_dist_screen::y#10 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [62] 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
    // }
    // [63] return 
    rts
    // init_dist_screen::@6
  __b6:
    // byte x2 = x*2
    // [64] 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)
    // [65] 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
    // [66] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    sec
    adc #$27
    // [67] 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]
    // [67] 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)
    // [68] sqr::val#1 = init_dist_screen::xd#0
    // [69] call sqr
    // [105] phi from init_dist_screen::@10 to sqr [phi:init_dist_screen::@10->sqr]
    // [105] phi sqr::val#2 = sqr::val#1 [phi:init_dist_screen::@10->sqr#0] -- register_copy 
    jsr sqr
    // word xds = sqr(xd)
    // [70] sqr::return#3 = sqr::return#0
    // init_dist_screen::@12
    // [71] init_dist_screen::xds#0 = sqr::return#3
    // word ds = xds+yds
    // [72] 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)
    // [73] sqrt::val#0 = init_dist_screen::ds#0
    // [74] call sqrt
    jsr sqrt
    // [75] sqrt::return#2 = sqrt::return#0
    // init_dist_screen::@13
    // [76] init_dist_screen::d#0 = sqrt::return#2
    // screen_topline[x] = d
    // [77] 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
    // [78] 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
    // [79] 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
    // [80] 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--)
    // [81] init_dist_screen::x#1 = ++ init_dist_screen::x#2 -- vbuz1=_inc_vbuz1 
    inc.z x
    // [82] init_dist_screen::xb#1 = -- init_dist_screen::xb#2 -- vbuz1=_dec_vbuz1 
    dec.z xb
    // [57] phi from init_dist_screen::@13 to init_dist_screen::@5 [phi:init_dist_screen::@13->init_dist_screen::@5]
    // [57] phi init_dist_screen::xb#2 = init_dist_screen::xb#1 [phi:init_dist_screen::@13->init_dist_screen::@5#0] -- register_copy 
    // [57] phi init_dist_screen::x#2 = init_dist_screen::x#1 [phi:init_dist_screen::@13->init_dist_screen::@5#1] -- register_copy 
    jmp __b5
    // init_dist_screen::@8
  __b8:
    // (x2>=39)?(x2-39):(39-x2)
    // [83] 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)
    // [84] init_dist_screen::$7 = init_dist_screen::y2#0 - $18 -- vbuaa=vbuaa_minus_vbuc1 
    sec
    sbc #$18
    jmp __b4
}
  // clock
// Returns the processor clock time used since the beginning of an implementation defined era (normally the beginning of the program).
// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start()
clock: {
    .label return = $c
    // CIA2->TIMER_A_CONTROL = CIA_TIMER_CONTROL_STOP | CIA_TIMER_CONTROL_CONTINUOUS | CIA_TIMER_CONTROL_A_COUNT_CYCLES
    // [85] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0 -- _deref_pbuc1=vbuc2 
    // Stop the timer
    lda #0
    sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
    // clock_t ticks = 0xffffffff - *CIA2_TIMER_AB
    // [86] clock::return#0 = $ffffffff - *CIA2_TIMER_AB -- vduz1=vduc1_minus__deref_pduc2 
    lda #<$ffffffff
    sec
    sbc CIA2_TIMER_AB
    sta.z return
    lda #>$ffffffff
    sbc CIA2_TIMER_AB+1
    sta.z return+1
    lda #<$ffffffff>>$10
    sbc CIA2_TIMER_AB+2
    sta.z return+2
    lda #>$ffffffff>>$10
    sbc CIA2_TIMER_AB+3
    sta.z return+3
    // CIA2->TIMER_A_CONTROL = CIA_TIMER_CONTROL_START | CIA_TIMER_CONTROL_CONTINUOUS | CIA_TIMER_CONTROL_A_COUNT_CYCLES
    // [87] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START -- _deref_pbuc1=vbuc2 
    // Start the timer
    lda #CIA_TIMER_CONTROL_START
    sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
    // clock::@return
    // }
    // [88] return 
    rts
}
  // print_ulong_at
// Print a unsigned long as HEX at a specific position
// void print_ulong_at(__zp($c) unsigned long dw, char *at)
print_ulong_at: {
    .label dw = $c
    // print_uint_at(WORD1(dw), at)
    // [89] print_uint_at::w#0 = word1  print_ulong_at::dw#0 -- vwuz1=_word1_vduz2 
    lda.z dw+2
    sta.z print_uint_at.w
    lda.z dw+3
    sta.z print_uint_at.w+1
    // [90] call print_uint_at
    // [117] phi from print_ulong_at to print_uint_at [phi:print_ulong_at->print_uint_at]
    // [117] phi print_uint_at::at#2 = main::BASE_SCREEN [phi:print_ulong_at->print_uint_at#0] -- pbuz1=pbuc1 
    lda #<main.BASE_SCREEN
    sta.z print_uint_at.at
    lda #>main.BASE_SCREEN
    sta.z print_uint_at.at+1
    // [117] phi print_uint_at::w#2 = print_uint_at::w#0 [phi:print_ulong_at->print_uint_at#1] -- register_copy 
    jsr print_uint_at
    // print_ulong_at::@1
    // print_uint_at(WORD0(dw), at+4)
    // [91] print_uint_at::w#1 = word0  print_ulong_at::dw#0 -- vwuz1=_word0_vduz2 
    lda.z dw
    sta.z print_uint_at.w
    lda.z dw+1
    sta.z print_uint_at.w+1
    // [92] call print_uint_at
    // [117] phi from print_ulong_at::@1 to print_uint_at [phi:print_ulong_at::@1->print_uint_at]
    // [117] phi print_uint_at::at#2 = main::BASE_SCREEN+4 [phi:print_ulong_at::@1->print_uint_at#0] -- pbuz1=pbuc1 
    lda #<main.BASE_SCREEN+4
    sta.z print_uint_at.at
    lda #>main.BASE_SCREEN+4
    sta.z print_uint_at.at+1
    // [117] phi print_uint_at::w#2 = print_uint_at::w#1 [phi:print_ulong_at::@1->print_uint_at#1] -- register_copy 
    jsr print_uint_at
    // print_ulong_at::@return
    // }
    // [93] return 
    rts
}
  // init_squares
// Initialize squares table
// Uses iterative formula (x+1)^2 = x^2 + 2*x + 1
init_squares: {
    .label squares = $13
    .label sqr = $a
    // malloc(NUM_SQUARES*sizeof(unsigned int))
    // [95] call malloc
    // [125] phi from init_squares to malloc [phi:init_squares->malloc]
    jsr malloc
    // [96] phi from init_squares to init_squares::@1 [phi:init_squares->init_squares::@1]
    // [96] phi init_squares::squares#2 = SQUARES#0 [phi:init_squares->init_squares::@1#0] -- pwuz1=pwuc1 
    lda #<SQUARES
    sta.z squares
    lda #>SQUARES
    sta.z squares+1
    // [96] phi init_squares::sqr#2 = 0 [phi:init_squares->init_squares::@1#1] -- vwuz1=vwuc1 
    lda #<0
    sta.z sqr
    sta.z sqr+1
    // [96] phi init_squares::i#2 = 0 [phi:init_squares->init_squares::@1#2] -- vbuxx=vbuc1 
    tax
    // init_squares::@1
  __b1:
    // for(char i=0;i<NUM_SQUARES;i++)
    // [97] 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
    // }
    // [98] return 
    rts
    // init_squares::@2
  __b2:
    // *squares++ = sqr
    // [99] *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;
    // [100] 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
    // [101] init_squares::$3 = init_squares::i#2 << 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // i*2+1
    // [102] init_squares::$4 = init_squares::$3 + 1 -- vbuaa=vbuaa_plus_1 
    clc
    adc #1
    // sqr += i*2+1
    // [103] 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++)
    // [104] init_squares::i#1 = ++ init_squares::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [96] phi from init_squares::@2 to init_squares::@1 [phi:init_squares::@2->init_squares::@1]
    // [96] phi init_squares::squares#2 = init_squares::squares#1 [phi:init_squares::@2->init_squares::@1#0] -- register_copy 
    // [96] phi init_squares::sqr#2 = init_squares::sqr#1 [phi:init_squares::@2->init_squares::@1#1] -- register_copy 
    // [96] 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($13) unsigned int sqr(__register(A) char val)
sqr: {
    .label return = $13
    .label return_1 = $11
    // return SQUARES[val];
    // [106] sqr::$0 = sqr::val#2 << 1 -- vbuaa=vbuaa_rol_1 
    asl
    // [107] sqr::return#0 = SQUARES#0[sqr::$0] -- vwuz1=pwuc1_derefidx_vbuaa 
    tay
    lda SQUARES,y
    sta.z return
    lda SQUARES+1,y
    sta.z return+1
    // sqr::@return
    // }
    // [108] 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($13) unsigned int val)
sqrt: {
    .label __1 = $a
    .label __2 = $a
    .label found = $a
    .label val = $13
    // unsigned int* found = bsearch16u(val, SQUARES, NUM_SQUARES)
    // [109] bsearch16u::key#0 = sqrt::val#0
    // [110] call bsearch16u
    // [127] phi from sqrt to bsearch16u [phi:sqrt->bsearch16u]
    jsr bsearch16u
    // unsigned int* found = bsearch16u(val, SQUARES, NUM_SQUARES)
    // [111] bsearch16u::return#3 = bsearch16u::return#1
    // sqrt::@1
    // [112] sqrt::found#0 = bsearch16u::return#3
    // found-SQUARES
    // [113] sqrt::$2 = sqrt::found#0 - SQUARES#0 -- vwuz1=pwuz1_minus_pwuc1 
    lda.z __2
    sec
    sbc #<SQUARES
    sta.z __2
    lda.z __2+1
    sbc #>SQUARES
    sta.z __2+1
    // [114] sqrt::$1 = sqrt::$2 >> 1 -- vwuz1=vwuz1_ror_1 
    lsr.z __1+1
    ror.z __1
    // char sq = (char)(found-SQUARES)
    // [115] sqrt::return#0 = (char)sqrt::$1 -- vbuaa=_byte_vwuz1 
    lda.z __1
    // sqrt::@return
    // }
    // [116] return 
    rts
}
  // print_uint_at
// Print a unsigned int as HEX at a specific position
// void print_uint_at(__zp($13) unsigned int w, __zp($a) char *at)
print_uint_at: {
    .label w = $13
    .label at = $a
    // print_uchar_at(BYTE1(w), at)
    // [118] print_uchar_at::b#0 = byte1  print_uint_at::w#2 -- vbuz1=_byte1_vwuz2 
    lda.z w+1
    sta.z print_uchar_at.b
    // [119] print_uchar_at::at#0 = print_uint_at::at#2
    // [120] call print_uchar_at
    // [146] phi from print_uint_at to print_uchar_at [phi:print_uint_at->print_uchar_at]
    // [146] phi print_uchar_at::at#2 = print_uchar_at::at#0 [phi:print_uint_at->print_uchar_at#0] -- register_copy 
    // [146] phi print_uchar_at::b#2 = print_uchar_at::b#0 [phi:print_uint_at->print_uchar_at#1] -- register_copy 
    jsr print_uchar_at
    // print_uint_at::@1
    // print_uchar_at(BYTE0(w), at+2)
    // [121] print_uchar_at::b#1 = byte0  print_uint_at::w#2 -- vbuz1=_byte0_vwuz2 
    lda.z w
    sta.z print_uchar_at.b
    // [122] print_uchar_at::at#1 = print_uint_at::at#2 + 2 -- pbuz1=pbuz1_plus_vbuc1 
    lda #2
    clc
    adc.z print_uchar_at.at
    sta.z print_uchar_at.at
    bcc !+
    inc.z print_uchar_at.at+1
  !:
    // [123] call print_uchar_at
    // [146] phi from print_uint_at::@1 to print_uchar_at [phi:print_uint_at::@1->print_uchar_at]
    // [146] phi print_uchar_at::at#2 = print_uchar_at::at#1 [phi:print_uint_at::@1->print_uchar_at#0] -- register_copy 
    // [146] phi print_uchar_at::b#2 = print_uchar_at::b#1 [phi:print_uint_at::@1->print_uchar_at#1] -- register_copy 
    jsr print_uchar_at
    // print_uint_at::@return
    // }
    // [124] 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(unsigned int size)
malloc: {
    .const size = NUM_SQUARES*SIZEOF_UNSIGNED_INT
    .label mem = HEAP_TOP-size
    .label return = mem
    // malloc::@return
    // [126] return 
    rts
}
  // bsearch16u
// Searches an array of nitems unsigned ints, the initial member of which is pointed to by base, for a member that matches the value key.
// - key - The value to look for
// - items - Pointer to the start of the array to search in
// - num - The number of items in the array
// Returns pointer to an entry in the array that matches the search key
// __zp($a) unsigned int * bsearch16u(__zp($13) unsigned int key, __zp($a) unsigned int *items, __register(X) char num)
bsearch16u: {
    .label __2 = $a
    .label pivot = $15
    .label result = $17
    .label return = $a
    .label items = $a
    .label key = $13
    // [128] phi from bsearch16u to bsearch16u::@3 [phi:bsearch16u->bsearch16u::@3]
    // [128] phi bsearch16u::items#2 = SQUARES#0 [phi:bsearch16u->bsearch16u::@3#0] -- pwuz1=pwuc1 
    lda #<SQUARES
    sta.z items
    lda #>SQUARES
    sta.z items+1
    // [128] phi bsearch16u::num#3 = NUM_SQUARES#2 [phi:bsearch16u->bsearch16u::@3#1] -- vbuxx=vbuc1 
    ldx #NUM_SQUARES
    // bsearch16u::@3
  __b3:
    // while (num > 0)
    // [129] if(bsearch16u::num#3>0) goto bsearch16u::@4 -- vbuxx_gt_0_then_la1 
    cpx #0
    bne __b4
    // bsearch16u::@5
    // *items<=key?items:items-1
    // [130] 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
    // [131] 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
    // [132] phi from bsearch16u::@1 bsearch16u::@5 to bsearch16u::@2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2]
    // [132] phi bsearch16u::return#2 = bsearch16u::$2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2#0] -- register_copy 
    // bsearch16u::@2
  __b2:
    // [133] phi from bsearch16u::@2 bsearch16u::@8 to bsearch16u::@return [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return]
    // [133] phi bsearch16u::return#1 = bsearch16u::return#2 [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return#0] -- register_copy 
    // bsearch16u::@return
    // }
    // [134] return 
    rts
    // bsearch16u::@4
  __b4:
    // num >> 1
    // [135] bsearch16u::$6 = bsearch16u::num#3 >> 1 -- vbuaa=vbuxx_ror_1 
    txa
    lsr
    // unsigned int* pivot = items + (num >> 1)
    // [136] bsearch16u::$14 = bsearch16u::$6 << 1 -- vbuaa=vbuaa_rol_1 
    asl
    // [137] 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
    // [138] 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)
    // [139] if(bsearch16u::result#0!=0) goto bsearch16u::@6 -- vwsz1_neq_0_then_la1 
    ora.z result
    bne __b6
    // bsearch16u::@8
    // [140] 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)
    // [141] 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
    // [142] 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--;
    // [143] bsearch16u::num#1 = -- bsearch16u::num#3 -- vbuxx=_dec_vbuxx 
    dex
    // [144] phi from bsearch16u::@6 bsearch16u::@9 to bsearch16u::@7 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7]
    // [144] phi bsearch16u::items#8 = bsearch16u::items#2 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#0] -- register_copy 
    // [144] phi bsearch16u::num#5 = bsearch16u::num#3 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#1] -- register_copy 
    // bsearch16u::@7
  __b7:
    // num >>= 1
    // [145] bsearch16u::num#0 = bsearch16u::num#5 >> 1 -- vbuxx=vbuxx_ror_1 
    txa
    lsr
    tax
    // [128] phi from bsearch16u::@7 to bsearch16u::@3 [phi:bsearch16u::@7->bsearch16u::@3]
    // [128] phi bsearch16u::items#2 = bsearch16u::items#8 [phi:bsearch16u::@7->bsearch16u::@3#0] -- register_copy 
    // [128] phi bsearch16u::num#3 = bsearch16u::num#0 [phi:bsearch16u::@7->bsearch16u::@3#1] -- register_copy 
    jmp __b3
}
  // print_uchar_at
// Print a char as HEX at a specific position
// void print_uchar_at(__zp($10) char b, __zp($a) char *at)
print_uchar_at: {
    .label b = $10
    .label at = $a
    // b>>4
    // [147] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 -- vbuaa=vbuz1_ror_4 
    lda.z b
    lsr
    lsr
    lsr
    lsr
    // print_char_at(print_hextab[b>>4], at)
    // [148] print_char_at::ch#0 = print_hextab[print_uchar_at::$0] -- vbuxx=pbuc1_derefidx_vbuaa 
    tay
    ldx print_hextab,y
    // [149] print_char_at::at#0 = print_uchar_at::at#2 -- pbuz1=pbuz2 
    lda.z at
    sta.z print_char_at.at
    lda.z at+1
    sta.z print_char_at.at+1
    // [150] call print_char_at
  // Table of hexadecimal digits
    // [156] phi from print_uchar_at to print_char_at [phi:print_uchar_at->print_char_at]
    // [156] phi print_char_at::at#2 = print_char_at::at#0 [phi:print_uchar_at->print_char_at#0] -- register_copy 
    // [156] phi print_char_at::ch#2 = print_char_at::ch#0 [phi:print_uchar_at->print_char_at#1] -- register_copy 
    jsr print_char_at
    // print_uchar_at::@1
    // b&$f
    // [151] print_uchar_at::$2 = print_uchar_at::b#2 & $f -- vbuyy=vbuz1_band_vbuc1 
    lda #$f
    and.z b
    tay
    // print_char_at(print_hextab[b&$f], at+1)
    // [152] print_char_at::at#1 = print_uchar_at::at#2 + 1 -- pbuz1=pbuz2_plus_1 
    clc
    lda.z at
    adc #1
    sta.z print_char_at.at
    lda.z at+1
    adc #0
    sta.z print_char_at.at+1
    // [153] print_char_at::ch#1 = print_hextab[print_uchar_at::$2] -- vbuxx=pbuc1_derefidx_vbuyy 
    ldx print_hextab,y
    // [154] call print_char_at
    // [156] phi from print_uchar_at::@1 to print_char_at [phi:print_uchar_at::@1->print_char_at]
    // [156] phi print_char_at::at#2 = print_char_at::at#1 [phi:print_uchar_at::@1->print_char_at#0] -- register_copy 
    // [156] phi print_char_at::ch#2 = print_char_at::ch#1 [phi:print_uchar_at::@1->print_char_at#1] -- register_copy 
    jsr print_char_at
    // print_uchar_at::@return
    // }
    // [155] return 
    rts
}
  // print_char_at
// Print a single char
// void print_char_at(__register(X) char ch, __zp($11) char *at)
print_char_at: {
    .label at = $11
    // *(at) = ch
    // [157] *print_char_at::at#2 = print_char_at::ch#2 -- _deref_pbuz1=vbuxx 
    txa
    ldy #0
    sta (at),y
    // print_char_at::@return
    // }
    // [158] return 
    rts
}
  // File Data
.segment Data
  // Bit patterns for symbols 0-f (3x5 pixels) used in font hex
  FONT_HEX_PROTO: .byte 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4
  print_hextab: .text "0123456789abcdef"

