Fixing pointer addition (word*~) bsearch16u::$7 ← (word*) bsearch16u::items + (byte~) bsearch16u::$6
Fixing pointer addition (word*~) bsearch16u::$15 ← (word*) bsearch16u::pivot + (number) 1
Fixing pointer addition (word*~) bsearch16u::$1 ← (word*) bsearch16u::items - (number) 1
Fixing pointer increment (word*) init_squares::squares ← ++ (word*) init_squares::squares
Fixing pointer addition (word~) sqrt::$1 ← (word*) sqrt::found - (word*) SQUARES
Fixing pointer array-indexing *((word*) utoa::digit_values + (byte) utoa::digit)
Fixing pointer array-indexing *((dword*) ultoa::digit_values + (byte) ultoa::digit)
Fixing pointer array-indexing *((word*) SQUARES + (byte) sqr::val)
Fixing pointer array-indexing *((word[CORDIC_ITERATIONS_16]) CORDIC_ATAN2_ANGLES_16 + (byte) atan2_16::i)
Fixing pointer array-indexing *((word[CORDIC_ITERATIONS_16]) CORDIC_ATAN2_ANGLES_16 + (byte) atan2_16::i)
Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src)
Warning! Adding boolean cast to non-boolean sub-expression (byte) atan2_16::shift
Identified constant variable (byte*) HEAP_TOP
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx 
Inlined call (byte~) main::$5 ← call toD018 (byte*) SCREEN1 (byte*) CHARSET 
Inlined call (byte~) main::$7 ← call toD018 (byte*) SCREEN2 (byte*) CHARSET 
Culled Empty Block (label) @1
Culled Empty Block (label) @2
Culled Empty Block (label) @3
Culled Empty Block (label) @4
Culled Empty Block (label) @5
Culled Empty Block (label) @6
Culled Empty Block (label) memset::@5
Culled Empty Block (label) memset::@3
Culled Empty Block (label) @7
Culled Empty Block (label) malloc::@1
Culled Empty Block (label) @9
Culled Empty Block (label) @10
Culled Empty Block (label) @11
Culled Empty Block (label) bsearch16u::@11
Culled Empty Block (label) bsearch16u::@12
Culled Empty Block (label) bsearch16u::@14
Culled Empty Block (label) bsearch16u::@16
Culled Empty Block (label) bsearch16u::@17
Culled Empty Block (label) bsearch16u::@4
Culled Empty Block (label) bsearch16u::@5
Culled Empty Block (label) @12
Culled Empty Block (label) @13
Culled Empty Block (label) @14
Culled Empty Block (label) @15
Culled Empty Block (label) init_squares::@2
Culled Empty Block (label) @17
Culled Empty Block (label) sqr::@1
Culled Empty Block (label) @18
Culled Empty Block (label) sqrt::@1
Culled Empty Block (label) atan2_16::@9
Culled Empty Block (label) atan2_16::@10
Culled Empty Block (label) atan2_16::@11
Culled Empty Block (label) atan2_16::@12
Culled Empty Block (label) atan2_16::@28
Culled Empty Block (label) atan2_16::@29
Culled Empty Block (label) atan2_16::@21
Culled Empty Block (label) atan2_16::@22
Culled Empty Block (label) atan2_16::@23
Culled Empty Block (label) atan2_16::@31
Culled Empty Block (label) atan2_16::@32
Culled Empty Block (label) atan2_16::@14
Culled Empty Block (label) @20
Culled Empty Block (label) @22
Culled Empty Block (label) @23
Culled Empty Block (label) @24
Culled Empty Block (label) @25
Culled Empty Block (label) @26
Culled Empty Block (label) @27
Culled Empty Block (label) @28
Culled Empty Block (label) @29
Culled Empty Block (label) @30
Culled Empty Block (label) @31
Culled Empty Block (label) @32
Culled Empty Block (label) @33
Culled Empty Block (label) @34
Culled Empty Block (label) @35
Culled Empty Block (label) @36
Culled Empty Block (label) @37
Culled Empty Block (label) @38
Culled Empty Block (label) @39
Culled Empty Block (label) @40
Culled Empty Block (label) @41
Culled Empty Block (label) @42
Culled Empty Block (label) @43
Culled Empty Block (label) @45
Culled Empty Block (label) sid_rnd::@1
Culled Empty Block (label) main::toD0181_@1
Culled Empty Block (label) main::toD0182_@1
Culled Empty Block (label) main::@4
Culled Empty Block (label) main::@3
Culled Empty Block (label) main::@5
Culled Empty Block (label) main::@6
Culled Empty Block (label) @48
Culled Empty Block (label) init_angle_screen::@4
Culled Empty Block (label) @49
Culled Empty Block (label) init_dist_screen::@13
Culled Empty Block (label) init_dist_screen::@14
Culled Empty Block (label) init_dist_screen::@9
Culled Empty Block (label) init_dist_screen::@10
Culled Empty Block (label) init_dist_screen::@12
Culled Empty Block (label) @50
Culled Empty Block (label) make_plasma_charset::@10

CONTROL FLOW GRAPH SSA
@begin: scope:[]  from
  (byte*) D018#0 ← ((byte*)) (number) $d018
  (byte*) COLS#0 ← ((byte*)) (number) $d800
  (byte) BLACK#0 ← (number) 0
  to:@8
memset: scope:[memset]  from main::@11 print_cls
  (byte) memset::c#4 ← phi( main::@11/(byte) memset::c#1 print_cls/(byte) memset::c#0 )
  (void*) memset::str#4 ← phi( main::@11/(void*) memset::str#1 print_cls/(void*) memset::str#0 )
  (word) memset::num#2 ← phi( main::@11/(word) memset::num#1 print_cls/(word) memset::num#0 )
  (bool~) memset::$0 ← (word) memset::num#2 > (number) 0
  (bool~) memset::$1 ← ! (bool~) memset::$0
  if((bool~) memset::$1) goto memset::@1
  to:memset::@2
memset::@1: scope:[memset]  from memset memset::@4
  (void*) memset::str#2 ← phi( memset/(void*) memset::str#4 memset::@4/(void*) memset::str#5 )
  (void*) memset::return#0 ← (void*) memset::str#2
  to:memset::@return
memset::@2: scope:[memset]  from memset
  (byte) memset::c#3 ← phi( memset/(byte) memset::c#4 )
  (word) memset::num#3 ← phi( memset/(word) memset::num#2 )
  (void*) memset::str#3 ← phi( memset/(void*) memset::str#4 )
  (byte*~) memset::$2 ← ((byte*)) (void*) memset::str#3
  (byte*~) memset::$3 ← (byte*~) memset::$2 + (word) memset::num#3
  (byte*) memset::end#0 ← (byte*~) memset::$3
  (byte*) memset::dst#0 ← ((byte*)) (void*) memset::str#3
  to:memset::@4
memset::@4: scope:[memset]  from memset::@2 memset::@4
  (void*) memset::str#5 ← phi( memset::@2/(void*) memset::str#3 memset::@4/(void*) memset::str#5 )
  (byte*) memset::end#1 ← phi( memset::@2/(byte*) memset::end#0 memset::@4/(byte*) memset::end#1 )
  (byte*) memset::dst#2 ← phi( memset::@2/(byte*) memset::dst#0 memset::@4/(byte*) memset::dst#1 )
  (byte) memset::c#2 ← phi( memset::@2/(byte) memset::c#3 memset::@4/(byte) memset::c#2 )
  *((byte*) memset::dst#2) ← (byte) memset::c#2
  (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
  (bool~) memset::$4 ← (byte*) memset::dst#1 != (byte*) memset::end#1
  if((bool~) memset::$4) goto memset::@4
  to:memset::@1
memset::@return: scope:[memset]  from memset::@1
  (void*) memset::return#4 ← phi( memset::@1/(void*) memset::return#0 )
  (void*) memset::return#1 ← (void*) memset::return#4
  return 
  to:@return
@8: scope:[]  from @begin
  (byte*) HEAP_TOP#0 ← ((byte*)) (number) $a000
  (byte*) heap_head#0 ← (byte*) HEAP_TOP#0
  to:@16
malloc: scope:[malloc]  from @46 @52 init_squares
  (word) malloc::size#3 ← phi( @46/(word) malloc::size#1 @52/(word) malloc::size#2 init_squares/(word) malloc::size#0 )
  (byte*) heap_head#12 ← phi( @46/(byte*) heap_head#23 @52/(byte*) heap_head#5 init_squares/(byte*) heap_head#24 )
  (byte*~) malloc::$0 ← (byte*) heap_head#12 - (word) malloc::size#3
  (byte*) malloc::mem#0 ← (byte*~) malloc::$0
  (byte*) heap_head#1 ← (byte*) malloc::mem#0
  (void*) malloc::return#0 ← ((void*)) (byte*) malloc::mem#0
  to:malloc::@return
malloc::@return: scope:[malloc]  from malloc
  (byte*) heap_head#13 ← phi( malloc/(byte*) heap_head#1 )
  (void*) malloc::return#5 ← phi( malloc/(void*) malloc::return#0 )
  (void*) malloc::return#1 ← (void*) malloc::return#5
  (byte*) heap_head#2 ← (byte*) heap_head#13
  return 
  to:@return
bsearch16u: scope:[bsearch16u]  from sqrt
  (word) bsearch16u::key#4 ← phi( sqrt/(word) bsearch16u::key#0 )
  (word*) bsearch16u::items#7 ← phi( sqrt/(word*) bsearch16u::items#1 )
  (byte) bsearch16u::num#7 ← phi( sqrt/(byte) bsearch16u::num#2 )
  to:bsearch16u::@6
bsearch16u::@6: scope:[bsearch16u]  from bsearch16u bsearch16u::@10
  (word) bsearch16u::key#3 ← phi( bsearch16u/(word) bsearch16u::key#4 bsearch16u::@10/(word) bsearch16u::key#5 )
  (word*) bsearch16u::items#6 ← phi( bsearch16u/(word*) bsearch16u::items#7 bsearch16u::@10/(word*) bsearch16u::items#8 )
  (byte) bsearch16u::num#3 ← phi( bsearch16u/(byte) bsearch16u::num#7 bsearch16u::@10/(byte) bsearch16u::num#0 )
  (bool~) bsearch16u::$5 ← (byte) bsearch16u::num#3 > (number) 0
  if((bool~) bsearch16u::$5) goto bsearch16u::@7
  to:bsearch16u::@8
bsearch16u::@7: scope:[bsearch16u]  from bsearch16u::@6
  (word) bsearch16u::key#1 ← phi( bsearch16u::@6/(word) bsearch16u::key#3 )
  (word*) bsearch16u::items#2 ← phi( bsearch16u::@6/(word*) bsearch16u::items#6 )
  (byte) bsearch16u::num#4 ← phi( bsearch16u::@6/(byte) bsearch16u::num#3 )
  (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#4 >> (number) 1
  (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 * (const byte) SIZEOF_WORD
  (word*~) bsearch16u::$7 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16
  (word*) bsearch16u::pivot#0 ← (word*~) bsearch16u::$7
  (signed word~) bsearch16u::$8 ← ((signed word)) (word) bsearch16u::key#1
  (signed word~) bsearch16u::$9 ← ((signed word)) *((word*) bsearch16u::pivot#0)
  (signed word~) bsearch16u::$10 ← (signed word~) bsearch16u::$8 - (signed word~) bsearch16u::$9
  (signed word) bsearch16u::result#0 ← (signed word~) bsearch16u::$10
  (bool~) bsearch16u::$11 ← (signed word) bsearch16u::result#0 == (number) 0
  (bool~) bsearch16u::$12 ← ! (bool~) bsearch16u::$11
  if((bool~) bsearch16u::$12) goto bsearch16u::@9
  to:bsearch16u::@13
bsearch16u::@8: scope:[bsearch16u]  from bsearch16u::@6
  (word) bsearch16u::key#2 ← phi( bsearch16u::@6/(word) bsearch16u::key#3 )
  (word*) bsearch16u::items#3 ← phi( bsearch16u::@6/(word*) bsearch16u::items#6 )
  (bool~) bsearch16u::$0 ← *((word*) bsearch16u::items#3) <= (word) bsearch16u::key#2
  if((bool~) bsearch16u::$0) goto bsearch16u::@1
  to:bsearch16u::@2
bsearch16u::@9: scope:[bsearch16u]  from bsearch16u::@7
  (word) bsearch16u::key#7 ← phi( bsearch16u::@7/(word) bsearch16u::key#1 )
  (word*) bsearch16u::items#9 ← phi( bsearch16u::@7/(word*) bsearch16u::items#2 )
  (word*) bsearch16u::pivot#3 ← phi( bsearch16u::@7/(word*) bsearch16u::pivot#0 )
  (byte) bsearch16u::num#8 ← phi( bsearch16u::@7/(byte) bsearch16u::num#4 )
  (signed word) bsearch16u::result#1 ← phi( bsearch16u::@7/(signed word) bsearch16u::result#0 )
  (bool~) bsearch16u::$13 ← (signed word) bsearch16u::result#1 > (number) 0
  (bool~) bsearch16u::$14 ← ! (bool~) bsearch16u::$13
  if((bool~) bsearch16u::$14) goto bsearch16u::@10
  to:bsearch16u::@15
bsearch16u::@13: scope:[bsearch16u]  from bsearch16u::@7
  (word*) bsearch16u::pivot#1 ← phi( bsearch16u::@7/(word*) bsearch16u::pivot#0 )
  (word*) bsearch16u::return#0 ← (word*) bsearch16u::pivot#1
  to:bsearch16u::@return
bsearch16u::@return: scope:[bsearch16u]  from bsearch16u::@13 bsearch16u::@3
  (word*) bsearch16u::return#4 ← phi( bsearch16u::@13/(word*) bsearch16u::return#0 bsearch16u::@3/(word*) bsearch16u::return#2 )
  (word*) bsearch16u::return#1 ← (word*) bsearch16u::return#4
  return 
  to:@return
bsearch16u::@10: scope:[bsearch16u]  from bsearch16u::@15 bsearch16u::@9
  (word) bsearch16u::key#5 ← phi( bsearch16u::@15/(word) bsearch16u::key#6 bsearch16u::@9/(word) bsearch16u::key#7 )
  (word*) bsearch16u::items#8 ← phi( bsearch16u::@15/(word*) bsearch16u::items#0 bsearch16u::@9/(word*) bsearch16u::items#9 )
  (byte) bsearch16u::num#5 ← phi( bsearch16u::@15/(byte) bsearch16u::num#1 bsearch16u::@9/(byte) bsearch16u::num#8 )
  (byte) bsearch16u::num#0 ← (byte) bsearch16u::num#5 >> (number) 1
  to:bsearch16u::@6
bsearch16u::@15: scope:[bsearch16u]  from bsearch16u::@9
  (word) bsearch16u::key#6 ← phi( bsearch16u::@9/(word) bsearch16u::key#7 )
  (byte) bsearch16u::num#6 ← phi( bsearch16u::@9/(byte) bsearch16u::num#8 )
  (word*) bsearch16u::pivot#2 ← phi( bsearch16u::@9/(word*) bsearch16u::pivot#3 )
  (number~) bsearch16u::$17 ← (number) 1 * (const byte) SIZEOF_WORD
  (word*~) bsearch16u::$15 ← (word*) bsearch16u::pivot#2 + (number~) bsearch16u::$17
  (word*) bsearch16u::items#0 ← (word*~) bsearch16u::$15
  (byte) bsearch16u::num#1 ← -- (byte) bsearch16u::num#6
  to:bsearch16u::@10
bsearch16u::@1: scope:[bsearch16u]  from bsearch16u::@8
  (word*) bsearch16u::items#4 ← phi( bsearch16u::@8/(word*) bsearch16u::items#3 )
  (word*~) bsearch16u::$3 ← (word*) bsearch16u::items#4
  to:bsearch16u::@3
bsearch16u::@2: scope:[bsearch16u]  from bsearch16u::@8
  (word*) bsearch16u::items#5 ← phi( bsearch16u::@8/(word*) bsearch16u::items#3 )
  (number~) bsearch16u::$18 ← (number) 1 * (const byte) SIZEOF_WORD
  (word*~) bsearch16u::$1 ← (word*) bsearch16u::items#5 - (number~) bsearch16u::$18
  (word*~) bsearch16u::$2 ← (word*~) bsearch16u::$1
  to:bsearch16u::@3
bsearch16u::@3: scope:[bsearch16u]  from bsearch16u::@1 bsearch16u::@2
  (word*~) bsearch16u::$4 ← phi( bsearch16u::@1/(word*~) bsearch16u::$3 bsearch16u::@2/(word*~) bsearch16u::$2 )
  (word*) bsearch16u::return#2 ← (word*~) bsearch16u::$4
  to:bsearch16u::@return
@16: scope:[]  from @8
  (byte*) heap_head#44 ← phi( @8/(byte*) heap_head#0 )
  (byte) NUM_SQUARES#0 ← (number) $ff
  (word*) SQUARES#0 ← (word*) 0
  to:@19
init_squares: scope:[init_squares]  from init_dist_screen
  (byte*) heap_head#24 ← phi( init_dist_screen/(byte*) heap_head#28 )
  (byte) NUM_SQUARES#6 ← phi( init_dist_screen/(byte) NUM_SQUARES#3 )
  (byte~) init_squares::$0 ← (byte) NUM_SQUARES#6 * (const byte) SIZEOF_WORD
  (word) malloc::size#0 ← (byte~) init_squares::$0
  call malloc 
  (void*) malloc::return#2 ← (void*) malloc::return#1
  to:init_squares::@3
init_squares::@3: scope:[init_squares]  from init_squares
  (byte) NUM_SQUARES#7 ← phi( init_squares/(byte) NUM_SQUARES#6 )
  (byte*) heap_head#14 ← phi( init_squares/(byte*) heap_head#2 )
  (void*) malloc::return#6 ← phi( init_squares/(void*) malloc::return#2 )
  (void*~) init_squares::$1 ← (void*) malloc::return#6
  (byte*) heap_head#3 ← (byte*) heap_head#14
  (word*) SQUARES#1 ← ((word*)) (void*~) init_squares::$1
  (word*) init_squares::squares#0 ← (word*) SQUARES#1
  (word) init_squares::sqr#0 ← (number) 0
  (number~) init_squares::$2 ← (byte) NUM_SQUARES#7 - (number) 1
  (byte) init_squares::i#0 ← (byte) 0
  to:init_squares::@1
init_squares::@1: scope:[init_squares]  from init_squares::@1 init_squares::@3
  (word*) SQUARES#17 ← phi( init_squares::@1/(word*) SQUARES#17 init_squares::@3/(word*) SQUARES#1 )
  (byte*) heap_head#25 ← phi( init_squares::@1/(byte*) heap_head#25 init_squares::@3/(byte*) heap_head#3 )
  (byte) init_squares::i#2 ← phi( init_squares::@1/(byte) init_squares::i#1 init_squares::@3/(byte) init_squares::i#0 )
  (word*) init_squares::squares#2 ← phi( init_squares::@1/(word*) init_squares::squares#1 init_squares::@3/(word*) init_squares::squares#0 )
  (word) init_squares::sqr#2 ← phi( init_squares::@1/(word) init_squares::sqr#1 init_squares::@3/(word) init_squares::sqr#0 )
  *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2
  (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD
  (number~) init_squares::$3 ← (byte) init_squares::i#2 * (number) 2
  (number~) init_squares::$4 ← (number~) init_squares::$3 + (number) 1
  (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (number~) init_squares::$4
  (byte) init_squares::i#1 ← (byte) init_squares::i#2 + rangenext(0,init_squares::$2)
  (bool~) init_squares::$5 ← (byte) init_squares::i#1 != rangelast(0,init_squares::$2)
  if((bool~) init_squares::$5) goto init_squares::@1
  to:init_squares::@return
init_squares::@return: scope:[init_squares]  from init_squares::@1
  (word*) SQUARES#8 ← phi( init_squares::@1/(word*) SQUARES#17 )
  (byte*) heap_head#15 ← phi( init_squares::@1/(byte*) heap_head#25 )
  (byte*) heap_head#4 ← (byte*) heap_head#15
  (word*) SQUARES#2 ← (word*) SQUARES#8
  return 
  to:@return
sqr: scope:[sqr]  from init_dist_screen::@4 init_dist_screen::@8
  (word*) SQUARES#9 ← phi( init_dist_screen::@4/(word*) SQUARES#18 init_dist_screen::@8/(word*) SQUARES#19 )
  (byte) sqr::val#2 ← phi( init_dist_screen::@4/(byte) sqr::val#0 init_dist_screen::@8/(byte) sqr::val#1 )
  (byte~) sqr::$0 ← (byte) sqr::val#2 * (const byte) SIZEOF_WORD
  (word) sqr::return#0 ← *((word*) SQUARES#9 + (byte~) sqr::$0)
  to:sqr::@return
sqr::@return: scope:[sqr]  from sqr
  (word) sqr::return#4 ← phi( sqr/(word) sqr::return#0 )
  (word) sqr::return#1 ← (word) sqr::return#4
  return 
  to:@return
sqrt: scope:[sqrt]  from init_dist_screen::@17
  (byte) NUM_SQUARES#8 ← phi( init_dist_screen::@17/(byte) NUM_SQUARES#13 )
  (word*) SQUARES#10 ← phi( init_dist_screen::@17/(word*) SQUARES#20 )
  (word) sqrt::val#1 ← phi( init_dist_screen::@17/(word) sqrt::val#0 )
  (word) bsearch16u::key#0 ← (word) sqrt::val#1
  (word*) bsearch16u::items#1 ← (word*) SQUARES#10
  (byte) bsearch16u::num#2 ← (byte) NUM_SQUARES#8
  call bsearch16u 
  (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1
  to:sqrt::@2
sqrt::@2: scope:[sqrt]  from sqrt
  (word*) SQUARES#11 ← phi( sqrt/(word*) SQUARES#10 )
  (word*) bsearch16u::return#5 ← phi( sqrt/(word*) bsearch16u::return#3 )
  (word*~) sqrt::$0 ← (word*) bsearch16u::return#5
  (word*) sqrt::found#0 ← (word*~) sqrt::$0
  (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*) SQUARES#11
  (word~) sqrt::$1 ← (word~) sqrt::$3 / (const byte) SIZEOF_WORD
  (byte~) sqrt::$2 ← ((byte)) (word~) sqrt::$1
  (byte) sqrt::sq#0 ← (byte~) sqrt::$2
  (byte) sqrt::return#0 ← (byte) sqrt::sq#0
  to:sqrt::@return
sqrt::@return: scope:[sqrt]  from sqrt::@2
  (byte) sqrt::return#3 ← phi( sqrt::@2/(byte) sqrt::return#0 )
  (byte) sqrt::return#1 ← (byte) sqrt::return#3
  return 
  to:@return
@19: scope:[]  from @16
  (word*) SQUARES#49 ← phi( @16/(word*) SQUARES#0 )
  (byte) NUM_SQUARES#42 ← phi( @16/(byte) NUM_SQUARES#0 )
  (byte*) heap_head#40 ← phi( @16/(byte*) heap_head#44 )
  (byte) CORDIC_ITERATIONS_16#0 ← (number) $f
  (word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 ← kickasm {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++)
        .word 256*2*256*atan(1/pow(2,i))/PI/2
 }}
  to:@21
atan2_16: scope:[atan2_16]  from init_angle_screen::@2
  (signed word) atan2_16::x#9 ← phi( init_angle_screen::@2/(signed word) atan2_16::x#0 )
  (signed word) atan2_16::y#1 ← phi( init_angle_screen::@2/(signed word) atan2_16::y#0 )
  (bool~) atan2_16::$0 ← (signed word) atan2_16::y#1 >= (number) 0
  if((bool~) atan2_16::$0) goto atan2_16::@1
  to:atan2_16::@2
atan2_16::@1: scope:[atan2_16]  from atan2_16
  (signed word) atan2_16::x#5 ← phi( atan2_16/(signed word) atan2_16::x#9 )
  (signed word) atan2_16::y#2 ← phi( atan2_16/(signed word) atan2_16::y#1 )
  (signed word~) atan2_16::$3 ← (signed word) atan2_16::y#2
  to:atan2_16::@3
atan2_16::@2: scope:[atan2_16]  from atan2_16
  (signed word) atan2_16::x#6 ← phi( atan2_16/(signed word) atan2_16::x#9 )
  (signed word) atan2_16::y#3 ← phi( atan2_16/(signed word) atan2_16::y#1 )
  (signed word~) atan2_16::$1 ← - (signed word) atan2_16::y#3
  (signed word~) atan2_16::$2 ← (signed word~) atan2_16::$1
  to:atan2_16::@3
atan2_16::@3: scope:[atan2_16]  from atan2_16::@1 atan2_16::@2
  (signed word) atan2_16::y#15 ← phi( atan2_16::@1/(signed word) atan2_16::y#2 atan2_16::@2/(signed word) atan2_16::y#3 )
  (signed word) atan2_16::x#1 ← phi( atan2_16::@1/(signed word) atan2_16::x#5 atan2_16::@2/(signed word) atan2_16::x#6 )
  (signed word~) atan2_16::$4 ← phi( atan2_16::@1/(signed word~) atan2_16::$3 atan2_16::@2/(signed word~) atan2_16::$2 )
  (signed word) atan2_16::yi#0 ← (signed word~) atan2_16::$4
  (bool~) atan2_16::$5 ← (signed word) atan2_16::x#1 >= (number) 0
  if((bool~) atan2_16::$5) goto atan2_16::@4
  to:atan2_16::@5
atan2_16::@4: scope:[atan2_16]  from atan2_16::@3
  (signed word) atan2_16::y#12 ← phi( atan2_16::@3/(signed word) atan2_16::y#15 )
  (signed word) atan2_16::yi#12 ← phi( atan2_16::@3/(signed word) atan2_16::yi#0 )
  (signed word) atan2_16::x#2 ← phi( atan2_16::@3/(signed word) atan2_16::x#1 )
  (signed word~) atan2_16::$8 ← (signed word) atan2_16::x#2
  to:atan2_16::@6
atan2_16::@5: scope:[atan2_16]  from atan2_16::@3
  (signed word) atan2_16::y#13 ← phi( atan2_16::@3/(signed word) atan2_16::y#15 )
  (signed word) atan2_16::yi#13 ← phi( atan2_16::@3/(signed word) atan2_16::yi#0 )
  (signed word) atan2_16::x#3 ← phi( atan2_16::@3/(signed word) atan2_16::x#1 )
  (signed word~) atan2_16::$6 ← - (signed word) atan2_16::x#3
  (signed word~) atan2_16::$7 ← (signed word~) atan2_16::$6
  to:atan2_16::@6
atan2_16::@6: scope:[atan2_16]  from atan2_16::@4 atan2_16::@5
  (signed word) atan2_16::y#9 ← phi( atan2_16::@4/(signed word) atan2_16::y#12 atan2_16::@5/(signed word) atan2_16::y#13 )
  (signed word) atan2_16::x#10 ← phi( atan2_16::@4/(signed word) atan2_16::x#2 atan2_16::@5/(signed word) atan2_16::x#3 )
  (signed word) atan2_16::yi#9 ← phi( atan2_16::@4/(signed word) atan2_16::yi#12 atan2_16::@5/(signed word) atan2_16::yi#13 )
  (signed word~) atan2_16::$9 ← phi( atan2_16::@4/(signed word~) atan2_16::$8 atan2_16::@5/(signed word~) atan2_16::$7 )
  (signed word) atan2_16::xi#0 ← (signed word~) atan2_16::$9
  (word) atan2_16::angle#0 ← (number) 0
  (number~) atan2_16::$16 ← (byte) CORDIC_ITERATIONS_16#0 - (number) 1
  (byte) atan2_16::i#0 ← (byte) 0
  to:atan2_16::@15
atan2_16::@15: scope:[atan2_16]  from atan2_16::@27 atan2_16::@6
  (signed word) atan2_16::y#7 ← phi( atan2_16::@27/(signed word) atan2_16::y#8 atan2_16::@6/(signed word) atan2_16::y#9 )
  (signed word) atan2_16::x#7 ← phi( atan2_16::@27/(signed word) atan2_16::x#8 atan2_16::@6/(signed word) atan2_16::x#10 )
  (word) atan2_16::angle#12 ← phi( atan2_16::@27/(word) atan2_16::angle#13 atan2_16::@6/(word) atan2_16::angle#0 )
  (byte) atan2_16::i#6 ← phi( atan2_16::@27/(byte) atan2_16::i#1 atan2_16::@6/(byte) atan2_16::i#0 )
  (signed word) atan2_16::xi#6 ← phi( atan2_16::@27/(signed word) atan2_16::xi#8 atan2_16::@6/(signed word) atan2_16::xi#0 )
  (signed word) atan2_16::yi#3 ← phi( atan2_16::@27/(signed word) atan2_16::yi#8 atan2_16::@6/(signed word) atan2_16::yi#9 )
  (bool~) atan2_16::$17 ← (signed word) atan2_16::yi#3 == (number) 0
  (bool~) atan2_16::$18 ← ! (bool~) atan2_16::$17
  if((bool~) atan2_16::$18) goto atan2_16::@16
  to:atan2_16::@17
atan2_16::@16: scope:[atan2_16]  from atan2_16::@15
  (signed word) atan2_16::y#19 ← phi( atan2_16::@15/(signed word) atan2_16::y#7 )
  (signed word) atan2_16::x#17 ← phi( atan2_16::@15/(signed word) atan2_16::x#7 )
  (word) atan2_16::angle#19 ← phi( atan2_16::@15/(word) atan2_16::angle#12 )
  (byte) atan2_16::i#2 ← phi( atan2_16::@15/(byte) atan2_16::i#6 )
  (signed word) atan2_16::yi#4 ← phi( atan2_16::@15/(signed word) atan2_16::yi#3 )
  (signed word) atan2_16::xi#3 ← phi( atan2_16::@15/(signed word) atan2_16::xi#6 )
  (signed word) atan2_16::xd#0 ← (signed word) atan2_16::xi#3
  (signed word) atan2_16::yd#0 ← (signed word) atan2_16::yi#4
  (byte) atan2_16::shift#0 ← (byte) atan2_16::i#2
  to:atan2_16::@18
atan2_16::@17: scope:[atan2_16]  from atan2_16::@15 atan2_16::@27
  (signed word) atan2_16::y#5 ← phi( atan2_16::@15/(signed word) atan2_16::y#7 atan2_16::@27/(signed word) atan2_16::y#8 )
  (signed word) atan2_16::x#4 ← phi( atan2_16::@15/(signed word) atan2_16::x#7 atan2_16::@27/(signed word) atan2_16::x#8 )
  (word) atan2_16::angle#6 ← phi( atan2_16::@15/(word) atan2_16::angle#12 atan2_16::@27/(word) atan2_16::angle#13 )
  (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 / (number) 2
  (bool~) atan2_16::$10 ← (signed word) atan2_16::x#4 < (number) 0
  (bool~) atan2_16::$11 ← ! (bool~) atan2_16::$10
  if((bool~) atan2_16::$11) goto atan2_16::@7
  to:atan2_16::@33
atan2_16::@18: scope:[atan2_16]  from atan2_16::@16 atan2_16::@19
  (signed word) atan2_16::y#18 ← phi( atan2_16::@16/(signed word) atan2_16::y#19 atan2_16::@19/(signed word) atan2_16::y#20 )
  (signed word) atan2_16::x#16 ← phi( atan2_16::@16/(signed word) atan2_16::x#17 atan2_16::@19/(signed word) atan2_16::x#18 )
  (word) atan2_16::angle#18 ← phi( atan2_16::@16/(word) atan2_16::angle#19 atan2_16::@19/(word) atan2_16::angle#20 )
  (byte) atan2_16::i#10 ← phi( atan2_16::@16/(byte) atan2_16::i#2 atan2_16::@19/(byte) atan2_16::i#11 )
  (signed word) atan2_16::xi#11 ← phi( atan2_16::@16/(signed word) atan2_16::xi#3 atan2_16::@19/(signed word) atan2_16::xi#12 )
  (signed word) atan2_16::yi#14 ← phi( atan2_16::@16/(signed word) atan2_16::yi#4 atan2_16::@19/(signed word) atan2_16::yi#15 )
  (signed word) atan2_16::yd#7 ← phi( atan2_16::@16/(signed word) atan2_16::yd#0 atan2_16::@19/(signed word) atan2_16::yd#1 )
  (signed word) atan2_16::xd#7 ← phi( atan2_16::@16/(signed word) atan2_16::xd#0 atan2_16::@19/(signed word) atan2_16::xd#1 )
  (byte) atan2_16::shift#2 ← phi( atan2_16::@16/(byte) atan2_16::shift#0 atan2_16::@19/(byte) atan2_16::shift#1 )
  (bool~) atan2_16::$19 ← (byte) atan2_16::shift#2 >= (number) 2
  if((bool~) atan2_16::$19) goto atan2_16::@19
  to:atan2_16::@20
atan2_16::@19: scope:[atan2_16]  from atan2_16::@18
  (signed word) atan2_16::y#20 ← phi( atan2_16::@18/(signed word) atan2_16::y#18 )
  (signed word) atan2_16::x#18 ← phi( atan2_16::@18/(signed word) atan2_16::x#16 )
  (word) atan2_16::angle#20 ← phi( atan2_16::@18/(word) atan2_16::angle#18 )
  (byte) atan2_16::i#11 ← phi( atan2_16::@18/(byte) atan2_16::i#10 )
  (signed word) atan2_16::xi#12 ← phi( atan2_16::@18/(signed word) atan2_16::xi#11 )
  (signed word) atan2_16::yi#15 ← phi( atan2_16::@18/(signed word) atan2_16::yi#14 )
  (byte) atan2_16::shift#3 ← phi( atan2_16::@18/(byte) atan2_16::shift#2 )
  (signed word) atan2_16::yd#3 ← phi( atan2_16::@18/(signed word) atan2_16::yd#7 )
  (signed word) atan2_16::xd#3 ← phi( atan2_16::@18/(signed word) atan2_16::xd#7 )
  (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (number) 2
  (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (number) 2
  (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#3 - (number) 2
  to:atan2_16::@18
atan2_16::@20: scope:[atan2_16]  from atan2_16::@18
  (signed word) atan2_16::y#16 ← phi( atan2_16::@18/(signed word) atan2_16::y#18 )
  (signed word) atan2_16::x#14 ← phi( atan2_16::@18/(signed word) atan2_16::x#16 )
  (word) atan2_16::angle#16 ← phi( atan2_16::@18/(word) atan2_16::angle#18 )
  (byte) atan2_16::i#8 ← phi( atan2_16::@18/(byte) atan2_16::i#10 )
  (signed word) atan2_16::xi#9 ← phi( atan2_16::@18/(signed word) atan2_16::xi#11 )
  (signed word) atan2_16::yd#8 ← phi( atan2_16::@18/(signed word) atan2_16::yd#7 )
  (signed word) atan2_16::xd#8 ← phi( atan2_16::@18/(signed word) atan2_16::xd#7 )
  (signed word) atan2_16::yi#10 ← phi( atan2_16::@18/(signed word) atan2_16::yi#14 )
  (byte) atan2_16::shift#4 ← phi( atan2_16::@18/(byte) atan2_16::shift#2 )
  (bool~) atan2_16::$25 ← (number) 0 != (byte) atan2_16::shift#4
  (bool~) atan2_16::$20 ← ! (bool~) atan2_16::$25
  if((bool~) atan2_16::$20) goto atan2_16::@25
  to:atan2_16::@24
atan2_16::@25: scope:[atan2_16]  from atan2_16::@20 atan2_16::@24
  (signed word) atan2_16::y#14 ← phi( atan2_16::@20/(signed word) atan2_16::y#16 atan2_16::@24/(signed word) atan2_16::y#17 )
  (signed word) atan2_16::x#13 ← phi( atan2_16::@20/(signed word) atan2_16::x#14 atan2_16::@24/(signed word) atan2_16::x#15 )
  (word) atan2_16::angle#14 ← phi( atan2_16::@20/(word) atan2_16::angle#16 atan2_16::@24/(word) atan2_16::angle#17 )
  (byte) atan2_16::i#7 ← phi( atan2_16::@20/(byte) atan2_16::i#8 atan2_16::@24/(byte) atan2_16::i#9 )
  (signed word) atan2_16::xd#9 ← phi( atan2_16::@20/(signed word) atan2_16::xd#8 atan2_16::@24/(signed word) atan2_16::xd#2 )
  (signed word) atan2_16::yd#9 ← phi( atan2_16::@20/(signed word) atan2_16::yd#8 atan2_16::@24/(signed word) atan2_16::yd#2 )
  (signed word) atan2_16::xi#7 ← phi( atan2_16::@20/(signed word) atan2_16::xi#9 atan2_16::@24/(signed word) atan2_16::xi#10 )
  (signed word) atan2_16::yi#5 ← phi( atan2_16::@20/(signed word) atan2_16::yi#10 atan2_16::@24/(signed word) atan2_16::yi#11 )
  (bool~) atan2_16::$21 ← (signed word) atan2_16::yi#5 >= (number) 0
  if((bool~) atan2_16::$21) goto atan2_16::@26
  to:atan2_16::@30
atan2_16::@24: scope:[atan2_16]  from atan2_16::@20
  (signed word) atan2_16::y#17 ← phi( atan2_16::@20/(signed word) atan2_16::y#16 )
  (signed word) atan2_16::x#15 ← phi( atan2_16::@20/(signed word) atan2_16::x#14 )
  (word) atan2_16::angle#17 ← phi( atan2_16::@20/(word) atan2_16::angle#16 )
  (byte) atan2_16::i#9 ← phi( atan2_16::@20/(byte) atan2_16::i#8 )
  (signed word) atan2_16::xi#10 ← phi( atan2_16::@20/(signed word) atan2_16::xi#9 )
  (signed word) atan2_16::yi#11 ← phi( atan2_16::@20/(signed word) atan2_16::yi#10 )
  (signed word) atan2_16::yd#4 ← phi( atan2_16::@20/(signed word) atan2_16::yd#8 )
  (signed word) atan2_16::xd#4 ← phi( atan2_16::@20/(signed word) atan2_16::xd#8 )
  (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#4 >> (number) 1
  (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#4 >> (number) 1
  to:atan2_16::@25
atan2_16::@26: scope:[atan2_16]  from atan2_16::@25
  (signed word) atan2_16::y#10 ← phi( atan2_16::@25/(signed word) atan2_16::y#14 )
  (signed word) atan2_16::x#11 ← phi( atan2_16::@25/(signed word) atan2_16::x#13 )
  (word) atan2_16::angle#7 ← phi( atan2_16::@25/(word) atan2_16::angle#14 )
  (byte) atan2_16::i#3 ← phi( atan2_16::@25/(byte) atan2_16::i#7 )
  (signed word) atan2_16::xd#5 ← phi( atan2_16::@25/(signed word) atan2_16::xd#9 )
  (signed word) atan2_16::yi#6 ← phi( atan2_16::@25/(signed word) atan2_16::yi#5 )
  (signed word) atan2_16::yd#5 ← phi( atan2_16::@25/(signed word) atan2_16::yd#9 )
  (signed word) atan2_16::xi#4 ← phi( atan2_16::@25/(signed word) atan2_16::xi#7 )
  (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#4 + (signed word) atan2_16::yd#5
  (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#6 - (signed word) atan2_16::xd#5
  (byte~) atan2_16::$23 ← (byte) atan2_16::i#3 * (const byte) SIZEOF_WORD
  (word) atan2_16::angle#2 ← (word) atan2_16::angle#7 + *((word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$23)
  to:atan2_16::@27
atan2_16::@30: scope:[atan2_16]  from atan2_16::@25
  (signed word) atan2_16::y#11 ← phi( atan2_16::@25/(signed word) atan2_16::y#14 )
  (signed word) atan2_16::x#12 ← phi( atan2_16::@25/(signed word) atan2_16::x#13 )
  (word) atan2_16::angle#8 ← phi( atan2_16::@25/(word) atan2_16::angle#14 )
  (byte) atan2_16::i#4 ← phi( atan2_16::@25/(byte) atan2_16::i#7 )
  (signed word) atan2_16::xd#6 ← phi( atan2_16::@25/(signed word) atan2_16::xd#9 )
  (signed word) atan2_16::yi#7 ← phi( atan2_16::@25/(signed word) atan2_16::yi#5 )
  (signed word) atan2_16::yd#6 ← phi( atan2_16::@25/(signed word) atan2_16::yd#9 )
  (signed word) atan2_16::xi#5 ← phi( atan2_16::@25/(signed word) atan2_16::xi#7 )
  (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#5 - (signed word) atan2_16::yd#6
  (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#7 + (signed word) atan2_16::xd#6
  (byte~) atan2_16::$24 ← (byte) atan2_16::i#4 * (const byte) SIZEOF_WORD
  (word) atan2_16::angle#3 ← (word) atan2_16::angle#8 - *((word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$24)
  to:atan2_16::@27
atan2_16::@27: scope:[atan2_16]  from atan2_16::@26 atan2_16::@30
  (signed word) atan2_16::y#8 ← phi( atan2_16::@26/(signed word) atan2_16::y#10 atan2_16::@30/(signed word) atan2_16::y#11 )
  (signed word) atan2_16::xi#8 ← phi( atan2_16::@26/(signed word) atan2_16::xi#1 atan2_16::@30/(signed word) atan2_16::xi#2 )
  (signed word) atan2_16::x#8 ← phi( atan2_16::@26/(signed word) atan2_16::x#11 atan2_16::@30/(signed word) atan2_16::x#12 )
  (word) atan2_16::angle#13 ← phi( atan2_16::@26/(word) atan2_16::angle#2 atan2_16::@30/(word) atan2_16::angle#3 )
  (signed word) atan2_16::yi#8 ← phi( atan2_16::@26/(signed word) atan2_16::yi#1 atan2_16::@30/(signed word) atan2_16::yi#2 )
  (byte) atan2_16::i#5 ← phi( atan2_16::@26/(byte) atan2_16::i#3 atan2_16::@30/(byte) atan2_16::i#4 )
  (byte) atan2_16::i#1 ← (byte) atan2_16::i#5 + rangenext(0,atan2_16::$16)
  (bool~) atan2_16::$22 ← (byte) atan2_16::i#1 != rangelast(0,atan2_16::$16)
  if((bool~) atan2_16::$22) goto atan2_16::@15
  to:atan2_16::@17
atan2_16::@7: scope:[atan2_16]  from atan2_16::@17 atan2_16::@33
  (word) atan2_16::angle#15 ← phi( atan2_16::@17/(word) atan2_16::angle#1 atan2_16::@33/(word) atan2_16::angle#4 )
  (signed word) atan2_16::y#4 ← phi( atan2_16::@17/(signed word) atan2_16::y#5 atan2_16::@33/(signed word) atan2_16::y#6 )
  (bool~) atan2_16::$13 ← (signed word) atan2_16::y#4 < (number) 0
  (bool~) atan2_16::$14 ← ! (bool~) atan2_16::$13
  if((bool~) atan2_16::$14) goto atan2_16::@8
  to:atan2_16::@13
atan2_16::@33: scope:[atan2_16]  from atan2_16::@17
  (signed word) atan2_16::y#6 ← phi( atan2_16::@17/(signed word) atan2_16::y#5 )
  (word) atan2_16::angle#9 ← phi( atan2_16::@17/(word) atan2_16::angle#1 )
  (number~) atan2_16::$12 ← (number) $8000 - (word) atan2_16::angle#9
  (word) atan2_16::angle#4 ← (number~) atan2_16::$12
  to:atan2_16::@7
atan2_16::@8: scope:[atan2_16]  from atan2_16::@13 atan2_16::@7
  (word) atan2_16::angle#10 ← phi( atan2_16::@13/(word) atan2_16::angle#5 atan2_16::@7/(word) atan2_16::angle#15 )
  (word) atan2_16::return#0 ← (word) atan2_16::angle#10
  to:atan2_16::@return
atan2_16::@13: scope:[atan2_16]  from atan2_16::@7
  (word) atan2_16::angle#11 ← phi( atan2_16::@7/(word) atan2_16::angle#15 )
  (word~) atan2_16::$15 ← - (word) atan2_16::angle#11
  (word) atan2_16::angle#5 ← (word~) atan2_16::$15
  to:atan2_16::@8
atan2_16::@return: scope:[atan2_16]  from atan2_16::@8
  (word) atan2_16::return#3 ← phi( atan2_16::@8/(word) atan2_16::return#0 )
  (word) atan2_16::return#1 ← (word) atan2_16::return#3
  return 
  to:@return
@21: scope:[]  from @19
  (word*) SQUARES#47 ← phi( @19/(word*) SQUARES#49 )
  (byte) NUM_SQUARES#38 ← phi( @19/(byte) NUM_SQUARES#42 )
  (byte*) heap_head#36 ← phi( @19/(byte*) heap_head#40 )
  (byte*) print_screen#0 ← ((byte*)) (number) $400
  (byte*) print_line_cursor#0 ← (byte*) print_screen#0
  (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
  to:@44
print_char: scope:[print_char]  from make_plasma_charset::@8
  (byte*) print_char_cursor#11 ← phi( make_plasma_charset::@8/(byte*) print_char_cursor#20 )
  (byte) print_char::ch#1 ← phi( make_plasma_charset::@8/(byte) print_char::ch#0 )
  *((byte*) print_char_cursor#11) ← (byte) print_char::ch#1
  (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#11
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  (byte*) print_char_cursor#12 ← phi( print_char/(byte*) print_char_cursor#1 )
  (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#12
  return 
  to:@return
print_cls: scope:[print_cls]  from make_plasma_charset::@11
  (byte*) print_screen#1 ← phi( make_plasma_charset::@11/(byte*) print_screen#3 )
  (void*) memset::str#0 ← (void*)(byte*) print_screen#1
  (byte) memset::c#0 ← (byte) ' '
  (word) memset::num#0 ← (number) $3e8
  call memset 
  (void*) memset::return#2 ← (void*) memset::return#1
  to:print_cls::@1
print_cls::@1: scope:[print_cls]  from print_cls
  (byte*) print_screen#2 ← phi( print_cls/(byte*) print_screen#1 )
  (byte*) print_line_cursor#1 ← (byte*) print_screen#2
  (byte*) print_char_cursor#3 ← (byte*) print_line_cursor#1
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls::@1
  (byte*) print_char_cursor#13 ← phi( print_cls::@1/(byte*) print_char_cursor#3 )
  (byte*) print_line_cursor#8 ← phi( print_cls::@1/(byte*) print_line_cursor#1 )
  (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#8
  (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#13
  return 
  to:@return
@44: scope:[]  from @21
  (byte*) print_screen#13 ← phi( @21/(byte*) print_screen#0 )
  (byte*) print_char_cursor#43 ← phi( @21/(byte*) print_char_cursor#0 )
  (byte*) print_line_cursor#38 ← phi( @21/(byte*) print_line_cursor#0 )
  (word*) SQUARES#45 ← phi( @21/(word*) SQUARES#47 )
  (byte) NUM_SQUARES#35 ← phi( @21/(byte) NUM_SQUARES#38 )
  (byte*) heap_head#31 ← phi( @21/(byte*) heap_head#36 )
  (word*) SID_VOICE3_FREQ#0 ← ((word*)) (number) $d40e
  (byte*) SID_VOICE3_CONTROL#0 ← ((byte*)) (number) $d412
  (byte) SID_CONTROL_NOISE#0 ← (number) $80
  (byte*) SID_VOICE3_OSC#0 ← ((byte*)) (number) $d41b
  to:@46
sid_rnd_init: scope:[sid_rnd_init]  from make_plasma_charset
  *((word*) SID_VOICE3_FREQ#0) ← (number) $ffff
  *((byte*) SID_VOICE3_CONTROL#0) ← (byte) SID_CONTROL_NOISE#0
  to:sid_rnd_init::@return
sid_rnd_init::@return: scope:[sid_rnd_init]  from sid_rnd_init
  return 
  to:@return
sid_rnd: scope:[sid_rnd]  from make_plasma_charset::@3
  (byte) sid_rnd::return#0 ← *((byte*) SID_VOICE3_OSC#0)
  to:sid_rnd::@return
sid_rnd::@return: scope:[sid_rnd]  from sid_rnd
  (byte) sid_rnd::return#3 ← phi( sid_rnd/(byte) sid_rnd::return#0 )
  (byte) sid_rnd::return#1 ← (byte) sid_rnd::return#3
  return 
  to:@return
@46: scope:[]  from @44
  (byte*) print_screen#12 ← phi( @44/(byte*) print_screen#13 )
  (byte*) print_char_cursor#39 ← phi( @44/(byte*) print_char_cursor#43 )
  (byte*) print_line_cursor#34 ← phi( @44/(byte*) print_line_cursor#38 )
  (word*) SQUARES#43 ← phi( @44/(word*) SQUARES#45 )
  (byte) NUM_SQUARES#32 ← phi( @44/(byte) NUM_SQUARES#35 )
  (byte*) heap_head#23 ← phi( @44/(byte*) heap_head#31 )
  (byte[$200]) SINTABLE#0 ← kickasm {{ .for(var i=0;i<$200;i++)
        .byte round(127.5+127.5*sin(2*PI*i/256))
 }}
  (word) malloc::size#1 ← (number) $3e8
  call malloc 
  (void*) malloc::return#3 ← (void*) malloc::return#1
  to:@52
@52: scope:[]  from @46
  (byte*) print_screen#11 ← phi( @46/(byte*) print_screen#12 )
  (byte*) print_char_cursor#36 ← phi( @46/(byte*) print_char_cursor#39 )
  (byte*) print_line_cursor#31 ← phi( @46/(byte*) print_line_cursor#34 )
  (word*) SQUARES#39 ← phi( @46/(word*) SQUARES#43 )
  (byte) NUM_SQUARES#28 ← phi( @46/(byte) NUM_SQUARES#32 )
  (byte*) heap_head#16 ← phi( @46/(byte*) heap_head#2 )
  (void*) malloc::return#7 ← phi( @46/(void*) malloc::return#3 )
  (void*~) $0 ← (void*) malloc::return#7
  (byte*) heap_head#5 ← (byte*) heap_head#16
  (byte*) SCREEN_DIST#0 ← ((byte*)) (void*~) $0
  (word) malloc::size#2 ← (number) $3e8
  call malloc 
  (void*) malloc::return#4 ← (void*) malloc::return#1
  to:@53
@53: scope:[]  from @52
  (byte*) print_screen#10 ← phi( @52/(byte*) print_screen#11 )
  (byte*) print_char_cursor#34 ← phi( @52/(byte*) print_char_cursor#36 )
  (byte*) print_line_cursor#28 ← phi( @52/(byte*) print_line_cursor#31 )
  (word*) SQUARES#36 ← phi( @52/(word*) SQUARES#39 )
  (byte) NUM_SQUARES#25 ← phi( @52/(byte) NUM_SQUARES#28 )
  (byte*) heap_head#17 ← phi( @52/(byte*) heap_head#2 )
  (void*) malloc::return#8 ← phi( @52/(void*) malloc::return#4 )
  (void*~) $1 ← (void*) malloc::return#8
  (byte*) heap_head#6 ← (byte*) heap_head#17
  (byte*) SCREEN_ANGLE#0 ← ((byte*)) (void*~) $1
  (byte*) CHARSET#0 ← ((byte*)) (number) $2000
  (byte*) SCREEN1#0 ← ((byte*)) (number) $2800
  (byte*) SCREEN2#0 ← ((byte*)) (number) $2c00
  to:@47
main: scope:[main]  from @51
  (byte) sin_offset_y#30 ← phi( @51/(byte) sin_offset_y#18 )
  (byte) sin_offset_x#30 ← phi( @51/(byte) sin_offset_x#18 )
  (byte*) print_screen#7 ← phi( @51/(byte*) print_screen#8 )
  (byte*) print_char_cursor#32 ← phi( @51/(byte*) print_char_cursor#25 )
  (byte*) print_line_cursor#26 ← phi( @51/(byte*) print_line_cursor#18 )
  (word*) SQUARES#21 ← phi( @51/(word*) SQUARES#25 )
  (byte*) heap_head#26 ← phi( @51/(byte*) heap_head#30 )
  (byte) NUM_SQUARES#14 ← phi( @51/(byte) NUM_SQUARES#17 )
  (byte*) init_dist_screen::screen#0 ← (byte*) SCREEN_DIST#0
  call init_dist_screen 
  to:main::@9
main::@9: scope:[main]  from main
  (byte) sin_offset_y#29 ← phi( main/(byte) sin_offset_y#30 )
  (byte) sin_offset_x#29 ← phi( main/(byte) sin_offset_x#30 )
  (byte*) print_screen#6 ← phi( main/(byte*) print_screen#7 )
  (byte*) print_char_cursor#26 ← phi( main/(byte*) print_char_cursor#32 )
  (byte*) print_line_cursor#19 ← phi( main/(byte*) print_line_cursor#26 )
  (word*) SQUARES#12 ← phi( main/(word*) SQUARES#6 )
  (byte*) heap_head#18 ← phi( main/(byte*) heap_head#10 )
  (byte) NUM_SQUARES#9 ← phi( main/(byte) NUM_SQUARES#4 )
  (byte) NUM_SQUARES#1 ← (byte) NUM_SQUARES#9
  (byte*) heap_head#7 ← (byte*) heap_head#18
  (word*) SQUARES#3 ← (word*) SQUARES#12
  (byte*) init_angle_screen::screen#0 ← (byte*) SCREEN_ANGLE#0
  call init_angle_screen 
  to:main::@10
main::@10: scope:[main]  from main::@9
  (byte) sin_offset_y#27 ← phi( main::@9/(byte) sin_offset_y#29 )
  (byte) sin_offset_x#27 ← phi( main::@9/(byte) sin_offset_x#29 )
  (word*) SQUARES#40 ← phi( main::@9/(word*) SQUARES#3 )
  (byte*) heap_head#41 ← phi( main::@9/(byte*) heap_head#7 )
  (byte) NUM_SQUARES#29 ← phi( main::@9/(byte) NUM_SQUARES#1 )
  (byte*) print_screen#5 ← phi( main::@9/(byte*) print_screen#6 )
  (byte*) print_char_cursor#21 ← phi( main::@9/(byte*) print_char_cursor#26 )
  (byte*) print_line_cursor#14 ← phi( main::@9/(byte*) print_line_cursor#19 )
  (byte*) make_plasma_charset::charset#0 ← (byte*) CHARSET#0
  call make_plasma_charset 
  to:main::@11
main::@11: scope:[main]  from main::@10
  (byte) sin_offset_y#23 ← phi( main::@10/(byte) sin_offset_y#27 )
  (byte) sin_offset_x#23 ← phi( main::@10/(byte) sin_offset_x#27 )
  (word*) SQUARES#34 ← phi( main::@10/(word*) SQUARES#40 )
  (byte*) heap_head#37 ← phi( main::@10/(byte*) heap_head#41 )
  (byte) NUM_SQUARES#23 ← phi( main::@10/(byte) NUM_SQUARES#29 )
  (byte*) print_char_cursor#14 ← phi( main::@10/(byte*) print_char_cursor#9 )
  (byte*) print_line_cursor#9 ← phi( main::@10/(byte*) print_line_cursor#6 )
  (byte*) print_line_cursor#3 ← (byte*) print_line_cursor#9
  (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#14
  (void*) memset::str#1 ← (void*)(byte*) COLS#0
  (byte) memset::c#1 ← (byte) BLACK#0
  (word) memset::num#1 ← (number) $3e8
  call memset 
  (void*) memset::return#3 ← (void*) memset::return#1
  to:main::@12
main::@12: scope:[main]  from main::@11
  (byte) sin_offset_y#19 ← phi( main::@11/(byte) sin_offset_y#23 )
  (byte) sin_offset_x#19 ← phi( main::@11/(byte) sin_offset_x#23 )
  (byte*) print_char_cursor#27 ← phi( main::@11/(byte*) print_char_cursor#5 )
  (byte*) print_line_cursor#20 ← phi( main::@11/(byte*) print_line_cursor#3 )
  (word*) SQUARES#26 ← phi( main::@11/(word*) SQUARES#34 )
  (byte*) heap_head#32 ← phi( main::@11/(byte*) heap_head#37 )
  (byte) NUM_SQUARES#18 ← phi( main::@11/(byte) NUM_SQUARES#23 )
  to:main::@1
main::@1: scope:[main]  from main::@12 main::@8
  (byte) sin_offset_y#16 ← phi( main::@12/(byte) sin_offset_y#19 main::@8/(byte) sin_offset_y#20 )
  (byte) sin_offset_x#16 ← phi( main::@12/(byte) sin_offset_x#19 main::@8/(byte) sin_offset_x#20 )
  (byte*) print_char_cursor#22 ← phi( main::@12/(byte*) print_char_cursor#27 main::@8/(byte*) print_char_cursor#28 )
  (byte*) print_line_cursor#15 ← phi( main::@12/(byte*) print_line_cursor#20 main::@8/(byte*) print_line_cursor#21 )
  (word*) SQUARES#22 ← phi( main::@12/(word*) SQUARES#26 main::@8/(word*) SQUARES#27 )
  (byte*) heap_head#27 ← phi( main::@12/(byte*) heap_head#32 main::@8/(byte*) heap_head#33 )
  (byte) NUM_SQUARES#15 ← phi( main::@12/(byte) NUM_SQUARES#18 main::@8/(byte) NUM_SQUARES#19 )
  if(true) goto main::@2
  to:main::@return
main::@2: scope:[main]  from main::@1
  (byte*) print_char_cursor#51 ← phi( main::@1/(byte*) print_char_cursor#22 )
  (byte*) print_line_cursor#46 ← phi( main::@1/(byte*) print_line_cursor#15 )
  (word*) SQUARES#52 ← phi( main::@1/(word*) SQUARES#22 )
  (byte*) heap_head#57 ← phi( main::@1/(byte*) heap_head#27 )
  (byte) NUM_SQUARES#47 ← phi( main::@1/(byte) NUM_SQUARES#15 )
  (byte) sin_offset_y#14 ← phi( main::@1/(byte) sin_offset_y#16 )
  (byte) sin_offset_x#14 ← phi( main::@1/(byte) sin_offset_x#16 )
  (byte*) doplasma::screen#0 ← (byte*) SCREEN1#0
  call doplasma 
  to:main::@13
main::@13: scope:[main]  from main::@2
  (byte*) print_char_cursor#50 ← phi( main::@2/(byte*) print_char_cursor#51 )
  (byte*) print_line_cursor#45 ← phi( main::@2/(byte*) print_line_cursor#46 )
  (word*) SQUARES#51 ← phi( main::@2/(word*) SQUARES#52 )
  (byte*) heap_head#54 ← phi( main::@2/(byte*) heap_head#57 )
  (byte) NUM_SQUARES#45 ← phi( main::@2/(byte) NUM_SQUARES#47 )
  (byte) sin_offset_y#7 ← phi( main::@2/(byte) sin_offset_y#5 )
  (byte) sin_offset_x#7 ← phi( main::@2/(byte) sin_offset_x#5 )
  (byte) sin_offset_x#0 ← (byte) sin_offset_x#7
  (byte) sin_offset_y#0 ← (byte) sin_offset_y#7
  (byte*) main::toD0181_screen#0 ← (byte*) SCREEN1#0
  (byte*) main::toD0181_gfx#0 ← (byte*) CHARSET#0
  to:main::toD0181
main::toD0181: scope:[main]  from main::@13
  (byte*) print_char_cursor#48 ← phi( main::@13/(byte*) print_char_cursor#50 )
  (byte*) print_line_cursor#43 ← phi( main::@13/(byte*) print_line_cursor#45 )
  (word*) SQUARES#50 ← phi( main::@13/(word*) SQUARES#51 )
  (byte*) heap_head#52 ← phi( main::@13/(byte*) heap_head#54 )
  (byte) NUM_SQUARES#43 ← phi( main::@13/(byte) NUM_SQUARES#45 )
  (byte) sin_offset_y#24 ← phi( main::@13/(byte) sin_offset_y#0 )
  (byte) sin_offset_x#24 ← phi( main::@13/(byte) sin_offset_x#0 )
  (byte*) main::toD0181_gfx#1 ← phi( main::@13/(byte*) main::toD0181_gfx#0 )
  (byte*) main::toD0181_screen#1 ← phi( main::@13/(byte*) main::toD0181_screen#0 )
  (word~) main::toD0181_$0#0 ← ((word)) (byte*) main::toD0181_screen#1
  (number~) main::toD0181_$1#0 ← (word~) main::toD0181_$0#0 & (number) $3fff
  (number~) main::toD0181_$2#0 ← (number~) main::toD0181_$1#0 * (number) 4
  (number~) main::toD0181_$3#0 ← > (number~) main::toD0181_$2#0
  (word~) main::toD0181_$4#0 ← ((word)) (byte*) main::toD0181_gfx#1
  (byte~) main::toD0181_$5#0 ← > (word~) main::toD0181_$4#0
  (number~) main::toD0181_$6#0 ← (byte~) main::toD0181_$5#0 / (number) 4
  (number~) main::toD0181_$7#0 ← (number~) main::toD0181_$6#0 & (number) $f
  (number~) main::toD0181_$8#0 ← (number~) main::toD0181_$3#0 | (number~) main::toD0181_$7#0
  (byte) main::toD0181_return#0 ← (number~) main::toD0181_$8#0
  to:main::toD0181_@return
main::toD0181_@return: scope:[main]  from main::toD0181
  (byte*) print_char_cursor#46 ← phi( main::toD0181/(byte*) print_char_cursor#48 )
  (byte*) print_line_cursor#41 ← phi( main::toD0181/(byte*) print_line_cursor#43 )
  (word*) SQUARES#48 ← phi( main::toD0181/(word*) SQUARES#50 )
  (byte*) heap_head#50 ← phi( main::toD0181/(byte*) heap_head#52 )
  (byte) NUM_SQUARES#39 ← phi( main::toD0181/(byte) NUM_SQUARES#43 )
  (byte) sin_offset_y#21 ← phi( main::toD0181/(byte) sin_offset_y#24 )
  (byte) sin_offset_x#21 ← phi( main::toD0181/(byte) sin_offset_x#24 )
  (byte) main::toD0181_return#2 ← phi( main::toD0181/(byte) main::toD0181_return#0 )
  (byte) main::toD0181_return#1 ← (byte) main::toD0181_return#2
  to:main::@7
main::@7: scope:[main]  from main::toD0181_@return
  (byte*) print_char_cursor#44 ← phi( main::toD0181_@return/(byte*) print_char_cursor#46 )
  (byte*) print_line_cursor#39 ← phi( main::toD0181_@return/(byte*) print_line_cursor#41 )
  (word*) SQUARES#46 ← phi( main::toD0181_@return/(word*) SQUARES#48 )
  (byte*) heap_head#48 ← phi( main::toD0181_@return/(byte*) heap_head#50 )
  (byte) NUM_SQUARES#36 ← phi( main::toD0181_@return/(byte) NUM_SQUARES#39 )
  (byte) sin_offset_y#15 ← phi( main::toD0181_@return/(byte) sin_offset_y#21 )
  (byte) sin_offset_x#15 ← phi( main::toD0181_@return/(byte) sin_offset_x#21 )
  (byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 )
  (byte~) main::$5 ← (byte) main::toD0181_return#3
  *((byte*) D018#0) ← (byte~) main::$5
  (byte*) doplasma::screen#1 ← (byte*) SCREEN2#0
  call doplasma 
  to:main::@14
main::@14: scope:[main]  from main::@7
  (byte*) print_char_cursor#40 ← phi( main::@7/(byte*) print_char_cursor#44 )
  (byte*) print_line_cursor#35 ← phi( main::@7/(byte*) print_line_cursor#39 )
  (word*) SQUARES#44 ← phi( main::@7/(word*) SQUARES#46 )
  (byte*) heap_head#45 ← phi( main::@7/(byte*) heap_head#48 )
  (byte) NUM_SQUARES#33 ← phi( main::@7/(byte) NUM_SQUARES#36 )
  (byte) sin_offset_y#8 ← phi( main::@7/(byte) sin_offset_y#5 )
  (byte) sin_offset_x#8 ← phi( main::@7/(byte) sin_offset_x#5 )
  (byte) sin_offset_x#1 ← (byte) sin_offset_x#8
  (byte) sin_offset_y#1 ← (byte) sin_offset_y#8
  (byte*) main::toD0182_screen#0 ← (byte*) SCREEN2#0
  (byte*) main::toD0182_gfx#0 ← (byte*) CHARSET#0
  to:main::toD0182
main::toD0182: scope:[main]  from main::@14
  (byte) sin_offset_y#28 ← phi( main::@14/(byte) sin_offset_y#1 )
  (byte) sin_offset_x#28 ← phi( main::@14/(byte) sin_offset_x#1 )
  (byte*) print_char_cursor#37 ← phi( main::@14/(byte*) print_char_cursor#40 )
  (byte*) print_line_cursor#32 ← phi( main::@14/(byte*) print_line_cursor#35 )
  (word*) SQUARES#41 ← phi( main::@14/(word*) SQUARES#44 )
  (byte*) heap_head#42 ← phi( main::@14/(byte*) heap_head#45 )
  (byte) NUM_SQUARES#30 ← phi( main::@14/(byte) NUM_SQUARES#33 )
  (byte*) main::toD0182_gfx#1 ← phi( main::@14/(byte*) main::toD0182_gfx#0 )
  (byte*) main::toD0182_screen#1 ← phi( main::@14/(byte*) main::toD0182_screen#0 )
  (word~) main::toD0182_$0#0 ← ((word)) (byte*) main::toD0182_screen#1
  (number~) main::toD0182_$1#0 ← (word~) main::toD0182_$0#0 & (number) $3fff
  (number~) main::toD0182_$2#0 ← (number~) main::toD0182_$1#0 * (number) 4
  (number~) main::toD0182_$3#0 ← > (number~) main::toD0182_$2#0
  (word~) main::toD0182_$4#0 ← ((word)) (byte*) main::toD0182_gfx#1
  (byte~) main::toD0182_$5#0 ← > (word~) main::toD0182_$4#0
  (number~) main::toD0182_$6#0 ← (byte~) main::toD0182_$5#0 / (number) 4
  (number~) main::toD0182_$7#0 ← (number~) main::toD0182_$6#0 & (number) $f
  (number~) main::toD0182_$8#0 ← (number~) main::toD0182_$3#0 | (number~) main::toD0182_$7#0
  (byte) main::toD0182_return#0 ← (number~) main::toD0182_$8#0
  to:main::toD0182_@return
main::toD0182_@return: scope:[main]  from main::toD0182
  (byte) sin_offset_y#25 ← phi( main::toD0182/(byte) sin_offset_y#28 )
  (byte) sin_offset_x#25 ← phi( main::toD0182/(byte) sin_offset_x#28 )
  (byte*) print_char_cursor#33 ← phi( main::toD0182/(byte*) print_char_cursor#37 )
  (byte*) print_line_cursor#27 ← phi( main::toD0182/(byte*) print_line_cursor#32 )
  (word*) SQUARES#35 ← phi( main::toD0182/(word*) SQUARES#41 )
  (byte*) heap_head#38 ← phi( main::toD0182/(byte*) heap_head#42 )
  (byte) NUM_SQUARES#24 ← phi( main::toD0182/(byte) NUM_SQUARES#30 )
  (byte) main::toD0182_return#2 ← phi( main::toD0182/(byte) main::toD0182_return#0 )
  (byte) main::toD0182_return#1 ← (byte) main::toD0182_return#2
  to:main::@8
main::@8: scope:[main]  from main::toD0182_@return
  (byte) sin_offset_y#20 ← phi( main::toD0182_@return/(byte) sin_offset_y#25 )
  (byte) sin_offset_x#20 ← phi( main::toD0182_@return/(byte) sin_offset_x#25 )
  (byte*) print_char_cursor#28 ← phi( main::toD0182_@return/(byte*) print_char_cursor#33 )
  (byte*) print_line_cursor#21 ← phi( main::toD0182_@return/(byte*) print_line_cursor#27 )
  (word*) SQUARES#27 ← phi( main::toD0182_@return/(word*) SQUARES#35 )
  (byte*) heap_head#33 ← phi( main::toD0182_@return/(byte*) heap_head#38 )
  (byte) NUM_SQUARES#19 ← phi( main::toD0182_@return/(byte) NUM_SQUARES#24 )
  (byte) main::toD0182_return#3 ← phi( main::toD0182_@return/(byte) main::toD0182_return#1 )
  (byte~) main::$7 ← (byte) main::toD0182_return#3
  *((byte*) D018#0) ← (byte~) main::$7
  to:main::@1
main::@return: scope:[main]  from main::@1
  (byte) sin_offset_y#9 ← phi( main::@1/(byte) sin_offset_y#16 )
  (byte) sin_offset_x#9 ← phi( main::@1/(byte) sin_offset_x#16 )
  (byte*) print_char_cursor#15 ← phi( main::@1/(byte*) print_char_cursor#22 )
  (byte*) print_line_cursor#10 ← phi( main::@1/(byte*) print_line_cursor#15 )
  (word*) SQUARES#13 ← phi( main::@1/(word*) SQUARES#22 )
  (byte*) heap_head#19 ← phi( main::@1/(byte*) heap_head#27 )
  (byte) NUM_SQUARES#10 ← phi( main::@1/(byte) NUM_SQUARES#15 )
  (byte) NUM_SQUARES#2 ← (byte) NUM_SQUARES#10
  (byte*) heap_head#8 ← (byte*) heap_head#19
  (word*) SQUARES#4 ← (word*) SQUARES#13
  (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#10
  (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#15
  (byte) sin_offset_x#2 ← (byte) sin_offset_x#9
  (byte) sin_offset_y#2 ← (byte) sin_offset_y#9
  return 
  to:@return
@47: scope:[]  from @53
  (byte*) print_screen#9 ← phi( @53/(byte*) print_screen#10 )
  (byte*) print_char_cursor#31 ← phi( @53/(byte*) print_char_cursor#34 )
  (byte*) print_line_cursor#25 ← phi( @53/(byte*) print_line_cursor#28 )
  (word*) SQUARES#33 ← phi( @53/(word*) SQUARES#36 )
  (byte*) heap_head#35 ← phi( @53/(byte*) heap_head#6 )
  (byte) NUM_SQUARES#22 ← phi( @53/(byte) NUM_SQUARES#25 )
  (byte) sin_offset_x#3 ← (number) 0
  (byte) sin_offset_y#3 ← (number) 0
  to:@51
doplasma: scope:[doplasma]  from main::@2 main::@7
  (byte*) doplasma::screen#6 ← phi( main::@2/(byte*) doplasma::screen#0 main::@7/(byte*) doplasma::screen#1 )
  (byte) sin_offset_y#10 ← phi( main::@2/(byte) sin_offset_y#14 main::@7/(byte) sin_offset_y#15 )
  (byte) sin_offset_x#10 ← phi( main::@2/(byte) sin_offset_x#14 main::@7/(byte) sin_offset_x#15 )
  (byte*) doplasma::angle#0 ← (byte*) SCREEN_ANGLE#0
  (byte*) doplasma::dist#0 ← (byte*) SCREEN_DIST#0
  (byte*~) doplasma::$0 ← (byte[$200]) SINTABLE#0 + (byte) sin_offset_x#10
  (byte*) doplasma::sin_x#0 ← (byte*~) doplasma::$0
  (byte*~) doplasma::$1 ← (byte[$200]) SINTABLE#0 + (byte) sin_offset_y#10
  (byte*) doplasma::sin_y#0 ← (byte*~) doplasma::$1
  (byte) doplasma::y#0 ← (byte) 0
  to:doplasma::@1
doplasma::@1: scope:[doplasma]  from doplasma doplasma::@3
  (byte) sin_offset_y#26 ← phi( doplasma/(byte) sin_offset_y#10 doplasma::@3/(byte) sin_offset_y#17 )
  (byte) sin_offset_x#26 ← phi( doplasma/(byte) sin_offset_x#10 doplasma::@3/(byte) sin_offset_x#17 )
  (byte) doplasma::y#4 ← phi( doplasma/(byte) doplasma::y#0 doplasma::@3/(byte) doplasma::y#1 )
  (byte*) doplasma::screen#5 ← phi( doplasma/(byte*) doplasma::screen#6 doplasma::@3/(byte*) doplasma::screen#2 )
  (byte*) doplasma::dist#4 ← phi( doplasma/(byte*) doplasma::dist#0 doplasma::@3/(byte*) doplasma::dist#1 )
  (byte*) doplasma::sin_y#2 ← phi( doplasma/(byte*) doplasma::sin_y#0 doplasma::@3/(byte*) doplasma::sin_y#3 )
  (byte*) doplasma::angle#4 ← phi( doplasma/(byte*) doplasma::angle#0 doplasma::@3/(byte*) doplasma::angle#1 )
  (byte*) doplasma::sin_x#2 ← phi( doplasma/(byte*) doplasma::sin_x#0 doplasma::@3/(byte*) doplasma::sin_x#3 )
  (byte) doplasma::x#0 ← (byte) 0
  to:doplasma::@2
doplasma::@2: scope:[doplasma]  from doplasma::@1 doplasma::@2
  (byte) sin_offset_y#22 ← phi( doplasma::@1/(byte) sin_offset_y#26 doplasma::@2/(byte) sin_offset_y#22 )
  (byte) sin_offset_x#22 ← phi( doplasma::@1/(byte) sin_offset_x#26 doplasma::@2/(byte) sin_offset_x#22 )
  (byte) doplasma::y#3 ← phi( doplasma::@1/(byte) doplasma::y#4 doplasma::@2/(byte) doplasma::y#3 )
  (byte*) doplasma::screen#3 ← phi( doplasma::@1/(byte*) doplasma::screen#5 doplasma::@2/(byte*) doplasma::screen#3 )
  (byte*) doplasma::dist#2 ← phi( doplasma::@1/(byte*) doplasma::dist#4 doplasma::@2/(byte*) doplasma::dist#2 )
  (byte*) doplasma::sin_y#1 ← phi( doplasma::@1/(byte*) doplasma::sin_y#2 doplasma::@2/(byte*) doplasma::sin_y#1 )
  (byte) doplasma::x#2 ← phi( doplasma::@1/(byte) doplasma::x#0 doplasma::@2/(byte) doplasma::x#1 )
  (byte*) doplasma::angle#2 ← phi( doplasma::@1/(byte*) doplasma::angle#4 doplasma::@2/(byte*) doplasma::angle#2 )
  (byte*) doplasma::sin_x#1 ← phi( doplasma::@1/(byte*) doplasma::sin_x#2 doplasma::@2/(byte*) doplasma::sin_x#1 )
  (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#1 + *((byte*) doplasma::angle#2 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#1 + *((byte*) doplasma::dist#2 + (byte) doplasma::x#2))
  *((byte*) doplasma::screen#3 + (byte) doplasma::x#2) ← (byte~) doplasma::$2
  (byte) doplasma::x#1 ← (byte) doplasma::x#2 + rangenext(0,$27)
  (bool~) doplasma::$3 ← (byte) doplasma::x#1 != rangelast(0,$27)
  if((bool~) doplasma::$3) goto doplasma::@2
  to:doplasma::@3
doplasma::@3: scope:[doplasma]  from doplasma::@2
  (byte*) doplasma::sin_y#3 ← phi( doplasma::@2/(byte*) doplasma::sin_y#1 )
  (byte*) doplasma::sin_x#3 ← phi( doplasma::@2/(byte*) doplasma::sin_x#1 )
  (byte) sin_offset_y#17 ← phi( doplasma::@2/(byte) sin_offset_y#22 )
  (byte) sin_offset_x#17 ← phi( doplasma::@2/(byte) sin_offset_x#22 )
  (byte) doplasma::y#2 ← phi( doplasma::@2/(byte) doplasma::y#3 )
  (byte*) doplasma::dist#3 ← phi( doplasma::@2/(byte*) doplasma::dist#2 )
  (byte*) doplasma::angle#3 ← phi( doplasma::@2/(byte*) doplasma::angle#2 )
  (byte*) doplasma::screen#4 ← phi( doplasma::@2/(byte*) doplasma::screen#3 )
  (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#4 + (number) $28
  (byte*) doplasma::angle#1 ← (byte*) doplasma::angle#3 + (number) $28
  (byte*) doplasma::dist#1 ← (byte*) doplasma::dist#3 + (number) $28
  (byte) doplasma::y#1 ← (byte) doplasma::y#2 + rangenext(0,$19)
  (bool~) doplasma::$4 ← (byte) doplasma::y#1 != rangelast(0,$19)
  if((bool~) doplasma::$4) goto doplasma::@1
  to:doplasma::@4
doplasma::@4: scope:[doplasma]  from doplasma::@3
  (byte) sin_offset_y#11 ← phi( doplasma::@3/(byte) sin_offset_y#17 )
  (byte) sin_offset_x#11 ← phi( doplasma::@3/(byte) sin_offset_x#17 )
  (byte) sin_offset_x#4 ← (byte) sin_offset_x#11 - (number) 3
  (byte) sin_offset_y#4 ← (byte) sin_offset_y#11 - (number) 7
  to:doplasma::@return
doplasma::@return: scope:[doplasma]  from doplasma::@4
  (byte) sin_offset_y#12 ← phi( doplasma::@4/(byte) sin_offset_y#4 )
  (byte) sin_offset_x#12 ← phi( doplasma::@4/(byte) sin_offset_x#4 )
  (byte) sin_offset_x#5 ← (byte) sin_offset_x#12
  (byte) sin_offset_y#5 ← (byte) sin_offset_y#12
  return 
  to:@return
init_angle_screen: scope:[init_angle_screen]  from main::@9
  (byte*) init_angle_screen::screen#1 ← phi( main::@9/(byte*) init_angle_screen::screen#0 )
  (byte*~) init_angle_screen::$0 ← (byte*) init_angle_screen::screen#1 + (number) $28*(number) $c
  (byte*) init_angle_screen::screen_topline#0 ← (byte*~) init_angle_screen::$0
  (byte*~) init_angle_screen::$1 ← (byte*) init_angle_screen::screen#1 + (number) $28*(number) $c
  (byte*) init_angle_screen::screen_bottomline#0 ← (byte*~) init_angle_screen::$1
  (byte) init_angle_screen::y#0 ← (byte) 0
  to:init_angle_screen::@1
init_angle_screen::@1: scope:[init_angle_screen]  from init_angle_screen init_angle_screen::@3
  (byte*) init_angle_screen::screen_topline#5 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_topline#0 init_angle_screen::@3/(byte*) init_angle_screen::screen_topline#1 )
  (byte*) init_angle_screen::screen_bottomline#5 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_bottomline#0 init_angle_screen::@3/(byte*) init_angle_screen::screen_bottomline#1 )
  (byte) init_angle_screen::y#4 ← phi( init_angle_screen/(byte) init_angle_screen::y#0 init_angle_screen::@3/(byte) init_angle_screen::y#1 )
  (byte) init_angle_screen::x#0 ← (number) 0
  (byte) init_angle_screen::xb#0 ← (number) $27
  to:init_angle_screen::@2
init_angle_screen::@2: scope:[init_angle_screen]  from init_angle_screen::@1 init_angle_screen::@5
  (byte*) init_angle_screen::screen_topline#4 ← phi( init_angle_screen::@1/(byte*) init_angle_screen::screen_topline#5 init_angle_screen::@5/(byte*) init_angle_screen::screen_topline#2 )
  (byte) init_angle_screen::xb#3 ← phi( init_angle_screen::@1/(byte) init_angle_screen::xb#0 init_angle_screen::@5/(byte) init_angle_screen::xb#1 )
  (byte*) init_angle_screen::screen_bottomline#4 ← phi( init_angle_screen::@1/(byte*) init_angle_screen::screen_bottomline#5 init_angle_screen::@5/(byte*) init_angle_screen::screen_bottomline#2 )
  (byte) init_angle_screen::y#2 ← phi( init_angle_screen::@1/(byte) init_angle_screen::y#4 init_angle_screen::@5/(byte) init_angle_screen::y#5 )
  (byte) init_angle_screen::x#2 ← phi( init_angle_screen::@1/(byte) init_angle_screen::x#0 init_angle_screen::@5/(byte) init_angle_screen::x#1 )
  (number~) init_angle_screen::$2 ← (byte) init_angle_screen::x#2 * (number) 2
  (number~) init_angle_screen::$3 ← (number) $27 - (number~) init_angle_screen::$2
  (word~) init_angle_screen::$4 ← ((word)) { (number~) init_angle_screen::$3, (number) 0 }
  (signed word~) init_angle_screen::$5 ← ((signed word)) (word~) init_angle_screen::$4
  (signed word) init_angle_screen::xw#0 ← (signed word~) init_angle_screen::$5
  (number~) init_angle_screen::$6 ← (byte) init_angle_screen::y#2 * (number) 2
  (word~) init_angle_screen::$7 ← ((word)) { (number~) init_angle_screen::$6, (number) 0 }
  (signed word~) init_angle_screen::$8 ← ((signed word)) (word~) init_angle_screen::$7
  (signed word) init_angle_screen::yw#0 ← (signed word~) init_angle_screen::$8
  (signed word) atan2_16::x#0 ← (signed word) init_angle_screen::xw#0
  (signed word) atan2_16::y#0 ← (signed word) init_angle_screen::yw#0
  call atan2_16 
  (word) atan2_16::return#2 ← (word) atan2_16::return#1
  to:init_angle_screen::@5
init_angle_screen::@5: scope:[init_angle_screen]  from init_angle_screen::@2
  (byte) init_angle_screen::y#5 ← phi( init_angle_screen::@2/(byte) init_angle_screen::y#2 )
  (byte) init_angle_screen::x#3 ← phi( init_angle_screen::@2/(byte) init_angle_screen::x#2 )
  (byte*) init_angle_screen::screen_topline#2 ← phi( init_angle_screen::@2/(byte*) init_angle_screen::screen_topline#4 )
  (byte) init_angle_screen::xb#2 ← phi( init_angle_screen::@2/(byte) init_angle_screen::xb#3 )
  (byte*) init_angle_screen::screen_bottomline#2 ← phi( init_angle_screen::@2/(byte*) init_angle_screen::screen_bottomline#4 )
  (word) atan2_16::return#4 ← phi( init_angle_screen::@2/(word) atan2_16::return#2 )
  (word~) init_angle_screen::$9 ← (word) atan2_16::return#4
  (word) init_angle_screen::angle_w#0 ← (word~) init_angle_screen::$9
  (number~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (number) $80
  (number~) init_angle_screen::$11 ← > (number~) init_angle_screen::$10
  (byte) init_angle_screen::ang_w#0 ← (number~) init_angle_screen::$11
  *((byte*) init_angle_screen::screen_bottomline#2 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0
  (byte~) init_angle_screen::$12 ← - (byte) init_angle_screen::ang_w#0
  *((byte*) init_angle_screen::screen_topline#2 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$12
  (number~) init_angle_screen::$13 ← (number) $80 + (byte) init_angle_screen::ang_w#0
  *((byte*) init_angle_screen::screen_topline#2 + (byte) init_angle_screen::x#3) ← (number~) init_angle_screen::$13
  (number~) init_angle_screen::$14 ← (number) $80 - (byte) init_angle_screen::ang_w#0
  *((byte*) init_angle_screen::screen_bottomline#2 + (byte) init_angle_screen::x#3) ← (number~) init_angle_screen::$14
  (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#3
  (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2
  (bool~) init_angle_screen::$15 ← (byte) init_angle_screen::x#1 <= (number) $13
  if((bool~) init_angle_screen::$15) goto init_angle_screen::@2
  to:init_angle_screen::@3
init_angle_screen::@3: scope:[init_angle_screen]  from init_angle_screen::@5
  (byte) init_angle_screen::y#3 ← phi( init_angle_screen::@5/(byte) init_angle_screen::y#5 )
  (byte*) init_angle_screen::screen_bottomline#3 ← phi( init_angle_screen::@5/(byte*) init_angle_screen::screen_bottomline#2 )
  (byte*) init_angle_screen::screen_topline#3 ← phi( init_angle_screen::@5/(byte*) init_angle_screen::screen_topline#2 )
  (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#3 - (number) $28
  (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#3 + (number) $28
  (byte) init_angle_screen::y#1 ← (byte) init_angle_screen::y#3 + rangenext(0,$c)
  (bool~) init_angle_screen::$16 ← (byte) init_angle_screen::y#1 != rangelast(0,$c)
  if((bool~) init_angle_screen::$16) goto init_angle_screen::@1
  to:init_angle_screen::@return
init_angle_screen::@return: scope:[init_angle_screen]  from init_angle_screen::@3
  return 
  to:@return
init_dist_screen: scope:[init_dist_screen]  from main
  (byte*) init_dist_screen::screen#2 ← phi( main/(byte*) init_dist_screen::screen#0 )
  (word*) SQUARES#23 ← phi( main/(word*) SQUARES#21 )
  (byte*) heap_head#28 ← phi( main/(byte*) heap_head#26 )
  (byte) NUM_SQUARES#3 ← (number) $30
  call init_squares 
  to:init_dist_screen::@15
init_dist_screen::@15: scope:[init_dist_screen]  from init_dist_screen
  (byte) NUM_SQUARES#46 ← phi( init_dist_screen/(byte) NUM_SQUARES#3 )
  (byte*) init_dist_screen::screen#1 ← phi( init_dist_screen/(byte*) init_dist_screen::screen#2 )
  (word*) SQUARES#14 ← phi( init_dist_screen/(word*) SQUARES#2 )
  (byte*) heap_head#20 ← phi( init_dist_screen/(byte*) heap_head#4 )
  (byte*) heap_head#9 ← (byte*) heap_head#20
  (word*) SQUARES#5 ← (word*) SQUARES#14
  (byte*) init_dist_screen::screen_topline#0 ← (byte*) init_dist_screen::screen#1
  (byte*~) init_dist_screen::$1 ← (byte*) init_dist_screen::screen#1 + (number) $28*(number) $18
  (byte*) init_dist_screen::screen_bottomline#0 ← (byte*~) init_dist_screen::$1
  (byte) init_dist_screen::y#0 ← (byte) 0
  to:init_dist_screen::@1
init_dist_screen::@1: scope:[init_dist_screen]  from init_dist_screen::@11 init_dist_screen::@15
  (byte*) heap_head#58 ← phi( init_dist_screen::@11/(byte*) heap_head#29 init_dist_screen::@15/(byte*) heap_head#9 )
  (byte*) init_dist_screen::screen_bottomline#13 ← phi( init_dist_screen::@11/(byte*) init_dist_screen::screen_bottomline#1 init_dist_screen::@15/(byte*) init_dist_screen::screen_bottomline#0 )
  (byte*) init_dist_screen::screen_topline#13 ← phi( init_dist_screen::@11/(byte*) init_dist_screen::screen_topline#1 init_dist_screen::@15/(byte*) init_dist_screen::screen_topline#0 )
  (byte) NUM_SQUARES#44 ← phi( init_dist_screen::@11/(byte) NUM_SQUARES#16 init_dist_screen::@15/(byte) NUM_SQUARES#46 )
  (word*) SQUARES#37 ← phi( init_dist_screen::@11/(word*) SQUARES#24 init_dist_screen::@15/(word*) SQUARES#5 )
  (byte) init_dist_screen::y#2 ← phi( init_dist_screen::@11/(byte) init_dist_screen::y#1 init_dist_screen::@15/(byte) init_dist_screen::y#0 )
  (number~) init_dist_screen::$2 ← (byte) init_dist_screen::y#2 * (number) 2
  (byte) init_dist_screen::y2#0 ← (number~) init_dist_screen::$2
  (bool~) init_dist_screen::$3 ← (byte) init_dist_screen::y2#0 >= (number) $18
  if((bool~) 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
  (byte*) heap_head#55 ← phi( init_dist_screen::@1/(byte*) heap_head#58 )
  (byte) init_dist_screen::y#12 ← phi( init_dist_screen::@1/(byte) init_dist_screen::y#2 )
  (byte*) init_dist_screen::screen_bottomline#11 ← phi( init_dist_screen::@1/(byte*) init_dist_screen::screen_bottomline#13 )
  (byte*) init_dist_screen::screen_topline#11 ← phi( init_dist_screen::@1/(byte*) init_dist_screen::screen_topline#13 )
  (byte) NUM_SQUARES#40 ← phi( init_dist_screen::@1/(byte) NUM_SQUARES#44 )
  (word*) SQUARES#28 ← phi( init_dist_screen::@1/(word*) SQUARES#37 )
  (byte) init_dist_screen::y2#1 ← phi( init_dist_screen::@1/(byte) init_dist_screen::y2#0 )
  (number~) init_dist_screen::$6 ← (byte) init_dist_screen::y2#1 - (number) $18
  (number~) init_dist_screen::$7 ← (number~) init_dist_screen::$6
  to:init_dist_screen::@4
init_dist_screen::@3: scope:[init_dist_screen]  from init_dist_screen::@1
  (byte*) heap_head#56 ← phi( init_dist_screen::@1/(byte*) heap_head#58 )
  (byte) init_dist_screen::y#13 ← phi( init_dist_screen::@1/(byte) init_dist_screen::y#2 )
  (byte*) init_dist_screen::screen_bottomline#12 ← phi( init_dist_screen::@1/(byte*) init_dist_screen::screen_bottomline#13 )
  (byte*) init_dist_screen::screen_topline#12 ← phi( init_dist_screen::@1/(byte*) init_dist_screen::screen_topline#13 )
  (byte) NUM_SQUARES#41 ← phi( init_dist_screen::@1/(byte) NUM_SQUARES#44 )
  (word*) SQUARES#29 ← phi( init_dist_screen::@1/(word*) SQUARES#37 )
  (byte) init_dist_screen::y2#2 ← phi( init_dist_screen::@1/(byte) init_dist_screen::y2#0 )
  (number~) init_dist_screen::$4 ← (number) $18 - (byte) init_dist_screen::y2#2
  (number~) init_dist_screen::$5 ← (number~) 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
  (byte*) heap_head#53 ← phi( init_dist_screen::@2/(byte*) heap_head#55 init_dist_screen::@3/(byte*) heap_head#56 )
  (byte) init_dist_screen::y#11 ← phi( init_dist_screen::@2/(byte) init_dist_screen::y#12 init_dist_screen::@3/(byte) init_dist_screen::y#13 )
  (byte*) init_dist_screen::screen_bottomline#10 ← phi( init_dist_screen::@2/(byte*) init_dist_screen::screen_bottomline#11 init_dist_screen::@3/(byte*) init_dist_screen::screen_bottomline#12 )
  (byte*) init_dist_screen::screen_topline#10 ← phi( init_dist_screen::@2/(byte*) init_dist_screen::screen_topline#11 init_dist_screen::@3/(byte*) init_dist_screen::screen_topline#12 )
  (byte) NUM_SQUARES#37 ← phi( init_dist_screen::@2/(byte) NUM_SQUARES#40 init_dist_screen::@3/(byte) NUM_SQUARES#41 )
  (word*) SQUARES#18 ← phi( init_dist_screen::@2/(word*) SQUARES#28 init_dist_screen::@3/(word*) SQUARES#29 )
  (number~) init_dist_screen::$8 ← phi( init_dist_screen::@2/(number~) init_dist_screen::$7 init_dist_screen::@3/(number~) init_dist_screen::$5 )
  (byte) init_dist_screen::yd#0 ← (number~) init_dist_screen::$8
  (byte) sqr::val#0 ← (byte) init_dist_screen::yd#0
  call sqr 
  (word) sqr::return#2 ← (word) sqr::return#1
  to:init_dist_screen::@16
init_dist_screen::@16: scope:[init_dist_screen]  from init_dist_screen::@4
  (byte*) heap_head#51 ← phi( init_dist_screen::@4/(byte*) heap_head#53 )
  (byte) init_dist_screen::y#10 ← phi( init_dist_screen::@4/(byte) init_dist_screen::y#11 )
  (byte*) init_dist_screen::screen_bottomline#9 ← phi( init_dist_screen::@4/(byte*) init_dist_screen::screen_bottomline#10 )
  (byte*) init_dist_screen::screen_topline#9 ← phi( init_dist_screen::@4/(byte*) init_dist_screen::screen_topline#10 )
  (byte) NUM_SQUARES#34 ← phi( init_dist_screen::@4/(byte) NUM_SQUARES#37 )
  (word*) SQUARES#42 ← phi( init_dist_screen::@4/(word*) SQUARES#18 )
  (word) sqr::return#5 ← phi( init_dist_screen::@4/(word) sqr::return#2 )
  (word~) init_dist_screen::$9 ← (word) sqr::return#5
  (word) init_dist_screen::yds#0 ← (word~) init_dist_screen::$9
  (byte) init_dist_screen::x#0 ← (number) 0
  (byte) init_dist_screen::xb#0 ← (number) $27
  to:init_dist_screen::@5
init_dist_screen::@5: scope:[init_dist_screen]  from init_dist_screen::@16 init_dist_screen::@18
  (byte*) heap_head#49 ← phi( init_dist_screen::@16/(byte*) heap_head#51 init_dist_screen::@18/(byte*) heap_head#34 )
  (byte) init_dist_screen::y#9 ← phi( init_dist_screen::@16/(byte) init_dist_screen::y#10 init_dist_screen::@18/(byte) init_dist_screen::y#4 )
  (byte) init_dist_screen::xb#7 ← phi( init_dist_screen::@16/(byte) init_dist_screen::xb#0 init_dist_screen::@18/(byte) init_dist_screen::xb#1 )
  (byte*) init_dist_screen::screen_bottomline#8 ← phi( init_dist_screen::@16/(byte*) init_dist_screen::screen_bottomline#9 init_dist_screen::@18/(byte*) init_dist_screen::screen_bottomline#2 )
  (byte*) init_dist_screen::screen_topline#8 ← phi( init_dist_screen::@16/(byte*) init_dist_screen::screen_topline#9 init_dist_screen::@18/(byte*) init_dist_screen::screen_topline#2 )
  (byte) NUM_SQUARES#31 ← phi( init_dist_screen::@16/(byte) NUM_SQUARES#34 init_dist_screen::@18/(byte) NUM_SQUARES#21 )
  (word) init_dist_screen::yds#5 ← phi( init_dist_screen::@16/(word) init_dist_screen::yds#0 init_dist_screen::@18/(word) init_dist_screen::yds#6 )
  (word*) SQUARES#38 ← phi( init_dist_screen::@16/(word*) SQUARES#42 init_dist_screen::@18/(word*) SQUARES#32 )
  (byte) init_dist_screen::x#2 ← phi( init_dist_screen::@16/(byte) init_dist_screen::x#0 init_dist_screen::@18/(byte) init_dist_screen::x#1 )
  (number~) init_dist_screen::$10 ← (byte) init_dist_screen::x#2 * (number) 2
  (byte) init_dist_screen::x2#0 ← (number~) init_dist_screen::$10
  (bool~) init_dist_screen::$11 ← (byte) init_dist_screen::x2#0 >= (number) $27
  if((bool~) init_dist_screen::$11) goto init_dist_screen::@6
  to:init_dist_screen::@7
init_dist_screen::@6: scope:[init_dist_screen]  from init_dist_screen::@5
  (byte*) heap_head#46 ← phi( init_dist_screen::@5/(byte*) heap_head#49 )
  (byte) init_dist_screen::y#7 ← phi( init_dist_screen::@5/(byte) init_dist_screen::y#9 )
  (byte) init_dist_screen::xb#5 ← phi( init_dist_screen::@5/(byte) init_dist_screen::xb#7 )
  (byte*) init_dist_screen::screen_bottomline#6 ← phi( init_dist_screen::@5/(byte*) init_dist_screen::screen_bottomline#8 )
  (byte) init_dist_screen::x#6 ← phi( init_dist_screen::@5/(byte) init_dist_screen::x#2 )
  (byte*) init_dist_screen::screen_topline#6 ← phi( init_dist_screen::@5/(byte*) init_dist_screen::screen_topline#8 )
  (byte) NUM_SQUARES#26 ← phi( init_dist_screen::@5/(byte) NUM_SQUARES#31 )
  (word) init_dist_screen::yds#3 ← phi( init_dist_screen::@5/(word) init_dist_screen::yds#5 )
  (word*) SQUARES#30 ← phi( init_dist_screen::@5/(word*) SQUARES#38 )
  (byte) init_dist_screen::x2#1 ← phi( init_dist_screen::@5/(byte) init_dist_screen::x2#0 )
  (number~) init_dist_screen::$14 ← (byte) init_dist_screen::x2#1 - (number) $27
  (number~) init_dist_screen::$15 ← (number~) init_dist_screen::$14
  to:init_dist_screen::@8
init_dist_screen::@7: scope:[init_dist_screen]  from init_dist_screen::@5
  (byte*) heap_head#47 ← phi( init_dist_screen::@5/(byte*) heap_head#49 )
  (byte) init_dist_screen::y#8 ← phi( init_dist_screen::@5/(byte) init_dist_screen::y#9 )
  (byte) init_dist_screen::xb#6 ← phi( init_dist_screen::@5/(byte) init_dist_screen::xb#7 )
  (byte*) init_dist_screen::screen_bottomline#7 ← phi( init_dist_screen::@5/(byte*) init_dist_screen::screen_bottomline#8 )
  (byte) init_dist_screen::x#7 ← phi( init_dist_screen::@5/(byte) init_dist_screen::x#2 )
  (byte*) init_dist_screen::screen_topline#7 ← phi( init_dist_screen::@5/(byte*) init_dist_screen::screen_topline#8 )
  (byte) NUM_SQUARES#27 ← phi( init_dist_screen::@5/(byte) NUM_SQUARES#31 )
  (word) init_dist_screen::yds#4 ← phi( init_dist_screen::@5/(word) init_dist_screen::yds#5 )
  (word*) SQUARES#31 ← phi( init_dist_screen::@5/(word*) SQUARES#38 )
  (byte) init_dist_screen::x2#2 ← phi( init_dist_screen::@5/(byte) init_dist_screen::x2#0 )
  (number~) init_dist_screen::$12 ← (number) $27 - (byte) init_dist_screen::x2#2
  (number~) init_dist_screen::$13 ← (number~) init_dist_screen::$12
  to:init_dist_screen::@8
init_dist_screen::@8: scope:[init_dist_screen]  from init_dist_screen::@6 init_dist_screen::@7
  (byte*) heap_head#43 ← phi( init_dist_screen::@6/(byte*) heap_head#46 init_dist_screen::@7/(byte*) heap_head#47 )
  (byte) init_dist_screen::y#6 ← phi( init_dist_screen::@6/(byte) init_dist_screen::y#7 init_dist_screen::@7/(byte) init_dist_screen::y#8 )
  (byte) init_dist_screen::xb#4 ← phi( init_dist_screen::@6/(byte) init_dist_screen::xb#5 init_dist_screen::@7/(byte) init_dist_screen::xb#6 )
  (byte*) init_dist_screen::screen_bottomline#5 ← phi( init_dist_screen::@6/(byte*) init_dist_screen::screen_bottomline#6 init_dist_screen::@7/(byte*) init_dist_screen::screen_bottomline#7 )
  (byte) init_dist_screen::x#5 ← phi( init_dist_screen::@6/(byte) init_dist_screen::x#6 init_dist_screen::@7/(byte) init_dist_screen::x#7 )
  (byte*) init_dist_screen::screen_topline#5 ← phi( init_dist_screen::@6/(byte*) init_dist_screen::screen_topline#6 init_dist_screen::@7/(byte*) init_dist_screen::screen_topline#7 )
  (byte) NUM_SQUARES#20 ← phi( init_dist_screen::@6/(byte) NUM_SQUARES#26 init_dist_screen::@7/(byte) NUM_SQUARES#27 )
  (word) init_dist_screen::yds#2 ← phi( init_dist_screen::@6/(word) init_dist_screen::yds#3 init_dist_screen::@7/(word) init_dist_screen::yds#4 )
  (word*) SQUARES#19 ← phi( init_dist_screen::@6/(word*) SQUARES#30 init_dist_screen::@7/(word*) SQUARES#31 )
  (number~) init_dist_screen::$16 ← phi( init_dist_screen::@6/(number~) init_dist_screen::$15 init_dist_screen::@7/(number~) init_dist_screen::$13 )
  (byte) init_dist_screen::xd#0 ← (number~) init_dist_screen::$16
  (byte) sqr::val#1 ← (byte) init_dist_screen::xd#0
  call sqr 
  (word) sqr::return#3 ← (word) sqr::return#1
  to:init_dist_screen::@17
init_dist_screen::@17: scope:[init_dist_screen]  from init_dist_screen::@8
  (byte*) heap_head#39 ← phi( init_dist_screen::@8/(byte*) heap_head#43 )
  (byte) init_dist_screen::y#5 ← phi( init_dist_screen::@8/(byte) init_dist_screen::y#6 )
  (byte) init_dist_screen::xb#3 ← phi( init_dist_screen::@8/(byte) init_dist_screen::xb#4 )
  (byte*) init_dist_screen::screen_bottomline#4 ← phi( init_dist_screen::@8/(byte*) init_dist_screen::screen_bottomline#5 )
  (byte) init_dist_screen::x#4 ← phi( init_dist_screen::@8/(byte) init_dist_screen::x#5 )
  (byte*) init_dist_screen::screen_topline#4 ← phi( init_dist_screen::@8/(byte*) init_dist_screen::screen_topline#5 )
  (byte) NUM_SQUARES#13 ← phi( init_dist_screen::@8/(byte) NUM_SQUARES#20 )
  (word*) SQUARES#20 ← phi( init_dist_screen::@8/(word*) SQUARES#19 )
  (word) init_dist_screen::yds#1 ← phi( init_dist_screen::@8/(word) init_dist_screen::yds#2 )
  (word) sqr::return#6 ← phi( init_dist_screen::@8/(word) sqr::return#3 )
  (word~) init_dist_screen::$17 ← (word) sqr::return#6
  (word) init_dist_screen::xds#0 ← (word~) init_dist_screen::$17
  (word~) init_dist_screen::$18 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#1
  (word) init_dist_screen::ds#0 ← (word~) init_dist_screen::$18
  (word) sqrt::val#0 ← (word) init_dist_screen::ds#0
  call sqrt 
  (byte) sqrt::return#2 ← (byte) sqrt::return#1
  to:init_dist_screen::@18
init_dist_screen::@18: scope:[init_dist_screen]  from init_dist_screen::@17
  (word) init_dist_screen::yds#6 ← phi( init_dist_screen::@17/(word) init_dist_screen::yds#1 )
  (word*) SQUARES#32 ← phi( init_dist_screen::@17/(word*) SQUARES#20 )
  (byte*) heap_head#34 ← phi( init_dist_screen::@17/(byte*) heap_head#39 )
  (byte) NUM_SQUARES#21 ← phi( init_dist_screen::@17/(byte) NUM_SQUARES#13 )
  (byte) init_dist_screen::y#4 ← phi( init_dist_screen::@17/(byte) init_dist_screen::y#5 )
  (byte) init_dist_screen::xb#2 ← phi( init_dist_screen::@17/(byte) init_dist_screen::xb#3 )
  (byte*) init_dist_screen::screen_bottomline#2 ← phi( init_dist_screen::@17/(byte*) init_dist_screen::screen_bottomline#4 )
  (byte) init_dist_screen::x#3 ← phi( init_dist_screen::@17/(byte) init_dist_screen::x#4 )
  (byte*) init_dist_screen::screen_topline#2 ← phi( init_dist_screen::@17/(byte*) init_dist_screen::screen_topline#4 )
  (byte) sqrt::return#4 ← phi( init_dist_screen::@17/(byte) sqrt::return#2 )
  (byte~) init_dist_screen::$19 ← (byte) sqrt::return#4
  (byte) init_dist_screen::d#0 ← (byte~) init_dist_screen::$19
  *((byte*) init_dist_screen::screen_topline#2 + (byte) init_dist_screen::x#3) ← (byte) init_dist_screen::d#0
  *((byte*) init_dist_screen::screen_bottomline#2 + (byte) init_dist_screen::x#3) ← (byte) init_dist_screen::d#0
  *((byte*) init_dist_screen::screen_topline#2 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0
  *((byte*) init_dist_screen::screen_bottomline#2 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0
  (byte) init_dist_screen::x#1 ← ++ (byte) init_dist_screen::x#3
  (byte) init_dist_screen::xb#1 ← -- (byte) init_dist_screen::xb#2
  (bool~) init_dist_screen::$20 ← (byte) init_dist_screen::x#1 <= (number) $13
  if((bool~) init_dist_screen::$20) goto init_dist_screen::@5
  to:init_dist_screen::@11
init_dist_screen::@11: scope:[init_dist_screen]  from init_dist_screen::@18
  (word*) SQUARES#24 ← phi( init_dist_screen::@18/(word*) SQUARES#32 )
  (byte*) heap_head#29 ← phi( init_dist_screen::@18/(byte*) heap_head#34 )
  (byte) NUM_SQUARES#16 ← phi( init_dist_screen::@18/(byte) NUM_SQUARES#21 )
  (byte) init_dist_screen::y#3 ← phi( init_dist_screen::@18/(byte) init_dist_screen::y#4 )
  (byte*) init_dist_screen::screen_bottomline#3 ← phi( init_dist_screen::@18/(byte*) init_dist_screen::screen_bottomline#2 )
  (byte*) init_dist_screen::screen_topline#3 ← phi( init_dist_screen::@18/(byte*) init_dist_screen::screen_topline#2 )
  (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#3 + (number) $28
  (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#3 - (number) $28
  (byte) init_dist_screen::y#1 ← (byte) init_dist_screen::y#3 + rangenext(0,$c)
  (bool~) init_dist_screen::$21 ← (byte) init_dist_screen::y#1 != rangelast(0,$c)
  if((bool~) init_dist_screen::$21) goto init_dist_screen::@1
  to:init_dist_screen::@return
init_dist_screen::@return: scope:[init_dist_screen]  from init_dist_screen::@11
  (word*) SQUARES#15 ← phi( init_dist_screen::@11/(word*) SQUARES#24 )
  (byte*) heap_head#21 ← phi( init_dist_screen::@11/(byte*) heap_head#29 )
  (byte) NUM_SQUARES#11 ← phi( init_dist_screen::@11/(byte) NUM_SQUARES#16 )
  (byte) NUM_SQUARES#4 ← (byte) NUM_SQUARES#11
  (byte*) heap_head#10 ← (byte*) heap_head#21
  (word*) SQUARES#6 ← (word*) SQUARES#15
  return 
  to:@return
make_plasma_charset: scope:[make_plasma_charset]  from main::@10
  (byte*) make_plasma_charset::charset#13 ← phi( main::@10/(byte*) make_plasma_charset::charset#0 )
  (byte*) print_char_cursor#29 ← phi( main::@10/(byte*) print_char_cursor#21 )
  (byte*) print_line_cursor#22 ← phi( main::@10/(byte*) print_line_cursor#14 )
  (byte*) print_screen#4 ← phi( main::@10/(byte*) print_screen#5 )
  (byte[8]) make_plasma_charset::bittab#0 ← { (number) 1, (number) 2, (number) 4, (number) 8, (number) $10, (number) $20, (number) $40, (number) $80 }
  call sid_rnd_init 
  to:make_plasma_charset::@11
make_plasma_charset::@11: scope:[make_plasma_charset]  from make_plasma_charset
  (byte*) make_plasma_charset::charset#10 ← phi( make_plasma_charset/(byte*) make_plasma_charset::charset#13 )
  (byte*) print_char_cursor#23 ← phi( make_plasma_charset/(byte*) print_char_cursor#29 )
  (byte*) print_line_cursor#16 ← phi( make_plasma_charset/(byte*) print_line_cursor#22 )
  (byte*) print_screen#3 ← phi( make_plasma_charset/(byte*) print_screen#4 )
  call print_cls 
  to:make_plasma_charset::@12
make_plasma_charset::@12: scope:[make_plasma_charset]  from make_plasma_charset::@11
  (byte*) make_plasma_charset::charset#8 ← phi( make_plasma_charset::@11/(byte*) make_plasma_charset::charset#10 )
  (byte*) print_char_cursor#16 ← phi( make_plasma_charset::@11/(byte*) print_char_cursor#4 )
  (byte*) print_line_cursor#11 ← phi( make_plasma_charset::@11/(byte*) print_line_cursor#2 )
  (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#11
  (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#16
  (word) make_plasma_charset::c#0 ← (number) 0
  to:make_plasma_charset::@1
make_plasma_charset::@1: scope:[make_plasma_charset]  from make_plasma_charset::@12 make_plasma_charset::@9
  (byte*) print_char_cursor#49 ← phi( make_plasma_charset::@12/(byte*) print_char_cursor#7 make_plasma_charset::@9/(byte*) print_char_cursor#24 )
  (byte*) print_line_cursor#44 ← phi( make_plasma_charset::@12/(byte*) print_line_cursor#5 make_plasma_charset::@9/(byte*) print_line_cursor#17 )
  (byte*) make_plasma_charset::charset#7 ← phi( make_plasma_charset::@12/(byte*) make_plasma_charset::charset#8 make_plasma_charset::@9/(byte*) make_plasma_charset::charset#9 )
  (word) make_plasma_charset::c#2 ← phi( make_plasma_charset::@12/(word) make_plasma_charset::c#0 make_plasma_charset::@9/(word) make_plasma_charset::c#1 )
  (byte~) make_plasma_charset::$2 ← < (word) make_plasma_charset::c#2
  (byte) make_plasma_charset::s#0 ← *((byte[$200]) SINTABLE#0 + (byte~) make_plasma_charset::$2)
  (byte) make_plasma_charset::i#0 ← (number) 0
  to:make_plasma_charset::@2
make_plasma_charset::@2: scope:[make_plasma_charset]  from make_plasma_charset::@1 make_plasma_charset::@6
  (byte*) print_char_cursor#47 ← phi( make_plasma_charset::@1/(byte*) print_char_cursor#49 make_plasma_charset::@6/(byte*) print_char_cursor#35 )
  (byte*) print_line_cursor#42 ← phi( make_plasma_charset::@1/(byte*) print_line_cursor#44 make_plasma_charset::@6/(byte*) print_line_cursor#29 )
  (byte*) make_plasma_charset::charset#6 ← phi( make_plasma_charset::@1/(byte*) make_plasma_charset::charset#7 make_plasma_charset::@6/(byte*) make_plasma_charset::charset#1 )
  (byte) make_plasma_charset::i#7 ← phi( make_plasma_charset::@1/(byte) make_plasma_charset::i#0 make_plasma_charset::@6/(byte) make_plasma_charset::i#1 )
  (word) make_plasma_charset::c#12 ← phi( make_plasma_charset::@1/(word) make_plasma_charset::c#2 make_plasma_charset::@6/(word) make_plasma_charset::c#3 )
  (byte) make_plasma_charset::s#3 ← phi( make_plasma_charset::@1/(byte) make_plasma_charset::s#0 make_plasma_charset::@6/(byte) make_plasma_charset::s#5 )
  (byte) make_plasma_charset::b#0 ← (number) 0
  (byte) make_plasma_charset::ii#0 ← (number) 0
  to:make_plasma_charset::@3
make_plasma_charset::@3: scope:[make_plasma_charset]  from make_plasma_charset::@2 make_plasma_charset::@4
  (byte*) print_char_cursor#45 ← phi( make_plasma_charset::@2/(byte*) print_char_cursor#47 make_plasma_charset::@4/(byte*) print_char_cursor#38 )
  (byte*) print_line_cursor#40 ← phi( make_plasma_charset::@2/(byte*) print_line_cursor#42 make_plasma_charset::@4/(byte*) print_line_cursor#33 )
  (byte*) make_plasma_charset::charset#5 ← phi( make_plasma_charset::@2/(byte*) make_plasma_charset::charset#6 make_plasma_charset::@4/(byte*) make_plasma_charset::charset#2 )
  (byte) make_plasma_charset::i#6 ← phi( make_plasma_charset::@2/(byte) make_plasma_charset::i#7 make_plasma_charset::@4/(byte) make_plasma_charset::i#3 )
  (word) make_plasma_charset::c#11 ← phi( make_plasma_charset::@2/(word) make_plasma_charset::c#12 make_plasma_charset::@4/(word) make_plasma_charset::c#6 )
  (byte) make_plasma_charset::b#6 ← phi( make_plasma_charset::@2/(byte) make_plasma_charset::b#0 make_plasma_charset::@4/(byte) make_plasma_charset::b#5 )
  (byte) make_plasma_charset::ii#5 ← phi( make_plasma_charset::@2/(byte) make_plasma_charset::ii#0 make_plasma_charset::@4/(byte) make_plasma_charset::ii#1 )
  (byte) make_plasma_charset::s#2 ← phi( make_plasma_charset::@2/(byte) make_plasma_charset::s#3 make_plasma_charset::@4/(byte) make_plasma_charset::s#4 )
  call sid_rnd 
  (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#1
  to:make_plasma_charset::@13
make_plasma_charset::@13: scope:[make_plasma_charset]  from make_plasma_charset::@3
  (byte*) print_char_cursor#41 ← phi( make_plasma_charset::@3/(byte*) print_char_cursor#45 )
  (byte*) print_line_cursor#36 ← phi( make_plasma_charset::@3/(byte*) print_line_cursor#40 )
  (byte*) make_plasma_charset::charset#3 ← phi( make_plasma_charset::@3/(byte*) make_plasma_charset::charset#5 )
  (byte) make_plasma_charset::i#4 ← phi( make_plasma_charset::@3/(byte) make_plasma_charset::i#6 )
  (word) make_plasma_charset::c#8 ← phi( make_plasma_charset::@3/(word) make_plasma_charset::c#11 )
  (byte) make_plasma_charset::b#4 ← phi( make_plasma_charset::@3/(byte) make_plasma_charset::b#6 )
  (byte) make_plasma_charset::ii#4 ← phi( make_plasma_charset::@3/(byte) make_plasma_charset::ii#5 )
  (byte) make_plasma_charset::s#1 ← phi( make_plasma_charset::@3/(byte) make_plasma_charset::s#2 )
  (byte) sid_rnd::return#4 ← phi( make_plasma_charset::@3/(byte) sid_rnd::return#2 )
  (byte~) make_plasma_charset::$3 ← (byte) sid_rnd::return#4
  (number~) make_plasma_charset::$4 ← (byte~) make_plasma_charset::$3 & (number) $ff
  (bool~) make_plasma_charset::$5 ← (number~) make_plasma_charset::$4 > (byte) make_plasma_charset::s#1
  (bool~) make_plasma_charset::$6 ← ! (bool~) make_plasma_charset::$5
  if((bool~) make_plasma_charset::$6) goto make_plasma_charset::@4
  to:make_plasma_charset::@5
make_plasma_charset::@4: scope:[make_plasma_charset]  from make_plasma_charset::@13 make_plasma_charset::@5
  (byte*) print_char_cursor#38 ← phi( make_plasma_charset::@13/(byte*) print_char_cursor#41 make_plasma_charset::@5/(byte*) print_char_cursor#42 )
  (byte*) print_line_cursor#33 ← phi( make_plasma_charset::@13/(byte*) print_line_cursor#36 make_plasma_charset::@5/(byte*) print_line_cursor#37 )
  (byte) make_plasma_charset::s#4 ← phi( make_plasma_charset::@13/(byte) make_plasma_charset::s#1 make_plasma_charset::@5/(byte) make_plasma_charset::s#6 )
  (byte*) make_plasma_charset::charset#2 ← phi( make_plasma_charset::@13/(byte*) make_plasma_charset::charset#3 make_plasma_charset::@5/(byte*) make_plasma_charset::charset#4 )
  (byte) make_plasma_charset::b#5 ← phi( make_plasma_charset::@13/(byte) make_plasma_charset::b#4 make_plasma_charset::@5/(byte) make_plasma_charset::b#1 )
  (byte) make_plasma_charset::i#3 ← phi( make_plasma_charset::@13/(byte) make_plasma_charset::i#4 make_plasma_charset::@5/(byte) make_plasma_charset::i#5 )
  (word) make_plasma_charset::c#6 ← phi( make_plasma_charset::@13/(word) make_plasma_charset::c#8 make_plasma_charset::@5/(word) make_plasma_charset::c#9 )
  (byte) make_plasma_charset::ii#2 ← phi( make_plasma_charset::@13/(byte) make_plasma_charset::ii#4 make_plasma_charset::@5/(byte) make_plasma_charset::ii#3 )
  (byte) make_plasma_charset::ii#1 ← ++ (byte) make_plasma_charset::ii#2
  (bool~) make_plasma_charset::$7 ← (byte) make_plasma_charset::ii#1 < (number) 8
  if((bool~) make_plasma_charset::$7) goto make_plasma_charset::@3
  to:make_plasma_charset::@6
make_plasma_charset::@5: scope:[make_plasma_charset]  from make_plasma_charset::@13
  (byte*) print_char_cursor#42 ← phi( make_plasma_charset::@13/(byte*) print_char_cursor#41 )
  (byte*) print_line_cursor#37 ← phi( make_plasma_charset::@13/(byte*) print_line_cursor#36 )
  (byte) make_plasma_charset::s#6 ← phi( make_plasma_charset::@13/(byte) make_plasma_charset::s#1 )
  (byte*) make_plasma_charset::charset#4 ← phi( make_plasma_charset::@13/(byte*) make_plasma_charset::charset#3 )
  (byte) make_plasma_charset::i#5 ← phi( make_plasma_charset::@13/(byte) make_plasma_charset::i#4 )
  (word) make_plasma_charset::c#9 ← phi( make_plasma_charset::@13/(word) make_plasma_charset::c#8 )
  (byte) make_plasma_charset::ii#3 ← phi( make_plasma_charset::@13/(byte) make_plasma_charset::ii#4 )
  (byte) make_plasma_charset::b#2 ← phi( make_plasma_charset::@13/(byte) make_plasma_charset::b#4 )
  (byte) make_plasma_charset::b#1 ← (byte) make_plasma_charset::b#2 | *((byte[8]) make_plasma_charset::bittab#0 + (byte) make_plasma_charset::ii#3)
  to:make_plasma_charset::@4
make_plasma_charset::@6: scope:[make_plasma_charset]  from make_plasma_charset::@4
  (byte*) print_char_cursor#35 ← phi( make_plasma_charset::@4/(byte*) print_char_cursor#38 )
  (byte*) print_line_cursor#29 ← phi( make_plasma_charset::@4/(byte*) print_line_cursor#33 )
  (byte) make_plasma_charset::s#5 ← phi( make_plasma_charset::@4/(byte) make_plasma_charset::s#4 )
  (byte*) make_plasma_charset::charset#1 ← phi( make_plasma_charset::@4/(byte*) make_plasma_charset::charset#2 )
  (byte) make_plasma_charset::b#3 ← phi( make_plasma_charset::@4/(byte) make_plasma_charset::b#5 )
  (byte) make_plasma_charset::i#2 ← phi( make_plasma_charset::@4/(byte) make_plasma_charset::i#3 )
  (word) make_plasma_charset::c#3 ← phi( make_plasma_charset::@4/(word) make_plasma_charset::c#6 )
  (number~) make_plasma_charset::$8 ← (word) make_plasma_charset::c#3 * (number) 8
  (number~) make_plasma_charset::$9 ← (number~) make_plasma_charset::$8 + (byte) make_plasma_charset::i#2
  *((byte*) make_plasma_charset::charset#1 + (number~) make_plasma_charset::$9) ← (byte) make_plasma_charset::b#3
  (byte) make_plasma_charset::i#1 ← ++ (byte) make_plasma_charset::i#2
  (bool~) make_plasma_charset::$10 ← (byte) make_plasma_charset::i#1 < (number) 8
  if((bool~) make_plasma_charset::$10) goto make_plasma_charset::@2
  to:make_plasma_charset::@7
make_plasma_charset::@7: scope:[make_plasma_charset]  from make_plasma_charset::@6
  (byte*) make_plasma_charset::charset#12 ← phi( make_plasma_charset::@6/(byte*) make_plasma_charset::charset#1 )
  (byte*) print_char_cursor#30 ← phi( make_plasma_charset::@6/(byte*) print_char_cursor#35 )
  (byte*) print_line_cursor#24 ← phi( make_plasma_charset::@6/(byte*) print_line_cursor#29 )
  (word) make_plasma_charset::c#4 ← phi( make_plasma_charset::@6/(word) make_plasma_charset::c#3 )
  (number~) make_plasma_charset::$11 ← (word) make_plasma_charset::c#4 & (number) 7
  (bool~) make_plasma_charset::$12 ← (number~) make_plasma_charset::$11 == (number) 0
  (bool~) make_plasma_charset::$13 ← ! (bool~) make_plasma_charset::$12
  if((bool~) make_plasma_charset::$13) goto make_plasma_charset::@9
  to:make_plasma_charset::@8
make_plasma_charset::@9: scope:[make_plasma_charset]  from make_plasma_charset::@14 make_plasma_charset::@7
  (byte*) make_plasma_charset::charset#9 ← phi( make_plasma_charset::@14/(byte*) make_plasma_charset::charset#11 make_plasma_charset::@7/(byte*) make_plasma_charset::charset#12 )
  (byte*) print_char_cursor#24 ← phi( make_plasma_charset::@14/(byte*) print_char_cursor#8 make_plasma_charset::@7/(byte*) print_char_cursor#30 )
  (byte*) print_line_cursor#17 ← phi( make_plasma_charset::@14/(byte*) print_line_cursor#23 make_plasma_charset::@7/(byte*) print_line_cursor#24 )
  (word) make_plasma_charset::c#5 ← phi( make_plasma_charset::@14/(word) make_plasma_charset::c#7 make_plasma_charset::@7/(word) make_plasma_charset::c#4 )
  (word) make_plasma_charset::c#1 ← ++ (word) make_plasma_charset::c#5
  (bool~) make_plasma_charset::$15 ← (word) make_plasma_charset::c#1 < (number) $100
  if((bool~) make_plasma_charset::$15) goto make_plasma_charset::@1
  to:make_plasma_charset::@return
make_plasma_charset::@8: scope:[make_plasma_charset]  from make_plasma_charset::@7
  (byte*) make_plasma_charset::charset#14 ← phi( make_plasma_charset::@7/(byte*) make_plasma_charset::charset#12 )
  (byte*) print_line_cursor#30 ← phi( make_plasma_charset::@7/(byte*) print_line_cursor#24 )
  (word) make_plasma_charset::c#10 ← phi( make_plasma_charset::@7/(word) make_plasma_charset::c#4 )
  (byte*) print_char_cursor#20 ← phi( make_plasma_charset::@7/(byte*) print_char_cursor#30 )
  (byte) print_char::ch#0 ← (byte) '.'
  call print_char 
  to:make_plasma_charset::@14
make_plasma_charset::@14: scope:[make_plasma_charset]  from make_plasma_charset::@8
  (byte*) make_plasma_charset::charset#11 ← phi( make_plasma_charset::@8/(byte*) make_plasma_charset::charset#14 )
  (byte*) print_line_cursor#23 ← phi( make_plasma_charset::@8/(byte*) print_line_cursor#30 )
  (word) make_plasma_charset::c#7 ← phi( make_plasma_charset::@8/(word) make_plasma_charset::c#10 )
  (byte*) print_char_cursor#17 ← phi( make_plasma_charset::@8/(byte*) print_char_cursor#2 )
  (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#17
  to:make_plasma_charset::@9
make_plasma_charset::@return: scope:[make_plasma_charset]  from make_plasma_charset::@9
  (byte*) print_char_cursor#18 ← phi( make_plasma_charset::@9/(byte*) print_char_cursor#24 )
  (byte*) print_line_cursor#12 ← phi( make_plasma_charset::@9/(byte*) print_line_cursor#17 )
  (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#12
  (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#18
  return 
  to:@return
@51: scope:[]  from @47
  (byte*) print_screen#8 ← phi( @47/(byte*) print_screen#9 )
  (byte) sin_offset_y#18 ← phi( @47/(byte) sin_offset_y#3 )
  (byte) sin_offset_x#18 ← phi( @47/(byte) sin_offset_x#3 )
  (byte*) print_char_cursor#25 ← phi( @47/(byte*) print_char_cursor#31 )
  (byte*) print_line_cursor#18 ← phi( @47/(byte*) print_line_cursor#25 )
  (word*) SQUARES#25 ← phi( @47/(word*) SQUARES#33 )
  (byte*) heap_head#30 ← phi( @47/(byte*) heap_head#35 )
  (byte) NUM_SQUARES#17 ← phi( @47/(byte) NUM_SQUARES#22 )
  call main 
  to:@54
@54: scope:[]  from @51
  (byte) sin_offset_y#13 ← phi( @51/(byte) sin_offset_y#2 )
  (byte) sin_offset_x#13 ← phi( @51/(byte) sin_offset_x#2 )
  (byte*) print_char_cursor#19 ← phi( @51/(byte*) print_char_cursor#6 )
  (byte*) print_line_cursor#13 ← phi( @51/(byte*) print_line_cursor#4 )
  (word*) SQUARES#16 ← phi( @51/(word*) SQUARES#4 )
  (byte*) heap_head#22 ← phi( @51/(byte*) heap_head#8 )
  (byte) NUM_SQUARES#12 ← phi( @51/(byte) NUM_SQUARES#2 )
  (byte) NUM_SQUARES#5 ← (byte) NUM_SQUARES#12
  (byte*) heap_head#11 ← (byte*) heap_head#22
  (word*) SQUARES#7 ← (word*) SQUARES#16
  (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#13
  (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#19
  (byte) sin_offset_x#6 ← (byte) sin_offset_x#13
  (byte) sin_offset_y#6 ← (byte) sin_offset_y#13
  to:@end
@end: scope:[]  from @54

SYMBOL TABLE SSA
(void*~) $0
(void*~) $1
(label) @16
(label) @19
(label) @21
(label) @44
(label) @46
(label) @47
(label) @51
(label) @52
(label) @53
(label) @54
(label) @8
(label) @begin
(label) @end
(byte) BLACK
(byte) BLACK#0
(byte*) CHARSET
(byte*) CHARSET#0
(byte*) COLS
(byte*) COLS#0
(word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16
(word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0
(byte) CORDIC_ITERATIONS_16
(byte) CORDIC_ITERATIONS_16#0
(byte*) D018
(byte*) D018#0
(byte*) HEAP_TOP
(byte*) HEAP_TOP#0
(byte) NUM_SQUARES
(byte) NUM_SQUARES#0
(byte) NUM_SQUARES#1
(byte) NUM_SQUARES#10
(byte) NUM_SQUARES#11
(byte) NUM_SQUARES#12
(byte) NUM_SQUARES#13
(byte) NUM_SQUARES#14
(byte) NUM_SQUARES#15
(byte) NUM_SQUARES#16
(byte) NUM_SQUARES#17
(byte) NUM_SQUARES#18
(byte) NUM_SQUARES#19
(byte) NUM_SQUARES#2
(byte) NUM_SQUARES#20
(byte) NUM_SQUARES#21
(byte) NUM_SQUARES#22
(byte) NUM_SQUARES#23
(byte) NUM_SQUARES#24
(byte) NUM_SQUARES#25
(byte) NUM_SQUARES#26
(byte) NUM_SQUARES#27
(byte) NUM_SQUARES#28
(byte) NUM_SQUARES#29
(byte) NUM_SQUARES#3
(byte) NUM_SQUARES#30
(byte) NUM_SQUARES#31
(byte) NUM_SQUARES#32
(byte) NUM_SQUARES#33
(byte) NUM_SQUARES#34
(byte) NUM_SQUARES#35
(byte) NUM_SQUARES#36
(byte) NUM_SQUARES#37
(byte) NUM_SQUARES#38
(byte) NUM_SQUARES#39
(byte) NUM_SQUARES#4
(byte) NUM_SQUARES#40
(byte) NUM_SQUARES#41
(byte) NUM_SQUARES#42
(byte) NUM_SQUARES#43
(byte) NUM_SQUARES#44
(byte) NUM_SQUARES#45
(byte) NUM_SQUARES#46
(byte) NUM_SQUARES#47
(byte) NUM_SQUARES#5
(byte) NUM_SQUARES#6
(byte) NUM_SQUARES#7
(byte) NUM_SQUARES#8
(byte) NUM_SQUARES#9
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(byte*) SCREEN1
(byte*) SCREEN1#0
(byte*) SCREEN2
(byte*) SCREEN2#0
(byte*) SCREEN_ANGLE
(byte*) SCREEN_ANGLE#0
(byte*) SCREEN_DIST
(byte*) SCREEN_DIST#0
(byte) SID_CONTROL_NOISE
(byte) SID_CONTROL_NOISE#0
(byte*) SID_VOICE3_CONTROL
(byte*) SID_VOICE3_CONTROL#0
(word*) SID_VOICE3_FREQ
(word*) SID_VOICE3_FREQ#0
(byte*) SID_VOICE3_OSC
(byte*) SID_VOICE3_OSC#0
(byte[$200]) SINTABLE
(byte[$200]) SINTABLE#0
(const byte) SIZEOF_WORD = (byte) 2
(word*) SQUARES
(word*) SQUARES#0
(word*) SQUARES#1
(word*) SQUARES#10
(word*) SQUARES#11
(word*) SQUARES#12
(word*) SQUARES#13
(word*) SQUARES#14
(word*) SQUARES#15
(word*) SQUARES#16
(word*) SQUARES#17
(word*) SQUARES#18
(word*) SQUARES#19
(word*) SQUARES#2
(word*) SQUARES#20
(word*) SQUARES#21
(word*) SQUARES#22
(word*) SQUARES#23
(word*) SQUARES#24
(word*) SQUARES#25
(word*) SQUARES#26
(word*) SQUARES#27
(word*) SQUARES#28
(word*) SQUARES#29
(word*) SQUARES#3
(word*) SQUARES#30
(word*) SQUARES#31
(word*) SQUARES#32
(word*) SQUARES#33
(word*) SQUARES#34
(word*) SQUARES#35
(word*) SQUARES#36
(word*) SQUARES#37
(word*) SQUARES#38
(word*) SQUARES#39
(word*) SQUARES#4
(word*) SQUARES#40
(word*) SQUARES#41
(word*) SQUARES#42
(word*) SQUARES#43
(word*) SQUARES#44
(word*) SQUARES#45
(word*) SQUARES#46
(word*) SQUARES#47
(word*) SQUARES#48
(word*) SQUARES#49
(word*) SQUARES#5
(word*) SQUARES#50
(word*) SQUARES#51
(word*) SQUARES#52
(word*) SQUARES#6
(word*) SQUARES#7
(word*) SQUARES#8
(word*) SQUARES#9
(word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y)
(bool~) atan2_16::$0
(signed word~) atan2_16::$1
(bool~) atan2_16::$10
(bool~) atan2_16::$11
(number~) atan2_16::$12
(bool~) atan2_16::$13
(bool~) atan2_16::$14
(word~) atan2_16::$15
(number~) atan2_16::$16
(bool~) atan2_16::$17
(bool~) atan2_16::$18
(bool~) atan2_16::$19
(signed word~) atan2_16::$2
(bool~) atan2_16::$20
(bool~) atan2_16::$21
(bool~) atan2_16::$22
(byte~) atan2_16::$23
(byte~) atan2_16::$24
(bool~) atan2_16::$25
(signed word~) atan2_16::$3
(signed word~) atan2_16::$4
(bool~) atan2_16::$5
(signed word~) atan2_16::$6
(signed word~) atan2_16::$7
(signed word~) atan2_16::$8
(signed word~) atan2_16::$9
(label) atan2_16::@1
(label) atan2_16::@13
(label) atan2_16::@15
(label) atan2_16::@16
(label) atan2_16::@17
(label) atan2_16::@18
(label) atan2_16::@19
(label) atan2_16::@2
(label) atan2_16::@20
(label) atan2_16::@24
(label) atan2_16::@25
(label) atan2_16::@26
(label) atan2_16::@27
(label) atan2_16::@3
(label) atan2_16::@30
(label) atan2_16::@33
(label) atan2_16::@4
(label) atan2_16::@5
(label) atan2_16::@6
(label) atan2_16::@7
(label) atan2_16::@8
(label) atan2_16::@return
(word) atan2_16::angle
(word) atan2_16::angle#0
(word) atan2_16::angle#1
(word) atan2_16::angle#10
(word) atan2_16::angle#11
(word) atan2_16::angle#12
(word) atan2_16::angle#13
(word) atan2_16::angle#14
(word) atan2_16::angle#15
(word) atan2_16::angle#16
(word) atan2_16::angle#17
(word) atan2_16::angle#18
(word) atan2_16::angle#19
(word) atan2_16::angle#2
(word) atan2_16::angle#20
(word) atan2_16::angle#3
(word) atan2_16::angle#4
(word) atan2_16::angle#5
(word) atan2_16::angle#6
(word) atan2_16::angle#7
(word) atan2_16::angle#8
(word) atan2_16::angle#9
(byte) atan2_16::i
(byte) atan2_16::i#0
(byte) atan2_16::i#1
(byte) atan2_16::i#10
(byte) atan2_16::i#11
(byte) atan2_16::i#2
(byte) atan2_16::i#3
(byte) atan2_16::i#4
(byte) atan2_16::i#5
(byte) atan2_16::i#6
(byte) atan2_16::i#7
(byte) atan2_16::i#8
(byte) atan2_16::i#9
(word) atan2_16::return
(word) atan2_16::return#0
(word) atan2_16::return#1
(word) atan2_16::return#2
(word) atan2_16::return#3
(word) atan2_16::return#4
(byte) atan2_16::shift
(byte) atan2_16::shift#0
(byte) atan2_16::shift#1
(byte) atan2_16::shift#2
(byte) atan2_16::shift#3
(byte) atan2_16::shift#4
(signed word) atan2_16::x
(signed word) atan2_16::x#0
(signed word) atan2_16::x#1
(signed word) atan2_16::x#10
(signed word) atan2_16::x#11
(signed word) atan2_16::x#12
(signed word) atan2_16::x#13
(signed word) atan2_16::x#14
(signed word) atan2_16::x#15
(signed word) atan2_16::x#16
(signed word) atan2_16::x#17
(signed word) atan2_16::x#18
(signed word) atan2_16::x#2
(signed word) atan2_16::x#3
(signed word) atan2_16::x#4
(signed word) atan2_16::x#5
(signed word) atan2_16::x#6
(signed word) atan2_16::x#7
(signed word) atan2_16::x#8
(signed word) atan2_16::x#9
(signed word) atan2_16::xd
(signed word) atan2_16::xd#0
(signed word) atan2_16::xd#1
(signed word) atan2_16::xd#2
(signed word) atan2_16::xd#3
(signed word) atan2_16::xd#4
(signed word) atan2_16::xd#5
(signed word) atan2_16::xd#6
(signed word) atan2_16::xd#7
(signed word) atan2_16::xd#8
(signed word) atan2_16::xd#9
(signed word) atan2_16::xi
(signed word) atan2_16::xi#0
(signed word) atan2_16::xi#1
(signed word) atan2_16::xi#10
(signed word) atan2_16::xi#11
(signed word) atan2_16::xi#12
(signed word) atan2_16::xi#2
(signed word) atan2_16::xi#3
(signed word) atan2_16::xi#4
(signed word) atan2_16::xi#5
(signed word) atan2_16::xi#6
(signed word) atan2_16::xi#7
(signed word) atan2_16::xi#8
(signed word) atan2_16::xi#9
(signed word) atan2_16::y
(signed word) atan2_16::y#0
(signed word) atan2_16::y#1
(signed word) atan2_16::y#10
(signed word) atan2_16::y#11
(signed word) atan2_16::y#12
(signed word) atan2_16::y#13
(signed word) atan2_16::y#14
(signed word) atan2_16::y#15
(signed word) atan2_16::y#16
(signed word) atan2_16::y#17
(signed word) atan2_16::y#18
(signed word) atan2_16::y#19
(signed word) atan2_16::y#2
(signed word) atan2_16::y#20
(signed word) atan2_16::y#3
(signed word) atan2_16::y#4
(signed word) atan2_16::y#5
(signed word) atan2_16::y#6
(signed word) atan2_16::y#7
(signed word) atan2_16::y#8
(signed word) atan2_16::y#9
(signed word) atan2_16::yd
(signed word) atan2_16::yd#0
(signed word) atan2_16::yd#1
(signed word) atan2_16::yd#2
(signed word) atan2_16::yd#3
(signed word) atan2_16::yd#4
(signed word) atan2_16::yd#5
(signed word) atan2_16::yd#6
(signed word) atan2_16::yd#7
(signed word) atan2_16::yd#8
(signed word) atan2_16::yd#9
(signed word) atan2_16::yi
(signed word) atan2_16::yi#0
(signed word) atan2_16::yi#1
(signed word) atan2_16::yi#10
(signed word) atan2_16::yi#11
(signed word) atan2_16::yi#12
(signed word) atan2_16::yi#13
(signed word) atan2_16::yi#14
(signed word) atan2_16::yi#15
(signed word) atan2_16::yi#2
(signed word) atan2_16::yi#3
(signed word) atan2_16::yi#4
(signed word) atan2_16::yi#5
(signed word) atan2_16::yi#6
(signed word) atan2_16::yi#7
(signed word) atan2_16::yi#8
(signed word) atan2_16::yi#9
(word*()) bsearch16u((word) bsearch16u::key , (word*) bsearch16u::items , (byte) bsearch16u::num)
(bool~) bsearch16u::$0
(word*~) bsearch16u::$1
(signed word~) bsearch16u::$10
(bool~) bsearch16u::$11
(bool~) bsearch16u::$12
(bool~) bsearch16u::$13
(bool~) bsearch16u::$14
(word*~) bsearch16u::$15
(byte~) bsearch16u::$16
(number~) bsearch16u::$17
(number~) bsearch16u::$18
(word*~) bsearch16u::$2
(word*~) bsearch16u::$3
(word*~) bsearch16u::$4
(bool~) bsearch16u::$5
(byte~) bsearch16u::$6
(word*~) bsearch16u::$7
(signed word~) bsearch16u::$8
(signed word~) bsearch16u::$9
(label) bsearch16u::@1
(label) bsearch16u::@10
(label) bsearch16u::@13
(label) bsearch16u::@15
(label) bsearch16u::@2
(label) bsearch16u::@3
(label) bsearch16u::@6
(label) bsearch16u::@7
(label) bsearch16u::@8
(label) bsearch16u::@9
(label) bsearch16u::@return
(word*) bsearch16u::items
(word*) bsearch16u::items#0
(word*) bsearch16u::items#1
(word*) bsearch16u::items#2
(word*) bsearch16u::items#3
(word*) bsearch16u::items#4
(word*) bsearch16u::items#5
(word*) bsearch16u::items#6
(word*) bsearch16u::items#7
(word*) bsearch16u::items#8
(word*) bsearch16u::items#9
(word) bsearch16u::key
(word) bsearch16u::key#0
(word) bsearch16u::key#1
(word) bsearch16u::key#2
(word) bsearch16u::key#3
(word) bsearch16u::key#4
(word) bsearch16u::key#5
(word) bsearch16u::key#6
(word) bsearch16u::key#7
(byte) bsearch16u::num
(byte) bsearch16u::num#0
(byte) bsearch16u::num#1
(byte) bsearch16u::num#2
(byte) bsearch16u::num#3
(byte) bsearch16u::num#4
(byte) bsearch16u::num#5
(byte) bsearch16u::num#6
(byte) bsearch16u::num#7
(byte) bsearch16u::num#8
(word*) bsearch16u::pivot
(word*) bsearch16u::pivot#0
(word*) bsearch16u::pivot#1
(word*) bsearch16u::pivot#2
(word*) bsearch16u::pivot#3
(signed word) bsearch16u::result
(signed word) bsearch16u::result#0
(signed word) bsearch16u::result#1
(word*) bsearch16u::return
(word*) bsearch16u::return#0
(word*) bsearch16u::return#1
(word*) bsearch16u::return#2
(word*) bsearch16u::return#3
(word*) bsearch16u::return#4
(word*) bsearch16u::return#5
(void()) doplasma((byte*) doplasma::screen)
(byte*~) doplasma::$0
(byte*~) doplasma::$1
(byte~) doplasma::$2
(bool~) doplasma::$3
(bool~) doplasma::$4
(label) doplasma::@1
(label) doplasma::@2
(label) doplasma::@3
(label) doplasma::@4
(label) doplasma::@return
(byte*) doplasma::angle
(byte*) doplasma::angle#0
(byte*) doplasma::angle#1
(byte*) doplasma::angle#2
(byte*) doplasma::angle#3
(byte*) doplasma::angle#4
(byte*) doplasma::dist
(byte*) doplasma::dist#0
(byte*) doplasma::dist#1
(byte*) doplasma::dist#2
(byte*) doplasma::dist#3
(byte*) doplasma::dist#4
(byte*) doplasma::screen
(byte*) doplasma::screen#0
(byte*) doplasma::screen#1
(byte*) doplasma::screen#2
(byte*) doplasma::screen#3
(byte*) doplasma::screen#4
(byte*) doplasma::screen#5
(byte*) doplasma::screen#6
(byte*) doplasma::sin_x
(byte*) doplasma::sin_x#0
(byte*) doplasma::sin_x#1
(byte*) doplasma::sin_x#2
(byte*) doplasma::sin_x#3
(byte*) doplasma::sin_y
(byte*) doplasma::sin_y#0
(byte*) doplasma::sin_y#1
(byte*) doplasma::sin_y#2
(byte*) doplasma::sin_y#3
(byte) doplasma::x
(byte) doplasma::x#0
(byte) doplasma::x#1
(byte) doplasma::x#2
(byte) doplasma::y
(byte) doplasma::y#0
(byte) doplasma::y#1
(byte) doplasma::y#2
(byte) doplasma::y#3
(byte) doplasma::y#4
(byte*) heap_head
(byte*) heap_head#0
(byte*) heap_head#1
(byte*) heap_head#10
(byte*) heap_head#11
(byte*) heap_head#12
(byte*) heap_head#13
(byte*) heap_head#14
(byte*) heap_head#15
(byte*) heap_head#16
(byte*) heap_head#17
(byte*) heap_head#18
(byte*) heap_head#19
(byte*) heap_head#2
(byte*) heap_head#20
(byte*) heap_head#21
(byte*) heap_head#22
(byte*) heap_head#23
(byte*) heap_head#24
(byte*) heap_head#25
(byte*) heap_head#26
(byte*) heap_head#27
(byte*) heap_head#28
(byte*) heap_head#29
(byte*) heap_head#3
(byte*) heap_head#30
(byte*) heap_head#31
(byte*) heap_head#32
(byte*) heap_head#33
(byte*) heap_head#34
(byte*) heap_head#35
(byte*) heap_head#36
(byte*) heap_head#37
(byte*) heap_head#38
(byte*) heap_head#39
(byte*) heap_head#4
(byte*) heap_head#40
(byte*) heap_head#41
(byte*) heap_head#42
(byte*) heap_head#43
(byte*) heap_head#44
(byte*) heap_head#45
(byte*) heap_head#46
(byte*) heap_head#47
(byte*) heap_head#48
(byte*) heap_head#49
(byte*) heap_head#5
(byte*) heap_head#50
(byte*) heap_head#51
(byte*) heap_head#52
(byte*) heap_head#53
(byte*) heap_head#54
(byte*) heap_head#55
(byte*) heap_head#56
(byte*) heap_head#57
(byte*) heap_head#58
(byte*) heap_head#6
(byte*) heap_head#7
(byte*) heap_head#8
(byte*) heap_head#9
(void()) init_angle_screen((byte*) init_angle_screen::screen)
(byte*~) init_angle_screen::$0
(byte*~) init_angle_screen::$1
(number~) init_angle_screen::$10
(number~) init_angle_screen::$11
(byte~) init_angle_screen::$12
(number~) init_angle_screen::$13
(number~) init_angle_screen::$14
(bool~) init_angle_screen::$15
(bool~) init_angle_screen::$16
(number~) init_angle_screen::$2
(number~) init_angle_screen::$3
(word~) init_angle_screen::$4
(signed word~) init_angle_screen::$5
(number~) init_angle_screen::$6
(word~) init_angle_screen::$7
(signed word~) init_angle_screen::$8
(word~) init_angle_screen::$9
(label) init_angle_screen::@1
(label) init_angle_screen::@2
(label) init_angle_screen::@3
(label) init_angle_screen::@5
(label) init_angle_screen::@return
(byte) init_angle_screen::ang_w
(byte) init_angle_screen::ang_w#0
(word) init_angle_screen::angle_w
(word) init_angle_screen::angle_w#0
(byte*) init_angle_screen::screen
(byte*) init_angle_screen::screen#0
(byte*) init_angle_screen::screen#1
(byte*) init_angle_screen::screen_bottomline
(byte*) init_angle_screen::screen_bottomline#0
(byte*) init_angle_screen::screen_bottomline#1
(byte*) init_angle_screen::screen_bottomline#2
(byte*) init_angle_screen::screen_bottomline#3
(byte*) init_angle_screen::screen_bottomline#4
(byte*) init_angle_screen::screen_bottomline#5
(byte*) init_angle_screen::screen_topline
(byte*) init_angle_screen::screen_topline#0
(byte*) init_angle_screen::screen_topline#1
(byte*) init_angle_screen::screen_topline#2
(byte*) init_angle_screen::screen_topline#3
(byte*) init_angle_screen::screen_topline#4
(byte*) init_angle_screen::screen_topline#5
(byte) init_angle_screen::x
(byte) init_angle_screen::x#0
(byte) init_angle_screen::x#1
(byte) init_angle_screen::x#2
(byte) init_angle_screen::x#3
(byte) init_angle_screen::xb
(byte) init_angle_screen::xb#0
(byte) init_angle_screen::xb#1
(byte) init_angle_screen::xb#2
(byte) init_angle_screen::xb#3
(signed word) init_angle_screen::xw
(signed word) init_angle_screen::xw#0
(byte) init_angle_screen::y
(byte) init_angle_screen::y#0
(byte) init_angle_screen::y#1
(byte) init_angle_screen::y#2
(byte) init_angle_screen::y#3
(byte) init_angle_screen::y#4
(byte) init_angle_screen::y#5
(signed word) init_angle_screen::yw
(signed word) init_angle_screen::yw#0
(void()) init_dist_screen((byte*) init_dist_screen::screen)
(byte*~) init_dist_screen::$1
(number~) init_dist_screen::$10
(bool~) init_dist_screen::$11
(number~) init_dist_screen::$12
(number~) init_dist_screen::$13
(number~) init_dist_screen::$14
(number~) init_dist_screen::$15
(number~) init_dist_screen::$16
(word~) init_dist_screen::$17
(word~) init_dist_screen::$18
(byte~) init_dist_screen::$19
(number~) init_dist_screen::$2
(bool~) init_dist_screen::$20
(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
(word~) init_dist_screen::$9
(label) init_dist_screen::@1
(label) init_dist_screen::@11
(label) init_dist_screen::@15
(label) init_dist_screen::@16
(label) init_dist_screen::@17
(label) init_dist_screen::@18
(label) init_dist_screen::@2
(label) init_dist_screen::@3
(label) init_dist_screen::@4
(label) init_dist_screen::@5
(label) init_dist_screen::@6
(label) init_dist_screen::@7
(label) init_dist_screen::@8
(label) init_dist_screen::@return
(byte) init_dist_screen::d
(byte) init_dist_screen::d#0
(word) init_dist_screen::ds
(word) init_dist_screen::ds#0
(byte*) init_dist_screen::screen
(byte*) init_dist_screen::screen#0
(byte*) init_dist_screen::screen#1
(byte*) init_dist_screen::screen#2
(byte*) init_dist_screen::screen_bottomline
(byte*) init_dist_screen::screen_bottomline#0
(byte*) init_dist_screen::screen_bottomline#1
(byte*) init_dist_screen::screen_bottomline#10
(byte*) init_dist_screen::screen_bottomline#11
(byte*) init_dist_screen::screen_bottomline#12
(byte*) init_dist_screen::screen_bottomline#13
(byte*) init_dist_screen::screen_bottomline#2
(byte*) init_dist_screen::screen_bottomline#3
(byte*) init_dist_screen::screen_bottomline#4
(byte*) init_dist_screen::screen_bottomline#5
(byte*) init_dist_screen::screen_bottomline#6
(byte*) init_dist_screen::screen_bottomline#7
(byte*) init_dist_screen::screen_bottomline#8
(byte*) init_dist_screen::screen_bottomline#9
(byte*) init_dist_screen::screen_topline
(byte*) init_dist_screen::screen_topline#0
(byte*) init_dist_screen::screen_topline#1
(byte*) init_dist_screen::screen_topline#10
(byte*) init_dist_screen::screen_topline#11
(byte*) init_dist_screen::screen_topline#12
(byte*) init_dist_screen::screen_topline#13
(byte*) init_dist_screen::screen_topline#2
(byte*) init_dist_screen::screen_topline#3
(byte*) init_dist_screen::screen_topline#4
(byte*) init_dist_screen::screen_topline#5
(byte*) init_dist_screen::screen_topline#6
(byte*) init_dist_screen::screen_topline#7
(byte*) init_dist_screen::screen_topline#8
(byte*) init_dist_screen::screen_topline#9
(byte) init_dist_screen::x
(byte) init_dist_screen::x#0
(byte) init_dist_screen::x#1
(byte) init_dist_screen::x#2
(byte) init_dist_screen::x#3
(byte) init_dist_screen::x#4
(byte) init_dist_screen::x#5
(byte) init_dist_screen::x#6
(byte) init_dist_screen::x#7
(byte) init_dist_screen::x2
(byte) init_dist_screen::x2#0
(byte) init_dist_screen::x2#1
(byte) init_dist_screen::x2#2
(byte) init_dist_screen::xb
(byte) init_dist_screen::xb#0
(byte) init_dist_screen::xb#1
(byte) init_dist_screen::xb#2
(byte) init_dist_screen::xb#3
(byte) init_dist_screen::xb#4
(byte) init_dist_screen::xb#5
(byte) init_dist_screen::xb#6
(byte) init_dist_screen::xb#7
(byte) init_dist_screen::xd
(byte) init_dist_screen::xd#0
(word) init_dist_screen::xds
(word) init_dist_screen::xds#0
(byte) init_dist_screen::y
(byte) init_dist_screen::y#0
(byte) init_dist_screen::y#1
(byte) init_dist_screen::y#10
(byte) init_dist_screen::y#11
(byte) init_dist_screen::y#12
(byte) init_dist_screen::y#13
(byte) init_dist_screen::y#2
(byte) init_dist_screen::y#3
(byte) init_dist_screen::y#4
(byte) init_dist_screen::y#5
(byte) init_dist_screen::y#6
(byte) init_dist_screen::y#7
(byte) init_dist_screen::y#8
(byte) init_dist_screen::y#9
(byte) init_dist_screen::y2
(byte) init_dist_screen::y2#0
(byte) init_dist_screen::y2#1
(byte) init_dist_screen::y2#2
(byte) init_dist_screen::yd
(byte) init_dist_screen::yd#0
(word) init_dist_screen::yds
(word) init_dist_screen::yds#0
(word) init_dist_screen::yds#1
(word) init_dist_screen::yds#2
(word) init_dist_screen::yds#3
(word) init_dist_screen::yds#4
(word) init_dist_screen::yds#5
(word) init_dist_screen::yds#6
(void()) init_squares()
(byte~) init_squares::$0
(void*~) init_squares::$1
(number~) init_squares::$2
(number~) init_squares::$3
(number~) init_squares::$4
(bool~) init_squares::$5
(label) init_squares::@1
(label) init_squares::@3
(label) init_squares::@return
(byte) init_squares::i
(byte) init_squares::i#0
(byte) init_squares::i#1
(byte) init_squares::i#2
(word) init_squares::sqr
(word) init_squares::sqr#0
(word) init_squares::sqr#1
(word) init_squares::sqr#2
(word*) init_squares::squares
(word*) init_squares::squares#0
(word*) init_squares::squares#1
(word*) init_squares::squares#2
(void()) main()
(byte~) main::$5
(byte~) main::$7
(label) main::@1
(label) main::@10
(label) main::@11
(label) main::@12
(label) main::@13
(label) main::@14
(label) main::@2
(label) main::@7
(label) main::@8
(label) main::@9
(label) main::@return
(label) main::toD0181
(word~) main::toD0181_$0
(word~) main::toD0181_$0#0
(number~) main::toD0181_$1
(number~) main::toD0181_$1#0
(number~) main::toD0181_$2
(number~) main::toD0181_$2#0
(number~) main::toD0181_$3
(number~) main::toD0181_$3#0
(word~) main::toD0181_$4
(word~) main::toD0181_$4#0
(byte~) main::toD0181_$5
(byte~) main::toD0181_$5#0
(number~) main::toD0181_$6
(number~) main::toD0181_$6#0
(number~) main::toD0181_$7
(number~) main::toD0181_$7#0
(number~) main::toD0181_$8
(number~) main::toD0181_$8#0
(label) main::toD0181_@return
(byte*) main::toD0181_gfx
(byte*) main::toD0181_gfx#0
(byte*) main::toD0181_gfx#1
(byte) main::toD0181_return
(byte) main::toD0181_return#0
(byte) main::toD0181_return#1
(byte) main::toD0181_return#2
(byte) main::toD0181_return#3
(byte*) main::toD0181_screen
(byte*) main::toD0181_screen#0
(byte*) main::toD0181_screen#1
(label) main::toD0182
(word~) main::toD0182_$0
(word~) main::toD0182_$0#0
(number~) main::toD0182_$1
(number~) main::toD0182_$1#0
(number~) main::toD0182_$2
(number~) main::toD0182_$2#0
(number~) main::toD0182_$3
(number~) main::toD0182_$3#0
(word~) main::toD0182_$4
(word~) main::toD0182_$4#0
(byte~) main::toD0182_$5
(byte~) main::toD0182_$5#0
(number~) main::toD0182_$6
(number~) main::toD0182_$6#0
(number~) main::toD0182_$7
(number~) main::toD0182_$7#0
(number~) main::toD0182_$8
(number~) main::toD0182_$8#0
(label) main::toD0182_@return
(byte*) main::toD0182_gfx
(byte*) main::toD0182_gfx#0
(byte*) main::toD0182_gfx#1
(byte) main::toD0182_return
(byte) main::toD0182_return#0
(byte) main::toD0182_return#1
(byte) main::toD0182_return#2
(byte) main::toD0182_return#3
(byte*) main::toD0182_screen
(byte*) main::toD0182_screen#0
(byte*) main::toD0182_screen#1
(void()) make_plasma_charset((byte*) make_plasma_charset::charset)
(bool~) make_plasma_charset::$10
(number~) make_plasma_charset::$11
(bool~) make_plasma_charset::$12
(bool~) make_plasma_charset::$13
(bool~) make_plasma_charset::$15
(byte~) make_plasma_charset::$2
(byte~) make_plasma_charset::$3
(number~) make_plasma_charset::$4
(bool~) make_plasma_charset::$5
(bool~) make_plasma_charset::$6
(bool~) make_plasma_charset::$7
(number~) make_plasma_charset::$8
(number~) make_plasma_charset::$9
(label) make_plasma_charset::@1
(label) make_plasma_charset::@11
(label) make_plasma_charset::@12
(label) make_plasma_charset::@13
(label) make_plasma_charset::@14
(label) make_plasma_charset::@2
(label) make_plasma_charset::@3
(label) make_plasma_charset::@4
(label) make_plasma_charset::@5
(label) make_plasma_charset::@6
(label) make_plasma_charset::@7
(label) make_plasma_charset::@8
(label) make_plasma_charset::@9
(label) make_plasma_charset::@return
(byte) make_plasma_charset::b
(byte) make_plasma_charset::b#0
(byte) make_plasma_charset::b#1
(byte) make_plasma_charset::b#2
(byte) make_plasma_charset::b#3
(byte) make_plasma_charset::b#4
(byte) make_plasma_charset::b#5
(byte) make_plasma_charset::b#6
(byte[8]) make_plasma_charset::bittab
(byte[8]) make_plasma_charset::bittab#0
(word) make_plasma_charset::c
(word) make_plasma_charset::c#0
(word) make_plasma_charset::c#1
(word) make_plasma_charset::c#10
(word) make_plasma_charset::c#11
(word) make_plasma_charset::c#12
(word) make_plasma_charset::c#2
(word) make_plasma_charset::c#3
(word) make_plasma_charset::c#4
(word) make_plasma_charset::c#5
(word) make_plasma_charset::c#6
(word) make_plasma_charset::c#7
(word) make_plasma_charset::c#8
(word) make_plasma_charset::c#9
(byte*) make_plasma_charset::charset
(byte*) make_plasma_charset::charset#0
(byte*) make_plasma_charset::charset#1
(byte*) make_plasma_charset::charset#10
(byte*) make_plasma_charset::charset#11
(byte*) make_plasma_charset::charset#12
(byte*) make_plasma_charset::charset#13
(byte*) make_plasma_charset::charset#14
(byte*) make_plasma_charset::charset#2
(byte*) make_plasma_charset::charset#3
(byte*) make_plasma_charset::charset#4
(byte*) make_plasma_charset::charset#5
(byte*) make_plasma_charset::charset#6
(byte*) make_plasma_charset::charset#7
(byte*) make_plasma_charset::charset#8
(byte*) make_plasma_charset::charset#9
(byte) make_plasma_charset::i
(byte) make_plasma_charset::i#0
(byte) make_plasma_charset::i#1
(byte) make_plasma_charset::i#2
(byte) make_plasma_charset::i#3
(byte) make_plasma_charset::i#4
(byte) make_plasma_charset::i#5
(byte) make_plasma_charset::i#6
(byte) make_plasma_charset::i#7
(byte) make_plasma_charset::ii
(byte) make_plasma_charset::ii#0
(byte) make_plasma_charset::ii#1
(byte) make_plasma_charset::ii#2
(byte) make_plasma_charset::ii#3
(byte) make_plasma_charset::ii#4
(byte) make_plasma_charset::ii#5
(byte) make_plasma_charset::s
(byte) make_plasma_charset::s#0
(byte) make_plasma_charset::s#1
(byte) make_plasma_charset::s#2
(byte) make_plasma_charset::s#3
(byte) make_plasma_charset::s#4
(byte) make_plasma_charset::s#5
(byte) make_plasma_charset::s#6
(void*()) malloc((word) malloc::size)
(byte*~) malloc::$0
(label) malloc::@return
(byte*) malloc::mem
(byte*) malloc::mem#0
(void*) malloc::return
(void*) malloc::return#0
(void*) malloc::return#1
(void*) malloc::return#2
(void*) malloc::return#3
(void*) malloc::return#4
(void*) malloc::return#5
(void*) malloc::return#6
(void*) malloc::return#7
(void*) malloc::return#8
(word) malloc::size
(word) malloc::size#0
(word) malloc::size#1
(word) malloc::size#2
(word) malloc::size#3
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(bool~) memset::$0
(bool~) memset::$1
(byte*~) memset::$2
(byte*~) memset::$3
(bool~) memset::$4
(label) memset::@1
(label) memset::@2
(label) memset::@4
(label) memset::@return
(byte) memset::c
(byte) memset::c#0
(byte) memset::c#1
(byte) memset::c#2
(byte) memset::c#3
(byte) memset::c#4
(byte*) memset::dst
(byte*) memset::dst#0
(byte*) memset::dst#1
(byte*) memset::dst#2
(byte*) memset::end
(byte*) memset::end#0
(byte*) memset::end#1
(word) memset::num
(word) memset::num#0
(word) memset::num#1
(word) memset::num#2
(word) memset::num#3
(void*) memset::return
(void*) memset::return#0
(void*) memset::return#1
(void*) memset::return#2
(void*) memset::return#3
(void*) memset::return#4
(void*) memset::str
(void*) memset::str#0
(void*) memset::str#1
(void*) memset::str#2
(void*) memset::str#3
(void*) memset::str#4
(void*) memset::str#5
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#0
(byte) print_char::ch#1
(byte*) print_char_cursor
(byte*) print_char_cursor#0
(byte*) print_char_cursor#1
(byte*) print_char_cursor#10
(byte*) print_char_cursor#11
(byte*) print_char_cursor#12
(byte*) print_char_cursor#13
(byte*) print_char_cursor#14
(byte*) print_char_cursor#15
(byte*) print_char_cursor#16
(byte*) print_char_cursor#17
(byte*) print_char_cursor#18
(byte*) print_char_cursor#19
(byte*) print_char_cursor#2
(byte*) print_char_cursor#20
(byte*) print_char_cursor#21
(byte*) print_char_cursor#22
(byte*) print_char_cursor#23
(byte*) print_char_cursor#24
(byte*) print_char_cursor#25
(byte*) print_char_cursor#26
(byte*) print_char_cursor#27
(byte*) print_char_cursor#28
(byte*) print_char_cursor#29
(byte*) print_char_cursor#3
(byte*) print_char_cursor#30
(byte*) print_char_cursor#31
(byte*) print_char_cursor#32
(byte*) print_char_cursor#33
(byte*) print_char_cursor#34
(byte*) print_char_cursor#35
(byte*) print_char_cursor#36
(byte*) print_char_cursor#37
(byte*) print_char_cursor#38
(byte*) print_char_cursor#39
(byte*) print_char_cursor#4
(byte*) print_char_cursor#40
(byte*) print_char_cursor#41
(byte*) print_char_cursor#42
(byte*) print_char_cursor#43
(byte*) print_char_cursor#44
(byte*) print_char_cursor#45
(byte*) print_char_cursor#46
(byte*) print_char_cursor#47
(byte*) print_char_cursor#48
(byte*) print_char_cursor#49
(byte*) print_char_cursor#5
(byte*) print_char_cursor#50
(byte*) print_char_cursor#51
(byte*) print_char_cursor#6
(byte*) print_char_cursor#7
(byte*) print_char_cursor#8
(byte*) print_char_cursor#9
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
(byte*) print_line_cursor
(byte*) print_line_cursor#0
(byte*) print_line_cursor#1
(byte*) print_line_cursor#10
(byte*) print_line_cursor#11
(byte*) print_line_cursor#12
(byte*) print_line_cursor#13
(byte*) print_line_cursor#14
(byte*) print_line_cursor#15
(byte*) print_line_cursor#16
(byte*) print_line_cursor#17
(byte*) print_line_cursor#18
(byte*) print_line_cursor#19
(byte*) print_line_cursor#2
(byte*) print_line_cursor#20
(byte*) print_line_cursor#21
(byte*) print_line_cursor#22
(byte*) print_line_cursor#23
(byte*) print_line_cursor#24
(byte*) print_line_cursor#25
(byte*) print_line_cursor#26
(byte*) print_line_cursor#27
(byte*) print_line_cursor#28
(byte*) print_line_cursor#29
(byte*) print_line_cursor#3
(byte*) print_line_cursor#30
(byte*) print_line_cursor#31
(byte*) print_line_cursor#32
(byte*) print_line_cursor#33
(byte*) print_line_cursor#34
(byte*) print_line_cursor#35
(byte*) print_line_cursor#36
(byte*) print_line_cursor#37
(byte*) print_line_cursor#38
(byte*) print_line_cursor#39
(byte*) print_line_cursor#4
(byte*) print_line_cursor#40
(byte*) print_line_cursor#41
(byte*) print_line_cursor#42
(byte*) print_line_cursor#43
(byte*) print_line_cursor#44
(byte*) print_line_cursor#45
(byte*) print_line_cursor#46
(byte*) print_line_cursor#5
(byte*) print_line_cursor#6
(byte*) print_line_cursor#7
(byte*) print_line_cursor#8
(byte*) print_line_cursor#9
(byte*) print_screen
(byte*) print_screen#0
(byte*) print_screen#1
(byte*) print_screen#10
(byte*) print_screen#11
(byte*) print_screen#12
(byte*) print_screen#13
(byte*) print_screen#2
(byte*) print_screen#3
(byte*) print_screen#4
(byte*) print_screen#5
(byte*) print_screen#6
(byte*) print_screen#7
(byte*) print_screen#8
(byte*) print_screen#9
(byte()) sid_rnd()
(label) sid_rnd::@return
(byte) sid_rnd::return
(byte) sid_rnd::return#0
(byte) sid_rnd::return#1
(byte) sid_rnd::return#2
(byte) sid_rnd::return#3
(byte) sid_rnd::return#4
(void()) sid_rnd_init()
(label) sid_rnd_init::@return
(byte) sin_offset_x
(byte) sin_offset_x#0
(byte) sin_offset_x#1
(byte) sin_offset_x#10
(byte) sin_offset_x#11
(byte) sin_offset_x#12
(byte) sin_offset_x#13
(byte) sin_offset_x#14
(byte) sin_offset_x#15
(byte) sin_offset_x#16
(byte) sin_offset_x#17
(byte) sin_offset_x#18
(byte) sin_offset_x#19
(byte) sin_offset_x#2
(byte) sin_offset_x#20
(byte) sin_offset_x#21
(byte) sin_offset_x#22
(byte) sin_offset_x#23
(byte) sin_offset_x#24
(byte) sin_offset_x#25
(byte) sin_offset_x#26
(byte) sin_offset_x#27
(byte) sin_offset_x#28
(byte) sin_offset_x#29
(byte) sin_offset_x#3
(byte) sin_offset_x#30
(byte) sin_offset_x#4
(byte) sin_offset_x#5
(byte) sin_offset_x#6
(byte) sin_offset_x#7
(byte) sin_offset_x#8
(byte) sin_offset_x#9
(byte) sin_offset_y
(byte) sin_offset_y#0
(byte) sin_offset_y#1
(byte) sin_offset_y#10
(byte) sin_offset_y#11
(byte) sin_offset_y#12
(byte) sin_offset_y#13
(byte) sin_offset_y#14
(byte) sin_offset_y#15
(byte) sin_offset_y#16
(byte) sin_offset_y#17
(byte) sin_offset_y#18
(byte) sin_offset_y#19
(byte) sin_offset_y#2
(byte) sin_offset_y#20
(byte) sin_offset_y#21
(byte) sin_offset_y#22
(byte) sin_offset_y#23
(byte) sin_offset_y#24
(byte) sin_offset_y#25
(byte) sin_offset_y#26
(byte) sin_offset_y#27
(byte) sin_offset_y#28
(byte) sin_offset_y#29
(byte) sin_offset_y#3
(byte) sin_offset_y#30
(byte) sin_offset_y#4
(byte) sin_offset_y#5
(byte) sin_offset_y#6
(byte) sin_offset_y#7
(byte) sin_offset_y#8
(byte) sin_offset_y#9
(word()) sqr((byte) sqr::val)
(byte~) sqr::$0
(label) sqr::@return
(word) sqr::return
(word) sqr::return#0
(word) sqr::return#1
(word) sqr::return#2
(word) sqr::return#3
(word) sqr::return#4
(word) sqr::return#5
(word) sqr::return#6
(byte) sqr::val
(byte) sqr::val#0
(byte) sqr::val#1
(byte) sqr::val#2
(byte()) sqrt((word) sqrt::val)
(word*~) sqrt::$0
(word~) sqrt::$1
(byte~) sqrt::$2
(word~) sqrt::$3
(label) sqrt::@2
(label) sqrt::@return
(word*) sqrt::found
(word*) sqrt::found#0
(byte) sqrt::return
(byte) sqrt::return#0
(byte) sqrt::return#1
(byte) sqrt::return#2
(byte) sqrt::return#3
(byte) sqrt::return#4
(byte) sqrt::sq
(byte) sqrt::sq#0
(word) sqrt::val
(word) sqrt::val#0
(word) sqrt::val#1

Fixing inline constructor with init_angle_screen::$17 ← (byte)init_angle_screen::$3 w= (byte)0
Fixing inline constructor with init_angle_screen::$18 ← (byte)init_angle_screen::$6 w= (byte)0
Successful SSA optimization Pass2FixInlineConstructorsNew
Adding number conversion cast (unumber) 0 in (byte) BLACK#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#2 > (number) 0
Adding number conversion cast (unumber) 0 in (bool~) bsearch16u::$5 ← (byte) bsearch16u::num#3 > (number) 0
Adding number conversion cast (unumber) 1 in (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#4 >> (number) 1
Adding number conversion cast (snumber) 0 in (bool~) bsearch16u::$11 ← (signed word) bsearch16u::result#0 == (number) 0
Adding number conversion cast (snumber) 0 in (bool~) bsearch16u::$13 ← (signed word) bsearch16u::result#1 > (number) 0
Adding number conversion cast (unumber) 1 in (byte) bsearch16u::num#0 ← (byte) bsearch16u::num#5 >> (number) 1
Adding number conversion cast (unumber) 1 in (number~) bsearch16u::$17 ← (number) 1 * (const byte) SIZEOF_WORD
Adding number conversion cast (unumber) bsearch16u::$17 in (number~) bsearch16u::$17 ← (unumber)(number) 1 * (const byte) SIZEOF_WORD
Adding number conversion cast (unumber) 1 in (number~) bsearch16u::$18 ← (number) 1 * (const byte) SIZEOF_WORD
Adding number conversion cast (unumber) bsearch16u::$18 in (number~) bsearch16u::$18 ← (unumber)(number) 1 * (const byte) SIZEOF_WORD
Adding number conversion cast (unumber) $ff in (byte) NUM_SQUARES#0 ← (number) $ff
Adding number conversion cast (unumber) 0 in (word) init_squares::sqr#0 ← (number) 0
Adding number conversion cast (unumber) 1 in (number~) init_squares::$2 ← (byte) NUM_SQUARES#7 - (number) 1
Adding number conversion cast (unumber) init_squares::$2 in (number~) init_squares::$2 ← (byte) NUM_SQUARES#7 - (unumber)(number) 1
Adding number conversion cast (unumber) 2 in (number~) init_squares::$3 ← (byte) init_squares::i#2 * (number) 2
Adding number conversion cast (unumber) init_squares::$3 in (number~) init_squares::$3 ← (byte) init_squares::i#2 * (unumber)(number) 2
Adding number conversion cast (unumber) 1 in (number~) init_squares::$4 ← (unumber~) init_squares::$3 + (number) 1
Adding number conversion cast (unumber) init_squares::$4 in (number~) init_squares::$4 ← (unumber~) init_squares::$3 + (unumber)(number) 1
Adding number conversion cast (unumber) $f in (byte) CORDIC_ITERATIONS_16#0 ← (number) $f
Adding number conversion cast (snumber) 0 in (bool~) atan2_16::$0 ← (signed word) atan2_16::y#1 >= (number) 0
Adding number conversion cast (snumber) 0 in (bool~) atan2_16::$5 ← (signed word) atan2_16::x#1 >= (number) 0
Adding number conversion cast (unumber) 0 in (word) atan2_16::angle#0 ← (number) 0
Adding number conversion cast (unumber) 1 in (number~) atan2_16::$16 ← (byte) CORDIC_ITERATIONS_16#0 - (number) 1
Adding number conversion cast (unumber) atan2_16::$16 in (number~) atan2_16::$16 ← (byte) CORDIC_ITERATIONS_16#0 - (unumber)(number) 1
Adding number conversion cast (snumber) 0 in (bool~) atan2_16::$17 ← (signed word) atan2_16::yi#3 == (number) 0
Adding number conversion cast (unumber) 2 in (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 / (number) 2
Adding number conversion cast (snumber) 0 in (bool~) atan2_16::$10 ← (signed word) atan2_16::x#4 < (number) 0
Adding number conversion cast (unumber) 2 in (bool~) atan2_16::$19 ← (byte) atan2_16::shift#2 >= (number) 2
Adding number conversion cast (snumber) 2 in (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (number) 2
Adding number conversion cast (snumber) 2 in (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (number) 2
Adding number conversion cast (unumber) 2 in (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#3 - (number) 2
Adding number conversion cast (unumber) 0 in (bool~) atan2_16::$25 ← (number) 0 != (byte) atan2_16::shift#4
Adding number conversion cast (snumber) 0 in (bool~) atan2_16::$21 ← (signed word) atan2_16::yi#5 >= (number) 0
Adding number conversion cast (snumber) 1 in (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#4 >> (number) 1
Adding number conversion cast (snumber) 1 in (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#4 >> (number) 1
Adding number conversion cast (snumber) 0 in (bool~) atan2_16::$13 ← (signed word) atan2_16::y#4 < (number) 0
Adding number conversion cast (unumber) $8000 in (number~) atan2_16::$12 ← (number) $8000 - (word) atan2_16::angle#9
Adding number conversion cast (unumber) atan2_16::$12 in (number~) atan2_16::$12 ← (unumber)(number) $8000 - (word) atan2_16::angle#9
Adding number conversion cast (unumber) $3e8 in (word) memset::num#0 ← (number) $3e8
Adding number conversion cast (unumber) $80 in (byte) SID_CONTROL_NOISE#0 ← (number) $80
Adding number conversion cast (unumber) $ffff in *((word*) SID_VOICE3_FREQ#0) ← (number) $ffff
Adding number conversion cast (unumber) $3e8 in (word) malloc::size#1 ← (number) $3e8
Adding number conversion cast (unumber) $3e8 in (word) malloc::size#2 ← (number) $3e8
Adding number conversion cast (unumber) $3e8 in (word) memset::num#1 ← (number) $3e8
Adding number conversion cast (unumber) $3fff in (number~) main::toD0181_$1#0 ← (word~) main::toD0181_$0#0 & (number) $3fff
Adding number conversion cast (unumber) main::toD0181_$1#0 in (number~) main::toD0181_$1#0 ← (word~) main::toD0181_$0#0 & (unumber)(number) $3fff
Adding number conversion cast (unumber) 4 in (number~) main::toD0181_$2#0 ← (unumber~) main::toD0181_$1#0 * (number) 4
Adding number conversion cast (unumber) main::toD0181_$2#0 in (number~) main::toD0181_$2#0 ← (unumber~) main::toD0181_$1#0 * (unumber)(number) 4
Adding number conversion cast (unumber) main::toD0181_$3#0 in (number~) main::toD0181_$3#0 ← > (unumber~) main::toD0181_$2#0
Adding number conversion cast (unumber) 4 in (number~) main::toD0181_$6#0 ← (byte~) main::toD0181_$5#0 / (number) 4
Adding number conversion cast (unumber) main::toD0181_$6#0 in (number~) main::toD0181_$6#0 ← (byte~) main::toD0181_$5#0 / (unumber)(number) 4
Adding number conversion cast (unumber) $f in (number~) main::toD0181_$7#0 ← (unumber~) main::toD0181_$6#0 & (number) $f
Adding number conversion cast (unumber) main::toD0181_$7#0 in (number~) main::toD0181_$7#0 ← (unumber~) main::toD0181_$6#0 & (unumber)(number) $f
Adding number conversion cast (unumber) main::toD0181_$8#0 in (number~) main::toD0181_$8#0 ← (unumber~) main::toD0181_$3#0 | (unumber~) main::toD0181_$7#0
Adding number conversion cast (unumber) $3fff in (number~) main::toD0182_$1#0 ← (word~) main::toD0182_$0#0 & (number) $3fff
Adding number conversion cast (unumber) main::toD0182_$1#0 in (number~) main::toD0182_$1#0 ← (word~) main::toD0182_$0#0 & (unumber)(number) $3fff
Adding number conversion cast (unumber) 4 in (number~) main::toD0182_$2#0 ← (unumber~) main::toD0182_$1#0 * (number) 4
Adding number conversion cast (unumber) main::toD0182_$2#0 in (number~) main::toD0182_$2#0 ← (unumber~) main::toD0182_$1#0 * (unumber)(number) 4
Adding number conversion cast (unumber) main::toD0182_$3#0 in (number~) main::toD0182_$3#0 ← > (unumber~) main::toD0182_$2#0
Adding number conversion cast (unumber) 4 in (number~) main::toD0182_$6#0 ← (byte~) main::toD0182_$5#0 / (number) 4
Adding number conversion cast (unumber) main::toD0182_$6#0 in (number~) main::toD0182_$6#0 ← (byte~) main::toD0182_$5#0 / (unumber)(number) 4
Adding number conversion cast (unumber) $f in (number~) main::toD0182_$7#0 ← (unumber~) main::toD0182_$6#0 & (number) $f
Adding number conversion cast (unumber) main::toD0182_$7#0 in (number~) main::toD0182_$7#0 ← (unumber~) main::toD0182_$6#0 & (unumber)(number) $f
Adding number conversion cast (unumber) main::toD0182_$8#0 in (number~) main::toD0182_$8#0 ← (unumber~) main::toD0182_$3#0 | (unumber~) main::toD0182_$7#0
Adding number conversion cast (unumber) 0 in (byte) sin_offset_x#3 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) sin_offset_y#3 ← (number) 0
Adding number conversion cast (unumber) $28 in (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#4 + (number) $28
Adding number conversion cast (unumber) $28 in (byte*) doplasma::angle#1 ← (byte*) doplasma::angle#3 + (number) $28
Adding number conversion cast (unumber) $28 in (byte*) doplasma::dist#1 ← (byte*) doplasma::dist#3 + (number) $28
Adding number conversion cast (unumber) 3 in (byte) sin_offset_x#4 ← (byte) sin_offset_x#11 - (number) 3
Adding number conversion cast (unumber) 7 in (byte) sin_offset_y#4 ← (byte) sin_offset_y#11 - (number) 7
Adding number conversion cast (unumber) $28*$c in (byte*~) init_angle_screen::$0 ← (byte*) init_angle_screen::screen#1 + (number) $28*(number) $c
Adding number conversion cast (unumber) $28*$c in (byte*~) init_angle_screen::$1 ← (byte*) init_angle_screen::screen#1 + (number) $28*(number) $c
Adding number conversion cast (unumber) 0 in (byte) init_angle_screen::x#0 ← (number) 0
Adding number conversion cast (unumber) $27 in (byte) init_angle_screen::xb#0 ← (number) $27
Adding number conversion cast (unumber) 2 in (number~) init_angle_screen::$2 ← (byte) init_angle_screen::x#2 * (number) 2
Adding number conversion cast (unumber) init_angle_screen::$2 in (number~) init_angle_screen::$2 ← (byte) init_angle_screen::x#2 * (unumber)(number) 2
Adding number conversion cast (unumber) $27 in (number~) init_angle_screen::$3 ← (number) $27 - (unumber~) init_angle_screen::$2
Adding number conversion cast (unumber) init_angle_screen::$3 in (number~) init_angle_screen::$3 ← (unumber)(number) $27 - (unumber~) init_angle_screen::$2
Adding number conversion cast (unumber) 2 in (number~) init_angle_screen::$6 ← (byte) init_angle_screen::y#2 * (number) 2
Adding number conversion cast (unumber) init_angle_screen::$6 in (number~) init_angle_screen::$6 ← (byte) init_angle_screen::y#2 * (unumber)(number) 2
Adding number conversion cast (unumber) $80 in (number~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (number) $80
Adding number conversion cast (unumber) init_angle_screen::$10 in (number~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (unumber)(number) $80
Adding number conversion cast (unumber) init_angle_screen::$11 in (number~) init_angle_screen::$11 ← > (unumber~) init_angle_screen::$10
Adding number conversion cast (unumber) $80 in (number~) init_angle_screen::$13 ← (number) $80 + (byte) init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$13 in (number~) init_angle_screen::$13 ← (unumber)(number) $80 + (byte) init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $80 in (number~) init_angle_screen::$14 ← (number) $80 - (byte) init_angle_screen::ang_w#0
Adding number conversion cast (unumber) init_angle_screen::$14 in (number~) init_angle_screen::$14 ← (unumber)(number) $80 - (byte) init_angle_screen::ang_w#0
Adding number conversion cast (unumber) $13 in (bool~) init_angle_screen::$15 ← (byte) init_angle_screen::x#1 <= (number) $13
Adding number conversion cast (unumber) $28 in (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#3 - (number) $28
Adding number conversion cast (unumber) $28 in (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#3 + (number) $28
Adding number conversion cast (unumber) $30 in (byte) NUM_SQUARES#3 ← (number) $30
Adding number conversion cast (unumber) $28*$18 in (byte*~) init_dist_screen::$1 ← (byte*) init_dist_screen::screen#1 + (number) $28*(number) $18
Adding number conversion cast (unumber) 2 in (number~) init_dist_screen::$2 ← (byte) init_dist_screen::y#2 * (number) 2
Adding number conversion cast (unumber) init_dist_screen::$2 in (number~) init_dist_screen::$2 ← (byte) init_dist_screen::y#2 * (unumber)(number) 2
Adding number conversion cast (unumber) $18 in (bool~) init_dist_screen::$3 ← (byte) init_dist_screen::y2#0 >= (number) $18
Adding number conversion cast (unumber) $18 in (number~) init_dist_screen::$6 ← (byte) init_dist_screen::y2#1 - (number) $18
Adding number conversion cast (unumber) init_dist_screen::$6 in (number~) init_dist_screen::$6 ← (byte) init_dist_screen::y2#1 - (unumber)(number) $18
Adding number conversion cast (unumber) init_dist_screen::$7 in (number~) init_dist_screen::$7 ← (unumber~) init_dist_screen::$6
Adding number conversion cast (unumber) $18 in (number~) init_dist_screen::$4 ← (number) $18 - (byte) init_dist_screen::y2#2
Adding number conversion cast (unumber) init_dist_screen::$4 in (number~) init_dist_screen::$4 ← (unumber)(number) $18 - (byte) init_dist_screen::y2#2
Adding number conversion cast (unumber) init_dist_screen::$5 in (number~) init_dist_screen::$5 ← (unumber~) init_dist_screen::$4
Adding number conversion cast (unumber) init_dist_screen::$8 in (byte*) heap_head#53 ← phi( init_dist_screen::@2/(byte*) heap_head#55 init_dist_screen::@3/(byte*) heap_head#56 )
  (byte) init_dist_screen::y#11 ← phi( init_dist_screen::@2/(byte) init_dist_screen::y#12 init_dist_screen::@3/(byte) init_dist_screen::y#13 )
  (byte*) init_dist_screen::screen_bottomline#10 ← phi( init_dist_screen::@2/(byte*) init_dist_screen::screen_bottomline#11 init_dist_screen::@3/(byte*) init_dist_screen::screen_bottomline#12 )
  (byte*) init_dist_screen::screen_topline#10 ← phi( init_dist_screen::@2/(byte*) init_dist_screen::screen_topline#11 init_dist_screen::@3/(byte*) init_dist_screen::screen_topline#12 )
  (byte) NUM_SQUARES#37 ← phi( init_dist_screen::@2/(byte) NUM_SQUARES#40 init_dist_screen::@3/(byte) NUM_SQUARES#41 )
  (word*) SQUARES#18 ← phi( init_dist_screen::@2/(word*) SQUARES#28 init_dist_screen::@3/(word*) SQUARES#29 )
  (number~) init_dist_screen::$8 ← phi( init_dist_screen::@2/(unumber~) init_dist_screen::$7 init_dist_screen::@3/(unumber~) init_dist_screen::$5 )
Adding number conversion cast (unumber) 0 in (byte) init_dist_screen::x#0 ← (number) 0
Adding number conversion cast (unumber) $27 in (byte) init_dist_screen::xb#0 ← (number) $27
Adding number conversion cast (unumber) 2 in (number~) init_dist_screen::$10 ← (byte) init_dist_screen::x#2 * (number) 2
Adding number conversion cast (unumber) init_dist_screen::$10 in (number~) init_dist_screen::$10 ← (byte) init_dist_screen::x#2 * (unumber)(number) 2
Adding number conversion cast (unumber) $27 in (bool~) init_dist_screen::$11 ← (byte) init_dist_screen::x2#0 >= (number) $27
Adding number conversion cast (unumber) $27 in (number~) init_dist_screen::$14 ← (byte) init_dist_screen::x2#1 - (number) $27
Adding number conversion cast (unumber) init_dist_screen::$14 in (number~) init_dist_screen::$14 ← (byte) init_dist_screen::x2#1 - (unumber)(number) $27
Adding number conversion cast (unumber) init_dist_screen::$15 in (number~) init_dist_screen::$15 ← (unumber~) init_dist_screen::$14
Adding number conversion cast (unumber) $27 in (number~) init_dist_screen::$12 ← (number) $27 - (byte) init_dist_screen::x2#2
Adding number conversion cast (unumber) init_dist_screen::$12 in (number~) init_dist_screen::$12 ← (unumber)(number) $27 - (byte) init_dist_screen::x2#2
Adding number conversion cast (unumber) init_dist_screen::$13 in (number~) init_dist_screen::$13 ← (unumber~) init_dist_screen::$12
Adding number conversion cast (unumber) init_dist_screen::$16 in (byte*) heap_head#43 ← phi( init_dist_screen::@6/(byte*) heap_head#46 init_dist_screen::@7/(byte*) heap_head#47 )
  (byte) init_dist_screen::y#6 ← phi( init_dist_screen::@6/(byte) init_dist_screen::y#7 init_dist_screen::@7/(byte) init_dist_screen::y#8 )
  (byte) init_dist_screen::xb#4 ← phi( init_dist_screen::@6/(byte) init_dist_screen::xb#5 init_dist_screen::@7/(byte) init_dist_screen::xb#6 )
  (byte*) init_dist_screen::screen_bottomline#5 ← phi( init_dist_screen::@6/(byte*) init_dist_screen::screen_bottomline#6 init_dist_screen::@7/(byte*) init_dist_screen::screen_bottomline#7 )
  (byte) init_dist_screen::x#5 ← phi( init_dist_screen::@6/(byte) init_dist_screen::x#6 init_dist_screen::@7/(byte) init_dist_screen::x#7 )
  (byte*) init_dist_screen::screen_topline#5 ← phi( init_dist_screen::@6/(byte*) init_dist_screen::screen_topline#6 init_dist_screen::@7/(byte*) init_dist_screen::screen_topline#7 )
  (byte) NUM_SQUARES#20 ← phi( init_dist_screen::@6/(byte) NUM_SQUARES#26 init_dist_screen::@7/(byte) NUM_SQUARES#27 )
  (word) init_dist_screen::yds#2 ← phi( init_dist_screen::@6/(word) init_dist_screen::yds#3 init_dist_screen::@7/(word) init_dist_screen::yds#4 )
  (word*) SQUARES#19 ← phi( init_dist_screen::@6/(word*) SQUARES#30 init_dist_screen::@7/(word*) SQUARES#31 )
  (number~) init_dist_screen::$16 ← phi( init_dist_screen::@6/(unumber~) init_dist_screen::$15 init_dist_screen::@7/(unumber~) init_dist_screen::$13 )
Adding number conversion cast (unumber) $13 in (bool~) init_dist_screen::$20 ← (byte) init_dist_screen::x#1 <= (number) $13
Adding number conversion cast (unumber) $28 in (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#3 + (number) $28
Adding number conversion cast (unumber) $28 in (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#3 - (number) $28
Adding number conversion cast (unumber) 0 in (word) make_plasma_charset::c#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) make_plasma_charset::i#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) make_plasma_charset::b#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) make_plasma_charset::ii#0 ← (number) 0
Adding number conversion cast (unumber) $ff in (number~) make_plasma_charset::$4 ← (byte~) make_plasma_charset::$3 & (number) $ff
Adding number conversion cast (unumber) make_plasma_charset::$4 in (number~) make_plasma_charset::$4 ← (byte~) make_plasma_charset::$3 & (unumber)(number) $ff
Adding number conversion cast (unumber) 8 in (bool~) make_plasma_charset::$7 ← (byte) make_plasma_charset::ii#1 < (number) 8
Adding number conversion cast (unumber) 8 in (number~) make_plasma_charset::$8 ← (word) make_plasma_charset::c#3 * (number) 8
Adding number conversion cast (unumber) make_plasma_charset::$8 in (number~) make_plasma_charset::$8 ← (word) make_plasma_charset::c#3 * (unumber)(number) 8
Adding number conversion cast (unumber) make_plasma_charset::$9 in (number~) make_plasma_charset::$9 ← (unumber~) make_plasma_charset::$8 + (byte) make_plasma_charset::i#2
Adding number conversion cast (unumber) 8 in (bool~) make_plasma_charset::$10 ← (byte) make_plasma_charset::i#1 < (number) 8
Adding number conversion cast (unumber) 7 in (number~) make_plasma_charset::$11 ← (word) make_plasma_charset::c#4 & (number) 7
Adding number conversion cast (unumber) make_plasma_charset::$11 in (number~) make_plasma_charset::$11 ← (word) make_plasma_charset::c#4 & (unumber)(number) 7
Adding number conversion cast (unumber) 0 in (bool~) make_plasma_charset::$12 ← (unumber~) make_plasma_charset::$11 == (number) 0
Adding number conversion cast (unumber) $100 in (bool~) make_plasma_charset::$15 ← (word) make_plasma_charset::c#1 < (number) $100
Successful SSA optimization PassNAddNumberTypeConversions
Adding number conversion cast (byte) to elements in (byte[8]) make_plasma_charset::bittab#0 ← { (byte)(number) 1, (byte)(number) 2, (byte)(number) 4, (byte)(number) 8, (byte)(number) $10, (byte)(number) $20, (byte)(number) $40, (byte)(number) $80 }
Successful SSA optimization PassNAddArrayNumberTypeConversions
Inlining cast (byte*) D018#0 ← (byte*)(number) $d018
Inlining cast (byte*) COLS#0 ← (byte*)(number) $d800
Inlining cast (byte) BLACK#0 ← (unumber)(number) 0
Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#3
Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3
Inlining cast (byte*) HEAP_TOP#0 ← (byte*)(number) $a000
Inlining cast (void*) malloc::return#0 ← (void*)(byte*) malloc::mem#0
Inlining cast (signed word~) bsearch16u::$8 ← (signed word)(word) bsearch16u::key#1
Inlining cast (signed word~) bsearch16u::$9 ← (signed word)*((word*) bsearch16u::pivot#0)
Inlining cast (byte) NUM_SQUARES#0 ← (unumber)(number) $ff
Inlining cast (word*) SQUARES#1 ← (word*)(void*~) init_squares::$1
Inlining cast (word) init_squares::sqr#0 ← (unumber)(number) 0
Inlining cast (byte~) sqrt::$2 ← (byte)(word~) sqrt::$1
Inlining cast (byte) CORDIC_ITERATIONS_16#0 ← (unumber)(number) $f
Inlining cast (word) atan2_16::angle#0 ← (unumber)(number) 0
Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400
Inlining cast (word) memset::num#0 ← (unumber)(number) $3e8
Inlining cast (word*) SID_VOICE3_FREQ#0 ← (word*)(number) $d40e
Inlining cast (byte*) SID_VOICE3_CONTROL#0 ← (byte*)(number) $d412
Inlining cast (byte) SID_CONTROL_NOISE#0 ← (unumber)(number) $80
Inlining cast (byte*) SID_VOICE3_OSC#0 ← (byte*)(number) $d41b
Inlining cast *((word*) SID_VOICE3_FREQ#0) ← (unumber)(number) $ffff
Inlining cast (word) malloc::size#1 ← (unumber)(number) $3e8
Inlining cast (byte*) SCREEN_DIST#0 ← (byte*)(void*~) $0
Inlining cast (word) malloc::size#2 ← (unumber)(number) $3e8
Inlining cast (byte*) SCREEN_ANGLE#0 ← (byte*)(void*~) $1
Inlining cast (byte*) CHARSET#0 ← (byte*)(number) $2000
Inlining cast (byte*) SCREEN1#0 ← (byte*)(number) $2800
Inlining cast (byte*) SCREEN2#0 ← (byte*)(number) $2c00
Inlining cast (word) memset::num#1 ← (unumber)(number) $3e8
Inlining cast (word~) main::toD0181_$0#0 ← (word)(byte*) main::toD0181_screen#1
Inlining cast (word~) main::toD0181_$4#0 ← (word)(byte*) main::toD0181_gfx#1
Inlining cast (word~) main::toD0182_$0#0 ← (word)(byte*) main::toD0182_screen#1
Inlining cast (word~) main::toD0182_$4#0 ← (word)(byte*) main::toD0182_gfx#1
Inlining cast (byte) sin_offset_x#3 ← (unumber)(number) 0
Inlining cast (byte) sin_offset_y#3 ← (unumber)(number) 0
Inlining cast (byte) init_angle_screen::x#0 ← (unumber)(number) 0
Inlining cast (byte) init_angle_screen::xb#0 ← (unumber)(number) $27
Inlining cast (signed word~) init_angle_screen::$5 ← (signed word)(word~) init_angle_screen::$4
Inlining cast (signed word~) init_angle_screen::$8 ← (signed word)(word~) init_angle_screen::$7
Inlining cast (byte) NUM_SQUARES#3 ← (unumber)(number) $30
Inlining cast (byte) init_dist_screen::x#0 ← (unumber)(number) 0
Inlining cast (byte) init_dist_screen::xb#0 ← (unumber)(number) $27
Inlining cast (word) make_plasma_charset::c#0 ← (unumber)(number) 0
Inlining cast (byte) make_plasma_charset::i#0 ← (unumber)(number) 0
Inlining cast (byte) make_plasma_charset::b#0 ← (unumber)(number) 0
Inlining cast (byte) make_plasma_charset::ii#0 ← (unumber)(number) 0
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 53272
Simplifying constant pointer cast (byte*) 55296
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant pointer cast (byte*) 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 $ff
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 1
Simplifying constant integer cast $f
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast $8000
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast $3e8
Simplifying constant pointer cast (word*) 54286
Simplifying constant pointer cast (byte*) 54290
Simplifying constant integer cast $80
Simplifying constant pointer cast (byte*) 54299
Simplifying constant integer cast $ffff
Simplifying constant integer cast $3e8
Simplifying constant integer cast $3e8
Simplifying constant pointer cast (byte*) 8192
Simplifying constant pointer cast (byte*) 10240
Simplifying constant pointer cast (byte*) 11264
Simplifying constant integer cast $3e8
Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast 3
Simplifying constant integer cast 7
Simplifying constant integer cast 0
Simplifying constant integer cast $27
Simplifying constant integer cast 2
Simplifying constant integer cast $27
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 0
Simplifying constant integer cast $80
Simplifying constant integer cast $80
Simplifying constant integer cast $80
Simplifying constant integer cast $13
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast $30
Simplifying constant integer cast 2
Simplifying constant integer cast $18
Simplifying constant integer cast $18
Simplifying constant integer cast $18
Simplifying constant integer cast 0
Simplifying constant integer cast $27
Simplifying constant integer cast 2
Simplifying constant integer cast $27
Simplifying constant integer cast $27
Simplifying constant integer cast $27
Simplifying constant integer cast $13
Simplifying constant integer cast $28
Simplifying constant integer cast $28
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast 4
Simplifying constant integer cast 8
Simplifying constant integer cast $10
Simplifying constant integer cast $20
Simplifying constant integer cast $40
Simplifying constant integer cast $80
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast $ff
Simplifying constant integer cast 8
Simplifying constant integer cast 8
Simplifying constant integer cast 8
Simplifying constant integer cast 7
Simplifying constant integer cast 0
Simplifying constant integer cast $100
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) $ff
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) $f
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 2
Finalized signed number type (signed byte) 0
Finalized unsigned number type (byte) 2
Finalized signed number type (signed byte) 2
Finalized signed number type (signed byte) 2
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 0
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 1
Finalized signed number type (signed byte) 1
Finalized signed number type (signed byte) 0
Finalized unsigned number type (word) $8000
Finalized unsigned number type (word) $3e8
Finalized unsigned number type (byte) $80
Finalized unsigned number type (word) $ffff
Finalized unsigned number type (word) $3e8
Finalized unsigned number type (word) $3e8
Finalized unsigned number type (word) $3e8
Finalized unsigned number type (word) $3fff
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) $f
Finalized unsigned number type (word) $3fff
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) 4
Finalized unsigned number type (byte) $f
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 3
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $27
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $27
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) $13
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) $30
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $18
Finalized unsigned number type (byte) $18
Finalized unsigned number type (byte) $18
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $27
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $27
Finalized unsigned number type (byte) $27
Finalized unsigned number type (byte) $27
Finalized unsigned number type (byte) $13
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $ff
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 8
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) 0
Finalized unsigned number type (word) $100
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to byte in (unumber~) bsearch16u::$17 ← (byte) 1 * (const byte) SIZEOF_WORD
Inferred type updated to byte in (unumber~) bsearch16u::$18 ← (byte) 1 * (const byte) SIZEOF_WORD
Inferred type updated to byte in (unumber~) init_squares::$2 ← (byte) NUM_SQUARES#7 - (byte) 1
Inferred type updated to byte in (unumber~) init_squares::$3 ← (byte) init_squares::i#2 * (byte) 2
Inferred type updated to byte in (unumber~) init_squares::$4 ← (byte~) init_squares::$3 + (byte) 1
Inferred type updated to byte in (unumber~) atan2_16::$16 ← (byte) CORDIC_ITERATIONS_16#0 - (byte) 1
Inferred type updated to word in (unumber~) atan2_16::$12 ← (word) $8000 - (word) atan2_16::angle#9
Inferred type updated to word in (unumber~) main::toD0181_$1#0 ← (word~) main::toD0181_$0#0 & (word) $3fff
Inferred type updated to word in (unumber~) main::toD0181_$2#0 ← (word~) main::toD0181_$1#0 * (byte) 4
Inferred type updated to byte in (unumber~) main::toD0181_$3#0 ← > (word~) main::toD0181_$2#0
Inferred type updated to byte in (unumber~) main::toD0181_$6#0 ← (byte~) main::toD0181_$5#0 / (byte) 4
Inferred type updated to byte in (unumber~) main::toD0181_$7#0 ← (byte~) main::toD0181_$6#0 & (byte) $f
Inferred type updated to byte in (unumber~) main::toD0181_$8#0 ← (byte~) main::toD0181_$3#0 | (byte~) main::toD0181_$7#0
Inferred type updated to word in (unumber~) main::toD0182_$1#0 ← (word~) main::toD0182_$0#0 & (word) $3fff
Inferred type updated to word in (unumber~) main::toD0182_$2#0 ← (word~) main::toD0182_$1#0 * (byte) 4
Inferred type updated to byte in (unumber~) main::toD0182_$3#0 ← > (word~) main::toD0182_$2#0
Inferred type updated to byte in (unumber~) main::toD0182_$6#0 ← (byte~) main::toD0182_$5#0 / (byte) 4
Inferred type updated to byte in (unumber~) main::toD0182_$7#0 ← (byte~) main::toD0182_$6#0 & (byte) $f
Inferred type updated to byte in (unumber~) main::toD0182_$8#0 ← (byte~) main::toD0182_$3#0 | (byte~) main::toD0182_$7#0
Inferred type updated to byte in (unumber~) init_angle_screen::$2 ← (byte) init_angle_screen::x#2 * (byte) 2
Inferred type updated to byte in (unumber~) init_angle_screen::$3 ← (byte) $27 - (byte~) init_angle_screen::$2
Inferred type updated to byte in (unumber~) init_angle_screen::$6 ← (byte) init_angle_screen::y#2 * (byte) 2
Inferred type updated to word in (unumber~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (byte) $80
Inferred type updated to byte in (unumber~) init_angle_screen::$11 ← > (word~) init_angle_screen::$10
Inferred type updated to byte in (unumber~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0
Inferred type updated to byte in (unumber~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0
Inferred type updated to byte in (unumber~) init_dist_screen::$2 ← (byte) init_dist_screen::y#2 * (byte) 2
Inferred type updated to byte in (unumber~) init_dist_screen::$6 ← (byte) init_dist_screen::y2#1 - (byte) $18
Inferred type updated to byte in (unumber~) init_dist_screen::$7 ← (byte~) init_dist_screen::$6
Inferred type updated to byte in (unumber~) init_dist_screen::$4 ← (byte) $18 - (byte) init_dist_screen::y2#2
Inferred type updated to byte in (unumber~) init_dist_screen::$5 ← (byte~) init_dist_screen::$4
Inferred type updated to byte for (unumber~) init_dist_screen::$8
Inferred type updated to byte in (unumber~) init_dist_screen::$10 ← (byte) init_dist_screen::x#2 * (byte) 2
Inferred type updated to byte in (unumber~) init_dist_screen::$14 ← (byte) init_dist_screen::x2#1 - (byte) $27
Inferred type updated to byte in (unumber~) init_dist_screen::$15 ← (byte~) init_dist_screen::$14
Inferred type updated to byte in (unumber~) init_dist_screen::$12 ← (byte) $27 - (byte) init_dist_screen::x2#2
Inferred type updated to byte in (unumber~) init_dist_screen::$13 ← (byte~) init_dist_screen::$12
Inferred type updated to byte for (unumber~) init_dist_screen::$16
Inferred type updated to byte in (unumber~) make_plasma_charset::$4 ← (byte~) make_plasma_charset::$3 & (byte) $ff
Inferred type updated to word in (unumber~) make_plasma_charset::$8 ← (word) make_plasma_charset::c#3 * (byte) 8
Inferred type updated to word in (unumber~) make_plasma_charset::$9 ← (word~) make_plasma_charset::$8 + (byte) make_plasma_charset::i#2
Inferred type updated to byte in (unumber~) make_plasma_charset::$11 ← (word) make_plasma_charset::c#4 & (byte) 7
Inversing boolean not [5] (bool~) memset::$1 ← (word) memset::num#2 <= (byte) 0 from [4] (bool~) memset::$0 ← (word) memset::num#2 > (byte) 0
Inversing boolean not [47] (bool~) bsearch16u::$12 ← (signed word) bsearch16u::result#0 != (signed byte) 0 from [46] (bool~) bsearch16u::$11 ← (signed word) bsearch16u::result#0 == (signed byte) 0
Inversing boolean not [54] (bool~) bsearch16u::$14 ← (signed word) bsearch16u::result#1 <= (signed byte) 0 from [53] (bool~) bsearch16u::$13 ← (signed word) bsearch16u::result#1 > (signed byte) 0
Inversing boolean not [155] (bool~) atan2_16::$18 ← (signed word) atan2_16::yi#3 != (signed byte) 0 from [154] (bool~) atan2_16::$17 ← (signed word) atan2_16::yi#3 == (signed byte) 0
Inversing boolean not [164] (bool~) atan2_16::$11 ← (signed word) atan2_16::x#4 >= (signed byte) 0 from [163] (bool~) atan2_16::$10 ← (signed word) atan2_16::x#4 < (signed byte) 0
Inversing boolean not [175] (bool~) atan2_16::$20 ← (byte) 0 == (byte) atan2_16::shift#4 from [174] (bool~) atan2_16::$25 ← (byte) 0 != (byte) atan2_16::shift#4
Inversing boolean not [199] (bool~) atan2_16::$14 ← (signed word) atan2_16::y#4 >= (signed byte) 0 from [198] (bool~) atan2_16::$13 ← (signed word) atan2_16::y#4 < (signed byte) 0
Inversing boolean not [527] (bool~) make_plasma_charset::$6 ← (byte~) make_plasma_charset::$4 <= (byte) make_plasma_charset::s#1 from [526] (bool~) make_plasma_charset::$5 ← (byte~) make_plasma_charset::$4 > (byte) make_plasma_charset::s#1
Inversing boolean not [545] (bool~) make_plasma_charset::$13 ← (byte~) make_plasma_charset::$11 != (byte) 0 from [544] (bool~) make_plasma_charset::$12 ← (byte~) make_plasma_charset::$11 == (byte) 0
Successful SSA optimization Pass2UnaryNotSimplification
Alias (void*) memset::return#0 = (void*) memset::str#2 (void*) memset::return#4 (void*) memset::return#1 
Alias (void*) memset::str#3 = (void*) memset::str#4 
Alias (word) memset::num#2 = (word) memset::num#3 
Alias (byte) memset::c#3 = (byte) memset::c#4 
Alias (byte*) memset::end#0 = (byte*~) memset::$3 
Alias (byte*) HEAP_TOP#0 = (byte*) heap_head#0 (byte*) heap_head#44 (byte*) heap_head#40 (byte*) heap_head#36 (byte*) heap_head#31 (byte*) heap_head#23 
Alias (byte*) malloc::mem#0 = (byte*~) malloc::$0 
Alias (void*) malloc::return#0 = (void*) malloc::return#5 (void*) malloc::return#1 
Alias (byte*) heap_head#1 = (byte*) heap_head#13 (byte*) heap_head#2 
Alias (byte) bsearch16u::num#3 = (byte) bsearch16u::num#4 (byte) bsearch16u::num#8 (byte) bsearch16u::num#6 
Alias (word*) bsearch16u::items#2 = (word*) bsearch16u::items#6 (word*) bsearch16u::items#3 (word*) bsearch16u::items#9 (word*) bsearch16u::items#4 (word*~) bsearch16u::$3 (word*) bsearch16u::items#5 
Alias (word) bsearch16u::key#1 = (word) bsearch16u::key#3 (word) bsearch16u::key#2 (word) bsearch16u::key#7 (word) bsearch16u::key#6 
Alias (word*) bsearch16u::pivot#0 = (word*~) bsearch16u::$7 (word*) bsearch16u::pivot#3 (word*) bsearch16u::pivot#1 (word*) bsearch16u::return#0 (word*) bsearch16u::pivot#2 
Alias (signed word) bsearch16u::result#0 = (signed word~) bsearch16u::$10 (signed word) bsearch16u::result#1 
Alias (word*) bsearch16u::return#1 = (word*) bsearch16u::return#4 
Alias (word*) bsearch16u::items#0 = (word*~) bsearch16u::$15 
Alias (word*~) bsearch16u::$2 = (word*~) bsearch16u::$1 
Alias (word*) bsearch16u::return#2 = (word*~) bsearch16u::$4 
Alias (word) malloc::size#0 = (byte~) init_squares::$0 
Alias (void*) malloc::return#2 = (void*) malloc::return#6 
Alias (byte) NUM_SQUARES#6 = (byte) NUM_SQUARES#7 
Alias (byte*) heap_head#14 = (byte*) heap_head#3 
Alias (byte*) heap_head#15 = (byte*) heap_head#25 (byte*) heap_head#4 
Alias (word*) SQUARES#17 = (word*) SQUARES#8 (word*) SQUARES#2 
Alias (word) sqr::return#0 = (word) sqr::return#4 (word) sqr::return#1 
Alias (word*) bsearch16u::return#3 = (word*) bsearch16u::return#5 
Alias (word*) SQUARES#10 = (word*) SQUARES#11 
Alias (word*) sqrt::found#0 = (word*~) sqrt::$0 
Alias (byte) sqrt::return#0 = (byte) sqrt::sq#0 (byte~) sqrt::$2 (byte) sqrt::return#3 (byte) sqrt::return#1 
Alias (byte) NUM_SQUARES#0 = (byte) NUM_SQUARES#42 (byte) NUM_SQUARES#38 (byte) NUM_SQUARES#35 (byte) NUM_SQUARES#32 (byte) NUM_SQUARES#28 (byte) NUM_SQUARES#25 (byte) NUM_SQUARES#22 (byte) NUM_SQUARES#17 
Alias (word*) SQUARES#0 = (word*) SQUARES#49 (word*) SQUARES#47 (word*) SQUARES#45 (word*) SQUARES#43 (word*) SQUARES#39 (word*) SQUARES#36 (word*) SQUARES#33 (word*) SQUARES#25 
Alias (signed word) atan2_16::y#1 = (signed word) atan2_16::y#2 (signed word~) atan2_16::$3 (signed word) atan2_16::y#3 
Alias (signed word) atan2_16::x#5 = (signed word) atan2_16::x#9 (signed word) atan2_16::x#6 
Alias (signed word~) atan2_16::$2 = (signed word~) atan2_16::$1 
Alias (signed word) atan2_16::yi#0 = (signed word~) atan2_16::$4 (signed word) atan2_16::yi#12 (signed word) atan2_16::yi#13 
Alias (signed word) atan2_16::x#1 = (signed word) atan2_16::x#2 (signed word~) atan2_16::$8 (signed word) atan2_16::x#3 
Alias (signed word) atan2_16::y#12 = (signed word) atan2_16::y#15 (signed word) atan2_16::y#13 
Alias (signed word~) atan2_16::$7 = (signed word~) atan2_16::$6 
Alias (signed word) atan2_16::xi#0 = (signed word~) atan2_16::$9 
Alias (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#6 (signed word) atan2_16::xd#0 
Alias (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#4 (signed word) atan2_16::yd#0 
Alias (byte) atan2_16::i#2 = (byte) atan2_16::i#6 (byte) atan2_16::shift#0 
Alias (word) atan2_16::angle#12 = (word) atan2_16::angle#19 
Alias (signed word) atan2_16::x#17 = (signed word) atan2_16::x#7 
Alias (signed word) atan2_16::y#19 = (signed word) atan2_16::y#7 
Alias (signed word) atan2_16::xd#3 = (signed word) atan2_16::xd#7 (signed word) atan2_16::xd#8 (signed word) atan2_16::xd#4 
Alias (signed word) atan2_16::yd#3 = (signed word) atan2_16::yd#7 (signed word) atan2_16::yd#8 (signed word) atan2_16::yd#4 
Alias (byte) atan2_16::shift#2 = (byte) atan2_16::shift#3 (byte) atan2_16::shift#4 
Alias (signed word) atan2_16::yi#10 = (signed word) atan2_16::yi#15 (signed word) atan2_16::yi#14 (signed word) atan2_16::yi#11 
Alias (signed word) atan2_16::xi#10 = (signed word) atan2_16::xi#12 (signed word) atan2_16::xi#11 (signed word) atan2_16::xi#9 
Alias (byte) atan2_16::i#10 = (byte) atan2_16::i#11 (byte) atan2_16::i#8 (byte) atan2_16::i#9 
Alias (word) atan2_16::angle#16 = (word) atan2_16::angle#20 (word) atan2_16::angle#18 (word) atan2_16::angle#17 
Alias (signed word) atan2_16::x#14 = (signed word) atan2_16::x#18 (signed word) atan2_16::x#16 (signed word) atan2_16::x#15 
Alias (signed word) atan2_16::y#16 = (signed word) atan2_16::y#20 (signed word) atan2_16::y#18 (signed word) atan2_16::y#17 
Alias (signed word) atan2_16::xi#4 = (signed word) atan2_16::xi#7 (signed word) atan2_16::xi#5 
Alias (signed word) atan2_16::yd#5 = (signed word) atan2_16::yd#9 (signed word) atan2_16::yd#6 
Alias (signed word) atan2_16::yi#5 = (signed word) atan2_16::yi#6 (signed word) atan2_16::yi#7 
Alias (signed word) atan2_16::xd#5 = (signed word) atan2_16::xd#9 (signed word) atan2_16::xd#6 
Alias (byte) atan2_16::i#3 = (byte) atan2_16::i#7 (byte) atan2_16::i#4 
Alias (word) atan2_16::angle#14 = (word) atan2_16::angle#7 (word) atan2_16::angle#8 
Alias (signed word) atan2_16::x#11 = (signed word) atan2_16::x#13 (signed word) atan2_16::x#12 
Alias (signed word) atan2_16::y#10 = (signed word) atan2_16::y#14 (signed word) atan2_16::y#11 
Alias (word) atan2_16::angle#1 = (word) atan2_16::angle#9 
Alias (signed word) atan2_16::y#5 = (signed word) atan2_16::y#6 
Alias (word) atan2_16::angle#4 = (word~) atan2_16::$12 
Alias (word) atan2_16::return#0 = (word) atan2_16::angle#10 (word) atan2_16::return#3 (word) atan2_16::return#1 
Alias (word) atan2_16::angle#11 = (word) atan2_16::angle#15 
Alias (word) atan2_16::angle#5 = (word~) atan2_16::$15 
Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#38 (byte*) print_char_cursor#43 (byte*) print_screen#13 (byte*) print_line_cursor#34 (byte*) print_char_cursor#39 (byte*) print_screen#12 (byte*) print_line_cursor#31 (byte*) print_char_cursor#36 (byte*) print_screen#11 (byte*) print_line_cursor#28 (byte*) print_char_cursor#34 (byte*) print_screen#10 (byte*) print_line_cursor#25 (byte*) print_char_cursor#31 (byte*) print_screen#9 (byte*) print_line_cursor#18 (byte*) print_char_cursor#25 (byte*) print_screen#8 
Alias (byte*) print_char_cursor#1 = (byte*) print_char_cursor#12 (byte*) print_char_cursor#2 
Alias (byte*) print_line_cursor#1 = (byte*) print_screen#2 (byte*) print_screen#1 (byte*) print_char_cursor#3 (byte*) print_line_cursor#8 (byte*) print_char_cursor#13 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 
Alias (byte) sid_rnd::return#0 = (byte) sid_rnd::return#3 (byte) sid_rnd::return#1 
Alias (void*) malloc::return#3 = (void*) malloc::return#7 
Alias (byte*) heap_head#16 = (byte*) heap_head#5 
Alias (void*) malloc::return#4 = (void*) malloc::return#8 
Alias (byte*) heap_head#17 = (byte*) heap_head#6 (byte*) heap_head#35 (byte*) heap_head#30 
Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#19 (byte*) print_line_cursor#26 
Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#26 (byte*) print_char_cursor#32 
Alias (byte*) print_screen#5 = (byte*) print_screen#6 (byte*) print_screen#7 
Alias (byte) sin_offset_x#19 = (byte) sin_offset_x#29 (byte) sin_offset_x#30 (byte) sin_offset_x#27 (byte) sin_offset_x#23 
Alias (byte) sin_offset_y#19 = (byte) sin_offset_y#29 (byte) sin_offset_y#30 (byte) sin_offset_y#27 (byte) sin_offset_y#23 
Alias (byte) NUM_SQUARES#1 = (byte) NUM_SQUARES#9 (byte) NUM_SQUARES#29 (byte) NUM_SQUARES#23 (byte) NUM_SQUARES#18 
Alias (byte*) heap_head#18 = (byte*) heap_head#7 (byte*) heap_head#41 (byte*) heap_head#37 (byte*) heap_head#32 
Alias (word*) SQUARES#12 = (word*) SQUARES#3 (word*) SQUARES#40 (word*) SQUARES#34 (word*) SQUARES#26 
Alias (byte*) print_line_cursor#20 = (byte*) print_line_cursor#3 (byte*) print_line_cursor#9 
Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#27 
Alias (byte) sin_offset_x#14 = (byte) sin_offset_x#16 (byte) sin_offset_x#9 (byte) sin_offset_x#2 
Alias (byte) sin_offset_y#14 = (byte) sin_offset_y#16 (byte) sin_offset_y#9 (byte) sin_offset_y#2 
Alias (byte) NUM_SQUARES#10 = (byte) NUM_SQUARES#47 (byte) NUM_SQUARES#15 (byte) NUM_SQUARES#45 (byte) NUM_SQUARES#43 (byte) NUM_SQUARES#39 (byte) NUM_SQUARES#36 (byte) NUM_SQUARES#33 (byte) NUM_SQUARES#30 (byte) NUM_SQUARES#24 (byte) NUM_SQUARES#19 (byte) NUM_SQUARES#2 
Alias (byte*) heap_head#19 = (byte*) heap_head#57 (byte*) heap_head#27 (byte*) heap_head#54 (byte*) heap_head#52 (byte*) heap_head#50 (byte*) heap_head#48 (byte*) heap_head#45 (byte*) heap_head#42 (byte*) heap_head#38 (byte*) heap_head#33 (byte*) heap_head#8 
Alias (word*) SQUARES#13 = (word*) SQUARES#52 (word*) SQUARES#22 (word*) SQUARES#51 (word*) SQUARES#50 (word*) SQUARES#48 (word*) SQUARES#46 (word*) SQUARES#44 (word*) SQUARES#41 (word*) SQUARES#35 (word*) SQUARES#27 (word*) SQUARES#4 
Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#46 (byte*) print_line_cursor#15 (byte*) print_line_cursor#45 (byte*) print_line_cursor#43 (byte*) print_line_cursor#41 (byte*) print_line_cursor#39 (byte*) print_line_cursor#35 (byte*) print_line_cursor#32 (byte*) print_line_cursor#27 (byte*) print_line_cursor#21 (byte*) print_line_cursor#4 
Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#51 (byte*) print_char_cursor#22 (byte*) print_char_cursor#50 (byte*) print_char_cursor#48 (byte*) print_char_cursor#46 (byte*) print_char_cursor#44 (byte*) print_char_cursor#40 (byte*) print_char_cursor#37 (byte*) print_char_cursor#33 (byte*) print_char_cursor#28 (byte*) print_char_cursor#6 
Alias (byte) sin_offset_x#0 = (byte) sin_offset_x#7 (byte) sin_offset_x#24 (byte) sin_offset_x#21 (byte) sin_offset_x#15 
Alias (byte) sin_offset_y#0 = (byte) sin_offset_y#7 (byte) sin_offset_y#24 (byte) sin_offset_y#21 (byte) sin_offset_y#15 
Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 
Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 
Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8#0 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$5 
Alias (byte) sin_offset_x#1 = (byte) sin_offset_x#8 (byte) sin_offset_x#28 (byte) sin_offset_x#25 (byte) sin_offset_x#20 
Alias (byte) sin_offset_y#1 = (byte) sin_offset_y#8 (byte) sin_offset_y#28 (byte) sin_offset_y#25 (byte) sin_offset_y#20 
Alias (byte*) main::toD0182_screen#0 = (byte*) main::toD0182_screen#1 
Alias (byte*) main::toD0182_gfx#0 = (byte*) main::toD0182_gfx#1 
Alias (byte) main::toD0182_return#0 = (byte~) main::toD0182_$8#0 (byte) main::toD0182_return#2 (byte) main::toD0182_return#1 (byte) main::toD0182_return#3 (byte~) main::$7 
Alias (byte*) doplasma::sin_x#0 = (byte*~) doplasma::$0 
Alias (byte*) doplasma::sin_y#0 = (byte*~) doplasma::$1 
Alias (byte*) doplasma::screen#3 = (byte*) doplasma::screen#4 
Alias (byte*) doplasma::angle#2 = (byte*) doplasma::angle#3 
Alias (byte*) doplasma::dist#2 = (byte*) doplasma::dist#3 
Alias (byte) doplasma::y#2 = (byte) doplasma::y#3 
Alias (byte) sin_offset_x#11 = (byte) sin_offset_x#17 (byte) sin_offset_x#22 
Alias (byte) sin_offset_y#11 = (byte) sin_offset_y#17 (byte) sin_offset_y#22 
Alias (byte*) doplasma::sin_x#1 = (byte*) doplasma::sin_x#3 
Alias (byte*) doplasma::sin_y#1 = (byte*) doplasma::sin_y#3 
Alias (byte) sin_offset_x#12 = (byte) sin_offset_x#4 (byte) sin_offset_x#5 
Alias (byte) sin_offset_y#12 = (byte) sin_offset_y#4 (byte) sin_offset_y#5 
Alias (byte*) init_angle_screen::screen_topline#0 = (byte*~) init_angle_screen::$0 
Alias (byte*) init_angle_screen::screen_bottomline#0 = (byte*~) init_angle_screen::$1 
Alias (word~) init_angle_screen::$4 = (word~) init_angle_screen::$17 
Alias (signed word) init_angle_screen::xw#0 = (signed word~) init_angle_screen::$5 
Alias (word~) init_angle_screen::$7 = (word~) init_angle_screen::$18 
Alias (signed word) init_angle_screen::yw#0 = (signed word~) init_angle_screen::$8 
Alias (word) atan2_16::return#2 = (word) atan2_16::return#4 
Alias (byte*) init_angle_screen::screen_bottomline#2 = (byte*) init_angle_screen::screen_bottomline#4 (byte*) init_angle_screen::screen_bottomline#3 
Alias (byte) init_angle_screen::xb#2 = (byte) init_angle_screen::xb#3 
Alias (byte*) init_angle_screen::screen_topline#2 = (byte*) init_angle_screen::screen_topline#4 (byte*) init_angle_screen::screen_topline#3 
Alias (byte) init_angle_screen::x#2 = (byte) init_angle_screen::x#3 
Alias (byte) init_angle_screen::y#2 = (byte) init_angle_screen::y#5 (byte) init_angle_screen::y#3 
Alias (word) init_angle_screen::angle_w#0 = (word~) init_angle_screen::$9 
Alias (byte) init_angle_screen::ang_w#0 = (byte~) init_angle_screen::$11 
Alias (byte*) init_dist_screen::screen#1 = (byte*) init_dist_screen::screen#2 (byte*) init_dist_screen::screen_topline#0 
Alias (byte) NUM_SQUARES#3 = (byte) NUM_SQUARES#46 
Alias (byte*) heap_head#20 = (byte*) heap_head#9 
Alias (word*) SQUARES#14 = (word*) SQUARES#5 
Alias (byte*) init_dist_screen::screen_bottomline#0 = (byte*~) init_dist_screen::$1 
Alias (byte) init_dist_screen::y2#0 = (byte~) init_dist_screen::$2 (byte) init_dist_screen::y2#1 (byte) init_dist_screen::y2#2 
Alias (word*) SQUARES#28 = (word*) SQUARES#37 (word*) SQUARES#29 
Alias (byte) NUM_SQUARES#40 = (byte) NUM_SQUARES#44 (byte) NUM_SQUARES#41 
Alias (byte*) init_dist_screen::screen_topline#11 = (byte*) init_dist_screen::screen_topline#13 (byte*) init_dist_screen::screen_topline#12 
Alias (byte*) init_dist_screen::screen_bottomline#11 = (byte*) init_dist_screen::screen_bottomline#13 (byte*) init_dist_screen::screen_bottomline#12 
Alias (byte) init_dist_screen::y#12 = (byte) init_dist_screen::y#2 (byte) init_dist_screen::y#13 
Alias (byte*) heap_head#55 = (byte*) heap_head#58 (byte*) heap_head#56 
Alias (byte~) init_dist_screen::$7 = (byte~) init_dist_screen::$6 
Alias (byte~) init_dist_screen::$5 = (byte~) init_dist_screen::$4 
Alias (byte) init_dist_screen::yd#0 = (byte~) init_dist_screen::$8 
Alias (word) sqr::return#2 = (word) sqr::return#5 
Alias (word*) SQUARES#18 = (word*) SQUARES#42 
Alias (byte) NUM_SQUARES#34 = (byte) NUM_SQUARES#37 
Alias (byte*) init_dist_screen::screen_topline#10 = (byte*) init_dist_screen::screen_topline#9 
Alias (byte*) init_dist_screen::screen_bottomline#10 = (byte*) init_dist_screen::screen_bottomline#9 
Alias (byte) init_dist_screen::y#10 = (byte) init_dist_screen::y#11 
Alias (byte*) heap_head#51 = (byte*) heap_head#53 
Alias (word) init_dist_screen::yds#0 = (word~) init_dist_screen::$9 
Alias (byte) init_dist_screen::x2#0 = (byte~) init_dist_screen::$10 (byte) init_dist_screen::x2#1 (byte) init_dist_screen::x2#2 
Alias (word*) SQUARES#30 = (word*) SQUARES#38 (word*) SQUARES#31 
Alias (word) init_dist_screen::yds#3 = (word) init_dist_screen::yds#5 (word) init_dist_screen::yds#4 
Alias (byte) NUM_SQUARES#26 = (byte) NUM_SQUARES#31 (byte) NUM_SQUARES#27 
Alias (byte*) init_dist_screen::screen_topline#6 = (byte*) init_dist_screen::screen_topline#8 (byte*) init_dist_screen::screen_topline#7 
Alias (byte) init_dist_screen::x#2 = (byte) init_dist_screen::x#6 (byte) init_dist_screen::x#7 
Alias (byte*) init_dist_screen::screen_bottomline#6 = (byte*) init_dist_screen::screen_bottomline#8 (byte*) init_dist_screen::screen_bottomline#7 
Alias (byte) init_dist_screen::xb#5 = (byte) init_dist_screen::xb#7 (byte) init_dist_screen::xb#6 
Alias (byte) init_dist_screen::y#7 = (byte) init_dist_screen::y#9 (byte) init_dist_screen::y#8 
Alias (byte*) heap_head#46 = (byte*) heap_head#49 (byte*) heap_head#47 
Alias (byte~) init_dist_screen::$15 = (byte~) init_dist_screen::$14 
Alias (byte~) init_dist_screen::$13 = (byte~) init_dist_screen::$12 
Alias (byte) init_dist_screen::xd#0 = (byte~) init_dist_screen::$16 
Alias (word) sqr::return#3 = (word) sqr::return#6 
Alias (word) init_dist_screen::yds#1 = (word) init_dist_screen::yds#2 (word) init_dist_screen::yds#6 
Alias (word*) SQUARES#15 = (word*) SQUARES#20 (word*) SQUARES#19 (word*) SQUARES#32 (word*) SQUARES#24 (word*) SQUARES#6 
Alias (byte) NUM_SQUARES#11 = (byte) NUM_SQUARES#13 (byte) NUM_SQUARES#20 (byte) NUM_SQUARES#21 (byte) NUM_SQUARES#16 (byte) NUM_SQUARES#4 
Alias (byte*) init_dist_screen::screen_topline#2 = (byte*) init_dist_screen::screen_topline#4 (byte*) init_dist_screen::screen_topline#5 (byte*) init_dist_screen::screen_topline#3 
Alias (byte) init_dist_screen::x#3 = (byte) init_dist_screen::x#4 (byte) init_dist_screen::x#5 
Alias (byte*) init_dist_screen::screen_bottomline#2 = (byte*) init_dist_screen::screen_bottomline#4 (byte*) init_dist_screen::screen_bottomline#5 (byte*) init_dist_screen::screen_bottomline#3 
Alias (byte) init_dist_screen::xb#2 = (byte) init_dist_screen::xb#3 (byte) init_dist_screen::xb#4 
Alias (byte) init_dist_screen::y#3 = (byte) init_dist_screen::y#5 (byte) init_dist_screen::y#6 (byte) init_dist_screen::y#4 
Alias (byte*) heap_head#10 = (byte*) heap_head#39 (byte*) heap_head#43 (byte*) heap_head#34 (byte*) heap_head#29 (byte*) heap_head#21 
Alias (word) init_dist_screen::xds#0 = (word~) init_dist_screen::$17 
Alias (word) init_dist_screen::ds#0 = (word~) init_dist_screen::$18 
Alias (byte) sqrt::return#2 = (byte) sqrt::return#4 
Alias (byte) init_dist_screen::d#0 = (byte~) init_dist_screen::$19 
Alias (byte*) print_screen#3 = (byte*) print_screen#4 
Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#22 
Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#29 
Alias (byte*) make_plasma_charset::charset#10 = (byte*) make_plasma_charset::charset#13 (byte*) make_plasma_charset::charset#8 
Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#5 
Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#7 
Alias (byte) sid_rnd::return#2 = (byte) sid_rnd::return#4 
Alias (byte) make_plasma_charset::s#1 = (byte) make_plasma_charset::s#2 (byte) make_plasma_charset::s#6 
Alias (byte) make_plasma_charset::ii#3 = (byte) make_plasma_charset::ii#4 (byte) make_plasma_charset::ii#5 
Alias (byte) make_plasma_charset::b#2 = (byte) make_plasma_charset::b#4 (byte) make_plasma_charset::b#6 
Alias (word) make_plasma_charset::c#11 = (word) make_plasma_charset::c#8 (word) make_plasma_charset::c#9 
Alias (byte) make_plasma_charset::i#4 = (byte) make_plasma_charset::i#6 (byte) make_plasma_charset::i#5 
Alias (byte*) make_plasma_charset::charset#3 = (byte*) make_plasma_charset::charset#5 (byte*) make_plasma_charset::charset#4 
Alias (byte*) print_line_cursor#36 = (byte*) print_line_cursor#40 (byte*) print_line_cursor#37 
Alias (byte*) print_char_cursor#41 = (byte*) print_char_cursor#45 (byte*) print_char_cursor#42 
Alias (word) make_plasma_charset::c#10 = (word) make_plasma_charset::c#3 (word) make_plasma_charset::c#6 (word) make_plasma_charset::c#4 (word) make_plasma_charset::c#7 
Alias (byte) make_plasma_charset::i#2 = (byte) make_plasma_charset::i#3 
Alias (byte) make_plasma_charset::b#3 = (byte) make_plasma_charset::b#5 
Alias (byte*) make_plasma_charset::charset#1 = (byte*) make_plasma_charset::charset#2 (byte*) make_plasma_charset::charset#12 (byte*) make_plasma_charset::charset#14 (byte*) make_plasma_charset::charset#11 
Alias (byte) make_plasma_charset::s#4 = (byte) make_plasma_charset::s#5 
Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#29 (byte*) print_line_cursor#33 (byte*) print_line_cursor#24 (byte*) print_line_cursor#30 
Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#35 (byte*) print_char_cursor#38 (byte*) print_char_cursor#30 
Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#8 
Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#17 (byte*) print_line_cursor#6 
Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#24 (byte*) print_char_cursor#9 
Alias (byte) sin_offset_x#18 = (byte) sin_offset_x#3 
Alias (byte) sin_offset_y#18 = (byte) sin_offset_y#3 
Alias (byte) NUM_SQUARES#12 = (byte) NUM_SQUARES#5 
Alias (byte*) heap_head#11 = (byte*) heap_head#22 
Alias (word*) SQUARES#16 = (word*) SQUARES#7 
Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#7 
Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#19 
Alias (byte) sin_offset_x#13 = (byte) sin_offset_x#6 
Alias (byte) sin_offset_y#13 = (byte) sin_offset_y#6 
Successful SSA optimization Pass2AliasElimination
Alias (word) bsearch16u::key#1 = (word) bsearch16u::key#5 
Alias (signed word) atan2_16::x#1 = (signed word) atan2_16::x#5 (signed word) atan2_16::x#10 
Alias (signed word) atan2_16::y#1 = (signed word) atan2_16::y#12 (signed word) atan2_16::y#9 
Alias (signed word) atan2_16::yi#0 = (signed word) atan2_16::yi#9 
Alias (signed word) atan2_16::yi#10 = (signed word) atan2_16::yi#5 
Alias (signed word) atan2_16::xi#10 = (signed word) atan2_16::xi#4 
Alias (byte) atan2_16::i#10 = (byte) atan2_16::i#3 (byte) atan2_16::i#5 
Alias (word) atan2_16::angle#14 = (word) atan2_16::angle#16 
Alias (signed word) atan2_16::x#11 = (signed word) atan2_16::x#14 (signed word) atan2_16::x#8 
Alias (signed word) atan2_16::y#10 = (signed word) atan2_16::y#16 (signed word) atan2_16::y#8 
Alias (signed word) atan2_16::y#4 = (signed word) atan2_16::y#5 
Alias (word*) SQUARES#18 = (word*) SQUARES#28 
Alias (byte) NUM_SQUARES#34 = (byte) NUM_SQUARES#40 
Alias (byte*) init_dist_screen::screen_topline#10 = (byte*) init_dist_screen::screen_topline#11 
Alias (byte*) init_dist_screen::screen_bottomline#10 = (byte*) init_dist_screen::screen_bottomline#11 
Alias (byte) init_dist_screen::y#10 = (byte) init_dist_screen::y#12 
Alias (byte*) heap_head#51 = (byte*) heap_head#55 
Alias (word*) SQUARES#15 = (word*) SQUARES#30 
Alias (word) init_dist_screen::yds#1 = (word) init_dist_screen::yds#3 
Alias (byte) NUM_SQUARES#11 = (byte) NUM_SQUARES#26 
Alias (byte*) init_dist_screen::screen_topline#2 = (byte*) init_dist_screen::screen_topline#6 
Alias (byte) init_dist_screen::x#2 = (byte) init_dist_screen::x#3 
Alias (byte*) init_dist_screen::screen_bottomline#2 = (byte*) init_dist_screen::screen_bottomline#6 
Alias (byte) init_dist_screen::xb#2 = (byte) init_dist_screen::xb#5 
Alias (byte) init_dist_screen::y#3 = (byte) init_dist_screen::y#7 
Alias (byte*) heap_head#10 = (byte*) heap_head#46 
Alias (byte) make_plasma_charset::ii#2 = (byte) make_plasma_charset::ii#3 
Alias (word) make_plasma_charset::c#10 = (word) make_plasma_charset::c#11 (word) make_plasma_charset::c#5 
Alias (byte) make_plasma_charset::i#2 = (byte) make_plasma_charset::i#4 
Alias (byte*) make_plasma_charset::charset#1 = (byte*) make_plasma_charset::charset#3 (byte*) make_plasma_charset::charset#9 
Alias (byte) make_plasma_charset::s#1 = (byte) make_plasma_charset::s#4 
Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#23 (byte*) print_line_cursor#36 
Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#41 
Successful SSA optimization Pass2AliasElimination
Self Phi Eliminated (byte) memset::c#2
Self Phi Eliminated (byte*) memset::end#1
Self Phi Eliminated (void*) memset::str#5
Self Phi Eliminated (word) bsearch16u::key#1
Self Phi Eliminated (byte*) heap_head#15
Self Phi Eliminated (word*) SQUARES#17
Self Phi Eliminated (signed word) atan2_16::yi#10
Self Phi Eliminated (signed word) atan2_16::xi#10
Self Phi Eliminated (byte) atan2_16::i#10
Self Phi Eliminated (word) atan2_16::angle#14
Self Phi Eliminated (signed word) atan2_16::x#11
Self Phi Eliminated (signed word) atan2_16::y#10
Self Phi Eliminated (byte) NUM_SQUARES#10
Self Phi Eliminated (byte*) heap_head#19
Self Phi Eliminated (word*) SQUARES#13
Self Phi Eliminated (byte*) print_line_cursor#10
Self Phi Eliminated (byte*) print_char_cursor#15
Self Phi Eliminated (byte*) doplasma::sin_x#1
Self Phi Eliminated (byte*) doplasma::angle#2
Self Phi Eliminated (byte*) doplasma::sin_y#1
Self Phi Eliminated (byte*) doplasma::dist#2
Self Phi Eliminated (byte*) doplasma::screen#3
Self Phi Eliminated (byte) doplasma::y#2
Self Phi Eliminated (byte) sin_offset_x#11
Self Phi Eliminated (byte) sin_offset_y#11
Self Phi Eliminated (byte) init_angle_screen::y#2
Self Phi Eliminated (byte*) init_angle_screen::screen_bottomline#2
Self Phi Eliminated (byte*) init_angle_screen::screen_topline#2
Self Phi Eliminated (word*) SQUARES#15
Self Phi Eliminated (word) init_dist_screen::yds#1
Self Phi Eliminated (byte) NUM_SQUARES#11
Self Phi Eliminated (byte*) init_dist_screen::screen_topline#2
Self Phi Eliminated (byte*) init_dist_screen::screen_bottomline#2
Self Phi Eliminated (byte) init_dist_screen::y#3
Self Phi Eliminated (byte*) heap_head#10
Self Phi Eliminated (byte) make_plasma_charset::s#1
Self Phi Eliminated (word) make_plasma_charset::c#10
Self Phi Eliminated (byte) make_plasma_charset::i#2
Self Phi Eliminated (byte*) make_plasma_charset::charset#1
Self Phi Eliminated (byte*) print_line_cursor#12
Self Phi Eliminated (byte*) print_char_cursor#20
Successful SSA optimization Pass2SelfPhiElimination
Identical Phi Values (byte) memset::c#2 (byte) memset::c#3
Identical Phi Values (byte*) memset::end#1 (byte*) memset::end#0
Identical Phi Values (void*) memset::str#5 (void*) memset::str#3
Identical Phi Values (byte) bsearch16u::num#7 (byte) bsearch16u::num#2
Identical Phi Values (word*) bsearch16u::items#7 (word*) bsearch16u::items#1
Identical Phi Values (word) bsearch16u::key#4 (word) bsearch16u::key#0
Identical Phi Values (word) bsearch16u::key#1 (word) bsearch16u::key#4
Identical Phi Values (byte) NUM_SQUARES#6 (byte) NUM_SQUARES#3
Identical Phi Values (byte*) heap_head#24 (byte*) heap_head#28
Identical Phi Values (byte*) heap_head#14 (byte*) heap_head#1
Identical Phi Values (byte*) heap_head#15 (byte*) heap_head#14
Identical Phi Values (word*) SQUARES#17 (word*) SQUARES#1
Identical Phi Values (word) sqrt::val#1 (word) sqrt::val#0
Identical Phi Values (word*) SQUARES#10 (word*) SQUARES#15
Identical Phi Values (byte) NUM_SQUARES#8 (byte) NUM_SQUARES#11
Identical Phi Values (signed word) atan2_16::y#1 (signed word) atan2_16::y#0
Identical Phi Values (signed word) atan2_16::x#1 (signed word) atan2_16::x#0
Identical Phi Values (signed word) atan2_16::yi#10 (signed word) atan2_16::yi#3
Identical Phi Values (signed word) atan2_16::xi#10 (signed word) atan2_16::xi#3
Identical Phi Values (byte) atan2_16::i#10 (byte) atan2_16::i#2
Identical Phi Values (word) atan2_16::angle#14 (word) atan2_16::angle#12
Identical Phi Values (signed word) atan2_16::x#11 (signed word) atan2_16::x#17
Identical Phi Values (signed word) atan2_16::y#10 (signed word) atan2_16::y#19
Identical Phi Values (byte) print_char::ch#1 (byte) print_char::ch#0
Identical Phi Values (byte*) print_char_cursor#11 (byte*) print_char_cursor#20
Identical Phi Values (byte*) print_line_cursor#1 (byte*) print_screen#3
Identical Phi Values (byte*) heap_head#16 (byte*) heap_head#1
Identical Phi Values (byte*) heap_head#17 (byte*) heap_head#1
Identical Phi Values (byte) NUM_SQUARES#14 (byte) NUM_SQUARES#0
Identical Phi Values (byte*) heap_head#26 (byte*) heap_head#17
Identical Phi Values (word*) SQUARES#21 (word*) SQUARES#0
Identical Phi Values (byte*) print_line_cursor#14 (byte*) print_line_cursor#0
Identical Phi Values (byte*) print_char_cursor#21 (byte*) print_line_cursor#0
Identical Phi Values (byte*) print_screen#5 (byte*) print_line_cursor#0
Identical Phi Values (byte) sin_offset_x#19 (byte) sin_offset_x#18
Identical Phi Values (byte) sin_offset_y#19 (byte) sin_offset_y#18
Identical Phi Values (byte) NUM_SQUARES#1 (byte) NUM_SQUARES#11
Identical Phi Values (byte*) heap_head#18 (byte*) heap_head#10
Identical Phi Values (word*) SQUARES#12 (word*) SQUARES#15
Identical Phi Values (byte*) print_line_cursor#20 (byte*) print_line_cursor#12
Identical Phi Values (byte*) print_char_cursor#14 (byte*) print_char_cursor#18
Identical Phi Values (byte) NUM_SQUARES#10 (byte) NUM_SQUARES#1
Identical Phi Values (byte*) heap_head#19 (byte*) heap_head#18
Identical Phi Values (word*) SQUARES#13 (word*) SQUARES#12
Identical Phi Values (byte*) print_line_cursor#10 (byte*) print_line_cursor#20
Identical Phi Values (byte*) print_char_cursor#15 (byte*) print_char_cursor#14
Identical Phi Values (byte) sin_offset_x#0 (byte) sin_offset_x#12
Identical Phi Values (byte) sin_offset_y#0 (byte) sin_offset_y#12
Identical Phi Values (byte) sin_offset_x#1 (byte) sin_offset_x#12
Identical Phi Values (byte) sin_offset_y#1 (byte) sin_offset_y#12
Identical Phi Values (byte*) doplasma::sin_x#1 (byte*) doplasma::sin_x#2
Identical Phi Values (byte*) doplasma::angle#2 (byte*) doplasma::angle#4
Identical Phi Values (byte*) doplasma::sin_y#1 (byte*) doplasma::sin_y#2
Identical Phi Values (byte*) doplasma::dist#2 (byte*) doplasma::dist#4
Identical Phi Values (byte*) doplasma::screen#3 (byte*) doplasma::screen#5
Identical Phi Values (byte) doplasma::y#2 (byte) doplasma::y#4
Identical Phi Values (byte) sin_offset_x#11 (byte) sin_offset_x#26
Identical Phi Values (byte) sin_offset_y#11 (byte) sin_offset_y#26
Identical Phi Values (byte*) init_angle_screen::screen#1 (byte*) init_angle_screen::screen#0
Identical Phi Values (byte) init_angle_screen::y#2 (byte) init_angle_screen::y#4
Identical Phi Values (byte*) init_angle_screen::screen_bottomline#2 (byte*) init_angle_screen::screen_bottomline#5
Identical Phi Values (byte*) init_angle_screen::screen_topline#2 (byte*) init_angle_screen::screen_topline#5
Identical Phi Values (byte*) heap_head#28 (byte*) heap_head#26
Identical Phi Values (word*) SQUARES#23 (word*) SQUARES#21
Identical Phi Values (byte*) init_dist_screen::screen#1 (byte*) init_dist_screen::screen#0
Identical Phi Values (byte*) heap_head#20 (byte*) heap_head#15
Identical Phi Values (word*) SQUARES#14 (word*) SQUARES#17
Identical Phi Values (word*) SQUARES#15 (word*) SQUARES#18
Identical Phi Values (word) init_dist_screen::yds#1 (word) init_dist_screen::yds#0
Identical Phi Values (byte) NUM_SQUARES#11 (byte) NUM_SQUARES#34
Identical Phi Values (byte*) init_dist_screen::screen_topline#2 (byte*) init_dist_screen::screen_topline#10
Identical Phi Values (byte*) init_dist_screen::screen_bottomline#2 (byte*) init_dist_screen::screen_bottomline#10
Identical Phi Values (byte) init_dist_screen::y#3 (byte) init_dist_screen::y#10
Identical Phi Values (byte*) heap_head#10 (byte*) heap_head#51
Identical Phi Values (byte*) print_screen#3 (byte*) print_screen#5
Identical Phi Values (byte*) print_line_cursor#16 (byte*) print_line_cursor#14
Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_char_cursor#21
Identical Phi Values (byte*) make_plasma_charset::charset#10 (byte*) make_plasma_charset::charset#0
Identical Phi Values (byte*) print_line_cursor#11 (byte*) print_line_cursor#1
Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_line_cursor#1
Identical Phi Values (byte) make_plasma_charset::s#1 (byte) make_plasma_charset::s#3
Identical Phi Values (word) make_plasma_charset::c#10 (word) make_plasma_charset::c#12
Identical Phi Values (byte) make_plasma_charset::i#2 (byte) make_plasma_charset::i#7
Identical Phi Values (byte*) make_plasma_charset::charset#1 (byte*) make_plasma_charset::charset#6
Identical Phi Values (byte*) print_line_cursor#12 (byte*) print_line_cursor#42
Identical Phi Values (byte*) print_char_cursor#20 (byte*) print_char_cursor#47
Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_char_cursor#1
Identical Phi Values (byte) NUM_SQUARES#12 (byte) NUM_SQUARES#10
Identical Phi Values (byte*) heap_head#11 (byte*) heap_head#19
Identical Phi Values (word*) SQUARES#16 (word*) SQUARES#13
Identical Phi Values (byte*) print_line_cursor#13 (byte*) print_line_cursor#10
Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#15
Identical Phi Values (byte) sin_offset_x#13 (byte) sin_offset_x#14
Identical Phi Values (byte) sin_offset_y#13 (byte) sin_offset_y#14
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values (void*) memset::return#0 (void*) memset::str#3
Identical Phi Values (word*) SQUARES#9 (word*) SQUARES#18
Identical Phi Values (signed word) atan2_16::x#4 (signed word) atan2_16::x#17
Identical Phi Values (signed word) atan2_16::y#4 (signed word) atan2_16::y#19
Successful SSA optimization Pass2IdenticalPhiElimination
Simple Condition (bool~) memset::$1 [6] if((word) memset::num#2<=(byte) 0) goto memset::@1
Simple Condition (bool~) memset::$4 [18] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@4
Simple Condition (bool~) bsearch16u::$5 [36] if((byte) bsearch16u::num#3>(byte) 0) goto bsearch16u::@7
Simple Condition (bool~) bsearch16u::$12 [48] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@9
Simple Condition (bool~) bsearch16u::$0 [51] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@1
Simple Condition (bool~) bsearch16u::$14 [55] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@10
Simple Condition (bool~) init_squares::$5 [100] if((byte) init_squares::i#1!=rangelast(0,init_squares::$2)) goto init_squares::@1
Simple Condition (bool~) atan2_16::$0 [133] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1
Simple Condition (bool~) atan2_16::$5 [142] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4
Simple Condition (bool~) atan2_16::$18 [156] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@16
Simple Condition (bool~) atan2_16::$11 [165] if((signed word) atan2_16::x#17>=(signed byte) 0) goto atan2_16::@7
Simple Condition (bool~) atan2_16::$19 [168] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@19
Simple Condition (bool~) atan2_16::$20 [176] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@25
Simple Condition (bool~) atan2_16::$21 [179] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@26
Simple Condition (bool~) atan2_16::$22 [196] if((byte) atan2_16::i#1!=rangelast(0,atan2_16::$16)) goto atan2_16::@15
Simple Condition (bool~) atan2_16::$14 [200] if((signed word) atan2_16::y#19>=(signed byte) 0) goto atan2_16::@8
Simple Condition (bool~) doplasma::$3 [363] if((byte) doplasma::x#1!=rangelast(0,$27)) goto doplasma::@2
Simple Condition (bool~) doplasma::$4 [370] if((byte) doplasma::y#1!=rangelast(0,$19)) goto doplasma::@1
Simple Condition (bool~) init_angle_screen::$15 [419] if((byte) init_angle_screen::x#1<=(byte) $13) goto init_angle_screen::@2
Simple Condition (bool~) init_angle_screen::$16 [425] if((byte) init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1
Simple Condition (bool~) init_dist_screen::$3 [441] if((byte) init_dist_screen::y2#0>=(byte) $18) goto init_dist_screen::@2
Simple Condition (bool~) init_dist_screen::$11 [462] if((byte) init_dist_screen::x2#0>=(byte) $27) goto init_dist_screen::@6
Simple Condition (bool~) init_dist_screen::$20 [492] if((byte) init_dist_screen::x#1<=(byte) $13) goto init_dist_screen::@5
Simple Condition (bool~) init_dist_screen::$21 [498] if((byte) init_dist_screen::y#1!=rangelast(0,$c)) goto init_dist_screen::@1
Simple Condition (bool~) make_plasma_charset::$6 [528] if((byte~) make_plasma_charset::$4<=(byte) make_plasma_charset::s#3) goto make_plasma_charset::@4
Simple Condition (bool~) make_plasma_charset::$7 [532] if((byte) make_plasma_charset::ii#1<(byte) 8) goto make_plasma_charset::@3
Simple Condition (bool~) make_plasma_charset::$10 [541] if((byte) make_plasma_charset::i#1<(byte) 8) goto make_plasma_charset::@2
Simple Condition (bool~) make_plasma_charset::$13 [546] if((byte~) make_plasma_charset::$11!=(byte) 0) goto make_plasma_charset::@9
Simple Condition (bool~) make_plasma_charset::$15 [550] if((word) make_plasma_charset::c#1<(word) $100) goto make_plasma_charset::@1
Successful SSA optimization Pass2ConditionalJumpSimplification
Negating conditional jump and destination [196] if((byte) atan2_16::i#1==rangelast(0,atan2_16::$16)) goto atan2_16::@17
Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
Constant right-side identified [64] (byte~) bsearch16u::$17 ← (byte) 1 * (const byte) SIZEOF_WORD
Constant right-side identified [71] (byte~) bsearch16u::$18 ← (byte) 1 * (const byte) SIZEOF_WORD
Constant right-side identified [505] (byte[8]) make_plasma_charset::bittab#0 ← { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) D018#0 = (byte*) 53272
Constant (const byte*) COLS#0 = (byte*) 55296
Constant (const byte) BLACK#0 = 0
Constant (const byte*) HEAP_TOP#0 = (byte*) 40960
Constant (const byte) bsearch16u::$17 = 1*SIZEOF_WORD
Constant (const byte) bsearch16u::$18 = 1*SIZEOF_WORD
Constant (const byte) NUM_SQUARES#0 = $ff
Constant (const word*) SQUARES#0 = (word*) 0
Constant (const word) init_squares::sqr#0 = 0
Constant (const byte) init_squares::i#0 = 0
Constant (const byte) CORDIC_ITERATIONS_16#0 = $f
Constant (const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 = kickasm {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++)
        .word 256*2*256*atan(1/pow(2,i))/PI/2
 }}
Constant (const word) atan2_16::angle#0 = 0
Constant (const byte) atan2_16::i#0 = 0
Constant (const byte*) print_line_cursor#0 = (byte*) 1024
Constant (const byte) memset::c#0 = ' '
Constant (const word) memset::num#0 = $3e8
Constant (const word*) SID_VOICE3_FREQ#0 = (word*) 54286
Constant (const byte*) SID_VOICE3_CONTROL#0 = (byte*) 54290
Constant (const byte) SID_CONTROL_NOISE#0 = $80
Constant (const byte*) SID_VOICE3_OSC#0 = (byte*) 54299
Constant (const byte[$200]) SINTABLE#0 = kickasm {{ .for(var i=0;i<$200;i++)
        .byte round(127.5+127.5*sin(2*PI*i/256))
 }}
Constant (const word) malloc::size#1 = $3e8
Constant (const word) malloc::size#2 = $3e8
Constant (const byte*) CHARSET#0 = (byte*) 8192
Constant (const byte*) SCREEN1#0 = (byte*) 10240
Constant (const byte*) SCREEN2#0 = (byte*) 11264
Constant (const word) memset::num#1 = $3e8
Constant (const byte) sin_offset_x#18 = 0
Constant (const byte) sin_offset_y#18 = 0
Constant (const byte) doplasma::y#0 = 0
Constant (const byte) doplasma::x#0 = 0
Constant (const byte) init_angle_screen::y#0 = 0
Constant (const byte) init_angle_screen::x#0 = 0
Constant (const byte) init_angle_screen::xb#0 = $27
Constant (const byte) NUM_SQUARES#3 = $30
Constant (const byte) init_dist_screen::y#0 = 0
Constant (const byte) init_dist_screen::x#0 = 0
Constant (const byte) init_dist_screen::xb#0 = $27
Constant (const byte[8]) make_plasma_charset::bittab#0 = { 1, 2, 4, 8, $10, $20, $40, $80 }
Constant (const word) make_plasma_charset::c#0 = 0
Constant (const byte) make_plasma_charset::i#0 = 0
Constant (const byte) make_plasma_charset::b#0 = 0
Constant (const byte) make_plasma_charset::ii#0 = 0
Constant (const byte) print_char::ch#0 = '.'
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) make_plasma_charset::charset#0 = CHARSET#0
Constant (const byte) memset::c#1 = BLACK#0
Constant (const byte*) doplasma::screen#0 = SCREEN1#0
Constant (const byte*) main::toD0181_screen#0 = SCREEN1#0
Constant (const byte*) main::toD0181_gfx#0 = CHARSET#0
Constant (const byte*) doplasma::screen#1 = SCREEN2#0
Constant (const byte*) main::toD0182_screen#0 = SCREEN2#0
Constant (const byte*) main::toD0182_gfx#0 = CHARSET#0
Successful SSA optimization Pass2ConstantIdentification
Constant value identified (void*)print_line_cursor#0 in [223] (void*) memset::str#0 ← (void*)(const byte*) print_line_cursor#0
Constant value identified (void*)COLS#0 in [281] (void*) memset::str#1 ← (void*)(const byte*) COLS#0
Constant value identified (word)main::toD0181_screen#0 in [298] (word~) main::toD0181_$0#0 ← (word)(const byte*) main::toD0181_screen#0
Constant value identified (word)main::toD0181_gfx#0 in [302] (word~) main::toD0181_$4#0 ← (word)(const byte*) main::toD0181_gfx#0
Constant value identified (word)main::toD0182_screen#0 in [321] (word~) main::toD0182_$0#0 ← (word)(const byte*) main::toD0182_screen#0
Constant value identified (word)main::toD0182_gfx#0 in [325] (word~) main::toD0182_$4#0 ← (word)(const byte*) main::toD0182_gfx#0
Successful SSA optimization Pass2ConstantValues
if() condition always true - replacing block destination [288] if(true) goto main::@2
Successful SSA optimization Pass2ConstantIfs
Resolved ranged next value [361] doplasma::x#1 ← ++ doplasma::x#2 to ++
Resolved ranged comparison value [363] if(doplasma::x#1!=rangelast(0,$27)) goto doplasma::@2 to (number) $28
Resolved ranged next value [368] doplasma::y#1 ← ++ doplasma::y#4 to ++
Resolved ranged comparison value [370] if(doplasma::y#1!=rangelast(0,$19)) goto doplasma::@1 to (number) $1a
Resolved ranged next value [423] init_angle_screen::y#1 ← ++ init_angle_screen::y#4 to ++
Resolved ranged comparison value [425] if(init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1 to (number) $d
Resolved ranged next value [496] init_dist_screen::y#1 ← ++ init_dist_screen::y#10 to ++
Resolved ranged comparison value [498] if(init_dist_screen::y#1!=rangelast(0,$c)) goto init_dist_screen::@1 to (number) $d
Rewriting conditional comparison [419] if((byte) init_angle_screen::x#1<=(byte) $13) goto init_angle_screen::@2
Rewriting conditional comparison [492] if((byte) init_dist_screen::x#1<=(byte) $13) goto init_dist_screen::@5
De-inlining pointer[w] to *(pointer+w)   [538] *((byte*) make_plasma_charset::charset#6 + (word~) make_plasma_charset::$9) ← (byte) make_plasma_charset::b#3
Successful SSA optimization Pass2DeInlineWordDerefIdx
Eliminating unused variable (void*) memset::return#2 and assignment [108] (void*) memset::return#2 ← (void*) memset::str#3
Eliminating unused variable (void*) memset::return#3 and assignment [130] (void*) memset::return#3 ← (void*) memset::str#3
Eliminating unused variable - keeping the phi block (byte*) heap_head#51
Eliminating unused constant (const byte) NUM_SQUARES#0
Eliminating unused constant (const word*) SQUARES#0
Successful SSA optimization PassNEliminateUnusedVars
Removing unused block main::@return
Successful SSA optimization Pass2EliminateUnusedBlocks
Adding number conversion cast (unumber) $28 in if((byte) doplasma::x#1!=(number) $28) goto doplasma::@2
Adding number conversion cast (unumber) $1a in if((byte) doplasma::y#1!=(number) $1a) goto doplasma::@1
Adding number conversion cast (unumber) $13+1 in if((byte) init_angle_screen::x#1<(byte) $13+(number) 1) goto init_angle_screen::@2
Adding number conversion cast (unumber) 1 in if((byte) init_angle_screen::x#1<(unumber)(byte) $13+(number) 1) goto init_angle_screen::@2
Adding number conversion cast (unumber) $d in if((byte) init_angle_screen::y#1!=(number) $d) goto init_angle_screen::@1
Adding number conversion cast (unumber) $13+1 in if((byte) init_dist_screen::x#1<(byte) $13+(number) 1) goto init_dist_screen::@5
Adding number conversion cast (unumber) 1 in if((byte) init_dist_screen::x#1<(unumber)(byte) $13+(number) 1) goto init_dist_screen::@5
Adding number conversion cast (unumber) $d in if((byte) init_dist_screen::y#1!=(number) $d) goto init_dist_screen::@1
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast $28
Simplifying constant integer cast $1a
Simplifying constant integer cast (byte~) init_angle_screen::$3
Simplifying constant integer cast (byte~) init_angle_screen::$6
Simplifying constant integer cast (byte) $13+(unumber)(number) 1
Simplifying constant integer cast 1
Simplifying constant integer cast $d
Simplifying constant integer cast (byte) $13+(unumber)(number) 1
Simplifying constant integer cast 1
Simplifying constant integer cast $d
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) $28
Finalized unsigned number type (byte) $1a
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) $d
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) $d
Successful SSA optimization PassNFinalizeNumberTypeConversions
Self Phi Eliminated (signed word) atan2_16::x#17
Self Phi Eliminated (signed word) atan2_16::y#19
Self Phi Eliminated (byte*) doplasma::sin_x#2
Self Phi Eliminated (byte*) doplasma::sin_y#2
Self Phi Eliminated (byte) sin_offset_x#26
Self Phi Eliminated (byte) sin_offset_y#26
Self Phi Eliminated (word*) SQUARES#18
Self Phi Eliminated (byte) NUM_SQUARES#34
Self Phi Eliminated (byte) make_plasma_charset::s#3
Self Phi Eliminated (word) make_plasma_charset::c#12
Self Phi Eliminated (byte*) make_plasma_charset::charset#6
Self Phi Eliminated (byte*) print_line_cursor#42
Self Phi Eliminated (byte*) print_char_cursor#47
Successful SSA optimization Pass2SelfPhiElimination
Identical Phi Values (signed word) atan2_16::x#17 (signed word) atan2_16::x#0
Identical Phi Values (signed word) atan2_16::y#19 (signed word) atan2_16::y#0
Identical Phi Values (byte*) doplasma::sin_x#2 (byte*) doplasma::sin_x#0
Identical Phi Values (byte*) doplasma::sin_y#2 (byte*) doplasma::sin_y#0
Identical Phi Values (byte) sin_offset_x#26 (byte) sin_offset_x#10
Identical Phi Values (byte) sin_offset_y#26 (byte) sin_offset_y#10
Identical Phi Values (word*) SQUARES#18 (word*) SQUARES#1
Identical Phi Values (byte) NUM_SQUARES#34 (const byte) NUM_SQUARES#3
Identical Phi Values (byte) make_plasma_charset::s#3 (byte) make_plasma_charset::s#0
Identical Phi Values (word) make_plasma_charset::c#12 (word) make_plasma_charset::c#2
Identical Phi Values (byte*) make_plasma_charset::charset#6 (byte*) make_plasma_charset::charset#7
Identical Phi Values (byte*) print_line_cursor#42 (byte*) print_line_cursor#44
Identical Phi Values (byte*) print_char_cursor#47 (byte*) print_char_cursor#49
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [34] (word) malloc::size#0 ← (const byte) NUM_SQUARES#3 * (const byte) SIZEOF_WORD
Constant right-side identified [40] (byte~) init_squares::$2 ← (const byte) NUM_SQUARES#3 - (byte) 1
Constant right-side identified [70] (byte~) atan2_16::$16 ← (const byte) CORDIC_ITERATIONS_16#0 - (byte) 1
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const word) malloc::size#0 = NUM_SQUARES#3*SIZEOF_WORD
Constant (const byte) init_squares::$2 = NUM_SQUARES#3-1
Constant (const byte) bsearch16u::num#2 = NUM_SQUARES#3
Constant (const byte) atan2_16::$16 = CORDIC_ITERATIONS_16#0-1
Constant (const void*) memset::str#0 = (void*)print_line_cursor#0
Constant (const void*) memset::str#1 = (void*)COLS#0
Constant (const word) main::toD0181_$0#0 = (word)main::toD0181_screen#0
Constant (const word) main::toD0181_$4#0 = (word)main::toD0181_gfx#0
Constant (const word) main::toD0182_$0#0 = (word)main::toD0182_screen#0
Constant (const word) main::toD0182_$4#0 = (word)main::toD0182_gfx#0
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value [47] init_squares::i#1 ← ++ init_squares::i#2 to ++
Resolved ranged comparison value [48] if(init_squares::i#1!=rangelast(0,init_squares::$2)) goto init_squares::@1 to (const byte) init_squares::$2+(number) 1
Resolved ranged next value [95] atan2_16::i#1 ← ++ atan2_16::i#2 to ++
Resolved ranged comparison value [96] if(atan2_16::i#1==rangelast(0,atan2_16::$16)) goto atan2_16::@17 to (const byte) atan2_16::$16+(number) 1
Eliminating unused variable - keeping the phi block (byte*) print_line_cursor#44
Successful SSA optimization PassNEliminateUnusedVars
Adding number conversion cast (unumber) init_squares::$2+1 in if((byte) init_squares::i#1!=(const byte) init_squares::$2+(number) 1) goto init_squares::@1
Adding number conversion cast (unumber) 1 in if((byte) init_squares::i#1!=(unumber)(const byte) init_squares::$2+(number) 1) goto init_squares::@1
Adding number conversion cast (unumber) atan2_16::$16+1 in if((byte) atan2_16::i#1==(const byte) atan2_16::$16+(number) 1) goto atan2_16::@17
Adding number conversion cast (unumber) 1 in if((byte) atan2_16::i#1==(unumber)(const byte) atan2_16::$16+(number) 1) goto atan2_16::@17
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast (const byte) init_squares::$2+(unumber)(number) 1
Simplifying constant integer cast 1
Simplifying constant integer cast (const byte) atan2_16::$16+(unumber)(number) 1
Simplifying constant integer cast 1
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 1
Successful SSA optimization PassNFinalizeNumberTypeConversions
Self Phi Eliminated (byte*) make_plasma_charset::charset#7
Successful SSA optimization Pass2SelfPhiElimination
Identical Phi Values (byte*) make_plasma_charset::charset#7 (const byte*) make_plasma_charset::charset#0
Successful SSA optimization Pass2IdenticalPhiElimination
Constant right-side identified [125] (word~) main::toD0181_$1#0 ← (const word) main::toD0181_$0#0 & (word) $3fff
Constant right-side identified [128] (byte~) main::toD0181_$5#0 ← > (const word) main::toD0181_$4#0
Constant right-side identified [134] (word~) main::toD0182_$1#0 ← (const word) main::toD0182_$0#0 & (word) $3fff
Constant right-side identified [137] (byte~) main::toD0182_$5#0 ← > (const word) main::toD0182_$4#0
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const word) main::toD0181_$1#0 = main::toD0181_$0#0&$3fff
Constant (const byte) main::toD0181_$5#0 = >main::toD0181_$4#0
Constant (const word) main::toD0182_$1#0 = main::toD0182_$0#0&$3fff
Constant (const byte) main::toD0182_$5#0 = >main::toD0182_$4#0
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [125] (word~) main::toD0181_$2#0 ← (const word) main::toD0181_$1#0 * (byte) 4
Constant right-side identified [127] (byte~) main::toD0181_$6#0 ← (const byte) main::toD0181_$5#0 / (byte) 4
Constant right-side identified [132] (word~) main::toD0182_$2#0 ← (const word) main::toD0182_$1#0 * (byte) 4
Constant right-side identified [134] (byte~) main::toD0182_$6#0 ← (const byte) main::toD0182_$5#0 / (byte) 4
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const word) main::toD0181_$2#0 = main::toD0181_$1#0*4
Constant (const byte) main::toD0181_$6#0 = main::toD0181_$5#0/4
Constant (const word) main::toD0182_$2#0 = main::toD0182_$1#0*4
Constant (const byte) main::toD0182_$6#0 = main::toD0182_$5#0/4
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [125] (byte~) main::toD0181_$3#0 ← > (const word) main::toD0181_$2#0
Constant right-side identified [126] (byte~) main::toD0181_$7#0 ← (const byte) main::toD0181_$6#0 & (byte) $f
Constant right-side identified [130] (byte~) main::toD0182_$3#0 ← > (const word) main::toD0182_$2#0
Constant right-side identified [131] (byte~) main::toD0182_$7#0 ← (const byte) main::toD0182_$6#0 & (byte) $f
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) main::toD0181_$3#0 = >main::toD0181_$2#0
Constant (const byte) main::toD0181_$7#0 = main::toD0181_$6#0&$f
Constant (const byte) main::toD0182_$3#0 = >main::toD0182_$2#0
Constant (const byte) main::toD0182_$7#0 = main::toD0182_$6#0&$f
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [125] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$3#0 | (const byte) main::toD0181_$7#0
Constant right-side identified [128] (byte) main::toD0182_return#0 ← (const byte) main::toD0182_$3#0 | (const byte) main::toD0182_$7#0
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_$7#0
Constant (const byte) main::toD0182_return#0 = main::toD0182_$3#0|main::toD0182_$7#0
Successful SSA optimization Pass2ConstantIdentification
Inlining Noop Cast [2] (byte*~) memset::$2 ← (byte*)(void*) memset::str#3 keeping memset::str#3
Inlining Noop Cast [4] (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3 keeping memset::str#3
Inlining Noop Cast [13] (void*) malloc::return#0 ← (void*)(byte*) malloc::mem#0 keeping malloc::mem#0
Inlining Noop Cast [20] (signed word~) bsearch16u::$8 ← (signed word)(word) bsearch16u::key#0 keeping bsearch16u::key#0
Inlining Noop Cast [21] (signed word~) bsearch16u::$9 ← (signed word)*((word*) bsearch16u::pivot#0) keeping *(bsearch16u::pivot#0)
Successful SSA optimization Pass2NopCastInlining
Inlining Noop Cast [35] (void*) malloc::return#2 ← (void*)(byte*) malloc::mem#0 keeping malloc::mem#0
Inlining Noop Cast [110] (void*) malloc::return#3 ← (void*)(byte*) malloc::mem#0 keeping malloc::mem#0
Inlining Noop Cast [114] (void*) malloc::return#4 ← (void*)(byte*) malloc::mem#0 keeping malloc::mem#0
Successful SSA optimization Pass2NopCastInlining
Inlining Noop Cast [37] (word*) SQUARES#1 ← (word*)(void*~) init_squares::$1 keeping SQUARES#1
Inlining Noop Cast [112] (byte*) SCREEN_DIST#0 ← (byte*)(void*~) $0 keeping SCREEN_DIST#0
Inlining Noop Cast [116] (byte*) SCREEN_ANGLE#0 ← (byte*)(void*~) $1 keeping SCREEN_ANGLE#0
Inlining Noop Cast [154] (signed word) init_angle_screen::xw#0 ← (signed word)(word~) init_angle_screen::$4 keeping init_angle_screen::xw#0
Inlining Noop Cast [157] (signed word) init_angle_screen::yw#0 ← (signed word)(word~) init_angle_screen::$7 keeping init_angle_screen::yw#0
Successful SSA optimization Pass2NopCastInlining
Rewriting multiplication to use shift [18] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 * (const byte) SIZEOF_WORD
Rewriting multiplication to use shift [42] (byte~) init_squares::$3 ← (byte) init_squares::i#2 * (byte) 2
Rewriting multiplication to use shift [49] (byte~) sqr::$0 ← (byte) sqr::val#2 * (const byte) SIZEOF_WORD
Rewriting division to use shift [58] (word~) sqrt::$1 ← (word~) sqrt::$3 / (const byte) SIZEOF_WORD
Rewriting division to use shift [70] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 / (byte) 2
Rewriting multiplication to use shift [84] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 * (const byte) SIZEOF_WORD
Rewriting multiplication to use shift [88] (byte~) atan2_16::$24 ← (byte) atan2_16::i#2 * (const byte) SIZEOF_WORD
Rewriting multiplication to use shift [151] (byte~) init_angle_screen::$2 ← (byte) init_angle_screen::x#2 * (byte) 2
Rewriting multiplication to use shift [155] (byte~) init_angle_screen::$6 ← (byte) init_angle_screen::y#4 * (byte) 2
Rewriting multiplication to use shift [183] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 * (byte) 2
Rewriting multiplication to use shift [193] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 * (byte) 2
Rewriting multiplication to use shift [235] (word~) make_plasma_charset::$8 ← (word) make_plasma_charset::c#2 * (byte) 8
Successful SSA optimization Pass2MultiplyToShiftRewriting
Inlining constant with var siblings (const byte) memset::c#0
Inlining constant with var siblings (const word) memset::num#0
Inlining constant with var siblings (const word) memset::num#1
Inlining constant with var siblings (const byte) memset::c#1
Inlining constant with var siblings (const void*) memset::str#0
Inlining constant with var siblings (const void*) memset::str#1
Inlining constant with var siblings (const word) malloc::size#1
Inlining constant with var siblings (const word) malloc::size#2
Inlining constant with var siblings (const word) malloc::size#0
Inlining constant with var siblings (const byte) bsearch16u::num#2
Inlining constant with var siblings (const word) init_squares::sqr#0
Inlining constant with var siblings (const byte) init_squares::i#0
Inlining constant with var siblings (const word) atan2_16::angle#0
Inlining constant with var siblings (const byte) atan2_16::i#0
Inlining constant with var siblings (const byte) doplasma::y#0
Inlining constant with var siblings (const byte) doplasma::x#0
Inlining constant with var siblings (const byte*) doplasma::screen#0
Inlining constant with var siblings (const byte*) doplasma::screen#1
Inlining constant with var siblings (const byte) init_angle_screen::y#0
Inlining constant with var siblings (const byte) init_angle_screen::x#0
Inlining constant with var siblings (const byte) init_angle_screen::xb#0
Inlining constant with var siblings (const byte) init_dist_screen::y#0
Inlining constant with var siblings (const byte) init_dist_screen::x#0
Inlining constant with var siblings (const byte) init_dist_screen::xb#0
Inlining constant with var siblings (const word) make_plasma_charset::c#0
Inlining constant with var siblings (const byte) make_plasma_charset::i#0
Inlining constant with var siblings (const byte) make_plasma_charset::b#0
Inlining constant with var siblings (const byte) make_plasma_charset::ii#0
Inlining constant with var siblings (const byte) sin_offset_x#18
Inlining constant with var siblings (const byte) sin_offset_y#18
Constant inlined sin_offset_x#18 = (byte) 0
Constant inlined init_angle_screen::y#0 = (byte) 0
Constant inlined memset::num#1 = (word) $3e8
Constant inlined memset::num#0 = (word) $3e8
Constant inlined atan2_16::angle#0 = (byte) 0
Constant inlined init_dist_screen::x#0 = (byte) 0
Constant inlined doplasma::x#0 = (byte) 0
Constant inlined atan2_16::$16 = (const byte) CORDIC_ITERATIONS_16#0-(byte) 1
Constant inlined make_plasma_charset::ii#0 = (byte) 0
Constant inlined bsearch16u::num#2 = (const byte) NUM_SQUARES#3
Constant inlined main::toD0182_gfx#0 = (const byte*) CHARSET#0
Constant inlined init_angle_screen::xb#0 = (byte) $27
Constant inlined main::toD0182_$4#0 = (word)(const byte*) CHARSET#0
Constant inlined main::toD0182_$6#0 = >(word)(const byte*) CHARSET#0/(byte) 4
Constant inlined main::toD0181_$1#0 = (word)(const byte*) SCREEN1#0&(word) $3fff
Constant inlined main::toD0181_$7#0 = >(word)(const byte*) CHARSET#0/(byte) 4&(byte) $f
Constant inlined doplasma::screen#0 = (const byte*) SCREEN1#0
Constant inlined main::toD0182_$0#0 = (word)(const byte*) SCREEN2#0
Constant inlined init_squares::i#0 = (byte) 0
Constant inlined doplasma::screen#1 = (const byte*) SCREEN2#0
Constant inlined main::toD0181_$3#0 = >(word)(const byte*) SCREEN1#0&(word) $3fff*(byte) 4
Constant inlined main::toD0182_$2#0 = (word)(const byte*) SCREEN2#0&(word) $3fff*(byte) 4
Constant inlined main::toD0181_$5#0 = >(word)(const byte*) CHARSET#0
Constant inlined make_plasma_charset::b#0 = (byte) 0
Constant inlined memset::c#0 = (byte) ' '
Constant inlined memset::c#1 = (const byte) BLACK#0
Constant inlined make_plasma_charset::charset#0 = (const byte*) CHARSET#0
Constant inlined main::toD0181_screen#0 = (const byte*) SCREEN1#0
Constant inlined main::toD0181_gfx#0 = (const byte*) CHARSET#0
Constant inlined init_squares::sqr#0 = (byte) 0
Constant inlined init_angle_screen::x#0 = (byte) 0
Constant inlined init_dist_screen::y#0 = (byte) 0
Constant inlined init_dist_screen::xb#0 = (byte) $27
Constant inlined doplasma::y#0 = (byte) 0
Constant inlined memset::str#1 = (void*)(const byte*) COLS#0
Constant inlined memset::str#0 = (void*)(const byte*) print_line_cursor#0
Constant inlined malloc::size#2 = (word) $3e8
Constant inlined make_plasma_charset::i#0 = (byte) 0
Constant inlined make_plasma_charset::c#0 = (byte) 0
Constant inlined sin_offset_y#18 = (byte) 0
Constant inlined atan2_16::i#0 = (byte) 0
Constant inlined main::toD0182_$3#0 = >(word)(const byte*) SCREEN2#0&(word) $3fff*(byte) 4
Constant inlined main::toD0181_$0#0 = (word)(const byte*) SCREEN1#0
Constant inlined main::toD0182_$5#0 = >(word)(const byte*) CHARSET#0
Constant inlined malloc::size#1 = (word) $3e8
Constant inlined main::toD0182_$7#0 = >(word)(const byte*) CHARSET#0/(byte) 4&(byte) $f
Constant inlined malloc::size#0 = (const byte) NUM_SQUARES#3*(const byte) SIZEOF_WORD
Constant inlined bsearch16u::$17 = (byte) 1*(const byte) SIZEOF_WORD
Constant inlined bsearch16u::$18 = (byte) 1*(const byte) SIZEOF_WORD
Constant inlined main::toD0181_$6#0 = >(word)(const byte*) CHARSET#0/(byte) 4
Constant inlined main::toD0181_$2#0 = (word)(const byte*) SCREEN1#0&(word) $3fff*(byte) 4
Constant inlined main::toD0182_screen#0 = (const byte*) SCREEN2#0
Constant inlined main::toD0181_$4#0 = (word)(const byte*) CHARSET#0
Constant inlined main::toD0182_$1#0 = (word)(const byte*) SCREEN2#0&(word) $3fff
Constant inlined init_squares::$2 = (const byte) NUM_SQUARES#3-(byte) 1
Successful SSA optimization Pass2ConstantInlining
Identical Phi Values (word) memset::num#2 (word) $3e8
Successful SSA optimization Pass2IdenticalPhiElimination
if() condition always false - eliminating [1] if((word) $3e8<=(byte) 0) goto memset::@1
Successful SSA optimization Pass2ConstantIfs
Added new block during phi lifting memset::@6(between memset::@4 and memset::@4)
Added new block during phi lifting bsearch16u::@18(between bsearch16u::@9 and bsearch16u::@10)
Added new block during phi lifting init_squares::@4(between init_squares::@1 and init_squares::@1)
Added new block during phi lifting atan2_16::@34(between atan2_16::@27 and atan2_16::@15)
Added new block during phi lifting atan2_16::@35(between atan2_16::@15 and atan2_16::@17)
Added new block during phi lifting atan2_16::@36(between atan2_16::@27 and atan2_16::@17)
Added new block during phi lifting atan2_16::@37(between atan2_16::@20 and atan2_16::@25)
Added new block during phi lifting atan2_16::@38(between atan2_16::@17 and atan2_16::@7)
Added new block during phi lifting atan2_16::@39(between atan2_16::@7 and atan2_16::@8)
Added new block during phi lifting doplasma::@5(between doplasma::@3 and doplasma::@1)
Added new block during phi lifting doplasma::@6(between doplasma::@2 and doplasma::@2)
Added new block during phi lifting init_angle_screen::@6(between init_angle_screen::@3 and init_angle_screen::@1)
Added new block during phi lifting init_angle_screen::@7(between init_angle_screen::@5 and init_angle_screen::@2)
Added new block during phi lifting init_dist_screen::@19(between init_dist_screen::@11 and init_dist_screen::@1)
Added new block during phi lifting init_dist_screen::@20(between init_dist_screen::@18 and init_dist_screen::@5)
Added new block during phi lifting make_plasma_charset::@15(between make_plasma_charset::@9 and make_plasma_charset::@1)
Added new block during phi lifting make_plasma_charset::@16(between make_plasma_charset::@6 and make_plasma_charset::@2)
Added new block during phi lifting make_plasma_charset::@17(between make_plasma_charset::@4 and make_plasma_charset::@3)
Added new block during phi lifting make_plasma_charset::@18(between make_plasma_charset::@13 and make_plasma_charset::@4)
Added new block during phi lifting make_plasma_charset::@19(between make_plasma_charset::@7 and make_plasma_charset::@9)
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @8
Adding NOP phi() at start of @16
Adding NOP phi() at start of @19
Adding NOP phi() at start of @21
Adding NOP phi() at start of @44
Adding NOP phi() at start of @46
Adding NOP phi() at start of @47
Adding NOP phi() at start of @51
Adding NOP phi() at start of @54
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@10
Adding NOP phi() at start of main::@11
Adding NOP phi() at start of main::@12
Adding NOP phi() at start of main::@13
Adding NOP phi() at start of main::toD0181
Adding NOP phi() at start of main::toD0181_@return
Adding NOP phi() at start of main::@14
Adding NOP phi() at start of main::toD0182
Adding NOP phi() at start of main::toD0182_@return
Adding NOP phi() at start of memset::@1
Adding NOP phi() at start of make_plasma_charset
Adding NOP phi() at start of make_plasma_charset::@11
Adding NOP phi() at start of make_plasma_charset::@12
Adding NOP phi() at start of make_plasma_charset::@8
Adding NOP phi() at start of print_cls
Adding NOP phi() at start of print_cls::@1
Adding NOP phi() at start of init_dist_screen
CALL GRAPH
Calls in [] to malloc:7 malloc:10 main:14 
Calls in [main] to init_dist_screen:18 init_angle_screen:20 make_plasma_charset:22 memset:24 doplasma:29 doplasma:36 
Calls in [make_plasma_charset] to sid_rnd_init:81 print_cls:83 sid_rnd:90 print_char:109 
Calls in [print_cls] to memset:128 
Calls in [init_angle_screen] to atan2_16:147 
Calls in [init_dist_screen] to init_squares:243 sqr:255 sqr:266 sqrt:271 
Calls in [sqrt] to bsearch16u:297 
Calls in [init_squares] to malloc:337 

Created 61 initial phi equivalence classes
Coalesced [9] heap_head#59 ← heap_head#1
Coalesced [27] sin_offset_x#32 ← sin_offset_x#14
Coalesced [28] sin_offset_y#32 ← sin_offset_y#14
Coalesced [34] sin_offset_x#33 ← sin_offset_x#12
Coalesced [35] sin_offset_y#33 ← sin_offset_y#12
Coalesced (already) [41] sin_offset_x#31 ← sin_offset_x#12
Coalesced (already) [42] sin_offset_y#31 ← sin_offset_y#12
Coalesced [48] doplasma::angle#5 ← doplasma::angle#0
Coalesced [49] doplasma::dist#5 ← doplasma::dist#0
Coalesced [50] doplasma::screen#7 ← doplasma::screen#6
Coalesced [65] doplasma::angle#6 ← doplasma::angle#1
Coalesced [66] doplasma::dist#6 ← doplasma::dist#1
Coalesced [67] doplasma::screen#8 ← doplasma::screen#2
Coalesced [68] doplasma::y#5 ← doplasma::y#1
Coalesced [69] doplasma::x#3 ← doplasma::x#1
Coalesced [79] memset::dst#4 ← memset::dst#1
Coalesced [96] make_plasma_charset::b#9 ← make_plasma_charset::b#1
Coalesced [110] print_char_cursor#53 ← print_char_cursor#1
Coalesced [115] make_plasma_charset::c#13 ← make_plasma_charset::c#1
Coalesced [116] print_char_cursor#52 ← print_char_cursor#18
Coalesced (already) [117] print_char_cursor#54 ← print_char_cursor#49
Coalesced [118] make_plasma_charset::i#8 ← make_plasma_charset::i#1
Coalesced [119] make_plasma_charset::ii#6 ← make_plasma_charset::ii#1
Coalesced [120] make_plasma_charset::b#7 ← make_plasma_charset::b#3
Coalesced (already) [121] make_plasma_charset::b#8 ← make_plasma_charset::b#2
Coalesced [136] init_angle_screen::screen_bottomline#6 ← init_angle_screen::screen_bottomline#0
Coalesced [137] init_angle_screen::screen_topline#6 ← init_angle_screen::screen_topline#0
Coalesced [167] init_angle_screen::y#6 ← init_angle_screen::y#1
Coalesced [168] init_angle_screen::screen_bottomline#7 ← init_angle_screen::screen_bottomline#1
Coalesced [169] init_angle_screen::screen_topline#7 ← init_angle_screen::screen_topline#1
Coalesced [170] init_angle_screen::x#4 ← init_angle_screen::x#1
Coalesced [171] init_angle_screen::xb#4 ← init_angle_screen::xb#1
Coalesced [174] atan2_16::yi#17 ← atan2_16::$2
Coalesced [178] atan2_16::xi#14 ← atan2_16::$7
Coalesced [180] atan2_16::yi#19 ← atan2_16::yi#0
Coalesced [181] atan2_16::xi#16 ← atan2_16::xi#0
Coalesced [184] atan2_16::angle#22 ← atan2_16::angle#12
Coalesced [189] atan2_16::angle#27 ← atan2_16::angle#4
Coalesced [193] atan2_16::return#5 ← atan2_16::angle#5
Coalesced [196] atan2_16::return#6 ← atan2_16::angle#11
Coalesced [197] atan2_16::angle#26 ← atan2_16::angle#1
Not coalescing [198] atan2_16::shift#5 ← atan2_16::i#2
Not coalescing [199] atan2_16::xd#10 ← atan2_16::xi#3
Not coalescing [200] atan2_16::yd#10 ← atan2_16::yi#3
Coalesced [206] atan2_16::yd#13 ← atan2_16::yd#2
Coalesced [207] atan2_16::xd#13 ← atan2_16::xd#2
Coalesced [214] atan2_16::yi#21 ← atan2_16::yi#2
Coalesced [215] atan2_16::angle#25 ← atan2_16::angle#3
Coalesced [216] atan2_16::xi#18 ← atan2_16::xi#2
Coalesced [220] atan2_16::yi#18 ← atan2_16::yi#8
Coalesced [221] atan2_16::xi#15 ← atan2_16::xi#8
Coalesced [222] atan2_16::i#12 ← atan2_16::i#1
Coalesced [223] atan2_16::angle#21 ← atan2_16::angle#13
Coalesced (already) [224] atan2_16::angle#23 ← atan2_16::angle#13
Coalesced [229] atan2_16::yi#20 ← atan2_16::yi#1
Coalesced [230] atan2_16::angle#24 ← atan2_16::angle#2
Coalesced [231] atan2_16::xi#17 ← atan2_16::xi#1
Coalesced [232] atan2_16::yd#12 ← atan2_16::yd#3
Coalesced [233] atan2_16::xd#12 ← atan2_16::xd#3
Coalesced [237] atan2_16::shift#6 ← atan2_16::shift#1
Coalesced [238] atan2_16::xd#11 ← atan2_16::xd#1
Coalesced [239] atan2_16::yd#11 ← atan2_16::yd#1
Not coalescing [240] atan2_16::xi#13 ← atan2_16::x#0
Not coalescing [241] atan2_16::yi#16 ← atan2_16::y#0
Coalesced [245] init_dist_screen::screen_topline#15 ← init_dist_screen::screen#0
Coalesced [246] init_dist_screen::screen_bottomline#15 ← init_dist_screen::screen_bottomline#0
Coalesced [251] init_dist_screen::yd#2 ← init_dist_screen::$5
Coalesced [254] sqr::val#3 ← sqr::val#0
Coalesced [262] init_dist_screen::xd#2 ← init_dist_screen::$13
Coalesced [265] sqr::val#4 ← sqr::val#1
Coalesced [286] init_dist_screen::y#14 ← init_dist_screen::y#1
Coalesced [287] init_dist_screen::screen_topline#14 ← init_dist_screen::screen_topline#1
Coalesced [288] init_dist_screen::screen_bottomline#14 ← init_dist_screen::screen_bottomline#1
Coalesced [289] init_dist_screen::x#8 ← init_dist_screen::x#1
Coalesced [290] init_dist_screen::xb#8 ← init_dist_screen::xb#1
Coalesced [292] init_dist_screen::xd#1 ← init_dist_screen::$15
Coalesced [294] init_dist_screen::yd#1 ← init_dist_screen::$7
Coalesced [304] bsearch16u::items#10 ← bsearch16u::items#1
Coalesced [309] bsearch16u::return#9 ← bsearch16u::$2
Coalesced [311] bsearch16u::return#7 ← bsearch16u::return#2
Coalesced [314] bsearch16u::return#8 ← bsearch16u::items#2
Not coalescing [320] bsearch16u::return#6 ← bsearch16u::pivot#0
Coalesced [324] bsearch16u::num#10 ← bsearch16u::num#1
Coalesced [325] bsearch16u::items#12 ← bsearch16u::items#0
Coalesced [328] bsearch16u::num#9 ← bsearch16u::num#0
Coalesced [329] bsearch16u::items#11 ← bsearch16u::items#8
Coalesced [330] bsearch16u::num#11 ← bsearch16u::num#3
Coalesced (already) [331] bsearch16u::items#13 ← bsearch16u::items#2
Coalesced (already) [336] heap_head#60 ← heap_head#1
Coalesced [340] init_squares::squares#4 ← init_squares::squares#0
Coalesced [350] init_squares::sqr#3 ← init_squares::sqr#1
Coalesced [351] init_squares::squares#3 ← init_squares::squares#1
Coalesced [352] init_squares::i#3 ← init_squares::i#1
Not coalescing [355] heap_head#1 ← malloc::mem#0
Coalesced down to 47 phi equivalence classes
Culled Empty Block (label) @8
Culled Empty Block (label) @16
Culled Empty Block (label) @19
Culled Empty Block (label) @21
Culled Empty Block (label) @44
Culled Empty Block (label) @47
Culled Empty Block (label) @54
Culled Empty Block (label) main::@12
Culled Empty Block (label) main::@13
Culled Empty Block (label) main::toD0181_@return
Culled Empty Block (label) main::@14
Culled Empty Block (label) main::toD0182_@return
Culled Empty Block (label) doplasma::@5
Culled Empty Block (label) doplasma::@6
Culled Empty Block (label) memset::@1
Culled Empty Block (label) memset::@6
Culled Empty Block (label) make_plasma_charset::@12
Culled Empty Block (label) make_plasma_charset::@14
Culled Empty Block (label) make_plasma_charset::@15
Culled Empty Block (label) make_plasma_charset::@19
Culled Empty Block (label) make_plasma_charset::@16
Culled Empty Block (label) make_plasma_charset::@17
Culled Empty Block (label) make_plasma_charset::@18
Culled Empty Block (label) print_cls::@1
Culled Empty Block (label) init_angle_screen::@6
Culled Empty Block (label) init_angle_screen::@7
Culled Empty Block (label) atan2_16::@35
Culled Empty Block (label) atan2_16::@39
Culled Empty Block (label) atan2_16::@38
Culled Empty Block (label) atan2_16::@34
Culled Empty Block (label) atan2_16::@36
Culled Empty Block (label) atan2_16::@37
Culled Empty Block (label) init_dist_screen::@19
Culled Empty Block (label) init_dist_screen::@20
Culled Empty Block (label) bsearch16u::@1
Culled Empty Block (label) bsearch16u::@18
Culled Empty Block (label) init_squares::@4
Renumbering block @46 to @1
Renumbering block @51 to @2
Renumbering block @52 to @3
Renumbering block @53 to @4
Renumbering block memset::@2 to memset::@1
Renumbering block memset::@4 to memset::@2
Renumbering block bsearch16u::@2 to bsearch16u::@1
Renumbering block bsearch16u::@3 to bsearch16u::@2
Renumbering block bsearch16u::@6 to bsearch16u::@3
Renumbering block bsearch16u::@7 to bsearch16u::@4
Renumbering block bsearch16u::@8 to bsearch16u::@5
Renumbering block bsearch16u::@9 to bsearch16u::@6
Renumbering block bsearch16u::@10 to bsearch16u::@7
Renumbering block bsearch16u::@13 to bsearch16u::@8
Renumbering block bsearch16u::@15 to bsearch16u::@9
Renumbering block init_squares::@3 to init_squares::@2
Renumbering block sqrt::@2 to sqrt::@1
Renumbering block atan2_16::@13 to atan2_16::@9
Renumbering block atan2_16::@15 to atan2_16::@10
Renumbering block atan2_16::@16 to atan2_16::@11
Renumbering block atan2_16::@17 to atan2_16::@12
Renumbering block atan2_16::@18 to atan2_16::@13
Renumbering block atan2_16::@19 to atan2_16::@14
Renumbering block atan2_16::@20 to atan2_16::@15
Renumbering block atan2_16::@24 to atan2_16::@16
Renumbering block atan2_16::@25 to atan2_16::@17
Renumbering block atan2_16::@26 to atan2_16::@18
Renumbering block atan2_16::@27 to atan2_16::@19
Renumbering block atan2_16::@30 to atan2_16::@20
Renumbering block atan2_16::@33 to atan2_16::@21
Renumbering block main::@7 to main::@3
Renumbering block main::@8 to main::@4
Renumbering block main::@9 to main::@5
Renumbering block main::@10 to main::@6
Renumbering block main::@11 to main::@7
Renumbering block init_angle_screen::@5 to init_angle_screen::@4
Renumbering block init_dist_screen::@11 to init_dist_screen::@9
Renumbering block init_dist_screen::@15 to init_dist_screen::@10
Renumbering block init_dist_screen::@16 to init_dist_screen::@11
Renumbering block init_dist_screen::@17 to init_dist_screen::@12
Renumbering block init_dist_screen::@18 to init_dist_screen::@13
Renumbering block make_plasma_charset::@11 to make_plasma_charset::@10
Renumbering block make_plasma_charset::@13 to make_plasma_charset::@11
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@6
Adding NOP phi() at start of main::@7
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of main::toD0181
Adding NOP phi() at start of main::toD0182
Adding NOP phi() at start of make_plasma_charset
Adding NOP phi() at start of make_plasma_charset::@10
Adding NOP phi() at start of make_plasma_charset::@8
Adding NOP phi() at start of print_cls
Adding NOP phi() at start of init_dist_screen
Adding NOP phi() at start of bsearch16u
Adding NOP phi() at start of init_squares

FINAL CONTROL FLOW GRAPH
@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] phi()
  [2] call malloc 
  to:@3
@3: scope:[]  from @1
  [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0
  [4] call malloc 
  to:@4
@4: scope:[]  from @3
  [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0
  to:@2
@2: scope:[]  from @4
  [6] phi()
  [7] call main 
  to:@end
@end: scope:[]  from @2
  [8] phi()
main: scope:[main]  from @2
  [9] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0
  [10] call init_dist_screen 
  to:main::@5
main::@5: scope:[main]  from main
  [11] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0
  [12] call init_angle_screen 
  to:main::@6
main::@6: scope:[main]  from main::@5
  [13] phi()
  [14] call make_plasma_charset 
  to:main::@7
main::@7: scope:[main]  from main::@6
  [15] phi()
  [16] call memset 
  to:main::@1
main::@1: scope:[main]  from main::@4 main::@7
  [17] (byte) sin_offset_y#14 ← phi( main::@7/(byte) 0 main::@4/(byte) sin_offset_y#12 )
  [17] (byte) sin_offset_x#14 ← phi( main::@7/(byte) 0 main::@4/(byte) sin_offset_x#12 )
  to:main::@2
main::@2: scope:[main]  from main::@1
  [18] phi()
  [19] call doplasma 
  to:main::toD0181
main::toD0181: scope:[main]  from main::@2
  [20] phi()
  to:main::@3
main::@3: scope:[main]  from main::toD0181
  [21] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0
  [22] call doplasma 
  to:main::toD0182
main::toD0182: scope:[main]  from main::@3
  [23] phi()
  to:main::@4
main::@4: scope:[main]  from main::toD0182
  [24] *((const byte*) D018#0) ← (const byte) main::toD0182_return#0
  to:main::@1
doplasma: scope:[doplasma]  from main::@2 main::@3
  [25] (byte*) doplasma::screen#6 ← phi( main::@2/(const byte*) SCREEN1#0 main::@3/(const byte*) SCREEN2#0 )
  [25] (byte) sin_offset_y#10 ← phi( main::@2/(byte) sin_offset_y#14 main::@3/(byte) sin_offset_y#12 )
  [25] (byte) sin_offset_x#10 ← phi( main::@2/(byte) sin_offset_x#14 main::@3/(byte) sin_offset_x#12 )
  [26] (byte*) doplasma::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0
  [27] (byte*) doplasma::dist#0 ← (byte*)(void*) SCREEN_DIST#0
  [28] (byte*) doplasma::sin_x#0 ← (const byte[$200]) SINTABLE#0 + (byte) sin_offset_x#10
  [29] (byte*) doplasma::sin_y#0 ← (const byte[$200]) SINTABLE#0 + (byte) sin_offset_y#10
  to:doplasma::@1
doplasma::@1: scope:[doplasma]  from doplasma doplasma::@3
  [30] (byte) doplasma::y#4 ← phi( doplasma/(byte) 0 doplasma::@3/(byte) doplasma::y#1 )
  [30] (byte*) doplasma::screen#5 ← phi( doplasma/(byte*) doplasma::screen#6 doplasma::@3/(byte*) doplasma::screen#2 )
  [30] (byte*) doplasma::dist#4 ← phi( doplasma/(byte*) doplasma::dist#0 doplasma::@3/(byte*) doplasma::dist#1 )
  [30] (byte*) doplasma::angle#4 ← phi( doplasma/(byte*) doplasma::angle#0 doplasma::@3/(byte*) doplasma::angle#1 )
  to:doplasma::@2
doplasma::@2: scope:[doplasma]  from doplasma::@1 doplasma::@2
  [31] (byte) doplasma::x#2 ← phi( doplasma::@1/(byte) 0 doplasma::@2/(byte) doplasma::x#1 )
  [32] (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#0 + *((byte*) doplasma::angle#4 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#0 + *((byte*) doplasma::dist#4 + (byte) doplasma::x#2))
  [33] *((byte*) doplasma::screen#5 + (byte) doplasma::x#2) ← (byte~) doplasma::$2
  [34] (byte) doplasma::x#1 ← ++ (byte) doplasma::x#2
  [35] if((byte) doplasma::x#1!=(byte) $28) goto doplasma::@2
  to:doplasma::@3
doplasma::@3: scope:[doplasma]  from doplasma::@2
  [36] (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#5 + (byte) $28
  [37] (byte*) doplasma::angle#1 ← (byte*) doplasma::angle#4 + (byte) $28
  [38] (byte*) doplasma::dist#1 ← (byte*) doplasma::dist#4 + (byte) $28
  [39] (byte) doplasma::y#1 ← ++ (byte) doplasma::y#4
  [40] if((byte) doplasma::y#1!=(byte) $1a) goto doplasma::@1
  to:doplasma::@4
doplasma::@4: scope:[doplasma]  from doplasma::@3
  [41] (byte) sin_offset_x#12 ← (byte) sin_offset_x#10 - (byte) 3
  [42] (byte) sin_offset_y#12 ← (byte) sin_offset_y#10 - (byte) 7
  to:doplasma::@return
doplasma::@return: scope:[doplasma]  from doplasma::@4
  [43] return 
  to:@return
memset: scope:[memset]  from main::@7 print_cls
  [44] (byte) memset::c#3 ← phi( main::@7/(const byte) BLACK#0 print_cls/(byte) ' ' )
  [44] (void*) memset::str#3 ← phi( main::@7/(void*)(const byte*) COLS#0 print_cls/(void*)(const byte*) print_line_cursor#0 )
  to:memset::@1
memset::@1: scope:[memset]  from memset
  [45] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8
  [46] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3
  to:memset::@2
memset::@2: scope:[memset]  from memset::@1 memset::@2
  [47] (byte*) memset::dst#2 ← phi( memset::@1/(byte*~) memset::dst#3 memset::@2/(byte*) memset::dst#1 )
  [48] *((byte*) memset::dst#2) ← (byte) memset::c#3
  [49] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
  [50] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2
  to:memset::@return
memset::@return: scope:[memset]  from memset::@2
  [51] return 
  to:@return
make_plasma_charset: scope:[make_plasma_charset]  from main::@6
  [52] phi()
  [53] call sid_rnd_init 
  to:make_plasma_charset::@10
make_plasma_charset::@10: scope:[make_plasma_charset]  from make_plasma_charset
  [54] phi()
  [55] call print_cls 
  to:make_plasma_charset::@1
make_plasma_charset::@1: scope:[make_plasma_charset]  from make_plasma_charset::@10 make_plasma_charset::@9
  [56] (byte*) print_char_cursor#49 ← phi( make_plasma_charset::@10/(const byte*) print_line_cursor#0 make_plasma_charset::@9/(byte*) print_char_cursor#18 )
  [56] (word) make_plasma_charset::c#2 ← phi( make_plasma_charset::@10/(byte) 0 make_plasma_charset::@9/(word) make_plasma_charset::c#1 )
  [57] (byte~) make_plasma_charset::$2 ← < (word) make_plasma_charset::c#2
  [58] (byte) make_plasma_charset::s#0 ← *((const byte[$200]) SINTABLE#0 + (byte~) make_plasma_charset::$2)
  to:make_plasma_charset::@2
make_plasma_charset::@2: scope:[make_plasma_charset]  from make_plasma_charset::@1 make_plasma_charset::@6
  [59] (byte) make_plasma_charset::i#7 ← phi( make_plasma_charset::@1/(byte) 0 make_plasma_charset::@6/(byte) make_plasma_charset::i#1 )
  to:make_plasma_charset::@3
make_plasma_charset::@3: scope:[make_plasma_charset]  from make_plasma_charset::@2 make_plasma_charset::@4
  [60] (byte) make_plasma_charset::b#2 ← phi( make_plasma_charset::@2/(byte) 0 make_plasma_charset::@4/(byte) make_plasma_charset::b#3 )
  [60] (byte) make_plasma_charset::ii#2 ← phi( make_plasma_charset::@2/(byte) 0 make_plasma_charset::@4/(byte) make_plasma_charset::ii#1 )
  [61] call sid_rnd 
  [62] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0
  to:make_plasma_charset::@11
make_plasma_charset::@11: scope:[make_plasma_charset]  from make_plasma_charset::@3
  [63] (byte~) make_plasma_charset::$3 ← (byte) sid_rnd::return#2
  [64] (byte~) make_plasma_charset::$4 ← (byte~) make_plasma_charset::$3 & (byte) $ff
  [65] if((byte~) make_plasma_charset::$4<=(byte) make_plasma_charset::s#0) goto make_plasma_charset::@4
  to:make_plasma_charset::@5
make_plasma_charset::@5: scope:[make_plasma_charset]  from make_plasma_charset::@11
  [66] (byte) make_plasma_charset::b#1 ← (byte) make_plasma_charset::b#2 | *((const byte[8]) make_plasma_charset::bittab#0 + (byte) make_plasma_charset::ii#2)
  to:make_plasma_charset::@4
make_plasma_charset::@4: scope:[make_plasma_charset]  from make_plasma_charset::@11 make_plasma_charset::@5
  [67] (byte) make_plasma_charset::b#3 ← phi( make_plasma_charset::@11/(byte) make_plasma_charset::b#2 make_plasma_charset::@5/(byte) make_plasma_charset::b#1 )
  [68] (byte) make_plasma_charset::ii#1 ← ++ (byte) make_plasma_charset::ii#2
  [69] if((byte) make_plasma_charset::ii#1<(byte) 8) goto make_plasma_charset::@3
  to:make_plasma_charset::@6
make_plasma_charset::@6: scope:[make_plasma_charset]  from make_plasma_charset::@4
  [70] (word~) make_plasma_charset::$8 ← (word) make_plasma_charset::c#2 << (byte) 3
  [71] (word~) make_plasma_charset::$9 ← (word~) make_plasma_charset::$8 + (byte) make_plasma_charset::i#7
  [72] (byte*~) make_plasma_charset::$16 ← (const byte*) CHARSET#0 + (word~) make_plasma_charset::$9
  [73] *((byte*~) make_plasma_charset::$16) ← (byte) make_plasma_charset::b#3
  [74] (byte) make_plasma_charset::i#1 ← ++ (byte) make_plasma_charset::i#7
  [75] if((byte) make_plasma_charset::i#1<(byte) 8) goto make_plasma_charset::@2
  to:make_plasma_charset::@7
make_plasma_charset::@7: scope:[make_plasma_charset]  from make_plasma_charset::@6
  [76] (byte~) make_plasma_charset::$11 ← (word) make_plasma_charset::c#2 & (byte) 7
  [77] if((byte~) make_plasma_charset::$11!=(byte) 0) goto make_plasma_charset::@9
  to:make_plasma_charset::@8
make_plasma_charset::@8: scope:[make_plasma_charset]  from make_plasma_charset::@7
  [78] phi()
  [79] call print_char 
  to:make_plasma_charset::@9
make_plasma_charset::@9: scope:[make_plasma_charset]  from make_plasma_charset::@7 make_plasma_charset::@8
  [80] (byte*) print_char_cursor#18 ← phi( make_plasma_charset::@8/(byte*) print_char_cursor#1 make_plasma_charset::@7/(byte*) print_char_cursor#49 )
  [81] (word) make_plasma_charset::c#1 ← ++ (word) make_plasma_charset::c#2
  [82] if((word) make_plasma_charset::c#1<(word) $100) goto make_plasma_charset::@1
  to:make_plasma_charset::@return
make_plasma_charset::@return: scope:[make_plasma_charset]  from make_plasma_charset::@9
  [83] return 
  to:@return
print_char: scope:[print_char]  from make_plasma_charset::@8
  [84] *((byte*) print_char_cursor#49) ← (const byte) print_char::ch#0
  [85] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#49
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [86] return 
  to:@return
sid_rnd: scope:[sid_rnd]  from make_plasma_charset::@3
  [87] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0)
  to:sid_rnd::@return
sid_rnd::@return: scope:[sid_rnd]  from sid_rnd
  [88] return 
  to:@return
print_cls: scope:[print_cls]  from make_plasma_charset::@10
  [89] phi()
  [90] call memset 
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls
  [91] return 
  to:@return
sid_rnd_init: scope:[sid_rnd_init]  from make_plasma_charset
  [92] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff
  [93] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0
  to:sid_rnd_init::@return
sid_rnd_init::@return: scope:[sid_rnd_init]  from sid_rnd_init
  [94] return 
  to:@return
init_angle_screen: scope:[init_angle_screen]  from main::@5
  [95] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c
  [96] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c
  to:init_angle_screen::@1
init_angle_screen::@1: scope:[init_angle_screen]  from init_angle_screen init_angle_screen::@3
  [97] (byte*) init_angle_screen::screen_topline#5 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_topline#0 init_angle_screen::@3/(byte*) init_angle_screen::screen_topline#1 )
  [97] (byte*) init_angle_screen::screen_bottomline#5 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_bottomline#0 init_angle_screen::@3/(byte*) init_angle_screen::screen_bottomline#1 )
  [97] (byte) init_angle_screen::y#4 ← phi( init_angle_screen/(byte) 0 init_angle_screen::@3/(byte) init_angle_screen::y#1 )
  to:init_angle_screen::@2
init_angle_screen::@2: scope:[init_angle_screen]  from init_angle_screen::@1 init_angle_screen::@4
  [98] (byte) init_angle_screen::xb#2 ← phi( init_angle_screen::@1/(byte) $27 init_angle_screen::@4/(byte) init_angle_screen::xb#1 )
  [98] (byte) init_angle_screen::x#2 ← phi( init_angle_screen::@1/(byte) 0 init_angle_screen::@4/(byte) init_angle_screen::x#1 )
  [99] (byte~) init_angle_screen::$2 ← (byte) init_angle_screen::x#2 << (byte) 1
  [100] (byte~) init_angle_screen::$3 ← (byte) $27 - (byte~) init_angle_screen::$2
  [101] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$3 w= (byte) 0
  [102] (byte~) init_angle_screen::$6 ← (byte) init_angle_screen::y#4 << (byte) 1
  [103] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$6 w= (byte) 0
  [104] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0
  [105] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0
  [106] call atan2_16 
  [107] (word) atan2_16::return#2 ← (word) atan2_16::return#0
  to:init_angle_screen::@4
init_angle_screen::@4: scope:[init_angle_screen]  from init_angle_screen::@2
  [108] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2
  [109] (word~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (byte) $80
  [110] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$10
  [111] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0
  [112] (byte~) init_angle_screen::$12 ← - (byte) init_angle_screen::ang_w#0
  [113] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$12
  [114] (byte~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0
  [115] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13
  [116] (byte~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0
  [117] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14
  [118] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2
  [119] (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2
  [120] if((byte) init_angle_screen::x#1<(byte) $13+(byte) 1) goto init_angle_screen::@2
  to:init_angle_screen::@3
init_angle_screen::@3: scope:[init_angle_screen]  from init_angle_screen::@4
  [121] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#5 - (byte) $28
  [122] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#5 + (byte) $28
  [123] (byte) init_angle_screen::y#1 ← ++ (byte) init_angle_screen::y#4
  [124] if((byte) init_angle_screen::y#1!=(byte) $d) goto init_angle_screen::@1
  to:init_angle_screen::@return
init_angle_screen::@return: scope:[init_angle_screen]  from init_angle_screen::@3
  [125] return 
  to:@return
atan2_16: scope:[atan2_16]  from init_angle_screen::@2
  [126] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1
  to:atan2_16::@2
atan2_16::@2: scope:[atan2_16]  from atan2_16
  [127] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0
  to:atan2_16::@3
atan2_16::@3: scope:[atan2_16]  from atan2_16::@1 atan2_16::@2
  [128] (signed word) atan2_16::yi#0 ← phi( atan2_16::@1/(signed word~) atan2_16::yi#16 atan2_16::@2/(signed word~) atan2_16::$2 )
  [129] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4
  to:atan2_16::@5
atan2_16::@5: scope:[atan2_16]  from atan2_16::@3
  [130] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0
  to:atan2_16::@6
atan2_16::@6: scope:[atan2_16]  from atan2_16::@4 atan2_16::@5
  [131] (signed word) atan2_16::xi#0 ← phi( atan2_16::@4/(signed word~) atan2_16::xi#13 atan2_16::@5/(signed word~) atan2_16::$7 )
  to:atan2_16::@10
atan2_16::@10: scope:[atan2_16]  from atan2_16::@19 atan2_16::@6
  [132] (word) atan2_16::angle#12 ← phi( atan2_16::@19/(word) atan2_16::angle#13 atan2_16::@6/(byte) 0 )
  [132] (byte) atan2_16::i#2 ← phi( atan2_16::@19/(byte) atan2_16::i#1 atan2_16::@6/(byte) 0 )
  [132] (signed word) atan2_16::xi#3 ← phi( atan2_16::@19/(signed word) atan2_16::xi#8 atan2_16::@6/(signed word) atan2_16::xi#0 )
  [132] (signed word) atan2_16::yi#3 ← phi( atan2_16::@19/(signed word) atan2_16::yi#8 atan2_16::@6/(signed word) atan2_16::yi#0 )
  [133] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11
  to:atan2_16::@12
atan2_16::@12: scope:[atan2_16]  from atan2_16::@10 atan2_16::@19
  [134] (word) atan2_16::angle#6 ← phi( atan2_16::@10/(word) atan2_16::angle#12 atan2_16::@19/(word) atan2_16::angle#13 )
  [135] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1
  [136] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7
  to:atan2_16::@21
atan2_16::@21: scope:[atan2_16]  from atan2_16::@12
  [137] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1
  to:atan2_16::@7
atan2_16::@7: scope:[atan2_16]  from atan2_16::@12 atan2_16::@21
  [138] (word) atan2_16::angle#11 ← phi( atan2_16::@12/(word) atan2_16::angle#1 atan2_16::@21/(word) atan2_16::angle#4 )
  [139] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8
  to:atan2_16::@9
atan2_16::@9: scope:[atan2_16]  from atan2_16::@7
  [140] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11
  to:atan2_16::@8
atan2_16::@8: scope:[atan2_16]  from atan2_16::@7 atan2_16::@9
  [141] (word) atan2_16::return#0 ← phi( atan2_16::@9/(word) atan2_16::angle#5 atan2_16::@7/(word) atan2_16::angle#11 )
  to:atan2_16::@return
atan2_16::@return: scope:[atan2_16]  from atan2_16::@8
  [142] return 
  to:@return
atan2_16::@11: scope:[atan2_16]  from atan2_16::@10
  [143] (byte~) atan2_16::shift#5 ← (byte) atan2_16::i#2
  [144] (signed word~) atan2_16::xd#10 ← (signed word) atan2_16::xi#3
  [145] (signed word~) atan2_16::yd#10 ← (signed word) atan2_16::yi#3
  to:atan2_16::@13
atan2_16::@13: scope:[atan2_16]  from atan2_16::@11 atan2_16::@14
  [146] (signed word) atan2_16::yd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::yd#10 atan2_16::@14/(signed word) atan2_16::yd#1 )
  [146] (signed word) atan2_16::xd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::xd#10 atan2_16::@14/(signed word) atan2_16::xd#1 )
  [146] (byte) atan2_16::shift#2 ← phi( atan2_16::@11/(byte~) atan2_16::shift#5 atan2_16::@14/(byte) atan2_16::shift#1 )
  [147] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14
  to:atan2_16::@15
atan2_16::@15: scope:[atan2_16]  from atan2_16::@13
  [148] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17
  to:atan2_16::@16
atan2_16::@16: scope:[atan2_16]  from atan2_16::@15
  [149] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1
  [150] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1
  to:atan2_16::@17
atan2_16::@17: scope:[atan2_16]  from atan2_16::@15 atan2_16::@16
  [151] (signed word) atan2_16::xd#5 ← phi( atan2_16::@15/(signed word) atan2_16::xd#3 atan2_16::@16/(signed word) atan2_16::xd#2 )
  [151] (signed word) atan2_16::yd#5 ← phi( atan2_16::@15/(signed word) atan2_16::yd#3 atan2_16::@16/(signed word) atan2_16::yd#2 )
  [152] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18
  to:atan2_16::@20
atan2_16::@20: scope:[atan2_16]  from atan2_16::@17
  [153] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5
  [154] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5
  [155] (byte~) atan2_16::$24 ← (byte) atan2_16::i#2 << (byte) 1
  [156] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$24)
  to:atan2_16::@19
atan2_16::@19: scope:[atan2_16]  from atan2_16::@18 atan2_16::@20
  [157] (signed word) atan2_16::xi#8 ← phi( atan2_16::@18/(signed word) atan2_16::xi#1 atan2_16::@20/(signed word) atan2_16::xi#2 )
  [157] (word) atan2_16::angle#13 ← phi( atan2_16::@18/(word) atan2_16::angle#2 atan2_16::@20/(word) atan2_16::angle#3 )
  [157] (signed word) atan2_16::yi#8 ← phi( atan2_16::@18/(signed word) atan2_16::yi#1 atan2_16::@20/(signed word) atan2_16::yi#2 )
  [158] (byte) atan2_16::i#1 ← ++ (byte) atan2_16::i#2
  [159] if((byte) atan2_16::i#1==(const byte) CORDIC_ITERATIONS_16#0-(byte) 1+(byte) 1) goto atan2_16::@12
  to:atan2_16::@10
atan2_16::@18: scope:[atan2_16]  from atan2_16::@17
  [160] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5
  [161] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5
  [162] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1
  [163] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$23)
  to:atan2_16::@19
atan2_16::@14: scope:[atan2_16]  from atan2_16::@13
  [164] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2
  [165] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2
  [166] (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#2 - (byte) 2
  to:atan2_16::@13
atan2_16::@4: scope:[atan2_16]  from atan2_16::@3
  [167] (signed word~) atan2_16::xi#13 ← (signed word) atan2_16::x#0
  to:atan2_16::@6
atan2_16::@1: scope:[atan2_16]  from atan2_16
  [168] (signed word~) atan2_16::yi#16 ← (signed word) atan2_16::y#0
  to:atan2_16::@3
init_dist_screen: scope:[init_dist_screen]  from main
  [169] phi()
  [170] call init_squares 
  to:init_dist_screen::@10
init_dist_screen::@10: scope:[init_dist_screen]  from init_dist_screen
  [171] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18
  to:init_dist_screen::@1
init_dist_screen::@1: scope:[init_dist_screen]  from init_dist_screen::@10 init_dist_screen::@9
  [172] (byte*) init_dist_screen::screen_bottomline#10 ← phi( init_dist_screen::@9/(byte*) init_dist_screen::screen_bottomline#1 init_dist_screen::@10/(byte*) init_dist_screen::screen_bottomline#0 )
  [172] (byte*) init_dist_screen::screen_topline#10 ← phi( init_dist_screen::@9/(byte*) init_dist_screen::screen_topline#1 init_dist_screen::@10/(byte*) init_dist_screen::screen#0 )
  [172] (byte) init_dist_screen::y#10 ← phi( init_dist_screen::@9/(byte) init_dist_screen::y#1 init_dist_screen::@10/(byte) 0 )
  [173] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1
  [174] if((byte) init_dist_screen::y2#0>=(byte) $18) goto init_dist_screen::@2
  to:init_dist_screen::@3
init_dist_screen::@3: scope:[init_dist_screen]  from init_dist_screen::@1
  [175] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) 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
  [176] (byte) init_dist_screen::yd#0 ← phi( init_dist_screen::@2/(byte~) init_dist_screen::$7 init_dist_screen::@3/(byte~) init_dist_screen::$5 )
  [177] (byte) sqr::val#0 ← (byte) init_dist_screen::yd#0
  [178] call sqr 
  [179] (word) sqr::return#2 ← (word) sqr::return#0
  to:init_dist_screen::@11
init_dist_screen::@11: scope:[init_dist_screen]  from init_dist_screen::@4
  [180] (word) init_dist_screen::yds#0 ← (word) 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
  [181] (byte) init_dist_screen::xb#2 ← phi( init_dist_screen::@11/(byte) $27 init_dist_screen::@13/(byte) init_dist_screen::xb#1 )
  [181] (byte) init_dist_screen::x#2 ← phi( init_dist_screen::@11/(byte) 0 init_dist_screen::@13/(byte) init_dist_screen::x#1 )
  [182] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1
  [183] if((byte) init_dist_screen::x2#0>=(byte) $27) goto init_dist_screen::@6
  to:init_dist_screen::@7
init_dist_screen::@7: scope:[init_dist_screen]  from init_dist_screen::@5
  [184] (byte~) init_dist_screen::$13 ← (byte) $27 - (byte) init_dist_screen::x2#0
  to:init_dist_screen::@8
init_dist_screen::@8: scope:[init_dist_screen]  from init_dist_screen::@6 init_dist_screen::@7
  [185] (byte) init_dist_screen::xd#0 ← phi( init_dist_screen::@6/(byte~) init_dist_screen::$15 init_dist_screen::@7/(byte~) init_dist_screen::$13 )
  [186] (byte) sqr::val#1 ← (byte) init_dist_screen::xd#0
  [187] call sqr 
  [188] (word) sqr::return#3 ← (word) sqr::return#0
  to:init_dist_screen::@12
init_dist_screen::@12: scope:[init_dist_screen]  from init_dist_screen::@8
  [189] (word) init_dist_screen::xds#0 ← (word) sqr::return#3
  [190] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0
  [191] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0
  [192] call sqrt 
  [193] (byte) sqrt::return#2 ← (byte) sqrt::return#0
  to:init_dist_screen::@13
init_dist_screen::@13: scope:[init_dist_screen]  from init_dist_screen::@12
  [194] (byte) init_dist_screen::d#0 ← (byte) sqrt::return#2
  [195] *((byte*) init_dist_screen::screen_topline#10 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0
  [196] *((byte*) init_dist_screen::screen_bottomline#10 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0
  [197] *((byte*) init_dist_screen::screen_topline#10 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0
  [198] *((byte*) init_dist_screen::screen_bottomline#10 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0
  [199] (byte) init_dist_screen::x#1 ← ++ (byte) init_dist_screen::x#2
  [200] (byte) init_dist_screen::xb#1 ← -- (byte) init_dist_screen::xb#2
  [201] if((byte) init_dist_screen::x#1<(byte) $13+(byte) 1) goto init_dist_screen::@5
  to:init_dist_screen::@9
init_dist_screen::@9: scope:[init_dist_screen]  from init_dist_screen::@13
  [202] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#10 + (byte) $28
  [203] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#10 - (byte) $28
  [204] (byte) init_dist_screen::y#1 ← ++ (byte) init_dist_screen::y#10
  [205] if((byte) init_dist_screen::y#1!=(byte) $d) goto init_dist_screen::@1
  to:init_dist_screen::@return
init_dist_screen::@return: scope:[init_dist_screen]  from init_dist_screen::@9
  [206] return 
  to:@return
init_dist_screen::@6: scope:[init_dist_screen]  from init_dist_screen::@5
  [207] (byte~) init_dist_screen::$15 ← (byte) init_dist_screen::x2#0 - (byte) $27
  to:init_dist_screen::@8
init_dist_screen::@2: scope:[init_dist_screen]  from init_dist_screen::@1
  [208] (byte~) init_dist_screen::$7 ← (byte) init_dist_screen::y2#0 - (byte) $18
  to:init_dist_screen::@4
sqrt: scope:[sqrt]  from init_dist_screen::@12
  [209] (word) bsearch16u::key#0 ← (word) sqrt::val#0
  [210] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1
  [211] call bsearch16u 
  [212] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1
  to:sqrt::@1
sqrt::@1: scope:[sqrt]  from sqrt
  [213] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3
  [214] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1
  [215] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1
  [216] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1
  to:sqrt::@return
sqrt::@return: scope:[sqrt]  from sqrt::@1
  [217] return 
  to:@return
bsearch16u: scope:[bsearch16u]  from sqrt
  [218] phi()
  to:bsearch16u::@3
bsearch16u::@3: scope:[bsearch16u]  from bsearch16u bsearch16u::@7
  [219] (word*) bsearch16u::items#2 ← phi( bsearch16u/(word*) bsearch16u::items#1 bsearch16u::@7/(word*) bsearch16u::items#8 )
  [219] (byte) bsearch16u::num#3 ← phi( bsearch16u/(const byte) NUM_SQUARES#3 bsearch16u::@7/(byte) bsearch16u::num#0 )
  [220] if((byte) bsearch16u::num#3>(byte) 0) goto bsearch16u::@4
  to:bsearch16u::@5
bsearch16u::@5: scope:[bsearch16u]  from bsearch16u::@3
  [221] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2
  to:bsearch16u::@1
bsearch16u::@1: scope:[bsearch16u]  from bsearch16u::@5
  [222] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD
  to:bsearch16u::@2
bsearch16u::@2: scope:[bsearch16u]  from bsearch16u::@1 bsearch16u::@5
  [223] (word*) bsearch16u::return#2 ← phi( bsearch16u::@5/(word*) bsearch16u::items#2 bsearch16u::@1/(word*~) bsearch16u::$2 )
  to:bsearch16u::@return
bsearch16u::@return: scope:[bsearch16u]  from bsearch16u::@2 bsearch16u::@8
  [224] (word*) bsearch16u::return#1 ← phi( bsearch16u::@8/(word*~) bsearch16u::return#6 bsearch16u::@2/(word*) bsearch16u::return#2 )
  [225] return 
  to:@return
bsearch16u::@4: scope:[bsearch16u]  from bsearch16u::@3
  [226] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1
  [227] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1
  [228] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16
  [229] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0)
  [230] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6
  to:bsearch16u::@8
bsearch16u::@8: scope:[bsearch16u]  from bsearch16u::@4
  [231] (word*~) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0
  to:bsearch16u::@return
bsearch16u::@6: scope:[bsearch16u]  from bsearch16u::@4
  [232] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7
  to:bsearch16u::@9
bsearch16u::@9: scope:[bsearch16u]  from bsearch16u::@6
  [233] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD
  [234] (byte) bsearch16u::num#1 ← -- (byte) bsearch16u::num#3
  to:bsearch16u::@7
bsearch16u::@7: scope:[bsearch16u]  from bsearch16u::@6 bsearch16u::@9
  [235] (word*) bsearch16u::items#8 ← phi( bsearch16u::@9/(word*) bsearch16u::items#0 bsearch16u::@6/(word*) bsearch16u::items#2 )
  [235] (byte) bsearch16u::num#5 ← phi( bsearch16u::@9/(byte) bsearch16u::num#1 bsearch16u::@6/(byte) bsearch16u::num#3 )
  [236] (byte) bsearch16u::num#0 ← (byte) bsearch16u::num#5 >> (byte) 1
  to:bsearch16u::@3
sqr: scope:[sqr]  from init_dist_screen::@4 init_dist_screen::@8
  [237] (byte) sqr::val#2 ← phi( init_dist_screen::@4/(byte) sqr::val#0 init_dist_screen::@8/(byte) sqr::val#1 )
  [238] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1
  [239] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0)
  to:sqr::@return
sqr::@return: scope:[sqr]  from sqr
  [240] return 
  to:@return
init_squares: scope:[init_squares]  from init_dist_screen
  [241] phi()
  [242] call malloc 
  to:init_squares::@2
init_squares::@2: scope:[init_squares]  from init_squares
  [243] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0
  [244] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1
  to:init_squares::@1
init_squares::@1: scope:[init_squares]  from init_squares::@1 init_squares::@2
  [245] (byte) init_squares::i#2 ← phi( init_squares::@1/(byte) init_squares::i#1 init_squares::@2/(byte) 0 )
  [245] (word*) init_squares::squares#2 ← phi( init_squares::@1/(word*) init_squares::squares#1 init_squares::@2/(word*) init_squares::squares#0 )
  [245] (word) init_squares::sqr#2 ← phi( init_squares::@1/(word) init_squares::sqr#1 init_squares::@2/(byte) 0 )
  [246] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2
  [247] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD
  [248] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1
  [249] (byte~) init_squares::$4 ← (byte~) init_squares::$3 + (byte) 1
  [250] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4
  [251] (byte) init_squares::i#1 ← ++ (byte) init_squares::i#2
  [252] if((byte) init_squares::i#1!=(const byte) NUM_SQUARES#3-(byte) 1+(byte) 1) goto init_squares::@1
  to:init_squares::@return
init_squares::@return: scope:[init_squares]  from init_squares::@1
  [253] return 
  to:@return
malloc: scope:[malloc]  from @1 @3 init_squares
  [254] (word) malloc::size#3 ← phi( @1/(word) $3e8 @3/(word) $3e8 init_squares/(const byte) NUM_SQUARES#3*(const byte) SIZEOF_WORD )
  [254] (byte*) heap_head#12 ← phi( @1/(const byte*) HEAP_TOP#0 @3/(byte*) heap_head#1 init_squares/(byte*) heap_head#1 )
  [255] (byte*) malloc::mem#0 ← (byte*) heap_head#12 - (word) malloc::size#3
  [256] (byte*) heap_head#1 ← (byte*) malloc::mem#0
  to:malloc::@return
malloc::@return: scope:[malloc]  from malloc
  [257] return 
  to:@return


VARIABLE REGISTER WEIGHTS
(byte) BLACK
(byte*) CHARSET
(byte*) COLS
(word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16
(byte) CORDIC_ITERATIONS_16
(byte*) D018
(byte*) HEAP_TOP
(byte) NUM_SQUARES
(byte*) SCREEN1
(byte*) SCREEN2
(byte*) SCREEN_ANGLE
(void*) SCREEN_ANGLE#0 0.05405405405405406
(byte*) SCREEN_DIST
(void*) SCREEN_DIST#0 0.05128205128205128
(byte) SID_CONTROL_NOISE
(byte*) SID_VOICE3_CONTROL
(word*) SID_VOICE3_FREQ
(byte*) SID_VOICE3_OSC
(byte[$200]) SINTABLE
(word*) SQUARES
(void*) SQUARES#1 0.03225806451612903
(word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y)
(signed word~) atan2_16::$2 4.0
(byte~) atan2_16::$23 2002.0
(byte~) atan2_16::$24 2002.0
(signed word~) atan2_16::$7 4.0
(word) atan2_16::angle
(word) atan2_16::angle#1 3.0
(word) atan2_16::angle#11 4.0
(word) atan2_16::angle#12 190.66666666666666
(word) atan2_16::angle#13 1334.6666666666667
(word) atan2_16::angle#2 2002.0
(word) atan2_16::angle#3 2002.0
(word) atan2_16::angle#4 4.0
(word) atan2_16::angle#5 4.0
(word) atan2_16::angle#6 2004.0
(byte) atan2_16::i
(byte) atan2_16::i#1 1501.5
(byte) atan2_16::i#2 208.54166666666669
(word) atan2_16::return
(word) atan2_16::return#0 34.99999999999999
(word) atan2_16::return#2 202.0
(byte) atan2_16::shift
(byte) atan2_16::shift#1 20002.0
(byte) atan2_16::shift#2 8001.25
(byte~) atan2_16::shift#5 667.3333333333334
(signed word) atan2_16::x
(signed word) atan2_16::x#0 2.8684210526315796
(signed word) atan2_16::xd
(signed word) atan2_16::xd#1 6667.333333333333
(signed word~) atan2_16::xd#10 1001.0
(signed word) atan2_16::xd#2 1001.0
(signed word) atan2_16::xd#3 7668.333333333332
(signed word) atan2_16::xd#5 1001.0
(signed word) atan2_16::xi
(signed word) atan2_16::xi#0 6.0
(signed word) atan2_16::xi#1 500.5
(signed word~) atan2_16::xi#13 4.0
(signed word) atan2_16::xi#2 500.5
(signed word) atan2_16::xi#3 267.0666666666667
(signed word) atan2_16::xi#8 1001.0
(signed word) atan2_16::y
(signed word) atan2_16::y#0 2.724999999999999
(signed word) atan2_16::yd
(signed word) atan2_16::yd#1 10001.0
(signed word~) atan2_16::yd#10 2002.0
(signed word) atan2_16::yd#2 2002.0
(signed word) atan2_16::yd#3 4601.0
(signed word) atan2_16::yd#5 2002.0
(signed word) atan2_16::yi
(signed word) atan2_16::yi#0 1.2000000000000002
(signed word) atan2_16::yi#1 667.3333333333334
(signed word~) atan2_16::yi#16 4.0
(signed word) atan2_16::yi#2 667.3333333333334
(signed word) atan2_16::yi#3 353.4117647058823
(signed word) atan2_16::yi#8 1001.0
(word*()) bsearch16u((word) bsearch16u::key , (word*) bsearch16u::items , (byte) bsearch16u::num)
(byte~) bsearch16u::$16 2002.0
(word*~) bsearch16u::$2 4.0
(byte~) bsearch16u::$6 2002.0
(word*) bsearch16u::items
(word*) bsearch16u::items#0 1001.0
(word*) bsearch16u::items#1 2.0
(word*) bsearch16u::items#2 334.5555555555556
(word*) bsearch16u::items#8 1501.5
(word) bsearch16u::key
(word) bsearch16u::key#0 0.26666666666666666
(byte) bsearch16u::num
(byte) bsearch16u::num#0 2002.0
(byte) bsearch16u::num#1 2002.0
(byte) bsearch16u::num#3 556.1111111111111
(byte) bsearch16u::num#5 3003.0
(word*) bsearch16u::pivot
(word*) bsearch16u::pivot#0 501.0
(signed word) bsearch16u::result
(signed word) bsearch16u::result#0 1501.5
(word*) bsearch16u::return
(word*) bsearch16u::return#1 2.0
(word*) bsearch16u::return#2 6.0
(word*) bsearch16u::return#3 4.0
(word*~) bsearch16u::return#6 4.0
(void()) doplasma((byte*) doplasma::screen)
(byte~) doplasma::$2 2002.0
(byte*) doplasma::angle
(byte*) doplasma::angle#0 1.0
(byte*) doplasma::angle#1 50.5
(byte*) doplasma::angle#4 172.14285714285714
(byte*) doplasma::dist
(byte*) doplasma::dist#0 1.3333333333333333
(byte*) doplasma::dist#1 67.33333333333333
(byte*) doplasma::dist#4 150.625
(byte*) doplasma::screen
(byte*) doplasma::screen#2 40.4
(byte*) doplasma::screen#5 200.83333333333334
(byte*) doplasma::screen#6 0.4
(byte*) doplasma::sin_x
(byte*) doplasma::sin_x#0 77.15384615384616
(byte*) doplasma::sin_y
(byte*) doplasma::sin_y#0 83.58333333333334
(byte) doplasma::x
(byte) doplasma::x#1 1501.5
(byte) doplasma::x#2 1668.3333333333335
(byte) doplasma::y
(byte) doplasma::y#1 151.5
(byte) doplasma::y#4 22.444444444444443
(byte*) heap_head
(byte*) heap_head#1 0.6000000000000001
(byte*) heap_head#12 6.0
(void()) init_angle_screen((byte*) init_angle_screen::screen)
(word~) init_angle_screen::$10 202.0
(byte~) init_angle_screen::$12 202.0
(byte~) init_angle_screen::$13 202.0
(byte~) init_angle_screen::$14 202.0
(byte~) init_angle_screen::$2 202.0
(byte~) init_angle_screen::$3 202.0
(byte~) init_angle_screen::$6 202.0
(byte) init_angle_screen::ang_w
(byte) init_angle_screen::ang_w#0 84.16666666666666
(word) init_angle_screen::angle_w
(word) init_angle_screen::angle_w#0 202.0
(byte*) init_angle_screen::screen
(byte*) init_angle_screen::screen#0 3.0
(byte*) init_angle_screen::screen_bottomline
(byte*) init_angle_screen::screen_bottomline#0 4.0
(byte*) init_angle_screen::screen_bottomline#1 7.333333333333333
(byte*) init_angle_screen::screen_bottomline#5 9.040000000000001
(byte*) init_angle_screen::screen_topline
(byte*) init_angle_screen::screen_topline#0 2.0
(byte*) init_angle_screen::screen_topline#1 5.5
(byte*) init_angle_screen::screen_topline#5 9.416666666666666
(byte) init_angle_screen::x
(byte) init_angle_screen::x#1 101.0
(byte) init_angle_screen::x#2 25.25
(byte) init_angle_screen::xb
(byte) init_angle_screen::xb#1 101.0
(byte) init_angle_screen::xb#2 19.238095238095237
(signed word) init_angle_screen::xw
(word) init_angle_screen::xw#0 33.666666666666664
(byte) init_angle_screen::y
(byte) init_angle_screen::y#1 16.5
(byte) init_angle_screen::y#4 4.730769230769231
(signed word) init_angle_screen::yw
(word) init_angle_screen::yw#0 50.5
(void()) init_dist_screen((byte*) init_dist_screen::screen)
(byte~) init_dist_screen::$13 202.0
(byte~) init_dist_screen::$15 202.0
(byte~) init_dist_screen::$5 22.0
(byte~) init_dist_screen::$7 22.0
(byte) init_dist_screen::d
(byte) init_dist_screen::d#0 126.25
(word) init_dist_screen::ds
(word) init_dist_screen::ds#0 202.0
(byte*) init_dist_screen::screen
(byte*) init_dist_screen::screen#0 1.5
(byte*) init_dist_screen::screen_bottomline
(byte*) init_dist_screen::screen_bottomline#0 4.0
(byte*) init_dist_screen::screen_bottomline#1 7.333333333333333
(byte*) init_dist_screen::screen_bottomline#10 6.848484848484849
(byte*) init_dist_screen::screen_topline
(byte*) init_dist_screen::screen_topline#1 5.5
(byte*) init_dist_screen::screen_topline#10 7.0625
(byte) init_dist_screen::x
(byte) init_dist_screen::x#1 101.0
(byte) init_dist_screen::x#2 26.578947368421055
(byte) init_dist_screen::x2
(byte) init_dist_screen::x2#0 202.0
(byte) init_dist_screen::xb
(byte) init_dist_screen::xb#1 101.0
(byte) init_dist_screen::xb#2 20.2
(byte) init_dist_screen::xd
(byte) init_dist_screen::xd#0 303.0
(word) init_dist_screen::xds
(word) init_dist_screen::xds#0 202.0
(byte) init_dist_screen::y
(byte) init_dist_screen::y#1 16.5
(byte) init_dist_screen::y#10 0.9705882352941178
(byte) init_dist_screen::y2
(byte) init_dist_screen::y2#0 22.0
(byte) init_dist_screen::yd
(byte) init_dist_screen::yd#0 33.0
(word) init_dist_screen::yds
(word) init_dist_screen::yds#0 4.869565217391305
(void()) init_squares()
(byte~) init_squares::$3 22.0
(byte~) init_squares::$4 22.0
(byte) init_squares::i
(byte) init_squares::i#1 16.5
(byte) init_squares::i#2 5.5
(word) init_squares::sqr
(word) init_squares::sqr#1 7.333333333333333
(word) init_squares::sqr#2 6.6000000000000005
(word*) init_squares::squares
(word*) init_squares::squares#0 4.0
(word*) init_squares::squares#1 3.6666666666666665
(word*) init_squares::squares#2 17.5
(void()) main()
(word~) main::toD0181_$0
(number~) main::toD0181_$1
(number~) main::toD0181_$2
(number~) main::toD0181_$3
(word~) main::toD0181_$4
(byte~) main::toD0181_$5
(number~) main::toD0181_$6
(number~) main::toD0181_$7
(number~) main::toD0181_$8
(byte*) main::toD0181_gfx
(byte) main::toD0181_return
(byte*) main::toD0181_screen
(word~) main::toD0182_$0
(number~) main::toD0182_$1
(number~) main::toD0182_$2
(number~) main::toD0182_$3
(word~) main::toD0182_$4
(byte~) main::toD0182_$5
(number~) main::toD0182_$6
(number~) main::toD0182_$7
(number~) main::toD0182_$8
(byte*) main::toD0182_gfx
(byte) main::toD0182_return
(byte*) main::toD0182_screen
(void()) make_plasma_charset((byte*) make_plasma_charset::charset)
(byte~) make_plasma_charset::$11 22.0
(byte*~) make_plasma_charset::$16 202.0
(byte~) make_plasma_charset::$2 22.0
(byte~) make_plasma_charset::$3 2002.0
(byte~) make_plasma_charset::$4 2002.0
(word~) make_plasma_charset::$8 202.0
(word~) make_plasma_charset::$9 202.0
(byte) make_plasma_charset::b
(byte) make_plasma_charset::b#1 2002.0
(byte) make_plasma_charset::b#2 500.5
(byte) make_plasma_charset::b#3 517.3333333333334
(byte[8]) make_plasma_charset::bittab
(word) make_plasma_charset::c
(word) make_plasma_charset::c#1 16.5
(word) make_plasma_charset::c#2 5.800000000000001
(byte*) make_plasma_charset::charset
(byte) make_plasma_charset::i
(byte) make_plasma_charset::i#1 151.5
(byte) make_plasma_charset::i#7 20.2
(byte) make_plasma_charset::ii
(byte) make_plasma_charset::ii#1 1501.5
(byte) make_plasma_charset::ii#2 375.375
(byte) make_plasma_charset::s
(byte) make_plasma_charset::s#0 56.22222222222223
(void*()) malloc((word) malloc::size)
(byte*) malloc::mem
(byte*) malloc::mem#0 0.6666666666666666
(void*) malloc::return
(word) malloc::size
(word) malloc::size#3 2.0
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(byte) memset::c
(byte) memset::c#3 1.5714285714285714
(byte*) memset::dst
(byte*) memset::dst#1 16.5
(byte*) memset::dst#2 17.5
(byte*~) memset::dst#3 4.0
(byte*) memset::end
(byte*) memset::end#0 2.1666666666666665
(word) memset::num
(void*) memset::return
(void*) memset::str
(void*) memset::str#3
(void()) print_char((byte) print_char::ch)
(byte) print_char::ch
(byte*) print_char_cursor
(byte*) print_char_cursor#1 4.333333333333333
(byte*) print_char_cursor#18 11.0
(byte*) print_char_cursor#49 1.0833333333333333
(void()) print_cls()
(byte*) print_line_cursor
(byte*) print_screen
(byte()) sid_rnd()
(byte) sid_rnd::return
(byte) sid_rnd::return#0 334.33333333333337
(byte) sid_rnd::return#2 2002.0
(void()) sid_rnd_init()
(byte) sin_offset_x
(byte) sin_offset_x#10 1.625
(byte) sin_offset_x#12 2.666666666666667
(byte) sin_offset_x#14 11.0
(byte) sin_offset_y
(byte) sin_offset_y#10 1.5294117647058825
(byte) sin_offset_y#12 3.0
(byte) sin_offset_y#14 11.0
(word()) sqr((byte) sqr::val)
(byte~) sqr::$0 4.0
(word) sqr::return
(word) sqr::return#0 28.5
(word) sqr::return#2 22.0
(word) sqr::return#3 202.0
(byte) sqr::val
(byte) sqr::val#0 22.0
(byte) sqr::val#1 202.0
(byte) sqr::val#2 114.0
(byte()) sqrt((word) sqrt::val)
(word~) sqrt::$1 2.0
(word~) sqrt::$3 4.0
(word*) sqrt::found
(word*) sqrt::found#0 4.0
(byte) sqrt::return
(byte) sqrt::return#0 34.33333333333333
(byte) sqrt::return#2 202.0
(byte) sqrt::sq
(word) sqrt::val
(word) sqrt::val#0 103.0

Initial phi equivalence classes
[ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ]
[ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ]
[ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 ]
[ doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ]
[ doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ]
[ doplasma::y#4 doplasma::y#1 ]
[ doplasma::x#2 doplasma::x#1 ]
[ memset::str#3 ]
[ memset::c#3 ]
[ memset::dst#2 memset::dst#3 memset::dst#1 ]
[ make_plasma_charset::c#2 make_plasma_charset::c#1 ]
[ print_char_cursor#49 print_char_cursor#18 print_char_cursor#1 ]
[ make_plasma_charset::i#7 make_plasma_charset::i#1 ]
[ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ]
[ make_plasma_charset::b#2 make_plasma_charset::b#3 make_plasma_charset::b#1 ]
[ init_angle_screen::y#4 init_angle_screen::y#1 ]
[ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ]
[ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ]
[ init_angle_screen::x#2 init_angle_screen::x#1 ]
[ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
[ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ]
[ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ]
[ atan2_16::i#2 atan2_16::i#1 ]
[ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ]
[ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ]
[ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
[ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
[ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
[ init_dist_screen::y#10 init_dist_screen::y#1 ]
[ init_dist_screen::screen_topline#10 init_dist_screen::screen_topline#1 init_dist_screen::screen#0 ]
[ init_dist_screen::screen_bottomline#10 init_dist_screen::screen_bottomline#1 init_dist_screen::screen_bottomline#0 ]
[ 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::$15 init_dist_screen::$13 ]
[ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ]
[ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
[ sqr::val#2 sqr::val#0 sqr::val#1 ]
[ init_squares::sqr#2 init_squares::sqr#1 ]
[ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ]
[ init_squares::i#2 init_squares::i#1 ]
[ heap_head#12 heap_head#1 ]
[ malloc::size#3 ]
Added variable SCREEN_DIST#0 to zero page equivalence class [ SCREEN_DIST#0 ]
Added variable SCREEN_ANGLE#0 to zero page equivalence class [ SCREEN_ANGLE#0 ]
Added variable init_angle_screen::screen#0 to zero page equivalence class [ init_angle_screen::screen#0 ]
Added variable doplasma::sin_x#0 to zero page equivalence class [ doplasma::sin_x#0 ]
Added variable doplasma::sin_y#0 to zero page equivalence class [ doplasma::sin_y#0 ]
Added variable doplasma::$2 to zero page equivalence class [ doplasma::$2 ]
Added variable memset::end#0 to zero page equivalence class [ memset::end#0 ]
Added variable make_plasma_charset::$2 to zero page equivalence class [ make_plasma_charset::$2 ]
Added variable make_plasma_charset::s#0 to zero page equivalence class [ make_plasma_charset::s#0 ]
Added variable sid_rnd::return#2 to zero page equivalence class [ sid_rnd::return#2 ]
Added variable make_plasma_charset::$3 to zero page equivalence class [ make_plasma_charset::$3 ]
Added variable make_plasma_charset::$4 to zero page equivalence class [ make_plasma_charset::$4 ]
Added variable make_plasma_charset::$8 to zero page equivalence class [ make_plasma_charset::$8 ]
Added variable make_plasma_charset::$9 to zero page equivalence class [ make_plasma_charset::$9 ]
Added variable make_plasma_charset::$16 to zero page equivalence class [ make_plasma_charset::$16 ]
Added variable make_plasma_charset::$11 to zero page equivalence class [ make_plasma_charset::$11 ]
Added variable sid_rnd::return#0 to zero page equivalence class [ sid_rnd::return#0 ]
Added variable init_angle_screen::$2 to zero page equivalence class [ init_angle_screen::$2 ]
Added variable init_angle_screen::$3 to zero page equivalence class [ init_angle_screen::$3 ]
Added variable init_angle_screen::xw#0 to zero page equivalence class [ init_angle_screen::xw#0 ]
Added variable init_angle_screen::$6 to zero page equivalence class [ init_angle_screen::$6 ]
Added variable init_angle_screen::yw#0 to zero page equivalence class [ init_angle_screen::yw#0 ]
Added variable atan2_16::x#0 to zero page equivalence class [ atan2_16::x#0 ]
Added variable atan2_16::y#0 to zero page equivalence class [ atan2_16::y#0 ]
Added variable atan2_16::return#2 to zero page equivalence class [ atan2_16::return#2 ]
Added variable init_angle_screen::angle_w#0 to zero page equivalence class [ init_angle_screen::angle_w#0 ]
Added variable init_angle_screen::$10 to zero page equivalence class [ init_angle_screen::$10 ]
Added variable init_angle_screen::ang_w#0 to zero page equivalence class [ init_angle_screen::ang_w#0 ]
Added variable init_angle_screen::$12 to zero page equivalence class [ init_angle_screen::$12 ]
Added variable init_angle_screen::$13 to zero page equivalence class [ init_angle_screen::$13 ]
Added variable init_angle_screen::$14 to zero page equivalence class [ init_angle_screen::$14 ]
Added variable atan2_16::$24 to zero page equivalence class [ atan2_16::$24 ]
Added variable atan2_16::$23 to zero page equivalence class [ atan2_16::$23 ]
Added variable init_dist_screen::y2#0 to zero page equivalence class [ init_dist_screen::y2#0 ]
Added variable sqr::return#2 to zero page equivalence class [ sqr::return#2 ]
Added variable init_dist_screen::yds#0 to zero page equivalence class [ init_dist_screen::yds#0 ]
Added variable init_dist_screen::x2#0 to zero page equivalence class [ init_dist_screen::x2#0 ]
Added variable sqr::return#3 to zero page equivalence class [ sqr::return#3 ]
Added variable init_dist_screen::xds#0 to zero page equivalence class [ init_dist_screen::xds#0 ]
Added variable init_dist_screen::ds#0 to zero page equivalence class [ init_dist_screen::ds#0 ]
Added variable sqrt::val#0 to zero page equivalence class [ sqrt::val#0 ]
Added variable sqrt::return#2 to zero page equivalence class [ sqrt::return#2 ]
Added variable init_dist_screen::d#0 to zero page equivalence class [ init_dist_screen::d#0 ]
Added variable bsearch16u::key#0 to zero page equivalence class [ bsearch16u::key#0 ]
Added variable bsearch16u::return#3 to zero page equivalence class [ bsearch16u::return#3 ]
Added variable sqrt::found#0 to zero page equivalence class [ sqrt::found#0 ]
Added variable sqrt::$3 to zero page equivalence class [ sqrt::$3 ]
Added variable sqrt::$1 to zero page equivalence class [ sqrt::$1 ]
Added variable sqrt::return#0 to zero page equivalence class [ sqrt::return#0 ]
Added variable bsearch16u::$6 to zero page equivalence class [ bsearch16u::$6 ]
Added variable bsearch16u::$16 to zero page equivalence class [ bsearch16u::$16 ]
Added variable bsearch16u::pivot#0 to zero page equivalence class [ bsearch16u::pivot#0 ]
Added variable bsearch16u::result#0 to zero page equivalence class [ bsearch16u::result#0 ]
Added variable sqr::$0 to zero page equivalence class [ sqr::$0 ]
Added variable sqr::return#0 to zero page equivalence class [ sqr::return#0 ]
Added variable SQUARES#1 to zero page equivalence class [ SQUARES#1 ]
Added variable init_squares::$3 to zero page equivalence class [ init_squares::$3 ]
Added variable init_squares::$4 to zero page equivalence class [ init_squares::$4 ]
Added variable malloc::mem#0 to zero page equivalence class [ malloc::mem#0 ]
Complete equivalence classes
[ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ]
[ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ]
[ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 ]
[ doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ]
[ doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ]
[ doplasma::y#4 doplasma::y#1 ]
[ doplasma::x#2 doplasma::x#1 ]
[ memset::str#3 ]
[ memset::c#3 ]
[ memset::dst#2 memset::dst#3 memset::dst#1 ]
[ make_plasma_charset::c#2 make_plasma_charset::c#1 ]
[ print_char_cursor#49 print_char_cursor#18 print_char_cursor#1 ]
[ make_plasma_charset::i#7 make_plasma_charset::i#1 ]
[ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ]
[ make_plasma_charset::b#2 make_plasma_charset::b#3 make_plasma_charset::b#1 ]
[ init_angle_screen::y#4 init_angle_screen::y#1 ]
[ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ]
[ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ]
[ init_angle_screen::x#2 init_angle_screen::x#1 ]
[ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
[ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ]
[ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ]
[ atan2_16::i#2 atan2_16::i#1 ]
[ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ]
[ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ]
[ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
[ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
[ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
[ init_dist_screen::y#10 init_dist_screen::y#1 ]
[ init_dist_screen::screen_topline#10 init_dist_screen::screen_topline#1 init_dist_screen::screen#0 ]
[ init_dist_screen::screen_bottomline#10 init_dist_screen::screen_bottomline#1 init_dist_screen::screen_bottomline#0 ]
[ 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::$15 init_dist_screen::$13 ]
[ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ]
[ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
[ sqr::val#2 sqr::val#0 sqr::val#1 ]
[ init_squares::sqr#2 init_squares::sqr#1 ]
[ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ]
[ init_squares::i#2 init_squares::i#1 ]
[ heap_head#12 heap_head#1 ]
[ malloc::size#3 ]
[ SCREEN_DIST#0 ]
[ SCREEN_ANGLE#0 ]
[ init_angle_screen::screen#0 ]
[ doplasma::sin_x#0 ]
[ doplasma::sin_y#0 ]
[ doplasma::$2 ]
[ memset::end#0 ]
[ make_plasma_charset::$2 ]
[ make_plasma_charset::s#0 ]
[ sid_rnd::return#2 ]
[ make_plasma_charset::$3 ]
[ make_plasma_charset::$4 ]
[ make_plasma_charset::$8 ]
[ make_plasma_charset::$9 ]
[ make_plasma_charset::$16 ]
[ make_plasma_charset::$11 ]
[ sid_rnd::return#0 ]
[ init_angle_screen::$2 ]
[ init_angle_screen::$3 ]
[ init_angle_screen::xw#0 ]
[ init_angle_screen::$6 ]
[ init_angle_screen::yw#0 ]
[ atan2_16::x#0 ]
[ atan2_16::y#0 ]
[ atan2_16::return#2 ]
[ init_angle_screen::angle_w#0 ]
[ init_angle_screen::$10 ]
[ init_angle_screen::ang_w#0 ]
[ init_angle_screen::$12 ]
[ init_angle_screen::$13 ]
[ init_angle_screen::$14 ]
[ atan2_16::$24 ]
[ atan2_16::$23 ]
[ 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 ]
[ bsearch16u::key#0 ]
[ bsearch16u::return#3 ]
[ sqrt::found#0 ]
[ sqrt::$3 ]
[ sqrt::$1 ]
[ sqrt::return#0 ]
[ bsearch16u::$6 ]
[ bsearch16u::$16 ]
[ bsearch16u::pivot#0 ]
[ bsearch16u::result#0 ]
[ sqr::$0 ]
[ sqr::return#0 ]
[ SQUARES#1 ]
[ init_squares::$3 ]
[ init_squares::$4 ]
[ malloc::mem#0 ]
Allocated zp ZP_BYTE:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ]
Allocated zp ZP_BYTE:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ]
Allocated zp ZP_WORD:4 [ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 ]
Allocated zp ZP_WORD:6 [ doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ]
Allocated zp ZP_WORD:8 [ doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ]
Allocated zp ZP_BYTE:10 [ doplasma::y#4 doplasma::y#1 ]
Allocated zp ZP_BYTE:11 [ doplasma::x#2 doplasma::x#1 ]
Allocated zp ZP_WORD:12 [ memset::str#3 ]
Allocated zp ZP_BYTE:14 [ memset::c#3 ]
Allocated zp ZP_WORD:15 [ memset::dst#2 memset::dst#3 memset::dst#1 ]
Allocated zp ZP_WORD:17 [ make_plasma_charset::c#2 make_plasma_charset::c#1 ]
Allocated zp ZP_WORD:19 [ print_char_cursor#49 print_char_cursor#18 print_char_cursor#1 ]
Allocated zp ZP_BYTE:21 [ make_plasma_charset::i#7 make_plasma_charset::i#1 ]
Allocated zp ZP_BYTE:22 [ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ]
Allocated zp ZP_BYTE:23 [ make_plasma_charset::b#2 make_plasma_charset::b#3 make_plasma_charset::b#1 ]
Allocated zp ZP_BYTE:24 [ init_angle_screen::y#4 init_angle_screen::y#1 ]
Allocated zp ZP_WORD:25 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ]
Allocated zp ZP_WORD:27 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ]
Allocated zp ZP_BYTE:29 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
Allocated zp ZP_BYTE:30 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Allocated zp ZP_WORD:31 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ]
Allocated zp ZP_WORD:33 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ]
Allocated zp ZP_BYTE:35 [ atan2_16::i#2 atan2_16::i#1 ]
Allocated zp ZP_WORD:36 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ]
Allocated zp ZP_WORD:38 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ]
Allocated zp ZP_BYTE:40 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
Allocated zp ZP_WORD:41 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
Allocated zp ZP_WORD:43 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
Allocated zp ZP_BYTE:45 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
Allocated zp ZP_WORD:46 [ init_dist_screen::screen_topline#10 init_dist_screen::screen_topline#1 init_dist_screen::screen#0 ]
Allocated zp ZP_WORD:48 [ init_dist_screen::screen_bottomline#10 init_dist_screen::screen_bottomline#1 init_dist_screen::screen_bottomline#0 ]
Allocated zp ZP_BYTE:50 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
Allocated zp ZP_BYTE:51 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Allocated zp ZP_BYTE:52 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Allocated zp ZP_BYTE:53 [ init_dist_screen::xd#0 init_dist_screen::$15 init_dist_screen::$13 ]
Allocated zp ZP_WORD:54 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ]
Allocated zp ZP_BYTE:56 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
Allocated zp ZP_BYTE:57 [ sqr::val#2 sqr::val#0 sqr::val#1 ]
Allocated zp ZP_WORD:58 [ init_squares::sqr#2 init_squares::sqr#1 ]
Allocated zp ZP_WORD:60 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ]
Allocated zp ZP_BYTE:62 [ init_squares::i#2 init_squares::i#1 ]
Allocated zp ZP_WORD:63 [ heap_head#12 heap_head#1 ]
Allocated zp ZP_WORD:65 [ malloc::size#3 ]
Allocated zp ZP_WORD:67 [ SCREEN_DIST#0 ]
Allocated zp ZP_WORD:69 [ SCREEN_ANGLE#0 ]
Allocated zp ZP_WORD:71 [ init_angle_screen::screen#0 ]
Allocated zp ZP_WORD:73 [ doplasma::sin_x#0 ]
Allocated zp ZP_WORD:75 [ doplasma::sin_y#0 ]
Allocated zp ZP_BYTE:77 [ doplasma::$2 ]
Allocated zp ZP_WORD:78 [ memset::end#0 ]
Allocated zp ZP_BYTE:80 [ make_plasma_charset::$2 ]
Allocated zp ZP_BYTE:81 [ make_plasma_charset::s#0 ]
Allocated zp ZP_BYTE:82 [ sid_rnd::return#2 ]
Allocated zp ZP_BYTE:83 [ make_plasma_charset::$3 ]
Allocated zp ZP_BYTE:84 [ make_plasma_charset::$4 ]
Allocated zp ZP_WORD:85 [ make_plasma_charset::$8 ]
Allocated zp ZP_WORD:87 [ make_plasma_charset::$9 ]
Allocated zp ZP_WORD:89 [ make_plasma_charset::$16 ]
Allocated zp ZP_BYTE:91 [ make_plasma_charset::$11 ]
Allocated zp ZP_BYTE:92 [ sid_rnd::return#0 ]
Allocated zp ZP_BYTE:93 [ init_angle_screen::$2 ]
Allocated zp ZP_BYTE:94 [ init_angle_screen::$3 ]
Allocated zp ZP_WORD:95 [ init_angle_screen::xw#0 ]
Allocated zp ZP_BYTE:97 [ init_angle_screen::$6 ]
Allocated zp ZP_WORD:98 [ init_angle_screen::yw#0 ]
Allocated zp ZP_WORD:100 [ atan2_16::x#0 ]
Allocated zp ZP_WORD:102 [ atan2_16::y#0 ]
Allocated zp ZP_WORD:104 [ atan2_16::return#2 ]
Allocated zp ZP_WORD:106 [ init_angle_screen::angle_w#0 ]
Allocated zp ZP_WORD:108 [ init_angle_screen::$10 ]
Allocated zp ZP_BYTE:110 [ init_angle_screen::ang_w#0 ]
Allocated zp ZP_BYTE:111 [ init_angle_screen::$12 ]
Allocated zp ZP_BYTE:112 [ init_angle_screen::$13 ]
Allocated zp ZP_BYTE:113 [ init_angle_screen::$14 ]
Allocated zp ZP_BYTE:114 [ atan2_16::$24 ]
Allocated zp ZP_BYTE:115 [ atan2_16::$23 ]
Allocated zp ZP_BYTE:116 [ init_dist_screen::y2#0 ]
Allocated zp ZP_WORD:117 [ sqr::return#2 ]
Allocated zp ZP_WORD:119 [ init_dist_screen::yds#0 ]
Allocated zp ZP_BYTE:121 [ init_dist_screen::x2#0 ]
Allocated zp ZP_WORD:122 [ sqr::return#3 ]
Allocated zp ZP_WORD:124 [ init_dist_screen::xds#0 ]
Allocated zp ZP_WORD:126 [ init_dist_screen::ds#0 ]
Allocated zp ZP_WORD:128 [ sqrt::val#0 ]
Allocated zp ZP_BYTE:130 [ sqrt::return#2 ]
Allocated zp ZP_BYTE:131 [ init_dist_screen::d#0 ]
Allocated zp ZP_WORD:132 [ bsearch16u::key#0 ]
Allocated zp ZP_WORD:134 [ bsearch16u::return#3 ]
Allocated zp ZP_WORD:136 [ sqrt::found#0 ]
Allocated zp ZP_WORD:138 [ sqrt::$3 ]
Allocated zp ZP_WORD:140 [ sqrt::$1 ]
Allocated zp ZP_BYTE:142 [ sqrt::return#0 ]
Allocated zp ZP_BYTE:143 [ bsearch16u::$6 ]
Allocated zp ZP_BYTE:144 [ bsearch16u::$16 ]
Allocated zp ZP_WORD:145 [ bsearch16u::pivot#0 ]
Allocated zp ZP_WORD:147 [ bsearch16u::result#0 ]
Allocated zp ZP_BYTE:149 [ sqr::$0 ]
Allocated zp ZP_WORD:150 [ sqr::return#0 ]
Allocated zp ZP_WORD:152 [ SQUARES#1 ]
Allocated zp ZP_BYTE:154 [ init_squares::$3 ]
Allocated zp ZP_BYTE:155 [ init_squares::$4 ]
Allocated zp ZP_WORD:156 [ malloc::mem#0 ]

INITIAL ASM
  // File Comments
// Plasma based on the distance/angle to the screen center
  // Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(bbegin)
.pc = $80d "Program"
  // Global Constants & labels
  .const SIZEOF_WORD = 2
  .label D018 = $d018
  // Color Ram
  .label COLS = $d800
  // The colors of the C64
  .const BLACK = 0
  // Top of the heap used by malloc()
  .label HEAP_TOP = $a000
  // The number of iterations performed during 16-bit CORDIC atan2 calculation
  .const CORDIC_ITERATIONS_16 = $f
  .label print_line_cursor = $400
  // SID registers for random number generation
  .label SID_VOICE3_FREQ = $d40e
  .label SID_VOICE3_CONTROL = $d412
  .const SID_CONTROL_NOISE = $80
  .label SID_VOICE3_OSC = $d41b
  // Plasma charset
  .label CHARSET = $2000
  // Plasma screen 1
  .label SCREEN1 = $2800
  // Plasma screen 2
  .label SCREEN2 = $2c00
  .const NUM_SQUARES = $30
  .label heap_head = $3f
  .label SQUARES = $98
  .label print_char_cursor = $13
  // Screen containing distance to center
  .label SCREEN_DIST = $43
  // Screen containing angle to center
  .label SCREEN_ANGLE = $45
  .label sin_offset_x = 2
  .label sin_offset_y = 3
  // @begin
bbegin:
  // [1] phi from @begin to @1 [phi:@begin->@1]
b1_from_bbegin:
  jmp b1
  // @1
b1:
  // [2] call malloc 
  // [254] phi from @1 to malloc [phi:@1->malloc]
malloc_from_b1:
  // [254] phi (word) malloc::size#3 = (word) $3e8 [phi:@1->malloc#0] -- vwuz1=vwuc1 
  lda #<$3e8
  sta malloc.size
  lda #>$3e8
  sta malloc.size+1
  // [254] phi (byte*) heap_head#12 = (const byte*) HEAP_TOP#0 [phi:@1->malloc#1] -- pbuz1=pbuc1 
  lda #<HEAP_TOP
  sta heap_head
  lda #>HEAP_TOP
  sta heap_head+1
  jsr malloc
  jmp b3
  // @3
b3:
  // [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 -- pvoz1=pvoz2 
  lda malloc.mem
  sta SCREEN_DIST
  lda malloc.mem+1
  sta SCREEN_DIST+1
  // [4] call malloc 
  // [254] phi from @3 to malloc [phi:@3->malloc]
malloc_from_b3:
  // [254] phi (word) malloc::size#3 = (word) $3e8 [phi:@3->malloc#0] -- vwuz1=vwuc1 
  lda #<$3e8
  sta malloc.size
  lda #>$3e8
  sta malloc.size+1
  // [254] phi (byte*) heap_head#12 = (byte*) heap_head#1 [phi:@3->malloc#1] -- register_copy 
  jsr malloc
  jmp b4
  // @4
b4:
  // [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 -- pvoz1=pvoz2 
  lda malloc.mem
  sta SCREEN_ANGLE
  lda malloc.mem+1
  sta SCREEN_ANGLE+1
  // [6] phi from @4 to @2 [phi:@4->@2]
b2_from_b4:
  jmp b2
  // @2
b2:
  // [7] call main 
  jsr main
  // [8] phi from @2 to @end [phi:@2->@end]
bend_from_b2:
  jmp bend
  // @end
bend:
  // main
main: {
    .const toD0181_return = (>(SCREEN1&$3fff)*4)|(>CHARSET)/4&$f
    .const toD0182_return = (>(SCREEN2&$3fff)*4)|(>CHARSET)/4&$f
    // [9] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 -- pbuz1=pbuz2 
    lda SCREEN_DIST
    sta init_dist_screen.screen
    lda SCREEN_DIST+1
    sta init_dist_screen.screen+1
    // [10] call init_dist_screen 
    // [169] phi from main to init_dist_screen [phi:main->init_dist_screen]
  init_dist_screen_from_main:
    jsr init_dist_screen
    jmp b5
    // main::@5
  b5:
    // [11] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 -- pbuz1=pbuz2 
    lda SCREEN_ANGLE
    sta init_angle_screen.screen
    lda SCREEN_ANGLE+1
    sta init_angle_screen.screen+1
    // [12] call init_angle_screen 
    jsr init_angle_screen
    // [13] phi from main::@5 to main::@6 [phi:main::@5->main::@6]
  b6_from_b5:
    jmp b6
    // main::@6
  b6:
    // [14] call make_plasma_charset 
    // [52] phi from main::@6 to make_plasma_charset [phi:main::@6->make_plasma_charset]
  make_plasma_charset_from_b6:
    jsr make_plasma_charset
    // [15] phi from main::@6 to main::@7 [phi:main::@6->main::@7]
  b7_from_b6:
    jmp b7
    // main::@7
  b7:
    // [16] call memset 
    // [44] phi from main::@7 to memset [phi:main::@7->memset]
  memset_from_b7:
    // [44] phi (byte) memset::c#3 = (const byte) BLACK#0 [phi:main::@7->memset#0] -- vbuz1=vbuc1 
    lda #BLACK
    sta memset.c
    // [44] phi (void*) memset::str#3 = (void*)(const byte*) COLS#0 [phi:main::@7->memset#1] -- pvoz1=pvoc1 
    lda #<COLS
    sta memset.str
    lda #>COLS
    sta memset.str+1
    jsr memset
    // [17] phi from main::@7 to main::@1 [phi:main::@7->main::@1]
  b1_from_b7:
    // [17] phi (byte) sin_offset_y#14 = (byte) 0 [phi:main::@7->main::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta sin_offset_y
    // [17] phi (byte) sin_offset_x#14 = (byte) 0 [phi:main::@7->main::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta sin_offset_x
    jmp b1
  // Show double-buffered plasma
    // main::@1
  b1:
    // [18] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  b2_from_b1:
    jmp b2
    // main::@2
  b2:
    // [19] call doplasma 
    // [25] phi from main::@2 to doplasma [phi:main::@2->doplasma]
  doplasma_from_b2:
    // [25] phi (byte*) doplasma::screen#6 = (const byte*) SCREEN1#0 [phi:main::@2->doplasma#0] -- pbuz1=pbuc1 
    lda #<SCREEN1
    sta doplasma.screen
    lda #>SCREEN1
    sta doplasma.screen+1
    // [25] phi (byte) sin_offset_y#10 = (byte) sin_offset_y#14 [phi:main::@2->doplasma#1] -- register_copy 
    // [25] phi (byte) sin_offset_x#10 = (byte) sin_offset_x#14 [phi:main::@2->doplasma#2] -- register_copy 
    jsr doplasma
    // [20] phi from main::@2 to main::toD0181 [phi:main::@2->main::toD0181]
  toD0181_from_b2:
    jmp toD0181
    // main::toD0181
  toD0181:
    jmp b3
    // main::@3
  b3:
    // [21] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
    // [22] call doplasma 
    // [25] phi from main::@3 to doplasma [phi:main::@3->doplasma]
  doplasma_from_b3:
    // [25] phi (byte*) doplasma::screen#6 = (const byte*) SCREEN2#0 [phi:main::@3->doplasma#0] -- pbuz1=pbuc1 
    lda #<SCREEN2
    sta doplasma.screen
    lda #>SCREEN2
    sta doplasma.screen+1
    // [25] phi (byte) sin_offset_y#10 = (byte) sin_offset_y#12 [phi:main::@3->doplasma#1] -- register_copy 
    // [25] phi (byte) sin_offset_x#10 = (byte) sin_offset_x#12 [phi:main::@3->doplasma#2] -- register_copy 
    jsr doplasma
    // [23] phi from main::@3 to main::toD0182 [phi:main::@3->main::toD0182]
  toD0182_from_b3:
    jmp toD0182
    // main::toD0182
  toD0182:
    jmp b4
    // main::@4
  b4:
    // [24] *((const byte*) D018#0) ← (const byte) main::toD0182_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0182_return
    sta D018
    // [17] phi from main::@4 to main::@1 [phi:main::@4->main::@1]
  b1_from_b4:
    // [17] phi (byte) sin_offset_y#14 = (byte) sin_offset_y#12 [phi:main::@4->main::@1#0] -- register_copy 
    // [17] phi (byte) sin_offset_x#14 = (byte) sin_offset_x#12 [phi:main::@4->main::@1#1] -- register_copy 
    jmp b1
}
  // doplasma
// Render plasma to the passed screen
// doplasma(byte* zeropage(8) screen)
doplasma: {
    .label _2 = $4d
    .label angle = 4
    .label dist = 6
    .label sin_x = $49
    .label sin_y = $4b
    .label x = $b
    .label screen = 8
    .label y = $a
    // [26] (byte*) doplasma::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 -- pbuz1=pbuz2 
    lda SCREEN_ANGLE
    sta angle
    lda SCREEN_ANGLE+1
    sta angle+1
    // [27] (byte*) doplasma::dist#0 ← (byte*)(void*) SCREEN_DIST#0 -- pbuz1=pbuz2 
    lda SCREEN_DIST
    sta dist
    lda SCREEN_DIST+1
    sta dist+1
    // [28] (byte*) doplasma::sin_x#0 ← (const byte[$200]) SINTABLE#0 + (byte) sin_offset_x#10 -- pbuz1=pbuc1_plus_vbuz2 
    lda sin_offset_x
    clc
    adc #<SINTABLE
    sta sin_x
    lda #>SINTABLE
    adc #0
    sta sin_x+1
    // [29] (byte*) doplasma::sin_y#0 ← (const byte[$200]) SINTABLE#0 + (byte) sin_offset_y#10 -- pbuz1=pbuc1_plus_vbuz2 
    lda sin_offset_y
    clc
    adc #<SINTABLE
    sta sin_y
    lda #>SINTABLE
    adc #0
    sta sin_y+1
    // [30] phi from doplasma to doplasma::@1 [phi:doplasma->doplasma::@1]
  b1_from_doplasma:
    // [30] phi (byte) doplasma::y#4 = (byte) 0 [phi:doplasma->doplasma::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta y
    // [30] phi (byte*) doplasma::screen#5 = (byte*) doplasma::screen#6 [phi:doplasma->doplasma::@1#1] -- register_copy 
    // [30] phi (byte*) doplasma::dist#4 = (byte*) doplasma::dist#0 [phi:doplasma->doplasma::@1#2] -- register_copy 
    // [30] phi (byte*) doplasma::angle#4 = (byte*) doplasma::angle#0 [phi:doplasma->doplasma::@1#3] -- register_copy 
    jmp b1
    // [30] phi from doplasma::@3 to doplasma::@1 [phi:doplasma::@3->doplasma::@1]
  b1_from_b3:
    // [30] phi (byte) doplasma::y#4 = (byte) doplasma::y#1 [phi:doplasma::@3->doplasma::@1#0] -- register_copy 
    // [30] phi (byte*) doplasma::screen#5 = (byte*) doplasma::screen#2 [phi:doplasma::@3->doplasma::@1#1] -- register_copy 
    // [30] phi (byte*) doplasma::dist#4 = (byte*) doplasma::dist#1 [phi:doplasma::@3->doplasma::@1#2] -- register_copy 
    // [30] phi (byte*) doplasma::angle#4 = (byte*) doplasma::angle#1 [phi:doplasma::@3->doplasma::@1#3] -- register_copy 
    jmp b1
    // doplasma::@1
  b1:
    // [31] phi from doplasma::@1 to doplasma::@2 [phi:doplasma::@1->doplasma::@2]
  b2_from_b1:
    // [31] phi (byte) doplasma::x#2 = (byte) 0 [phi:doplasma::@1->doplasma::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta x
    jmp b2
    // [31] phi from doplasma::@2 to doplasma::@2 [phi:doplasma::@2->doplasma::@2]
  b2_from_b2:
    // [31] phi (byte) doplasma::x#2 = (byte) doplasma::x#1 [phi:doplasma::@2->doplasma::@2#0] -- register_copy 
    jmp b2
    // doplasma::@2
  b2:
    // [32] (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#0 + *((byte*) doplasma::angle#4 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#0 + *((byte*) doplasma::dist#4 + (byte) doplasma::x#2)) -- vbuz1=pbuz2_derefidx_pbuz3_derefidx_vbuz4_plus_pbuz5_derefidx_pbuz6_derefidx_vbuz4 
    ldy x
    lda (dist),y
    sta $ff
    lda (angle),y
    tay
    lda (sin_x),y
    ldy $ff
    clc
    adc (sin_y),y
    sta _2
    // [33] *((byte*) doplasma::screen#5 + (byte) doplasma::x#2) ← (byte~) doplasma::$2 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda _2
    ldy x
    sta (screen),y
    // [34] (byte) doplasma::x#1 ← ++ (byte) doplasma::x#2 -- vbuz1=_inc_vbuz1 
    inc x
    // [35] if((byte) doplasma::x#1!=(byte) $28) goto doplasma::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda #$28
    cmp x
    bne b2_from_b2
    jmp b3
    // doplasma::@3
  b3:
    // [36] (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#5 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc screen
    sta screen
    bcc !+
    inc screen+1
  !:
    // [37] (byte*) doplasma::angle#1 ← (byte*) doplasma::angle#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc angle
    sta angle
    bcc !+
    inc angle+1
  !:
    // [38] (byte*) doplasma::dist#1 ← (byte*) doplasma::dist#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc dist
    sta dist
    bcc !+
    inc dist+1
  !:
    // [39] (byte) doplasma::y#1 ← ++ (byte) doplasma::y#4 -- vbuz1=_inc_vbuz1 
    inc y
    // [40] if((byte) doplasma::y#1!=(byte) $1a) goto doplasma::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$1a
    cmp y
    bne b1_from_b3
    jmp b4
    // doplasma::@4
  b4:
    // [41] (byte) sin_offset_x#12 ← (byte) sin_offset_x#10 - (byte) 3 -- vbuz1=vbuz1_minus_vbuc1 
    lax sin_offset_x
    axs #3
    stx sin_offset_x
    // [42] (byte) sin_offset_y#12 ← (byte) sin_offset_y#10 - (byte) 7 -- vbuz1=vbuz1_minus_vbuc1 
    lax sin_offset_y
    axs #7
    stx sin_offset_y
    jmp breturn
    // doplasma::@return
  breturn:
    // [43] return 
    rts
}
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
// memset(void* zeropage($c) str, byte zeropage($e) c)
memset: {
    .label end = $4e
    .label dst = $f
    .label str = $c
    .label c = $e
    jmp b1
    // memset::@1
  b1:
    // [45] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 -- pbuz1=pbuz2_plus_vwuc1 
    lda str
    clc
    adc #<$3e8
    sta end
    lda str+1
    adc #>$3e8
    sta end+1
    // [46] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 -- pbuz1=pbuz2 
    lda str
    sta dst
    lda str+1
    sta dst+1
    // [47] phi from memset::@1 memset::@2 to memset::@2 [phi:memset::@1/memset::@2->memset::@2]
  b2_from_b1:
  b2_from_b2:
    // [47] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset::@1/memset::@2->memset::@2#0] -- register_copy 
    jmp b2
    // memset::@2
  b2:
    // [48] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuz2 
    lda c
    ldy #0
    sta (dst),y
    // [49] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc dst
    bne !+
    inc dst+1
  !:
    // [50] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuz2_then_la1 
    lda dst+1
    cmp end+1
    bne b2_from_b2
    lda dst
    cmp end
    bne b2_from_b2
    jmp breturn
    // memset::@return
  breturn:
    // [51] return 
    rts
}
  // make_plasma_charset
// Make a plasma-friendly charset where the chars are randomly filled
make_plasma_charset: {
    .label _2 = $50
    .label _3 = $53
    .label _4 = $54
    .label _8 = $55
    .label _9 = $57
    .label _11 = $5b
    .label s = $51
    .label ii = $16
    .label b = $17
    .label i = $15
    .label c = $11
    .label _16 = $59
    // [53] call sid_rnd_init 
    jsr sid_rnd_init
    // [54] phi from make_plasma_charset to make_plasma_charset::@10 [phi:make_plasma_charset->make_plasma_charset::@10]
  b10_from_make_plasma_charset:
    jmp b10
    // make_plasma_charset::@10
  b10:
    // [55] call print_cls 
    // [89] phi from make_plasma_charset::@10 to print_cls [phi:make_plasma_charset::@10->print_cls]
  print_cls_from_b10:
    jsr print_cls
    // [56] phi from make_plasma_charset::@10 to make_plasma_charset::@1 [phi:make_plasma_charset::@10->make_plasma_charset::@1]
  b1_from_b10:
    // [56] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:make_plasma_charset::@10->make_plasma_charset::@1#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor
    sta print_char_cursor
    lda #>print_line_cursor
    sta print_char_cursor+1
    // [56] phi (word) make_plasma_charset::c#2 = (byte) 0 [phi:make_plasma_charset::@10->make_plasma_charset::@1#1] -- vwuz1=vbuc1 
    lda #<0
    sta c
    lda #>0
    sta c+1
    jmp b1
    // [56] phi from make_plasma_charset::@9 to make_plasma_charset::@1 [phi:make_plasma_charset::@9->make_plasma_charset::@1]
  b1_from_b9:
    // [56] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#18 [phi:make_plasma_charset::@9->make_plasma_charset::@1#0] -- register_copy 
    // [56] phi (word) make_plasma_charset::c#2 = (word) make_plasma_charset::c#1 [phi:make_plasma_charset::@9->make_plasma_charset::@1#1] -- register_copy 
    jmp b1
    // make_plasma_charset::@1
  b1:
    // [57] (byte~) make_plasma_charset::$2 ← < (word) make_plasma_charset::c#2 -- vbuz1=_lo_vwuz2 
    lda c
    sta _2
    // [58] (byte) make_plasma_charset::s#0 ← *((const byte[$200]) SINTABLE#0 + (byte~) make_plasma_charset::$2) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy _2
    lda SINTABLE,y
    sta s
    // [59] phi from make_plasma_charset::@1 to make_plasma_charset::@2 [phi:make_plasma_charset::@1->make_plasma_charset::@2]
  b2_from_b1:
    // [59] phi (byte) make_plasma_charset::i#7 = (byte) 0 [phi:make_plasma_charset::@1->make_plasma_charset::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta i
    jmp b2
    // [59] phi from make_plasma_charset::@6 to make_plasma_charset::@2 [phi:make_plasma_charset::@6->make_plasma_charset::@2]
  b2_from_b6:
    // [59] phi (byte) make_plasma_charset::i#7 = (byte) make_plasma_charset::i#1 [phi:make_plasma_charset::@6->make_plasma_charset::@2#0] -- register_copy 
    jmp b2
    // make_plasma_charset::@2
  b2:
    // [60] phi from make_plasma_charset::@2 to make_plasma_charset::@3 [phi:make_plasma_charset::@2->make_plasma_charset::@3]
  b3_from_b2:
    // [60] phi (byte) make_plasma_charset::b#2 = (byte) 0 [phi:make_plasma_charset::@2->make_plasma_charset::@3#0] -- vbuz1=vbuc1 
    lda #0
    sta b
    // [60] phi (byte) make_plasma_charset::ii#2 = (byte) 0 [phi:make_plasma_charset::@2->make_plasma_charset::@3#1] -- vbuz1=vbuc1 
    lda #0
    sta ii
    jmp b3
    // [60] phi from make_plasma_charset::@4 to make_plasma_charset::@3 [phi:make_plasma_charset::@4->make_plasma_charset::@3]
  b3_from_b4:
    // [60] phi (byte) make_plasma_charset::b#2 = (byte) make_plasma_charset::b#3 [phi:make_plasma_charset::@4->make_plasma_charset::@3#0] -- register_copy 
    // [60] phi (byte) make_plasma_charset::ii#2 = (byte) make_plasma_charset::ii#1 [phi:make_plasma_charset::@4->make_plasma_charset::@3#1] -- register_copy 
    jmp b3
    // make_plasma_charset::@3
  b3:
    // [61] call sid_rnd 
    jsr sid_rnd
    // [62] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 -- vbuz1=vbuz2 
    lda sid_rnd.return
    sta sid_rnd.return_2
    jmp b11
    // make_plasma_charset::@11
  b11:
    // [63] (byte~) make_plasma_charset::$3 ← (byte) sid_rnd::return#2 -- vbuz1=vbuz2 
    lda sid_rnd.return_2
    sta _3
    // [64] (byte~) make_plasma_charset::$4 ← (byte~) make_plasma_charset::$3 & (byte) $ff -- vbuz1=vbuz2_band_vbuc1 
    lda #$ff
    and _3
    sta _4
    // [65] if((byte~) make_plasma_charset::$4<=(byte) make_plasma_charset::s#0) goto make_plasma_charset::@4 -- vbuz1_le_vbuz2_then_la1 
    lda s
    cmp _4
    bcs b4_from_b11
    jmp b5
    // make_plasma_charset::@5
  b5:
    // [66] (byte) make_plasma_charset::b#1 ← (byte) make_plasma_charset::b#2 | *((const byte[8]) make_plasma_charset::bittab#0 + (byte) make_plasma_charset::ii#2) -- vbuz1=vbuz1_bor_pbuc1_derefidx_vbuz2 
    lda b
    ldy ii
    ora bittab,y
    sta b
    // [67] phi from make_plasma_charset::@11 make_plasma_charset::@5 to make_plasma_charset::@4 [phi:make_plasma_charset::@11/make_plasma_charset::@5->make_plasma_charset::@4]
  b4_from_b11:
  b4_from_b5:
    // [67] phi (byte) make_plasma_charset::b#3 = (byte) make_plasma_charset::b#2 [phi:make_plasma_charset::@11/make_plasma_charset::@5->make_plasma_charset::@4#0] -- register_copy 
    jmp b4
    // make_plasma_charset::@4
  b4:
    // [68] (byte) make_plasma_charset::ii#1 ← ++ (byte) make_plasma_charset::ii#2 -- vbuz1=_inc_vbuz1 
    inc ii
    // [69] if((byte) make_plasma_charset::ii#1<(byte) 8) goto make_plasma_charset::@3 -- vbuz1_lt_vbuc1_then_la1 
    lda ii
    cmp #8
    bcc b3_from_b4
    jmp b6
    // make_plasma_charset::@6
  b6:
    // [70] (word~) make_plasma_charset::$8 ← (word) make_plasma_charset::c#2 << (byte) 3 -- vwuz1=vwuz2_rol_3 
    lda c
    asl
    sta _8
    lda c+1
    rol
    sta _8+1
    asl _8
    rol _8+1
    asl _8
    rol _8+1
    // [71] (word~) make_plasma_charset::$9 ← (word~) make_plasma_charset::$8 + (byte) make_plasma_charset::i#7 -- vwuz1=vwuz2_plus_vbuz3 
    lda i
    clc
    adc _8
    sta _9
    lda #0
    adc _8+1
    sta _9+1
    // [72] (byte*~) make_plasma_charset::$16 ← (const byte*) CHARSET#0 + (word~) make_plasma_charset::$9 -- pbuz1=pbuc1_plus_vwuz2 
    lda _9
    clc
    adc #<CHARSET
    sta _16
    lda _9+1
    adc #>CHARSET
    sta _16+1
    // [73] *((byte*~) make_plasma_charset::$16) ← (byte) make_plasma_charset::b#3 -- _deref_pbuz1=vbuz2 
    lda b
    ldy #0
    sta (_16),y
    // [74] (byte) make_plasma_charset::i#1 ← ++ (byte) make_plasma_charset::i#7 -- vbuz1=_inc_vbuz1 
    inc i
    // [75] if((byte) make_plasma_charset::i#1<(byte) 8) goto make_plasma_charset::@2 -- vbuz1_lt_vbuc1_then_la1 
    lda i
    cmp #8
    bcc b2_from_b6
    jmp b7
    // make_plasma_charset::@7
  b7:
    // [76] (byte~) make_plasma_charset::$11 ← (word) make_plasma_charset::c#2 & (byte) 7 -- vbuz1=vwuz2_band_vbuc1 
    lda c
    and #7
    sta _11
    // [77] if((byte~) make_plasma_charset::$11!=(byte) 0) goto make_plasma_charset::@9 -- vbuz1_neq_0_then_la1 
    lda _11
    cmp #0
    bne b9_from_b7
    // [78] phi from make_plasma_charset::@7 to make_plasma_charset::@8 [phi:make_plasma_charset::@7->make_plasma_charset::@8]
  b8_from_b7:
    jmp b8
    // make_plasma_charset::@8
  b8:
    // [79] call print_char 
    jsr print_char
    // [80] phi from make_plasma_charset::@7 make_plasma_charset::@8 to make_plasma_charset::@9 [phi:make_plasma_charset::@7/make_plasma_charset::@8->make_plasma_charset::@9]
  b9_from_b7:
  b9_from_b8:
    // [80] phi (byte*) print_char_cursor#18 = (byte*) print_char_cursor#49 [phi:make_plasma_charset::@7/make_plasma_charset::@8->make_plasma_charset::@9#0] -- register_copy 
    jmp b9
    // make_plasma_charset::@9
  b9:
    // [81] (word) make_plasma_charset::c#1 ← ++ (word) make_plasma_charset::c#2 -- vwuz1=_inc_vwuz1 
    inc c
    bne !+
    inc c+1
  !:
    // [82] if((word) make_plasma_charset::c#1<(word) $100) goto make_plasma_charset::@1 -- vwuz1_lt_vwuc1_then_la1 
    lda c+1
    cmp #>$100
    bcc b1_from_b9
    bne !+
    lda c
    cmp #<$100
    bcc b1_from_b9
  !:
    jmp breturn
    // make_plasma_charset::@return
  breturn:
    // [83] return 
    rts
    bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80
}
  // print_char
// Print a single char
print_char: {
    .const ch = '.'
    // [84] *((byte*) print_char_cursor#49) ← (const byte) print_char::ch#0 -- _deref_pbuz1=vbuc1 
    lda #ch
    ldy #0
    sta (print_char_cursor),y
    // [85] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#49 -- pbuz1=_inc_pbuz1 
    inc print_char_cursor
    bne !+
    inc print_char_cursor+1
  !:
    jmp breturn
    // print_char::@return
  breturn:
    // [86] return 
    rts
}
  // sid_rnd
// Get a random number from the SID voice 3,
// Must be initialized with sid_rnd_init()
sid_rnd: {
    .label return = $5c
    .label return_2 = $52
    // [87] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 
    lda SID_VOICE3_OSC
    sta return
    jmp breturn
    // sid_rnd::@return
  breturn:
    // [88] return 
    rts
}
  // print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    // [90] call memset 
    // [44] phi from print_cls to memset [phi:print_cls->memset]
  memset_from_print_cls:
    // [44] phi (byte) memset::c#3 = (byte) ' ' [phi:print_cls->memset#0] -- vbuz1=vbuc1 
    lda #' '
    sta memset.c
    // [44] phi (void*) memset::str#3 = (void*)(const byte*) print_line_cursor#0 [phi:print_cls->memset#1] -- pvoz1=pvoc1 
    lda #<print_line_cursor
    sta memset.str
    lda #>print_line_cursor
    sta memset.str+1
    jsr memset
    jmp breturn
    // print_cls::@return
  breturn:
    // [91] return 
    rts
}
  // sid_rnd_init
// Initialize SID voice 3 for random number generation
sid_rnd_init: {
    // [92] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff -- _deref_pwuc1=vwuc2 
    lda #<$ffff
    sta SID_VOICE3_FREQ
    lda #>$ffff
    sta SID_VOICE3_FREQ+1
    // [93] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 
    lda #SID_CONTROL_NOISE
    sta SID_VOICE3_CONTROL
    jmp breturn
    // sid_rnd_init::@return
  breturn:
    // [94] return 
    rts
}
  // init_angle_screen
// Populates 1000 bytes (a screen) with values representing the angle to the center.
// Utilizes symmetry around the  center
// init_angle_screen(byte* zeropage($47) screen)
init_angle_screen: {
    .label _2 = $5d
    .label _3 = $5e
    .label _6 = $61
    .label _10 = $6c
    .label _12 = $6f
    .label _13 = $70
    .label _14 = $71
    .label screen = $47
    .label screen_topline = $1b
    .label screen_bottomline = $19
    .label xw = $5f
    .label yw = $62
    .label angle_w = $6a
    .label ang_w = $6e
    .label x = $1d
    .label xb = $1e
    .label y = $18
    // [95] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c -- pbuz1=pbuz2_plus_vwuc1 
    lda screen
    clc
    adc #<$28*$c
    sta screen_topline
    lda screen+1
    adc #>$28*$c
    sta screen_topline+1
    // [96] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c -- pbuz1=pbuz2_plus_vwuc1 
    lda screen
    clc
    adc #<$28*$c
    sta screen_bottomline
    lda screen+1
    adc #>$28*$c
    sta screen_bottomline+1
    // [97] phi from init_angle_screen to init_angle_screen::@1 [phi:init_angle_screen->init_angle_screen::@1]
  b1_from_init_angle_screen:
    // [97] phi (byte*) init_angle_screen::screen_topline#5 = (byte*) init_angle_screen::screen_topline#0 [phi:init_angle_screen->init_angle_screen::@1#0] -- register_copy 
    // [97] phi (byte*) init_angle_screen::screen_bottomline#5 = (byte*) init_angle_screen::screen_bottomline#0 [phi:init_angle_screen->init_angle_screen::@1#1] -- register_copy 
    // [97] phi (byte) init_angle_screen::y#4 = (byte) 0 [phi:init_angle_screen->init_angle_screen::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta y
    jmp b1
    // [97] phi from init_angle_screen::@3 to init_angle_screen::@1 [phi:init_angle_screen::@3->init_angle_screen::@1]
  b1_from_b3:
    // [97] phi (byte*) init_angle_screen::screen_topline#5 = (byte*) init_angle_screen::screen_topline#1 [phi:init_angle_screen::@3->init_angle_screen::@1#0] -- register_copy 
    // [97] phi (byte*) init_angle_screen::screen_bottomline#5 = (byte*) init_angle_screen::screen_bottomline#1 [phi:init_angle_screen::@3->init_angle_screen::@1#1] -- register_copy 
    // [97] phi (byte) init_angle_screen::y#4 = (byte) init_angle_screen::y#1 [phi:init_angle_screen::@3->init_angle_screen::@1#2] -- register_copy 
    jmp b1
    // init_angle_screen::@1
  b1:
    // [98] phi from init_angle_screen::@1 to init_angle_screen::@2 [phi:init_angle_screen::@1->init_angle_screen::@2]
  b2_from_b1:
    // [98] phi (byte) init_angle_screen::xb#2 = (byte) $27 [phi:init_angle_screen::@1->init_angle_screen::@2#0] -- vbuz1=vbuc1 
    lda #$27
    sta xb
    // [98] phi (byte) init_angle_screen::x#2 = (byte) 0 [phi:init_angle_screen::@1->init_angle_screen::@2#1] -- vbuz1=vbuc1 
    lda #0
    sta x
    jmp b2
    // [98] phi from init_angle_screen::@4 to init_angle_screen::@2 [phi:init_angle_screen::@4->init_angle_screen::@2]
  b2_from_b4:
    // [98] phi (byte) init_angle_screen::xb#2 = (byte) init_angle_screen::xb#1 [phi:init_angle_screen::@4->init_angle_screen::@2#0] -- register_copy 
    // [98] phi (byte) init_angle_screen::x#2 = (byte) init_angle_screen::x#1 [phi:init_angle_screen::@4->init_angle_screen::@2#1] -- register_copy 
    jmp b2
    // init_angle_screen::@2
  b2:
    // [99] (byte~) init_angle_screen::$2 ← (byte) init_angle_screen::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 
    lda x
    asl
    sta _2
    // [100] (byte~) init_angle_screen::$3 ← (byte) $27 - (byte~) init_angle_screen::$2 -- vbuz1=vbuc1_minus_vbuz2 
    lda #$27
    sec
    sbc _2
    sta _3
    // [101] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$3 w= (byte) 0 -- vwuz1=vbuz2_word_vbuc1 
    lda _3
    ldy #0
    sta xw+1
    sty xw
    // [102] (byte~) init_angle_screen::$6 ← (byte) init_angle_screen::y#4 << (byte) 1 -- vbuz1=vbuz2_rol_1 
    lda y
    asl
    sta _6
    // [103] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$6 w= (byte) 0 -- vwuz1=vbuz2_word_vbuc1 
    lda _6
    ldy #0
    sta yw+1
    sty yw
    // [104] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 -- vwsz1=vwsz2 
    lda xw
    sta atan2_16.x
    lda xw+1
    sta atan2_16.x+1
    // [105] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 -- vwsz1=vwsz2 
    lda yw
    sta atan2_16.y
    lda yw+1
    sta atan2_16.y+1
    // [106] call atan2_16 
    jsr atan2_16
    // [107] (word) atan2_16::return#2 ← (word) atan2_16::return#0 -- vwuz1=vwuz2 
    lda atan2_16.return
    sta atan2_16.return_2
    lda atan2_16.return+1
    sta atan2_16.return_2+1
    jmp b4
    // init_angle_screen::@4
  b4:
    // [108] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 -- vwuz1=vwuz2 
    lda atan2_16.return_2
    sta angle_w
    lda atan2_16.return_2+1
    sta angle_w+1
    // [109] (word~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (byte) $80 -- vwuz1=vwuz2_plus_vbuc1 
    lda #$80
    clc
    adc angle_w
    sta _10
    lda #0
    adc angle_w+1
    sta _10+1
    // [110] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$10 -- vbuz1=_hi_vwuz2 
    lda _10+1
    sta ang_w
    // [111] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda ang_w
    ldy xb
    sta (screen_bottomline),y
    // [112] (byte~) init_angle_screen::$12 ← - (byte) init_angle_screen::ang_w#0 -- vbuz1=_neg_vbuz2 
    lda ang_w
    eor #$ff
    clc
    adc #1
    sta _12
    // [113] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$12 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda _12
    ldy xb
    sta (screen_topline),y
    // [114] (byte~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 -- vbuz1=vbuc1_plus_vbuz2 
    lax ang_w
    axs #-[$80]
    stx _13
    // [115] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda _13
    ldy x
    sta (screen_topline),y
    // [116] (byte~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 -- vbuz1=vbuc1_minus_vbuz2 
    lda #$80
    sec
    sbc ang_w
    sta _14
    // [117] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda _14
    ldy x
    sta (screen_bottomline),y
    // [118] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2 -- vbuz1=_inc_vbuz1 
    inc x
    // [119] (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2 -- vbuz1=_dec_vbuz1 
    dec xb
    // [120] if((byte) init_angle_screen::x#1<(byte) $13+(byte) 1) goto init_angle_screen::@2 -- vbuz1_lt_vbuc1_then_la1 
    lda x
    cmp #$13+1
    bcc b2_from_b4
    jmp b3
    // init_angle_screen::@3
  b3:
    // [121] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#5 - (byte) $28 -- pbuz1=pbuz1_minus_vwuc1 
    lda screen_topline
    sec
    sbc #<$28
    sta screen_topline
    lda screen_topline+1
    sbc #>$28
    sta screen_topline+1
    // [122] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#5 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc screen_bottomline
    sta screen_bottomline
    bcc !+
    inc screen_bottomline+1
  !:
    // [123] (byte) init_angle_screen::y#1 ← ++ (byte) init_angle_screen::y#4 -- vbuz1=_inc_vbuz1 
    inc y
    // [124] if((byte) init_angle_screen::y#1!=(byte) $d) goto init_angle_screen::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$d
    cmp y
    bne b1_from_b3
    jmp breturn
    // init_angle_screen::@return
  breturn:
    // [125] return 
    rts
}
  // atan2_16
// Find the atan2(x, y) - which is the angle of the line from (0,0) to (x,y)
// Finding the angle requires a binary search using CORDIC_ITERATIONS_16
// Returns the angle in hex-degrees (0=0, 0x8000=PI, 0x10000=2*PI)
// atan2_16(signed word zeropage($64) x, signed word zeropage($66) y)
atan2_16: {
    .label _2 = $1f
    .label _7 = $21
    .label _23 = $73
    .label _24 = $72
    .label yi = $1f
    .label xi = $21
    .label angle = $26
    .label xd = $2b
    .label yd = $29
    .label shift = $28
    .label angle_2 = $24
    .label angle_3 = $24
    .label i = $23
    .label return = $26
    .label x = $64
    .label y = $66
    .label return_2 = $68
    .label angle_6 = $24
    .label angle_12 = $24
    .label angle_13 = $24
    // [126] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 -- vwsz1_ge_0_then_la1 
    lda y+1
    bpl b1
    jmp b2
    // atan2_16::@2
  b2:
    // [127] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 -- vwsz1=_neg_vwsz2 
    sec
    lda #0
    sbc y
    sta _2
    lda #0
    sbc y+1
    sta _2+1
    // [128] phi from atan2_16::@1 atan2_16::@2 to atan2_16::@3 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3]
  b3_from_b1:
  b3_from_b2:
    // [128] phi (signed word) atan2_16::yi#0 = (signed word~) atan2_16::yi#16 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3#0] -- register_copy 
    jmp b3
    // atan2_16::@3
  b3:
    // [129] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 -- vwsz1_ge_0_then_la1 
    lda x+1
    bpl b4
    jmp b5
    // atan2_16::@5
  b5:
    // [130] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 -- vwsz1=_neg_vwsz2 
    sec
    lda #0
    sbc x
    sta _7
    lda #0
    sbc x+1
    sta _7+1
    // [131] phi from atan2_16::@4 atan2_16::@5 to atan2_16::@6 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6]
  b6_from_b4:
  b6_from_b5:
    // [131] phi (signed word) atan2_16::xi#0 = (signed word~) atan2_16::xi#13 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6#0] -- register_copy 
    jmp b6
    // atan2_16::@6
  b6:
    // [132] phi from atan2_16::@6 to atan2_16::@10 [phi:atan2_16::@6->atan2_16::@10]
  b10_from_b6:
    // [132] phi (word) atan2_16::angle#12 = (byte) 0 [phi:atan2_16::@6->atan2_16::@10#0] -- vwuz1=vbuc1 
    lda #<0
    sta angle_12
    lda #>0
    sta angle_12+1
    // [132] phi (byte) atan2_16::i#2 = (byte) 0 [phi:atan2_16::@6->atan2_16::@10#1] -- vbuz1=vbuc1 
    lda #0
    sta i
    // [132] phi (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#0 [phi:atan2_16::@6->atan2_16::@10#2] -- register_copy 
    // [132] phi (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#0 [phi:atan2_16::@6->atan2_16::@10#3] -- register_copy 
    jmp b10
    // atan2_16::@10
  b10:
    // [133] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 -- vwsz1_neq_0_then_la1 
    lda yi+1
    bne b11
    lda yi
    bne b11
    // [134] phi from atan2_16::@10 atan2_16::@19 to atan2_16::@12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12]
  b12_from_b10:
  b12_from_b19:
    // [134] phi (word) atan2_16::angle#6 = (word) atan2_16::angle#12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12#0] -- register_copy 
    jmp b12
    // atan2_16::@12
  b12:
    // [135] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 -- vwuz1=vwuz2_ror_1 
    lda angle_6+1
    lsr
    sta angle+1
    lda angle_6
    ror
    sta angle
    // [136] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 -- vwsz1_ge_0_then_la1 
    lda x+1
    bpl b7_from_b12
    jmp b21
    // atan2_16::@21
  b21:
    // [137] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 -- vwuz1=vwuc1_minus_vwuz1 
    sec
    lda #<$8000
    sbc angle
    sta angle
    lda #>$8000
    sbc angle+1
    sta angle+1
    // [138] phi from atan2_16::@12 atan2_16::@21 to atan2_16::@7 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7]
  b7_from_b12:
  b7_from_b21:
    // [138] phi (word) atan2_16::angle#11 = (word) atan2_16::angle#1 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7#0] -- register_copy 
    jmp b7
    // atan2_16::@7
  b7:
    // [139] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 -- vwsz1_ge_0_then_la1 
    lda y+1
    bpl b8_from_b7
    jmp b9
    // atan2_16::@9
  b9:
    // [140] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 -- vwuz1=_neg_vwuz1 
    sec
    lda #0
    sbc angle
    sta angle
    lda #0
    sbc angle+1
    sta angle+1
    // [141] phi from atan2_16::@7 atan2_16::@9 to atan2_16::@8 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8]
  b8_from_b7:
  b8_from_b9:
    // [141] phi (word) atan2_16::return#0 = (word) atan2_16::angle#11 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8#0] -- register_copy 
    jmp b8
    // atan2_16::@8
  b8:
    jmp breturn
    // atan2_16::@return
  breturn:
    // [142] return 
    rts
    // atan2_16::@11
  b11:
    // [143] (byte~) atan2_16::shift#5 ← (byte) atan2_16::i#2 -- vbuz1=vbuz2 
    lda i
    sta shift
    // [144] (signed word~) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 -- vwsz1=vwsz2 
    lda xi
    sta xd
    lda xi+1
    sta xd+1
    // [145] (signed word~) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 -- vwsz1=vwsz2 
    lda yi
    sta yd
    lda yi+1
    sta yd+1
    // [146] phi from atan2_16::@11 atan2_16::@14 to atan2_16::@13 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13]
  b13_from_b11:
  b13_from_b14:
    // [146] phi (signed word) atan2_16::yd#3 = (signed word~) atan2_16::yd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#0] -- register_copy 
    // [146] phi (signed word) atan2_16::xd#3 = (signed word~) atan2_16::xd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#1] -- register_copy 
    // [146] phi (byte) atan2_16::shift#2 = (byte~) atan2_16::shift#5 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#2] -- register_copy 
    jmp b13
    // atan2_16::@13
  b13:
    // [147] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuz1_ge_vbuc1_then_la1 
    lda shift
    cmp #2
    bcs b14
    jmp b15
    // atan2_16::@15
  b15:
    // [148] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17 -- vbuc1_eq_vbuz1_then_la1 
    lda #0
    cmp shift
    beq b17_from_b15
    jmp b16
    // atan2_16::@16
  b16:
    // [149] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 -- vwsz1=vwsz1_ror_1 
    lda xd+1
    cmp #$80
    ror xd+1
    ror xd
    // [150] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 -- vwsz1=vwsz1_ror_1 
    lda yd+1
    cmp #$80
    ror yd+1
    ror yd
    // [151] phi from atan2_16::@15 atan2_16::@16 to atan2_16::@17 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17]
  b17_from_b15:
  b17_from_b16:
    // [151] phi (signed word) atan2_16::xd#5 = (signed word) atan2_16::xd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#0] -- register_copy 
    // [151] phi (signed word) atan2_16::yd#5 = (signed word) atan2_16::yd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#1] -- register_copy 
    jmp b17
    // atan2_16::@17
  b17:
    // [152] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 -- vwsz1_ge_0_then_la1 
    lda yi+1
    bpl b18
    jmp b20
    // atan2_16::@20
  b20:
    // [153] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 -- vwsz1=vwsz1_minus_vwsz2 
    lda xi
    sec
    sbc yd
    sta xi
    lda xi+1
    sbc yd+1
    sta xi+1
    // [154] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 -- vwsz1=vwsz1_plus_vwsz2 
    lda yi
    clc
    adc xd
    sta yi
    lda yi+1
    adc xd+1
    sta yi+1
    // [155] (byte~) atan2_16::$24 ← (byte) atan2_16::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 
    lda i
    asl
    sta _24
    // [156] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$24) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuz2 
    ldy _24
    sec
    lda angle_3
    sbc CORDIC_ATAN2_ANGLES_16,y
    sta angle_3
    lda angle_3+1
    sbc CORDIC_ATAN2_ANGLES_16+1,y
    sta angle_3+1
    // [157] phi from atan2_16::@18 atan2_16::@20 to atan2_16::@19 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19]
  b19_from_b18:
  b19_from_b20:
    // [157] phi (signed word) atan2_16::xi#8 = (signed word) atan2_16::xi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#0] -- register_copy 
    // [157] phi (word) atan2_16::angle#13 = (word) atan2_16::angle#2 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#1] -- register_copy 
    // [157] phi (signed word) atan2_16::yi#8 = (signed word) atan2_16::yi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#2] -- register_copy 
    jmp b19
    // atan2_16::@19
  b19:
    // [158] (byte) atan2_16::i#1 ← ++ (byte) atan2_16::i#2 -- vbuz1=_inc_vbuz1 
    inc i
    // [159] if((byte) atan2_16::i#1==(const byte) CORDIC_ITERATIONS_16#0-(byte) 1+(byte) 1) goto atan2_16::@12 -- vbuz1_eq_vbuc1_then_la1 
    lda #CORDIC_ITERATIONS_16-1+1
    cmp i
    beq b12_from_b19
    // [132] phi from atan2_16::@19 to atan2_16::@10 [phi:atan2_16::@19->atan2_16::@10]
  b10_from_b19:
    // [132] phi (word) atan2_16::angle#12 = (word) atan2_16::angle#13 [phi:atan2_16::@19->atan2_16::@10#0] -- register_copy 
    // [132] phi (byte) atan2_16::i#2 = (byte) atan2_16::i#1 [phi:atan2_16::@19->atan2_16::@10#1] -- register_copy 
    // [132] phi (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#8 [phi:atan2_16::@19->atan2_16::@10#2] -- register_copy 
    // [132] phi (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#8 [phi:atan2_16::@19->atan2_16::@10#3] -- register_copy 
    jmp b10
    // atan2_16::@18
  b18:
    // [160] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 -- vwsz1=vwsz1_plus_vwsz2 
    lda xi
    clc
    adc yd
    sta xi
    lda xi+1
    adc yd+1
    sta xi+1
    // [161] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 -- vwsz1=vwsz1_minus_vwsz2 
    lda yi
    sec
    sbc xd
    sta yi
    lda yi+1
    sbc xd+1
    sta yi+1
    // [162] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 
    lda i
    asl
    sta _23
    // [163] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$23) -- vwuz1=vwuz1_plus_pwuc1_derefidx_vbuz2 
    ldy _23
    clc
    lda angle_2
    adc CORDIC_ATAN2_ANGLES_16,y
    sta angle_2
    lda angle_2+1
    adc CORDIC_ATAN2_ANGLES_16+1,y
    sta angle_2+1
    jmp b19_from_b18
    // atan2_16::@14
  b14:
    // [164] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2 
    lda xd+1
    cmp #$80
    ror xd+1
    ror xd
    lda xd+1
    cmp #$80
    ror xd+1
    ror xd
    // [165] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2 
    lda yd+1
    cmp #$80
    ror yd+1
    ror yd
    lda yd+1
    cmp #$80
    ror yd+1
    ror yd
    // [166] (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#2 - (byte) 2 -- vbuz1=vbuz1_minus_2 
    dec shift
    dec shift
    jmp b13_from_b14
    // atan2_16::@4
  b4:
    // [167] (signed word~) atan2_16::xi#13 ← (signed word) atan2_16::x#0 -- vwsz1=vwsz2 
    lda x
    sta xi
    lda x+1
    sta xi+1
    jmp b6_from_b4
    // atan2_16::@1
  b1:
    // [168] (signed word~) atan2_16::yi#16 ← (signed word) atan2_16::y#0 -- vwsz1=vwsz2 
    lda y
    sta yi
    lda y+1
    sta yi+1
    jmp b3_from_b1
}
  // init_dist_screen
// Populates 1000 bytes (a screen) with values representing the distance to the center.
// The actual value stored is distance*2 to increase precision
// init_dist_screen(byte* zeropage($2e) screen)
init_dist_screen: {
    .label _5 = $32
    .label _7 = $32
    .label _13 = $35
    .label _15 = $35
    .label screen = $2e
    .label screen_bottomline = $30
    .label y2 = $74
    .label yd = $32
    .label yds = $77
    .label x2 = $79
    .label xd = $35
    .label xds = $7c
    .label ds = $7e
    .label d = $83
    .label x = $33
    .label xb = $34
    .label screen_topline = $2e
    .label y = $2d
    // [170] call init_squares 
    // [241] phi from init_dist_screen to init_squares [phi:init_dist_screen->init_squares]
  init_squares_from_init_dist_screen:
    jsr init_squares
    jmp b10
    // init_dist_screen::@10
  b10:
    // [171] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 -- pbuz1=pbuz2_plus_vwuc1 
    lda screen
    clc
    adc #<$28*$18
    sta screen_bottomline
    lda screen+1
    adc #>$28*$18
    sta screen_bottomline+1
    // [172] phi from init_dist_screen::@10 to init_dist_screen::@1 [phi:init_dist_screen::@10->init_dist_screen::@1]
  b1_from_b10:
    // [172] phi (byte*) init_dist_screen::screen_bottomline#10 = (byte*) init_dist_screen::screen_bottomline#0 [phi:init_dist_screen::@10->init_dist_screen::@1#0] -- register_copy 
    // [172] phi (byte*) init_dist_screen::screen_topline#10 = (byte*) init_dist_screen::screen#0 [phi:init_dist_screen::@10->init_dist_screen::@1#1] -- register_copy 
    // [172] phi (byte) init_dist_screen::y#10 = (byte) 0 [phi:init_dist_screen::@10->init_dist_screen::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta y
    jmp b1
    // [172] phi from init_dist_screen::@9 to init_dist_screen::@1 [phi:init_dist_screen::@9->init_dist_screen::@1]
  b1_from_b9:
    // [172] phi (byte*) init_dist_screen::screen_bottomline#10 = (byte*) init_dist_screen::screen_bottomline#1 [phi:init_dist_screen::@9->init_dist_screen::@1#0] -- register_copy 
    // [172] phi (byte*) init_dist_screen::screen_topline#10 = (byte*) init_dist_screen::screen_topline#1 [phi:init_dist_screen::@9->init_dist_screen::@1#1] -- register_copy 
    // [172] phi (byte) init_dist_screen::y#10 = (byte) init_dist_screen::y#1 [phi:init_dist_screen::@9->init_dist_screen::@1#2] -- register_copy 
    jmp b1
    // init_dist_screen::@1
  b1:
    // [173] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 -- vbuz1=vbuz2_rol_1 
    lda y
    asl
    sta y2
    // [174] if((byte) init_dist_screen::y2#0>=(byte) $18) goto init_dist_screen::@2 -- vbuz1_ge_vbuc1_then_la1 
    lda y2
    cmp #$18
    bcs b2
    jmp b3
    // init_dist_screen::@3
  b3:
    // [175] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 -- vbuz1=vbuc1_minus_vbuz2 
    lda #$18
    sec
    sbc y2
    sta _5
    // [176] 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:
    // [176] phi (byte) init_dist_screen::yd#0 = (byte~) 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:
    // [177] (byte) sqr::val#0 ← (byte) init_dist_screen::yd#0 -- vbuz1=vbuz2 
    lda yd
    sta sqr.val
    // [178] call sqr 
    // [237] phi from init_dist_screen::@4 to sqr [phi:init_dist_screen::@4->sqr]
  sqr_from_b4:
    // [237] phi (byte) sqr::val#2 = (byte) sqr::val#0 [phi:init_dist_screen::@4->sqr#0] -- register_copy 
    jsr sqr
    // [179] (word) sqr::return#2 ← (word) sqr::return#0 -- vwuz1=vwuz2 
    lda sqr.return
    sta sqr.return_2
    lda sqr.return+1
    sta sqr.return_2+1
    jmp b11
    // init_dist_screen::@11
  b11:
    // [180] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 -- vwuz1=vwuz2 
    lda sqr.return_2
    sta yds
    lda sqr.return_2+1
    sta yds+1
    // [181] phi from init_dist_screen::@11 to init_dist_screen::@5 [phi:init_dist_screen::@11->init_dist_screen::@5]
  b5_from_b11:
    // [181] phi (byte) init_dist_screen::xb#2 = (byte) $27 [phi:init_dist_screen::@11->init_dist_screen::@5#0] -- vbuz1=vbuc1 
    lda #$27
    sta xb
    // [181] phi (byte) init_dist_screen::x#2 = (byte) 0 [phi:init_dist_screen::@11->init_dist_screen::@5#1] -- vbuz1=vbuc1 
    lda #0
    sta x
    jmp b5
    // [181] phi from init_dist_screen::@13 to init_dist_screen::@5 [phi:init_dist_screen::@13->init_dist_screen::@5]
  b5_from_b13:
    // [181] phi (byte) init_dist_screen::xb#2 = (byte) init_dist_screen::xb#1 [phi:init_dist_screen::@13->init_dist_screen::@5#0] -- register_copy 
    // [181] phi (byte) init_dist_screen::x#2 = (byte) init_dist_screen::x#1 [phi:init_dist_screen::@13->init_dist_screen::@5#1] -- register_copy 
    jmp b5
    // init_dist_screen::@5
  b5:
    // [182] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 
    lda x
    asl
    sta x2
    // [183] if((byte) init_dist_screen::x2#0>=(byte) $27) goto init_dist_screen::@6 -- vbuz1_ge_vbuc1_then_la1 
    lda x2
    cmp #$27
    bcs b6
    jmp b7
    // init_dist_screen::@7
  b7:
    // [184] (byte~) init_dist_screen::$13 ← (byte) $27 - (byte) init_dist_screen::x2#0 -- vbuz1=vbuc1_minus_vbuz2 
    lda #$27
    sec
    sbc x2
    sta _13
    // [185] phi from init_dist_screen::@6 init_dist_screen::@7 to init_dist_screen::@8 [phi:init_dist_screen::@6/init_dist_screen::@7->init_dist_screen::@8]
  b8_from_b6:
  b8_from_b7:
    // [185] phi (byte) init_dist_screen::xd#0 = (byte~) init_dist_screen::$15 [phi:init_dist_screen::@6/init_dist_screen::@7->init_dist_screen::@8#0] -- register_copy 
    jmp b8
    // init_dist_screen::@8
  b8:
    // [186] (byte) sqr::val#1 ← (byte) init_dist_screen::xd#0 -- vbuz1=vbuz2 
    lda xd
    sta sqr.val
    // [187] call sqr 
    // [237] phi from init_dist_screen::@8 to sqr [phi:init_dist_screen::@8->sqr]
  sqr_from_b8:
    // [237] phi (byte) sqr::val#2 = (byte) sqr::val#1 [phi:init_dist_screen::@8->sqr#0] -- register_copy 
    jsr sqr
    // [188] (word) sqr::return#3 ← (word) sqr::return#0 -- vwuz1=vwuz2 
    lda sqr.return
    sta sqr.return_3
    lda sqr.return+1
    sta sqr.return_3+1
    jmp b12
    // init_dist_screen::@12
  b12:
    // [189] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 -- vwuz1=vwuz2 
    lda sqr.return_3
    sta xds
    lda sqr.return_3+1
    sta xds+1
    // [190] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 -- vwuz1=vwuz2_plus_vwuz3 
    lda xds
    clc
    adc yds
    sta ds
    lda xds+1
    adc yds+1
    sta ds+1
    // [191] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 -- vwuz1=vwuz2 
    lda ds
    sta sqrt.val
    lda ds+1
    sta sqrt.val+1
    // [192] call sqrt 
    jsr sqrt
    // [193] (byte) sqrt::return#2 ← (byte) sqrt::return#0 -- vbuz1=vbuz2 
    lda sqrt.return
    sta sqrt.return_2
    jmp b13
    // init_dist_screen::@13
  b13:
    // [194] (byte) init_dist_screen::d#0 ← (byte) sqrt::return#2 -- vbuz1=vbuz2 
    lda sqrt.return_2
    sta d
    // [195] *((byte*) init_dist_screen::screen_topline#10 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda d
    ldy x
    sta (screen_topline),y
    // [196] *((byte*) init_dist_screen::screen_bottomline#10 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda d
    ldy x
    sta (screen_bottomline),y
    // [197] *((byte*) init_dist_screen::screen_topline#10 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda d
    ldy xb
    sta (screen_topline),y
    // [198] *((byte*) init_dist_screen::screen_bottomline#10 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda d
    ldy xb
    sta (screen_bottomline),y
    // [199] (byte) init_dist_screen::x#1 ← ++ (byte) init_dist_screen::x#2 -- vbuz1=_inc_vbuz1 
    inc x
    // [200] (byte) init_dist_screen::xb#1 ← -- (byte) init_dist_screen::xb#2 -- vbuz1=_dec_vbuz1 
    dec xb
    // [201] if((byte) init_dist_screen::x#1<(byte) $13+(byte) 1) goto init_dist_screen::@5 -- vbuz1_lt_vbuc1_then_la1 
    lda x
    cmp #$13+1
    bcc b5_from_b13
    jmp b9
    // init_dist_screen::@9
  b9:
    // [202] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#10 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc screen_topline
    sta screen_topline
    bcc !+
    inc screen_topline+1
  !:
    // [203] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#10 - (byte) $28 -- pbuz1=pbuz1_minus_vwuc1 
    lda screen_bottomline
    sec
    sbc #<$28
    sta screen_bottomline
    lda screen_bottomline+1
    sbc #>$28
    sta screen_bottomline+1
    // [204] (byte) init_dist_screen::y#1 ← ++ (byte) init_dist_screen::y#10 -- vbuz1=_inc_vbuz1 
    inc y
    // [205] if((byte) init_dist_screen::y#1!=(byte) $d) goto init_dist_screen::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$d
    cmp y
    bne b1_from_b9
    jmp breturn
    // init_dist_screen::@return
  breturn:
    // [206] return 
    rts
    // init_dist_screen::@6
  b6:
    // [207] (byte~) init_dist_screen::$15 ← (byte) init_dist_screen::x2#0 - (byte) $27 -- vbuz1=vbuz2_minus_vbuc1 
    lax x2
    axs #$27
    stx _15
    jmp b8_from_b6
    // init_dist_screen::@2
  b2:
    // [208] (byte~) init_dist_screen::$7 ← (byte) init_dist_screen::y2#0 - (byte) $18 -- vbuz1=vbuz2_minus_vbuc1 
    lax y2
    axs #$18
    stx _7
    jmp b4_from_b2
}
  // sqrt
// Find the (integer) square root of a word 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()
// sqrt(word zeropage($80) val)
sqrt: {
    .label _1 = $8c
    .label _3 = $8a
    .label found = $88
    .label return = $8e
    .label val = $80
    .label return_2 = $82
    // [209] (word) bsearch16u::key#0 ← (word) sqrt::val#0 -- vwuz1=vwuz2 
    lda val
    sta bsearch16u.key
    lda val+1
    sta bsearch16u.key+1
    // [210] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 -- pwuz1=pwuz2 
    lda SQUARES
    sta bsearch16u.items
    lda SQUARES+1
    sta bsearch16u.items+1
    // [211] call bsearch16u 
    // [218] phi from sqrt to bsearch16u [phi:sqrt->bsearch16u]
  bsearch16u_from_sqrt:
    jsr bsearch16u
    // [212] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 -- pwuz1=pwuz2 
    lda bsearch16u.return
    sta bsearch16u.return_3
    lda bsearch16u.return+1
    sta bsearch16u.return_3+1
    jmp b1
    // sqrt::@1
  b1:
    // [213] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 -- pwuz1=pwuz2 
    lda bsearch16u.return_3
    sta found
    lda bsearch16u.return_3+1
    sta found+1
    // [214] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 -- vwuz1=pwuz2_minus_pwuz3 
    lda found
    sec
    sbc SQUARES
    sta _3
    lda found+1
    sbc SQUARES+1
    sta _3+1
    // [215] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 -- vwuz1=vwuz2_ror_1 
    lda _3+1
    lsr
    sta _1+1
    lda _3
    ror
    sta _1
    // [216] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 -- vbuz1=_byte_vwuz2 
    lda _1
    sta return
    jmp breturn
    // sqrt::@return
  breturn:
    // [217] return 
    rts
}
  // bsearch16u
// Searches an array of nitems unsigned words, 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
// bsearch16u(word zeropage($84) key, word* zeropage($36) items, byte zeropage($38) num)
bsearch16u: {
    .label _2 = $36
    .label _6 = $8f
    .label _16 = $90
    .label pivot = $91
    .label result = $93
    .label return = $36
    .label num = $38
    .label items = $36
    .label key = $84
    .label return_3 = $86
    // [219] phi from bsearch16u to bsearch16u::@3 [phi:bsearch16u->bsearch16u::@3]
  b3_from_bsearch16u:
    // [219] phi (word*) bsearch16u::items#2 = (word*) bsearch16u::items#1 [phi:bsearch16u->bsearch16u::@3#0] -- register_copy 
    // [219] phi (byte) bsearch16u::num#3 = (const byte) NUM_SQUARES#3 [phi:bsearch16u->bsearch16u::@3#1] -- vbuz1=vbuc1 
    lda #NUM_SQUARES
    sta num
    jmp b3
    // bsearch16u::@3
  b3:
    // [220] if((byte) bsearch16u::num#3>(byte) 0) goto bsearch16u::@4 -- vbuz1_gt_0_then_la1 
    lda num
    bne b4
    jmp b5
    // bsearch16u::@5
  b5:
    // [221] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 -- _deref_pwuz1_le_vwuz2_then_la1 
    ldy #1
    lda (items),y
    cmp key+1
    bne !+
    dey
    lda (items),y
    cmp key
    beq b2_from_b5
  !:
    bcc b2_from_b5
    jmp b1
    // bsearch16u::@1
  b1:
    // [222] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD -- pwuz1=pwuz1_minus_vwuc1 
    lda _2
    sec
    sbc #<1*SIZEOF_WORD
    sta _2
    lda _2+1
    sbc #>1*SIZEOF_WORD
    sta _2+1
    // [223] phi from bsearch16u::@1 bsearch16u::@5 to bsearch16u::@2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2]
  b2_from_b1:
  b2_from_b5:
    // [223] phi (word*) bsearch16u::return#2 = (word*~) bsearch16u::$2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2#0] -- register_copy 
    jmp b2
    // bsearch16u::@2
  b2:
    // [224] phi from bsearch16u::@2 bsearch16u::@8 to bsearch16u::@return [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return]
  breturn_from_b2:
  breturn_from_b8:
    // [224] phi (word*) bsearch16u::return#1 = (word*) bsearch16u::return#2 [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return#0] -- register_copy 
    jmp breturn
    // bsearch16u::@return
  breturn:
    // [225] return 
    rts
    // bsearch16u::@4
  b4:
    // [226] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 -- vbuz1=vbuz2_ror_1 
    lda num
    lsr
    sta _6
    // [227] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 -- vbuz1=vbuz2_rol_1 
    lda _6
    asl
    sta _16
    // [228] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 -- pwuz1=pwuz2_plus_vbuz3 
    lda _16
    clc
    adc items
    sta pivot
    lda #0
    adc items+1
    sta pivot+1
    // [229] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) -- vwsz1=vwsz2_minus__deref_pwsz3 
    sec
    lda key
    ldy #0
    sbc (pivot),y
    sta result
    lda key+1
    iny
    sbc (pivot),y
    sta result+1
    // [230] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 -- vwsz1_neq_0_then_la1 
    lda result+1
    bne b6
    lda result
    bne b6
    jmp b8
    // bsearch16u::@8
  b8:
    // [231] (word*~) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 -- pwuz1=pwuz2 
    lda pivot
    sta return
    lda pivot+1
    sta return+1
    jmp breturn_from_b8
    // bsearch16u::@6
  b6:
    // [232] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 -- vwsz1_le_0_then_la1 
    lda result+1
    bmi b7_from_b6
    bne !+
    lda result
    beq b7_from_b6
  !:
    jmp b9
    // bsearch16u::@9
  b9:
    // [233] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD -- pwuz1=pwuz2_plus_vbuc1 
    lda #1*SIZEOF_WORD
    clc
    adc pivot
    sta items
    lda #0
    adc pivot+1
    sta items+1
    // [234] (byte) bsearch16u::num#1 ← -- (byte) bsearch16u::num#3 -- vbuz1=_dec_vbuz1 
    dec num
    // [235] phi from bsearch16u::@6 bsearch16u::@9 to bsearch16u::@7 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7]
  b7_from_b6:
  b7_from_b9:
    // [235] phi (word*) bsearch16u::items#8 = (word*) bsearch16u::items#2 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#0] -- register_copy 
    // [235] phi (byte) bsearch16u::num#5 = (byte) bsearch16u::num#3 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#1] -- register_copy 
    jmp b7
    // bsearch16u::@7
  b7:
    // [236] (byte) bsearch16u::num#0 ← (byte) bsearch16u::num#5 >> (byte) 1 -- vbuz1=vbuz1_ror_1 
    lsr num
    // [219] phi from bsearch16u::@7 to bsearch16u::@3 [phi:bsearch16u::@7->bsearch16u::@3]
  b3_from_b7:
    // [219] phi (word*) bsearch16u::items#2 = (word*) bsearch16u::items#8 [phi:bsearch16u::@7->bsearch16u::@3#0] -- register_copy 
    // [219] phi (byte) bsearch16u::num#3 = (byte) bsearch16u::num#0 [phi:bsearch16u::@7->bsearch16u::@3#1] -- register_copy 
    jmp b3
}
  // sqr
// Find the square of a byte value
// Uses a table of squares that must be initialized by calling init_squares()
// sqr(byte zeropage($39) val)
sqr: {
    .label _0 = $95
    .label return = $96
    .label val = $39
    .label return_2 = $75
    .label return_3 = $7a
    // [238] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 
    lda val
    asl
    sta _0
    // [239] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) -- vwuz1=pwuz2_derefidx_vbuz3 
    ldy _0
    lda (SQUARES),y
    sta return
    iny
    lda (SQUARES),y
    sta return+1
    jmp breturn
    // sqr::@return
  breturn:
    // [240] return 
    rts
}
  // init_squares
// Initialize squares table
// Uses iterative formula (x+1)^2 = x^2 + 2*x + 1
init_squares: {
    .label _3 = $9a
    .label _4 = $9b
    .label squares = $3c
    .label sqr = $3a
    .label i = $3e
    // [242] call malloc 
    // [254] phi from init_squares to malloc [phi:init_squares->malloc]
  malloc_from_init_squares:
    // [254] phi (word) malloc::size#3 = (const byte) NUM_SQUARES#3*(const byte) SIZEOF_WORD [phi:init_squares->malloc#0] -- vwuz1=vbuc1 
    lda #<NUM_SQUARES*SIZEOF_WORD
    sta malloc.size
    lda #>NUM_SQUARES*SIZEOF_WORD
    sta malloc.size+1
    // [254] phi (byte*) heap_head#12 = (byte*) heap_head#1 [phi:init_squares->malloc#1] -- register_copy 
    jsr malloc
    jmp b2
    // init_squares::@2
  b2:
    // [243] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 -- pvoz1=pvoz2 
    lda malloc.mem
    sta SQUARES
    lda malloc.mem+1
    sta SQUARES+1
    // [244] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 -- pwuz1=pwuz2 
    lda SQUARES
    sta squares
    lda SQUARES+1
    sta squares+1
    // [245] phi from init_squares::@2 to init_squares::@1 [phi:init_squares::@2->init_squares::@1]
  b1_from_b2:
    // [245] phi (byte) init_squares::i#2 = (byte) 0 [phi:init_squares::@2->init_squares::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
    // [245] phi (word*) init_squares::squares#2 = (word*) init_squares::squares#0 [phi:init_squares::@2->init_squares::@1#1] -- register_copy 
    // [245] phi (word) init_squares::sqr#2 = (byte) 0 [phi:init_squares::@2->init_squares::@1#2] -- vwuz1=vbuc1 
    lda #<0
    sta sqr
    lda #>0
    sta sqr+1
    jmp b1
    // [245] phi from init_squares::@1 to init_squares::@1 [phi:init_squares::@1->init_squares::@1]
  b1_from_b1:
    // [245] phi (byte) init_squares::i#2 = (byte) init_squares::i#1 [phi:init_squares::@1->init_squares::@1#0] -- register_copy 
    // [245] phi (word*) init_squares::squares#2 = (word*) init_squares::squares#1 [phi:init_squares::@1->init_squares::@1#1] -- register_copy 
    // [245] phi (word) init_squares::sqr#2 = (word) init_squares::sqr#1 [phi:init_squares::@1->init_squares::@1#2] -- register_copy 
    jmp b1
    // init_squares::@1
  b1:
    // [246] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 -- _deref_pwuz1=vwuz2 
    ldy #0
    lda sqr
    sta (squares),y
    iny
    lda sqr+1
    sta (squares),y
    // [247] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD -- pwuz1=pwuz1_plus_vbuc1 
    lda #SIZEOF_WORD
    clc
    adc squares
    sta squares
    bcc !+
    inc squares+1
  !:
    // [248] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1 
    lda i
    asl
    sta _3
    // [249] (byte~) init_squares::$4 ← (byte~) init_squares::$3 + (byte) 1 -- vbuz1=vbuz2_plus_1 
    ldy _3
    iny
    sty _4
    // [250] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 -- vwuz1=vwuz1_plus_vbuz2 
    lda _4
    clc
    adc sqr
    sta sqr
    bcc !+
    inc sqr+1
  !:
    // [251] (byte) init_squares::i#1 ← ++ (byte) init_squares::i#2 -- vbuz1=_inc_vbuz1 
    inc i
    // [252] if((byte) init_squares::i#1!=(const byte) NUM_SQUARES#3-(byte) 1+(byte) 1) goto init_squares::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #NUM_SQUARES-1+1
    cmp i
    bne b1_from_b1
    jmp breturn
    // init_squares::@return
  breturn:
    // [253] return 
    rts
}
  // malloc
// Allocates a block of size bytes 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.
// malloc(word zeropage($41) size)
malloc: {
    .label mem = $9c
    .label size = $41
    // [255] (byte*) malloc::mem#0 ← (byte*) heap_head#12 - (word) malloc::size#3 -- pbuz1=pbuz2_minus_vwuz3 
    lda heap_head
    sec
    sbc size
    sta mem
    lda heap_head+1
    sbc size+1
    sta mem+1
    // [256] (byte*) heap_head#1 ← (byte*) malloc::mem#0 -- pbuz1=pbuz2 
    lda mem
    sta heap_head
    lda mem+1
    sta heap_head+1
    jmp breturn
    // malloc::@return
  breturn:
    // [257] return 
    rts
}
  // File Data
  // Angles representing ATAN(0.5), ATAN(0.25), ATAN(0.125), ...
CORDIC_ATAN2_ANGLES_16:
.for (var i=0; i<CORDIC_ITERATIONS_16; i++)
        .word 256*2*256*atan(1/pow(2,i))/PI/2

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


REGISTER UPLIFT POTENTIAL REGISTERS
Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] (  [ SCREEN_DIST#0 heap_head#1 ] ) always clobbers reg byte a 
Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] (  [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ) always clobbers reg byte a 
Statement [9] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ) always clobbers reg byte a 
Statement [11] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ) always clobbers reg byte a 
Statement [21] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ]
Statement [24] *((const byte*) D018#0) ← (const byte) main::toD0182_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ) always clobbers reg byte a 
Statement [26] (byte*) doplasma::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] ) always clobbers reg byte a 
Statement [27] (byte*) doplasma::dist#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] ) always clobbers reg byte a 
Statement [28] (byte*) doplasma::sin_x#0 ← (const byte[$200]) SINTABLE#0 + (byte) sin_offset_x#10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] ) always clobbers reg byte a 
Statement [29] (byte*) doplasma::sin_y#0 ← (const byte[$200]) SINTABLE#0 + (byte) sin_offset_y#10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] ) always clobbers reg byte a 
Statement [32] (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#0 + *((byte*) doplasma::angle#4 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#0 + *((byte*) doplasma::dist#4 + (byte) doplasma::x#2)) [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ doplasma::y#4 doplasma::y#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:10 [ doplasma::y#4 doplasma::y#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ doplasma::x#2 doplasma::x#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:11 [ doplasma::x#2 doplasma::x#1 ]
Statement [33] *((byte*) doplasma::screen#5 + (byte) doplasma::x#2) ← (byte~) doplasma::$2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] ) always clobbers reg byte y 
Statement [36] (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#5 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] ) always clobbers reg byte a 
Statement [37] (byte*) doplasma::angle#1 ← (byte*) doplasma::angle#4 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] ) always clobbers reg byte a 
Statement [38] (byte*) doplasma::dist#1 ← (byte*) doplasma::dist#4 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] ) always clobbers reg byte a 
Statement [41] (byte) sin_offset_x#12 ← (byte) sin_offset_x#10 - (byte) 3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] ) always clobbers reg byte a reg byte x 
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ]
Statement [42] (byte) sin_offset_y#12 ← (byte) sin_offset_y#10 - (byte) 7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ) always clobbers reg byte a reg byte x 
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ]
Statement [45] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 [ memset::str#3 memset::c#3 memset::end#0 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#3 memset::end#0 ] main:7::make_plasma_charset:14::print_cls:55::memset:90 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#3 memset::end#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ memset::c#3 ]
Statement [46] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 [ memset::c#3 memset::end#0 memset::dst#3 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#3 memset::end#0 memset::dst#3 ] main:7::make_plasma_charset:14::print_cls:55::memset:90 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#3 memset::end#0 memset::dst#3 ] ) always clobbers reg byte a 
Statement [48] *((byte*) memset::dst#2) ← (byte) memset::c#3 [ memset::c#3 memset::end#0 memset::dst#2 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#3 memset::end#0 memset::dst#2 ] main:7::make_plasma_charset:14::print_cls:55::memset:90 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#3 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:14 [ memset::c#3 ]
Statement [50] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 [ memset::c#3 memset::end#0 memset::dst#1 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#3 memset::end#0 memset::dst#1 ] main:7::make_plasma_charset:14::print_cls:55::memset:90 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#3 memset::end#0 memset::dst#1 ] ) always clobbers reg byte a 
Statement [57] (byte~) make_plasma_charset::$2 ← < (word) make_plasma_charset::c#2 [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::$2 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::$2 ] ) always clobbers reg byte a 
Statement [66] (byte) make_plasma_charset::b#1 ← (byte) make_plasma_charset::b#2 | *((const byte[8]) make_plasma_charset::bittab#0 + (byte) make_plasma_charset::ii#2) [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:81 [ make_plasma_charset::s#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ make_plasma_charset::i#7 make_plasma_charset::i#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ]
Statement [70] (word~) make_plasma_charset::$8 ← (word) make_plasma_charset::c#2 << (byte) 3 [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::b#3 make_plasma_charset::$8 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::b#3 make_plasma_charset::$8 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ make_plasma_charset::b#2 make_plasma_charset::b#3 make_plasma_charset::b#1 ]
Statement [71] (word~) make_plasma_charset::$9 ← (word~) make_plasma_charset::$8 + (byte) make_plasma_charset::i#7 [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::b#3 make_plasma_charset::$9 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::b#3 make_plasma_charset::$9 ] ) always clobbers reg byte a 
Statement [72] (byte*~) make_plasma_charset::$16 ← (const byte*) CHARSET#0 + (word~) make_plasma_charset::$9 [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::b#3 make_plasma_charset::$16 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::b#3 make_plasma_charset::$16 ] ) always clobbers reg byte a 
Statement [73] *((byte*~) make_plasma_charset::$16) ← (byte) make_plasma_charset::b#3 [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:81 [ make_plasma_charset::s#0 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:21 [ make_plasma_charset::i#7 make_plasma_charset::i#1 ]
Statement [76] (byte~) make_plasma_charset::$11 ← (word) make_plasma_charset::c#2 & (byte) 7 [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::$11 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::$11 ] ) always clobbers reg byte a 
Statement [82] if((word) make_plasma_charset::c#1<(word) $100) goto make_plasma_charset::@1 [ make_plasma_charset::c#1 print_char_cursor#18 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#1 print_char_cursor#18 ] ) always clobbers reg byte a 
Statement [84] *((byte*) print_char_cursor#49) ← (const byte) print_char::ch#0 [ print_char_cursor#49 ] ( main:7::make_plasma_charset:14::print_char:79 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 ] ) always clobbers reg byte a reg byte y 
Statement [92] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff [ ] ( main:7::make_plasma_charset:14::sid_rnd_init:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ) always clobbers reg byte a 
Statement [93] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:7::make_plasma_charset:14::sid_rnd_init:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ) always clobbers reg byte a 
Statement [95] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ) always clobbers reg byte a 
Statement [96] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ) always clobbers reg byte a 
Statement [99] (byte~) init_angle_screen::$2 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ init_angle_screen::y#4 init_angle_screen::y#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Statement [100] (byte~) init_angle_screen::$3 ← (byte) $27 - (byte~) init_angle_screen::$2 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a 
Statement [101] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$3 w= (byte) 0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:24 [ init_angle_screen::y#4 init_angle_screen::y#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:29 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:30 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Statement [102] (byte~) init_angle_screen::$6 ← (byte) init_angle_screen::y#4 << (byte) 1 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ) always clobbers reg byte a 
Statement [103] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$6 w= (byte) 0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y 
Statement [104] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a 
Statement [105] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a 
Statement [107] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a 
Statement [108] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a 
Statement [109] (word~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$10 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$10 ] ) always clobbers reg byte a 
Statement [110] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a 
Statement [111] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:110 [ init_angle_screen::ang_w#0 ]
Statement [112] (byte~) init_angle_screen::$12 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:110 [ init_angle_screen::ang_w#0 ]
Statement [113] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$12 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y 
Statement [114] (byte~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a 
Statement [115] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y 
Statement [116] (byte~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$14 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$14 ] ) always clobbers reg byte a 
Statement [117] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte y 
Statement [121] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#5 - (byte) $28 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a 
Statement [122] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#5 + (byte) $28 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#1 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#1 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a 
Statement [126] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a 
Statement [127] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a 
Statement [129] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a 
Statement [130] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a 
Statement [133] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ atan2_16::i#2 atan2_16::i#1 ]
Statement [135] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a 
Statement [136] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a 
Statement [137] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a 
Statement [139] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a 
Statement [140] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a 
Statement [144] (signed word~) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
Statement [145] (signed word~) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a 
Statement [149] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a 
Statement [150] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a 
Statement [152] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a 
Statement [153] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a 
Statement [154] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a 
Statement [155] (byte~) atan2_16::$24 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$24 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$24 ] ) always clobbers reg byte a 
Statement [156] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$24) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a 
Statement [160] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a 
Statement [161] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a 
Statement [162] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$23 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$23 ] ) always clobbers reg byte a 
Statement [163] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a 
Statement [164] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a 
Statement [165] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a 
Statement [167] (signed word~) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a 
Statement [168] (signed word~) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a 
Statement [171] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [173] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::y2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::y2#0 SQUARES#1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
Statement [175] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::$5 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::$5 SQUARES#1 ] ) always clobbers reg byte a 
Statement [179] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 sqr::return#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 sqr::return#2 SQUARES#1 ] ) always clobbers reg byte a 
Statement [180] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [182] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Statement [184] (byte~) init_dist_screen::$13 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$13 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$13 SQUARES#1 ] ) always clobbers reg byte a 
Statement [188] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ) always clobbers reg byte a 
Statement [189] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [190] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [191] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [202] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#10 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#10 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#10 init_dist_screen::screen_topline#1 SQUARES#1 ] ) always clobbers reg byte a 
Statement [203] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#10 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ) always clobbers reg byte a 
Statement [209] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [210] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ) always clobbers reg byte a 
Statement [212] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] ) always clobbers reg byte a 
Statement [213] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] ) always clobbers reg byte a 
Statement [214] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] ) always clobbers reg byte a 
Statement [215] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] ) always clobbers reg byte a 
Statement [216] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [221] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:45 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:51 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:52 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Statement [222] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] ) always clobbers reg byte a 
Statement [226] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
Statement [227] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ) always clobbers reg byte a 
Statement [228] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a 
Statement [229] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:56 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
Statement [230] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a 
Statement [231] (word*~) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] ) always clobbers reg byte a 
Statement [232] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a 
Statement [233] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ) always clobbers reg byte a 
Statement [238] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:7::init_dist_screen:10::sqr:178 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 SQUARES#1 sqr::$0 ] main:7::init_dist_screen:10::sqr:187 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] ) always clobbers reg byte a 
Statement [239] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqr:178 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 sqr::return#0 SQUARES#1 ] main:7::init_dist_screen:10::sqr:187 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] ) always clobbers reg byte a reg byte y 
Statement [243] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ SQUARES#1 ] ( main:7::init_dist_screen:10::init_squares:170 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [244] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ SQUARES#1 init_squares::squares#0 ] ( main:7::init_dist_screen:10::init_squares:170 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::squares#0 ] ) always clobbers reg byte a 
Statement [246] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ SQUARES#1 init_squares::sqr#2 init_squares::squares#2 init_squares::i#2 ] ( main:7::init_dist_screen:10::init_squares:170 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::sqr#2 init_squares::squares#2 init_squares::i#2 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:62 [ init_squares::i#2 init_squares::i#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:62 [ init_squares::i#2 init_squares::i#1 ]
Statement [247] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ SQUARES#1 init_squares::sqr#2 init_squares::i#2 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:170 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::sqr#2 init_squares::i#2 init_squares::squares#1 ] ) always clobbers reg byte a 
Statement [248] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ SQUARES#1 init_squares::sqr#2 init_squares::i#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:10::init_squares:170 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::sqr#2 init_squares::i#2 init_squares::squares#1 init_squares::$3 ] ) always clobbers reg byte a 
Statement [250] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:170 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ) always clobbers reg byte a 
Statement [255] (byte*) malloc::mem#0 ← (byte*) heap_head#12 - (word) malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] malloc:4 [ malloc::mem#0 ] main:7::init_dist_screen:10::init_squares:170::malloc:242 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] ) always clobbers reg byte a 
Statement [256] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] malloc:4 [ malloc::mem#0 heap_head#1 ] main:7::init_dist_screen:10::init_squares:170::malloc:242 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] ) always clobbers reg byte a 
Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] (  [ SCREEN_DIST#0 heap_head#1 ] ) always clobbers reg byte a 
Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] (  [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ) always clobbers reg byte a 
Statement [9] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ) always clobbers reg byte a 
Statement [11] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ) always clobbers reg byte a 
Statement [21] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ) always clobbers reg byte a 
Statement [24] *((const byte*) D018#0) ← (const byte) main::toD0182_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ) always clobbers reg byte a 
Statement [26] (byte*) doplasma::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] ) always clobbers reg byte a 
Statement [27] (byte*) doplasma::dist#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] ) always clobbers reg byte a 
Statement [28] (byte*) doplasma::sin_x#0 ← (const byte[$200]) SINTABLE#0 + (byte) sin_offset_x#10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] ) always clobbers reg byte a 
Statement [29] (byte*) doplasma::sin_y#0 ← (const byte[$200]) SINTABLE#0 + (byte) sin_offset_y#10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] ) always clobbers reg byte a 
Statement [32] (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#0 + *((byte*) doplasma::angle#4 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#0 + *((byte*) doplasma::dist#4 + (byte) doplasma::x#2)) [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] ) always clobbers reg byte a reg byte y 
Statement [33] *((byte*) doplasma::screen#5 + (byte) doplasma::x#2) ← (byte~) doplasma::$2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] ) always clobbers reg byte y 
Statement [36] (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#5 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] ) always clobbers reg byte a 
Statement [37] (byte*) doplasma::angle#1 ← (byte*) doplasma::angle#4 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] ) always clobbers reg byte a 
Statement [38] (byte*) doplasma::dist#1 ← (byte*) doplasma::dist#4 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] ) always clobbers reg byte a 
Statement [41] (byte) sin_offset_x#12 ← (byte) sin_offset_x#10 - (byte) 3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] ) always clobbers reg byte a reg byte x 
Statement [42] (byte) sin_offset_y#12 ← (byte) sin_offset_y#10 - (byte) 7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ) always clobbers reg byte a reg byte x 
Statement [45] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 [ memset::str#3 memset::c#3 memset::end#0 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#3 memset::end#0 ] main:7::make_plasma_charset:14::print_cls:55::memset:90 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#3 memset::end#0 ] ) always clobbers reg byte a 
Statement [46] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 [ memset::c#3 memset::end#0 memset::dst#3 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#3 memset::end#0 memset::dst#3 ] main:7::make_plasma_charset:14::print_cls:55::memset:90 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#3 memset::end#0 memset::dst#3 ] ) always clobbers reg byte a 
Statement [48] *((byte*) memset::dst#2) ← (byte) memset::c#3 [ memset::c#3 memset::end#0 memset::dst#2 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#3 memset::end#0 memset::dst#2 ] main:7::make_plasma_charset:14::print_cls:55::memset:90 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#3 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y 
Statement [50] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 [ memset::c#3 memset::end#0 memset::dst#1 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#3 memset::end#0 memset::dst#1 ] main:7::make_plasma_charset:14::print_cls:55::memset:90 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#3 memset::end#0 memset::dst#1 ] ) always clobbers reg byte a 
Statement [57] (byte~) make_plasma_charset::$2 ← < (word) make_plasma_charset::c#2 [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::$2 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::$2 ] ) always clobbers reg byte a 
Statement [66] (byte) make_plasma_charset::b#1 ← (byte) make_plasma_charset::b#2 | *((const byte[8]) make_plasma_charset::bittab#0 + (byte) make_plasma_charset::ii#2) [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] ) always clobbers reg byte a 
Statement [70] (word~) make_plasma_charset::$8 ← (word) make_plasma_charset::c#2 << (byte) 3 [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::b#3 make_plasma_charset::$8 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::b#3 make_plasma_charset::$8 ] ) always clobbers reg byte a 
Statement [71] (word~) make_plasma_charset::$9 ← (word~) make_plasma_charset::$8 + (byte) make_plasma_charset::i#7 [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::b#3 make_plasma_charset::$9 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::b#3 make_plasma_charset::$9 ] ) always clobbers reg byte a 
Statement [72] (byte*~) make_plasma_charset::$16 ← (const byte*) CHARSET#0 + (word~) make_plasma_charset::$9 [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::b#3 make_plasma_charset::$16 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::b#3 make_plasma_charset::$16 ] ) always clobbers reg byte a 
Statement [73] *((byte*~) make_plasma_charset::$16) ← (byte) make_plasma_charset::b#3 [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 ] ) always clobbers reg byte a reg byte y 
Statement [76] (byte~) make_plasma_charset::$11 ← (word) make_plasma_charset::c#2 & (byte) 7 [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::$11 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::$11 ] ) always clobbers reg byte a 
Statement [82] if((word) make_plasma_charset::c#1<(word) $100) goto make_plasma_charset::@1 [ make_plasma_charset::c#1 print_char_cursor#18 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#1 print_char_cursor#18 ] ) always clobbers reg byte a 
Statement [84] *((byte*) print_char_cursor#49) ← (const byte) print_char::ch#0 [ print_char_cursor#49 ] ( main:7::make_plasma_charset:14::print_char:79 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 ] ) always clobbers reg byte a reg byte y 
Statement [92] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff [ ] ( main:7::make_plasma_charset:14::sid_rnd_init:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ) always clobbers reg byte a 
Statement [93] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:7::make_plasma_charset:14::sid_rnd_init:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ) always clobbers reg byte a 
Statement [95] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ) always clobbers reg byte a 
Statement [96] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ) always clobbers reg byte a 
Statement [99] (byte~) init_angle_screen::$2 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$2 ] ) always clobbers reg byte a 
Statement [100] (byte~) init_angle_screen::$3 ← (byte) $27 - (byte~) init_angle_screen::$2 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a 
Statement [101] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$3 w= (byte) 0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y 
Statement [102] (byte~) init_angle_screen::$6 ← (byte) init_angle_screen::y#4 << (byte) 1 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ) always clobbers reg byte a 
Statement [103] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$6 w= (byte) 0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y 
Statement [104] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a 
Statement [105] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a 
Statement [107] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a 
Statement [108] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a 
Statement [109] (word~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$10 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$10 ] ) always clobbers reg byte a 
Statement [110] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a 
Statement [111] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a reg byte y 
Statement [112] (byte~) init_angle_screen::$12 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ) always clobbers reg byte a 
Statement [113] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$12 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y 
Statement [114] (byte~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a 
Statement [115] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y 
Statement [116] (byte~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$14 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$14 ] ) always clobbers reg byte a 
Statement [117] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte y 
Statement [121] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#5 - (byte) $28 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a 
Statement [122] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#5 + (byte) $28 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#1 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#1 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a 
Statement [126] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a 
Statement [127] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a 
Statement [129] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a 
Statement [130] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a 
Statement [133] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a 
Statement [135] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a 
Statement [136] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a 
Statement [137] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a 
Statement [139] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a 
Statement [140] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a 
Statement [144] (signed word~) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a 
Statement [145] (signed word~) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a 
Statement [149] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a 
Statement [150] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a 
Statement [152] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a 
Statement [153] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a 
Statement [154] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a 
Statement [155] (byte~) atan2_16::$24 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$24 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$24 ] ) always clobbers reg byte a 
Statement [156] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$24) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a 
Statement [160] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a 
Statement [161] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a 
Statement [162] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$23 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$23 ] ) always clobbers reg byte a 
Statement [163] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a 
Statement [164] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a 
Statement [165] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a 
Statement [167] (signed word~) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a 
Statement [168] (signed word~) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a 
Statement [171] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [173] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::y2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::y2#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [175] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::$5 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::$5 SQUARES#1 ] ) always clobbers reg byte a 
Statement [179] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 sqr::return#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 sqr::return#2 SQUARES#1 ] ) always clobbers reg byte a 
Statement [180] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [182] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [184] (byte~) init_dist_screen::$13 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$13 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$13 SQUARES#1 ] ) always clobbers reg byte a 
Statement [188] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ) always clobbers reg byte a 
Statement [189] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [190] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [191] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [195] *((byte*) init_dist_screen::screen_topline#10 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:131 [ init_dist_screen::d#0 ]
Statement [196] *((byte*) init_dist_screen::screen_bottomline#10 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y 
Statement [197] *((byte*) init_dist_screen::screen_topline#10 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y 
Statement [198] *((byte*) init_dist_screen::screen_bottomline#10 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ) always clobbers reg byte y 
Statement [202] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#10 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#10 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#10 init_dist_screen::screen_topline#1 SQUARES#1 ] ) always clobbers reg byte a 
Statement [203] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#10 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ) always clobbers reg byte a 
Statement [209] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [210] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ) always clobbers reg byte a 
Statement [212] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] ) always clobbers reg byte a 
Statement [213] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] ) always clobbers reg byte a 
Statement [214] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] ) always clobbers reg byte a 
Statement [215] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] ) always clobbers reg byte a 
Statement [216] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [221] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] ) always clobbers reg byte a reg byte y 
Statement [222] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] ) always clobbers reg byte a 
Statement [226] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ) always clobbers reg byte a 
Statement [227] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ) always clobbers reg byte a 
Statement [228] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a 
Statement [229] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a reg byte y 
Statement [230] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a 
Statement [231] (word*~) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] ) always clobbers reg byte a 
Statement [232] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a 
Statement [233] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ) always clobbers reg byte a 
Statement [238] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:7::init_dist_screen:10::sqr:178 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 SQUARES#1 sqr::$0 ] main:7::init_dist_screen:10::sqr:187 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] ) always clobbers reg byte a 
Statement [239] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqr:178 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 sqr::return#0 SQUARES#1 ] main:7::init_dist_screen:10::sqr:187 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] ) always clobbers reg byte a reg byte y 
Statement [243] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ SQUARES#1 ] ( main:7::init_dist_screen:10::init_squares:170 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [244] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ SQUARES#1 init_squares::squares#0 ] ( main:7::init_dist_screen:10::init_squares:170 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::squares#0 ] ) always clobbers reg byte a 
Statement [246] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ SQUARES#1 init_squares::sqr#2 init_squares::squares#2 init_squares::i#2 ] ( main:7::init_dist_screen:10::init_squares:170 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::sqr#2 init_squares::squares#2 init_squares::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [247] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ SQUARES#1 init_squares::sqr#2 init_squares::i#2 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:170 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::sqr#2 init_squares::i#2 init_squares::squares#1 ] ) always clobbers reg byte a 
Statement [248] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ SQUARES#1 init_squares::sqr#2 init_squares::i#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:10::init_squares:170 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::sqr#2 init_squares::i#2 init_squares::squares#1 init_squares::$3 ] ) always clobbers reg byte a 
Statement [250] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:170 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ) always clobbers reg byte a 
Statement [255] (byte*) malloc::mem#0 ← (byte*) heap_head#12 - (word) malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] malloc:4 [ malloc::mem#0 ] main:7::init_dist_screen:10::init_squares:170::malloc:242 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] ) always clobbers reg byte a 
Statement [256] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] malloc:4 [ malloc::mem#0 heap_head#1 ] main:7::init_dist_screen:10::init_squares:170::malloc:242 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] ) always clobbers reg byte a 
Statement [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 heap_head#1 ] (  [ SCREEN_DIST#0 heap_head#1 ] ) always clobbers reg byte a 
Statement [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] (  [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#1 ] ) always clobbers reg byte a 
Statement [9] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 heap_head#1 ] ) always clobbers reg byte a 
Statement [11] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ) always clobbers reg byte a 
Statement [21] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ) always clobbers reg byte a 
Statement [24] *((const byte*) D018#0) ← (const byte) main::toD0182_return#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ) always clobbers reg byte a 
Statement [26] (byte*) doplasma::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 ] ) always clobbers reg byte a 
Statement [27] (byte*) doplasma::dist#0 ← (byte*)(void*) SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 ] ) always clobbers reg byte a 
Statement [28] (byte*) doplasma::sin_x#0 ← (const byte[$200]) SINTABLE#0 + (byte) sin_offset_x#10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 ] ) always clobbers reg byte a 
Statement [29] (byte*) doplasma::sin_y#0 ← (const byte[$200]) SINTABLE#0 + (byte) sin_offset_y#10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::screen#6 doplasma::angle#0 doplasma::dist#0 doplasma::sin_x#0 doplasma::sin_y#0 ] ) always clobbers reg byte a 
Statement [32] (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#0 + *((byte*) doplasma::angle#4 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#0 + *((byte*) doplasma::dist#4 + (byte) doplasma::x#2)) [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 doplasma::$2 ] ) always clobbers reg byte a reg byte y 
Statement [33] *((byte*) doplasma::screen#5 + (byte) doplasma::x#2) ← (byte~) doplasma::$2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::screen#5 doplasma::y#4 doplasma::x#2 ] ) always clobbers reg byte y 
Statement [36] (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#5 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::angle#4 doplasma::dist#4 doplasma::y#4 doplasma::screen#2 ] ) always clobbers reg byte a 
Statement [37] (byte*) doplasma::angle#1 ← (byte*) doplasma::angle#4 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::dist#4 doplasma::y#4 doplasma::angle#1 doplasma::screen#2 ] ) always clobbers reg byte a 
Statement [38] (byte*) doplasma::dist#1 ← (byte*) doplasma::dist#4 + (byte) $28 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#10 sin_offset_y#10 doplasma::sin_x#0 doplasma::sin_y#0 doplasma::y#4 doplasma::angle#1 doplasma::dist#1 doplasma::screen#2 ] ) always clobbers reg byte a 
Statement [41] (byte) sin_offset_x#12 ← (byte) sin_offset_x#10 - (byte) 3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#10 ] ) always clobbers reg byte a reg byte x 
Statement [42] (byte) sin_offset_y#12 ← (byte) sin_offset_y#10 - (byte) 7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ( main:7::doplasma:19 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] main:7::doplasma:22 [ SCREEN_DIST#0 SCREEN_ANGLE#0 sin_offset_x#12 sin_offset_y#12 ] ) always clobbers reg byte a reg byte x 
Statement [45] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 [ memset::str#3 memset::c#3 memset::end#0 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#3 memset::end#0 ] main:7::make_plasma_charset:14::print_cls:55::memset:90 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::str#3 memset::c#3 memset::end#0 ] ) always clobbers reg byte a 
Statement [46] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 [ memset::c#3 memset::end#0 memset::dst#3 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#3 memset::end#0 memset::dst#3 ] main:7::make_plasma_charset:14::print_cls:55::memset:90 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#3 memset::end#0 memset::dst#3 ] ) always clobbers reg byte a 
Statement [48] *((byte*) memset::dst#2) ← (byte) memset::c#3 [ memset::c#3 memset::end#0 memset::dst#2 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#3 memset::end#0 memset::dst#2 ] main:7::make_plasma_charset:14::print_cls:55::memset:90 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#3 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y 
Statement [50] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 [ memset::c#3 memset::end#0 memset::dst#1 ] ( main:7::memset:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#3 memset::end#0 memset::dst#1 ] main:7::make_plasma_charset:14::print_cls:55::memset:90 [ SCREEN_DIST#0 SCREEN_ANGLE#0 memset::c#3 memset::end#0 memset::dst#1 ] ) always clobbers reg byte a 
Statement [57] (byte~) make_plasma_charset::$2 ← < (word) make_plasma_charset::c#2 [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::$2 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::$2 ] ) always clobbers reg byte a 
Statement [66] (byte) make_plasma_charset::b#1 ← (byte) make_plasma_charset::b#2 | *((const byte[8]) make_plasma_charset::bittab#0 + (byte) make_plasma_charset::ii#2) [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::ii#2 make_plasma_charset::b#1 ] ) always clobbers reg byte a 
Statement [70] (word~) make_plasma_charset::$8 ← (word) make_plasma_charset::c#2 << (byte) 3 [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::b#3 make_plasma_charset::$8 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::b#3 make_plasma_charset::$8 ] ) always clobbers reg byte a 
Statement [71] (word~) make_plasma_charset::$9 ← (word~) make_plasma_charset::$8 + (byte) make_plasma_charset::i#7 [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::b#3 make_plasma_charset::$9 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::b#3 make_plasma_charset::$9 ] ) always clobbers reg byte a 
Statement [72] (byte*~) make_plasma_charset::$16 ← (const byte*) CHARSET#0 + (word~) make_plasma_charset::$9 [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::b#3 make_plasma_charset::$16 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 make_plasma_charset::b#3 make_plasma_charset::$16 ] ) always clobbers reg byte a 
Statement [73] *((byte*~) make_plasma_charset::$16) ← (byte) make_plasma_charset::b#3 [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::s#0 make_plasma_charset::i#7 ] ) always clobbers reg byte a reg byte y 
Statement [76] (byte~) make_plasma_charset::$11 ← (word) make_plasma_charset::c#2 & (byte) 7 [ make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::$11 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 make_plasma_charset::$11 ] ) always clobbers reg byte a 
Statement [82] if((word) make_plasma_charset::c#1<(word) $100) goto make_plasma_charset::@1 [ make_plasma_charset::c#1 print_char_cursor#18 ] ( main:7::make_plasma_charset:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#1 print_char_cursor#18 ] ) always clobbers reg byte a 
Statement [84] *((byte*) print_char_cursor#49) ← (const byte) print_char::ch#0 [ print_char_cursor#49 ] ( main:7::make_plasma_charset:14::print_char:79 [ SCREEN_DIST#0 SCREEN_ANGLE#0 make_plasma_charset::c#2 print_char_cursor#49 ] ) always clobbers reg byte a reg byte y 
Statement [92] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff [ ] ( main:7::make_plasma_charset:14::sid_rnd_init:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ) always clobbers reg byte a 
Statement [93] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:7::make_plasma_charset:14::sid_rnd_init:53 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ) always clobbers reg byte a 
Statement [95] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 init_angle_screen::screen_topline#0 ] ) always clobbers reg byte a 
Statement [96] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c [ init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_topline#0 init_angle_screen::screen_bottomline#0 ] ) always clobbers reg byte a 
Statement [99] (byte~) init_angle_screen::$2 ← (byte) init_angle_screen::x#2 << (byte) 1 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$2 ] ) always clobbers reg byte a 
Statement [100] (byte~) init_angle_screen::$3 ← (byte) $27 - (byte~) init_angle_screen::$2 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ) always clobbers reg byte a 
Statement [101] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$3 w= (byte) 0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ) always clobbers reg byte y 
Statement [102] (byte~) init_angle_screen::$6 ← (byte) init_angle_screen::y#4 << (byte) 1 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$6 ] ) always clobbers reg byte a 
Statement [103] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$6 w= (byte) 0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ) always clobbers reg byte y 
Statement [104] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ) always clobbers reg byte a 
Statement [105] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a 
Statement [107] (word) atan2_16::return#2 ← (word) atan2_16::return#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ) always clobbers reg byte a 
Statement [108] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ) always clobbers reg byte a 
Statement [109] (word~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (byte) $80 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$10 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$10 ] ) always clobbers reg byte a 
Statement [110] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$10 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a 
Statement [111] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte a reg byte y 
Statement [112] (byte~) init_angle_screen::$12 ← - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$12 ] ) always clobbers reg byte a 
Statement [113] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$12 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y 
Statement [114] (byte~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$13 ] ) always clobbers reg byte a 
Statement [115] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ) always clobbers reg byte y 
Statement [116] (byte~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$14 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$14 ] ) always clobbers reg byte a 
Statement [117] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 ] ) always clobbers reg byte y 
Statement [121] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#5 - (byte) $28 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a 
Statement [122] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#5 + (byte) $28 [ init_angle_screen::y#4 init_angle_screen::screen_bottomline#1 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:12 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#1 init_angle_screen::screen_topline#1 ] ) always clobbers reg byte a 
Statement [126] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ) always clobbers reg byte a 
Statement [127] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ) always clobbers reg byte a 
Statement [129] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ) always clobbers reg byte a 
Statement [130] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ) always clobbers reg byte a 
Statement [133] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ) always clobbers reg byte a 
Statement [135] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a 
Statement [136] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] ) always clobbers reg byte a 
Statement [137] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] ) always clobbers reg byte a 
Statement [139] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] ) always clobbers reg byte a 
Statement [140] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] ) always clobbers reg byte a 
Statement [144] (signed word~) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ) always clobbers reg byte a 
Statement [145] (signed word~) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ) always clobbers reg byte a 
Statement [149] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ) always clobbers reg byte a 
Statement [150] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ) always clobbers reg byte a 
Statement [152] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ) always clobbers reg byte a 
Statement [153] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ) always clobbers reg byte a 
Statement [154] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ) always clobbers reg byte a 
Statement [155] (byte~) atan2_16::$24 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$24 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$24 ] ) always clobbers reg byte a 
Statement [156] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$24) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ) always clobbers reg byte a 
Statement [160] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ) always clobbers reg byte a 
Statement [161] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ) always clobbers reg byte a 
Statement [162] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$23 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$23 ] ) always clobbers reg byte a 
Statement [163] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$23) [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ) always clobbers reg byte a 
Statement [164] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ) always clobbers reg byte a 
Statement [165] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ) always clobbers reg byte a 
Statement [167] (signed word~) atan2_16::xi#13 ← (signed word) atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ) always clobbers reg byte a 
Statement [168] (signed word~) atan2_16::yi#16 ← (signed word) atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:12::atan2_16:106 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_topline#5 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ) always clobbers reg byte a 
Statement [171] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [173] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::y2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::y2#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [175] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::$5 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::$5 SQUARES#1 ] ) always clobbers reg byte a 
Statement [179] (word) sqr::return#2 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 sqr::return#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 sqr::return#2 SQUARES#1 ] ) always clobbers reg byte a 
Statement [180] (word) init_dist_screen::yds#0 ← (word) sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [182] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [184] (byte~) init_dist_screen::$13 ← (byte) $27 - (byte) init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$13 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$13 SQUARES#1 ] ) always clobbers reg byte a 
Statement [188] (word) sqr::return#3 ← (word) sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#1 ] ) always clobbers reg byte a 
Statement [189] (word) init_dist_screen::xds#0 ← (word) sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [190] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [191] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [195] *((byte*) init_dist_screen::screen_topline#10 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y 
Statement [196] *((byte*) init_dist_screen::screen_bottomline#10 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y 
Statement [197] *((byte*) init_dist_screen::screen_topline#10 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#1 ] ) always clobbers reg byte y 
Statement [198] *((byte*) init_dist_screen::screen_bottomline#10 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 ] ) always clobbers reg byte y 
Statement [202] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#10 + (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#10 init_dist_screen::screen_topline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#10 init_dist_screen::screen_topline#1 SQUARES#1 ] ) always clobbers reg byte a 
Statement [203] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#10 - (byte) $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ( main:7::init_dist_screen:10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#1 ] ) always clobbers reg byte a 
Statement [209] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [ bsearch16u::key#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [210] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 [ bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 bsearch16u::key#0 bsearch16u::items#1 SQUARES#1 ] ) always clobbers reg byte a 
Statement [212] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [ SQUARES#1 bsearch16u::return#3 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#3 ] ) always clobbers reg byte a 
Statement [213] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [ SQUARES#1 sqrt::found#0 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::found#0 ] ) always clobbers reg byte a 
Statement [214] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 [ SQUARES#1 sqrt::$3 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$3 ] ) always clobbers reg byte a 
Statement [215] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [ SQUARES#1 sqrt::$1 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqrt::$1 ] ) always clobbers reg byte a 
Statement [216] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [ sqrt::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqrt:192 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [221] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::items#2 ] ) always clobbers reg byte a reg byte y 
Statement [222] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::$2 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::$2 ] ) always clobbers reg byte a 
Statement [226] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ) always clobbers reg byte a 
Statement [227] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$16 ] ) always clobbers reg byte a 
Statement [228] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a 
Statement [229] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a reg byte y 
Statement [230] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ) always clobbers reg byte a 
Statement [231] (word*~) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [ bsearch16u::return#6 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::return#6 ] ) always clobbers reg byte a 
Statement [232] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ) always clobbers reg byte a 
Statement [233] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:10::sqrt:192::bsearch16u:211 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ) always clobbers reg byte a 
Statement [238] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [ SQUARES#1 sqr::$0 ] ( main:7::init_dist_screen:10::sqr:178 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 SQUARES#1 sqr::$0 ] main:7::init_dist_screen:10::sqr:187 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#1 sqr::$0 ] ) always clobbers reg byte a 
Statement [239] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) [ sqr::return#0 SQUARES#1 ] ( main:7::init_dist_screen:10::sqr:178 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 sqr::return#0 SQUARES#1 ] main:7::init_dist_screen:10::sqr:187 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#10 init_dist_screen::screen_bottomline#10 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#1 ] ) always clobbers reg byte a reg byte y 
Statement [243] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0 [ SQUARES#1 ] ( main:7::init_dist_screen:10::init_squares:170 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 ] ) always clobbers reg byte a 
Statement [244] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 [ SQUARES#1 init_squares::squares#0 ] ( main:7::init_dist_screen:10::init_squares:170 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::squares#0 ] ) always clobbers reg byte a 
Statement [246] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [ SQUARES#1 init_squares::sqr#2 init_squares::squares#2 init_squares::i#2 ] ( main:7::init_dist_screen:10::init_squares:170 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::sqr#2 init_squares::squares#2 init_squares::i#2 ] ) always clobbers reg byte a reg byte y 
Statement [247] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [ SQUARES#1 init_squares::sqr#2 init_squares::i#2 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:170 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::sqr#2 init_squares::i#2 init_squares::squares#1 ] ) always clobbers reg byte a 
Statement [248] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [ SQUARES#1 init_squares::sqr#2 init_squares::i#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:10::init_squares:170 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::sqr#2 init_squares::i#2 init_squares::squares#1 init_squares::$3 ] ) always clobbers reg byte a 
Statement [250] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [ SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:10::init_squares:170 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#1 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ) always clobbers reg byte a 
Statement [255] (byte*) malloc::mem#0 ← (byte*) heap_head#12 - (word) malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] malloc:4 [ malloc::mem#0 ] main:7::init_dist_screen:10::init_squares:170::malloc:242 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] ) always clobbers reg byte a 
Statement [256] (byte*) heap_head#1 ← (byte*) malloc::mem#0 [ malloc::mem#0 heap_head#1 ] ( malloc:2 [ malloc::mem#0 heap_head#1 ] malloc:4 [ malloc::mem#0 heap_head#1 ] main:7::init_dist_screen:10::init_squares:170::malloc:242 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#1 ] ) always clobbers reg byte a 
Potential registers zp ZP_BYTE:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ] : zp ZP_BYTE:2 , 
Potential registers zp ZP_BYTE:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ] : zp ZP_BYTE:3 , 
Potential registers zp ZP_WORD:4 [ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 ] : zp ZP_WORD:4 , 
Potential registers zp ZP_WORD:6 [ doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ] : zp ZP_WORD:6 , 
Potential registers zp ZP_WORD:8 [ doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ] : zp ZP_WORD:8 , 
Potential registers zp ZP_BYTE:10 [ doplasma::y#4 doplasma::y#1 ] : zp ZP_BYTE:10 , reg byte x , 
Potential registers zp ZP_BYTE:11 [ doplasma::x#2 doplasma::x#1 ] : zp ZP_BYTE:11 , reg byte x , 
Potential registers zp ZP_WORD:12 [ memset::str#3 ] : zp ZP_WORD:12 , 
Potential registers zp ZP_BYTE:14 [ memset::c#3 ] : zp ZP_BYTE:14 , reg byte x , 
Potential registers zp ZP_WORD:15 [ memset::dst#2 memset::dst#3 memset::dst#1 ] : zp ZP_WORD:15 , 
Potential registers zp ZP_WORD:17 [ make_plasma_charset::c#2 make_plasma_charset::c#1 ] : zp ZP_WORD:17 , 
Potential registers zp ZP_WORD:19 [ print_char_cursor#49 print_char_cursor#18 print_char_cursor#1 ] : zp ZP_WORD:19 , 
Potential registers zp ZP_BYTE:21 [ make_plasma_charset::i#7 make_plasma_charset::i#1 ] : zp ZP_BYTE:21 , reg byte x , 
Potential registers zp ZP_BYTE:22 [ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ] : zp ZP_BYTE:22 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:23 [ make_plasma_charset::b#2 make_plasma_charset::b#3 make_plasma_charset::b#1 ] : zp ZP_BYTE:23 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:24 [ init_angle_screen::y#4 init_angle_screen::y#1 ] : zp ZP_BYTE:24 , reg byte x , 
Potential registers zp ZP_WORD:25 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] : zp ZP_WORD:25 , 
Potential registers zp ZP_WORD:27 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] : zp ZP_WORD:27 , 
Potential registers zp ZP_BYTE:29 [ init_angle_screen::x#2 init_angle_screen::x#1 ] : zp ZP_BYTE:29 , reg byte x , 
Potential registers zp ZP_BYTE:30 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] : zp ZP_BYTE:30 , reg byte x , 
Potential registers zp ZP_WORD:31 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] : zp ZP_WORD:31 , 
Potential registers zp ZP_WORD:33 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] : zp ZP_WORD:33 , 
Potential registers zp ZP_BYTE:35 [ atan2_16::i#2 atan2_16::i#1 ] : zp ZP_BYTE:35 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:36 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] : zp ZP_WORD:36 , 
Potential registers zp ZP_WORD:38 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] : zp ZP_WORD:38 , 
Potential registers zp ZP_BYTE:40 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] : zp ZP_BYTE:40 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:41 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] : zp ZP_WORD:41 , 
Potential registers zp ZP_WORD:43 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] : zp ZP_WORD:43 , 
Potential registers zp ZP_BYTE:45 [ init_dist_screen::y#10 init_dist_screen::y#1 ] : zp ZP_BYTE:45 , reg byte x , 
Potential registers zp ZP_WORD:46 [ init_dist_screen::screen_topline#10 init_dist_screen::screen_topline#1 init_dist_screen::screen#0 ] : zp ZP_WORD:46 , 
Potential registers zp ZP_WORD:48 [ init_dist_screen::screen_bottomline#10 init_dist_screen::screen_bottomline#1 init_dist_screen::screen_bottomline#0 ] : zp ZP_WORD:48 , 
Potential registers zp ZP_BYTE:50 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] : zp ZP_BYTE:50 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:51 [ init_dist_screen::x#2 init_dist_screen::x#1 ] : zp ZP_BYTE:51 , reg byte x , 
Potential registers zp ZP_BYTE:52 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] : zp ZP_BYTE:52 , reg byte x , 
Potential registers zp ZP_BYTE:53 [ init_dist_screen::xd#0 init_dist_screen::$15 init_dist_screen::$13 ] : zp ZP_BYTE:53 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:54 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] : zp ZP_WORD:54 , 
Potential registers zp ZP_BYTE:56 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] : zp ZP_BYTE:56 , reg byte x , 
Potential registers zp ZP_BYTE:57 [ sqr::val#2 sqr::val#0 sqr::val#1 ] : zp ZP_BYTE:57 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:58 [ init_squares::sqr#2 init_squares::sqr#1 ] : zp ZP_WORD:58 , 
Potential registers zp ZP_WORD:60 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] : zp ZP_WORD:60 , 
Potential registers zp ZP_BYTE:62 [ init_squares::i#2 init_squares::i#1 ] : zp ZP_BYTE:62 , reg byte x , 
Potential registers zp ZP_WORD:63 [ heap_head#12 heap_head#1 ] : zp ZP_WORD:63 , 
Potential registers zp ZP_WORD:65 [ malloc::size#3 ] : zp ZP_WORD:65 , 
Potential registers zp ZP_WORD:67 [ SCREEN_DIST#0 ] : zp ZP_WORD:67 , 
Potential registers zp ZP_WORD:69 [ SCREEN_ANGLE#0 ] : zp ZP_WORD:69 , 
Potential registers zp ZP_WORD:71 [ init_angle_screen::screen#0 ] : zp ZP_WORD:71 , 
Potential registers zp ZP_WORD:73 [ doplasma::sin_x#0 ] : zp ZP_WORD:73 , 
Potential registers zp ZP_WORD:75 [ doplasma::sin_y#0 ] : zp ZP_WORD:75 , 
Potential registers zp ZP_BYTE:77 [ doplasma::$2 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:78 [ memset::end#0 ] : zp ZP_WORD:78 , 
Potential registers zp ZP_BYTE:80 [ make_plasma_charset::$2 ] : zp ZP_BYTE:80 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:81 [ make_plasma_charset::s#0 ] : zp ZP_BYTE:81 , reg byte x , 
Potential registers zp ZP_BYTE:82 [ sid_rnd::return#2 ] : zp ZP_BYTE:82 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:83 [ make_plasma_charset::$3 ] : zp ZP_BYTE:83 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:84 [ make_plasma_charset::$4 ] : zp ZP_BYTE:84 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:85 [ make_plasma_charset::$8 ] : zp ZP_WORD:85 , 
Potential registers zp ZP_WORD:87 [ make_plasma_charset::$9 ] : zp ZP_WORD:87 , 
Potential registers zp ZP_WORD:89 [ make_plasma_charset::$16 ] : zp ZP_WORD:89 , 
Potential registers zp ZP_BYTE:91 [ make_plasma_charset::$11 ] : zp ZP_BYTE:91 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:92 [ sid_rnd::return#0 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:93 [ init_angle_screen::$2 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:94 [ init_angle_screen::$3 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:95 [ init_angle_screen::xw#0 ] : zp ZP_WORD:95 , 
Potential registers zp ZP_BYTE:97 [ init_angle_screen::$6 ] : zp ZP_BYTE:97 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:98 [ init_angle_screen::yw#0 ] : zp ZP_WORD:98 , 
Potential registers zp ZP_WORD:100 [ atan2_16::x#0 ] : zp ZP_WORD:100 , 
Potential registers zp ZP_WORD:102 [ atan2_16::y#0 ] : zp ZP_WORD:102 , 
Potential registers zp ZP_WORD:104 [ atan2_16::return#2 ] : zp ZP_WORD:104 , 
Potential registers zp ZP_WORD:106 [ init_angle_screen::angle_w#0 ] : zp ZP_WORD:106 , 
Potential registers zp ZP_WORD:108 [ init_angle_screen::$10 ] : zp ZP_WORD:108 , 
Potential registers zp ZP_BYTE:110 [ init_angle_screen::ang_w#0 ] : zp ZP_BYTE:110 , reg byte x , 
Potential registers zp ZP_BYTE:111 [ init_angle_screen::$12 ] : zp ZP_BYTE:111 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:112 [ init_angle_screen::$13 ] : zp ZP_BYTE:112 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:113 [ init_angle_screen::$14 ] : zp ZP_BYTE:113 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:114 [ atan2_16::$24 ] : zp ZP_BYTE:114 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:115 [ atan2_16::$23 ] : zp ZP_BYTE:115 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:116 [ init_dist_screen::y2#0 ] : zp ZP_BYTE:116 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:117 [ sqr::return#2 ] : zp ZP_WORD:117 , 
Potential registers zp ZP_WORD:119 [ init_dist_screen::yds#0 ] : zp ZP_WORD:119 , 
Potential registers zp ZP_BYTE:121 [ init_dist_screen::x2#0 ] : zp ZP_BYTE:121 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:122 [ sqr::return#3 ] : zp ZP_WORD:122 , 
Potential registers zp ZP_WORD:124 [ init_dist_screen::xds#0 ] : zp ZP_WORD:124 , 
Potential registers zp ZP_WORD:126 [ init_dist_screen::ds#0 ] : zp ZP_WORD:126 , 
Potential registers zp ZP_WORD:128 [ sqrt::val#0 ] : zp ZP_WORD:128 , 
Potential registers zp ZP_BYTE:130 [ sqrt::return#2 ] : zp ZP_BYTE:130 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:131 [ init_dist_screen::d#0 ] : zp ZP_BYTE:131 , reg byte a , reg byte x , 
Potential registers zp ZP_WORD:132 [ bsearch16u::key#0 ] : zp ZP_WORD:132 , 
Potential registers zp ZP_WORD:134 [ bsearch16u::return#3 ] : zp ZP_WORD:134 , 
Potential registers zp ZP_WORD:136 [ sqrt::found#0 ] : zp ZP_WORD:136 , 
Potential registers zp ZP_WORD:138 [ sqrt::$3 ] : zp ZP_WORD:138 , 
Potential registers zp ZP_WORD:140 [ sqrt::$1 ] : zp ZP_WORD:140 , 
Potential registers zp ZP_BYTE:142 [ sqrt::return#0 ] : zp ZP_BYTE:142 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:143 [ bsearch16u::$6 ] : zp ZP_BYTE:143 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:144 [ bsearch16u::$16 ] : zp ZP_BYTE:144 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:145 [ bsearch16u::pivot#0 ] : zp ZP_WORD:145 , 
Potential registers zp ZP_WORD:147 [ bsearch16u::result#0 ] : zp ZP_WORD:147 , 
Potential registers zp ZP_BYTE:149 [ sqr::$0 ] : zp ZP_BYTE:149 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:150 [ sqr::return#0 ] : zp ZP_WORD:150 , 
Potential registers zp ZP_WORD:152 [ SQUARES#1 ] : zp ZP_WORD:152 , 
Potential registers zp ZP_BYTE:154 [ init_squares::$3 ] : zp ZP_BYTE:154 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:155 [ init_squares::$4 ] : zp ZP_BYTE:155 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:156 [ malloc::mem#0 ] : zp ZP_WORD:156 , 

REGISTER UPLIFT SCOPES
Uplift Scope [atan2_16] 28,670.58: zp ZP_BYTE:40 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 20,608: zp ZP_WORD:41 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 17,338.67: zp ZP_WORD:43 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 7,533.33: zp ZP_WORD:36 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 2,698.28: zp ZP_WORD:31 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 2,283.07: zp ZP_WORD:33 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 2,002: zp ZP_BYTE:114 [ atan2_16::$24 ] 2,002: zp ZP_BYTE:115 [ atan2_16::$23 ] 1,710.04: zp ZP_BYTE:35 [ atan2_16::i#2 atan2_16::i#1 ] 202: zp ZP_WORD:104 [ atan2_16::return#2 ] 50: zp ZP_WORD:38 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] 2.87: zp ZP_WORD:100 [ atan2_16::x#0 ] 2.72: zp ZP_WORD:102 [ atan2_16::y#0 ] 
Uplift Scope [bsearch16u] 7,563.11: zp ZP_BYTE:56 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] 2,855.06: zp ZP_WORD:54 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] 2,002: zp ZP_BYTE:143 [ bsearch16u::$6 ] 2,002: zp ZP_BYTE:144 [ bsearch16u::$16 ] 1,501.5: zp ZP_WORD:147 [ bsearch16u::result#0 ] 501: zp ZP_WORD:145 [ bsearch16u::pivot#0 ] 4: zp ZP_WORD:134 [ bsearch16u::return#3 ] 0.27: zp ZP_WORD:132 [ bsearch16u::key#0 ] 
Uplift Scope [make_plasma_charset] 3,019.83: zp ZP_BYTE:23 [ make_plasma_charset::b#2 make_plasma_charset::b#3 make_plasma_charset::b#1 ] 2,002: zp ZP_BYTE:83 [ make_plasma_charset::$3 ] 2,002: zp ZP_BYTE:84 [ make_plasma_charset::$4 ] 1,876.88: zp ZP_BYTE:22 [ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ] 202: zp ZP_WORD:85 [ make_plasma_charset::$8 ] 202: zp ZP_WORD:87 [ make_plasma_charset::$9 ] 202: zp ZP_WORD:89 [ make_plasma_charset::$16 ] 171.7: zp ZP_BYTE:21 [ make_plasma_charset::i#7 make_plasma_charset::i#1 ] 56.22: zp ZP_BYTE:81 [ make_plasma_charset::s#0 ] 22.3: zp ZP_WORD:17 [ make_plasma_charset::c#2 make_plasma_charset::c#1 ] 22: zp ZP_BYTE:80 [ make_plasma_charset::$2 ] 22: zp ZP_BYTE:91 [ make_plasma_charset::$11 ] 
Uplift Scope [doplasma] 3,169.83: zp ZP_BYTE:11 [ doplasma::x#2 doplasma::x#1 ] 2,002: zp ZP_BYTE:77 [ doplasma::$2 ] 241.63: zp ZP_WORD:8 [ doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ] 223.64: zp ZP_WORD:4 [ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 ] 219.29: zp ZP_WORD:6 [ doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ] 173.94: zp ZP_BYTE:10 [ doplasma::y#4 doplasma::y#1 ] 83.58: zp ZP_WORD:75 [ doplasma::sin_y#0 ] 77.15: zp ZP_WORD:73 [ doplasma::sin_x#0 ] 
Uplift Scope [sid_rnd] 2,002: zp ZP_BYTE:82 [ sid_rnd::return#2 ] 334.33: zp ZP_BYTE:92 [ sid_rnd::return#0 ] 
Uplift Scope [init_angle_screen] 202: zp ZP_BYTE:93 [ init_angle_screen::$2 ] 202: zp ZP_BYTE:94 [ init_angle_screen::$3 ] 202: zp ZP_BYTE:97 [ init_angle_screen::$6 ] 202: zp ZP_WORD:106 [ init_angle_screen::angle_w#0 ] 202: zp ZP_WORD:108 [ init_angle_screen::$10 ] 202: zp ZP_BYTE:111 [ init_angle_screen::$12 ] 202: zp ZP_BYTE:112 [ init_angle_screen::$13 ] 202: zp ZP_BYTE:113 [ init_angle_screen::$14 ] 126.25: zp ZP_BYTE:29 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 120.24: zp ZP_BYTE:30 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 84.17: zp ZP_BYTE:110 [ init_angle_screen::ang_w#0 ] 50.5: zp ZP_WORD:98 [ init_angle_screen::yw#0 ] 33.67: zp ZP_WORD:95 [ init_angle_screen::xw#0 ] 21.23: zp ZP_BYTE:24 [ init_angle_screen::y#4 init_angle_screen::y#1 ] 20.37: zp ZP_WORD:25 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 16.92: zp ZP_WORD:27 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] 3: zp ZP_WORD:71 [ init_angle_screen::screen#0 ] 
Uplift Scope [init_dist_screen] 707: zp ZP_BYTE:53 [ init_dist_screen::xd#0 init_dist_screen::$15 init_dist_screen::$13 ] 202: zp ZP_BYTE:121 [ init_dist_screen::x2#0 ] 202: zp ZP_WORD:124 [ init_dist_screen::xds#0 ] 202: zp ZP_WORD:126 [ init_dist_screen::ds#0 ] 127.58: zp ZP_BYTE:51 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 126.25: zp ZP_BYTE:131 [ init_dist_screen::d#0 ] 121.2: zp ZP_BYTE:52 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 77: zp ZP_BYTE:50 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 22: zp ZP_BYTE:116 [ init_dist_screen::y2#0 ] 18.18: zp ZP_WORD:48 [ init_dist_screen::screen_bottomline#10 init_dist_screen::screen_bottomline#1 init_dist_screen::screen_bottomline#0 ] 17.47: zp ZP_BYTE:45 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 14.06: zp ZP_WORD:46 [ init_dist_screen::screen_topline#10 init_dist_screen::screen_topline#1 init_dist_screen::screen#0 ] 4.87: zp ZP_WORD:119 [ init_dist_screen::yds#0 ] 
Uplift Scope [sqr] 338: zp ZP_BYTE:57 [ sqr::val#2 sqr::val#0 sqr::val#1 ] 202: zp ZP_WORD:122 [ sqr::return#3 ] 28.5: zp ZP_WORD:150 [ sqr::return#0 ] 22: zp ZP_WORD:117 [ sqr::return#2 ] 4: zp ZP_BYTE:149 [ sqr::$0 ] 
Uplift Scope [sqrt] 202: zp ZP_BYTE:130 [ sqrt::return#2 ] 103: zp ZP_WORD:128 [ sqrt::val#0 ] 34.33: zp ZP_BYTE:142 [ sqrt::return#0 ] 4: zp ZP_WORD:136 [ sqrt::found#0 ] 4: zp ZP_WORD:138 [ sqrt::$3 ] 2: zp ZP_WORD:140 [ sqrt::$1 ] 
Uplift Scope [init_squares] 25.17: zp ZP_WORD:60 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] 22: zp ZP_BYTE:62 [ init_squares::i#2 init_squares::i#1 ] 22: zp ZP_BYTE:154 [ init_squares::$3 ] 22: zp ZP_BYTE:155 [ init_squares::$4 ] 13.93: zp ZP_WORD:58 [ init_squares::sqr#2 init_squares::sqr#1 ] 
Uplift Scope [] 16.42: zp ZP_WORD:19 [ print_char_cursor#49 print_char_cursor#18 print_char_cursor#1 ] 15.53: zp ZP_BYTE:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ] 15.29: zp ZP_BYTE:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ] 6.6: zp ZP_WORD:63 [ heap_head#12 heap_head#1 ] 0.05: zp ZP_WORD:69 [ SCREEN_ANGLE#0 ] 0.05: zp ZP_WORD:67 [ SCREEN_DIST#0 ] 0.03: zp ZP_WORD:152 [ SQUARES#1 ] 
Uplift Scope [memset] 38: zp ZP_WORD:15 [ memset::dst#2 memset::dst#3 memset::dst#1 ] 2.17: zp ZP_WORD:78 [ memset::end#0 ] 1.57: zp ZP_BYTE:14 [ memset::c#3 ] 0: zp ZP_WORD:12 [ memset::str#3 ] 
Uplift Scope [malloc] 2: zp ZP_WORD:65 [ malloc::size#3 ] 0.67: zp ZP_WORD:156 [ malloc::mem#0 ] 
Uplift Scope [RADIX] 
Uplift Scope [print_char] 
Uplift Scope [print_cls] 
Uplift Scope [sid_rnd_init] 
Uplift Scope [main] 

Uplifting [atan2_16] best 1412191 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp ZP_WORD:41 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp ZP_WORD:43 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp ZP_WORD:36 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp ZP_WORD:31 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp ZP_WORD:33 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$24 ] reg byte a [ atan2_16::$23 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp ZP_WORD:104 [ atan2_16::return#2 ] zp ZP_WORD:38 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] zp ZP_WORD:100 [ atan2_16::x#0 ] zp ZP_WORD:102 [ atan2_16::y#0 ] 
Limited combination testing to 100 combinations of 144 possible.
Uplifting [bsearch16u] best 1393191 combination reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] zp ZP_WORD:54 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] reg byte a [ bsearch16u::$6 ] reg byte a [ bsearch16u::$16 ] zp ZP_WORD:147 [ bsearch16u::result#0 ] zp ZP_WORD:145 [ bsearch16u::pivot#0 ] zp ZP_WORD:134 [ bsearch16u::return#3 ] zp ZP_WORD:132 [ bsearch16u::key#0 ] 
Uplifting [make_plasma_charset] best 1370091 combination reg byte y [ make_plasma_charset::b#2 make_plasma_charset::b#3 make_plasma_charset::b#1 ] reg byte a [ make_plasma_charset::$3 ] zp ZP_BYTE:84 [ make_plasma_charset::$4 ] reg byte x [ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ] zp ZP_WORD:85 [ make_plasma_charset::$8 ] zp ZP_WORD:87 [ make_plasma_charset::$9 ] zp ZP_WORD:89 [ make_plasma_charset::$16 ] zp ZP_BYTE:21 [ make_plasma_charset::i#7 make_plasma_charset::i#1 ] zp ZP_BYTE:81 [ make_plasma_charset::s#0 ] zp ZP_WORD:17 [ make_plasma_charset::c#2 make_plasma_charset::c#1 ] zp ZP_BYTE:80 [ make_plasma_charset::$2 ] zp ZP_BYTE:91 [ make_plasma_charset::$11 ] 
Limited combination testing to 100 combinations of 9216 possible.
Uplifting [doplasma] best 1359091 combination reg byte x [ doplasma::x#2 doplasma::x#1 ] reg byte a [ doplasma::$2 ] zp ZP_WORD:8 [ doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ] zp ZP_WORD:4 [ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 ] zp ZP_WORD:6 [ doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ] zp ZP_BYTE:10 [ doplasma::y#4 doplasma::y#1 ] zp ZP_WORD:75 [ doplasma::sin_y#0 ] zp ZP_WORD:73 [ doplasma::sin_x#0 ] 
Uplifting [sid_rnd] best 1350088 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] 
Uplifting [init_angle_screen] best 1347888 combination reg byte a [ init_angle_screen::$2 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$6 ] zp ZP_WORD:106 [ init_angle_screen::angle_w#0 ] zp ZP_WORD:108 [ init_angle_screen::$10 ] reg byte a [ init_angle_screen::$12 ] zp ZP_BYTE:112 [ init_angle_screen::$13 ] zp ZP_BYTE:113 [ init_angle_screen::$14 ] zp ZP_BYTE:29 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp ZP_BYTE:30 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] zp ZP_BYTE:110 [ init_angle_screen::ang_w#0 ] zp ZP_WORD:98 [ init_angle_screen::yw#0 ] zp ZP_WORD:95 [ init_angle_screen::xw#0 ] zp ZP_BYTE:24 [ init_angle_screen::y#4 init_angle_screen::y#1 ] zp ZP_WORD:25 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp ZP_WORD:27 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ] zp ZP_WORD:71 [ init_angle_screen::screen#0 ] 
Limited combination testing to 100 combinations of 65536 possible.
Uplifting [init_dist_screen] best 1344688 combination reg byte a [ init_dist_screen::xd#0 init_dist_screen::$15 init_dist_screen::$13 ] reg byte a [ init_dist_screen::x2#0 ] zp ZP_WORD:124 [ init_dist_screen::xds#0 ] zp ZP_WORD:126 [ init_dist_screen::ds#0 ] zp ZP_BYTE:51 [ init_dist_screen::x#2 init_dist_screen::x#1 ] reg byte a [ init_dist_screen::d#0 ] zp ZP_BYTE:52 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] zp ZP_BYTE:50 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] zp ZP_BYTE:116 [ init_dist_screen::y2#0 ] zp ZP_WORD:48 [ init_dist_screen::screen_bottomline#10 init_dist_screen::screen_bottomline#1 init_dist_screen::screen_bottomline#0 ] zp ZP_BYTE:45 [ init_dist_screen::y#10 init_dist_screen::y#1 ] zp ZP_WORD:46 [ init_dist_screen::screen_topline#10 init_dist_screen::screen_topline#1 init_dist_screen::screen#0 ] zp ZP_WORD:119 [ init_dist_screen::yds#0 ] 
Limited combination testing to 100 combinations of 6144 possible.
Uplifting [sqr] best 1344351 combination reg byte a [ sqr::val#2 sqr::val#0 sqr::val#1 ] zp ZP_WORD:122 [ sqr::return#3 ] zp ZP_WORD:150 [ sqr::return#0 ] zp ZP_WORD:117 [ sqr::return#2 ] reg byte a [ sqr::$0 ] 
Uplifting [sqrt] best 1343448 combination reg byte a [ sqrt::return#2 ] zp ZP_WORD:128 [ sqrt::val#0 ] reg byte a [ sqrt::return#0 ] zp ZP_WORD:136 [ sqrt::found#0 ] zp ZP_WORD:138 [ sqrt::$3 ] zp ZP_WORD:140 [ sqrt::$1 ] 
Uplifting [init_squares] best 1343248 combination zp ZP_WORD:60 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] reg byte x [ init_squares::i#2 init_squares::i#1 ] reg byte a [ init_squares::$3 ] reg byte a [ init_squares::$4 ] zp ZP_WORD:58 [ init_squares::sqr#2 init_squares::sqr#1 ] 
Uplifting [] best 1343248 combination zp ZP_WORD:19 [ print_char_cursor#49 print_char_cursor#18 print_char_cursor#1 ] zp ZP_BYTE:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ] zp ZP_BYTE:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ] zp ZP_WORD:63 [ heap_head#12 heap_head#1 ] zp ZP_WORD:69 [ SCREEN_ANGLE#0 ] zp ZP_WORD:67 [ SCREEN_DIST#0 ] zp ZP_WORD:152 [ SQUARES#1 ] 
Uplifting [memset] best 1343232 combination zp ZP_WORD:15 [ memset::dst#2 memset::dst#3 memset::dst#1 ] zp ZP_WORD:78 [ memset::end#0 ] reg byte x [ memset::c#3 ] zp ZP_WORD:12 [ memset::str#3 ] 
Uplifting [malloc] best 1343232 combination zp ZP_WORD:65 [ malloc::size#3 ] zp ZP_WORD:156 [ malloc::mem#0 ] 
Uplifting [RADIX] best 1343232 combination 
Uplifting [print_char] best 1343232 combination 
Uplifting [print_cls] best 1343232 combination 
Uplifting [sid_rnd_init] best 1343232 combination 
Uplifting [main] best 1343232 combination 
Attempting to uplift remaining variables inzp ZP_BYTE:84 [ make_plasma_charset::$4 ]
Uplifting [make_plasma_charset] best 1343232 combination zp ZP_BYTE:84 [ make_plasma_charset::$4 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:112 [ init_angle_screen::$13 ]
Uplifting [init_angle_screen] best 1342832 combination reg byte a [ init_angle_screen::$13 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:113 [ init_angle_screen::$14 ]
Uplifting [init_angle_screen] best 1342232 combination reg byte a [ init_angle_screen::$14 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:10 [ doplasma::y#4 doplasma::y#1 ]
Uplifting [doplasma] best 1342232 combination zp ZP_BYTE:10 [ doplasma::y#4 doplasma::y#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:21 [ make_plasma_charset::i#7 make_plasma_charset::i#1 ]
Uplifting [make_plasma_charset] best 1342232 combination zp ZP_BYTE:21 [ make_plasma_charset::i#7 make_plasma_charset::i#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:51 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Uplifting [init_dist_screen] best 1342232 combination zp ZP_BYTE:51 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:29 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
Uplifting [init_angle_screen] best 1342232 combination zp ZP_BYTE:29 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:52 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Uplifting [init_dist_screen] best 1342232 combination zp ZP_BYTE:52 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:30 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Uplifting [init_angle_screen] best 1342232 combination zp ZP_BYTE:30 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:110 [ init_angle_screen::ang_w#0 ]
Uplifting [init_angle_screen] best 1342232 combination zp ZP_BYTE:110 [ init_angle_screen::ang_w#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:50 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
Uplifting [init_dist_screen] best 1342162 combination reg byte a [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:81 [ make_plasma_charset::s#0 ]
Uplifting [make_plasma_charset] best 1342162 combination zp ZP_BYTE:81 [ make_plasma_charset::s#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:80 [ make_plasma_charset::$2 ]
Uplifting [make_plasma_charset] best 1342122 combination reg byte a [ make_plasma_charset::$2 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:91 [ make_plasma_charset::$11 ]
Uplifting [make_plasma_charset] best 1342062 combination reg byte a [ make_plasma_charset::$11 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:116 [ init_dist_screen::y2#0 ]
Uplifting [init_dist_screen] best 1341962 combination reg byte a [ init_dist_screen::y2#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:24 [ init_angle_screen::y#4 init_angle_screen::y#1 ]
Uplifting [init_angle_screen] best 1341962 combination zp ZP_BYTE:24 [ init_angle_screen::y#4 init_angle_screen::y#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:45 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
Uplifting [init_dist_screen] best 1341962 combination zp ZP_BYTE:45 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ]
Uplifting [] best 1341962 combination zp ZP_BYTE:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ]
Uplifting [] best 1341962 combination zp ZP_BYTE:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ] 
Coalescing zero page register with common assignment [ zp ZP_WORD:12 [ memset::str#3 ] ] with [ zp ZP_WORD:15 [ memset::dst#2 memset::dst#3 memset::dst#1 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:25 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] ] with [ zp ZP_WORD:71 [ init_angle_screen::screen#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:36 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] ] with [ zp ZP_WORD:38 [ atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:54 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 ] ] with [ zp ZP_WORD:134 [ bsearch16u::return#3 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:65 [ malloc::size#3 ] ] with [ zp ZP_WORD:156 [ malloc::mem#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:85 [ make_plasma_charset::$8 ] ] with [ zp ZP_WORD:87 [ make_plasma_charset::$9 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:95 [ init_angle_screen::xw#0 ] ] with [ zp ZP_WORD:100 [ atan2_16::x#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:98 [ init_angle_screen::yw#0 ] ] with [ zp ZP_WORD:102 [ atan2_16::y#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:104 [ atan2_16::return#2 ] ] with [ zp ZP_WORD:106 [ init_angle_screen::angle_w#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:117 [ sqr::return#2 ] ] with [ zp ZP_WORD:119 [ init_dist_screen::yds#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:122 [ sqr::return#3 ] ] with [ zp ZP_WORD:124 [ init_dist_screen::xds#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:122 [ sqr::return#3 init_dist_screen::xds#0 ] ] with [ zp ZP_WORD:150 [ sqr::return#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:126 [ init_dist_screen::ds#0 ] ] with [ zp ZP_WORD:128 [ sqrt::val#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:136 [ sqrt::found#0 ] ] with [ zp ZP_WORD:138 [ sqrt::$3 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:36 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 ] ] with [ zp ZP_WORD:104 [ atan2_16::return#2 init_angle_screen::angle_w#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:54 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 bsearch16u::return#3 ] ] with [ zp ZP_WORD:136 [ sqrt::found#0 sqrt::$3 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:65 [ malloc::size#3 malloc::mem#0 ] ] with [ zp ZP_WORD:152 [ SQUARES#1 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:85 [ make_plasma_charset::$8 make_plasma_charset::$9 ] ] with [ zp ZP_WORD:89 [ make_plasma_charset::$16 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:122 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 ] ] with [ zp ZP_WORD:126 [ init_dist_screen::ds#0 sqrt::val#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:36 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::return#2 init_angle_screen::angle_w#0 ] ] with [ zp ZP_WORD:108 [ init_angle_screen::$10 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:54 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$3 ] ] with [ zp ZP_WORD:140 [ sqrt::$1 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:122 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 ] ] with [ zp ZP_WORD:132 [ bsearch16u::key#0 ] ] - score: 1
Allocated (was zp ZP_WORD:12) zp ZP_WORD:11 [ memset::str#3 memset::dst#2 memset::dst#3 memset::dst#1 ]
Allocated (was zp ZP_WORD:17) zp ZP_WORD:13 [ make_plasma_charset::c#2 make_plasma_charset::c#1 ]
Allocated (was zp ZP_WORD:19) zp ZP_WORD:15 [ print_char_cursor#49 print_char_cursor#18 print_char_cursor#1 ]
Allocated (was zp ZP_BYTE:21) zp ZP_BYTE:17 [ make_plasma_charset::i#7 make_plasma_charset::i#1 ]
Allocated (was zp ZP_BYTE:24) zp ZP_BYTE:18 [ init_angle_screen::y#4 init_angle_screen::y#1 ]
Allocated (was zp ZP_WORD:25) zp ZP_WORD:19 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 init_angle_screen::screen#0 ]
Allocated (was zp ZP_WORD:27) zp ZP_WORD:21 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ]
Allocated (was zp ZP_BYTE:29) zp ZP_BYTE:23 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
Allocated (was zp ZP_BYTE:30) zp ZP_BYTE:24 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
Allocated (was zp ZP_WORD:31) zp ZP_WORD:25 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ]
Allocated (was zp ZP_WORD:33) zp ZP_WORD:27 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ]
Allocated (was zp ZP_WORD:36) zp ZP_WORD:29 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$10 ]
Allocated (was zp ZP_WORD:41) zp ZP_WORD:31 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
Allocated (was zp ZP_WORD:43) zp ZP_WORD:33 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
Allocated (was zp ZP_BYTE:45) zp ZP_BYTE:35 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
Allocated (was zp ZP_WORD:46) zp ZP_WORD:36 [ init_dist_screen::screen_topline#10 init_dist_screen::screen_topline#1 init_dist_screen::screen#0 ]
Allocated (was zp ZP_WORD:48) zp ZP_WORD:38 [ init_dist_screen::screen_bottomline#10 init_dist_screen::screen_bottomline#1 init_dist_screen::screen_bottomline#0 ]
Allocated (was zp ZP_BYTE:51) zp ZP_BYTE:40 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
Allocated (was zp ZP_BYTE:52) zp ZP_BYTE:41 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
Allocated (was zp ZP_WORD:54) zp ZP_WORD:42 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$3 sqrt::$1 ]
Allocated (was zp ZP_WORD:58) zp ZP_WORD:44 [ init_squares::sqr#2 init_squares::sqr#1 ]
Allocated (was zp ZP_WORD:60) zp ZP_WORD:46 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ]
Allocated (was zp ZP_WORD:63) zp ZP_WORD:48 [ heap_head#12 heap_head#1 ]
Allocated (was zp ZP_WORD:65) zp ZP_WORD:50 [ malloc::size#3 malloc::mem#0 SQUARES#1 ]
Allocated (was zp ZP_WORD:67) zp ZP_WORD:52 [ SCREEN_DIST#0 ]
Allocated (was zp ZP_WORD:69) zp ZP_WORD:54 [ SCREEN_ANGLE#0 ]
Allocated (was zp ZP_WORD:73) zp ZP_WORD:56 [ doplasma::sin_x#0 ]
Allocated (was zp ZP_WORD:75) zp ZP_WORD:58 [ doplasma::sin_y#0 ]
Allocated (was zp ZP_WORD:78) zp ZP_WORD:60 [ memset::end#0 ]
Allocated (was zp ZP_BYTE:81) zp ZP_BYTE:62 [ make_plasma_charset::s#0 ]
Allocated (was zp ZP_BYTE:84) zp ZP_BYTE:63 [ make_plasma_charset::$4 ]
Allocated (was zp ZP_WORD:85) zp ZP_WORD:64 [ make_plasma_charset::$8 make_plasma_charset::$9 make_plasma_charset::$16 ]
Allocated (was zp ZP_WORD:95) zp ZP_WORD:66 [ init_angle_screen::xw#0 atan2_16::x#0 ]
Allocated (was zp ZP_WORD:98) zp ZP_WORD:68 [ init_angle_screen::yw#0 atan2_16::y#0 ]
Allocated (was zp ZP_BYTE:110) zp ZP_BYTE:70 [ init_angle_screen::ang_w#0 ]
Allocated (was zp ZP_WORD:117) zp ZP_WORD:71 [ sqr::return#2 init_dist_screen::yds#0 ]
Allocated (was zp ZP_WORD:122) zp ZP_WORD:73 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 ]
Allocated (was zp ZP_WORD:145) zp ZP_WORD:75 [ bsearch16u::pivot#0 ]
Allocated (was zp ZP_WORD:147) zp ZP_WORD:77 [ bsearch16u::result#0 ]

ASSEMBLER BEFORE OPTIMIZATION
  // File Comments
// Plasma based on the distance/angle to the screen center
  // Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(bbegin)
.pc = $80d "Program"
  // Global Constants & labels
  .const SIZEOF_WORD = 2
  .label D018 = $d018
  // Color Ram
  .label COLS = $d800
  // The colors of the C64
  .const BLACK = 0
  // Top of the heap used by malloc()
  .label HEAP_TOP = $a000
  // The number of iterations performed during 16-bit CORDIC atan2 calculation
  .const CORDIC_ITERATIONS_16 = $f
  .label print_line_cursor = $400
  // SID registers for random number generation
  .label SID_VOICE3_FREQ = $d40e
  .label SID_VOICE3_CONTROL = $d412
  .const SID_CONTROL_NOISE = $80
  .label SID_VOICE3_OSC = $d41b
  // Plasma charset
  .label CHARSET = $2000
  // Plasma screen 1
  .label SCREEN1 = $2800
  // Plasma screen 2
  .label SCREEN2 = $2c00
  .const NUM_SQUARES = $30
  .label heap_head = $30
  .label SQUARES = $32
  .label print_char_cursor = $f
  // Screen containing distance to center
  .label SCREEN_DIST = $34
  // Screen containing angle to center
  .label SCREEN_ANGLE = $36
  .label sin_offset_x = 2
  .label sin_offset_y = 3
  // @begin
bbegin:
  // [1] phi from @begin to @1 [phi:@begin->@1]
b1_from_bbegin:
  jmp b1
  // @1
b1:
  // [2] call malloc 
  // [254] phi from @1 to malloc [phi:@1->malloc]
malloc_from_b1:
  // [254] phi (word) malloc::size#3 = (word) $3e8 [phi:@1->malloc#0] -- vwuz1=vwuc1 
  lda #<$3e8
  sta malloc.size
  lda #>$3e8
  sta malloc.size+1
  // [254] phi (byte*) heap_head#12 = (const byte*) HEAP_TOP#0 [phi:@1->malloc#1] -- pbuz1=pbuc1 
  lda #<HEAP_TOP
  sta heap_head
  lda #>HEAP_TOP
  sta heap_head+1
  jsr malloc
  jmp b3
  // @3
b3:
  // [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 -- pvoz1=pvoz2 
  lda malloc.mem
  sta SCREEN_DIST
  lda malloc.mem+1
  sta SCREEN_DIST+1
  // [4] call malloc 
  // [254] phi from @3 to malloc [phi:@3->malloc]
malloc_from_b3:
  // [254] phi (word) malloc::size#3 = (word) $3e8 [phi:@3->malloc#0] -- vwuz1=vwuc1 
  lda #<$3e8
  sta malloc.size
  lda #>$3e8
  sta malloc.size+1
  // [254] phi (byte*) heap_head#12 = (byte*) heap_head#1 [phi:@3->malloc#1] -- register_copy 
  jsr malloc
  jmp b4
  // @4
b4:
  // [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 -- pvoz1=pvoz2 
  lda malloc.mem
  sta SCREEN_ANGLE
  lda malloc.mem+1
  sta SCREEN_ANGLE+1
  // [6] phi from @4 to @2 [phi:@4->@2]
b2_from_b4:
  jmp b2
  // @2
b2:
  // [7] call main 
  jsr main
  // [8] phi from @2 to @end [phi:@2->@end]
bend_from_b2:
  jmp bend
  // @end
bend:
  // main
main: {
    .const toD0181_return = (>(SCREEN1&$3fff)*4)|(>CHARSET)/4&$f
    .const toD0182_return = (>(SCREEN2&$3fff)*4)|(>CHARSET)/4&$f
    // [9] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 -- pbuz1=pbuz2 
    lda SCREEN_DIST
    sta init_dist_screen.screen
    lda SCREEN_DIST+1
    sta init_dist_screen.screen+1
    // [10] call init_dist_screen 
    // [169] phi from main to init_dist_screen [phi:main->init_dist_screen]
  init_dist_screen_from_main:
    jsr init_dist_screen
    jmp b5
    // main::@5
  b5:
    // [11] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 -- pbuz1=pbuz2 
    lda SCREEN_ANGLE
    sta init_angle_screen.screen
    lda SCREEN_ANGLE+1
    sta init_angle_screen.screen+1
    // [12] call init_angle_screen 
    jsr init_angle_screen
    // [13] phi from main::@5 to main::@6 [phi:main::@5->main::@6]
  b6_from_b5:
    jmp b6
    // main::@6
  b6:
    // [14] call make_plasma_charset 
    // [52] phi from main::@6 to make_plasma_charset [phi:main::@6->make_plasma_charset]
  make_plasma_charset_from_b6:
    jsr make_plasma_charset
    // [15] phi from main::@6 to main::@7 [phi:main::@6->main::@7]
  b7_from_b6:
    jmp b7
    // main::@7
  b7:
    // [16] call memset 
    // [44] phi from main::@7 to memset [phi:main::@7->memset]
  memset_from_b7:
    // [44] phi (byte) memset::c#3 = (const byte) BLACK#0 [phi:main::@7->memset#0] -- vbuxx=vbuc1 
    ldx #BLACK
    // [44] phi (void*) memset::str#3 = (void*)(const byte*) COLS#0 [phi:main::@7->memset#1] -- pvoz1=pvoc1 
    lda #<COLS
    sta memset.str
    lda #>COLS
    sta memset.str+1
    jsr memset
    // [17] phi from main::@7 to main::@1 [phi:main::@7->main::@1]
  b1_from_b7:
    // [17] phi (byte) sin_offset_y#14 = (byte) 0 [phi:main::@7->main::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta sin_offset_y
    // [17] phi (byte) sin_offset_x#14 = (byte) 0 [phi:main::@7->main::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta sin_offset_x
    jmp b1
  // Show double-buffered plasma
    // main::@1
  b1:
    // [18] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  b2_from_b1:
    jmp b2
    // main::@2
  b2:
    // [19] call doplasma 
    // [25] phi from main::@2 to doplasma [phi:main::@2->doplasma]
  doplasma_from_b2:
    // [25] phi (byte*) doplasma::screen#6 = (const byte*) SCREEN1#0 [phi:main::@2->doplasma#0] -- pbuz1=pbuc1 
    lda #<SCREEN1
    sta doplasma.screen
    lda #>SCREEN1
    sta doplasma.screen+1
    // [25] phi (byte) sin_offset_y#10 = (byte) sin_offset_y#14 [phi:main::@2->doplasma#1] -- register_copy 
    // [25] phi (byte) sin_offset_x#10 = (byte) sin_offset_x#14 [phi:main::@2->doplasma#2] -- register_copy 
    jsr doplasma
    // [20] phi from main::@2 to main::toD0181 [phi:main::@2->main::toD0181]
  toD0181_from_b2:
    jmp toD0181
    // main::toD0181
  toD0181:
    jmp b3
    // main::@3
  b3:
    // [21] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
    // [22] call doplasma 
    // [25] phi from main::@3 to doplasma [phi:main::@3->doplasma]
  doplasma_from_b3:
    // [25] phi (byte*) doplasma::screen#6 = (const byte*) SCREEN2#0 [phi:main::@3->doplasma#0] -- pbuz1=pbuc1 
    lda #<SCREEN2
    sta doplasma.screen
    lda #>SCREEN2
    sta doplasma.screen+1
    // [25] phi (byte) sin_offset_y#10 = (byte) sin_offset_y#12 [phi:main::@3->doplasma#1] -- register_copy 
    // [25] phi (byte) sin_offset_x#10 = (byte) sin_offset_x#12 [phi:main::@3->doplasma#2] -- register_copy 
    jsr doplasma
    // [23] phi from main::@3 to main::toD0182 [phi:main::@3->main::toD0182]
  toD0182_from_b3:
    jmp toD0182
    // main::toD0182
  toD0182:
    jmp b4
    // main::@4
  b4:
    // [24] *((const byte*) D018#0) ← (const byte) main::toD0182_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0182_return
    sta D018
    // [17] phi from main::@4 to main::@1 [phi:main::@4->main::@1]
  b1_from_b4:
    // [17] phi (byte) sin_offset_y#14 = (byte) sin_offset_y#12 [phi:main::@4->main::@1#0] -- register_copy 
    // [17] phi (byte) sin_offset_x#14 = (byte) sin_offset_x#12 [phi:main::@4->main::@1#1] -- register_copy 
    jmp b1
}
  // doplasma
// Render plasma to the passed screen
// doplasma(byte* zeropage(8) screen)
doplasma: {
    .label angle = 4
    .label dist = 6
    .label sin_x = $38
    .label sin_y = $3a
    .label screen = 8
    .label y = $a
    // [26] (byte*) doplasma::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 -- pbuz1=pbuz2 
    lda SCREEN_ANGLE
    sta angle
    lda SCREEN_ANGLE+1
    sta angle+1
    // [27] (byte*) doplasma::dist#0 ← (byte*)(void*) SCREEN_DIST#0 -- pbuz1=pbuz2 
    lda SCREEN_DIST
    sta dist
    lda SCREEN_DIST+1
    sta dist+1
    // [28] (byte*) doplasma::sin_x#0 ← (const byte[$200]) SINTABLE#0 + (byte) sin_offset_x#10 -- pbuz1=pbuc1_plus_vbuz2 
    lda sin_offset_x
    clc
    adc #<SINTABLE
    sta sin_x
    lda #>SINTABLE
    adc #0
    sta sin_x+1
    // [29] (byte*) doplasma::sin_y#0 ← (const byte[$200]) SINTABLE#0 + (byte) sin_offset_y#10 -- pbuz1=pbuc1_plus_vbuz2 
    lda sin_offset_y
    clc
    adc #<SINTABLE
    sta sin_y
    lda #>SINTABLE
    adc #0
    sta sin_y+1
    // [30] phi from doplasma to doplasma::@1 [phi:doplasma->doplasma::@1]
  b1_from_doplasma:
    // [30] phi (byte) doplasma::y#4 = (byte) 0 [phi:doplasma->doplasma::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta y
    // [30] phi (byte*) doplasma::screen#5 = (byte*) doplasma::screen#6 [phi:doplasma->doplasma::@1#1] -- register_copy 
    // [30] phi (byte*) doplasma::dist#4 = (byte*) doplasma::dist#0 [phi:doplasma->doplasma::@1#2] -- register_copy 
    // [30] phi (byte*) doplasma::angle#4 = (byte*) doplasma::angle#0 [phi:doplasma->doplasma::@1#3] -- register_copy 
    jmp b1
    // [30] phi from doplasma::@3 to doplasma::@1 [phi:doplasma::@3->doplasma::@1]
  b1_from_b3:
    // [30] phi (byte) doplasma::y#4 = (byte) doplasma::y#1 [phi:doplasma::@3->doplasma::@1#0] -- register_copy 
    // [30] phi (byte*) doplasma::screen#5 = (byte*) doplasma::screen#2 [phi:doplasma::@3->doplasma::@1#1] -- register_copy 
    // [30] phi (byte*) doplasma::dist#4 = (byte*) doplasma::dist#1 [phi:doplasma::@3->doplasma::@1#2] -- register_copy 
    // [30] phi (byte*) doplasma::angle#4 = (byte*) doplasma::angle#1 [phi:doplasma::@3->doplasma::@1#3] -- register_copy 
    jmp b1
    // doplasma::@1
  b1:
    // [31] phi from doplasma::@1 to doplasma::@2 [phi:doplasma::@1->doplasma::@2]
  b2_from_b1:
    // [31] phi (byte) doplasma::x#2 = (byte) 0 [phi:doplasma::@1->doplasma::@2#0] -- vbuxx=vbuc1 
    ldx #0
    jmp b2
    // [31] phi from doplasma::@2 to doplasma::@2 [phi:doplasma::@2->doplasma::@2]
  b2_from_b2:
    // [31] phi (byte) doplasma::x#2 = (byte) doplasma::x#1 [phi:doplasma::@2->doplasma::@2#0] -- register_copy 
    jmp b2
    // doplasma::@2
  b2:
    // [32] (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#0 + *((byte*) doplasma::angle#4 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#0 + *((byte*) doplasma::dist#4 + (byte) doplasma::x#2)) -- vbuaa=pbuz1_derefidx_pbuz2_derefidx_vbuxx_plus_pbuz3_derefidx_pbuz4_derefidx_vbuxx 
    txa
    tay
    lda (dist),y
    sta $ff
    lda (angle),y
    tay
    lda (sin_x),y
    ldy $ff
    clc
    adc (sin_y),y
    // [33] *((byte*) doplasma::screen#5 + (byte) doplasma::x#2) ← (byte~) doplasma::$2 -- pbuz1_derefidx_vbuxx=vbuaa 
    stx $ff
    ldy $ff
    sta (screen),y
    // [34] (byte) doplasma::x#1 ← ++ (byte) doplasma::x#2 -- vbuxx=_inc_vbuxx 
    inx
    // [35] if((byte) doplasma::x#1!=(byte) $28) goto doplasma::@2 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$28
    bne b2_from_b2
    jmp b3
    // doplasma::@3
  b3:
    // [36] (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#5 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc screen
    sta screen
    bcc !+
    inc screen+1
  !:
    // [37] (byte*) doplasma::angle#1 ← (byte*) doplasma::angle#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc angle
    sta angle
    bcc !+
    inc angle+1
  !:
    // [38] (byte*) doplasma::dist#1 ← (byte*) doplasma::dist#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc dist
    sta dist
    bcc !+
    inc dist+1
  !:
    // [39] (byte) doplasma::y#1 ← ++ (byte) doplasma::y#4 -- vbuz1=_inc_vbuz1 
    inc y
    // [40] if((byte) doplasma::y#1!=(byte) $1a) goto doplasma::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$1a
    cmp y
    bne b1_from_b3
    jmp b4
    // doplasma::@4
  b4:
    // [41] (byte) sin_offset_x#12 ← (byte) sin_offset_x#10 - (byte) 3 -- vbuz1=vbuz1_minus_vbuc1 
    lax sin_offset_x
    axs #3
    stx sin_offset_x
    // [42] (byte) sin_offset_y#12 ← (byte) sin_offset_y#10 - (byte) 7 -- vbuz1=vbuz1_minus_vbuc1 
    lax sin_offset_y
    axs #7
    stx sin_offset_y
    jmp breturn
    // doplasma::@return
  breturn:
    // [43] return 
    rts
}
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
// memset(void* zeropage($b) str, byte register(X) c)
memset: {
    .label end = $3c
    .label dst = $b
    .label str = $b
    jmp b1
    // memset::@1
  b1:
    // [45] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 -- pbuz1=pbuz2_plus_vwuc1 
    lda str
    clc
    adc #<$3e8
    sta end
    lda str+1
    adc #>$3e8
    sta end+1
    // [46] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3
    // [47] phi from memset::@1 memset::@2 to memset::@2 [phi:memset::@1/memset::@2->memset::@2]
  b2_from_b1:
  b2_from_b2:
    // [47] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset::@1/memset::@2->memset::@2#0] -- register_copy 
    jmp b2
    // memset::@2
  b2:
    // [48] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuxx 
    txa
    ldy #0
    sta (dst),y
    // [49] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc dst
    bne !+
    inc dst+1
  !:
    // [50] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuz2_then_la1 
    lda dst+1
    cmp end+1
    bne b2_from_b2
    lda dst
    cmp end
    bne b2_from_b2
    jmp breturn
    // memset::@return
  breturn:
    // [51] return 
    rts
}
  // make_plasma_charset
// Make a plasma-friendly charset where the chars are randomly filled
make_plasma_charset: {
    .label _4 = $3f
    .label _8 = $40
    .label _9 = $40
    .label s = $3e
    .label i = $11
    .label c = $d
    .label _16 = $40
    // [53] call sid_rnd_init 
    jsr sid_rnd_init
    // [54] phi from make_plasma_charset to make_plasma_charset::@10 [phi:make_plasma_charset->make_plasma_charset::@10]
  b10_from_make_plasma_charset:
    jmp b10
    // make_plasma_charset::@10
  b10:
    // [55] call print_cls 
    // [89] phi from make_plasma_charset::@10 to print_cls [phi:make_plasma_charset::@10->print_cls]
  print_cls_from_b10:
    jsr print_cls
    // [56] phi from make_plasma_charset::@10 to make_plasma_charset::@1 [phi:make_plasma_charset::@10->make_plasma_charset::@1]
  b1_from_b10:
    // [56] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:make_plasma_charset::@10->make_plasma_charset::@1#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor
    sta print_char_cursor
    lda #>print_line_cursor
    sta print_char_cursor+1
    // [56] phi (word) make_plasma_charset::c#2 = (byte) 0 [phi:make_plasma_charset::@10->make_plasma_charset::@1#1] -- vwuz1=vbuc1 
    lda #<0
    sta c
    lda #>0
    sta c+1
    jmp b1
    // [56] phi from make_plasma_charset::@9 to make_plasma_charset::@1 [phi:make_plasma_charset::@9->make_plasma_charset::@1]
  b1_from_b9:
    // [56] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#18 [phi:make_plasma_charset::@9->make_plasma_charset::@1#0] -- register_copy 
    // [56] phi (word) make_plasma_charset::c#2 = (word) make_plasma_charset::c#1 [phi:make_plasma_charset::@9->make_plasma_charset::@1#1] -- register_copy 
    jmp b1
    // make_plasma_charset::@1
  b1:
    // [57] (byte~) make_plasma_charset::$2 ← < (word) make_plasma_charset::c#2 -- vbuaa=_lo_vwuz1 
    lda c
    // [58] (byte) make_plasma_charset::s#0 ← *((const byte[$200]) SINTABLE#0 + (byte~) make_plasma_charset::$2) -- vbuz1=pbuc1_derefidx_vbuaa 
    tay
    lda SINTABLE,y
    sta s
    // [59] phi from make_plasma_charset::@1 to make_plasma_charset::@2 [phi:make_plasma_charset::@1->make_plasma_charset::@2]
  b2_from_b1:
    // [59] phi (byte) make_plasma_charset::i#7 = (byte) 0 [phi:make_plasma_charset::@1->make_plasma_charset::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta i
    jmp b2
    // [59] phi from make_plasma_charset::@6 to make_plasma_charset::@2 [phi:make_plasma_charset::@6->make_plasma_charset::@2]
  b2_from_b6:
    // [59] phi (byte) make_plasma_charset::i#7 = (byte) make_plasma_charset::i#1 [phi:make_plasma_charset::@6->make_plasma_charset::@2#0] -- register_copy 
    jmp b2
    // make_plasma_charset::@2
  b2:
    // [60] phi from make_plasma_charset::@2 to make_plasma_charset::@3 [phi:make_plasma_charset::@2->make_plasma_charset::@3]
  b3_from_b2:
    // [60] phi (byte) make_plasma_charset::b#2 = (byte) 0 [phi:make_plasma_charset::@2->make_plasma_charset::@3#0] -- vbuyy=vbuc1 
    ldy #0
    // [60] phi (byte) make_plasma_charset::ii#2 = (byte) 0 [phi:make_plasma_charset::@2->make_plasma_charset::@3#1] -- vbuxx=vbuc1 
    ldx #0
    jmp b3
    // [60] phi from make_plasma_charset::@4 to make_plasma_charset::@3 [phi:make_plasma_charset::@4->make_plasma_charset::@3]
  b3_from_b4:
    // [60] phi (byte) make_plasma_charset::b#2 = (byte) make_plasma_charset::b#3 [phi:make_plasma_charset::@4->make_plasma_charset::@3#0] -- register_copy 
    // [60] phi (byte) make_plasma_charset::ii#2 = (byte) make_plasma_charset::ii#1 [phi:make_plasma_charset::@4->make_plasma_charset::@3#1] -- register_copy 
    jmp b3
    // make_plasma_charset::@3
  b3:
    // [61] call sid_rnd 
    jsr sid_rnd
    // [62] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0
    jmp b11
    // make_plasma_charset::@11
  b11:
    // [63] (byte~) make_plasma_charset::$3 ← (byte) sid_rnd::return#2
    // [64] (byte~) make_plasma_charset::$4 ← (byte~) make_plasma_charset::$3 & (byte) $ff -- vbuz1=vbuaa_band_vbuc1 
    and #$ff
    sta _4
    // [65] if((byte~) make_plasma_charset::$4<=(byte) make_plasma_charset::s#0) goto make_plasma_charset::@4 -- vbuz1_le_vbuz2_then_la1 
    lda s
    cmp _4
    bcs b4_from_b11
    jmp b5
    // make_plasma_charset::@5
  b5:
    // [66] (byte) make_plasma_charset::b#1 ← (byte) make_plasma_charset::b#2 | *((const byte[8]) make_plasma_charset::bittab#0 + (byte) make_plasma_charset::ii#2) -- vbuyy=vbuyy_bor_pbuc1_derefidx_vbuxx 
    tya
    ora bittab,x
    tay
    // [67] phi from make_plasma_charset::@11 make_plasma_charset::@5 to make_plasma_charset::@4 [phi:make_plasma_charset::@11/make_plasma_charset::@5->make_plasma_charset::@4]
  b4_from_b11:
  b4_from_b5:
    // [67] phi (byte) make_plasma_charset::b#3 = (byte) make_plasma_charset::b#2 [phi:make_plasma_charset::@11/make_plasma_charset::@5->make_plasma_charset::@4#0] -- register_copy 
    jmp b4
    // make_plasma_charset::@4
  b4:
    // [68] (byte) make_plasma_charset::ii#1 ← ++ (byte) make_plasma_charset::ii#2 -- vbuxx=_inc_vbuxx 
    inx
    // [69] if((byte) make_plasma_charset::ii#1<(byte) 8) goto make_plasma_charset::@3 -- vbuxx_lt_vbuc1_then_la1 
    cpx #8
    bcc b3_from_b4
    jmp b6
    // make_plasma_charset::@6
  b6:
    // [70] (word~) make_plasma_charset::$8 ← (word) make_plasma_charset::c#2 << (byte) 3 -- vwuz1=vwuz2_rol_3 
    lda c
    asl
    sta _8
    lda c+1
    rol
    sta _8+1
    asl _8
    rol _8+1
    asl _8
    rol _8+1
    // [71] (word~) make_plasma_charset::$9 ← (word~) make_plasma_charset::$8 + (byte) make_plasma_charset::i#7 -- vwuz1=vwuz1_plus_vbuz2 
    lda i
    clc
    adc _9
    sta _9
    bcc !+
    inc _9+1
  !:
    // [72] (byte*~) make_plasma_charset::$16 ← (const byte*) CHARSET#0 + (word~) make_plasma_charset::$9 -- pbuz1=pbuc1_plus_vwuz1 
    clc
    lda _16
    adc #<CHARSET
    sta _16
    lda _16+1
    adc #>CHARSET
    sta _16+1
    // [73] *((byte*~) make_plasma_charset::$16) ← (byte) make_plasma_charset::b#3 -- _deref_pbuz1=vbuyy 
    tya
    ldy #0
    sta (_16),y
    // [74] (byte) make_plasma_charset::i#1 ← ++ (byte) make_plasma_charset::i#7 -- vbuz1=_inc_vbuz1 
    inc i
    // [75] if((byte) make_plasma_charset::i#1<(byte) 8) goto make_plasma_charset::@2 -- vbuz1_lt_vbuc1_then_la1 
    lda i
    cmp #8
    bcc b2_from_b6
    jmp b7
    // make_plasma_charset::@7
  b7:
    // [76] (byte~) make_plasma_charset::$11 ← (word) make_plasma_charset::c#2 & (byte) 7 -- vbuaa=vwuz1_band_vbuc1 
    lda c
    and #7
    // [77] if((byte~) make_plasma_charset::$11!=(byte) 0) goto make_plasma_charset::@9 -- vbuaa_neq_0_then_la1 
    cmp #0
    bne b9_from_b7
    // [78] phi from make_plasma_charset::@7 to make_plasma_charset::@8 [phi:make_plasma_charset::@7->make_plasma_charset::@8]
  b8_from_b7:
    jmp b8
    // make_plasma_charset::@8
  b8:
    // [79] call print_char 
    jsr print_char
    // [80] phi from make_plasma_charset::@7 make_plasma_charset::@8 to make_plasma_charset::@9 [phi:make_plasma_charset::@7/make_plasma_charset::@8->make_plasma_charset::@9]
  b9_from_b7:
  b9_from_b8:
    // [80] phi (byte*) print_char_cursor#18 = (byte*) print_char_cursor#49 [phi:make_plasma_charset::@7/make_plasma_charset::@8->make_plasma_charset::@9#0] -- register_copy 
    jmp b9
    // make_plasma_charset::@9
  b9:
    // [81] (word) make_plasma_charset::c#1 ← ++ (word) make_plasma_charset::c#2 -- vwuz1=_inc_vwuz1 
    inc c
    bne !+
    inc c+1
  !:
    // [82] if((word) make_plasma_charset::c#1<(word) $100) goto make_plasma_charset::@1 -- vwuz1_lt_vwuc1_then_la1 
    lda c+1
    cmp #>$100
    bcc b1_from_b9
    bne !+
    lda c
    cmp #<$100
    bcc b1_from_b9
  !:
    jmp breturn
    // make_plasma_charset::@return
  breturn:
    // [83] return 
    rts
    bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80
}
  // print_char
// Print a single char
print_char: {
    .const ch = '.'
    // [84] *((byte*) print_char_cursor#49) ← (const byte) print_char::ch#0 -- _deref_pbuz1=vbuc1 
    lda #ch
    ldy #0
    sta (print_char_cursor),y
    // [85] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#49 -- pbuz1=_inc_pbuz1 
    inc print_char_cursor
    bne !+
    inc print_char_cursor+1
  !:
    jmp breturn
    // print_char::@return
  breturn:
    // [86] return 
    rts
}
  // sid_rnd
// Get a random number from the SID voice 3,
// Must be initialized with sid_rnd_init()
sid_rnd: {
    // [87] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 
    lda SID_VOICE3_OSC
    jmp breturn
    // sid_rnd::@return
  breturn:
    // [88] return 
    rts
}
  // print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    // [90] call memset 
    // [44] phi from print_cls to memset [phi:print_cls->memset]
  memset_from_print_cls:
    // [44] phi (byte) memset::c#3 = (byte) ' ' [phi:print_cls->memset#0] -- vbuxx=vbuc1 
    ldx #' '
    // [44] phi (void*) memset::str#3 = (void*)(const byte*) print_line_cursor#0 [phi:print_cls->memset#1] -- pvoz1=pvoc1 
    lda #<print_line_cursor
    sta memset.str
    lda #>print_line_cursor
    sta memset.str+1
    jsr memset
    jmp breturn
    // print_cls::@return
  breturn:
    // [91] return 
    rts
}
  // sid_rnd_init
// Initialize SID voice 3 for random number generation
sid_rnd_init: {
    // [92] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff -- _deref_pwuc1=vwuc2 
    lda #<$ffff
    sta SID_VOICE3_FREQ
    lda #>$ffff
    sta SID_VOICE3_FREQ+1
    // [93] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 
    lda #SID_CONTROL_NOISE
    sta SID_VOICE3_CONTROL
    jmp breturn
    // sid_rnd_init::@return
  breturn:
    // [94] return 
    rts
}
  // init_angle_screen
// Populates 1000 bytes (a screen) with values representing the angle to the center.
// Utilizes symmetry around the  center
// init_angle_screen(byte* zeropage($13) screen)
init_angle_screen: {
    .label _10 = $1d
    .label screen = $13
    .label screen_topline = $15
    .label screen_bottomline = $13
    .label xw = $42
    .label yw = $44
    .label angle_w = $1d
    .label ang_w = $46
    .label x = $17
    .label xb = $18
    .label y = $12
    // [95] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c -- pbuz1=pbuz2_plus_vwuc1 
    lda screen
    clc
    adc #<$28*$c
    sta screen_topline
    lda screen+1
    adc #>$28*$c
    sta screen_topline+1
    // [96] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c -- pbuz1=pbuz1_plus_vwuc1 
    clc
    lda screen_bottomline
    adc #<$28*$c
    sta screen_bottomline
    lda screen_bottomline+1
    adc #>$28*$c
    sta screen_bottomline+1
    // [97] phi from init_angle_screen to init_angle_screen::@1 [phi:init_angle_screen->init_angle_screen::@1]
  b1_from_init_angle_screen:
    // [97] phi (byte*) init_angle_screen::screen_topline#5 = (byte*) init_angle_screen::screen_topline#0 [phi:init_angle_screen->init_angle_screen::@1#0] -- register_copy 
    // [97] phi (byte*) init_angle_screen::screen_bottomline#5 = (byte*) init_angle_screen::screen_bottomline#0 [phi:init_angle_screen->init_angle_screen::@1#1] -- register_copy 
    // [97] phi (byte) init_angle_screen::y#4 = (byte) 0 [phi:init_angle_screen->init_angle_screen::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta y
    jmp b1
    // [97] phi from init_angle_screen::@3 to init_angle_screen::@1 [phi:init_angle_screen::@3->init_angle_screen::@1]
  b1_from_b3:
    // [97] phi (byte*) init_angle_screen::screen_topline#5 = (byte*) init_angle_screen::screen_topline#1 [phi:init_angle_screen::@3->init_angle_screen::@1#0] -- register_copy 
    // [97] phi (byte*) init_angle_screen::screen_bottomline#5 = (byte*) init_angle_screen::screen_bottomline#1 [phi:init_angle_screen::@3->init_angle_screen::@1#1] -- register_copy 
    // [97] phi (byte) init_angle_screen::y#4 = (byte) init_angle_screen::y#1 [phi:init_angle_screen::@3->init_angle_screen::@1#2] -- register_copy 
    jmp b1
    // init_angle_screen::@1
  b1:
    // [98] phi from init_angle_screen::@1 to init_angle_screen::@2 [phi:init_angle_screen::@1->init_angle_screen::@2]
  b2_from_b1:
    // [98] phi (byte) init_angle_screen::xb#2 = (byte) $27 [phi:init_angle_screen::@1->init_angle_screen::@2#0] -- vbuz1=vbuc1 
    lda #$27
    sta xb
    // [98] phi (byte) init_angle_screen::x#2 = (byte) 0 [phi:init_angle_screen::@1->init_angle_screen::@2#1] -- vbuz1=vbuc1 
    lda #0
    sta x
    jmp b2
    // [98] phi from init_angle_screen::@4 to init_angle_screen::@2 [phi:init_angle_screen::@4->init_angle_screen::@2]
  b2_from_b4:
    // [98] phi (byte) init_angle_screen::xb#2 = (byte) init_angle_screen::xb#1 [phi:init_angle_screen::@4->init_angle_screen::@2#0] -- register_copy 
    // [98] phi (byte) init_angle_screen::x#2 = (byte) init_angle_screen::x#1 [phi:init_angle_screen::@4->init_angle_screen::@2#1] -- register_copy 
    jmp b2
    // init_angle_screen::@2
  b2:
    // [99] (byte~) init_angle_screen::$2 ← (byte) init_angle_screen::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 
    lda x
    asl
    // [100] (byte~) init_angle_screen::$3 ← (byte) $27 - (byte~) init_angle_screen::$2 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    clc
    adc #$27+1
    // [101] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$3 w= (byte) 0 -- vwuz1=vbuaa_word_vbuc1 
    ldy #0
    sta xw+1
    sty xw
    // [102] (byte~) init_angle_screen::$6 ← (byte) init_angle_screen::y#4 << (byte) 1 -- vbuaa=vbuz1_rol_1 
    lda y
    asl
    // [103] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$6 w= (byte) 0 -- vwuz1=vbuaa_word_vbuc1 
    ldy #0
    sta yw+1
    sty yw
    // [104] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0
    // [105] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0
    // [106] call atan2_16 
    jsr atan2_16
    // [107] (word) atan2_16::return#2 ← (word) atan2_16::return#0
    jmp b4
    // init_angle_screen::@4
  b4:
    // [108] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2
    // [109] (word~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (byte) $80 -- vwuz1=vwuz1_plus_vbuc1 
    lda #$80
    clc
    adc _10
    sta _10
    bcc !+
    inc _10+1
  !:
    // [110] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$10 -- vbuz1=_hi_vwuz2 
    lda _10+1
    sta ang_w
    // [111] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3 
    lda ang_w
    ldy xb
    sta (screen_bottomline),y
    // [112] (byte~) init_angle_screen::$12 ← - (byte) init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1 
    lda ang_w
    eor #$ff
    clc
    adc #1
    // [113] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$12 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy xb
    sta (screen_topline),y
    // [114] (byte~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1 
    lda #$80
    clc
    adc ang_w
    // [115] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy x
    sta (screen_topline),y
    // [116] (byte~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1 
    lda #$80
    sec
    sbc ang_w
    // [117] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy x
    sta (screen_bottomline),y
    // [118] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2 -- vbuz1=_inc_vbuz1 
    inc x
    // [119] (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2 -- vbuz1=_dec_vbuz1 
    dec xb
    // [120] if((byte) init_angle_screen::x#1<(byte) $13+(byte) 1) goto init_angle_screen::@2 -- vbuz1_lt_vbuc1_then_la1 
    lda x
    cmp #$13+1
    bcc b2_from_b4
    jmp b3
    // init_angle_screen::@3
  b3:
    // [121] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#5 - (byte) $28 -- pbuz1=pbuz1_minus_vwuc1 
    lda screen_topline
    sec
    sbc #<$28
    sta screen_topline
    lda screen_topline+1
    sbc #>$28
    sta screen_topline+1
    // [122] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#5 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc screen_bottomline
    sta screen_bottomline
    bcc !+
    inc screen_bottomline+1
  !:
    // [123] (byte) init_angle_screen::y#1 ← ++ (byte) init_angle_screen::y#4 -- vbuz1=_inc_vbuz1 
    inc y
    // [124] if((byte) init_angle_screen::y#1!=(byte) $d) goto init_angle_screen::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$d
    cmp y
    bne b1_from_b3
    jmp breturn
    // init_angle_screen::@return
  breturn:
    // [125] return 
    rts
}
  // atan2_16
// Find the atan2(x, y) - which is the angle of the line from (0,0) to (x,y)
// Finding the angle requires a binary search using CORDIC_ITERATIONS_16
// Returns the angle in hex-degrees (0=0, 0x8000=PI, 0x10000=2*PI)
// atan2_16(signed word zeropage($42) x, signed word zeropage($44) y)
atan2_16: {
    .label _2 = $19
    .label _7 = $1b
    .label yi = $19
    .label xi = $1b
    .label angle = $1d
    .label xd = $21
    .label yd = $1f
    .label return = $1d
    .label x = $42
    .label y = $44
    // [126] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 -- vwsz1_ge_0_then_la1 
    lda y+1
    bpl b1
    jmp b2
    // atan2_16::@2
  b2:
    // [127] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 -- vwsz1=_neg_vwsz2 
    sec
    lda #0
    sbc y
    sta _2
    lda #0
    sbc y+1
    sta _2+1
    // [128] phi from atan2_16::@1 atan2_16::@2 to atan2_16::@3 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3]
  b3_from_b1:
  b3_from_b2:
    // [128] phi (signed word) atan2_16::yi#0 = (signed word~) atan2_16::yi#16 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3#0] -- register_copy 
    jmp b3
    // atan2_16::@3
  b3:
    // [129] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 -- vwsz1_ge_0_then_la1 
    lda x+1
    bpl b4
    jmp b5
    // atan2_16::@5
  b5:
    // [130] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 -- vwsz1=_neg_vwsz2 
    sec
    lda #0
    sbc x
    sta _7
    lda #0
    sbc x+1
    sta _7+1
    // [131] phi from atan2_16::@4 atan2_16::@5 to atan2_16::@6 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6]
  b6_from_b4:
  b6_from_b5:
    // [131] phi (signed word) atan2_16::xi#0 = (signed word~) atan2_16::xi#13 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6#0] -- register_copy 
    jmp b6
    // atan2_16::@6
  b6:
    // [132] phi from atan2_16::@6 to atan2_16::@10 [phi:atan2_16::@6->atan2_16::@10]
  b10_from_b6:
    // [132] phi (word) atan2_16::angle#12 = (byte) 0 [phi:atan2_16::@6->atan2_16::@10#0] -- vwuz1=vbuc1 
    lda #<0
    sta angle
    lda #>0
    sta angle+1
    // [132] phi (byte) atan2_16::i#2 = (byte) 0 [phi:atan2_16::@6->atan2_16::@10#1] -- vbuxx=vbuc1 
    ldx #0
    // [132] phi (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#0 [phi:atan2_16::@6->atan2_16::@10#2] -- register_copy 
    // [132] phi (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#0 [phi:atan2_16::@6->atan2_16::@10#3] -- register_copy 
    jmp b10
    // atan2_16::@10
  b10:
    // [133] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 -- vwsz1_neq_0_then_la1 
    lda yi+1
    bne b11
    lda yi
    bne b11
    // [134] phi from atan2_16::@10 atan2_16::@19 to atan2_16::@12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12]
  b12_from_b10:
  b12_from_b19:
    // [134] phi (word) atan2_16::angle#6 = (word) atan2_16::angle#12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12#0] -- register_copy 
    jmp b12
    // atan2_16::@12
  b12:
    // [135] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 -- vwuz1=vwuz1_ror_1 
    lsr angle+1
    ror angle
    // [136] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 -- vwsz1_ge_0_then_la1 
    lda x+1
    bpl b7_from_b12
    jmp b21
    // atan2_16::@21
  b21:
    // [137] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 -- vwuz1=vwuc1_minus_vwuz1 
    sec
    lda #<$8000
    sbc angle
    sta angle
    lda #>$8000
    sbc angle+1
    sta angle+1
    // [138] phi from atan2_16::@12 atan2_16::@21 to atan2_16::@7 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7]
  b7_from_b12:
  b7_from_b21:
    // [138] phi (word) atan2_16::angle#11 = (word) atan2_16::angle#1 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7#0] -- register_copy 
    jmp b7
    // atan2_16::@7
  b7:
    // [139] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 -- vwsz1_ge_0_then_la1 
    lda y+1
    bpl b8_from_b7
    jmp b9
    // atan2_16::@9
  b9:
    // [140] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 -- vwuz1=_neg_vwuz1 
    sec
    lda #0
    sbc angle
    sta angle
    lda #0
    sbc angle+1
    sta angle+1
    // [141] phi from atan2_16::@7 atan2_16::@9 to atan2_16::@8 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8]
  b8_from_b7:
  b8_from_b9:
    // [141] phi (word) atan2_16::return#0 = (word) atan2_16::angle#11 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8#0] -- register_copy 
    jmp b8
    // atan2_16::@8
  b8:
    jmp breturn
    // atan2_16::@return
  breturn:
    // [142] return 
    rts
    // atan2_16::@11
  b11:
    // [143] (byte~) atan2_16::shift#5 ← (byte) atan2_16::i#2 -- vbuyy=vbuxx 
    txa
    tay
    // [144] (signed word~) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 -- vwsz1=vwsz2 
    lda xi
    sta xd
    lda xi+1
    sta xd+1
    // [145] (signed word~) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 -- vwsz1=vwsz2 
    lda yi
    sta yd
    lda yi+1
    sta yd+1
    // [146] phi from atan2_16::@11 atan2_16::@14 to atan2_16::@13 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13]
  b13_from_b11:
  b13_from_b14:
    // [146] phi (signed word) atan2_16::yd#3 = (signed word~) atan2_16::yd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#0] -- register_copy 
    // [146] phi (signed word) atan2_16::xd#3 = (signed word~) atan2_16::xd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#1] -- register_copy 
    // [146] phi (byte) atan2_16::shift#2 = (byte~) atan2_16::shift#5 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#2] -- register_copy 
    jmp b13
    // atan2_16::@13
  b13:
    // [147] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1 
    cpy #2
    bcs b14
    jmp b15
    // atan2_16::@15
  b15:
    // [148] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17 -- vbuc1_eq_vbuyy_then_la1 
    cpy #0
    beq b17_from_b15
    jmp b16
    // atan2_16::@16
  b16:
    // [149] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 -- vwsz1=vwsz1_ror_1 
    lda xd+1
    cmp #$80
    ror xd+1
    ror xd
    // [150] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 -- vwsz1=vwsz1_ror_1 
    lda yd+1
    cmp #$80
    ror yd+1
    ror yd
    // [151] phi from atan2_16::@15 atan2_16::@16 to atan2_16::@17 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17]
  b17_from_b15:
  b17_from_b16:
    // [151] phi (signed word) atan2_16::xd#5 = (signed word) atan2_16::xd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#0] -- register_copy 
    // [151] phi (signed word) atan2_16::yd#5 = (signed word) atan2_16::yd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#1] -- register_copy 
    jmp b17
    // atan2_16::@17
  b17:
    // [152] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 -- vwsz1_ge_0_then_la1 
    lda yi+1
    bpl b18
    jmp b20
    // atan2_16::@20
  b20:
    // [153] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 -- vwsz1=vwsz1_minus_vwsz2 
    lda xi
    sec
    sbc yd
    sta xi
    lda xi+1
    sbc yd+1
    sta xi+1
    // [154] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 -- vwsz1=vwsz1_plus_vwsz2 
    lda yi
    clc
    adc xd
    sta yi
    lda yi+1
    adc xd+1
    sta yi+1
    // [155] (byte~) atan2_16::$24 ← (byte) atan2_16::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // [156] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$24) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuaa 
    tay
    sec
    lda angle
    sbc CORDIC_ATAN2_ANGLES_16,y
    sta angle
    lda angle+1
    sbc CORDIC_ATAN2_ANGLES_16+1,y
    sta angle+1
    // [157] phi from atan2_16::@18 atan2_16::@20 to atan2_16::@19 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19]
  b19_from_b18:
  b19_from_b20:
    // [157] phi (signed word) atan2_16::xi#8 = (signed word) atan2_16::xi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#0] -- register_copy 
    // [157] phi (word) atan2_16::angle#13 = (word) atan2_16::angle#2 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#1] -- register_copy 
    // [157] phi (signed word) atan2_16::yi#8 = (signed word) atan2_16::yi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#2] -- register_copy 
    jmp b19
    // atan2_16::@19
  b19:
    // [158] (byte) atan2_16::i#1 ← ++ (byte) atan2_16::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [159] if((byte) atan2_16::i#1==(const byte) CORDIC_ITERATIONS_16#0-(byte) 1+(byte) 1) goto atan2_16::@12 -- vbuxx_eq_vbuc1_then_la1 
    cpx #CORDIC_ITERATIONS_16-1+1
    beq b12_from_b19
    // [132] phi from atan2_16::@19 to atan2_16::@10 [phi:atan2_16::@19->atan2_16::@10]
  b10_from_b19:
    // [132] phi (word) atan2_16::angle#12 = (word) atan2_16::angle#13 [phi:atan2_16::@19->atan2_16::@10#0] -- register_copy 
    // [132] phi (byte) atan2_16::i#2 = (byte) atan2_16::i#1 [phi:atan2_16::@19->atan2_16::@10#1] -- register_copy 
    // [132] phi (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#8 [phi:atan2_16::@19->atan2_16::@10#2] -- register_copy 
    // [132] phi (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#8 [phi:atan2_16::@19->atan2_16::@10#3] -- register_copy 
    jmp b10
    // atan2_16::@18
  b18:
    // [160] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 -- vwsz1=vwsz1_plus_vwsz2 
    lda xi
    clc
    adc yd
    sta xi
    lda xi+1
    adc yd+1
    sta xi+1
    // [161] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 -- vwsz1=vwsz1_minus_vwsz2 
    lda yi
    sec
    sbc xd
    sta yi
    lda yi+1
    sbc xd+1
    sta yi+1
    // [162] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // [163] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$23) -- vwuz1=vwuz1_plus_pwuc1_derefidx_vbuaa 
    tay
    clc
    lda angle
    adc CORDIC_ATAN2_ANGLES_16,y
    sta angle
    lda angle+1
    adc CORDIC_ATAN2_ANGLES_16+1,y
    sta angle+1
    jmp b19_from_b18
    // atan2_16::@14
  b14:
    // [164] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2 
    lda xd+1
    cmp #$80
    ror xd+1
    ror xd
    lda xd+1
    cmp #$80
    ror xd+1
    ror xd
    // [165] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2 
    lda yd+1
    cmp #$80
    ror yd+1
    ror yd
    lda yd+1
    cmp #$80
    ror yd+1
    ror yd
    // [166] (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#2 - (byte) 2 -- vbuyy=vbuyy_minus_2 
    dey
    dey
    jmp b13_from_b14
    // atan2_16::@4
  b4:
    // [167] (signed word~) atan2_16::xi#13 ← (signed word) atan2_16::x#0 -- vwsz1=vwsz2 
    lda x
    sta xi
    lda x+1
    sta xi+1
    jmp b6_from_b4
    // atan2_16::@1
  b1:
    // [168] (signed word~) atan2_16::yi#16 ← (signed word) atan2_16::y#0 -- vwsz1=vwsz2 
    lda y
    sta yi
    lda y+1
    sta yi+1
    jmp b3_from_b1
}
  // init_dist_screen
// Populates 1000 bytes (a screen) with values representing the distance to the center.
// The actual value stored is distance*2 to increase precision
// init_dist_screen(byte* zeropage($24) screen)
init_dist_screen: {
    .label screen = $24
    .label screen_bottomline = $26
    .label yds = $47
    .label xds = $49
    .label ds = $49
    .label x = $28
    .label xb = $29
    .label screen_topline = $24
    .label y = $23
    // [170] call init_squares 
    // [241] phi from init_dist_screen to init_squares [phi:init_dist_screen->init_squares]
  init_squares_from_init_dist_screen:
    jsr init_squares
    jmp b10
    // init_dist_screen::@10
  b10:
    // [171] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 -- pbuz1=pbuz2_plus_vwuc1 
    lda screen
    clc
    adc #<$28*$18
    sta screen_bottomline
    lda screen+1
    adc #>$28*$18
    sta screen_bottomline+1
    // [172] phi from init_dist_screen::@10 to init_dist_screen::@1 [phi:init_dist_screen::@10->init_dist_screen::@1]
  b1_from_b10:
    // [172] phi (byte*) init_dist_screen::screen_bottomline#10 = (byte*) init_dist_screen::screen_bottomline#0 [phi:init_dist_screen::@10->init_dist_screen::@1#0] -- register_copy 
    // [172] phi (byte*) init_dist_screen::screen_topline#10 = (byte*) init_dist_screen::screen#0 [phi:init_dist_screen::@10->init_dist_screen::@1#1] -- register_copy 
    // [172] phi (byte) init_dist_screen::y#10 = (byte) 0 [phi:init_dist_screen::@10->init_dist_screen::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta y
    jmp b1
    // [172] phi from init_dist_screen::@9 to init_dist_screen::@1 [phi:init_dist_screen::@9->init_dist_screen::@1]
  b1_from_b9:
    // [172] phi (byte*) init_dist_screen::screen_bottomline#10 = (byte*) init_dist_screen::screen_bottomline#1 [phi:init_dist_screen::@9->init_dist_screen::@1#0] -- register_copy 
    // [172] phi (byte*) init_dist_screen::screen_topline#10 = (byte*) init_dist_screen::screen_topline#1 [phi:init_dist_screen::@9->init_dist_screen::@1#1] -- register_copy 
    // [172] phi (byte) init_dist_screen::y#10 = (byte) init_dist_screen::y#1 [phi:init_dist_screen::@9->init_dist_screen::@1#2] -- register_copy 
    jmp b1
    // init_dist_screen::@1
  b1:
    // [173] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 
    lda y
    asl
    // [174] if((byte) init_dist_screen::y2#0>=(byte) $18) goto init_dist_screen::@2 -- vbuaa_ge_vbuc1_then_la1 
    cmp #$18
    bcs b2
    jmp b3
    // init_dist_screen::@3
  b3:
    // [175] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    clc
    adc #$18+1
    // [176] 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:
    // [176] phi (byte) init_dist_screen::yd#0 = (byte~) 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:
    // [177] (byte) sqr::val#0 ← (byte) init_dist_screen::yd#0
    // [178] call sqr 
    // [237] phi from init_dist_screen::@4 to sqr [phi:init_dist_screen::@4->sqr]
  sqr_from_b4:
    // [237] phi (byte) sqr::val#2 = (byte) sqr::val#0 [phi:init_dist_screen::@4->sqr#0] -- register_copy 
    jsr sqr
    // [179] (word) sqr::return#2 ← (word) sqr::return#0 -- vwuz1=vwuz2 
    lda sqr.return
    sta sqr.return_2
    lda sqr.return+1
    sta sqr.return_2+1
    jmp b11
    // init_dist_screen::@11
  b11:
    // [180] (word) init_dist_screen::yds#0 ← (word) sqr::return#2
    // [181] phi from init_dist_screen::@11 to init_dist_screen::@5 [phi:init_dist_screen::@11->init_dist_screen::@5]
  b5_from_b11:
    // [181] phi (byte) init_dist_screen::xb#2 = (byte) $27 [phi:init_dist_screen::@11->init_dist_screen::@5#0] -- vbuz1=vbuc1 
    lda #$27
    sta xb
    // [181] phi (byte) init_dist_screen::x#2 = (byte) 0 [phi:init_dist_screen::@11->init_dist_screen::@5#1] -- vbuz1=vbuc1 
    lda #0
    sta x
    jmp b5
    // [181] phi from init_dist_screen::@13 to init_dist_screen::@5 [phi:init_dist_screen::@13->init_dist_screen::@5]
  b5_from_b13:
    // [181] phi (byte) init_dist_screen::xb#2 = (byte) init_dist_screen::xb#1 [phi:init_dist_screen::@13->init_dist_screen::@5#0] -- register_copy 
    // [181] phi (byte) init_dist_screen::x#2 = (byte) init_dist_screen::x#1 [phi:init_dist_screen::@13->init_dist_screen::@5#1] -- register_copy 
    jmp b5
    // init_dist_screen::@5
  b5:
    // [182] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 
    lda x
    asl
    // [183] if((byte) init_dist_screen::x2#0>=(byte) $27) goto init_dist_screen::@6 -- vbuaa_ge_vbuc1_then_la1 
    cmp #$27
    bcs b6
    jmp b7
    // init_dist_screen::@7
  b7:
    // [184] (byte~) init_dist_screen::$13 ← (byte) $27 - (byte) init_dist_screen::x2#0 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    clc
    adc #$27+1
    // [185] phi from init_dist_screen::@6 init_dist_screen::@7 to init_dist_screen::@8 [phi:init_dist_screen::@6/init_dist_screen::@7->init_dist_screen::@8]
  b8_from_b6:
  b8_from_b7:
    // [185] phi (byte) init_dist_screen::xd#0 = (byte~) init_dist_screen::$15 [phi:init_dist_screen::@6/init_dist_screen::@7->init_dist_screen::@8#0] -- register_copy 
    jmp b8
    // init_dist_screen::@8
  b8:
    // [186] (byte) sqr::val#1 ← (byte) init_dist_screen::xd#0
    // [187] call sqr 
    // [237] phi from init_dist_screen::@8 to sqr [phi:init_dist_screen::@8->sqr]
  sqr_from_b8:
    // [237] phi (byte) sqr::val#2 = (byte) sqr::val#1 [phi:init_dist_screen::@8->sqr#0] -- register_copy 
    jsr sqr
    // [188] (word) sqr::return#3 ← (word) sqr::return#0
    jmp b12
    // init_dist_screen::@12
  b12:
    // [189] (word) init_dist_screen::xds#0 ← (word) sqr::return#3
    // [190] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda ds
    clc
    adc yds
    sta ds
    lda ds+1
    adc yds+1
    sta ds+1
    // [191] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0
    // [192] call sqrt 
    jsr sqrt
    // [193] (byte) sqrt::return#2 ← (byte) sqrt::return#0
    jmp b13
    // init_dist_screen::@13
  b13:
    // [194] (byte) init_dist_screen::d#0 ← (byte) sqrt::return#2
    // [195] *((byte*) init_dist_screen::screen_topline#10 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy x
    sta (screen_topline),y
    // [196] *((byte*) init_dist_screen::screen_bottomline#10 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy x
    sta (screen_bottomline),y
    // [197] *((byte*) init_dist_screen::screen_topline#10 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy xb
    sta (screen_topline),y
    // [198] *((byte*) init_dist_screen::screen_bottomline#10 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy xb
    sta (screen_bottomline),y
    // [199] (byte) init_dist_screen::x#1 ← ++ (byte) init_dist_screen::x#2 -- vbuz1=_inc_vbuz1 
    inc x
    // [200] (byte) init_dist_screen::xb#1 ← -- (byte) init_dist_screen::xb#2 -- vbuz1=_dec_vbuz1 
    dec xb
    // [201] if((byte) init_dist_screen::x#1<(byte) $13+(byte) 1) goto init_dist_screen::@5 -- vbuz1_lt_vbuc1_then_la1 
    lda x
    cmp #$13+1
    bcc b5_from_b13
    jmp b9
    // init_dist_screen::@9
  b9:
    // [202] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#10 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc screen_topline
    sta screen_topline
    bcc !+
    inc screen_topline+1
  !:
    // [203] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#10 - (byte) $28 -- pbuz1=pbuz1_minus_vwuc1 
    lda screen_bottomline
    sec
    sbc #<$28
    sta screen_bottomline
    lda screen_bottomline+1
    sbc #>$28
    sta screen_bottomline+1
    // [204] (byte) init_dist_screen::y#1 ← ++ (byte) init_dist_screen::y#10 -- vbuz1=_inc_vbuz1 
    inc y
    // [205] if((byte) init_dist_screen::y#1!=(byte) $d) goto init_dist_screen::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$d
    cmp y
    bne b1_from_b9
    jmp breturn
    // init_dist_screen::@return
  breturn:
    // [206] return 
    rts
    // init_dist_screen::@6
  b6:
    // [207] (byte~) init_dist_screen::$15 ← (byte) init_dist_screen::x2#0 - (byte) $27 -- vbuaa=vbuaa_minus_vbuc1 
    sec
    sbc #$27
    jmp b8_from_b6
    // init_dist_screen::@2
  b2:
    // [208] (byte~) init_dist_screen::$7 ← (byte) init_dist_screen::y2#0 - (byte) $18 -- vbuaa=vbuaa_minus_vbuc1 
    sec
    sbc #$18
    jmp b4_from_b2
}
  // sqrt
// Find the (integer) square root of a word 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()
// sqrt(word zeropage($49) val)
sqrt: {
    .label _1 = $2a
    .label _3 = $2a
    .label found = $2a
    .label val = $49
    // [209] (word) bsearch16u::key#0 ← (word) sqrt::val#0
    // [210] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 -- pwuz1=pwuz2 
    lda SQUARES
    sta bsearch16u.items
    lda SQUARES+1
    sta bsearch16u.items+1
    // [211] call bsearch16u 
    // [218] phi from sqrt to bsearch16u [phi:sqrt->bsearch16u]
  bsearch16u_from_sqrt:
    jsr bsearch16u
    // [212] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1
    jmp b1
    // sqrt::@1
  b1:
    // [213] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3
    // [214] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 -- vwuz1=pwuz1_minus_pwuz2 
    lda _3
    sec
    sbc SQUARES
    sta _3
    lda _3+1
    sbc SQUARES+1
    sta _3+1
    // [215] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 
    lsr _1+1
    ror _1
    // [216] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 -- vbuaa=_byte_vwuz1 
    lda _1
    jmp breturn
    // sqrt::@return
  breturn:
    // [217] return 
    rts
}
  // bsearch16u
// Searches an array of nitems unsigned words, 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
// bsearch16u(word zeropage($49) key, word* zeropage($2a) items, byte register(X) num)
bsearch16u: {
    .label _2 = $2a
    .label pivot = $4b
    .label result = $4d
    .label return = $2a
    .label items = $2a
    .label key = $49
    // [219] phi from bsearch16u to bsearch16u::@3 [phi:bsearch16u->bsearch16u::@3]
  b3_from_bsearch16u:
    // [219] phi (word*) bsearch16u::items#2 = (word*) bsearch16u::items#1 [phi:bsearch16u->bsearch16u::@3#0] -- register_copy 
    // [219] phi (byte) bsearch16u::num#3 = (const byte) NUM_SQUARES#3 [phi:bsearch16u->bsearch16u::@3#1] -- vbuxx=vbuc1 
    ldx #NUM_SQUARES
    jmp b3
    // bsearch16u::@3
  b3:
    // [220] if((byte) bsearch16u::num#3>(byte) 0) goto bsearch16u::@4 -- vbuxx_gt_0_then_la1 
    cpx #0
    bne b4
    jmp b5
    // bsearch16u::@5
  b5:
    // [221] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 -- _deref_pwuz1_le_vwuz2_then_la1 
    ldy #1
    lda (items),y
    cmp key+1
    bne !+
    dey
    lda (items),y
    cmp key
    beq b2_from_b5
  !:
    bcc b2_from_b5
    jmp b1
    // bsearch16u::@1
  b1:
    // [222] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD -- pwuz1=pwuz1_minus_vwuc1 
    lda _2
    sec
    sbc #<1*SIZEOF_WORD
    sta _2
    lda _2+1
    sbc #>1*SIZEOF_WORD
    sta _2+1
    // [223] phi from bsearch16u::@1 bsearch16u::@5 to bsearch16u::@2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2]
  b2_from_b1:
  b2_from_b5:
    // [223] phi (word*) bsearch16u::return#2 = (word*~) bsearch16u::$2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2#0] -- register_copy 
    jmp b2
    // bsearch16u::@2
  b2:
    // [224] phi from bsearch16u::@2 bsearch16u::@8 to bsearch16u::@return [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return]
  breturn_from_b2:
  breturn_from_b8:
    // [224] phi (word*) bsearch16u::return#1 = (word*) bsearch16u::return#2 [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return#0] -- register_copy 
    jmp breturn
    // bsearch16u::@return
  breturn:
    // [225] return 
    rts
    // bsearch16u::@4
  b4:
    // [226] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 -- vbuaa=vbuxx_ror_1 
    txa
    lsr
    // [227] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 -- vbuaa=vbuaa_rol_1 
    asl
    // [228] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 -- pwuz1=pwuz2_plus_vbuaa 
    clc
    adc items
    sta pivot
    lda #0
    adc items+1
    sta pivot+1
    // [229] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) -- vwsz1=vwsz2_minus__deref_pwsz3 
    sec
    lda key
    ldy #0
    sbc (pivot),y
    sta result
    lda key+1
    iny
    sbc (pivot),y
    sta result+1
    // [230] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 -- vwsz1_neq_0_then_la1 
    lda result+1
    bne b6
    lda result
    bne b6
    jmp b8
    // bsearch16u::@8
  b8:
    // [231] (word*~) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 -- pwuz1=pwuz2 
    lda pivot
    sta return
    lda pivot+1
    sta return+1
    jmp breturn_from_b8
    // bsearch16u::@6
  b6:
    // [232] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 -- vwsz1_le_0_then_la1 
    lda result+1
    bmi b7_from_b6
    bne !+
    lda result
    beq b7_from_b6
  !:
    jmp b9
    // bsearch16u::@9
  b9:
    // [233] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD -- pwuz1=pwuz2_plus_vbuc1 
    lda #1*SIZEOF_WORD
    clc
    adc pivot
    sta items
    lda #0
    adc pivot+1
    sta items+1
    // [234] (byte) bsearch16u::num#1 ← -- (byte) bsearch16u::num#3 -- vbuxx=_dec_vbuxx 
    dex
    // [235] phi from bsearch16u::@6 bsearch16u::@9 to bsearch16u::@7 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7]
  b7_from_b6:
  b7_from_b9:
    // [235] phi (word*) bsearch16u::items#8 = (word*) bsearch16u::items#2 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#0] -- register_copy 
    // [235] phi (byte) bsearch16u::num#5 = (byte) bsearch16u::num#3 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#1] -- register_copy 
    jmp b7
    // bsearch16u::@7
  b7:
    // [236] (byte) bsearch16u::num#0 ← (byte) bsearch16u::num#5 >> (byte) 1 -- vbuxx=vbuxx_ror_1 
    txa
    lsr
    tax
    // [219] phi from bsearch16u::@7 to bsearch16u::@3 [phi:bsearch16u::@7->bsearch16u::@3]
  b3_from_b7:
    // [219] phi (word*) bsearch16u::items#2 = (word*) bsearch16u::items#8 [phi:bsearch16u::@7->bsearch16u::@3#0] -- register_copy 
    // [219] phi (byte) bsearch16u::num#3 = (byte) bsearch16u::num#0 [phi:bsearch16u::@7->bsearch16u::@3#1] -- register_copy 
    jmp b3
}
  // sqr
// Find the square of a byte value
// Uses a table of squares that must be initialized by calling init_squares()
// sqr(byte register(A) val)
sqr: {
    .label return = $49
    .label return_2 = $47
    // [238] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 -- vbuaa=vbuaa_rol_1 
    asl
    // [239] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) -- vwuz1=pwuz2_derefidx_vbuaa 
    tay
    lda (SQUARES),y
    sta return
    iny
    lda (SQUARES),y
    sta return+1
    jmp breturn
    // sqr::@return
  breturn:
    // [240] return 
    rts
}
  // init_squares
// Initialize squares table
// Uses iterative formula (x+1)^2 = x^2 + 2*x + 1
init_squares: {
    .label squares = $2e
    .label sqr = $2c
    // [242] call malloc 
    // [254] phi from init_squares to malloc [phi:init_squares->malloc]
  malloc_from_init_squares:
    // [254] phi (word) malloc::size#3 = (const byte) NUM_SQUARES#3*(const byte) SIZEOF_WORD [phi:init_squares->malloc#0] -- vwuz1=vbuc1 
    lda #<NUM_SQUARES*SIZEOF_WORD
    sta malloc.size
    lda #>NUM_SQUARES*SIZEOF_WORD
    sta malloc.size+1
    // [254] phi (byte*) heap_head#12 = (byte*) heap_head#1 [phi:init_squares->malloc#1] -- register_copy 
    jsr malloc
    jmp b2
    // init_squares::@2
  b2:
    // [243] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0
    // [244] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 -- pwuz1=pwuz2 
    lda SQUARES
    sta squares
    lda SQUARES+1
    sta squares+1
    // [245] phi from init_squares::@2 to init_squares::@1 [phi:init_squares::@2->init_squares::@1]
  b1_from_b2:
    // [245] phi (byte) init_squares::i#2 = (byte) 0 [phi:init_squares::@2->init_squares::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [245] phi (word*) init_squares::squares#2 = (word*) init_squares::squares#0 [phi:init_squares::@2->init_squares::@1#1] -- register_copy 
    // [245] phi (word) init_squares::sqr#2 = (byte) 0 [phi:init_squares::@2->init_squares::@1#2] -- vwuz1=vbuc1 
    lda #<0
    sta sqr
    lda #>0
    sta sqr+1
    jmp b1
    // [245] phi from init_squares::@1 to init_squares::@1 [phi:init_squares::@1->init_squares::@1]
  b1_from_b1:
    // [245] phi (byte) init_squares::i#2 = (byte) init_squares::i#1 [phi:init_squares::@1->init_squares::@1#0] -- register_copy 
    // [245] phi (word*) init_squares::squares#2 = (word*) init_squares::squares#1 [phi:init_squares::@1->init_squares::@1#1] -- register_copy 
    // [245] phi (word) init_squares::sqr#2 = (word) init_squares::sqr#1 [phi:init_squares::@1->init_squares::@1#2] -- register_copy 
    jmp b1
    // init_squares::@1
  b1:
    // [246] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 -- _deref_pwuz1=vwuz2 
    ldy #0
    lda sqr
    sta (squares),y
    iny
    lda sqr+1
    sta (squares),y
    // [247] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD -- pwuz1=pwuz1_plus_vbuc1 
    lda #SIZEOF_WORD
    clc
    adc squares
    sta squares
    bcc !+
    inc squares+1
  !:
    // [248] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // [249] (byte~) init_squares::$4 ← (byte~) init_squares::$3 + (byte) 1 -- vbuaa=vbuaa_plus_1 
    clc
    adc #1
    // [250] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 -- vwuz1=vwuz1_plus_vbuaa 
    clc
    adc sqr
    sta sqr
    bcc !+
    inc sqr+1
  !:
    // [251] (byte) init_squares::i#1 ← ++ (byte) init_squares::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [252] if((byte) init_squares::i#1!=(const byte) NUM_SQUARES#3-(byte) 1+(byte) 1) goto init_squares::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #NUM_SQUARES-1+1
    bne b1_from_b1
    jmp breturn
    // init_squares::@return
  breturn:
    // [253] return 
    rts
}
  // malloc
// Allocates a block of size bytes 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.
// malloc(word zeropage($32) size)
malloc: {
    .label mem = $32
    .label size = $32
    // [255] (byte*) malloc::mem#0 ← (byte*) heap_head#12 - (word) malloc::size#3 -- pbuz1=pbuz2_minus_vwuz1 
    lda heap_head
    sec
    sbc mem
    sta mem
    lda heap_head+1
    sbc mem+1
    sta mem+1
    // [256] (byte*) heap_head#1 ← (byte*) malloc::mem#0 -- pbuz1=pbuz2 
    lda mem
    sta heap_head
    lda mem+1
    sta heap_head+1
    jmp breturn
    // malloc::@return
  breturn:
    // [257] return 
    rts
}
  // File Data
  // Angles representing ATAN(0.5), ATAN(0.25), ATAN(0.125), ...
CORDIC_ATAN2_ANGLES_16:
.for (var i=0; i<CORDIC_ITERATIONS_16; i++)
        .word 256*2*256*atan(1/pow(2,i))/PI/2

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


ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
Removing instruction jmp b3
Removing instruction jmp b4
Removing instruction jmp b2
Removing instruction jmp bend
Removing instruction jmp b5
Removing instruction jmp b6
Removing instruction jmp b7
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp toD0181
Removing instruction jmp b3
Removing instruction jmp toD0182
Removing instruction jmp b4
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp b4
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp b10
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp b11
Removing instruction jmp b5
Removing instruction jmp b4
Removing instruction jmp b6
Removing instruction jmp b7
Removing instruction jmp b8
Removing instruction jmp b9
Removing instruction jmp breturn
Removing instruction jmp breturn
Removing instruction jmp breturn
Removing instruction jmp breturn
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b4
Removing instruction jmp b3
Removing instruction jmp breturn
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp b5
Removing instruction jmp b6
Removing instruction jmp b10
Removing instruction jmp b12
Removing instruction jmp b21
Removing instruction jmp b7
Removing instruction jmp b9
Removing instruction jmp b8
Removing instruction jmp breturn
Removing instruction jmp b13
Removing instruction jmp b15
Removing instruction jmp b16
Removing instruction jmp b17
Removing instruction jmp b20
Removing instruction jmp b19
Removing instruction jmp b10
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 b8
Removing instruction jmp b12
Removing instruction jmp b13
Removing instruction jmp b9
Removing instruction jmp breturn
Removing instruction jmp b1
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 breturn
Removing instruction jmp b2
Removing instruction jmp b1
Removing instruction jmp breturn
Removing instruction jmp breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda #0
Removing instruction lda #>0
Removing instruction ldy #0
Removing instruction lda ang_w
Removing instruction lda ang_w
Removing instruction ldy xb
Removing instruction ldy x
Removing instruction lda #>0
Replacing instruction ldx #0 with TAX
Removing instruction ldy x
Removing instruction ldy xb
Removing instruction lda result+1
Replacing instruction lda #<0 with TXA
Removing instruction lda #>0
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label b1 with b2
Replacing label b2_from_b2 with b2
Replacing label b1_from_b3 with b1
Replacing label b2_from_b2 with b2
Replacing label b2_from_b2 with b2
Replacing label b4_from_b11 with b4
Replacing label b3_from_b4 with b3
Replacing label b2_from_b6 with b2
Replacing label b9_from_b7 with b9
Replacing label b1_from_b9 with b1
Replacing label b1_from_b9 with b1
Replacing label b2_from_b4 with b2
Replacing label b1_from_b3 with b1
Replacing label b7_from_b12 with b7
Replacing label b8_from_b7 with b8
Replacing label b17_from_b15 with b17
Replacing label b12_from_b19 with b12
Replacing label b19_from_b18 with b19
Replacing label b13_from_b14 with b13
Replacing label b6_from_b4 with b6
Replacing label b3_from_b1 with b3
Replacing label b5_from_b13 with b5
Replacing label b1_from_b9 with b1
Replacing label b8_from_b6 with b8
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
Replacing label b1_from_b1 with b1
Removing instruction b1_from_bbegin:
Removing instruction b1:
Removing instruction malloc_from_b1:
Removing instruction b2_from_b4:
Removing instruction bend_from_b2:
Removing instruction b6_from_b5:
Removing instruction make_plasma_charset_from_b6:
Removing instruction b7_from_b6:
Removing instruction memset_from_b7:
Removing instruction b1:
Removing instruction b2_from_b1:
Removing instruction doplasma_from_b2:
Removing instruction toD0181_from_b2:
Removing instruction toD0181:
Removing instruction toD0182_from_b3:
Removing instruction toD0182:
Removing instruction b1_from_b3:
Removing instruction b2_from_b1:
Removing instruction b2_from_b2:
Removing instruction b2_from_b1:
Removing instruction b2_from_b2:
Removing instruction b10_from_make_plasma_charset:
Removing instruction print_cls_from_b10:
Removing instruction b1_from_b9:
Removing instruction b2_from_b6:
Removing instruction b3_from_b2:
Removing instruction b3_from_b4:
Removing instruction b4_from_b11:
Removing instruction b4_from_b5:
Removing instruction b8_from_b7:
Removing instruction b9_from_b7:
Removing instruction b9_from_b8:
Removing instruction b1_from_b3:
Removing instruction b2_from_b1:
Removing instruction b2_from_b4:
Removing instruction b3_from_b1:
Removing instruction b3_from_b2:
Removing instruction b6_from_b4:
Removing instruction b6_from_b5:
Removing instruction b10_from_b6:
Removing instruction b12_from_b10:
Removing instruction b12_from_b19:
Removing instruction b7_from_b12:
Removing instruction b7_from_b21:
Removing instruction b8_from_b7:
Removing instruction b8_from_b9:
Removing instruction breturn:
Removing instruction b13_from_b11:
Removing instruction b13_from_b14:
Removing instruction b17_from_b15:
Removing instruction b17_from_b16:
Removing instruction b19_from_b18:
Removing instruction b19_from_b20:
Removing instruction b1_from_b9:
Removing instruction b4_from_b2:
Removing instruction b4_from_b3:
Removing instruction sqr_from_b4:
Removing instruction b5_from_b11:
Removing instruction b5_from_b13:
Removing instruction b8_from_b6:
Removing instruction b8_from_b7:
Removing instruction sqr_from_b8:
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:
Removing instruction b1_from_b1:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction b3:
Removing instruction malloc_from_b3:
Removing instruction b4:
Removing instruction b2:
Removing instruction bend:
Removing instruction init_dist_screen_from_main:
Removing instruction b5:
Removing instruction b6:
Removing instruction b7:
Removing instruction b1_from_b7:
Removing instruction b3:
Removing instruction doplasma_from_b3:
Removing instruction b4:
Removing instruction b1_from_b4:
Removing instruction b1_from_doplasma:
Removing instruction b3:
Removing instruction b4:
Removing instruction breturn:
Removing instruction b1:
Removing instruction breturn:
Removing instruction b10:
Removing instruction b1_from_b10:
Removing instruction b2_from_b1:
Removing instruction b11:
Removing instruction b5:
Removing instruction b6:
Removing instruction b7:
Removing instruction b8:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction memset_from_print_cls:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction b1_from_init_angle_screen:
Removing instruction b4:
Removing instruction b3:
Removing instruction breturn:
Removing instruction b2:
Removing instruction b5:
Removing instruction b21:
Removing instruction b9:
Removing instruction b15:
Removing instruction b16:
Removing instruction b20:
Removing instruction b10_from_b19:
Removing instruction init_squares_from_init_dist_screen:
Removing instruction b10:
Removing instruction b1_from_b10:
Removing instruction b3:
Removing instruction b11:
Removing instruction b7:
Removing instruction b12:
Removing instruction b13:
Removing instruction b9:
Removing instruction breturn:
Removing instruction bsearch16u_from_sqrt:
Removing instruction b1:
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 breturn:
Removing instruction malloc_from_init_squares:
Removing instruction b2:
Removing instruction b1_from_b2:
Removing instruction breturn:
Removing instruction breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Replacing jump to rts with rts in jmp b2
Succesful ASM optimization Pass5DoubleJumpElimination
Adding RTS to root block 
Succesful ASM optimization Pass5AddMainRts
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b1
Removing instruction jmp b5
Removing instruction jmp b1
Succesful ASM optimization Pass5NextJumpElimination
Fixing long branch [569] beq b12 to bne
Fixing long branch [463] bpl b1 to bmi
Fixing long branch [475] bpl b4 to bmi

FINAL SYMBOL TABLE
(label) @1
(label) @2
(label) @3
(label) @4
(label) @begin
(label) @end
(byte) BLACK
(const byte) BLACK#0 BLACK = (byte) 0
(byte*) CHARSET
(const byte*) CHARSET#0 CHARSET = (byte*) 8192
(byte*) COLS
(const byte*) COLS#0 COLS = (byte*) 55296
(word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16
(const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 CORDIC_ATAN2_ANGLES_16 = kickasm {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++)
        .word 256*2*256*atan(1/pow(2,i))/PI/2
 }}
(byte) CORDIC_ITERATIONS_16
(const byte) CORDIC_ITERATIONS_16#0 CORDIC_ITERATIONS_16 = (byte) $f
(byte*) D018
(const byte*) D018#0 D018 = (byte*) 53272
(byte*) HEAP_TOP
(const byte*) HEAP_TOP#0 HEAP_TOP = (byte*) 40960
(byte) NUM_SQUARES
(const byte) NUM_SQUARES#3 NUM_SQUARES = (byte) $30
(const byte) RADIX::BINARY BINARY = (number) 2
(const byte) RADIX::DECIMAL DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL OCTAL = (number) 8
(byte*) SCREEN1
(const byte*) SCREEN1#0 SCREEN1 = (byte*) 10240
(byte*) SCREEN2
(const byte*) SCREEN2#0 SCREEN2 = (byte*) 11264
(byte*) SCREEN_ANGLE
(void*) SCREEN_ANGLE#0 SCREEN_ANGLE zp ZP_WORD:54 0.05405405405405406
(byte*) SCREEN_DIST
(void*) SCREEN_DIST#0 SCREEN_DIST zp ZP_WORD:52 0.05128205128205128
(byte) SID_CONTROL_NOISE
(const byte) SID_CONTROL_NOISE#0 SID_CONTROL_NOISE = (byte) $80
(byte*) SID_VOICE3_CONTROL
(const byte*) SID_VOICE3_CONTROL#0 SID_VOICE3_CONTROL = (byte*) 54290
(word*) SID_VOICE3_FREQ
(const word*) SID_VOICE3_FREQ#0 SID_VOICE3_FREQ = (word*) 54286
(byte*) SID_VOICE3_OSC
(const byte*) SID_VOICE3_OSC#0 SID_VOICE3_OSC = (byte*) 54299
(byte[$200]) SINTABLE
(const byte[$200]) SINTABLE#0 SINTABLE = kickasm {{ .for(var i=0;i<$200;i++)
        .byte round(127.5+127.5*sin(2*PI*i/256))
 }}
(const byte) SIZEOF_WORD SIZEOF_WORD = (byte) 2
(word*) SQUARES
(void*) SQUARES#1 SQUARES zp ZP_WORD:50 0.03225806451612903
(word()) atan2_16((signed word) atan2_16::x , (signed word) atan2_16::y)
(signed word~) atan2_16::$2 $2 zp ZP_WORD:25 4.0
(byte~) atan2_16::$23 reg byte a 2002.0
(byte~) atan2_16::$24 reg byte a 2002.0
(signed word~) atan2_16::$7 $7 zp ZP_WORD:27 4.0
(label) atan2_16::@1
(label) atan2_16::@10
(label) atan2_16::@11
(label) atan2_16::@12
(label) atan2_16::@13
(label) atan2_16::@14
(label) atan2_16::@15
(label) atan2_16::@16
(label) atan2_16::@17
(label) atan2_16::@18
(label) atan2_16::@19
(label) atan2_16::@2
(label) atan2_16::@20
(label) atan2_16::@21
(label) atan2_16::@3
(label) atan2_16::@4
(label) atan2_16::@5
(label) atan2_16::@6
(label) atan2_16::@7
(label) atan2_16::@8
(label) atan2_16::@9
(label) atan2_16::@return
(word) atan2_16::angle
(word) atan2_16::angle#1 angle zp ZP_WORD:29 3.0
(word) atan2_16::angle#11 angle zp ZP_WORD:29 4.0
(word) atan2_16::angle#12 angle zp ZP_WORD:29 190.66666666666666
(word) atan2_16::angle#13 angle zp ZP_WORD:29 1334.6666666666667
(word) atan2_16::angle#2 angle zp ZP_WORD:29 2002.0
(word) atan2_16::angle#3 angle zp ZP_WORD:29 2002.0
(word) atan2_16::angle#4 angle zp ZP_WORD:29 4.0
(word) atan2_16::angle#5 angle zp ZP_WORD:29 4.0
(word) atan2_16::angle#6 angle zp ZP_WORD:29 2004.0
(byte) atan2_16::i
(byte) atan2_16::i#1 reg byte x 1501.5
(byte) atan2_16::i#2 reg byte x 208.54166666666669
(word) atan2_16::return
(word) atan2_16::return#0 return zp ZP_WORD:29 34.99999999999999
(word) atan2_16::return#2 return zp ZP_WORD:29 202.0
(byte) atan2_16::shift
(byte) atan2_16::shift#1 reg byte y 20002.0
(byte) atan2_16::shift#2 reg byte y 8001.25
(byte~) atan2_16::shift#5 reg byte y 667.3333333333334
(signed word) atan2_16::x
(signed word) atan2_16::x#0 x zp ZP_WORD:66 2.8684210526315796
(signed word) atan2_16::xd
(signed word) atan2_16::xd#1 xd zp ZP_WORD:33 6667.333333333333
(signed word~) atan2_16::xd#10 xd zp ZP_WORD:33 1001.0
(signed word) atan2_16::xd#2 xd zp ZP_WORD:33 1001.0
(signed word) atan2_16::xd#3 xd zp ZP_WORD:33 7668.333333333332
(signed word) atan2_16::xd#5 xd zp ZP_WORD:33 1001.0
(signed word) atan2_16::xi
(signed word) atan2_16::xi#0 xi zp ZP_WORD:27 6.0
(signed word) atan2_16::xi#1 xi zp ZP_WORD:27 500.5
(signed word~) atan2_16::xi#13 xi zp ZP_WORD:27 4.0
(signed word) atan2_16::xi#2 xi zp ZP_WORD:27 500.5
(signed word) atan2_16::xi#3 xi zp ZP_WORD:27 267.0666666666667
(signed word) atan2_16::xi#8 xi zp ZP_WORD:27 1001.0
(signed word) atan2_16::y
(signed word) atan2_16::y#0 y zp ZP_WORD:68 2.724999999999999
(signed word) atan2_16::yd
(signed word) atan2_16::yd#1 yd zp ZP_WORD:31 10001.0
(signed word~) atan2_16::yd#10 yd zp ZP_WORD:31 2002.0
(signed word) atan2_16::yd#2 yd zp ZP_WORD:31 2002.0
(signed word) atan2_16::yd#3 yd zp ZP_WORD:31 4601.0
(signed word) atan2_16::yd#5 yd zp ZP_WORD:31 2002.0
(signed word) atan2_16::yi
(signed word) atan2_16::yi#0 yi zp ZP_WORD:25 1.2000000000000002
(signed word) atan2_16::yi#1 yi zp ZP_WORD:25 667.3333333333334
(signed word~) atan2_16::yi#16 yi zp ZP_WORD:25 4.0
(signed word) atan2_16::yi#2 yi zp ZP_WORD:25 667.3333333333334
(signed word) atan2_16::yi#3 yi zp ZP_WORD:25 353.4117647058823
(signed word) atan2_16::yi#8 yi zp ZP_WORD:25 1001.0
(word*()) bsearch16u((word) bsearch16u::key , (word*) bsearch16u::items , (byte) bsearch16u::num)
(byte~) bsearch16u::$16 reg byte a 2002.0
(word*~) bsearch16u::$2 $2 zp ZP_WORD:42 4.0
(byte~) bsearch16u::$6 reg byte a 2002.0
(label) bsearch16u::@1
(label) bsearch16u::@2
(label) bsearch16u::@3
(label) bsearch16u::@4
(label) bsearch16u::@5
(label) bsearch16u::@6
(label) bsearch16u::@7
(label) bsearch16u::@8
(label) bsearch16u::@9
(label) bsearch16u::@return
(word*) bsearch16u::items
(word*) bsearch16u::items#0 items zp ZP_WORD:42 1001.0
(word*) bsearch16u::items#1 items zp ZP_WORD:42 2.0
(word*) bsearch16u::items#2 items zp ZP_WORD:42 334.5555555555556
(word*) bsearch16u::items#8 items zp ZP_WORD:42 1501.5
(word) bsearch16u::key
(word) bsearch16u::key#0 key zp ZP_WORD:73 0.26666666666666666
(byte) bsearch16u::num
(byte) bsearch16u::num#0 reg byte x 2002.0
(byte) bsearch16u::num#1 reg byte x 2002.0
(byte) bsearch16u::num#3 reg byte x 556.1111111111111
(byte) bsearch16u::num#5 reg byte x 3003.0
(word*) bsearch16u::pivot
(word*) bsearch16u::pivot#0 pivot zp ZP_WORD:75 501.0
(signed word) bsearch16u::result
(signed word) bsearch16u::result#0 result zp ZP_WORD:77 1501.5
(word*) bsearch16u::return
(word*) bsearch16u::return#1 return zp ZP_WORD:42 2.0
(word*) bsearch16u::return#2 return zp ZP_WORD:42 6.0
(word*) bsearch16u::return#3 return zp ZP_WORD:42 4.0
(word*~) bsearch16u::return#6 return zp ZP_WORD:42 4.0
(void()) doplasma((byte*) doplasma::screen)
(byte~) doplasma::$2 reg byte a 2002.0
(label) doplasma::@1
(label) doplasma::@2
(label) doplasma::@3
(label) doplasma::@4
(label) doplasma::@return
(byte*) doplasma::angle
(byte*) doplasma::angle#0 angle zp ZP_WORD:4 1.0
(byte*) doplasma::angle#1 angle zp ZP_WORD:4 50.5
(byte*) doplasma::angle#4 angle zp ZP_WORD:4 172.14285714285714
(byte*) doplasma::dist
(byte*) doplasma::dist#0 dist zp ZP_WORD:6 1.3333333333333333
(byte*) doplasma::dist#1 dist zp ZP_WORD:6 67.33333333333333
(byte*) doplasma::dist#4 dist zp ZP_WORD:6 150.625
(byte*) doplasma::screen
(byte*) doplasma::screen#2 screen zp ZP_WORD:8 40.4
(byte*) doplasma::screen#5 screen zp ZP_WORD:8 200.83333333333334
(byte*) doplasma::screen#6 screen zp ZP_WORD:8 0.4
(byte*) doplasma::sin_x
(byte*) doplasma::sin_x#0 sin_x zp ZP_WORD:56 77.15384615384616
(byte*) doplasma::sin_y
(byte*) doplasma::sin_y#0 sin_y zp ZP_WORD:58 83.58333333333334
(byte) doplasma::x
(byte) doplasma::x#1 reg byte x 1501.5
(byte) doplasma::x#2 reg byte x 1668.3333333333335
(byte) doplasma::y
(byte) doplasma::y#1 y zp ZP_BYTE:10 151.5
(byte) doplasma::y#4 y zp ZP_BYTE:10 22.444444444444443
(byte*) heap_head
(byte*) heap_head#1 heap_head zp ZP_WORD:48 0.6000000000000001
(byte*) heap_head#12 heap_head zp ZP_WORD:48 6.0
(void()) init_angle_screen((byte*) init_angle_screen::screen)
(word~) init_angle_screen::$10 $10 zp ZP_WORD:29 202.0
(byte~) init_angle_screen::$12 reg byte a 202.0
(byte~) init_angle_screen::$13 reg byte a 202.0
(byte~) init_angle_screen::$14 reg byte a 202.0
(byte~) init_angle_screen::$2 reg byte a 202.0
(byte~) init_angle_screen::$3 reg byte a 202.0
(byte~) init_angle_screen::$6 reg byte a 202.0
(label) init_angle_screen::@1
(label) init_angle_screen::@2
(label) init_angle_screen::@3
(label) init_angle_screen::@4
(label) init_angle_screen::@return
(byte) init_angle_screen::ang_w
(byte) init_angle_screen::ang_w#0 ang_w zp ZP_BYTE:70 84.16666666666666
(word) init_angle_screen::angle_w
(word) init_angle_screen::angle_w#0 angle_w zp ZP_WORD:29 202.0
(byte*) init_angle_screen::screen
(byte*) init_angle_screen::screen#0 screen zp ZP_WORD:19 3.0
(byte*) init_angle_screen::screen_bottomline
(byte*) init_angle_screen::screen_bottomline#0 screen_bottomline zp ZP_WORD:19 4.0
(byte*) init_angle_screen::screen_bottomline#1 screen_bottomline zp ZP_WORD:19 7.333333333333333
(byte*) init_angle_screen::screen_bottomline#5 screen_bottomline zp ZP_WORD:19 9.040000000000001
(byte*) init_angle_screen::screen_topline
(byte*) init_angle_screen::screen_topline#0 screen_topline zp ZP_WORD:21 2.0
(byte*) init_angle_screen::screen_topline#1 screen_topline zp ZP_WORD:21 5.5
(byte*) init_angle_screen::screen_topline#5 screen_topline zp ZP_WORD:21 9.416666666666666
(byte) init_angle_screen::x
(byte) init_angle_screen::x#1 x zp ZP_BYTE:23 101.0
(byte) init_angle_screen::x#2 x zp ZP_BYTE:23 25.25
(byte) init_angle_screen::xb
(byte) init_angle_screen::xb#1 xb zp ZP_BYTE:24 101.0
(byte) init_angle_screen::xb#2 xb zp ZP_BYTE:24 19.238095238095237
(signed word) init_angle_screen::xw
(word) init_angle_screen::xw#0 xw zp ZP_WORD:66 33.666666666666664
(byte) init_angle_screen::y
(byte) init_angle_screen::y#1 y zp ZP_BYTE:18 16.5
(byte) init_angle_screen::y#4 y zp ZP_BYTE:18 4.730769230769231
(signed word) init_angle_screen::yw
(word) init_angle_screen::yw#0 yw zp ZP_WORD:68 50.5
(void()) init_dist_screen((byte*) init_dist_screen::screen)
(byte~) init_dist_screen::$13 reg byte a 202.0
(byte~) init_dist_screen::$15 reg byte a 202.0
(byte~) init_dist_screen::$5 reg byte a 22.0
(byte~) init_dist_screen::$7 reg byte a 22.0
(label) init_dist_screen::@1
(label) init_dist_screen::@10
(label) init_dist_screen::@11
(label) init_dist_screen::@12
(label) init_dist_screen::@13
(label) init_dist_screen::@2
(label) init_dist_screen::@3
(label) init_dist_screen::@4
(label) init_dist_screen::@5
(label) init_dist_screen::@6
(label) init_dist_screen::@7
(label) init_dist_screen::@8
(label) init_dist_screen::@9
(label) init_dist_screen::@return
(byte) init_dist_screen::d
(byte) init_dist_screen::d#0 reg byte a 126.25
(word) init_dist_screen::ds
(word) init_dist_screen::ds#0 ds zp ZP_WORD:73 202.0
(byte*) init_dist_screen::screen
(byte*) init_dist_screen::screen#0 screen zp ZP_WORD:36 1.5
(byte*) init_dist_screen::screen_bottomline
(byte*) init_dist_screen::screen_bottomline#0 screen_bottomline zp ZP_WORD:38 4.0
(byte*) init_dist_screen::screen_bottomline#1 screen_bottomline zp ZP_WORD:38 7.333333333333333
(byte*) init_dist_screen::screen_bottomline#10 screen_bottomline zp ZP_WORD:38 6.848484848484849
(byte*) init_dist_screen::screen_topline
(byte*) init_dist_screen::screen_topline#1 screen_topline zp ZP_WORD:36 5.5
(byte*) init_dist_screen::screen_topline#10 screen_topline zp ZP_WORD:36 7.0625
(byte) init_dist_screen::x
(byte) init_dist_screen::x#1 x zp ZP_BYTE:40 101.0
(byte) init_dist_screen::x#2 x zp ZP_BYTE:40 26.578947368421055
(byte) init_dist_screen::x2
(byte) init_dist_screen::x2#0 reg byte a 202.0
(byte) init_dist_screen::xb
(byte) init_dist_screen::xb#1 xb zp ZP_BYTE:41 101.0
(byte) init_dist_screen::xb#2 xb zp ZP_BYTE:41 20.2
(byte) init_dist_screen::xd
(byte) init_dist_screen::xd#0 reg byte a 303.0
(word) init_dist_screen::xds
(word) init_dist_screen::xds#0 xds zp ZP_WORD:73 202.0
(byte) init_dist_screen::y
(byte) init_dist_screen::y#1 y zp ZP_BYTE:35 16.5
(byte) init_dist_screen::y#10 y zp ZP_BYTE:35 0.9705882352941178
(byte) init_dist_screen::y2
(byte) init_dist_screen::y2#0 reg byte a 22.0
(byte) init_dist_screen::yd
(byte) init_dist_screen::yd#0 reg byte a 33.0
(word) init_dist_screen::yds
(word) init_dist_screen::yds#0 yds zp ZP_WORD:71 4.869565217391305
(void()) init_squares()
(byte~) init_squares::$3 reg byte a 22.0
(byte~) init_squares::$4 reg byte a 22.0
(label) init_squares::@1
(label) init_squares::@2
(label) init_squares::@return
(byte) init_squares::i
(byte) init_squares::i#1 reg byte x 16.5
(byte) init_squares::i#2 reg byte x 5.5
(word) init_squares::sqr
(word) init_squares::sqr#1 sqr zp ZP_WORD:44 7.333333333333333
(word) init_squares::sqr#2 sqr zp ZP_WORD:44 6.6000000000000005
(word*) init_squares::squares
(word*) init_squares::squares#0 squares zp ZP_WORD:46 4.0
(word*) init_squares::squares#1 squares zp ZP_WORD:46 3.6666666666666665
(word*) init_squares::squares#2 squares zp ZP_WORD:46 17.5
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@5
(label) main::@6
(label) main::@7
(label) main::toD0181
(word~) main::toD0181_$0
(number~) main::toD0181_$1
(number~) main::toD0181_$2
(number~) main::toD0181_$3
(word~) main::toD0181_$4
(byte~) main::toD0181_$5
(number~) main::toD0181_$6
(number~) main::toD0181_$7
(number~) main::toD0181_$8
(byte*) main::toD0181_gfx
(byte) main::toD0181_return
(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN1#0&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET#0/(byte) 4&(byte) $f
(byte*) main::toD0181_screen
(label) main::toD0182
(word~) main::toD0182_$0
(number~) main::toD0182_$1
(number~) main::toD0182_$2
(number~) main::toD0182_$3
(word~) main::toD0182_$4
(byte~) main::toD0182_$5
(number~) main::toD0182_$6
(number~) main::toD0182_$7
(number~) main::toD0182_$8
(byte*) main::toD0182_gfx
(byte) main::toD0182_return
(const byte) main::toD0182_return#0 toD0182_return = >(word)(const byte*) SCREEN2#0&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET#0/(byte) 4&(byte) $f
(byte*) main::toD0182_screen
(void()) make_plasma_charset((byte*) make_plasma_charset::charset)
(byte~) make_plasma_charset::$11 reg byte a 22.0
(byte*~) make_plasma_charset::$16 $16 zp ZP_WORD:64 202.0
(byte~) make_plasma_charset::$2 reg byte a 22.0
(byte~) make_plasma_charset::$3 reg byte a 2002.0
(byte~) make_plasma_charset::$4 $4 zp ZP_BYTE:63 2002.0
(word~) make_plasma_charset::$8 $8 zp ZP_WORD:64 202.0
(word~) make_plasma_charset::$9 $9 zp ZP_WORD:64 202.0
(label) make_plasma_charset::@1
(label) make_plasma_charset::@10
(label) make_plasma_charset::@11
(label) make_plasma_charset::@2
(label) make_plasma_charset::@3
(label) make_plasma_charset::@4
(label) make_plasma_charset::@5
(label) make_plasma_charset::@6
(label) make_plasma_charset::@7
(label) make_plasma_charset::@8
(label) make_plasma_charset::@9
(label) make_plasma_charset::@return
(byte) make_plasma_charset::b
(byte) make_plasma_charset::b#1 reg byte y 2002.0
(byte) make_plasma_charset::b#2 reg byte y 500.5
(byte) make_plasma_charset::b#3 reg byte y 517.3333333333334
(byte[8]) make_plasma_charset::bittab
(const byte[8]) make_plasma_charset::bittab#0 bittab = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
(word) make_plasma_charset::c
(word) make_plasma_charset::c#1 c zp ZP_WORD:13 16.5
(word) make_plasma_charset::c#2 c zp ZP_WORD:13 5.800000000000001
(byte*) make_plasma_charset::charset
(byte) make_plasma_charset::i
(byte) make_plasma_charset::i#1 i zp ZP_BYTE:17 151.5
(byte) make_plasma_charset::i#7 i zp ZP_BYTE:17 20.2
(byte) make_plasma_charset::ii
(byte) make_plasma_charset::ii#1 reg byte x 1501.5
(byte) make_plasma_charset::ii#2 reg byte x 375.375
(byte) make_plasma_charset::s
(byte) make_plasma_charset::s#0 s zp ZP_BYTE:62 56.22222222222223
(void*()) malloc((word) malloc::size)
(label) malloc::@return
(byte*) malloc::mem
(byte*) malloc::mem#0 mem zp ZP_WORD:50 0.6666666666666666
(void*) malloc::return
(word) malloc::size
(word) malloc::size#3 size zp ZP_WORD:50 2.0
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
(label) memset::@return
(byte) memset::c
(byte) memset::c#3 reg byte x 1.5714285714285714
(byte*) memset::dst
(byte*) memset::dst#1 dst zp ZP_WORD:11 16.5
(byte*) memset::dst#2 dst zp ZP_WORD:11 17.5
(byte*~) memset::dst#3 dst zp ZP_WORD:11 4.0
(byte*) memset::end
(byte*) memset::end#0 end zp ZP_WORD:60 2.1666666666666665
(word) memset::num
(void*) memset::return
(void*) memset::str
(void*) memset::str#3 str zp ZP_WORD:11
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(const byte) print_char::ch#0 ch = (byte) '.'
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:15 4.333333333333333
(byte*) print_char_cursor#18 print_char_cursor zp ZP_WORD:15 11.0
(byte*) print_char_cursor#49 print_char_cursor zp ZP_WORD:15 1.0833333333333333
(void()) print_cls()
(label) print_cls::@return
(byte*) print_line_cursor
(const byte*) print_line_cursor#0 print_line_cursor = (byte*) 1024
(byte*) print_screen
(byte()) sid_rnd()
(label) sid_rnd::@return
(byte) sid_rnd::return
(byte) sid_rnd::return#0 reg byte a 334.33333333333337
(byte) sid_rnd::return#2 reg byte a 2002.0
(void()) sid_rnd_init()
(label) sid_rnd_init::@return
(byte) sin_offset_x
(byte) sin_offset_x#10 sin_offset_x zp ZP_BYTE:2 1.625
(byte) sin_offset_x#12 sin_offset_x zp ZP_BYTE:2 2.666666666666667
(byte) sin_offset_x#14 sin_offset_x zp ZP_BYTE:2 11.0
(byte) sin_offset_y
(byte) sin_offset_y#10 sin_offset_y zp ZP_BYTE:3 1.5294117647058825
(byte) sin_offset_y#12 sin_offset_y zp ZP_BYTE:3 3.0
(byte) sin_offset_y#14 sin_offset_y zp ZP_BYTE:3 11.0
(word()) sqr((byte) sqr::val)
(byte~) sqr::$0 reg byte a 4.0
(label) sqr::@return
(word) sqr::return
(word) sqr::return#0 return zp ZP_WORD:73 28.5
(word) sqr::return#2 return#2 zp ZP_WORD:71 22.0
(word) sqr::return#3 return zp ZP_WORD:73 202.0
(byte) sqr::val
(byte) sqr::val#0 reg byte a 22.0
(byte) sqr::val#1 reg byte a 202.0
(byte) sqr::val#2 reg byte a 114.0
(byte()) sqrt((word) sqrt::val)
(word~) sqrt::$1 $1 zp ZP_WORD:42 2.0
(word~) sqrt::$3 $3 zp ZP_WORD:42 4.0
(label) sqrt::@1
(label) sqrt::@return
(word*) sqrt::found
(word*) sqrt::found#0 found zp ZP_WORD:42 4.0
(byte) sqrt::return
(byte) sqrt::return#0 reg byte a 34.33333333333333
(byte) sqrt::return#2 reg byte a 202.0
(byte) sqrt::sq
(word) sqrt::val
(word) sqrt::val#0 val zp ZP_WORD:73 103.0

zp ZP_BYTE:2 [ sin_offset_x#10 sin_offset_x#14 sin_offset_x#12 ]
zp ZP_BYTE:3 [ sin_offset_y#10 sin_offset_y#14 sin_offset_y#12 ]
zp ZP_WORD:4 [ doplasma::angle#4 doplasma::angle#0 doplasma::angle#1 ]
zp ZP_WORD:6 [ doplasma::dist#4 doplasma::dist#0 doplasma::dist#1 ]
zp ZP_WORD:8 [ doplasma::screen#5 doplasma::screen#6 doplasma::screen#2 ]
zp ZP_BYTE:10 [ doplasma::y#4 doplasma::y#1 ]
reg byte x [ doplasma::x#2 doplasma::x#1 ]
zp ZP_WORD:11 [ memset::str#3 memset::dst#2 memset::dst#3 memset::dst#1 ]
reg byte x [ memset::c#3 ]
zp ZP_WORD:13 [ make_plasma_charset::c#2 make_plasma_charset::c#1 ]
zp ZP_WORD:15 [ print_char_cursor#49 print_char_cursor#18 print_char_cursor#1 ]
zp ZP_BYTE:17 [ make_plasma_charset::i#7 make_plasma_charset::i#1 ]
reg byte x [ make_plasma_charset::ii#2 make_plasma_charset::ii#1 ]
reg byte y [ make_plasma_charset::b#2 make_plasma_charset::b#3 make_plasma_charset::b#1 ]
zp ZP_BYTE:18 [ init_angle_screen::y#4 init_angle_screen::y#1 ]
zp ZP_WORD:19 [ init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 init_angle_screen::screen#0 ]
zp ZP_WORD:21 [ init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#0 init_angle_screen::screen_topline#1 ]
zp ZP_BYTE:23 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
zp ZP_BYTE:24 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
zp ZP_WORD:25 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ]
zp ZP_WORD:27 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ]
reg byte x [ atan2_16::i#2 atan2_16::i#1 ]
zp ZP_WORD:29 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#5 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$10 ]
reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
zp ZP_WORD:31 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
zp ZP_WORD:33 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
zp ZP_BYTE:35 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
zp ZP_WORD:36 [ init_dist_screen::screen_topline#10 init_dist_screen::screen_topline#1 init_dist_screen::screen#0 ]
zp ZP_WORD:38 [ init_dist_screen::screen_bottomline#10 init_dist_screen::screen_bottomline#1 init_dist_screen::screen_bottomline#0 ]
reg byte a [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
zp ZP_BYTE:40 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
zp ZP_BYTE:41 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
reg byte a [ init_dist_screen::xd#0 init_dist_screen::$15 init_dist_screen::$13 ]
zp ZP_WORD:42 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$3 sqrt::$1 ]
reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
reg byte a [ sqr::val#2 sqr::val#0 sqr::val#1 ]
zp ZP_WORD:44 [ init_squares::sqr#2 init_squares::sqr#1 ]
zp ZP_WORD:46 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ]
reg byte x [ init_squares::i#2 init_squares::i#1 ]
zp ZP_WORD:48 [ heap_head#12 heap_head#1 ]
zp ZP_WORD:50 [ malloc::size#3 malloc::mem#0 SQUARES#1 ]
zp ZP_WORD:52 [ SCREEN_DIST#0 ]
zp ZP_WORD:54 [ SCREEN_ANGLE#0 ]
zp ZP_WORD:56 [ doplasma::sin_x#0 ]
zp ZP_WORD:58 [ doplasma::sin_y#0 ]
reg byte a [ doplasma::$2 ]
zp ZP_WORD:60 [ memset::end#0 ]
reg byte a [ make_plasma_charset::$2 ]
zp ZP_BYTE:62 [ make_plasma_charset::s#0 ]
reg byte a [ sid_rnd::return#2 ]
reg byte a [ make_plasma_charset::$3 ]
zp ZP_BYTE:63 [ make_plasma_charset::$4 ]
zp ZP_WORD:64 [ make_plasma_charset::$8 make_plasma_charset::$9 make_plasma_charset::$16 ]
reg byte a [ make_plasma_charset::$11 ]
reg byte a [ sid_rnd::return#0 ]
reg byte a [ init_angle_screen::$2 ]
reg byte a [ init_angle_screen::$3 ]
zp ZP_WORD:66 [ init_angle_screen::xw#0 atan2_16::x#0 ]
reg byte a [ init_angle_screen::$6 ]
zp ZP_WORD:68 [ init_angle_screen::yw#0 atan2_16::y#0 ]
zp ZP_BYTE:70 [ init_angle_screen::ang_w#0 ]
reg byte a [ init_angle_screen::$12 ]
reg byte a [ init_angle_screen::$13 ]
reg byte a [ init_angle_screen::$14 ]
reg byte a [ atan2_16::$24 ]
reg byte a [ atan2_16::$23 ]
reg byte a [ init_dist_screen::y2#0 ]
zp ZP_WORD:71 [ sqr::return#2 init_dist_screen::yds#0 ]
reg byte a [ init_dist_screen::x2#0 ]
zp ZP_WORD:73 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 ]
reg byte a [ sqrt::return#2 ]
reg byte a [ init_dist_screen::d#0 ]
reg byte a [ sqrt::return#0 ]
reg byte a [ bsearch16u::$6 ]
reg byte a [ bsearch16u::$16 ]
zp ZP_WORD:75 [ bsearch16u::pivot#0 ]
zp ZP_WORD:77 [ bsearch16u::result#0 ]
reg byte a [ sqr::$0 ]
reg byte a [ init_squares::$3 ]
reg byte a [ init_squares::$4 ]


FINAL ASSEMBLER
Score: 1206219

  // File Comments
// Plasma based on the distance/angle to the screen center
  // Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(bbegin)
.pc = $80d "Program"
  // Global Constants & labels
  .const SIZEOF_WORD = 2
  .label D018 = $d018
  // Color Ram
  .label COLS = $d800
  // The colors of the C64
  .const BLACK = 0
  // Top of the heap used by malloc()
  .label HEAP_TOP = $a000
  // The number of iterations performed during 16-bit CORDIC atan2 calculation
  .const CORDIC_ITERATIONS_16 = $f
  .label print_line_cursor = $400
  // SID registers for random number generation
  .label SID_VOICE3_FREQ = $d40e
  .label SID_VOICE3_CONTROL = $d412
  .const SID_CONTROL_NOISE = $80
  .label SID_VOICE3_OSC = $d41b
  // Plasma charset
  .label CHARSET = $2000
  // Plasma screen 1
  .label SCREEN1 = $2800
  // Plasma screen 2
  .label SCREEN2 = $2c00
  .const NUM_SQUARES = $30
  .label heap_head = $30
  .label SQUARES = $32
  .label print_char_cursor = $f
  // Screen containing distance to center
  .label SCREEN_DIST = $34
  // Screen containing angle to center
  .label SCREEN_ANGLE = $36
  .label sin_offset_x = 2
  .label sin_offset_y = 3
  // @begin
bbegin:
  // [1] phi from @begin to @1 [phi:@begin->@1]
  // @1
  // malloc(1000)
  // [2] call malloc 
  // [254] phi from @1 to malloc [phi:@1->malloc]
  // [254] phi (word) malloc::size#3 = (word) $3e8 [phi:@1->malloc#0] -- vwuz1=vwuc1 
  lda #<$3e8
  sta malloc.size
  lda #>$3e8
  sta malloc.size+1
  // [254] phi (byte*) heap_head#12 = (const byte*) HEAP_TOP#0 [phi:@1->malloc#1] -- pbuz1=pbuc1 
  lda #<HEAP_TOP
  sta heap_head
  lda #>HEAP_TOP
  sta heap_head+1
  jsr malloc
  // @3
  // malloc(1000)
  // [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0 -- pvoz1=pvoz2 
  lda malloc.mem
  sta SCREEN_DIST
  lda malloc.mem+1
  sta SCREEN_DIST+1
  // [4] call malloc 
  // [254] phi from @3 to malloc [phi:@3->malloc]
  // [254] phi (word) malloc::size#3 = (word) $3e8 [phi:@3->malloc#0] -- vwuz1=vwuc1 
  lda #<$3e8
  sta malloc.size
  lda #>$3e8
  sta malloc.size+1
  // [254] phi (byte*) heap_head#12 = (byte*) heap_head#1 [phi:@3->malloc#1] -- register_copy 
  jsr malloc
  // @4
  // malloc(1000)
  // [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0 -- pvoz1=pvoz2 
  lda malloc.mem
  sta SCREEN_ANGLE
  lda malloc.mem+1
  sta SCREEN_ANGLE+1
  // [6] phi from @4 to @2 [phi:@4->@2]
  // @2
  // [7] call main 
  jsr main
  rts
  // [8] phi from @2 to @end [phi:@2->@end]
  // @end
  // main
main: {
    .const toD0181_return = (>(SCREEN1&$3fff)*4)|(>CHARSET)/4&$f
    .const toD0182_return = (>(SCREEN2&$3fff)*4)|(>CHARSET)/4&$f
    // init_dist_screen(SCREEN_DIST)
    // [9] (byte*) init_dist_screen::screen#0 ← (byte*)(void*) SCREEN_DIST#0 -- pbuz1=pbuz2 
    lda SCREEN_DIST
    sta init_dist_screen.screen
    lda SCREEN_DIST+1
    sta init_dist_screen.screen+1
    // [10] call init_dist_screen 
    // [169] phi from main to init_dist_screen [phi:main->init_dist_screen]
    jsr init_dist_screen
    // main::@5
    // init_angle_screen(SCREEN_ANGLE)
    // [11] (byte*) init_angle_screen::screen#0 ← (byte*)(void*) SCREEN_ANGLE#0 -- pbuz1=pbuz2 
    lda SCREEN_ANGLE
    sta init_angle_screen.screen
    lda SCREEN_ANGLE+1
    sta init_angle_screen.screen+1
    // [12] call init_angle_screen 
    jsr init_angle_screen
    // [13] phi from main::@5 to main::@6 [phi:main::@5->main::@6]
    // main::@6
    // make_plasma_charset(CHARSET)
    // [14] call make_plasma_charset 
    // [52] phi from main::@6 to make_plasma_charset [phi:main::@6->make_plasma_charset]
    jsr make_plasma_charset
    // [15] phi from main::@6 to main::@7 [phi:main::@6->main::@7]
    // main::@7
    // memset(COLS, BLACK, 1000)
    // [16] call memset 
    // [44] phi from main::@7 to memset [phi:main::@7->memset]
    // [44] phi (byte) memset::c#3 = (const byte) BLACK#0 [phi:main::@7->memset#0] -- vbuxx=vbuc1 
    ldx #BLACK
    // [44] phi (void*) memset::str#3 = (void*)(const byte*) COLS#0 [phi:main::@7->memset#1] -- pvoz1=pvoc1 
    lda #<COLS
    sta memset.str
    lda #>COLS
    sta memset.str+1
    jsr memset
    // [17] phi from main::@7 to main::@1 [phi:main::@7->main::@1]
    // [17] phi (byte) sin_offset_y#14 = (byte) 0 [phi:main::@7->main::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta sin_offset_y
    // [17] phi (byte) sin_offset_x#14 = (byte) 0 [phi:main::@7->main::@1#1] -- vbuz1=vbuc1 
    sta sin_offset_x
  // Show double-buffered plasma
    // main::@1
    // [18] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
    // main::@2
  b2:
    // doplasma(SCREEN1)
    // [19] call doplasma 
    // [25] phi from main::@2 to doplasma [phi:main::@2->doplasma]
    // [25] phi (byte*) doplasma::screen#6 = (const byte*) SCREEN1#0 [phi:main::@2->doplasma#0] -- pbuz1=pbuc1 
    lda #<SCREEN1
    sta doplasma.screen
    lda #>SCREEN1
    sta doplasma.screen+1
    // [25] phi (byte) sin_offset_y#10 = (byte) sin_offset_y#14 [phi:main::@2->doplasma#1] -- register_copy 
    // [25] phi (byte) sin_offset_x#10 = (byte) sin_offset_x#14 [phi:main::@2->doplasma#2] -- register_copy 
    jsr doplasma
    // [20] phi from main::@2 to main::toD0181 [phi:main::@2->main::toD0181]
    // main::toD0181
    // main::@3
    // *D018 = toD018(SCREEN1, CHARSET)
    // [21] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
    // doplasma(SCREEN2)
    // [22] call doplasma 
    // [25] phi from main::@3 to doplasma [phi:main::@3->doplasma]
    // [25] phi (byte*) doplasma::screen#6 = (const byte*) SCREEN2#0 [phi:main::@3->doplasma#0] -- pbuz1=pbuc1 
    lda #<SCREEN2
    sta doplasma.screen
    lda #>SCREEN2
    sta doplasma.screen+1
    // [25] phi (byte) sin_offset_y#10 = (byte) sin_offset_y#12 [phi:main::@3->doplasma#1] -- register_copy 
    // [25] phi (byte) sin_offset_x#10 = (byte) sin_offset_x#12 [phi:main::@3->doplasma#2] -- register_copy 
    jsr doplasma
    // [23] phi from main::@3 to main::toD0182 [phi:main::@3->main::toD0182]
    // main::toD0182
    // main::@4
    // *D018 = toD018(SCREEN2, CHARSET)
    // [24] *((const byte*) D018#0) ← (const byte) main::toD0182_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0182_return
    sta D018
    // [17] phi from main::@4 to main::@1 [phi:main::@4->main::@1]
    // [17] phi (byte) sin_offset_y#14 = (byte) sin_offset_y#12 [phi:main::@4->main::@1#0] -- register_copy 
    // [17] phi (byte) sin_offset_x#14 = (byte) sin_offset_x#12 [phi:main::@4->main::@1#1] -- register_copy 
    jmp b2
}
  // doplasma
// Render plasma to the passed screen
// doplasma(byte* zeropage(8) screen)
doplasma: {
    .label angle = 4
    .label dist = 6
    .label sin_x = $38
    .label sin_y = $3a
    .label screen = 8
    .label y = $a
    // angle = SCREEN_ANGLE
    // [26] (byte*) doplasma::angle#0 ← (byte*)(void*) SCREEN_ANGLE#0 -- pbuz1=pbuz2 
    lda SCREEN_ANGLE
    sta angle
    lda SCREEN_ANGLE+1
    sta angle+1
    // dist = SCREEN_DIST
    // [27] (byte*) doplasma::dist#0 ← (byte*)(void*) SCREEN_DIST#0 -- pbuz1=pbuz2 
    lda SCREEN_DIST
    sta dist
    lda SCREEN_DIST+1
    sta dist+1
    // sin_x = SINTABLE+sin_offset_x
    // [28] (byte*) doplasma::sin_x#0 ← (const byte[$200]) SINTABLE#0 + (byte) sin_offset_x#10 -- pbuz1=pbuc1_plus_vbuz2 
    lda sin_offset_x
    clc
    adc #<SINTABLE
    sta sin_x
    lda #>SINTABLE
    adc #0
    sta sin_x+1
    // sin_y = SINTABLE+sin_offset_y
    // [29] (byte*) doplasma::sin_y#0 ← (const byte[$200]) SINTABLE#0 + (byte) sin_offset_y#10 -- pbuz1=pbuc1_plus_vbuz2 
    lda sin_offset_y
    clc
    adc #<SINTABLE
    sta sin_y
    lda #>SINTABLE
    adc #0
    sta sin_y+1
    // [30] phi from doplasma to doplasma::@1 [phi:doplasma->doplasma::@1]
    // [30] phi (byte) doplasma::y#4 = (byte) 0 [phi:doplasma->doplasma::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta y
    // [30] phi (byte*) doplasma::screen#5 = (byte*) doplasma::screen#6 [phi:doplasma->doplasma::@1#1] -- register_copy 
    // [30] phi (byte*) doplasma::dist#4 = (byte*) doplasma::dist#0 [phi:doplasma->doplasma::@1#2] -- register_copy 
    // [30] phi (byte*) doplasma::angle#4 = (byte*) doplasma::angle#0 [phi:doplasma->doplasma::@1#3] -- register_copy 
    // [30] phi from doplasma::@3 to doplasma::@1 [phi:doplasma::@3->doplasma::@1]
    // [30] phi (byte) doplasma::y#4 = (byte) doplasma::y#1 [phi:doplasma::@3->doplasma::@1#0] -- register_copy 
    // [30] phi (byte*) doplasma::screen#5 = (byte*) doplasma::screen#2 [phi:doplasma::@3->doplasma::@1#1] -- register_copy 
    // [30] phi (byte*) doplasma::dist#4 = (byte*) doplasma::dist#1 [phi:doplasma::@3->doplasma::@1#2] -- register_copy 
    // [30] phi (byte*) doplasma::angle#4 = (byte*) doplasma::angle#1 [phi:doplasma::@3->doplasma::@1#3] -- register_copy 
    // doplasma::@1
  b1:
    // [31] phi from doplasma::@1 to doplasma::@2 [phi:doplasma::@1->doplasma::@2]
    // [31] phi (byte) doplasma::x#2 = (byte) 0 [phi:doplasma::@1->doplasma::@2#0] -- vbuxx=vbuc1 
    ldx #0
    // [31] phi from doplasma::@2 to doplasma::@2 [phi:doplasma::@2->doplasma::@2]
    // [31] phi (byte) doplasma::x#2 = (byte) doplasma::x#1 [phi:doplasma::@2->doplasma::@2#0] -- register_copy 
    // doplasma::@2
  b2:
    // sin_x[angle[x]] + sin_y[dist[x]]
    // [32] (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#0 + *((byte*) doplasma::angle#4 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#0 + *((byte*) doplasma::dist#4 + (byte) doplasma::x#2)) -- vbuaa=pbuz1_derefidx_pbuz2_derefidx_vbuxx_plus_pbuz3_derefidx_pbuz4_derefidx_vbuxx 
    txa
    tay
    lda (dist),y
    sta $ff
    lda (angle),y
    tay
    lda (sin_x),y
    ldy $ff
    clc
    adc (sin_y),y
    // screen[x] = sin_x[angle[x]] + sin_y[dist[x]]
    // [33] *((byte*) doplasma::screen#5 + (byte) doplasma::x#2) ← (byte~) doplasma::$2 -- pbuz1_derefidx_vbuxx=vbuaa 
    stx $ff
    ldy $ff
    sta (screen),y
    // for( char x: 0..39)
    // [34] (byte) doplasma::x#1 ← ++ (byte) doplasma::x#2 -- vbuxx=_inc_vbuxx 
    inx
    // [35] if((byte) doplasma::x#1!=(byte) $28) goto doplasma::@2 -- vbuxx_neq_vbuc1_then_la1 
    cpx #$28
    bne b2
    // doplasma::@3
    // screen += 40
    // [36] (byte*) doplasma::screen#2 ← (byte*) doplasma::screen#5 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc screen
    sta screen
    bcc !+
    inc screen+1
  !:
    // angle += 40
    // [37] (byte*) doplasma::angle#1 ← (byte*) doplasma::angle#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc angle
    sta angle
    bcc !+
    inc angle+1
  !:
    // dist += 40
    // [38] (byte*) doplasma::dist#1 ← (byte*) doplasma::dist#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc dist
    sta dist
    bcc !+
    inc dist+1
  !:
    // for( char y: 0..25)
    // [39] (byte) doplasma::y#1 ← ++ (byte) doplasma::y#4 -- vbuz1=_inc_vbuz1 
    inc y
    // [40] if((byte) doplasma::y#1!=(byte) $1a) goto doplasma::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$1a
    cmp y
    bne b1
    // doplasma::@4
    // sin_offset_x -= 3
    // [41] (byte) sin_offset_x#12 ← (byte) sin_offset_x#10 - (byte) 3 -- vbuz1=vbuz1_minus_vbuc1 
    lax sin_offset_x
    axs #3
    stx sin_offset_x
    // sin_offset_y -= 7
    // [42] (byte) sin_offset_y#12 ← (byte) sin_offset_y#10 - (byte) 7 -- vbuz1=vbuz1_minus_vbuc1 
    lax sin_offset_y
    axs #7
    stx sin_offset_y
    // doplasma::@return
    // }
    // [43] return 
    rts
}
  // memset
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
// memset(void* zeropage($b) str, byte register(X) c)
memset: {
    .label end = $3c
    .label dst = $b
    .label str = $b
    // memset::@1
    // end = (char*)str + num
    // [45] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8 -- pbuz1=pbuz2_plus_vwuc1 
    lda str
    clc
    adc #<$3e8
    sta end
    lda str+1
    adc #>$3e8
    sta end+1
    // [46] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3
    // [47] phi from memset::@1 memset::@2 to memset::@2 [phi:memset::@1/memset::@2->memset::@2]
    // [47] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset::@1/memset::@2->memset::@2#0] -- register_copy 
    // memset::@2
  b2:
    // *dst = c
    // [48] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuxx 
    txa
    ldy #0
    sta (dst),y
    // for(char* dst = str; dst!=end; dst++)
    // [49] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc dst
    bne !+
    inc dst+1
  !:
    // [50] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuz2_then_la1 
    lda dst+1
    cmp end+1
    bne b2
    lda dst
    cmp end
    bne b2
    // memset::@return
    // }
    // [51] return 
    rts
}
  // make_plasma_charset
// Make a plasma-friendly charset where the chars are randomly filled
make_plasma_charset: {
    .label _4 = $3f
    .label _8 = $40
    .label _9 = $40
    .label s = $3e
    .label i = $11
    .label c = $d
    .label _16 = $40
    // sid_rnd_init()
    // [53] call sid_rnd_init 
    jsr sid_rnd_init
    // [54] phi from make_plasma_charset to make_plasma_charset::@10 [phi:make_plasma_charset->make_plasma_charset::@10]
    // make_plasma_charset::@10
    // print_cls()
    // [55] call print_cls 
    // [89] phi from make_plasma_charset::@10 to print_cls [phi:make_plasma_charset::@10->print_cls]
    jsr print_cls
    // [56] phi from make_plasma_charset::@10 to make_plasma_charset::@1 [phi:make_plasma_charset::@10->make_plasma_charset::@1]
    // [56] phi (byte*) print_char_cursor#49 = (const byte*) print_line_cursor#0 [phi:make_plasma_charset::@10->make_plasma_charset::@1#0] -- pbuz1=pbuc1 
    lda #<print_line_cursor
    sta print_char_cursor
    lda #>print_line_cursor
    sta print_char_cursor+1
    // [56] phi (word) make_plasma_charset::c#2 = (byte) 0 [phi:make_plasma_charset::@10->make_plasma_charset::@1#1] -- vwuz1=vbuc1 
    lda #<0
    sta c
    sta c+1
    // [56] phi from make_plasma_charset::@9 to make_plasma_charset::@1 [phi:make_plasma_charset::@9->make_plasma_charset::@1]
    // [56] phi (byte*) print_char_cursor#49 = (byte*) print_char_cursor#18 [phi:make_plasma_charset::@9->make_plasma_charset::@1#0] -- register_copy 
    // [56] phi (word) make_plasma_charset::c#2 = (word) make_plasma_charset::c#1 [phi:make_plasma_charset::@9->make_plasma_charset::@1#1] -- register_copy 
    // make_plasma_charset::@1
  b1:
    // <c
    // [57] (byte~) make_plasma_charset::$2 ← < (word) make_plasma_charset::c#2 -- vbuaa=_lo_vwuz1 
    lda c
    // s = SINTABLE[<c]
    // [58] (byte) make_plasma_charset::s#0 ← *((const byte[$200]) SINTABLE#0 + (byte~) make_plasma_charset::$2) -- vbuz1=pbuc1_derefidx_vbuaa 
    tay
    lda SINTABLE,y
    sta s
    // [59] phi from make_plasma_charset::@1 to make_plasma_charset::@2 [phi:make_plasma_charset::@1->make_plasma_charset::@2]
    // [59] phi (byte) make_plasma_charset::i#7 = (byte) 0 [phi:make_plasma_charset::@1->make_plasma_charset::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta i
    // [59] phi from make_plasma_charset::@6 to make_plasma_charset::@2 [phi:make_plasma_charset::@6->make_plasma_charset::@2]
    // [59] phi (byte) make_plasma_charset::i#7 = (byte) make_plasma_charset::i#1 [phi:make_plasma_charset::@6->make_plasma_charset::@2#0] -- register_copy 
    // make_plasma_charset::@2
  b2:
    // [60] phi from make_plasma_charset::@2 to make_plasma_charset::@3 [phi:make_plasma_charset::@2->make_plasma_charset::@3]
    // [60] phi (byte) make_plasma_charset::b#2 = (byte) 0 [phi:make_plasma_charset::@2->make_plasma_charset::@3#0] -- vbuyy=vbuc1 
    ldy #0
    // [60] phi (byte) make_plasma_charset::ii#2 = (byte) 0 [phi:make_plasma_charset::@2->make_plasma_charset::@3#1] -- vbuxx=vbuc1 
    ldx #0
    // [60] phi from make_plasma_charset::@4 to make_plasma_charset::@3 [phi:make_plasma_charset::@4->make_plasma_charset::@3]
    // [60] phi (byte) make_plasma_charset::b#2 = (byte) make_plasma_charset::b#3 [phi:make_plasma_charset::@4->make_plasma_charset::@3#0] -- register_copy 
    // [60] phi (byte) make_plasma_charset::ii#2 = (byte) make_plasma_charset::ii#1 [phi:make_plasma_charset::@4->make_plasma_charset::@3#1] -- register_copy 
    // make_plasma_charset::@3
  b3:
    // sid_rnd()
    // [61] call sid_rnd 
    jsr sid_rnd
    // [62] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0
    // make_plasma_charset::@11
    // [63] (byte~) make_plasma_charset::$3 ← (byte) sid_rnd::return#2
    // sid_rnd() & 0xFF
    // [64] (byte~) make_plasma_charset::$4 ← (byte~) make_plasma_charset::$3 & (byte) $ff -- vbuz1=vbuaa_band_vbuc1 
    and #$ff
    sta _4
    // if ((sid_rnd() & 0xFF) > s)
    // [65] if((byte~) make_plasma_charset::$4<=(byte) make_plasma_charset::s#0) goto make_plasma_charset::@4 -- vbuz1_le_vbuz2_then_la1 
    lda s
    cmp _4
    bcs b4
    // make_plasma_charset::@5
    // b |= bittab[ii]
    // [66] (byte) make_plasma_charset::b#1 ← (byte) make_plasma_charset::b#2 | *((const byte[8]) make_plasma_charset::bittab#0 + (byte) make_plasma_charset::ii#2) -- vbuyy=vbuyy_bor_pbuc1_derefidx_vbuxx 
    tya
    ora bittab,x
    tay
    // [67] phi from make_plasma_charset::@11 make_plasma_charset::@5 to make_plasma_charset::@4 [phi:make_plasma_charset::@11/make_plasma_charset::@5->make_plasma_charset::@4]
    // [67] phi (byte) make_plasma_charset::b#3 = (byte) make_plasma_charset::b#2 [phi:make_plasma_charset::@11/make_plasma_charset::@5->make_plasma_charset::@4#0] -- register_copy 
    // make_plasma_charset::@4
  b4:
    // for (char ii = 0; ii < 8; ++ii)
    // [68] (byte) make_plasma_charset::ii#1 ← ++ (byte) make_plasma_charset::ii#2 -- vbuxx=_inc_vbuxx 
    inx
    // [69] if((byte) make_plasma_charset::ii#1<(byte) 8) goto make_plasma_charset::@3 -- vbuxx_lt_vbuc1_then_la1 
    cpx #8
    bcc b3
    // make_plasma_charset::@6
    // c*8
    // [70] (word~) make_plasma_charset::$8 ← (word) make_plasma_charset::c#2 << (byte) 3 -- vwuz1=vwuz2_rol_3 
    lda c
    asl
    sta _8
    lda c+1
    rol
    sta _8+1
    asl _8
    rol _8+1
    asl _8
    rol _8+1
    // (c*8) + i
    // [71] (word~) make_plasma_charset::$9 ← (word~) make_plasma_charset::$8 + (byte) make_plasma_charset::i#7 -- vwuz1=vwuz1_plus_vbuz2 
    lda i
    clc
    adc _9
    sta _9
    bcc !+
    inc _9+1
  !:
    // charset[(c*8) + i] = b
    // [72] (byte*~) make_plasma_charset::$16 ← (const byte*) CHARSET#0 + (word~) make_plasma_charset::$9 -- pbuz1=pbuc1_plus_vwuz1 
    clc
    lda _16
    adc #<CHARSET
    sta _16
    lda _16+1
    adc #>CHARSET
    sta _16+1
    // [73] *((byte*~) make_plasma_charset::$16) ← (byte) make_plasma_charset::b#3 -- _deref_pbuz1=vbuyy 
    tya
    ldy #0
    sta (_16),y
    // for ( char i = 0; i < 8; ++i)
    // [74] (byte) make_plasma_charset::i#1 ← ++ (byte) make_plasma_charset::i#7 -- vbuz1=_inc_vbuz1 
    inc i
    // [75] if((byte) make_plasma_charset::i#1<(byte) 8) goto make_plasma_charset::@2 -- vbuz1_lt_vbuc1_then_la1 
    lda i
    cmp #8
    bcc b2
    // make_plasma_charset::@7
    // c & 0x07
    // [76] (byte~) make_plasma_charset::$11 ← (word) make_plasma_charset::c#2 & (byte) 7 -- vbuaa=vwuz1_band_vbuc1 
    lda c
    and #7
    // if ((c & 0x07) == 0)
    // [77] if((byte~) make_plasma_charset::$11!=(byte) 0) goto make_plasma_charset::@9 -- vbuaa_neq_0_then_la1 
    cmp #0
    bne b9
    // [78] phi from make_plasma_charset::@7 to make_plasma_charset::@8 [phi:make_plasma_charset::@7->make_plasma_charset::@8]
    // make_plasma_charset::@8
    // print_char('.')
    // [79] call print_char 
    jsr print_char
    // [80] phi from make_plasma_charset::@7 make_plasma_charset::@8 to make_plasma_charset::@9 [phi:make_plasma_charset::@7/make_plasma_charset::@8->make_plasma_charset::@9]
    // [80] phi (byte*) print_char_cursor#18 = (byte*) print_char_cursor#49 [phi:make_plasma_charset::@7/make_plasma_charset::@8->make_plasma_charset::@9#0] -- register_copy 
    // make_plasma_charset::@9
  b9:
    // for (unsigned int c = 0; c < 0x100; ++c)
    // [81] (word) make_plasma_charset::c#1 ← ++ (word) make_plasma_charset::c#2 -- vwuz1=_inc_vwuz1 
    inc c
    bne !+
    inc c+1
  !:
    // [82] if((word) make_plasma_charset::c#1<(word) $100) goto make_plasma_charset::@1 -- vwuz1_lt_vwuc1_then_la1 
    lda c+1
    cmp #>$100
    bcc b1
    bne !+
    lda c
    cmp #<$100
    bcc b1
  !:
    // make_plasma_charset::@return
    // }
    // [83] return 
    rts
    bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80
}
  // print_char
// Print a single char
print_char: {
    .const ch = '.'
    // *(print_char_cursor++) = ch
    // [84] *((byte*) print_char_cursor#49) ← (const byte) print_char::ch#0 -- _deref_pbuz1=vbuc1 
    lda #ch
    ldy #0
    sta (print_char_cursor),y
    // *(print_char_cursor++) = ch;
    // [85] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#49 -- pbuz1=_inc_pbuz1 
    inc print_char_cursor
    bne !+
    inc print_char_cursor+1
  !:
    // print_char::@return
    // }
    // [86] return 
    rts
}
  // sid_rnd
// Get a random number from the SID voice 3,
// Must be initialized with sid_rnd_init()
sid_rnd: {
    // return *SID_VOICE3_OSC;
    // [87] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 
    lda SID_VOICE3_OSC
    // sid_rnd::@return
    // }
    // [88] return 
    rts
}
  // print_cls
// Clear the screen. Also resets current line/char cursor.
print_cls: {
    // memset(print_screen, ' ', 1000)
    // [90] call memset 
    // [44] phi from print_cls to memset [phi:print_cls->memset]
    // [44] phi (byte) memset::c#3 = (byte) ' ' [phi:print_cls->memset#0] -- vbuxx=vbuc1 
    ldx #' '
    // [44] phi (void*) memset::str#3 = (void*)(const byte*) print_line_cursor#0 [phi:print_cls->memset#1] -- pvoz1=pvoc1 
    lda #<print_line_cursor
    sta memset.str
    lda #>print_line_cursor
    sta memset.str+1
    jsr memset
    // print_cls::@return
    // }
    // [91] return 
    rts
}
  // sid_rnd_init
// Initialize SID voice 3 for random number generation
sid_rnd_init: {
    // *SID_VOICE3_FREQ = $ffff
    // [92] *((const word*) SID_VOICE3_FREQ#0) ← (word) $ffff -- _deref_pwuc1=vwuc2 
    lda #<$ffff
    sta SID_VOICE3_FREQ
    lda #>$ffff
    sta SID_VOICE3_FREQ+1
    // *SID_VOICE3_CONTROL = SID_CONTROL_NOISE
    // [93] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 
    lda #SID_CONTROL_NOISE
    sta SID_VOICE3_CONTROL
    // sid_rnd_init::@return
    // }
    // [94] return 
    rts
}
  // init_angle_screen
// Populates 1000 bytes (a screen) with values representing the angle to the center.
// Utilizes symmetry around the  center
// init_angle_screen(byte* zeropage($13) screen)
init_angle_screen: {
    .label _10 = $1d
    .label screen = $13
    .label screen_topline = $15
    .label screen_bottomline = $13
    .label xw = $42
    .label yw = $44
    .label angle_w = $1d
    .label ang_w = $46
    .label x = $17
    .label xb = $18
    .label y = $12
    // screen_topline = screen+40*12
    // [95] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c -- pbuz1=pbuz2_plus_vwuc1 
    lda screen
    clc
    adc #<$28*$c
    sta screen_topline
    lda screen+1
    adc #>$28*$c
    sta screen_topline+1
    // screen_bottomline = screen+40*12
    // [96] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c -- pbuz1=pbuz1_plus_vwuc1 
    clc
    lda screen_bottomline
    adc #<$28*$c
    sta screen_bottomline
    lda screen_bottomline+1
    adc #>$28*$c
    sta screen_bottomline+1
    // [97] phi from init_angle_screen to init_angle_screen::@1 [phi:init_angle_screen->init_angle_screen::@1]
    // [97] phi (byte*) init_angle_screen::screen_topline#5 = (byte*) init_angle_screen::screen_topline#0 [phi:init_angle_screen->init_angle_screen::@1#0] -- register_copy 
    // [97] phi (byte*) init_angle_screen::screen_bottomline#5 = (byte*) init_angle_screen::screen_bottomline#0 [phi:init_angle_screen->init_angle_screen::@1#1] -- register_copy 
    // [97] phi (byte) init_angle_screen::y#4 = (byte) 0 [phi:init_angle_screen->init_angle_screen::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta y
    // [97] phi from init_angle_screen::@3 to init_angle_screen::@1 [phi:init_angle_screen::@3->init_angle_screen::@1]
    // [97] phi (byte*) init_angle_screen::screen_topline#5 = (byte*) init_angle_screen::screen_topline#1 [phi:init_angle_screen::@3->init_angle_screen::@1#0] -- register_copy 
    // [97] phi (byte*) init_angle_screen::screen_bottomline#5 = (byte*) init_angle_screen::screen_bottomline#1 [phi:init_angle_screen::@3->init_angle_screen::@1#1] -- register_copy 
    // [97] phi (byte) init_angle_screen::y#4 = (byte) init_angle_screen::y#1 [phi:init_angle_screen::@3->init_angle_screen::@1#2] -- register_copy 
    // init_angle_screen::@1
  b1:
    // [98] phi from init_angle_screen::@1 to init_angle_screen::@2 [phi:init_angle_screen::@1->init_angle_screen::@2]
    // [98] phi (byte) init_angle_screen::xb#2 = (byte) $27 [phi:init_angle_screen::@1->init_angle_screen::@2#0] -- vbuz1=vbuc1 
    lda #$27
    sta xb
    // [98] phi (byte) init_angle_screen::x#2 = (byte) 0 [phi:init_angle_screen::@1->init_angle_screen::@2#1] -- vbuz1=vbuc1 
    lda #0
    sta x
    // [98] phi from init_angle_screen::@4 to init_angle_screen::@2 [phi:init_angle_screen::@4->init_angle_screen::@2]
    // [98] phi (byte) init_angle_screen::xb#2 = (byte) init_angle_screen::xb#1 [phi:init_angle_screen::@4->init_angle_screen::@2#0] -- register_copy 
    // [98] phi (byte) init_angle_screen::x#2 = (byte) init_angle_screen::x#1 [phi:init_angle_screen::@4->init_angle_screen::@2#1] -- register_copy 
    // init_angle_screen::@2
  b2:
    // x*2
    // [99] (byte~) init_angle_screen::$2 ← (byte) init_angle_screen::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 
    lda x
    asl
    // 39-x*2
    // [100] (byte~) init_angle_screen::$3 ← (byte) $27 - (byte~) init_angle_screen::$2 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    clc
    adc #$27+1
    // (word){ 39-x*2, 0 }
    // [101] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$3 w= (byte) 0 -- vwuz1=vbuaa_word_vbuc1 
    ldy #0
    sta xw+1
    sty xw
    // y*2
    // [102] (byte~) init_angle_screen::$6 ← (byte) init_angle_screen::y#4 << (byte) 1 -- vbuaa=vbuz1_rol_1 
    lda y
    asl
    // (word){ y*2, 0 }
    // [103] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$6 w= (byte) 0 -- vwuz1=vbuaa_word_vbuc1 
    sta yw+1
    sty yw
    // atan2_16(xw, yw)
    // [104] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0
    // [105] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0
    // [106] call atan2_16 
    jsr atan2_16
    // [107] (word) atan2_16::return#2 ← (word) atan2_16::return#0
    // init_angle_screen::@4
    // angle_w = atan2_16(xw, yw)
    // [108] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2
    // angle_w+0x0080
    // [109] (word~) init_angle_screen::$10 ← (word) init_angle_screen::angle_w#0 + (byte) $80 -- vwuz1=vwuz1_plus_vbuc1 
    lda #$80
    clc
    adc _10
    sta _10
    bcc !+
    inc _10+1
  !:
    // ang_w = >(angle_w+0x0080)
    // [110] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$10 -- vbuz1=_hi_vwuz2 
    lda _10+1
    sta ang_w
    // screen_bottomline[xb] = ang_w
    // [111] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::xb#2) ← (byte) init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3 
    ldy xb
    sta (screen_bottomline),y
    // -ang_w
    // [112] (byte~) init_angle_screen::$12 ← - (byte) init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1 
    eor #$ff
    clc
    adc #1
    // screen_topline[xb] = -ang_w
    // [113] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::xb#2) ← (byte~) init_angle_screen::$12 -- pbuz1_derefidx_vbuz2=vbuaa 
    sta (screen_topline),y
    // 0x80+ang_w
    // [114] (byte~) init_angle_screen::$13 ← (byte) $80 + (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1 
    lda #$80
    clc
    adc ang_w
    // screen_topline[x] = 0x80+ang_w
    // [115] *((byte*) init_angle_screen::screen_topline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$13 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy x
    sta (screen_topline),y
    // 0x80-ang_w
    // [116] (byte~) init_angle_screen::$14 ← (byte) $80 - (byte) init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1 
    lda #$80
    sec
    sbc ang_w
    // screen_bottomline[x] = 0x80-ang_w
    // [117] *((byte*) init_angle_screen::screen_bottomline#5 + (byte) init_angle_screen::x#2) ← (byte~) init_angle_screen::$14 -- pbuz1_derefidx_vbuz2=vbuaa 
    sta (screen_bottomline),y
    // for( byte x=0,xb=39; x<=19; x++, xb--)
    // [118] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#2 -- vbuz1=_inc_vbuz1 
    inc x
    // [119] (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#2 -- vbuz1=_dec_vbuz1 
    dec xb
    // [120] if((byte) init_angle_screen::x#1<(byte) $13+(byte) 1) goto init_angle_screen::@2 -- vbuz1_lt_vbuc1_then_la1 
    lda x
    cmp #$13+1
    bcc b2
    // init_angle_screen::@3
    // screen_topline -= 40
    // [121] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#5 - (byte) $28 -- pbuz1=pbuz1_minus_vwuc1 
    lda screen_topline
    sec
    sbc #<$28
    sta screen_topline
    lda screen_topline+1
    sbc #>$28
    sta screen_topline+1
    // screen_bottomline += 40
    // [122] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#5 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc screen_bottomline
    sta screen_bottomline
    bcc !+
    inc screen_bottomline+1
  !:
    // for(byte y: 0..12)
    // [123] (byte) init_angle_screen::y#1 ← ++ (byte) init_angle_screen::y#4 -- vbuz1=_inc_vbuz1 
    inc y
    // [124] if((byte) init_angle_screen::y#1!=(byte) $d) goto init_angle_screen::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$d
    cmp y
    bne b1
    // init_angle_screen::@return
    // }
    // [125] return 
    rts
}
  // atan2_16
// Find the atan2(x, y) - which is the angle of the line from (0,0) to (x,y)
// Finding the angle requires a binary search using CORDIC_ITERATIONS_16
// Returns the angle in hex-degrees (0=0, 0x8000=PI, 0x10000=2*PI)
// atan2_16(signed word zeropage($42) x, signed word zeropage($44) y)
atan2_16: {
    .label _2 = $19
    .label _7 = $1b
    .label yi = $19
    .label xi = $1b
    .label angle = $1d
    .label xd = $21
    .label yd = $1f
    .label return = $1d
    .label x = $42
    .label y = $44
    // (y>=0)?y:-y
    // [126] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1 -- vwsz1_ge_0_then_la1 
    lda y+1
    bmi !b1+
    jmp b1
  !b1:
    // atan2_16::@2
    // [127] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0 -- vwsz1=_neg_vwsz2 
    sec
    lda #0
    sbc y
    sta _2
    lda #0
    sbc y+1
    sta _2+1
    // [128] phi from atan2_16::@1 atan2_16::@2 to atan2_16::@3 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3]
    // [128] phi (signed word) atan2_16::yi#0 = (signed word~) atan2_16::yi#16 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3#0] -- register_copy 
    // atan2_16::@3
  b3:
    // (x>=0)?x:-x
    // [129] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4 -- vwsz1_ge_0_then_la1 
    lda x+1
    bmi !b4+
    jmp b4
  !b4:
    // atan2_16::@5
    // [130] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0 -- vwsz1=_neg_vwsz2 
    sec
    lda #0
    sbc x
    sta _7
    lda #0
    sbc x+1
    sta _7+1
    // [131] phi from atan2_16::@4 atan2_16::@5 to atan2_16::@6 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6]
    // [131] phi (signed word) atan2_16::xi#0 = (signed word~) atan2_16::xi#13 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6#0] -- register_copy 
    // atan2_16::@6
  b6:
    // [132] phi from atan2_16::@6 to atan2_16::@10 [phi:atan2_16::@6->atan2_16::@10]
    // [132] phi (word) atan2_16::angle#12 = (byte) 0 [phi:atan2_16::@6->atan2_16::@10#0] -- vwuz1=vbuc1 
    lda #<0
    sta angle
    sta angle+1
    // [132] phi (byte) atan2_16::i#2 = (byte) 0 [phi:atan2_16::@6->atan2_16::@10#1] -- vbuxx=vbuc1 
    tax
    // [132] phi (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#0 [phi:atan2_16::@6->atan2_16::@10#2] -- register_copy 
    // [132] phi (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#0 [phi:atan2_16::@6->atan2_16::@10#3] -- register_copy 
    // atan2_16::@10
  b10:
    // if(yi==0)
    // [133] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11 -- vwsz1_neq_0_then_la1 
    lda yi+1
    bne b11
    lda yi
    bne b11
    // [134] phi from atan2_16::@10 atan2_16::@19 to atan2_16::@12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12]
    // [134] phi (word) atan2_16::angle#6 = (word) atan2_16::angle#12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12#0] -- register_copy 
    // atan2_16::@12
  b12:
    // angle /=2
    // [135] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1 -- vwuz1=vwuz1_ror_1 
    lsr angle+1
    ror angle
    // if(x<0)
    // [136] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7 -- vwsz1_ge_0_then_la1 
    lda x+1
    bpl b7
    // atan2_16::@21
    // angle = 0x8000-angle
    // [137] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1 -- vwuz1=vwuc1_minus_vwuz1 
    sec
    lda #<$8000
    sbc angle
    sta angle
    lda #>$8000
    sbc angle+1
    sta angle+1
    // [138] phi from atan2_16::@12 atan2_16::@21 to atan2_16::@7 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7]
    // [138] phi (word) atan2_16::angle#11 = (word) atan2_16::angle#1 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7#0] -- register_copy 
    // atan2_16::@7
  b7:
    // if(y<0)
    // [139] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8 -- vwsz1_ge_0_then_la1 
    lda y+1
    bpl b8
    // atan2_16::@9
    // angle = -angle
    // [140] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11 -- vwuz1=_neg_vwuz1 
    sec
    lda #0
    sbc angle
    sta angle
    lda #0
    sbc angle+1
    sta angle+1
    // [141] phi from atan2_16::@7 atan2_16::@9 to atan2_16::@8 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8]
    // [141] phi (word) atan2_16::return#0 = (word) atan2_16::angle#11 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8#0] -- register_copy 
    // atan2_16::@8
  b8:
    // atan2_16::@return
    // }
    // [142] return 
    rts
    // atan2_16::@11
  b11:
    // [143] (byte~) atan2_16::shift#5 ← (byte) atan2_16::i#2 -- vbuyy=vbuxx 
    txa
    tay
    // [144] (signed word~) atan2_16::xd#10 ← (signed word) atan2_16::xi#3 -- vwsz1=vwsz2 
    lda xi
    sta xd
    lda xi+1
    sta xd+1
    // [145] (signed word~) atan2_16::yd#10 ← (signed word) atan2_16::yi#3 -- vwsz1=vwsz2 
    lda yi
    sta yd
    lda yi+1
    sta yd+1
    // [146] phi from atan2_16::@11 atan2_16::@14 to atan2_16::@13 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13]
    // [146] phi (signed word) atan2_16::yd#3 = (signed word~) atan2_16::yd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#0] -- register_copy 
    // [146] phi (signed word) atan2_16::xd#3 = (signed word~) atan2_16::xd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#1] -- register_copy 
    // [146] phi (byte) atan2_16::shift#2 = (byte~) atan2_16::shift#5 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#2] -- register_copy 
    // atan2_16::@13
  b13:
    // while(shift>=2)
    // [147] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1 
    cpy #2
    bcs b14
    // atan2_16::@15
    // if(shift)
    // [148] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17 -- vbuc1_eq_vbuyy_then_la1 
    cpy #0
    beq b17
    // atan2_16::@16
    // xd >>= 1
    // [149] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1 -- vwsz1=vwsz1_ror_1 
    lda xd+1
    cmp #$80
    ror xd+1
    ror xd
    // yd >>= 1
    // [150] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1 -- vwsz1=vwsz1_ror_1 
    lda yd+1
    cmp #$80
    ror yd+1
    ror yd
    // [151] phi from atan2_16::@15 atan2_16::@16 to atan2_16::@17 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17]
    // [151] phi (signed word) atan2_16::xd#5 = (signed word) atan2_16::xd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#0] -- register_copy 
    // [151] phi (signed word) atan2_16::yd#5 = (signed word) atan2_16::yd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#1] -- register_copy 
    // atan2_16::@17
  b17:
    // if(yi>=0)
    // [152] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18 -- vwsz1_ge_0_then_la1 
    lda yi+1
    bpl b18
    // atan2_16::@20
    // xi -= yd
    // [153] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5 -- vwsz1=vwsz1_minus_vwsz2 
    lda xi
    sec
    sbc yd
    sta xi
    lda xi+1
    sbc yd+1
    sta xi+1
    // yi += xd
    // [154] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5 -- vwsz1=vwsz1_plus_vwsz2 
    lda yi
    clc
    adc xd
    sta yi
    lda yi+1
    adc xd+1
    sta yi+1
    // angle -= CORDIC_ATAN2_ANGLES_16[i]
    // [155] (byte~) atan2_16::$24 ← (byte) atan2_16::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // [156] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$24) -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuaa 
    tay
    sec
    lda angle
    sbc CORDIC_ATAN2_ANGLES_16,y
    sta angle
    lda angle+1
    sbc CORDIC_ATAN2_ANGLES_16+1,y
    sta angle+1
    // [157] phi from atan2_16::@18 atan2_16::@20 to atan2_16::@19 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19]
    // [157] phi (signed word) atan2_16::xi#8 = (signed word) atan2_16::xi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#0] -- register_copy 
    // [157] phi (word) atan2_16::angle#13 = (word) atan2_16::angle#2 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#1] -- register_copy 
    // [157] phi (signed word) atan2_16::yi#8 = (signed word) atan2_16::yi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#2] -- register_copy 
    // atan2_16::@19
  b19:
    // for( byte i: 0..CORDIC_ITERATIONS_16-1)
    // [158] (byte) atan2_16::i#1 ← ++ (byte) atan2_16::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [159] if((byte) atan2_16::i#1==(const byte) CORDIC_ITERATIONS_16#0-(byte) 1+(byte) 1) goto atan2_16::@12 -- vbuxx_eq_vbuc1_then_la1 
    cpx #CORDIC_ITERATIONS_16-1+1
    bne !b12+
    jmp b12
  !b12:
    // [132] phi from atan2_16::@19 to atan2_16::@10 [phi:atan2_16::@19->atan2_16::@10]
    // [132] phi (word) atan2_16::angle#12 = (word) atan2_16::angle#13 [phi:atan2_16::@19->atan2_16::@10#0] -- register_copy 
    // [132] phi (byte) atan2_16::i#2 = (byte) atan2_16::i#1 [phi:atan2_16::@19->atan2_16::@10#1] -- register_copy 
    // [132] phi (signed word) atan2_16::xi#3 = (signed word) atan2_16::xi#8 [phi:atan2_16::@19->atan2_16::@10#2] -- register_copy 
    // [132] phi (signed word) atan2_16::yi#3 = (signed word) atan2_16::yi#8 [phi:atan2_16::@19->atan2_16::@10#3] -- register_copy 
    jmp b10
    // atan2_16::@18
  b18:
    // xi += yd
    // [160] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5 -- vwsz1=vwsz1_plus_vwsz2 
    lda xi
    clc
    adc yd
    sta xi
    lda xi+1
    adc yd+1
    sta xi+1
    // yi -= xd
    // [161] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5 -- vwsz1=vwsz1_minus_vwsz2 
    lda yi
    sec
    sbc xd
    sta yi
    lda yi+1
    sbc xd+1
    sta yi+1
    // angle += CORDIC_ATAN2_ANGLES_16[i]
    // [162] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // [163] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$23) -- vwuz1=vwuz1_plus_pwuc1_derefidx_vbuaa 
    tay
    clc
    lda angle
    adc CORDIC_ATAN2_ANGLES_16,y
    sta angle
    lda angle+1
    adc CORDIC_ATAN2_ANGLES_16+1,y
    sta angle+1
    jmp b19
    // atan2_16::@14
  b14:
    // xd >>= 2
    // [164] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2 
    lda xd+1
    cmp #$80
    ror xd+1
    ror xd
    lda xd+1
    cmp #$80
    ror xd+1
    ror xd
    // yd >>= 2
    // [165] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2 
    lda yd+1
    cmp #$80
    ror yd+1
    ror yd
    lda yd+1
    cmp #$80
    ror yd+1
    ror yd
    // shift -=2
    // [166] (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#2 - (byte) 2 -- vbuyy=vbuyy_minus_2 
    dey
    dey
    jmp b13
    // atan2_16::@4
  b4:
    // [167] (signed word~) atan2_16::xi#13 ← (signed word) atan2_16::x#0 -- vwsz1=vwsz2 
    lda x
    sta xi
    lda x+1
    sta xi+1
    jmp b6
    // atan2_16::@1
  b1:
    // [168] (signed word~) atan2_16::yi#16 ← (signed word) atan2_16::y#0 -- vwsz1=vwsz2 
    lda y
    sta yi
    lda y+1
    sta yi+1
    jmp b3
}
  // 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
// init_dist_screen(byte* zeropage($24) screen)
init_dist_screen: {
    .label screen = $24
    .label screen_bottomline = $26
    .label yds = $47
    .label xds = $49
    .label ds = $49
    .label x = $28
    .label xb = $29
    .label screen_topline = $24
    .label y = $23
    // init_squares()
    // [170] call init_squares 
    // [241] phi from init_dist_screen to init_squares [phi:init_dist_screen->init_squares]
    jsr init_squares
    // init_dist_screen::@10
    // screen_bottomline = screen+40*24
    // [171] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18 -- pbuz1=pbuz2_plus_vwuc1 
    lda screen
    clc
    adc #<$28*$18
    sta screen_bottomline
    lda screen+1
    adc #>$28*$18
    sta screen_bottomline+1
    // [172] phi from init_dist_screen::@10 to init_dist_screen::@1 [phi:init_dist_screen::@10->init_dist_screen::@1]
    // [172] phi (byte*) init_dist_screen::screen_bottomline#10 = (byte*) init_dist_screen::screen_bottomline#0 [phi:init_dist_screen::@10->init_dist_screen::@1#0] -- register_copy 
    // [172] phi (byte*) init_dist_screen::screen_topline#10 = (byte*) init_dist_screen::screen#0 [phi:init_dist_screen::@10->init_dist_screen::@1#1] -- register_copy 
    // [172] phi (byte) init_dist_screen::y#10 = (byte) 0 [phi:init_dist_screen::@10->init_dist_screen::@1#2] -- vbuz1=vbuc1 
    lda #0
    sta y
    // [172] phi from init_dist_screen::@9 to init_dist_screen::@1 [phi:init_dist_screen::@9->init_dist_screen::@1]
    // [172] phi (byte*) init_dist_screen::screen_bottomline#10 = (byte*) init_dist_screen::screen_bottomline#1 [phi:init_dist_screen::@9->init_dist_screen::@1#0] -- register_copy 
    // [172] phi (byte*) init_dist_screen::screen_topline#10 = (byte*) init_dist_screen::screen_topline#1 [phi:init_dist_screen::@9->init_dist_screen::@1#1] -- register_copy 
    // [172] phi (byte) init_dist_screen::y#10 = (byte) init_dist_screen::y#1 [phi:init_dist_screen::@9->init_dist_screen::@1#2] -- register_copy 
    // init_dist_screen::@1
  b1:
    // y2 = y*2
    // [173] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1 -- vbuaa=vbuz1_rol_1 
    lda y
    asl
    // (y2>=24)?(y2-24):(24-y2)
    // [174] if((byte) init_dist_screen::y2#0>=(byte) $18) goto init_dist_screen::@2 -- vbuaa_ge_vbuc1_then_la1 
    cmp #$18
    bcs b2
    // init_dist_screen::@3
    // [175] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    clc
    adc #$18+1
    // [176] 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]
    // [176] phi (byte) init_dist_screen::yd#0 = (byte~) 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:
    // sqr(yd)
    // [177] (byte) sqr::val#0 ← (byte) init_dist_screen::yd#0
    // [178] call sqr 
    // [237] phi from init_dist_screen::@4 to sqr [phi:init_dist_screen::@4->sqr]
    // [237] phi (byte) sqr::val#2 = (byte) sqr::val#0 [phi:init_dist_screen::@4->sqr#0] -- register_copy 
    jsr sqr
    // sqr(yd)
    // [179] (word) sqr::return#2 ← (word) sqr::return#0 -- vwuz1=vwuz2 
    lda sqr.return
    sta sqr.return_2
    lda sqr.return+1
    sta sqr.return_2+1
    // init_dist_screen::@11
    // yds = sqr(yd)
    // [180] (word) init_dist_screen::yds#0 ← (word) sqr::return#2
    // [181] phi from init_dist_screen::@11 to init_dist_screen::@5 [phi:init_dist_screen::@11->init_dist_screen::@5]
    // [181] phi (byte) init_dist_screen::xb#2 = (byte) $27 [phi:init_dist_screen::@11->init_dist_screen::@5#0] -- vbuz1=vbuc1 
    lda #$27
    sta xb
    // [181] phi (byte) init_dist_screen::x#2 = (byte) 0 [phi:init_dist_screen::@11->init_dist_screen::@5#1] -- vbuz1=vbuc1 
    lda #0
    sta x
    // [181] phi from init_dist_screen::@13 to init_dist_screen::@5 [phi:init_dist_screen::@13->init_dist_screen::@5]
    // [181] phi (byte) init_dist_screen::xb#2 = (byte) init_dist_screen::xb#1 [phi:init_dist_screen::@13->init_dist_screen::@5#0] -- register_copy 
    // [181] phi (byte) init_dist_screen::x#2 = (byte) init_dist_screen::x#1 [phi:init_dist_screen::@13->init_dist_screen::@5#1] -- register_copy 
    // init_dist_screen::@5
  b5:
    // x2 = x*2
    // [182] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1 
    lda x
    asl
    // (x2>=39)?(x2-39):(39-x2)
    // [183] if((byte) init_dist_screen::x2#0>=(byte) $27) goto init_dist_screen::@6 -- vbuaa_ge_vbuc1_then_la1 
    cmp #$27
    bcs b6
    // init_dist_screen::@7
    // [184] (byte~) init_dist_screen::$13 ← (byte) $27 - (byte) init_dist_screen::x2#0 -- vbuaa=vbuc1_minus_vbuaa 
    eor #$ff
    clc
    adc #$27+1
    // [185] phi from init_dist_screen::@6 init_dist_screen::@7 to init_dist_screen::@8 [phi:init_dist_screen::@6/init_dist_screen::@7->init_dist_screen::@8]
    // [185] phi (byte) init_dist_screen::xd#0 = (byte~) init_dist_screen::$15 [phi:init_dist_screen::@6/init_dist_screen::@7->init_dist_screen::@8#0] -- register_copy 
    // init_dist_screen::@8
  b8:
    // sqr(xd)
    // [186] (byte) sqr::val#1 ← (byte) init_dist_screen::xd#0
    // [187] call sqr 
    // [237] phi from init_dist_screen::@8 to sqr [phi:init_dist_screen::@8->sqr]
    // [237] phi (byte) sqr::val#2 = (byte) sqr::val#1 [phi:init_dist_screen::@8->sqr#0] -- register_copy 
    jsr sqr
    // sqr(xd)
    // [188] (word) sqr::return#3 ← (word) sqr::return#0
    // init_dist_screen::@12
    // xds = sqr(xd)
    // [189] (word) init_dist_screen::xds#0 ← (word) sqr::return#3
    // ds = xds+yds
    // [190] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda ds
    clc
    adc yds
    sta ds
    lda ds+1
    adc yds+1
    sta ds+1
    // sqrt(ds)
    // [191] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0
    // [192] call sqrt 
    jsr sqrt
    // [193] (byte) sqrt::return#2 ← (byte) sqrt::return#0
    // init_dist_screen::@13
    // d = sqrt(ds)
    // [194] (byte) init_dist_screen::d#0 ← (byte) sqrt::return#2
    // screen_topline[x] = d
    // [195] *((byte*) init_dist_screen::screen_topline#10 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy x
    sta (screen_topline),y
    // screen_bottomline[x] = d
    // [196] *((byte*) init_dist_screen::screen_bottomline#10 + (byte) init_dist_screen::x#2) ← (byte) init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa 
    sta (screen_bottomline),y
    // screen_topline[xb] = d
    // [197] *((byte*) init_dist_screen::screen_topline#10 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa 
    ldy xb
    sta (screen_topline),y
    // screen_bottomline[xb] = d
    // [198] *((byte*) init_dist_screen::screen_bottomline#10 + (byte) init_dist_screen::xb#2) ← (byte) init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa 
    sta (screen_bottomline),y
    // for( byte x=0,xb=39; x<=19; x++, xb--)
    // [199] (byte) init_dist_screen::x#1 ← ++ (byte) init_dist_screen::x#2 -- vbuz1=_inc_vbuz1 
    inc x
    // [200] (byte) init_dist_screen::xb#1 ← -- (byte) init_dist_screen::xb#2 -- vbuz1=_dec_vbuz1 
    dec xb
    // [201] if((byte) init_dist_screen::x#1<(byte) $13+(byte) 1) goto init_dist_screen::@5 -- vbuz1_lt_vbuc1_then_la1 
    lda x
    cmp #$13+1
    bcc b5
    // init_dist_screen::@9
    // screen_topline += 40
    // [202] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#10 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1 
    lda #$28
    clc
    adc screen_topline
    sta screen_topline
    bcc !+
    inc screen_topline+1
  !:
    // screen_bottomline -= 40
    // [203] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#10 - (byte) $28 -- pbuz1=pbuz1_minus_vwuc1 
    lda screen_bottomline
    sec
    sbc #<$28
    sta screen_bottomline
    lda screen_bottomline+1
    sbc #>$28
    sta screen_bottomline+1
    // for(byte y: 0..12)
    // [204] (byte) init_dist_screen::y#1 ← ++ (byte) init_dist_screen::y#10 -- vbuz1=_inc_vbuz1 
    inc y
    // [205] if((byte) init_dist_screen::y#1!=(byte) $d) goto init_dist_screen::@1 -- vbuz1_neq_vbuc1_then_la1 
    lda #$d
    cmp y
    bne b1
    // init_dist_screen::@return
    // }
    // [206] return 
    rts
    // init_dist_screen::@6
  b6:
    // (x2>=39)?(x2-39):(39-x2)
    // [207] (byte~) init_dist_screen::$15 ← (byte) init_dist_screen::x2#0 - (byte) $27 -- vbuaa=vbuaa_minus_vbuc1 
    sec
    sbc #$27
    jmp b8
    // init_dist_screen::@2
  b2:
    // (y2>=24)?(y2-24):(24-y2)
    // [208] (byte~) init_dist_screen::$7 ← (byte) init_dist_screen::y2#0 - (byte) $18 -- vbuaa=vbuaa_minus_vbuc1 
    sec
    sbc #$18
    jmp b4
}
  // sqrt
// Find the (integer) square root of a word 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()
// sqrt(word zeropage($49) val)
sqrt: {
    .label _1 = $2a
    .label _3 = $2a
    .label found = $2a
    .label val = $49
    // bsearch16u(val, SQUARES, NUM_SQUARES)
    // [209] (word) bsearch16u::key#0 ← (word) sqrt::val#0
    // [210] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1 -- pwuz1=pwuz2 
    lda SQUARES
    sta bsearch16u.items
    lda SQUARES+1
    sta bsearch16u.items+1
    // [211] call bsearch16u 
    // [218] phi from sqrt to bsearch16u [phi:sqrt->bsearch16u]
    jsr bsearch16u
    // bsearch16u(val, SQUARES, NUM_SQUARES)
    // [212] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1
    // sqrt::@1
    // found = bsearch16u(val, SQUARES, NUM_SQUARES)
    // [213] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3
    // found-SQUARES
    // [214] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1 -- vwuz1=pwuz1_minus_pwuz2 
    lda _3
    sec
    sbc SQUARES
    sta _3
    lda _3+1
    sbc SQUARES+1
    sta _3+1
    // [215] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 
    lsr _1+1
    ror _1
    // (byte)(found-SQUARES)
    // [216] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 -- vbuaa=_byte_vwuz1 
    lda _1
    // sqrt::@return
    // }
    // [217] return 
    rts
}
  // bsearch16u
// Searches an array of nitems unsigned words, 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
// bsearch16u(word zeropage($49) key, word* zeropage($2a) items, byte register(X) num)
bsearch16u: {
    .label _2 = $2a
    .label pivot = $4b
    .label result = $4d
    .label return = $2a
    .label items = $2a
    .label key = $49
    // [219] phi from bsearch16u to bsearch16u::@3 [phi:bsearch16u->bsearch16u::@3]
    // [219] phi (word*) bsearch16u::items#2 = (word*) bsearch16u::items#1 [phi:bsearch16u->bsearch16u::@3#0] -- register_copy 
    // [219] phi (byte) bsearch16u::num#3 = (const byte) NUM_SQUARES#3 [phi:bsearch16u->bsearch16u::@3#1] -- vbuxx=vbuc1 
    ldx #NUM_SQUARES
    // bsearch16u::@3
  b3:
    // while (num > 0)
    // [220] if((byte) bsearch16u::num#3>(byte) 0) goto bsearch16u::@4 -- vbuxx_gt_0_then_la1 
    cpx #0
    bne b4
    // bsearch16u::@5
    // *items<=key?items:items-1
    // [221] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 -- _deref_pwuz1_le_vwuz2_then_la1 
    ldy #1
    lda (items),y
    cmp key+1
    bne !+
    dey
    lda (items),y
    cmp key
    beq b2
  !:
    bcc b2
    // bsearch16u::@1
    // [222] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD -- pwuz1=pwuz1_minus_vwuc1 
    lda _2
    sec
    sbc #<1*SIZEOF_WORD
    sta _2
    lda _2+1
    sbc #>1*SIZEOF_WORD
    sta _2+1
    // [223] phi from bsearch16u::@1 bsearch16u::@5 to bsearch16u::@2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2]
    // [223] phi (word*) bsearch16u::return#2 = (word*~) bsearch16u::$2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2#0] -- register_copy 
    // bsearch16u::@2
  b2:
    // [224] phi from bsearch16u::@2 bsearch16u::@8 to bsearch16u::@return [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return]
    // [224] phi (word*) bsearch16u::return#1 = (word*) bsearch16u::return#2 [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return#0] -- register_copy 
    // bsearch16u::@return
    // }
    // [225] return 
    rts
    // bsearch16u::@4
  b4:
    // num >> 1
    // [226] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 -- vbuaa=vbuxx_ror_1 
    txa
    lsr
    // items + (num >> 1)
    // [227] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 -- vbuaa=vbuaa_rol_1 
    asl
    // [228] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 -- pwuz1=pwuz2_plus_vbuaa 
    clc
    adc items
    sta pivot
    lda #0
    adc items+1
    sta pivot+1
    // result = (signed int)key-(signed int)*pivot
    // [229] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) -- vwsz1=vwsz2_minus__deref_pwsz3 
    sec
    lda key
    ldy #0
    sbc (pivot),y
    sta result
    lda key+1
    iny
    sbc (pivot),y
    sta result+1
    // if (result == 0)
    // [230] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 -- vwsz1_neq_0_then_la1 
    bne b6
    lda result
    bne b6
    // bsearch16u::@8
    // [231] (word*~) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 -- pwuz1=pwuz2 
    lda pivot
    sta return
    lda pivot+1
    sta return+1
    rts
    // bsearch16u::@6
  b6:
    // if (result > 0)
    // [232] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 -- vwsz1_le_0_then_la1 
    lda result+1
    bmi b7
    bne !+
    lda result
    beq b7
  !:
    // bsearch16u::@9
    // items = pivot+1
    // [233] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD -- pwuz1=pwuz2_plus_vbuc1 
    lda #1*SIZEOF_WORD
    clc
    adc pivot
    sta items
    lda #0
    adc pivot+1
    sta items+1
    // num--;
    // [234] (byte) bsearch16u::num#1 ← -- (byte) bsearch16u::num#3 -- vbuxx=_dec_vbuxx 
    dex
    // [235] phi from bsearch16u::@6 bsearch16u::@9 to bsearch16u::@7 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7]
    // [235] phi (word*) bsearch16u::items#8 = (word*) bsearch16u::items#2 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#0] -- register_copy 
    // [235] phi (byte) bsearch16u::num#5 = (byte) bsearch16u::num#3 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#1] -- register_copy 
    // bsearch16u::@7
  b7:
    // num >>= 1
    // [236] (byte) bsearch16u::num#0 ← (byte) bsearch16u::num#5 >> (byte) 1 -- vbuxx=vbuxx_ror_1 
    txa
    lsr
    tax
    // [219] phi from bsearch16u::@7 to bsearch16u::@3 [phi:bsearch16u::@7->bsearch16u::@3]
    // [219] phi (word*) bsearch16u::items#2 = (word*) bsearch16u::items#8 [phi:bsearch16u::@7->bsearch16u::@3#0] -- register_copy 
    // [219] phi (byte) bsearch16u::num#3 = (byte) bsearch16u::num#0 [phi:bsearch16u::@7->bsearch16u::@3#1] -- register_copy 
    jmp b3
}
  // sqr
// Find the square of a byte value
// Uses a table of squares that must be initialized by calling init_squares()
// sqr(byte register(A) val)
sqr: {
    .label return = $49
    .label return_2 = $47
    // return SQUARES[val];
    // [238] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 -- vbuaa=vbuaa_rol_1 
    asl
    // [239] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0) -- vwuz1=pwuz2_derefidx_vbuaa 
    tay
    lda (SQUARES),y
    sta return
    iny
    lda (SQUARES),y
    sta return+1
    // sqr::@return
    // }
    // [240] return 
    rts
}
  // init_squares
// Initialize squares table
// Uses iterative formula (x+1)^2 = x^2 + 2*x + 1
init_squares: {
    .label squares = $2e
    .label sqr = $2c
    // malloc(NUM_SQUARES*sizeof(word))
    // [242] call malloc 
    // [254] phi from init_squares to malloc [phi:init_squares->malloc]
    // [254] phi (word) malloc::size#3 = (const byte) NUM_SQUARES#3*(const byte) SIZEOF_WORD [phi:init_squares->malloc#0] -- vwuz1=vbuc1 
    lda #<NUM_SQUARES*SIZEOF_WORD
    sta malloc.size
    lda #>NUM_SQUARES*SIZEOF_WORD
    sta malloc.size+1
    // [254] phi (byte*) heap_head#12 = (byte*) heap_head#1 [phi:init_squares->malloc#1] -- register_copy 
    jsr malloc
    // init_squares::@2
    // malloc(NUM_SQUARES*sizeof(word))
    // [243] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0
    // squares = SQUARES
    // [244] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1 -- pwuz1=pwuz2 
    lda SQUARES
    sta squares
    lda SQUARES+1
    sta squares+1
    // [245] phi from init_squares::@2 to init_squares::@1 [phi:init_squares::@2->init_squares::@1]
    // [245] phi (byte) init_squares::i#2 = (byte) 0 [phi:init_squares::@2->init_squares::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [245] phi (word*) init_squares::squares#2 = (word*) init_squares::squares#0 [phi:init_squares::@2->init_squares::@1#1] -- register_copy 
    // [245] phi (word) init_squares::sqr#2 = (byte) 0 [phi:init_squares::@2->init_squares::@1#2] -- vwuz1=vbuc1 
    txa
    sta sqr
    sta sqr+1
    // [245] phi from init_squares::@1 to init_squares::@1 [phi:init_squares::@1->init_squares::@1]
    // [245] phi (byte) init_squares::i#2 = (byte) init_squares::i#1 [phi:init_squares::@1->init_squares::@1#0] -- register_copy 
    // [245] phi (word*) init_squares::squares#2 = (word*) init_squares::squares#1 [phi:init_squares::@1->init_squares::@1#1] -- register_copy 
    // [245] phi (word) init_squares::sqr#2 = (word) init_squares::sqr#1 [phi:init_squares::@1->init_squares::@1#2] -- register_copy 
    // init_squares::@1
  b1:
    // *squares++ = sqr
    // [246] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 -- _deref_pwuz1=vwuz2 
    ldy #0
    lda sqr
    sta (squares),y
    iny
    lda sqr+1
    sta (squares),y
    // *squares++ = sqr;
    // [247] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD -- pwuz1=pwuz1_plus_vbuc1 
    lda #SIZEOF_WORD
    clc
    adc squares
    sta squares
    bcc !+
    inc squares+1
  !:
    // i*2
    // [248] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 
    txa
    asl
    // i*2+1
    // [249] (byte~) init_squares::$4 ← (byte~) init_squares::$3 + (byte) 1 -- vbuaa=vbuaa_plus_1 
    clc
    adc #1
    // sqr += i*2+1
    // [250] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 -- vwuz1=vwuz1_plus_vbuaa 
    clc
    adc sqr
    sta sqr
    bcc !+
    inc sqr+1
  !:
    // for( byte i: 0..NUM_SQUARES-1)
    // [251] (byte) init_squares::i#1 ← ++ (byte) init_squares::i#2 -- vbuxx=_inc_vbuxx 
    inx
    // [252] if((byte) init_squares::i#1!=(const byte) NUM_SQUARES#3-(byte) 1+(byte) 1) goto init_squares::@1 -- vbuxx_neq_vbuc1_then_la1 
    cpx #NUM_SQUARES-1+1
    bne b1
    // init_squares::@return
    // }
    // [253] return 
    rts
}
  // malloc
// Allocates a block of size bytes 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.
// malloc(word zeropage($32) size)
malloc: {
    .label mem = $32
    .label size = $32
    // mem = heap_head-size
    // [255] (byte*) malloc::mem#0 ← (byte*) heap_head#12 - (word) malloc::size#3 -- pbuz1=pbuz2_minus_vwuz1 
    lda heap_head
    sec
    sbc mem
    sta mem
    lda heap_head+1
    sbc mem+1
    sta mem+1
    // heap_head = mem
    // [256] (byte*) heap_head#1 ← (byte*) malloc::mem#0 -- pbuz1=pbuz2 
    lda mem
    sta heap_head
    lda mem+1
    sta heap_head+1
    // malloc::@return
    // }
    // [257] return 
    rts
}
  // File Data
  // Angles representing ATAN(0.5), ATAN(0.25), ATAN(0.125), ...
CORDIC_ATAN2_ANGLES_16:
.for (var i=0; i<CORDIC_ITERATIONS_16; i++)
        .word 256*2*256*atan(1/pow(2,i))/PI/2

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


