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 array-indexing *((word*) utoa::digit_values + (byte) utoa::digit)
Fixing pointer array-indexing *((dword*) ultoa::digit_values + (byte) ultoa::digit)
Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src)
Warning! Adding boolean cast to non-boolean condition *((byte*) strlen::str)
Warning! Adding boolean cast to non-boolean condition (number~) abs_u16::$1
Warning! Adding boolean cast to non-boolean condition (number~) sgn_u16::$1
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_lines::str)
Warning! Adding boolean cast to non-boolean condition (byte) print_str_lines::ch
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str::str)
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_at::str)
Warning! Adding boolean cast to non-boolean sub-expression (byte) print_str_lines::ch
Identified constant variable (byte*) HEAP_TOP
Identified constant variable (byte*) BITMAP
Identified constant variable (byte*) SCREEN
Identified constant variable (byte*) COSTAB
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx 
Inlined call (byte~) main::$2 ← call toD018 (const byte*) SCREEN (const byte*) BITMAP 
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::@7
Culled Empty Block (label) memset::@6
Culled Empty Block (label) memset::@8
Culled Empty Block (label) memset::@9
Culled Empty Block (label) memset::@3
Culled Empty Block (label) @7
Culled Empty Block (label) @8
Culled Empty Block (label) bitmap_init::@8
Culled Empty Block (label) @10
Culled Empty Block (label) @11
Culled Empty Block (label) @12
Culled Empty Block (label) bitmap_line::@5
Culled Empty Block (label) bitmap_line::@10
Culled Empty Block (label) bitmap_line::@11
Culled Empty Block (label) bitmap_line::@15
Culled Empty Block (label) @13
Culled Empty Block (label) abs_u16::@4
Culled Empty Block (label) abs_u16::@2
Culled Empty Block (label) abs_u16::@5
Culled Empty Block (label) abs_u16::@6
Culled Empty Block (label) @14
Culled Empty Block (label) sgn_u16::@4
Culled Empty Block (label) sgn_u16::@2
Culled Empty Block (label) sgn_u16::@5
Culled Empty Block (label) sgn_u16::@6
Culled Empty Block (label) @15
Culled Empty Block (label) @16
Culled Empty Block (label) @17
Culled Empty Block (label) @18
Culled Empty Block (label) @19
Culled Empty Block (label) @20
Culled Empty Block (label) @21
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) @44
Culled Empty Block (label) @45
Culled Empty Block (label) @46
Culled Empty Block (label) @47
Culled Empty Block (label) main::toD0181_@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) main::@10
Culled Empty Block (label) main::@9
Culled Empty Block (label) main::@11
Culled Empty Block (label) main::@12

CONTROL FLOW GRAPH SSA
@begin: scope:[]  from
  to:@9

(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset]  from bitmap_clear bitmap_clear::@1
  (byte) memset::c#5 ← phi( bitmap_clear/(byte) memset::c#0 bitmap_clear::@1/(byte) memset::c#1 )
  (void*) memset::str#4 ← phi( bitmap_clear/(void*) memset::str#0 bitmap_clear::@1/(void*) memset::str#1 )
  (word) memset::num#2 ← phi( bitmap_clear/(word) memset::num#0 bitmap_clear::@1/(word) memset::num#1 )
  (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#4 ← phi( memset/(byte) memset::c#5 )
  (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::@5
  (byte) memset::c#3 ← phi( memset::@2/(byte) memset::c#4 memset::@5/(byte) memset::c#2 )
  (void*) memset::str#5 ← phi( memset::@2/(void*) memset::str#3 memset::@5/(void*) memset::str#6 )
  (byte*) memset::end#1 ← phi( memset::@2/(byte*) memset::end#0 memset::@5/(byte*) memset::end#2 )
  (byte*) memset::dst#2 ← phi( memset::@2/(byte*) memset::dst#0 memset::@5/(byte*) memset::dst#1 )
  (bool~) memset::$4 ← (byte*) memset::dst#2 != (byte*) memset::end#1
  if((bool~) memset::$4) goto memset::@5
  to:memset::@1
memset::@5: scope:[memset]  from memset::@4
  (void*) memset::str#6 ← phi( memset::@4/(void*) memset::str#5 )
  (byte*) memset::end#2 ← phi( memset::@4/(byte*) memset::end#1 )
  (byte*) memset::dst#3 ← phi( memset::@4/(byte*) memset::dst#2 )
  (byte) memset::c#2 ← phi( memset::@4/(byte) memset::c#3 )
  *((byte*) memset::dst#3) ← (byte) memset::c#2
  (byte*) memset::dst#1 ← ++ (byte*) memset::dst#3
  to:memset::@4
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
@9: scope:[]  from @begin
  (byte*) bitmap_screen#0 ← (byte*) 0
  (byte*) bitmap_gfx#0 ← (byte*) 0
  to:@48

(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
bitmap_init: scope:[bitmap_init]  from main
  (byte*) bitmap_init::screen#1 ← phi( main/(byte*) bitmap_init::screen#0 )
  (byte*) bitmap_init::gfx#1 ← phi( main/(byte*) bitmap_init::gfx#0 )
  (byte*) bitmap_gfx#1 ← (byte*) bitmap_init::gfx#1
  (byte*) bitmap_screen#1 ← (byte*) bitmap_init::screen#1
  (byte) bitmap_init::bits#0 ← (byte) $80
  (byte) bitmap_init::x#0 ← (byte) 0
  to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init]  from bitmap_init bitmap_init::@2
  (byte*) bitmap_screen#25 ← phi( bitmap_init/(byte*) bitmap_screen#1 bitmap_init::@2/(byte*) bitmap_screen#22 )
  (byte*) bitmap_gfx#26 ← phi( bitmap_init/(byte*) bitmap_gfx#1 bitmap_init::@2/(byte*) bitmap_gfx#23 )
  (byte*) bitmap_init::gfx#4 ← phi( bitmap_init/(byte*) bitmap_init::gfx#1 bitmap_init::@2/(byte*) bitmap_init::gfx#3 )
  (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) bitmap_init::x#0 bitmap_init::@2/(byte) bitmap_init::x#1 )
  (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) bitmap_init::bits#0 bitmap_init::@2/(byte) bitmap_init::bits#4 )
  *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
  (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (number) 1
  (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (number) 0
  (bool~) bitmap_init::$1 ← ! (bool~) bitmap_init::$0
  if((bool~) bitmap_init::$1) goto bitmap_init::@2
  to:bitmap_init::@3
bitmap_init::@2: scope:[bitmap_init]  from bitmap_init::@1 bitmap_init::@3
  (byte*) bitmap_screen#22 ← phi( bitmap_init::@1/(byte*) bitmap_screen#25 bitmap_init::@3/(byte*) bitmap_screen#26 )
  (byte*) bitmap_gfx#23 ← phi( bitmap_init::@1/(byte*) bitmap_gfx#26 bitmap_init::@3/(byte*) bitmap_gfx#27 )
  (byte*) bitmap_init::gfx#3 ← phi( bitmap_init::@1/(byte*) bitmap_init::gfx#4 bitmap_init::@3/(byte*) bitmap_init::gfx#5 )
  (byte) bitmap_init::bits#4 ← phi( bitmap_init::@1/(byte) bitmap_init::bits#1 bitmap_init::@3/(byte) bitmap_init::bits#2 )
  (byte) bitmap_init::x#3 ← phi( bitmap_init::@1/(byte) bitmap_init::x#2 bitmap_init::@3/(byte) bitmap_init::x#4 )
  (byte) bitmap_init::x#1 ← (byte) bitmap_init::x#3 + rangenext(0,$ff)
  (bool~) bitmap_init::$2 ← (byte) bitmap_init::x#1 != rangelast(0,$ff)
  if((bool~) bitmap_init::$2) goto bitmap_init::@1
  to:bitmap_init::@4
bitmap_init::@3: scope:[bitmap_init]  from bitmap_init::@1
  (byte*) bitmap_screen#26 ← phi( bitmap_init::@1/(byte*) bitmap_screen#25 )
  (byte*) bitmap_gfx#27 ← phi( bitmap_init::@1/(byte*) bitmap_gfx#26 )
  (byte*) bitmap_init::gfx#5 ← phi( bitmap_init::@1/(byte*) bitmap_init::gfx#4 )
  (byte) bitmap_init::x#4 ← phi( bitmap_init::@1/(byte) bitmap_init::x#2 )
  (byte) bitmap_init::bits#2 ← (number) $80
  to:bitmap_init::@2
bitmap_init::@4: scope:[bitmap_init]  from bitmap_init::@2
  (byte*) bitmap_screen#19 ← phi( bitmap_init::@2/(byte*) bitmap_screen#22 )
  (byte*) bitmap_gfx#20 ← phi( bitmap_init::@2/(byte*) bitmap_gfx#23 )
  (byte*) bitmap_init::gfx#2 ← phi( bitmap_init::@2/(byte*) bitmap_init::gfx#3 )
  (byte*) bitmap_init::yoffs#0 ← (byte*) bitmap_init::gfx#2
  (byte) bitmap_init::y#0 ← (byte) 0
  to:bitmap_init::@5
bitmap_init::@5: scope:[bitmap_init]  from bitmap_init::@4 bitmap_init::@6
  (byte*) bitmap_screen#15 ← phi( bitmap_init::@4/(byte*) bitmap_screen#19 bitmap_init::@6/(byte*) bitmap_screen#11 )
  (byte*) bitmap_gfx#16 ← phi( bitmap_init::@4/(byte*) bitmap_gfx#20 bitmap_init::@6/(byte*) bitmap_gfx#11 )
  (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#0 bitmap_init::@6/(byte*) bitmap_init::yoffs#4 )
  (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#0 bitmap_init::@6/(byte) bitmap_init::y#1 )
  (number~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (number) 7
  (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
  (number~) bitmap_init::$5 ← (number~) bitmap_init::$3 | (byte~) bitmap_init::$4
  *((const byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (number~) bitmap_init::$5
  (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
  *((const byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
  (number~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (number) 7
  (bool~) bitmap_init::$8 ← (number~) bitmap_init::$7 == (number) 7
  (bool~) bitmap_init::$9 ← ! (bool~) bitmap_init::$8
  if((bool~) bitmap_init::$9) goto bitmap_init::@6
  to:bitmap_init::@7
bitmap_init::@6: scope:[bitmap_init]  from bitmap_init::@5 bitmap_init::@7
  (byte*) bitmap_screen#11 ← phi( bitmap_init::@5/(byte*) bitmap_screen#15 bitmap_init::@7/(byte*) bitmap_screen#16 )
  (byte*) bitmap_gfx#11 ← phi( bitmap_init::@5/(byte*) bitmap_gfx#16 bitmap_init::@7/(byte*) bitmap_gfx#17 )
  (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@5/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 )
  (byte) bitmap_init::y#3 ← phi( bitmap_init::@5/(byte) bitmap_init::y#2 bitmap_init::@7/(byte) bitmap_init::y#4 )
  (byte) bitmap_init::y#1 ← (byte) bitmap_init::y#3 + rangenext(0,$ff)
  (bool~) bitmap_init::$11 ← (byte) bitmap_init::y#1 != rangelast(0,$ff)
  if((bool~) bitmap_init::$11) goto bitmap_init::@5
  to:bitmap_init::@return
bitmap_init::@7: scope:[bitmap_init]  from bitmap_init::@5
  (byte*) bitmap_screen#16 ← phi( bitmap_init::@5/(byte*) bitmap_screen#15 )
  (byte*) bitmap_gfx#17 ← phi( bitmap_init::@5/(byte*) bitmap_gfx#16 )
  (byte) bitmap_init::y#4 ← phi( bitmap_init::@5/(byte) bitmap_init::y#2 )
  (byte*) bitmap_init::yoffs#3 ← phi( bitmap_init::@5/(byte*) bitmap_init::yoffs#2 )
  (byte*~) bitmap_init::$10 ← (byte*) bitmap_init::yoffs#3 + (number) $28*(number) 8
  (byte*) bitmap_init::yoffs#1 ← (byte*~) bitmap_init::$10
  to:bitmap_init::@6
bitmap_init::@return: scope:[bitmap_init]  from bitmap_init::@6
  (byte*) bitmap_screen#6 ← phi( bitmap_init::@6/(byte*) bitmap_screen#11 )
  (byte*) bitmap_gfx#6 ← phi( bitmap_init::@6/(byte*) bitmap_gfx#11 )
  (byte*) bitmap_gfx#2 ← (byte*) bitmap_gfx#6
  (byte*) bitmap_screen#2 ← (byte*) bitmap_screen#6
  return 
  to:@return

(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
bitmap_clear: scope:[bitmap_clear]  from main::@14
  (byte*) bitmap_gfx#12 ← phi( main::@14/(byte*) bitmap_gfx#3 )
  (byte*) bitmap_screen#7 ← phi( main::@14/(byte*) bitmap_screen#3 )
  (byte) bitmap_clear::bgcol#1 ← phi( main::@14/(byte) bitmap_clear::bgcol#0 )
  (byte) bitmap_clear::fgcol#1 ← phi( main::@14/(byte) bitmap_clear::fgcol#0 )
  (number~) bitmap_clear::$0 ← (byte) bitmap_clear::fgcol#1 * (number) $10
  (number~) bitmap_clear::$1 ← (number~) bitmap_clear::$0 + (byte) bitmap_clear::bgcol#1
  (byte) bitmap_clear::col#0 ← (number~) bitmap_clear::$1
  (void*) memset::str#0 ← (void*)(byte*) bitmap_screen#7
  (byte) memset::c#0 ← (byte) bitmap_clear::col#0
  (word) memset::num#0 ← (word) $3e8
  call memset 
  (void*) memset::return#2 ← (void*) memset::return#1
  to:bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear]  from bitmap_clear
  (byte*) bitmap_gfx#7 ← phi( bitmap_clear/(byte*) bitmap_gfx#12 )
  (void*) memset::str#1 ← (void*)(byte*) bitmap_gfx#7
  (byte) memset::c#1 ← (number) 0
  (word) memset::num#1 ← (word) $1f40
  call memset 
  (void*) memset::return#3 ← (void*) memset::return#1
  to:bitmap_clear::@2
bitmap_clear::@2: scope:[bitmap_clear]  from bitmap_clear::@1
  to:bitmap_clear::@return
bitmap_clear::@return: scope:[bitmap_clear]  from bitmap_clear::@2
  return 
  to:@return

(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
bitmap_plot: scope:[bitmap_plot]  from bitmap_line::@12 bitmap_line::@3 bitmap_line::@4 bitmap_line::@7
  (word) bitmap_plot::x#4 ← phi( bitmap_line::@12/(word) bitmap_plot::x#3 bitmap_line::@3/(word) bitmap_plot::x#2 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@7/(word) bitmap_plot::x#1 )
  (byte) bitmap_plot::y#4 ← phi( bitmap_line::@12/(byte) bitmap_plot::y#3 bitmap_line::@3/(byte) bitmap_plot::y#2 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@7/(byte) bitmap_plot::y#1 )
  (byte*~) bitmap_plot::$0 ← ((byte*)) { *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4), *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) }
  (byte*) bitmap_plot::plotter#0 ← (byte*~) bitmap_plot::$0
  (number~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (number) $fff8
  (byte*) bitmap_plot::plotter#1 ← (byte*) bitmap_plot::plotter#0 + (number~) bitmap_plot::$1
  (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4
  *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2)
  to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot]  from bitmap_plot
  return 
  to:@return

(void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2)
bitmap_line: scope:[bitmap_line]  from main::@2
  (word) bitmap_line::y2#4 ← phi( main::@2/(word) bitmap_line::y2#0 )
  (word) bitmap_line::x2#1 ← phi( main::@2/(word) bitmap_line::x2#0 )
  (word) bitmap_line::y1#1 ← phi( main::@2/(word) bitmap_line::y1#0 )
  (word) bitmap_line::x1#1 ← phi( main::@2/(word) bitmap_line::x1#0 )
  (word) bitmap_line::x#0 ← (word) bitmap_line::x1#1
  (word) bitmap_line::y#0 ← (word) bitmap_line::y1#1
  (word~) bitmap_line::$0 ← (word) bitmap_line::x2#1 - (word) bitmap_line::x1#1
  (word) abs_u16::w#0 ← (word~) bitmap_line::$0
  call abs_u16 
  (word) abs_u16::return#0 ← (word) abs_u16::return#4
  to:bitmap_line::@16
bitmap_line::@16: scope:[bitmap_line]  from bitmap_line
  (word) bitmap_line::x#16 ← phi( bitmap_line/(word) bitmap_line::x#0 )
  (word) bitmap_line::y#16 ← phi( bitmap_line/(word) bitmap_line::y#0 )
  (word) bitmap_line::x1#4 ← phi( bitmap_line/(word) bitmap_line::x1#1 )
  (word) bitmap_line::x2#7 ← phi( bitmap_line/(word) bitmap_line::x2#1 )
  (word) bitmap_line::y1#2 ← phi( bitmap_line/(word) bitmap_line::y1#1 )
  (word) bitmap_line::y2#1 ← phi( bitmap_line/(word) bitmap_line::y2#4 )
  (word) abs_u16::return#5 ← phi( bitmap_line/(word) abs_u16::return#0 )
  (word~) bitmap_line::$1 ← (word) abs_u16::return#5
  (word) bitmap_line::dx#0 ← (word~) bitmap_line::$1
  (word~) bitmap_line::$2 ← (word) bitmap_line::y2#1 - (word) bitmap_line::y1#2
  (word) abs_u16::w#1 ← (word~) bitmap_line::$2
  call abs_u16 
  (word) abs_u16::return#1 ← (word) abs_u16::return#4
  to:bitmap_line::@17
bitmap_line::@17: scope:[bitmap_line]  from bitmap_line::@16
  (word) bitmap_line::y1#5 ← phi( bitmap_line::@16/(word) bitmap_line::y1#2 )
  (word) bitmap_line::y2#8 ← phi( bitmap_line::@16/(word) bitmap_line::y2#1 )
  (word) bitmap_line::x#10 ← phi( bitmap_line::@16/(word) bitmap_line::x#16 )
  (word) bitmap_line::y#10 ← phi( bitmap_line::@16/(word) bitmap_line::y#16 )
  (word) bitmap_line::x1#3 ← phi( bitmap_line::@16/(word) bitmap_line::x1#4 )
  (word) bitmap_line::x2#4 ← phi( bitmap_line::@16/(word) bitmap_line::x2#7 )
  (word) bitmap_line::dx#1 ← phi( bitmap_line::@16/(word) bitmap_line::dx#0 )
  (word) abs_u16::return#6 ← phi( bitmap_line::@16/(word) abs_u16::return#1 )
  (word~) bitmap_line::$3 ← (word) abs_u16::return#6
  (word) bitmap_line::dy#0 ← (word~) bitmap_line::$3
  (bool~) bitmap_line::$4 ← (word) bitmap_line::dx#1 == (number) 0
  (bool~) bitmap_line::$5 ← (word) bitmap_line::dy#0 == (number) 0
  (bool~) bitmap_line::$6 ← (bool~) bitmap_line::$4 && (bool~) bitmap_line::$5
  (bool~) bitmap_line::$7 ← ! (bool~) bitmap_line::$6
  if((bool~) bitmap_line::$7) goto bitmap_line::@1
  to:bitmap_line::@4
bitmap_line::@1: scope:[bitmap_line]  from bitmap_line::@17
  (word) bitmap_line::x#19 ← phi( bitmap_line::@17/(word) bitmap_line::x#10 )
  (word) bitmap_line::y#19 ← phi( bitmap_line::@17/(word) bitmap_line::y#10 )
  (word) bitmap_line::dy#9 ← phi( bitmap_line::@17/(word) bitmap_line::dy#0 )
  (word) bitmap_line::dx#10 ← phi( bitmap_line::@17/(word) bitmap_line::dx#1 )
  (word) bitmap_line::y1#4 ← phi( bitmap_line::@17/(word) bitmap_line::y1#5 )
  (word) bitmap_line::y2#5 ← phi( bitmap_line::@17/(word) bitmap_line::y2#8 )
  (word) bitmap_line::x1#2 ← phi( bitmap_line::@17/(word) bitmap_line::x1#3 )
  (word) bitmap_line::x2#2 ← phi( bitmap_line::@17/(word) bitmap_line::x2#4 )
  (word~) bitmap_line::$8 ← (word) bitmap_line::x2#2 - (word) bitmap_line::x1#2
  (word) sgn_u16::w#0 ← (word~) bitmap_line::$8
  call sgn_u16 
  (word) sgn_u16::return#0 ← (word) sgn_u16::return#4
  to:bitmap_line::@18
bitmap_line::@18: scope:[bitmap_line]  from bitmap_line::@1
  (word) bitmap_line::x2#11 ← phi( bitmap_line::@1/(word) bitmap_line::x2#2 )
  (word) bitmap_line::x#18 ← phi( bitmap_line::@1/(word) bitmap_line::x#19 )
  (word) bitmap_line::y#18 ← phi( bitmap_line::@1/(word) bitmap_line::y#19 )
  (word) bitmap_line::dy#6 ← phi( bitmap_line::@1/(word) bitmap_line::dy#9 )
  (word) bitmap_line::dx#7 ← phi( bitmap_line::@1/(word) bitmap_line::dx#10 )
  (word) bitmap_line::y1#3 ← phi( bitmap_line::@1/(word) bitmap_line::y1#4 )
  (word) bitmap_line::y2#2 ← phi( bitmap_line::@1/(word) bitmap_line::y2#5 )
  (word) sgn_u16::return#5 ← phi( bitmap_line::@1/(word) sgn_u16::return#0 )
  (word~) bitmap_line::$9 ← (word) sgn_u16::return#5
  (word) bitmap_line::sx#0 ← (word~) bitmap_line::$9
  (word~) bitmap_line::$10 ← (word) bitmap_line::y2#2 - (word) bitmap_line::y1#3
  (word) sgn_u16::w#1 ← (word~) bitmap_line::$10
  call sgn_u16 
  (word) sgn_u16::return#1 ← (word) sgn_u16::return#4
  to:bitmap_line::@19
bitmap_line::@19: scope:[bitmap_line]  from bitmap_line::@18
  (word) bitmap_line::y2#11 ← phi( bitmap_line::@18/(word) bitmap_line::y2#2 )
  (word) bitmap_line::x2#10 ← phi( bitmap_line::@18/(word) bitmap_line::x2#11 )
  (word) bitmap_line::sx#8 ← phi( bitmap_line::@18/(word) bitmap_line::sx#0 )
  (word) bitmap_line::x#17 ← phi( bitmap_line::@18/(word) bitmap_line::x#18 )
  (word) bitmap_line::y#17 ← phi( bitmap_line::@18/(word) bitmap_line::y#18 )
  (word) bitmap_line::dy#1 ← phi( bitmap_line::@18/(word) bitmap_line::dy#6 )
  (word) bitmap_line::dx#2 ← phi( bitmap_line::@18/(word) bitmap_line::dx#7 )
  (word) sgn_u16::return#6 ← phi( bitmap_line::@18/(word) sgn_u16::return#1 )
  (word~) bitmap_line::$11 ← (word) sgn_u16::return#6
  (word) bitmap_line::sy#0 ← (word~) bitmap_line::$11
  (bool~) bitmap_line::$12 ← (word) bitmap_line::dx#2 > (word) bitmap_line::dy#1
  if((bool~) bitmap_line::$12) goto bitmap_line::@2
  to:bitmap_line::@6
bitmap_line::@4: scope:[bitmap_line]  from bitmap_line::@17
  (word) bitmap_line::x#3 ← phi( bitmap_line::@17/(word) bitmap_line::x#10 )
  (word) bitmap_line::y#3 ← phi( bitmap_line::@17/(word) bitmap_line::y#10 )
  (byte~) bitmap_line::$15 ← ((byte)) (word) bitmap_line::y#3
  (word) bitmap_plot::x#0 ← (word) bitmap_line::x#3
  (byte) bitmap_plot::y#0 ← (byte~) bitmap_line::$15
  call bitmap_plot 
  to:bitmap_line::@20
bitmap_line::@20: scope:[bitmap_line]  from bitmap_line::@4
  to:bitmap_line::@return
bitmap_line::@return: scope:[bitmap_line]  from bitmap_line::@20 bitmap_line::@22
  return 
  to:@return
bitmap_line::@2: scope:[bitmap_line]  from bitmap_line::@19
  (word) bitmap_line::sy#10 ← phi( bitmap_line::@19/(word) bitmap_line::sy#0 )
  (word) bitmap_line::x2#9 ← phi( bitmap_line::@19/(word) bitmap_line::x2#10 )
  (word) bitmap_line::dx#13 ← phi( bitmap_line::@19/(word) bitmap_line::dx#2 )
  (word) bitmap_line::sx#7 ← phi( bitmap_line::@19/(word) bitmap_line::sx#8 )
  (word) bitmap_line::x#14 ← phi( bitmap_line::@19/(word) bitmap_line::x#17 )
  (word) bitmap_line::y#14 ← phi( bitmap_line::@19/(word) bitmap_line::y#17 )
  (word) bitmap_line::dy#2 ← phi( bitmap_line::@19/(word) bitmap_line::dy#1 )
  (number~) bitmap_line::$23 ← (word) bitmap_line::dy#2 / (number) 2
  (word) bitmap_line::e1#0 ← (number~) bitmap_line::$23
  to:bitmap_line::@12
bitmap_line::@6: scope:[bitmap_line]  from bitmap_line::@19
  (word) bitmap_line::sx#9 ← phi( bitmap_line::@19/(word) bitmap_line::sx#8 )
  (word) bitmap_line::y2#10 ← phi( bitmap_line::@19/(word) bitmap_line::y2#11 )
  (word) bitmap_line::dy#10 ← phi( bitmap_line::@19/(word) bitmap_line::dy#1 )
  (word) bitmap_line::sy#5 ← phi( bitmap_line::@19/(word) bitmap_line::sy#0 )
  (word) bitmap_line::x#11 ← phi( bitmap_line::@19/(word) bitmap_line::x#17 )
  (word) bitmap_line::y#11 ← phi( bitmap_line::@19/(word) bitmap_line::y#17 )
  (word) bitmap_line::dx#3 ← phi( bitmap_line::@19/(word) bitmap_line::dx#2 )
  (number~) bitmap_line::$17 ← (word) bitmap_line::dx#3 / (number) 2
  (word) bitmap_line::e#0 ← (number~) bitmap_line::$17
  to:bitmap_line::@7
bitmap_line::@7: scope:[bitmap_line]  from bitmap_line::@6 bitmap_line::@8
  (word) bitmap_line::sx#5 ← phi( bitmap_line::@6/(word) bitmap_line::sx#9 bitmap_line::@8/(word) bitmap_line::sx#10 )
  (word) bitmap_line::y2#9 ← phi( bitmap_line::@6/(word) bitmap_line::y2#10 bitmap_line::@8/(word) bitmap_line::y2#3 )
  (word) bitmap_line::dy#7 ← phi( bitmap_line::@6/(word) bitmap_line::dy#10 bitmap_line::@8/(word) bitmap_line::dy#11 )
  (word) bitmap_line::dx#8 ← phi( bitmap_line::@6/(word) bitmap_line::dx#3 bitmap_line::@8/(word) bitmap_line::dx#11 )
  (word) bitmap_line::e#5 ← phi( bitmap_line::@6/(word) bitmap_line::e#0 bitmap_line::@8/(word) bitmap_line::e#6 )
  (word) bitmap_line::sy#3 ← phi( bitmap_line::@6/(word) bitmap_line::sy#5 bitmap_line::@8/(word) bitmap_line::sy#6 )
  (word) bitmap_line::x#4 ← phi( bitmap_line::@6/(word) bitmap_line::x#11 bitmap_line::@8/(word) bitmap_line::x#12 )
  (word) bitmap_line::y#4 ← phi( bitmap_line::@6/(word) bitmap_line::y#11 bitmap_line::@8/(word) bitmap_line::y#6 )
  (byte~) bitmap_line::$18 ← ((byte)) (word) bitmap_line::y#4
  (word) bitmap_plot::x#1 ← (word) bitmap_line::x#4
  (byte) bitmap_plot::y#1 ← (byte~) bitmap_line::$18
  call bitmap_plot 
  to:bitmap_line::@21
bitmap_line::@21: scope:[bitmap_line]  from bitmap_line::@7
  (word) bitmap_line::sx#3 ← phi( bitmap_line::@7/(word) bitmap_line::sx#5 )
  (word) bitmap_line::x#13 ← phi( bitmap_line::@7/(word) bitmap_line::x#4 )
  (word) bitmap_line::y2#6 ← phi( bitmap_line::@7/(word) bitmap_line::y2#9 )
  (word) bitmap_line::dy#3 ← phi( bitmap_line::@7/(word) bitmap_line::dy#7 )
  (word) bitmap_line::dx#4 ← phi( bitmap_line::@7/(word) bitmap_line::dx#8 )
  (word) bitmap_line::e#3 ← phi( bitmap_line::@7/(word) bitmap_line::e#5 )
  (word) bitmap_line::sy#1 ← phi( bitmap_line::@7/(word) bitmap_line::sy#3 )
  (word) bitmap_line::y#5 ← phi( bitmap_line::@7/(word) bitmap_line::y#4 )
  (word) bitmap_line::y#1 ← (word) bitmap_line::y#5 + (word) bitmap_line::sy#1
  (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#4
  (bool~) bitmap_line::$20 ← (word) bitmap_line::dy#3 < (word) bitmap_line::e#1
  (bool~) bitmap_line::$21 ← ! (bool~) bitmap_line::$20
  if((bool~) bitmap_line::$21) goto bitmap_line::@8
  to:bitmap_line::@9
bitmap_line::@8: scope:[bitmap_line]  from bitmap_line::@21 bitmap_line::@9
  (word) bitmap_line::sx#10 ← phi( bitmap_line::@21/(word) bitmap_line::sx#3 bitmap_line::@9/(word) bitmap_line::sx#1 )
  (word) bitmap_line::dy#11 ← phi( bitmap_line::@21/(word) bitmap_line::dy#3 bitmap_line::@9/(word) bitmap_line::dy#4 )
  (word) bitmap_line::dx#11 ← phi( bitmap_line::@21/(word) bitmap_line::dx#4 bitmap_line::@9/(word) bitmap_line::dx#14 )
  (word) bitmap_line::e#6 ← phi( bitmap_line::@21/(word) bitmap_line::e#1 bitmap_line::@9/(word) bitmap_line::e#2 )
  (word) bitmap_line::sy#6 ← phi( bitmap_line::@21/(word) bitmap_line::sy#1 bitmap_line::@9/(word) bitmap_line::sy#8 )
  (word) bitmap_line::x#12 ← phi( bitmap_line::@21/(word) bitmap_line::x#13 bitmap_line::@9/(word) bitmap_line::x#1 )
  (word) bitmap_line::y2#3 ← phi( bitmap_line::@21/(word) bitmap_line::y2#6 bitmap_line::@9/(word) bitmap_line::y2#7 )
  (word) bitmap_line::y#6 ← phi( bitmap_line::@21/(word) bitmap_line::y#1 bitmap_line::@9/(word) bitmap_line::y#12 )
  (bool~) bitmap_line::$22 ← (word) bitmap_line::y#6 != (word) bitmap_line::y2#3
  if((bool~) bitmap_line::$22) goto bitmap_line::@7
  to:bitmap_line::@3
bitmap_line::@9: scope:[bitmap_line]  from bitmap_line::@21
  (word) bitmap_line::dx#14 ← phi( bitmap_line::@21/(word) bitmap_line::dx#4 )
  (word) bitmap_line::sy#8 ← phi( bitmap_line::@21/(word) bitmap_line::sy#1 )
  (word) bitmap_line::y2#7 ← phi( bitmap_line::@21/(word) bitmap_line::y2#6 )
  (word) bitmap_line::y#12 ← phi( bitmap_line::@21/(word) bitmap_line::y#1 )
  (word) bitmap_line::dy#4 ← phi( bitmap_line::@21/(word) bitmap_line::dy#3 )
  (word) bitmap_line::e#4 ← phi( bitmap_line::@21/(word) bitmap_line::e#1 )
  (word) bitmap_line::sx#1 ← phi( bitmap_line::@21/(word) bitmap_line::sx#3 )
  (word) bitmap_line::x#5 ← phi( bitmap_line::@21/(word) bitmap_line::x#13 )
  (word) bitmap_line::x#1 ← (word) bitmap_line::x#5 + (word) bitmap_line::sx#1
  (word) bitmap_line::e#2 ← (word) bitmap_line::e#4 - (word) bitmap_line::dy#4
  to:bitmap_line::@8
bitmap_line::@3: scope:[bitmap_line]  from bitmap_line::@13 bitmap_line::@8
  (word) bitmap_line::x#6 ← phi( bitmap_line::@13/(word) bitmap_line::x#9 bitmap_line::@8/(word) bitmap_line::x#12 )
  (word) bitmap_line::y#7 ← phi( bitmap_line::@13/(word) bitmap_line::y#13 bitmap_line::@8/(word) bitmap_line::y#6 )
  (byte~) bitmap_line::$13 ← ((byte)) (word) bitmap_line::y#7
  (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6
  (byte) bitmap_plot::y#2 ← (byte~) bitmap_line::$13
  call bitmap_plot 
  to:bitmap_line::@22
bitmap_line::@22: scope:[bitmap_line]  from bitmap_line::@3
  to:bitmap_line::@return
bitmap_line::@12: scope:[bitmap_line]  from bitmap_line::@13 bitmap_line::@2
  (word) bitmap_line::sy#7 ← phi( bitmap_line::@13/(word) bitmap_line::sy#9 bitmap_line::@2/(word) bitmap_line::sy#10 )
  (word) bitmap_line::x2#8 ← phi( bitmap_line::@13/(word) bitmap_line::x2#3 bitmap_line::@2/(word) bitmap_line::x2#9 )
  (word) bitmap_line::dx#9 ← phi( bitmap_line::@13/(word) bitmap_line::dx#12 bitmap_line::@2/(word) bitmap_line::dx#13 )
  (word) bitmap_line::dy#8 ← phi( bitmap_line::@13/(word) bitmap_line::dy#12 bitmap_line::@2/(word) bitmap_line::dy#2 )
  (word) bitmap_line::e1#5 ← phi( bitmap_line::@13/(word) bitmap_line::e1#6 bitmap_line::@2/(word) bitmap_line::e1#0 )
  (word) bitmap_line::sx#4 ← phi( bitmap_line::@13/(word) bitmap_line::sx#6 bitmap_line::@2/(word) bitmap_line::sx#7 )
  (word) bitmap_line::x#7 ← phi( bitmap_line::@13/(word) bitmap_line::x#9 bitmap_line::@2/(word) bitmap_line::x#14 )
  (word) bitmap_line::y#8 ← phi( bitmap_line::@13/(word) bitmap_line::y#13 bitmap_line::@2/(word) bitmap_line::y#14 )
  (byte~) bitmap_line::$24 ← ((byte)) (word) bitmap_line::y#8
  (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7
  (byte) bitmap_plot::y#3 ← (byte~) bitmap_line::$24
  call bitmap_plot 
  to:bitmap_line::@23
bitmap_line::@23: scope:[bitmap_line]  from bitmap_line::@12
  (word) bitmap_line::sy#4 ← phi( bitmap_line::@12/(word) bitmap_line::sy#7 )
  (word) bitmap_line::y#15 ← phi( bitmap_line::@12/(word) bitmap_line::y#8 )
  (word) bitmap_line::x2#6 ← phi( bitmap_line::@12/(word) bitmap_line::x2#8 )
  (word) bitmap_line::dx#5 ← phi( bitmap_line::@12/(word) bitmap_line::dx#9 )
  (word) bitmap_line::dy#5 ← phi( bitmap_line::@12/(word) bitmap_line::dy#8 )
  (word) bitmap_line::e1#3 ← phi( bitmap_line::@12/(word) bitmap_line::e1#5 )
  (word) bitmap_line::sx#2 ← phi( bitmap_line::@12/(word) bitmap_line::sx#4 )
  (word) bitmap_line::x#8 ← phi( bitmap_line::@12/(word) bitmap_line::x#7 )
  (word) bitmap_line::x#2 ← (word) bitmap_line::x#8 + (word) bitmap_line::sx#2
  (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#5
  (bool~) bitmap_line::$26 ← (word) bitmap_line::dx#5 < (word) bitmap_line::e1#1
  (bool~) bitmap_line::$27 ← ! (bool~) bitmap_line::$26
  if((bool~) bitmap_line::$27) goto bitmap_line::@13
  to:bitmap_line::@14
bitmap_line::@13: scope:[bitmap_line]  from bitmap_line::@14 bitmap_line::@23
  (word) bitmap_line::sy#9 ← phi( bitmap_line::@14/(word) bitmap_line::sy#2 bitmap_line::@23/(word) bitmap_line::sy#4 )
  (word) bitmap_line::dx#12 ← phi( bitmap_line::@14/(word) bitmap_line::dx#6 bitmap_line::@23/(word) bitmap_line::dx#5 )
  (word) bitmap_line::dy#12 ← phi( bitmap_line::@14/(word) bitmap_line::dy#13 bitmap_line::@23/(word) bitmap_line::dy#5 )
  (word) bitmap_line::e1#6 ← phi( bitmap_line::@14/(word) bitmap_line::e1#2 bitmap_line::@23/(word) bitmap_line::e1#1 )
  (word) bitmap_line::sx#6 ← phi( bitmap_line::@14/(word) bitmap_line::sx#11 bitmap_line::@23/(word) bitmap_line::sx#2 )
  (word) bitmap_line::y#13 ← phi( bitmap_line::@14/(word) bitmap_line::y#2 bitmap_line::@23/(word) bitmap_line::y#15 )
  (word) bitmap_line::x2#3 ← phi( bitmap_line::@14/(word) bitmap_line::x2#5 bitmap_line::@23/(word) bitmap_line::x2#6 )
  (word) bitmap_line::x#9 ← phi( bitmap_line::@14/(word) bitmap_line::x#15 bitmap_line::@23/(word) bitmap_line::x#2 )
  (bool~) bitmap_line::$28 ← (word) bitmap_line::x#9 != (word) bitmap_line::x2#3
  if((bool~) bitmap_line::$28) goto bitmap_line::@12
  to:bitmap_line::@3
bitmap_line::@14: scope:[bitmap_line]  from bitmap_line::@23
  (word) bitmap_line::dy#13 ← phi( bitmap_line::@23/(word) bitmap_line::dy#5 )
  (word) bitmap_line::sx#11 ← phi( bitmap_line::@23/(word) bitmap_line::sx#2 )
  (word) bitmap_line::x2#5 ← phi( bitmap_line::@23/(word) bitmap_line::x2#6 )
  (word) bitmap_line::x#15 ← phi( bitmap_line::@23/(word) bitmap_line::x#2 )
  (word) bitmap_line::dx#6 ← phi( bitmap_line::@23/(word) bitmap_line::dx#5 )
  (word) bitmap_line::e1#4 ← phi( bitmap_line::@23/(word) bitmap_line::e1#1 )
  (word) bitmap_line::sy#2 ← phi( bitmap_line::@23/(word) bitmap_line::sy#4 )
  (word) bitmap_line::y#9 ← phi( bitmap_line::@23/(word) bitmap_line::y#15 )
  (word) bitmap_line::y#2 ← (word) bitmap_line::y#9 + (word) bitmap_line::sy#2
  (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#4 - (word) bitmap_line::dx#6
  to:bitmap_line::@13

(word()) abs_u16((word) abs_u16::w)
abs_u16: scope:[abs_u16]  from bitmap_line bitmap_line::@16
  (word) abs_u16::w#2 ← phi( bitmap_line/(word) abs_u16::w#0 bitmap_line::@16/(word) abs_u16::w#1 )
  (byte~) abs_u16::$0 ← > (word) abs_u16::w#2
  (number~) abs_u16::$1 ← (byte~) abs_u16::$0 & (number) $80
  (bool~) abs_u16::$3 ← (number) 0 != (number~) abs_u16::$1
  if((bool~) abs_u16::$3) goto abs_u16::@1
  to:abs_u16::@3
abs_u16::@1: scope:[abs_u16]  from abs_u16
  (word) abs_u16::w#3 ← phi( abs_u16/(word) abs_u16::w#2 )
  (word~) abs_u16::$2 ← - (word) abs_u16::w#3
  (word) abs_u16::return#2 ← (word~) abs_u16::$2
  to:abs_u16::@return
abs_u16::@3: scope:[abs_u16]  from abs_u16
  (word) abs_u16::w#4 ← phi( abs_u16/(word) abs_u16::w#2 )
  (word) abs_u16::return#3 ← (word) abs_u16::w#4
  to:abs_u16::@return
abs_u16::@return: scope:[abs_u16]  from abs_u16::@1 abs_u16::@3
  (word) abs_u16::return#7 ← phi( abs_u16::@1/(word) abs_u16::return#2 abs_u16::@3/(word) abs_u16::return#3 )
  (word) abs_u16::return#4 ← (word) abs_u16::return#7
  return 
  to:@return

(word()) sgn_u16((word) sgn_u16::w)
sgn_u16: scope:[sgn_u16]  from bitmap_line::@1 bitmap_line::@18
  (word) sgn_u16::w#2 ← phi( bitmap_line::@1/(word) sgn_u16::w#0 bitmap_line::@18/(word) sgn_u16::w#1 )
  (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2
  (number~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (number) $80
  (bool~) sgn_u16::$2 ← (number) 0 != (number~) sgn_u16::$1
  if((bool~) sgn_u16::$2) goto sgn_u16::@1
  to:sgn_u16::@3
sgn_u16::@1: scope:[sgn_u16]  from sgn_u16
  (word) sgn_u16::return#2 ← (number) -1
  to:sgn_u16::@return
sgn_u16::@3: scope:[sgn_u16]  from sgn_u16
  (word) sgn_u16::return#3 ← (number) 1
  to:sgn_u16::@return
sgn_u16::@return: scope:[sgn_u16]  from sgn_u16::@1 sgn_u16::@3
  (word) sgn_u16::return#7 ← phi( sgn_u16::@1/(word) sgn_u16::return#2 sgn_u16::@3/(word) sgn_u16::return#3 )
  (word) sgn_u16::return#4 ← (word) sgn_u16::return#7
  return 
  to:@return

(void()) main()
main: scope:[main]  from @48
  (byte*) bitmap_screen#12 ← phi( @48/(byte*) bitmap_screen#14 )
  (byte*) bitmap_gfx#13 ← phi( @48/(byte*) bitmap_gfx#15 )
  (byte*) bitmap_init::gfx#0 ← (const byte*) BITMAP
  (byte*) bitmap_init::screen#0 ← (const byte*) SCREEN
  call bitmap_init 
  to:main::@14
main::@14: scope:[main]  from main
  (byte*) bitmap_screen#8 ← phi( main/(byte*) bitmap_screen#2 )
  (byte*) bitmap_gfx#8 ← phi( main/(byte*) bitmap_gfx#2 )
  (byte*) bitmap_gfx#3 ← (byte*) bitmap_gfx#8
  (byte*) bitmap_screen#3 ← (byte*) bitmap_screen#8
  (byte) bitmap_clear::bgcol#0 ← (const byte) BLACK
  (byte) bitmap_clear::fgcol#0 ← (const byte) WHITE
  call bitmap_clear 
  to:main::@15
main::@15: scope:[main]  from main::@14
  (byte*) bitmap_screen#28 ← phi( main::@14/(byte*) bitmap_screen#3 )
  (byte*) bitmap_gfx#29 ← phi( main::@14/(byte*) bitmap_gfx#3 )
  *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(number) 3
  (byte*) main::toD0181_screen#0 ← (const byte*) SCREEN
  (byte*) main::toD0181_gfx#0 ← (const byte*) BITMAP
  to:main::toD0181
main::toD0181: scope:[main]  from main::@15
  (byte*) bitmap_screen#27 ← phi( main::@15/(byte*) bitmap_screen#28 )
  (byte*) bitmap_gfx#28 ← phi( main::@15/(byte*) bitmap_gfx#29 )
  (byte*) main::toD0181_gfx#1 ← phi( main::@15/(byte*) main::toD0181_gfx#0 )
  (byte*) main::toD0181_screen#1 ← phi( main::@15/(byte*) main::toD0181_screen#0 )
  (word~) main::toD0181_$0 ← ((word)) (byte*) main::toD0181_screen#1
  (number~) main::toD0181_$1 ← (word~) main::toD0181_$0 & (number) $3fff
  (number~) main::toD0181_$2 ← (number~) main::toD0181_$1 * (number) 4
  (number~) main::toD0181_$3 ← > (number~) main::toD0181_$2
  (word~) main::toD0181_$4 ← ((word)) (byte*) main::toD0181_gfx#1
  (byte~) main::toD0181_$5 ← > (word~) main::toD0181_$4
  (number~) main::toD0181_$6 ← (byte~) main::toD0181_$5 / (number) 4
  (number~) main::toD0181_$7 ← (number~) main::toD0181_$6 & (number) $f
  (number~) main::toD0181_$8 ← (number~) main::toD0181_$3 | (number~) main::toD0181_$7
  (byte) main::toD0181_return#0 ← (number~) main::toD0181_$8
  to:main::toD0181_@return
main::toD0181_@return: scope:[main]  from main::toD0181
  (byte*) bitmap_screen#23 ← phi( main::toD0181/(byte*) bitmap_screen#27 )
  (byte*) bitmap_gfx#24 ← phi( main::toD0181/(byte*) bitmap_gfx#28 )
  (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::@13
main::@13: scope:[main]  from main::toD0181_@return
  (byte*) bitmap_screen#20 ← phi( main::toD0181_@return/(byte*) bitmap_screen#23 )
  (byte*) bitmap_gfx#21 ← phi( main::toD0181_@return/(byte*) bitmap_gfx#24 )
  (byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 )
  (byte~) main::$2 ← (byte) main::toD0181_return#3
  *((const byte*) D018) ← (byte~) main::$2
  (byte) main::i#0 ← (byte) 0
  (byte) main::a#0 ← (byte) 0
  to:main::@1
main::@1: scope:[main]  from main::@13 main::@16
  (byte*) bitmap_screen#17 ← phi( main::@13/(byte*) bitmap_screen#20 main::@16/(byte*) bitmap_screen#21 )
  (byte*) bitmap_gfx#18 ← phi( main::@13/(byte*) bitmap_gfx#21 main::@16/(byte*) bitmap_gfx#22 )
  (byte) main::a#4 ← phi( main::@13/(byte) main::a#0 main::@16/(byte) main::a#1 )
  (byte) main::i#2 ← phi( main::@13/(byte) main::i#0 main::@16/(byte) main::i#1 )
  (bool~) main::$3 ← (byte) main::i#2 != (number) 8
  if((bool~) main::$3) goto main::@2
  to:main::@7
main::@2: scope:[main]  from main::@1
  (byte*) bitmap_screen#24 ← phi( main::@1/(byte*) bitmap_screen#17 )
  (byte*) bitmap_gfx#25 ← phi( main::@1/(byte*) bitmap_gfx#18 )
  (byte) main::i#4 ← phi( main::@1/(byte) main::i#2 )
  (byte) main::a#2 ← phi( main::@1/(byte) main::a#4 )
  (word~) main::$4 ← ((word)) *((const byte*) COSTAB + (byte) main::a#2)
  (number~) main::$5 ← (word~) main::$4 + (number) $78
  (word~) main::$6 ← ((word)) *((const byte*) SINTAB + (byte) main::a#2)
  (number~) main::$7 ← (byte) main::a#2 + (number) $20
  (word~) main::$8 ← ((word)) *((const byte*) COSTAB + (number~) main::$7)
  (number~) main::$9 ← (word~) main::$8 + (number) $78
  (number~) main::$10 ← (byte) main::a#2 + (number) $20
  (word~) main::$11 ← ((word)) *((const byte*) SINTAB + (number~) main::$10)
  (word) bitmap_line::x1#0 ← (number~) main::$5
  (word) bitmap_line::y1#0 ← (word~) main::$6
  (word) bitmap_line::x2#0 ← (number~) main::$9
  (word) bitmap_line::y2#0 ← (word~) main::$11
  call bitmap_line 
  to:main::@16
main::@16: scope:[main]  from main::@2
  (byte*) bitmap_screen#21 ← phi( main::@2/(byte*) bitmap_screen#24 )
  (byte*) bitmap_gfx#22 ← phi( main::@2/(byte*) bitmap_gfx#25 )
  (byte) main::i#3 ← phi( main::@2/(byte) main::i#4 )
  (byte) main::a#3 ← phi( main::@2/(byte) main::a#2 )
  (byte) main::a#1 ← (byte) main::a#3 + (number) $20
  (byte) main::i#1 ← ++ (byte) main::i#3
  to:main::@1
main::@7: scope:[main]  from main::@1 main::@8
  (byte*) bitmap_screen#13 ← phi( main::@1/(byte*) bitmap_screen#17 main::@8/(byte*) bitmap_screen#18 )
  (byte*) bitmap_gfx#14 ← phi( main::@1/(byte*) bitmap_gfx#18 main::@8/(byte*) bitmap_gfx#19 )
  if(true) goto main::@8
  to:main::@return
main::@8: scope:[main]  from main::@7
  (byte*) bitmap_screen#18 ← phi( main::@7/(byte*) bitmap_screen#13 )
  (byte*) bitmap_gfx#19 ← phi( main::@7/(byte*) bitmap_gfx#14 )
  (byte*~) main::$16 ← (const byte*) SCREEN + (number) $3e7
  *((byte*~) main::$16) ← ++ *((byte*~) main::$16)
  to:main::@7
main::@return: scope:[main]  from main::@7
  (byte*) bitmap_screen#9 ← phi( main::@7/(byte*) bitmap_screen#13 )
  (byte*) bitmap_gfx#9 ← phi( main::@7/(byte*) bitmap_gfx#14 )
  (byte*) bitmap_gfx#4 ← (byte*) bitmap_gfx#9
  (byte*) bitmap_screen#4 ← (byte*) bitmap_screen#9
  return 
  to:@return
@48: scope:[]  from @9
  (byte*) bitmap_screen#14 ← phi( @9/(byte*) bitmap_screen#0 )
  (byte*) bitmap_gfx#15 ← phi( @9/(byte*) bitmap_gfx#0 )
  call main 
  to:@49
@49: scope:[]  from @48
  (byte*) bitmap_screen#10 ← phi( @48/(byte*) bitmap_screen#4 )
  (byte*) bitmap_gfx#10 ← phi( @48/(byte*) bitmap_gfx#4 )
  (byte*) bitmap_gfx#5 ← (byte*) bitmap_gfx#10
  (byte*) bitmap_screen#5 ← (byte*) bitmap_screen#10
  to:@end
@end: scope:[]  from @49

SYMBOL TABLE SSA
(label) @48
(label) @49
(label) @9
(label) @begin
(label) @end
(const byte*) BITMAP = (byte*)(number) $2000
(const byte) BLACK = (byte) 0
(const byte*) COSTAB = (const byte*) SINTAB+(number) $40
(const byte*) D011 = (byte*)(number) $d011
(const byte*) D018 = (byte*)(number) $d018
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) SCREEN = (byte*)(number) $400
(const byte*) SINTAB[(number) $180]  = kickasm {{ .fill $180, 99.5+99.5*sin(i*2*PI/256)  }}
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_RSEL = (byte) 8
(const byte) WHITE = (byte) 1
(word()) abs_u16((word) abs_u16::w)
(byte~) abs_u16::$0
(number~) abs_u16::$1
(word~) abs_u16::$2
(bool~) abs_u16::$3
(label) abs_u16::@1
(label) abs_u16::@3
(label) abs_u16::@return
(word) abs_u16::return
(word) abs_u16::return#0
(word) abs_u16::return#1
(word) abs_u16::return#2
(word) abs_u16::return#3
(word) abs_u16::return#4
(word) abs_u16::return#5
(word) abs_u16::return#6
(word) abs_u16::return#7
(word) abs_u16::w
(word) abs_u16::w#0
(word) abs_u16::w#1
(word) abs_u16::w#2
(word) abs_u16::w#3
(word) abs_u16::w#4
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
(number~) bitmap_clear::$0
(number~) bitmap_clear::$1
(label) bitmap_clear::@1
(label) bitmap_clear::@2
(label) bitmap_clear::@return
(byte) bitmap_clear::bgcol
(byte) bitmap_clear::bgcol#0
(byte) bitmap_clear::bgcol#1
(byte) bitmap_clear::col
(byte) bitmap_clear::col#0
(byte) bitmap_clear::fgcol
(byte) bitmap_clear::fgcol#0
(byte) bitmap_clear::fgcol#1
(byte*) bitmap_gfx
(byte*) bitmap_gfx#0
(byte*) bitmap_gfx#1
(byte*) bitmap_gfx#10
(byte*) bitmap_gfx#11
(byte*) bitmap_gfx#12
(byte*) bitmap_gfx#13
(byte*) bitmap_gfx#14
(byte*) bitmap_gfx#15
(byte*) bitmap_gfx#16
(byte*) bitmap_gfx#17
(byte*) bitmap_gfx#18
(byte*) bitmap_gfx#19
(byte*) bitmap_gfx#2
(byte*) bitmap_gfx#20
(byte*) bitmap_gfx#21
(byte*) bitmap_gfx#22
(byte*) bitmap_gfx#23
(byte*) bitmap_gfx#24
(byte*) bitmap_gfx#25
(byte*) bitmap_gfx#26
(byte*) bitmap_gfx#27
(byte*) bitmap_gfx#28
(byte*) bitmap_gfx#29
(byte*) bitmap_gfx#3
(byte*) bitmap_gfx#4
(byte*) bitmap_gfx#5
(byte*) bitmap_gfx#6
(byte*) bitmap_gfx#7
(byte*) bitmap_gfx#8
(byte*) bitmap_gfx#9
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
(bool~) bitmap_init::$0
(bool~) bitmap_init::$1
(byte*~) bitmap_init::$10
(bool~) bitmap_init::$11
(bool~) bitmap_init::$2
(number~) bitmap_init::$3
(byte~) bitmap_init::$4
(number~) bitmap_init::$5
(byte~) bitmap_init::$6
(number~) bitmap_init::$7
(bool~) bitmap_init::$8
(bool~) bitmap_init::$9
(label) bitmap_init::@1
(label) bitmap_init::@2
(label) bitmap_init::@3
(label) bitmap_init::@4
(label) bitmap_init::@5
(label) bitmap_init::@6
(label) bitmap_init::@7
(label) bitmap_init::@return
(byte) bitmap_init::bits
(byte) bitmap_init::bits#0
(byte) bitmap_init::bits#1
(byte) bitmap_init::bits#2
(byte) bitmap_init::bits#3
(byte) bitmap_init::bits#4
(byte*) bitmap_init::gfx
(byte*) bitmap_init::gfx#0
(byte*) bitmap_init::gfx#1
(byte*) bitmap_init::gfx#2
(byte*) bitmap_init::gfx#3
(byte*) bitmap_init::gfx#4
(byte*) bitmap_init::gfx#5
(byte*) bitmap_init::screen
(byte*) bitmap_init::screen#0
(byte*) bitmap_init::screen#1
(byte) bitmap_init::x
(byte) bitmap_init::x#0
(byte) bitmap_init::x#1
(byte) bitmap_init::x#2
(byte) bitmap_init::x#3
(byte) bitmap_init::x#4
(byte) bitmap_init::y
(byte) bitmap_init::y#0
(byte) bitmap_init::y#1
(byte) bitmap_init::y#2
(byte) bitmap_init::y#3
(byte) bitmap_init::y#4
(byte*) bitmap_init::yoffs
(byte*) bitmap_init::yoffs#0
(byte*) bitmap_init::yoffs#1
(byte*) bitmap_init::yoffs#2
(byte*) bitmap_init::yoffs#3
(byte*) bitmap_init::yoffs#4
(void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2)
(word~) bitmap_line::$0
(word~) bitmap_line::$1
(word~) bitmap_line::$10
(word~) bitmap_line::$11
(bool~) bitmap_line::$12
(byte~) bitmap_line::$13
(byte~) bitmap_line::$15
(number~) bitmap_line::$17
(byte~) bitmap_line::$18
(word~) bitmap_line::$2
(bool~) bitmap_line::$20
(bool~) bitmap_line::$21
(bool~) bitmap_line::$22
(number~) bitmap_line::$23
(byte~) bitmap_line::$24
(bool~) bitmap_line::$26
(bool~) bitmap_line::$27
(bool~) bitmap_line::$28
(word~) bitmap_line::$3
(bool~) bitmap_line::$4
(bool~) bitmap_line::$5
(bool~) bitmap_line::$6
(bool~) bitmap_line::$7
(word~) bitmap_line::$8
(word~) bitmap_line::$9
(label) bitmap_line::@1
(label) bitmap_line::@12
(label) bitmap_line::@13
(label) bitmap_line::@14
(label) bitmap_line::@16
(label) bitmap_line::@17
(label) bitmap_line::@18
(label) bitmap_line::@19
(label) bitmap_line::@2
(label) bitmap_line::@20
(label) bitmap_line::@21
(label) bitmap_line::@22
(label) bitmap_line::@23
(label) bitmap_line::@3
(label) bitmap_line::@4
(label) bitmap_line::@6
(label) bitmap_line::@7
(label) bitmap_line::@8
(label) bitmap_line::@9
(label) bitmap_line::@return
(word) bitmap_line::dx
(word) bitmap_line::dx#0
(word) bitmap_line::dx#1
(word) bitmap_line::dx#10
(word) bitmap_line::dx#11
(word) bitmap_line::dx#12
(word) bitmap_line::dx#13
(word) bitmap_line::dx#14
(word) bitmap_line::dx#2
(word) bitmap_line::dx#3
(word) bitmap_line::dx#4
(word) bitmap_line::dx#5
(word) bitmap_line::dx#6
(word) bitmap_line::dx#7
(word) bitmap_line::dx#8
(word) bitmap_line::dx#9
(word) bitmap_line::dy
(word) bitmap_line::dy#0
(word) bitmap_line::dy#1
(word) bitmap_line::dy#10
(word) bitmap_line::dy#11
(word) bitmap_line::dy#12
(word) bitmap_line::dy#13
(word) bitmap_line::dy#2
(word) bitmap_line::dy#3
(word) bitmap_line::dy#4
(word) bitmap_line::dy#5
(word) bitmap_line::dy#6
(word) bitmap_line::dy#7
(word) bitmap_line::dy#8
(word) bitmap_line::dy#9
(word) bitmap_line::e
(word) bitmap_line::e#0
(word) bitmap_line::e#1
(word) bitmap_line::e#2
(word) bitmap_line::e#3
(word) bitmap_line::e#4
(word) bitmap_line::e#5
(word) bitmap_line::e#6
(word) bitmap_line::e1
(word) bitmap_line::e1#0
(word) bitmap_line::e1#1
(word) bitmap_line::e1#2
(word) bitmap_line::e1#3
(word) bitmap_line::e1#4
(word) bitmap_line::e1#5
(word) bitmap_line::e1#6
(word) bitmap_line::sx
(word) bitmap_line::sx#0
(word) bitmap_line::sx#1
(word) bitmap_line::sx#10
(word) bitmap_line::sx#11
(word) bitmap_line::sx#2
(word) bitmap_line::sx#3
(word) bitmap_line::sx#4
(word) bitmap_line::sx#5
(word) bitmap_line::sx#6
(word) bitmap_line::sx#7
(word) bitmap_line::sx#8
(word) bitmap_line::sx#9
(word) bitmap_line::sy
(word) bitmap_line::sy#0
(word) bitmap_line::sy#1
(word) bitmap_line::sy#10
(word) bitmap_line::sy#2
(word) bitmap_line::sy#3
(word) bitmap_line::sy#4
(word) bitmap_line::sy#5
(word) bitmap_line::sy#6
(word) bitmap_line::sy#7
(word) bitmap_line::sy#8
(word) bitmap_line::sy#9
(word) bitmap_line::x
(word) bitmap_line::x#0
(word) bitmap_line::x#1
(word) bitmap_line::x#10
(word) bitmap_line::x#11
(word) bitmap_line::x#12
(word) bitmap_line::x#13
(word) bitmap_line::x#14
(word) bitmap_line::x#15
(word) bitmap_line::x#16
(word) bitmap_line::x#17
(word) bitmap_line::x#18
(word) bitmap_line::x#19
(word) bitmap_line::x#2
(word) bitmap_line::x#3
(word) bitmap_line::x#4
(word) bitmap_line::x#5
(word) bitmap_line::x#6
(word) bitmap_line::x#7
(word) bitmap_line::x#8
(word) bitmap_line::x#9
(word) bitmap_line::x1
(word) bitmap_line::x1#0
(word) bitmap_line::x1#1
(word) bitmap_line::x1#2
(word) bitmap_line::x1#3
(word) bitmap_line::x1#4
(word) bitmap_line::x2
(word) bitmap_line::x2#0
(word) bitmap_line::x2#1
(word) bitmap_line::x2#10
(word) bitmap_line::x2#11
(word) bitmap_line::x2#2
(word) bitmap_line::x2#3
(word) bitmap_line::x2#4
(word) bitmap_line::x2#5
(word) bitmap_line::x2#6
(word) bitmap_line::x2#7
(word) bitmap_line::x2#8
(word) bitmap_line::x2#9
(word) bitmap_line::y
(word) bitmap_line::y#0
(word) bitmap_line::y#1
(word) bitmap_line::y#10
(word) bitmap_line::y#11
(word) bitmap_line::y#12
(word) bitmap_line::y#13
(word) bitmap_line::y#14
(word) bitmap_line::y#15
(word) bitmap_line::y#16
(word) bitmap_line::y#17
(word) bitmap_line::y#18
(word) bitmap_line::y#19
(word) bitmap_line::y#2
(word) bitmap_line::y#3
(word) bitmap_line::y#4
(word) bitmap_line::y#5
(word) bitmap_line::y#6
(word) bitmap_line::y#7
(word) bitmap_line::y#8
(word) bitmap_line::y#9
(word) bitmap_line::y1
(word) bitmap_line::y1#0
(word) bitmap_line::y1#1
(word) bitmap_line::y1#2
(word) bitmap_line::y1#3
(word) bitmap_line::y1#4
(word) bitmap_line::y1#5
(word) bitmap_line::y2
(word) bitmap_line::y2#0
(word) bitmap_line::y2#1
(word) bitmap_line::y2#10
(word) bitmap_line::y2#11
(word) bitmap_line::y2#2
(word) bitmap_line::y2#3
(word) bitmap_line::y2#4
(word) bitmap_line::y2#5
(word) bitmap_line::y2#6
(word) bitmap_line::y2#7
(word) bitmap_line::y2#8
(word) bitmap_line::y2#9
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
(byte*~) bitmap_plot::$0
(number~) bitmap_plot::$1
(byte~) bitmap_plot::$2
(label) bitmap_plot::@return
(byte*) bitmap_plot::plotter
(byte*) bitmap_plot::plotter#0
(byte*) bitmap_plot::plotter#1
(word) bitmap_plot::x
(word) bitmap_plot::x#0
(word) bitmap_plot::x#1
(word) bitmap_plot::x#2
(word) bitmap_plot::x#3
(word) bitmap_plot::x#4
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0
(byte) bitmap_plot::y#1
(byte) bitmap_plot::y#2
(byte) bitmap_plot::y#3
(byte) bitmap_plot::y#4
(const byte*) bitmap_plot_bit[(number) $100]  = { fill( $100, 0) }
(const byte*) bitmap_plot_yhi[(number) $100]  = { fill( $100, 0) }
(const byte*) bitmap_plot_ylo[(number) $100]  = { fill( $100, 0) }
(byte*) bitmap_screen
(byte*) bitmap_screen#0
(byte*) bitmap_screen#1
(byte*) bitmap_screen#10
(byte*) bitmap_screen#11
(byte*) bitmap_screen#12
(byte*) bitmap_screen#13
(byte*) bitmap_screen#14
(byte*) bitmap_screen#15
(byte*) bitmap_screen#16
(byte*) bitmap_screen#17
(byte*) bitmap_screen#18
(byte*) bitmap_screen#19
(byte*) bitmap_screen#2
(byte*) bitmap_screen#20
(byte*) bitmap_screen#21
(byte*) bitmap_screen#22
(byte*) bitmap_screen#23
(byte*) bitmap_screen#24
(byte*) bitmap_screen#25
(byte*) bitmap_screen#26
(byte*) bitmap_screen#27
(byte*) bitmap_screen#28
(byte*) bitmap_screen#3
(byte*) bitmap_screen#4
(byte*) bitmap_screen#5
(byte*) bitmap_screen#6
(byte*) bitmap_screen#7
(byte*) bitmap_screen#8
(byte*) bitmap_screen#9
(void()) main()
(number~) main::$10
(word~) main::$11
(byte*~) main::$16
(byte~) main::$2
(bool~) main::$3
(word~) main::$4
(number~) main::$5
(word~) main::$6
(number~) main::$7
(word~) main::$8
(number~) main::$9
(label) main::@1
(label) main::@13
(label) main::@14
(label) main::@15
(label) main::@16
(label) main::@2
(label) main::@7
(label) main::@8
(label) main::@return
(byte) main::a
(byte) main::a#0
(byte) main::a#1
(byte) main::a#2
(byte) main::a#3
(byte) main::a#4
(byte) main::i
(byte) main::i#0
(byte) main::i#1
(byte) main::i#2
(byte) main::i#3
(byte) main::i#4
(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
(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
(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::@5
(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::c#5
(byte*) memset::dst
(byte*) memset::dst#0
(byte*) memset::dst#1
(byte*) memset::dst#2
(byte*) memset::dst#3
(byte*) memset::end
(byte*) memset::end#0
(byte*) memset::end#1
(byte*) memset::end#2
(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*) memset::str#6
(word()) sgn_u16((word) sgn_u16::w)
(byte~) sgn_u16::$0
(number~) sgn_u16::$1
(bool~) sgn_u16::$2
(label) sgn_u16::@1
(label) sgn_u16::@3
(label) sgn_u16::@return
(word) sgn_u16::return
(word) sgn_u16::return#0
(word) sgn_u16::return#1
(word) sgn_u16::return#2
(word) sgn_u16::return#3
(word) sgn_u16::return#4
(word) sgn_u16::return#5
(word) sgn_u16::return#6
(word) sgn_u16::return#7
(word) sgn_u16::w
(word) sgn_u16::w#0
(word) sgn_u16::w#1
(word) sgn_u16::w#2

Fixing inline constructor with bitmap_plot::$3 ← (byte)*(bitmap_plot_yhi + bitmap_plot::y#4) w= (byte)*(bitmap_plot_ylo + bitmap_plot::y#4)
Successful SSA optimization Pass2FixInlineConstructors
Adding number conversion cast (unumber) $40 in 
Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#2 > (number) 0
Adding number conversion cast (unumber) 1 in (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (number) 1
Adding number conversion cast (unumber) 0 in (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (number) 0
Adding number conversion cast (unumber) $80 in (byte) bitmap_init::bits#2 ← (number) $80
Adding number conversion cast (unumber) 7 in (number~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (number) 7
Adding number conversion cast (unumber) bitmap_init::$3 in (number~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (unumber)(number) 7
Adding number conversion cast (unumber) bitmap_init::$5 in (number~) bitmap_init::$5 ← (unumber~) bitmap_init::$3 | (byte~) bitmap_init::$4
Adding number conversion cast (unumber) 7 in (number~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (number) 7
Adding number conversion cast (unumber) bitmap_init::$7 in (number~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (unumber)(number) 7
Adding number conversion cast (unumber) 7 in (bool~) bitmap_init::$8 ← (unumber~) bitmap_init::$7 == (number) 7
Adding number conversion cast (unumber) $28*8 in (byte*~) bitmap_init::$10 ← (byte*) bitmap_init::yoffs#3 + (number) $28*(number) 8
Adding number conversion cast (unumber) $10 in (number~) bitmap_clear::$0 ← (byte) bitmap_clear::fgcol#1 * (number) $10
Adding number conversion cast (unumber) bitmap_clear::$0 in (number~) bitmap_clear::$0 ← (byte) bitmap_clear::fgcol#1 * (unumber)(number) $10
Adding number conversion cast (unumber) bitmap_clear::$1 in (number~) bitmap_clear::$1 ← (unumber~) bitmap_clear::$0 + (byte) bitmap_clear::bgcol#1
Adding number conversion cast (unumber) 0 in (byte) memset::c#1 ← (number) 0
Adding number conversion cast (unumber) $fff8 in (number~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (number) $fff8
Adding number conversion cast (unumber) bitmap_plot::$1 in (number~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (unumber)(number) $fff8
Adding number conversion cast (unumber) 0 in (bool~) bitmap_line::$4 ← (word) bitmap_line::dx#1 == (number) 0
Adding number conversion cast (unumber) 0 in (bool~) bitmap_line::$5 ← (word) bitmap_line::dy#0 == (number) 0
Adding number conversion cast (unumber) 2 in (number~) bitmap_line::$23 ← (word) bitmap_line::dy#2 / (number) 2
Adding number conversion cast (unumber) bitmap_line::$23 in (number~) bitmap_line::$23 ← (word) bitmap_line::dy#2 / (unumber)(number) 2
Adding number conversion cast (unumber) 2 in (number~) bitmap_line::$17 ← (word) bitmap_line::dx#3 / (number) 2
Adding number conversion cast (unumber) bitmap_line::$17 in (number~) bitmap_line::$17 ← (word) bitmap_line::dx#3 / (unumber)(number) 2
Adding number conversion cast (unumber) $80 in (number~) abs_u16::$1 ← (byte~) abs_u16::$0 & (number) $80
Adding number conversion cast (unumber) abs_u16::$1 in (number~) abs_u16::$1 ← (byte~) abs_u16::$0 & (unumber)(number) $80
Adding number conversion cast (unumber) 0 in (bool~) abs_u16::$3 ← (number) 0 != (unumber~) abs_u16::$1
Adding number conversion cast (unumber) $80 in (number~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (number) $80
Adding number conversion cast (unumber) sgn_u16::$1 in (number~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (unumber)(number) $80
Adding number conversion cast (unumber) 0 in (bool~) sgn_u16::$2 ← (number) 0 != (unumber~) sgn_u16::$1
Adding number conversion cast (unumber) -1 in (word) sgn_u16::return#2 ← (number) -1
Adding number conversion cast (unumber) 1 in (word) sgn_u16::return#3 ← (number) 1
Adding number conversion cast (unumber) VIC_BMM|VIC_DEN|VIC_RSEL|3 in *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(number) 3
Adding number conversion cast (unumber) 3 in *((const byte*) D011) ← ((unumber)) (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(number) 3
Adding number conversion cast (unumber) $3fff in (number~) main::toD0181_$1 ← (word~) main::toD0181_$0 & (number) $3fff
Adding number conversion cast (unumber) main::toD0181_$1 in (number~) main::toD0181_$1 ← (word~) main::toD0181_$0 & (unumber)(number) $3fff
Adding number conversion cast (unumber) 4 in (number~) main::toD0181_$2 ← (unumber~) main::toD0181_$1 * (number) 4
Adding number conversion cast (unumber) main::toD0181_$2 in (number~) main::toD0181_$2 ← (unumber~) main::toD0181_$1 * (unumber)(number) 4
Adding number conversion cast (unumber) main::toD0181_$3 in (number~) main::toD0181_$3 ← > (unumber~) main::toD0181_$2
Adding number conversion cast (unumber) 4 in (number~) main::toD0181_$6 ← (byte~) main::toD0181_$5 / (number) 4
Adding number conversion cast (unumber) main::toD0181_$6 in (number~) main::toD0181_$6 ← (byte~) main::toD0181_$5 / (unumber)(number) 4
Adding number conversion cast (unumber) $f in (number~) main::toD0181_$7 ← (unumber~) main::toD0181_$6 & (number) $f
Adding number conversion cast (unumber) main::toD0181_$7 in (number~) main::toD0181_$7 ← (unumber~) main::toD0181_$6 & (unumber)(number) $f
Adding number conversion cast (unumber) main::toD0181_$8 in (number~) main::toD0181_$8 ← (unumber~) main::toD0181_$3 | (unumber~) main::toD0181_$7
Adding number conversion cast (unumber) 8 in (bool~) main::$3 ← (byte) main::i#2 != (number) 8
Adding number conversion cast (unumber) $78 in (number~) main::$5 ← (word~) main::$4 + (number) $78
Adding number conversion cast (unumber) main::$5 in (number~) main::$5 ← (word~) main::$4 + (unumber)(number) $78
Adding number conversion cast (unumber) $20 in (number~) main::$7 ← (byte) main::a#2 + (number) $20
Adding number conversion cast (unumber) main::$7 in (number~) main::$7 ← (byte) main::a#2 + (unumber)(number) $20
Adding number conversion cast (unumber) $78 in (number~) main::$9 ← (word~) main::$8 + (number) $78
Adding number conversion cast (unumber) main::$9 in (number~) main::$9 ← (word~) main::$8 + (unumber)(number) $78
Adding number conversion cast (unumber) $20 in (number~) main::$10 ← (byte) main::a#2 + (number) $20
Adding number conversion cast (unumber) main::$10 in (number~) main::$10 ← (byte) main::a#2 + (unumber)(number) $20
Adding number conversion cast (unumber) $20 in (byte) main::a#1 ← (byte) main::a#3 + (number) $20
Adding number conversion cast (unumber) $3e7 in (byte*~) main::$16 ← (const byte*) SCREEN + (number) $3e7
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#3
Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3
Inlining cast (byte) bitmap_init::bits#2 ← (unumber)(number) $80
Inlining cast (byte) memset::c#1 ← (unumber)(number) 0
Inlining cast (byte~) bitmap_line::$15 ← (byte)(word) bitmap_line::y#3
Inlining cast (byte~) bitmap_line::$18 ← (byte)(word) bitmap_line::y#4
Inlining cast (byte~) bitmap_line::$13 ← (byte)(word) bitmap_line::y#7
Inlining cast (byte~) bitmap_line::$24 ← (byte)(word) bitmap_line::y#8
Inlining cast (word) sgn_u16::return#2 ← (unumber)(number) -1
Inlining cast (word) sgn_u16::return#3 ← (unumber)(number) 1
Inlining cast *((const byte*) D011) ← (unumber)(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3
Inlining cast (word~) main::toD0181_$0 ← (word)(byte*) main::toD0181_screen#1
Inlining cast (word~) main::toD0181_$4 ← (word)(byte*) main::toD0181_gfx#1
Inlining cast (word~) main::$4 ← (word)*((const byte*) COSTAB + (byte) main::a#2)
Inlining cast (word~) main::$6 ← (word)*((const byte*) SINTAB + (byte) main::a#2)
Inlining cast (word~) main::$8 ← (word)*((const byte*) COSTAB + (unumber~) main::$7)
Inlining cast (word~) main::$11 ← (word)*((const byte*) SINTAB + (unumber~) main::$10)
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 53265
Simplifying constant pointer cast (byte*) 53272
Simplifying constant pointer cast (byte*) 8192
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast $40
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast $80
Simplifying constant integer cast 7
Simplifying constant integer cast 7
Simplifying constant integer cast 7
Simplifying constant integer cast $10
Simplifying constant integer cast 0
Simplifying constant integer cast *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4)
Simplifying constant integer cast *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4)
Simplifying constant integer cast $fff8
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 2
Simplifying constant integer cast $80
Simplifying constant integer cast 0
Simplifying constant integer cast $80
Simplifying constant integer cast 0
Simplifying constant integer cast -1
Simplifying constant integer cast 1
Simplifying constant integer cast (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3
Simplifying constant integer cast 3
Simplifying constant integer cast $3fff
Simplifying constant integer cast 4
Simplifying constant integer cast 4
Simplifying constant integer cast $f
Simplifying constant integer cast 8
Simplifying constant integer cast $78
Simplifying constant integer cast $20
Simplifying constant integer cast $78
Simplifying constant integer cast $20
Simplifying constant integer cast $20
Simplifying constant integer cast $3e7
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) $40
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) 7
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) 0
Finalized unsigned number type (word) $fff8
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) 2
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $80
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) -1
Finalized unsigned number type (byte) 1
Finalized unsigned number type (byte) 3
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) 8
Finalized unsigned number type (byte) $78
Finalized unsigned number type (byte) $20
Finalized unsigned number type (byte) $78
Finalized unsigned number type (byte) $20
Finalized unsigned number type (byte) $20
Finalized unsigned number type (word) $3e7
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to byte in (unumber~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte) 7
Inferred type updated to byte in (unumber~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4
Inferred type updated to byte in (unumber~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
Inferred type updated to byte in (unumber~) bitmap_clear::$0 ← (byte) bitmap_clear::fgcol#1 * (byte) $10
Inferred type updated to byte in (unumber~) bitmap_clear::$1 ← (byte~) bitmap_clear::$0 + (byte) bitmap_clear::bgcol#1
Inferred type updated to word in (unumber~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8
Inferred type updated to word in (unumber~) bitmap_line::$23 ← (word) bitmap_line::dy#2 / (byte) 2
Inferred type updated to word in (unumber~) bitmap_line::$17 ← (word) bitmap_line::dx#3 / (byte) 2
Inferred type updated to byte in (unumber~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80
Inferred type updated to byte in (unumber~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80
Inferred type updated to word in (unumber~) main::toD0181_$1 ← (word~) main::toD0181_$0 & (word) $3fff
Inferred type updated to word in (unumber~) main::toD0181_$2 ← (word~) main::toD0181_$1 * (byte) 4
Inferred type updated to byte in (unumber~) main::toD0181_$3 ← > (word~) main::toD0181_$2
Inferred type updated to byte in (unumber~) main::toD0181_$6 ← (byte~) main::toD0181_$5 / (byte) 4
Inferred type updated to byte in (unumber~) main::toD0181_$7 ← (byte~) main::toD0181_$6 & (byte) $f
Inferred type updated to byte in (unumber~) main::toD0181_$8 ← (byte~) main::toD0181_$3 | (byte~) main::toD0181_$7
Inferred type updated to word in (unumber~) main::$5 ← (word~) main::$4 + (byte) $78
Inferred type updated to byte in (unumber~) main::$7 ← (byte) main::a#2 + (byte) $20
Inferred type updated to word in (unumber~) main::$9 ← (word~) main::$8 + (byte) $78
Inferred type updated to byte in (unumber~) main::$10 ← (byte) main::a#2 + (byte) $20
Adding pointer type conversion cast (byte*) bitmap_plot::$0 in (byte*~) bitmap_plot::$0 ← (word~) bitmap_plot::$3
Successful SSA optimization PassNAddTypeConversionAssignment
Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#2 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#2 > (byte) 0
Inversing boolean not [31] (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte) 0 from [30] (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte) 0
Inversing boolean not [51] (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte) 7 from [50] (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte) 7
Inversing boolean not [149] (bool~) bitmap_line::$21 ← (word) bitmap_line::dy#3 >= (word) bitmap_line::e#1 from [148] (bool~) bitmap_line::$20 ← (word) bitmap_line::dy#3 < (word) bitmap_line::e#1
Inversing boolean not [171] (bool~) bitmap_line::$27 ← (word) bitmap_line::dx#5 >= (word) bitmap_line::e1#1 from [170] (bool~) bitmap_line::$26 ← (word) bitmap_line::dx#5 < (word) bitmap_line::e1#1
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#4 = (byte) memset::c#5 
Alias (byte*) memset::end#0 = (byte*~) memset::$3 
Alias (byte) memset::c#2 = (byte) memset::c#3 
Alias (byte*) memset::dst#2 = (byte*) memset::dst#3 
Alias (byte*) memset::end#1 = (byte*) memset::end#2 
Alias (void*) memset::str#5 = (void*) memset::str#6 
Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#4 
Alias (byte*) bitmap_init::gfx#4 = (byte*) bitmap_init::gfx#5 
Alias (byte*) bitmap_gfx#26 = (byte*) bitmap_gfx#27 
Alias (byte*) bitmap_screen#25 = (byte*) bitmap_screen#26 
Alias (byte*) bitmap_init::gfx#2 = (byte*) bitmap_init::gfx#3 (byte*) bitmap_init::yoffs#0 
Alias (byte*) bitmap_gfx#20 = (byte*) bitmap_gfx#23 
Alias (byte*) bitmap_screen#19 = (byte*) bitmap_screen#22 
Alias (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#3 
Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#4 
Alias (byte*) bitmap_gfx#16 = (byte*) bitmap_gfx#17 
Alias (byte*) bitmap_screen#15 = (byte*) bitmap_screen#16 
Alias (byte*) bitmap_init::yoffs#1 = (byte*~) bitmap_init::$10 
Alias (byte*) bitmap_gfx#11 = (byte*) bitmap_gfx#6 (byte*) bitmap_gfx#2 
Alias (byte*) bitmap_screen#11 = (byte*) bitmap_screen#6 (byte*) bitmap_screen#2 
Alias (byte) bitmap_clear::col#0 = (byte~) bitmap_clear::$1 
Alias (byte*) bitmap_gfx#12 = (byte*) bitmap_gfx#7 
Alias (byte*) bitmap_plot::plotter#0 = (byte*~) bitmap_plot::$0 
Alias (word) bitmap_line::x#0 = (word) bitmap_line::x1#1 (word) bitmap_line::x1#4 (word) bitmap_line::x#16 (word) bitmap_line::x1#3 (word) bitmap_line::x#10 (word) bitmap_line::x1#2 (word) bitmap_line::x#19 (word) bitmap_line::x#18 (word) bitmap_line::x#17 (word) bitmap_line::x#3 (word) bitmap_line::x#14 (word) bitmap_line::x#11 
Alias (word) bitmap_line::y#0 = (word) bitmap_line::y1#1 (word) bitmap_line::y1#2 (word) bitmap_line::y#16 (word) bitmap_line::y#10 (word) bitmap_line::y1#5 (word) bitmap_line::y1#4 (word) bitmap_line::y#19 (word) bitmap_line::y1#3 (word) bitmap_line::y#18 (word) bitmap_line::y#17 (word) bitmap_line::y#3 (word) bitmap_line::y#14 (word) bitmap_line::y#11 
Alias (word) abs_u16::w#0 = (word~) bitmap_line::$0 
Alias (word) abs_u16::return#0 = (word) abs_u16::return#5 
Alias (word) bitmap_line::y2#1 = (word) bitmap_line::y2#4 (word) bitmap_line::y2#8 (word) bitmap_line::y2#5 (word) bitmap_line::y2#2 (word) bitmap_line::y2#11 (word) bitmap_line::y2#10 
Alias (word) bitmap_line::x2#1 = (word) bitmap_line::x2#7 (word) bitmap_line::x2#4 (word) bitmap_line::x2#2 (word) bitmap_line::x2#11 (word) bitmap_line::x2#10 (word) bitmap_line::x2#9 
Alias (word) bitmap_line::dx#0 = (word~) bitmap_line::$1 (word) bitmap_line::dx#1 (word) bitmap_line::dx#10 (word) bitmap_line::dx#7 (word) bitmap_line::dx#2 (word) bitmap_line::dx#13 (word) bitmap_line::dx#3 
Alias (word) abs_u16::w#1 = (word~) bitmap_line::$2 
Alias (word) abs_u16::return#1 = (word) abs_u16::return#6 
Alias (word) bitmap_line::dy#0 = (word~) bitmap_line::$3 (word) bitmap_line::dy#9 (word) bitmap_line::dy#6 (word) bitmap_line::dy#1 (word) bitmap_line::dy#2 (word) bitmap_line::dy#10 
Alias (word) sgn_u16::w#0 = (word~) bitmap_line::$8 
Alias (word) sgn_u16::return#0 = (word) sgn_u16::return#5 
Alias (word) bitmap_line::sx#0 = (word~) bitmap_line::$9 (word) bitmap_line::sx#8 (word) bitmap_line::sx#7 (word) bitmap_line::sx#9 
Alias (word) sgn_u16::w#1 = (word~) bitmap_line::$10 
Alias (word) sgn_u16::return#1 = (word) sgn_u16::return#6 
Alias (word) bitmap_line::sy#0 = (word~) bitmap_line::$11 (word) bitmap_line::sy#10 (word) bitmap_line::sy#5 
Alias (byte) bitmap_plot::y#0 = (byte~) bitmap_line::$15 
Alias (word) bitmap_line::e1#0 = (word~) bitmap_line::$23 
Alias (word) bitmap_line::e#0 = (word~) bitmap_line::$17 
Alias (byte) bitmap_plot::y#1 = (byte~) bitmap_line::$18 
Alias (word) bitmap_line::y#4 = (word) bitmap_line::y#5 
Alias (word) bitmap_line::sy#1 = (word) bitmap_line::sy#3 (word) bitmap_line::sy#8 
Alias (word) bitmap_line::e#3 = (word) bitmap_line::e#5 
Alias (word) bitmap_line::dx#14 = (word) bitmap_line::dx#4 (word) bitmap_line::dx#8 
Alias (word) bitmap_line::dy#3 = (word) bitmap_line::dy#7 (word) bitmap_line::dy#4 
Alias (word) bitmap_line::y2#6 = (word) bitmap_line::y2#9 (word) bitmap_line::y2#7 
Alias (word) bitmap_line::x#13 = (word) bitmap_line::x#4 (word) bitmap_line::x#5 
Alias (word) bitmap_line::sx#1 = (word) bitmap_line::sx#3 (word) bitmap_line::sx#5 
Alias (word) bitmap_line::e#1 = (word) bitmap_line::e#4 
Alias (word) bitmap_line::y#1 = (word) bitmap_line::y#12 
Alias (byte) bitmap_plot::y#2 = (byte~) bitmap_line::$13 
Alias (byte) bitmap_plot::y#3 = (byte~) bitmap_line::$24 
Alias (word) bitmap_line::x#7 = (word) bitmap_line::x#8 
Alias (word) bitmap_line::sx#11 = (word) bitmap_line::sx#2 (word) bitmap_line::sx#4 
Alias (word) bitmap_line::e1#3 = (word) bitmap_line::e1#5 
Alias (word) bitmap_line::dy#13 = (word) bitmap_line::dy#5 (word) bitmap_line::dy#8 
Alias (word) bitmap_line::dx#5 = (word) bitmap_line::dx#9 (word) bitmap_line::dx#6 
Alias (word) bitmap_line::x2#5 = (word) bitmap_line::x2#6 (word) bitmap_line::x2#8 
Alias (word) bitmap_line::y#15 = (word) bitmap_line::y#8 (word) bitmap_line::y#9 
Alias (word) bitmap_line::sy#2 = (word) bitmap_line::sy#4 (word) bitmap_line::sy#7 
Alias (word) bitmap_line::e1#1 = (word) bitmap_line::e1#4 
Alias (word) bitmap_line::x#15 = (word) bitmap_line::x#2 
Alias (word) abs_u16::w#2 = (word) abs_u16::w#3 (word) abs_u16::w#4 (word) abs_u16::return#3 
Alias (word) abs_u16::return#2 = (word~) abs_u16::$2 
Alias (word) abs_u16::return#4 = (word) abs_u16::return#7 
Alias (word) sgn_u16::return#4 = (word) sgn_u16::return#7 
Alias (byte*) bitmap_gfx#21 = (byte*) bitmap_gfx#3 (byte*) bitmap_gfx#8 (byte*) bitmap_gfx#29 (byte*) bitmap_gfx#28 (byte*) bitmap_gfx#24 
Alias (byte*) bitmap_screen#20 = (byte*) bitmap_screen#3 (byte*) bitmap_screen#8 (byte*) bitmap_screen#28 (byte*) bitmap_screen#27 (byte*) bitmap_screen#23 
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 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$2 
Alias (byte) main::a#2 = (byte) main::a#4 (byte) main::a#3 
Alias (byte) main::i#2 = (byte) main::i#4 (byte) main::i#3 
Alias (byte*) bitmap_gfx#18 = (byte*) bitmap_gfx#25 (byte*) bitmap_gfx#22 
Alias (byte*) bitmap_screen#17 = (byte*) bitmap_screen#24 (byte*) bitmap_screen#21 
Alias (word) bitmap_line::x1#0 = (word~) main::$5 
Alias (word) bitmap_line::y1#0 = (word~) main::$6 
Alias (word) bitmap_line::x2#0 = (word~) main::$9 
Alias (word) bitmap_line::y2#0 = (word~) main::$11 
Alias (byte*) bitmap_gfx#14 = (byte*) bitmap_gfx#19 (byte*) bitmap_gfx#9 (byte*) bitmap_gfx#4 
Alias (byte*) bitmap_screen#13 = (byte*) bitmap_screen#18 (byte*) bitmap_screen#9 (byte*) bitmap_screen#4 
Alias (byte*) bitmap_gfx#0 = (byte*) bitmap_gfx#15 
Alias (byte*) bitmap_screen#0 = (byte*) bitmap_screen#14 
Alias (byte*) bitmap_gfx#10 = (byte*) bitmap_gfx#5 
Alias (byte*) bitmap_screen#10 = (byte*) bitmap_screen#5 
Successful SSA optimization Pass2AliasElimination
Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3 
Alias (byte*) bitmap_init::gfx#2 = (byte*) bitmap_init::gfx#4 
Alias (byte*) bitmap_gfx#20 = (byte*) bitmap_gfx#26 
Alias (byte*) bitmap_screen#19 = (byte*) bitmap_screen#25 
Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3 
Alias (byte*) bitmap_gfx#11 = (byte*) bitmap_gfx#16 
Alias (byte*) bitmap_screen#11 = (byte*) bitmap_screen#15 
Alias (word) bitmap_line::y#1 = (word) bitmap_line::y#6 
Alias (word) bitmap_line::y2#3 = (word) bitmap_line::y2#6 
Alias (word) bitmap_line::sy#1 = (word) bitmap_line::sy#6 
Alias (word) bitmap_line::dx#11 = (word) bitmap_line::dx#14 
Alias (word) bitmap_line::dy#11 = (word) bitmap_line::dy#3 
Alias (word) bitmap_line::sx#1 = (word) bitmap_line::sx#10 
Alias (word) bitmap_line::x#15 = (word) bitmap_line::x#9 
Alias (word) bitmap_line::x2#3 = (word) bitmap_line::x2#5 
Alias (word) bitmap_line::sx#11 = (word) bitmap_line::sx#6 
Alias (word) bitmap_line::dy#12 = (word) bitmap_line::dy#13 
Alias (word) bitmap_line::dx#12 = (word) bitmap_line::dx#5 
Alias (word) bitmap_line::sy#2 = (word) bitmap_line::sy#9 
Successful SSA optimization Pass2AliasElimination
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) memset::c#2 (byte) memset::c#4
Identical Phi Values (byte*) bitmap_init::gfx#1 (byte*) bitmap_init::gfx#0
Identical Phi Values (byte*) bitmap_init::screen#1 (byte*) bitmap_init::screen#0
Identical Phi Values (byte*) bitmap_init::gfx#2 (byte*) bitmap_init::gfx#1
Identical Phi Values (byte*) bitmap_gfx#20 (byte*) bitmap_gfx#1
Identical Phi Values (byte*) bitmap_screen#19 (byte*) bitmap_screen#1
Identical Phi Values (byte*) bitmap_gfx#11 (byte*) bitmap_gfx#20
Identical Phi Values (byte*) bitmap_screen#11 (byte*) bitmap_screen#19
Identical Phi Values (byte) bitmap_clear::fgcol#1 (byte) bitmap_clear::fgcol#0
Identical Phi Values (byte) bitmap_clear::bgcol#1 (byte) bitmap_clear::bgcol#0
Identical Phi Values (byte*) bitmap_screen#7 (byte*) bitmap_screen#20
Identical Phi Values (byte*) bitmap_gfx#12 (byte*) bitmap_gfx#21
Identical Phi Values (word) bitmap_line::x#0 (word) bitmap_line::x1#0
Identical Phi Values (word) bitmap_line::y#0 (word) bitmap_line::y1#0
Identical Phi Values (word) bitmap_line::x2#1 (word) bitmap_line::x2#0
Identical Phi Values (word) bitmap_line::y2#1 (word) bitmap_line::y2#0
Identical Phi Values (word) bitmap_line::sy#1 (word) bitmap_line::sy#0
Identical Phi Values (word) bitmap_line::dx#11 (word) bitmap_line::dx#0
Identical Phi Values (word) bitmap_line::dy#11 (word) bitmap_line::dy#0
Identical Phi Values (word) bitmap_line::y2#3 (word) bitmap_line::y2#1
Identical Phi Values (word) bitmap_line::sx#1 (word) bitmap_line::sx#0
Identical Phi Values (word) bitmap_line::sx#11 (word) bitmap_line::sx#0
Identical Phi Values (word) bitmap_line::dy#12 (word) bitmap_line::dy#0
Identical Phi Values (word) bitmap_line::dx#12 (word) bitmap_line::dx#0
Identical Phi Values (word) bitmap_line::x2#3 (word) bitmap_line::x2#1
Identical Phi Values (word) bitmap_line::sy#2 (word) bitmap_line::sy#0
Identical Phi Values (byte*) bitmap_gfx#13 (byte*) bitmap_gfx#0
Identical Phi Values (byte*) bitmap_screen#12 (byte*) bitmap_screen#0
Identical Phi Values (byte*) bitmap_gfx#21 (byte*) bitmap_gfx#11
Identical Phi Values (byte*) bitmap_screen#20 (byte*) bitmap_screen#11
Identical Phi Values (byte*) bitmap_gfx#18 (byte*) bitmap_gfx#21
Identical Phi Values (byte*) bitmap_screen#17 (byte*) bitmap_screen#20
Identical Phi Values (byte*) bitmap_gfx#14 (byte*) bitmap_gfx#18
Identical Phi Values (byte*) bitmap_screen#13 (byte*) bitmap_screen#17
Identical Phi Values (byte*) bitmap_gfx#10 (byte*) bitmap_gfx#14
Identical Phi Values (byte*) bitmap_screen#10 (byte*) bitmap_screen#13
Successful SSA optimization Pass2IdenticalPhiElimination
Identical Phi Values (void*) memset::return#0 (void*) memset::str#3
Successful SSA optimization Pass2IdenticalPhiElimination
Identified duplicate assignment right side [49] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
Successful SSA optimization Pass2DuplicateRValueIdentification
Simple Condition (bool~) memset::$1 [2] if((word) memset::num#2<=(byte) 0) goto memset::@1
Simple Condition (bool~) memset::$4 [9] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5
Simple Condition (bool~) bitmap_init::$1 [24] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@2
Simple Condition (bool~) bitmap_init::$2 [28] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1
Simple Condition (bool~) bitmap_init::$9 [40] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@6
Simple Condition (bool~) bitmap_init::$11 [44] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5
Simple Condition (bool~) bitmap_line::$12 [92] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2
Simple Condition (bool~) bitmap_line::$21 [106] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@8
Simple Condition (bool~) bitmap_line::$22 [109] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@7
Simple Condition (bool~) bitmap_line::$27 [123] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@13
Simple Condition (bool~) bitmap_line::$28 [126] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@12
Simple Condition (bool~) abs_u16::$3 [133] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1
Simple Condition (bool~) sgn_u16::$2 [141] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1
Simple Condition (bool~) main::$3 [171] if((byte) main::i#2!=(byte) 8) goto main::@2
Successful SSA optimization Pass2ConditionalJumpSimplification
Rewriting ! if()-condition to reversed if() [81] (bool~) bitmap_line::$7 ← ! (bool~) bitmap_line::$6
Rewriting && if()-condition to two if()s [80] (bool~) bitmap_line::$6 ← (bool~) bitmap_line::$4 && (bool~) bitmap_line::$5
Successful SSA optimization Pass2ConditionalAndOrRewriting
Constant right-side identified [185] (byte*~) main::$16 ← (const byte*) SCREEN + (word) $3e7
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) bitmap_screen#0 = (byte*) 0
Constant (const byte*) bitmap_gfx#0 = (byte*) 0
Constant (const byte) bitmap_init::bits#0 = $80
Constant (const byte) bitmap_init::x#0 = 0
Constant (const byte) bitmap_init::bits#2 = $80
Constant (const byte) bitmap_init::y#0 = 0
Constant (const word) memset::num#0 = $3e8
Constant (const byte) memset::c#1 = 0
Constant (const word) memset::num#1 = $1f40
Constant (const word) sgn_u16::return#2 = -1
Constant (const word) sgn_u16::return#3 = 1
Constant (const byte*) bitmap_init::gfx#0 = BITMAP
Constant (const byte*) bitmap_init::screen#0 = SCREEN
Constant (const byte) bitmap_clear::bgcol#0 = BLACK
Constant (const byte) bitmap_clear::fgcol#0 = WHITE
Constant (const byte*) main::toD0181_screen#0 = SCREEN
Constant (const byte*) main::toD0181_gfx#0 = BITMAP
Constant (const byte) main::i#0 = 0
Constant (const byte) main::a#0 = 0
Constant (const byte*) main::$16 = SCREEN+$3e7
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) bitmap_gfx#1 = bitmap_init::gfx#0
Constant (const byte*) bitmap_screen#1 = bitmap_init::screen#0
Constant (const word) main::toD0181_$0 = (word)main::toD0181_screen#0
Constant (const word) main::toD0181_$4 = (word)main::toD0181_gfx#0
Successful SSA optimization Pass2ConstantIdentification
Constant (const void*) memset::str#0 = (void*)bitmap_screen#1
Constant (const void*) memset::str#1 = (void*)bitmap_gfx#1
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [184] if(true) goto main::@8
Successful SSA optimization Pass2ConstantIfs
Resolved ranged next value [26] bitmap_init::x#1 ← ++ bitmap_init::x#2 to ++
Resolved ranged comparison value [28] if(bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 to (number) 0
Resolved ranged next value [42] bitmap_init::y#1 ← ++ bitmap_init::y#2 to ++
Resolved ranged comparison value [44] if(bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 to (number) 0
Simplifying expression containing zero bitmap_clear::$0 in [49] (byte) bitmap_clear::col#0 ← (byte~) bitmap_clear::$0 + (const byte) bitmap_clear::bgcol#0
Successful SSA optimization PassNSimplifyExpressionWithZero
Eliminating unused variable (void*) memset::return#2 and assignment [35] (void*) memset::return#2 ← (void*) memset::str#3
Eliminating unused variable (void*) memset::return#3 and assignment [37] (void*) memset::return#3 ← (void*) memset::str#3
Eliminating unused constant (const byte) bitmap_clear::bgcol#0
Eliminating unused constant (const byte*) bitmap_screen#0
Eliminating unused constant (const byte*) bitmap_gfx#0
Successful SSA optimization PassNEliminateUnusedVars
Eliminating unused constant (const byte) BLACK
Successful SSA optimization PassNEliminateUnusedVars
Removing unused block main::@return
Successful SSA optimization Pass2EliminateUnusedBlocks
Adding number conversion cast (unumber) 0 in if((byte) bitmap_init::x#1!=(number) 0) goto bitmap_init::@1
Adding number conversion cast (unumber) 0 in if((byte) bitmap_init::y#1!=(number) 0) goto bitmap_init::@5
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte*) bitmap_plot::plotter#0 ← (byte*)(word~) bitmap_plot::$3
Successful SSA optimization Pass2InlineCast
Simplifying constant integer cast 0
Simplifying constant integer cast 0
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 0
Successful SSA optimization PassNFinalizeNumberTypeConversions
Alias (byte~) bitmap_init::$7 = (byte~) bitmap_init::$3 
Alias (byte) bitmap_clear::col#0 = (byte~) bitmap_clear::$0 
Successful SSA optimization Pass2AliasElimination
Simple Condition (bool~) bitmap_line::$4 [53] if((word) bitmap_line::dx#0==(byte) 0) goto bitmap_line::@24
Simple Condition (bool~) bitmap_line::$5 [134] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4
Successful SSA optimization Pass2ConditionalJumpSimplification
Negating conditional jump and destination [53] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1
Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
Constant right-side identified [30] (byte) bitmap_clear::col#0 ← (const byte) bitmap_clear::fgcol#0 * (byte) $10
Constant right-side identified [111] (word~) main::toD0181_$1 ← (const word) main::toD0181_$0 & (word) $3fff
Constant right-side identified [114] (byte~) main::toD0181_$5 ← > (const word) main::toD0181_$4
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) bitmap_clear::col#0 = bitmap_clear::fgcol#0*$10
Constant (const word) main::toD0181_$1 = main::toD0181_$0&$3fff
Constant (const byte) main::toD0181_$5 = >main::toD0181_$4
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) memset::c#0 = bitmap_clear::col#0
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [107] (word~) main::toD0181_$2 ← (const word) main::toD0181_$1 * (byte) 4
Constant right-side identified [109] (byte~) main::toD0181_$6 ← (const byte) main::toD0181_$5 / (byte) 4
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const word) main::toD0181_$2 = main::toD0181_$1*4
Constant (const byte) main::toD0181_$6 = main::toD0181_$5/4
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [107] (byte~) main::toD0181_$3 ← > (const word) main::toD0181_$2
Constant right-side identified [108] (byte~) main::toD0181_$7 ← (const byte) main::toD0181_$6 & (byte) $f
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) main::toD0181_$3 = >main::toD0181_$2
Constant (const byte) main::toD0181_$7 = main::toD0181_$6&$f
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [107] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$3 | (const byte) main::toD0181_$7
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) main::toD0181_return#0 = main::toD0181_$3|main::toD0181_$7
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
Successful SSA optimization Pass2NopCastInlining
Inlining Noop Cast [35] (byte*) bitmap_plot::plotter#0 ← (byte*)(word~) bitmap_plot::$3 keeping bitmap_plot::plotter#0
Successful SSA optimization Pass2NopCastInlining
Rewriting division to use shift [63] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 / (byte) 2
Rewriting division to use shift [64] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 / (byte) 2
Successful SSA optimization Pass2MultiplyToShiftRewriting
Inlining constant with var siblings (const word) memset::num#0
Inlining constant with var siblings (const byte) memset::c#1
Inlining constant with var siblings (const word) memset::num#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 byte) memset::c#0
Inlining constant with var siblings (const byte) bitmap_init::bits#0
Inlining constant with var siblings (const byte) bitmap_init::x#0
Inlining constant with var siblings (const byte) bitmap_init::bits#2
Inlining constant with var siblings (const byte) bitmap_init::y#0
Inlining constant with var siblings (const word) sgn_u16::return#2
Inlining constant with var siblings (const word) sgn_u16::return#3
Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) main::a#0
Constant inlined bitmap_init::screen#0 = (const byte*) SCREEN
Constant inlined main::toD0181_screen#0 = (const byte*) SCREEN
Constant inlined main::toD0181_gfx#0 = (const byte*) BITMAP
Constant inlined bitmap_init::gfx#0 = (const byte*) BITMAP
Constant inlined memset::num#1 = (word) $1f40
Constant inlined memset::num#0 = (word) $3e8
Constant inlined bitmap_init::bits#0 = (byte) $80
Constant inlined bitmap_init::bits#2 = (byte) $80
Constant inlined main::a#0 = (byte) 0
Constant inlined main::$16 = (const byte*) SCREEN+(word) $3e7
Constant inlined sgn_u16::return#3 = (byte) 1
Constant inlined main::i#0 = (byte) 0
Constant inlined sgn_u16::return#2 = (byte) -1
Constant inlined memset::str#1 = (void*)(const byte*) BITMAP
Constant inlined memset::str#0 = (void*)(const byte*) SCREEN
Constant inlined main::toD0181_$7 = >(word)(const byte*) BITMAP/(byte) 4&(byte) $f
Constant inlined main::toD0181_$2 = (word)(const byte*) SCREEN&(word) $3fff*(byte) 4
Constant inlined main::toD0181_$1 = (word)(const byte*) SCREEN&(word) $3fff
Constant inlined bitmap_gfx#1 = (const byte*) BITMAP
Constant inlined main::toD0181_$0 = (word)(const byte*) SCREEN
Constant inlined bitmap_clear::fgcol#0 = (const byte) WHITE
Constant inlined main::toD0181_$6 = >(word)(const byte*) BITMAP/(byte) 4
Constant inlined main::toD0181_$5 = >(word)(const byte*) BITMAP
Constant inlined main::toD0181_$4 = (word)(const byte*) BITMAP
Constant inlined main::toD0181_$3 = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4
Constant inlined bitmap_screen#1 = (const byte*) SCREEN
Constant inlined bitmap_init::y#0 = (byte) 0
Constant inlined memset::c#0 = (const byte) bitmap_clear::col#0
Constant inlined bitmap_init::x#0 = (byte) 0
Constant inlined memset::c#1 = (byte) 0
Successful SSA optimization Pass2ConstantInlining
Consolidated array index constant in assignment *(COSTAB+$20 + main::$7)
Consolidated array index constant in assignment *(SINTAB+$20 + main::$10)
Successful SSA optimization Pass2ConstantAdditionElimination
Alias (byte) main::a#2 = (byte~) main::$7 (byte~) main::$10 
Successful SSA optimization Pass2AliasElimination
Added new block during phi lifting bitmap_init::@9(between bitmap_init::@2 and bitmap_init::@1)
Added new block during phi lifting bitmap_init::@10(between bitmap_init::@1 and bitmap_init::@2)
Added new block during phi lifting bitmap_init::@11(between bitmap_init::@6 and bitmap_init::@5)
Added new block during phi lifting bitmap_init::@12(between bitmap_init::@5 and bitmap_init::@6)
Added new block during phi lifting bitmap_line::@25(between bitmap_line::@8 and bitmap_line::@7)
Added new block during phi lifting bitmap_line::@26(between bitmap_line::@21 and bitmap_line::@8)
Added new block during phi lifting bitmap_line::@27(between bitmap_line::@13 and bitmap_line::@3)
Added new block during phi lifting bitmap_line::@28(between bitmap_line::@8 and bitmap_line::@3)
Added new block during phi lifting bitmap_line::@29(between bitmap_line::@13 and bitmap_line::@12)
Added new block during phi lifting bitmap_line::@30(between bitmap_line::@23 and bitmap_line::@13)
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @9
Adding NOP phi() at start of @48
Adding NOP phi() at start of @49
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@14
Adding NOP phi() at start of main::toD0181
Adding NOP phi() at start of main::toD0181_@return
Adding NOP phi() at start of main::@7
Adding NOP phi() at start of bitmap_line::@22
Adding NOP phi() at start of bitmap_line::@20
Adding NOP phi() at start of sgn_u16::@3
Adding NOP phi() at start of sgn_u16::@1
Adding NOP phi() at start of bitmap_clear
Adding NOP phi() at start of bitmap_clear::@1
Adding NOP phi() at start of bitmap_clear::@2
Adding NOP phi() at start of memset::@1
Adding NOP phi() at start of bitmap_init
Adding NOP phi() at start of bitmap_init::@3
Adding NOP phi() at start of bitmap_init::@4
CALL GRAPH
Calls in [] to main:3 
Calls in [main] to bitmap_init:7 bitmap_clear:9 bitmap_line:24 
Calls in [bitmap_line] to abs_u16:31 abs_u16:36 sgn_u16:43 sgn_u16:48 bitmap_plot:61 bitmap_plot:78 bitmap_plot:95 bitmap_plot:116 
Calls in [bitmap_clear] to memset:143 memset:145 

Created 30 initial phi equivalence classes
Coalesced [27] main::i#5 ← main::i#1
Coalesced [28] main::a#5 ← main::a#1
Coalesced [30] abs_u16::w#5 ← abs_u16::w#0
Coalesced [35] abs_u16::w#6 ← abs_u16::w#1
Coalesced [42] sgn_u16::w#3 ← sgn_u16::w#0
Coalesced [47] sgn_u16::w#4 ← sgn_u16::w#1
Coalesced [53] bitmap_line::y#20 ← bitmap_line::y1#0
Coalesced [54] bitmap_line::x#20 ← bitmap_line::x1#0
Coalesced [55] bitmap_line::e#7 ← bitmap_line::e#0
Coalesced [59] bitmap_plot::y#8 ← bitmap_plot::y#1
Coalesced [60] bitmap_plot::x#8 ← bitmap_plot::x#1
Coalesced [67] bitmap_line::x#23 ← bitmap_line::x#1
Coalesced [68] bitmap_line::e#10 ← bitmap_line::e#2
Coalesced [71] bitmap_line::y#23 ← bitmap_line::y#1
Coalesced [72] bitmap_line::x#25 ← bitmap_line::x#12
Coalesced [76] bitmap_plot::y#6 ← bitmap_plot::y#2
Coalesced [77] bitmap_plot::x#6 ← bitmap_plot::x#2
Coalesced [81] bitmap_line::y#21 ← bitmap_line::y#1
Coalesced [82] bitmap_line::x#21 ← bitmap_line::x#12
Coalesced [83] bitmap_line::e#8 ← bitmap_line::e#6
Coalesced (already) [84] bitmap_line::x#22 ← bitmap_line::x#13
Coalesced [85] bitmap_line::e#9 ← bitmap_line::e#1
Coalesced [87] bitmap_line::y#25 ← bitmap_line::y1#0
Coalesced [88] bitmap_line::x#27 ← bitmap_line::x1#0
Coalesced [89] bitmap_line::e1#8 ← bitmap_line::e1#0
Coalesced [93] bitmap_plot::y#5 ← bitmap_plot::y#3
Coalesced [94] bitmap_plot::x#5 ← bitmap_plot::x#3
Coalesced [101] bitmap_line::y#26 ← bitmap_line::y#2
Coalesced [102] bitmap_line::e1#9 ← bitmap_line::e1#2
Coalesced [105] bitmap_line::y#22 ← bitmap_line::y#13
Coalesced [106] bitmap_line::x#24 ← bitmap_line::x#15
Coalesced (already) [107] bitmap_line::y#24 ← bitmap_line::y#13
Coalesced (already) [108] bitmap_line::x#26 ← bitmap_line::x#15
Coalesced [109] bitmap_line::e1#7 ← bitmap_line::e1#6
Coalesced (already) [110] bitmap_line::y#27 ← bitmap_line::y#15
Coalesced [111] bitmap_line::e1#10 ← bitmap_line::e1#1
Coalesced [114] bitmap_plot::y#7 ← bitmap_plot::y#0
Coalesced [115] bitmap_plot::x#7 ← bitmap_plot::x#0
Coalesced [137] abs_u16::return#9 ← abs_u16::w#2
Coalesced [141] abs_u16::return#8 ← abs_u16::return#2
Coalesced [158] memset::dst#5 ← memset::dst#1
Coalesced [178] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1
Coalesced [183] bitmap_init::y#5 ← bitmap_init::y#1
Coalesced [184] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4
Coalesced (already) [185] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2
Coalesced [186] bitmap_init::bits#5 ← bitmap_init::bits#4
Coalesced [187] bitmap_init::x#5 ← bitmap_init::x#1
Coalesced [188] bitmap_init::bits#6 ← bitmap_init::bits#1
Coalesced down to 19 phi equivalence classes
Culled Empty Block (label) @9
Culled Empty Block (label) @49
Culled Empty Block (label) main::toD0181_@return
Culled Empty Block (label) main::@7
Culled Empty Block (label) bitmap_line::@28
Culled Empty Block (label) bitmap_line::@22
Culled Empty Block (label) bitmap_line::@25
Culled Empty Block (label) bitmap_line::@26
Culled Empty Block (label) bitmap_line::@27
Culled Empty Block (label) bitmap_line::@29
Culled Empty Block (label) bitmap_line::@30
Culled Empty Block (label) bitmap_line::@20
Culled Empty Block (label) sgn_u16::@3
Culled Empty Block (label) abs_u16::@3
Culled Empty Block (label) bitmap_clear::@2
Culled Empty Block (label) memset::@1
Culled Empty Block (label) bitmap_init::@3
Culled Empty Block (label) bitmap_init::@4
Culled Empty Block (label) bitmap_init::@11
Culled Empty Block (label) bitmap_init::@12
Culled Empty Block (label) bitmap_init::@9
Renumbering block @48 to @1
Renumbering block memset::@2 to memset::@1
Renumbering block memset::@4 to memset::@2
Renumbering block memset::@5 to memset::@3
Renumbering block bitmap_init::@5 to bitmap_init::@3
Renumbering block bitmap_init::@6 to bitmap_init::@4
Renumbering block bitmap_init::@7 to bitmap_init::@5
Renumbering block bitmap_init::@10 to bitmap_init::@6
Renumbering block bitmap_line::@6 to bitmap_line::@5
Renumbering block bitmap_line::@7 to bitmap_line::@6
Renumbering block bitmap_line::@8 to bitmap_line::@7
Renumbering block bitmap_line::@9 to bitmap_line::@8
Renumbering block bitmap_line::@12 to bitmap_line::@9
Renumbering block bitmap_line::@13 to bitmap_line::@10
Renumbering block bitmap_line::@14 to bitmap_line::@11
Renumbering block bitmap_line::@16 to bitmap_line::@12
Renumbering block bitmap_line::@17 to bitmap_line::@13
Renumbering block bitmap_line::@18 to bitmap_line::@14
Renumbering block bitmap_line::@19 to bitmap_line::@15
Renumbering block bitmap_line::@21 to bitmap_line::@16
Renumbering block bitmap_line::@23 to bitmap_line::@17
Renumbering block bitmap_line::@24 to bitmap_line::@18
Renumbering block main::@8 to main::@3
Renumbering block main::@13 to main::@4
Renumbering block main::@14 to main::@5
Renumbering block main::@15 to main::@6
Renumbering block main::@16 to main::@7
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@5
Adding NOP phi() at start of main::toD0181
Adding NOP phi() at start of sgn_u16::@1
Adding NOP phi() at start of bitmap_clear
Adding NOP phi() at start of bitmap_clear::@1
Adding NOP phi() at start of bitmap_init
Adding NOP phi() at start of bitmap_init::@6

FINAL CONTROL FLOW GRAPH
@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] phi()
  [2] call main 
  to:@end
@end: scope:[]  from @1
  [3] phi()

(void()) main()
main: scope:[main]  from @1
  [4] phi()
  [5] call bitmap_init 
  to:main::@5
main::@5: scope:[main]  from main
  [6] phi()
  [7] call bitmap_clear 
  to:main::@6
main::@6: scope:[main]  from main::@5
  [8] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3
  to:main::toD0181
main::toD0181: scope:[main]  from main::@6
  [9] phi()
  to:main::@4
main::@4: scope:[main]  from main::toD0181
  [10] *((const byte*) D018) ← (const byte) main::toD0181_return#0
  to:main::@1
main::@1: scope:[main]  from main::@4 main::@7
  [11] (byte) main::a#2 ← phi( main::@4/(byte) 0 main::@7/(byte) main::a#1 )
  [11] (byte) main::i#2 ← phi( main::@4/(byte) 0 main::@7/(byte) main::i#1 )
  [12] if((byte) main::i#2!=(byte) 8) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@1 main::@3
  [13] *((const byte*) SCREEN+(word) $3e7) ← ++ *((const byte*) SCREEN+(word) $3e7)
  to:main::@3
main::@2: scope:[main]  from main::@1
  [14] (word~) main::$4 ← (word)*((const byte*) COSTAB + (byte) main::a#2)
  [15] (word) bitmap_line::x1#0 ← (word~) main::$4 + (byte) $78
  [16] (word) bitmap_line::y1#0 ← (word)*((const byte*) SINTAB + (byte) main::a#2)
  [17] (word~) main::$8 ← (word)*((const byte*) COSTAB+(byte) $20 + (byte) main::a#2)
  [18] (word) bitmap_line::x2#0 ← (word~) main::$8 + (byte) $78
  [19] (word) bitmap_line::y2#0 ← (word)*((const byte*) SINTAB+(byte) $20 + (byte) main::a#2)
  [20] call bitmap_line 
  to:main::@7
main::@7: scope:[main]  from main::@2
  [21] (byte) main::a#1 ← (byte) main::a#2 + (byte) $20
  [22] (byte) main::i#1 ← ++ (byte) main::i#2
  to:main::@1

(void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2)
bitmap_line: scope:[bitmap_line]  from main::@2
  [23] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0
  [24] call abs_u16 
  [25] (word) abs_u16::return#0 ← (word) abs_u16::return#4
  to:bitmap_line::@12
bitmap_line::@12: scope:[bitmap_line]  from bitmap_line
  [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0
  [27] (word) abs_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0
  [28] call abs_u16 
  [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4
  to:bitmap_line::@13
bitmap_line::@13: scope:[bitmap_line]  from bitmap_line::@12
  [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1
  [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1
  to:bitmap_line::@18
bitmap_line::@18: scope:[bitmap_line]  from bitmap_line::@13
  [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4
  to:bitmap_line::@1
bitmap_line::@1: scope:[bitmap_line]  from bitmap_line::@13 bitmap_line::@18
  [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0
  [34] call sgn_u16 
  [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4
  to:bitmap_line::@14
bitmap_line::@14: scope:[bitmap_line]  from bitmap_line::@1
  [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0
  [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0
  [38] call sgn_u16 
  [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4
  to:bitmap_line::@15
bitmap_line::@15: scope:[bitmap_line]  from bitmap_line::@14
  [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1
  [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2
  to:bitmap_line::@5
bitmap_line::@5: scope:[bitmap_line]  from bitmap_line::@15
  [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1
  to:bitmap_line::@6
bitmap_line::@6: scope:[bitmap_line]  from bitmap_line::@5 bitmap_line::@7
  [43] (word) bitmap_line::e#3 ← phi( bitmap_line::@5/(word) bitmap_line::e#0 bitmap_line::@7/(word) bitmap_line::e#6 )
  [43] (word) bitmap_line::x#13 ← phi( bitmap_line::@5/(word) bitmap_line::x1#0 bitmap_line::@7/(word) bitmap_line::x#12 )
  [43] (word) bitmap_line::y#4 ← phi( bitmap_line::@5/(word) bitmap_line::y1#0 bitmap_line::@7/(word) bitmap_line::y#1 )
  [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4
  [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13
  [46] call bitmap_plot 
  to:bitmap_line::@16
bitmap_line::@16: scope:[bitmap_line]  from bitmap_line::@6
  [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0
  [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0
  [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7
  to:bitmap_line::@8
bitmap_line::@8: scope:[bitmap_line]  from bitmap_line::@16
  [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0
  [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0
  to:bitmap_line::@7
bitmap_line::@7: scope:[bitmap_line]  from bitmap_line::@16 bitmap_line::@8
  [52] (word) bitmap_line::e#6 ← phi( bitmap_line::@16/(word) bitmap_line::e#1 bitmap_line::@8/(word) bitmap_line::e#2 )
  [52] (word) bitmap_line::x#12 ← phi( bitmap_line::@16/(word) bitmap_line::x#13 bitmap_line::@8/(word) bitmap_line::x#1 )
  [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6
  to:bitmap_line::@3
bitmap_line::@3: scope:[bitmap_line]  from bitmap_line::@10 bitmap_line::@7
  [54] (word) bitmap_line::x#6 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@7/(word) bitmap_line::x#12 )
  [54] (word) bitmap_line::y#7 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@7/(word) bitmap_line::y#1 )
  [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7
  [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6
  [57] call bitmap_plot 
  to:bitmap_line::@return
bitmap_line::@return: scope:[bitmap_line]  from bitmap_line::@3 bitmap_line::@4
  [58] return 
  to:@return
bitmap_line::@2: scope:[bitmap_line]  from bitmap_line::@15
  [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1
  to:bitmap_line::@9
bitmap_line::@9: scope:[bitmap_line]  from bitmap_line::@10 bitmap_line::@2
  [60] (word) bitmap_line::e1#3 ← phi( bitmap_line::@10/(word) bitmap_line::e1#6 bitmap_line::@2/(word) bitmap_line::e1#0 )
  [60] (word) bitmap_line::x#7 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@2/(word) bitmap_line::x1#0 )
  [60] (word) bitmap_line::y#15 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@2/(word) bitmap_line::y1#0 )
  [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15
  [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7
  [63] call bitmap_plot 
  to:bitmap_line::@17
bitmap_line::@17: scope:[bitmap_line]  from bitmap_line::@9
  [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0
  [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0
  [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10
  to:bitmap_line::@11
bitmap_line::@11: scope:[bitmap_line]  from bitmap_line::@17
  [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0
  [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0
  to:bitmap_line::@10
bitmap_line::@10: scope:[bitmap_line]  from bitmap_line::@11 bitmap_line::@17
  [69] (word) bitmap_line::e1#6 ← phi( bitmap_line::@11/(word) bitmap_line::e1#2 bitmap_line::@17/(word) bitmap_line::e1#1 )
  [69] (word) bitmap_line::y#13 ← phi( bitmap_line::@11/(word) bitmap_line::y#2 bitmap_line::@17/(word) bitmap_line::y#15 )
  [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9
  to:bitmap_line::@3
bitmap_line::@4: scope:[bitmap_line]  from bitmap_line::@18
  [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0
  [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0
  [73] call bitmap_plot 
  to:bitmap_line::@return

(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
bitmap_plot: scope:[bitmap_plot]  from bitmap_line::@3 bitmap_line::@4 bitmap_line::@6 bitmap_line::@9
  [74] (word) bitmap_plot::x#4 ← phi( bitmap_line::@9/(word) bitmap_plot::x#3 bitmap_line::@3/(word) bitmap_plot::x#2 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@6/(word) bitmap_plot::x#1 )
  [74] (byte) bitmap_plot::y#4 ← phi( bitmap_line::@9/(byte) bitmap_plot::y#3 bitmap_line::@3/(byte) bitmap_plot::y#2 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@6/(byte) bitmap_plot::y#1 )
  [75] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4)
  [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8
  [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1
  [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4
  [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2)
  to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot]  from bitmap_plot
  [80] return 
  to:@return

(word()) sgn_u16((word) sgn_u16::w)
sgn_u16: scope:[sgn_u16]  from bitmap_line::@1 bitmap_line::@14
  [81] (word) sgn_u16::w#2 ← phi( bitmap_line::@1/(word) sgn_u16::w#0 bitmap_line::@14/(word) sgn_u16::w#1 )
  [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2
  [83] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80
  [84] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1
  to:sgn_u16::@return
sgn_u16::@1: scope:[sgn_u16]  from sgn_u16
  [85] phi()
  to:sgn_u16::@return
sgn_u16::@return: scope:[sgn_u16]  from sgn_u16 sgn_u16::@1
  [86] (word) sgn_u16::return#4 ← phi( sgn_u16::@1/(byte) -1 sgn_u16/(byte) 1 )
  [87] return 
  to:@return

(word()) abs_u16((word) abs_u16::w)
abs_u16: scope:[abs_u16]  from bitmap_line bitmap_line::@12
  [88] (word) abs_u16::w#2 ← phi( bitmap_line/(word) abs_u16::w#0 bitmap_line::@12/(word) abs_u16::w#1 )
  [89] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2
  [90] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80
  [91] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1
  to:abs_u16::@return
abs_u16::@1: scope:[abs_u16]  from abs_u16
  [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2
  to:abs_u16::@return
abs_u16::@return: scope:[abs_u16]  from abs_u16 abs_u16::@1
  [93] (word) abs_u16::return#4 ← phi( abs_u16::@1/(word) abs_u16::return#2 abs_u16/(word) abs_u16::w#2 )
  [94] return 
  to:@return

(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
bitmap_clear: scope:[bitmap_clear]  from main::@5
  [95] phi()
  [96] call memset 
  to:bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear]  from bitmap_clear
  [97] phi()
  [98] call memset 
  to:bitmap_clear::@return
bitmap_clear::@return: scope:[bitmap_clear]  from bitmap_clear::@1
  [99] return 
  to:@return

(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset]  from bitmap_clear bitmap_clear::@1
  [100] (byte) memset::c#4 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 )
  [100] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) SCREEN bitmap_clear::@1/(void*)(const byte*) BITMAP )
  [100] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 )
  [101] if((word) memset::num#2<=(byte) 0) goto memset::@return
  to:memset::@1
memset::@1: scope:[memset]  from memset
  [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2
  [103] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
  to:memset::@2
memset::@2: scope:[memset]  from memset::@1 memset::@3
  [104] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 )
  [105] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3
  to:memset::@return
memset::@return: scope:[memset]  from memset memset::@2
  [106] return 
  to:@return
memset::@3: scope:[memset]  from memset::@2
  [107] *((byte*) memset::dst#2) ← (byte) memset::c#4
  [108] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
  to:memset::@2

(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
bitmap_init: scope:[bitmap_init]  from main
  [109] phi()
  to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init]  from bitmap_init bitmap_init::@2
  [110] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
  [110] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 )
  [111] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
  [112] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1
  [113] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6
  to:bitmap_init::@2
bitmap_init::@6: scope:[bitmap_init]  from bitmap_init::@1
  [114] phi()
  to:bitmap_init::@2
bitmap_init::@2: scope:[bitmap_init]  from bitmap_init::@1 bitmap_init::@6
  [115] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 )
  [116] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
  [117] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1
  to:bitmap_init::@3
bitmap_init::@3: scope:[bitmap_init]  from bitmap_init::@2 bitmap_init::@4
  [118] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP bitmap_init::@4/(byte*) bitmap_init::yoffs#4 )
  [118] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 )
  [119] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
  [120] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
  [121] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4
  [122] *((const byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
  [123] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
  [124] *((const byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
  [125] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4
  to:bitmap_init::@5
bitmap_init::@5: scope:[bitmap_init]  from bitmap_init::@3
  [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8
  to:bitmap_init::@4
bitmap_init::@4: scope:[bitmap_init]  from bitmap_init::@3 bitmap_init::@5
  [127] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 )
  [128] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
  [129] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3
  to:bitmap_init::@return
bitmap_init::@return: scope:[bitmap_init]  from bitmap_init::@4
  [130] return 
  to:@return


VARIABLE REGISTER WEIGHTS
(word()) abs_u16((word) abs_u16::w)
(byte~) abs_u16::$0 4.0
(byte~) abs_u16::$1 4.0
(word) abs_u16::return
(word) abs_u16::return#0 4.0
(word) abs_u16::return#1 4.0
(word) abs_u16::return#2 4.0
(word) abs_u16::return#4 2.0
(word) abs_u16::w
(word) abs_u16::w#0 4.0
(word) abs_u16::w#1 4.0
(word) abs_u16::w#2 2.5
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
(byte) bitmap_clear::bgcol
(byte) bitmap_clear::col
(byte) bitmap_clear::fgcol
(byte*) bitmap_gfx
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
(byte~) bitmap_init::$4 22.0
(byte~) bitmap_init::$5 22.0
(byte~) bitmap_init::$6 22.0
(byte~) bitmap_init::$7 5.5
(byte) bitmap_init::bits
(byte) bitmap_init::bits#1 11.0
(byte) bitmap_init::bits#3 16.5
(byte) bitmap_init::bits#4 7.333333333333333
(byte*) bitmap_init::gfx
(byte*) bitmap_init::screen
(byte) bitmap_init::x
(byte) bitmap_init::x#1 16.5
(byte) bitmap_init::x#2 5.5
(byte) bitmap_init::y
(byte) bitmap_init::y#1 16.5
(byte) bitmap_init::y#2 5.5
(byte*) bitmap_init::yoffs
(byte*) bitmap_init::yoffs#1 22.0
(byte*) bitmap_init::yoffs#2 6.875
(byte*) bitmap_init::yoffs#4 11.0
(void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2)
(word) bitmap_line::dx
(word) bitmap_line::dx#0 7.775
(word) bitmap_line::dy
(word) bitmap_line::dy#0 8.638888888888888
(word) bitmap_line::e
(word) bitmap_line::e#0 4.0
(word) bitmap_line::e#1 134.66666666666666
(word) bitmap_line::e#2 202.0
(word) bitmap_line::e#3 40.8
(word) bitmap_line::e#6 151.5
(word) bitmap_line::e1
(word) bitmap_line::e1#0 4.0
(word) bitmap_line::e1#1 134.66666666666666
(word) bitmap_line::e1#2 202.0
(word) bitmap_line::e1#3 40.8
(word) bitmap_line::e1#6 151.5
(word) bitmap_line::sx
(word) bitmap_line::sx#0 6.800000000000001
(word) bitmap_line::sy
(word) bitmap_line::sy#0 7.846153846153847
(word) bitmap_line::x
(word) bitmap_line::x#1 101.0
(word) bitmap_line::x#12 202.0
(word) bitmap_line::x#13 58.00000000000001
(word) bitmap_line::x#15 57.714285714285715
(word) bitmap_line::x#6 102.0
(word) bitmap_line::x#7 76.25
(word) bitmap_line::x1
(word) bitmap_line::x1#0 0.7777777777777778
(word) bitmap_line::x2
(word) bitmap_line::x2#0 3.515151515151515
(word) bitmap_line::y
(word) bitmap_line::y#1 57.714285714285715
(word) bitmap_line::y#13 202.0
(word) bitmap_line::y#15 43.57142857142858
(word) bitmap_line::y#2 101.0
(word) bitmap_line::y#4 51.0
(word) bitmap_line::y#7 202.0
(word) bitmap_line::y1
(word) bitmap_line::y1#0 0.7599999999999999
(word) bitmap_line::y2
(word) bitmap_line::y2#0 3.625
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
(word~) bitmap_plot::$1 4.0
(byte~) bitmap_plot::$2 4.0
(byte*) bitmap_plot::plotter
(word) bitmap_plot::plotter#0 1.0
(byte*) bitmap_plot::plotter#1 3.0
(word) bitmap_plot::x
(word) bitmap_plot::x#0 4.0
(word) bitmap_plot::x#1 202.0
(word) bitmap_plot::x#2 4.0
(word) bitmap_plot::x#3 202.0
(word) bitmap_plot::x#4 52.5
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0 2.0
(byte) bitmap_plot::y#1 101.0
(byte) bitmap_plot::y#2 2.0
(byte) bitmap_plot::y#3 101.0
(byte) bitmap_plot::y#4 210.0
(byte*) bitmap_screen
(void()) main()
(word~) main::$4 22.0
(word~) main::$8 22.0
(byte) main::a
(byte) main::a#1 11.0
(byte) main::a#2 2.4444444444444446
(byte) main::i
(byte) main::i#1 22.0
(byte) main::i#2 3.3000000000000003
(byte*) main::toD0181_gfx
(byte) main::toD0181_return
(byte*) main::toD0181_screen
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(byte) memset::c
(byte) memset::c#4 1.375
(byte*) memset::dst
(byte*) memset::dst#1 22.0
(byte*) memset::dst#2 15.333333333333332
(byte*) memset::dst#4 4.0
(byte*) memset::end
(byte*) memset::end#0 2.1666666666666665
(word) memset::num
(word) memset::num#2 2.0
(void*) memset::return
(void*) memset::str
(void*) memset::str#3
(word()) sgn_u16((word) sgn_u16::w)
(byte~) sgn_u16::$0 4.0
(byte~) sgn_u16::$1 4.0
(word) sgn_u16::return
(word) sgn_u16::return#0 4.0
(word) sgn_u16::return#1 4.0
(word) sgn_u16::return#4 1.0
(word) sgn_u16::w
(word) sgn_u16::w#0 4.0
(word) sgn_u16::w#1 4.0
(word) sgn_u16::w#2 6.0

Initial phi equivalence classes
[ main::i#2 main::i#1 ]
[ main::a#2 main::a#1 ]
[ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
[ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ]
[ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ]
[ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
[ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ]
[ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ]
[ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ]
[ sgn_u16::return#4 ]
[ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ]
[ memset::num#2 ]
[ memset::str#3 ]
[ memset::c#4 ]
[ memset::dst#2 memset::dst#4 memset::dst#1 ]
[ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
[ bitmap_init::x#2 bitmap_init::x#1 ]
[ bitmap_init::y#2 bitmap_init::y#1 ]
[ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
Added variable main::$4 to live range equivalence class [ main::$4 ]
Added variable main::$8 to live range equivalence class [ main::$8 ]
Added variable bitmap_line::x2#0 to live range equivalence class [ bitmap_line::x2#0 ]
Added variable bitmap_line::y2#0 to live range equivalence class [ bitmap_line::y2#0 ]
Added variable abs_u16::return#0 to live range equivalence class [ abs_u16::return#0 ]
Added variable bitmap_line::dx#0 to live range equivalence class [ bitmap_line::dx#0 ]
Added variable abs_u16::return#1 to live range equivalence class [ abs_u16::return#1 ]
Added variable bitmap_line::dy#0 to live range equivalence class [ bitmap_line::dy#0 ]
Added variable sgn_u16::return#0 to live range equivalence class [ sgn_u16::return#0 ]
Added variable bitmap_line::sx#0 to live range equivalence class [ bitmap_line::sx#0 ]
Added variable sgn_u16::return#1 to live range equivalence class [ sgn_u16::return#1 ]
Added variable bitmap_line::sy#0 to live range equivalence class [ bitmap_line::sy#0 ]
Added variable bitmap_plot::plotter#0 to live range equivalence class [ bitmap_plot::plotter#0 ]
Added variable bitmap_plot::$1 to live range equivalence class [ bitmap_plot::$1 ]
Added variable bitmap_plot::plotter#1 to live range equivalence class [ bitmap_plot::plotter#1 ]
Added variable bitmap_plot::$2 to live range equivalence class [ bitmap_plot::$2 ]
Added variable sgn_u16::$0 to live range equivalence class [ sgn_u16::$0 ]
Added variable sgn_u16::$1 to live range equivalence class [ sgn_u16::$1 ]
Added variable abs_u16::$0 to live range equivalence class [ abs_u16::$0 ]
Added variable abs_u16::$1 to live range equivalence class [ abs_u16::$1 ]
Added variable memset::end#0 to live range equivalence class [ memset::end#0 ]
Added variable bitmap_init::$7 to live range equivalence class [ bitmap_init::$7 ]
Added variable bitmap_init::$4 to live range equivalence class [ bitmap_init::$4 ]
Added variable bitmap_init::$5 to live range equivalence class [ bitmap_init::$5 ]
Added variable bitmap_init::$6 to live range equivalence class [ bitmap_init::$6 ]
Complete equivalence classes
[ main::i#2 main::i#1 ]
[ main::a#2 main::a#1 ]
[ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
[ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ]
[ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ]
[ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
[ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ]
[ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ]
[ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ]
[ sgn_u16::return#4 ]
[ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ]
[ memset::num#2 ]
[ memset::str#3 ]
[ memset::c#4 ]
[ memset::dst#2 memset::dst#4 memset::dst#1 ]
[ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
[ bitmap_init::x#2 bitmap_init::x#1 ]
[ bitmap_init::y#2 bitmap_init::y#1 ]
[ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
[ main::$4 ]
[ main::$8 ]
[ bitmap_line::x2#0 ]
[ bitmap_line::y2#0 ]
[ abs_u16::return#0 ]
[ bitmap_line::dx#0 ]
[ abs_u16::return#1 ]
[ bitmap_line::dy#0 ]
[ sgn_u16::return#0 ]
[ bitmap_line::sx#0 ]
[ sgn_u16::return#1 ]
[ bitmap_line::sy#0 ]
[ bitmap_plot::plotter#0 ]
[ bitmap_plot::$1 ]
[ bitmap_plot::plotter#1 ]
[ bitmap_plot::$2 ]
[ sgn_u16::$0 ]
[ sgn_u16::$1 ]
[ abs_u16::$0 ]
[ abs_u16::$1 ]
[ memset::end#0 ]
[ bitmap_init::$7 ]
[ bitmap_init::$4 ]
[ bitmap_init::$5 ]
[ bitmap_init::$6 ]
Allocated zp[1]:2 [ main::i#2 main::i#1 ]
Allocated zp[1]:3 [ main::a#2 main::a#1 ]
Allocated zp[2]:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
Allocated zp[2]:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ]
Allocated zp[2]:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ]
Allocated zp[2]:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
Allocated zp[1]:12 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ]
Allocated zp[2]:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ]
Allocated zp[2]:15 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ]
Allocated zp[2]:17 [ sgn_u16::return#4 ]
Allocated zp[2]:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ]
Allocated zp[2]:21 [ memset::num#2 ]
Allocated zp[2]:23 [ memset::str#3 ]
Allocated zp[1]:25 [ memset::c#4 ]
Allocated zp[2]:26 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
Allocated zp[1]:28 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
Allocated zp[1]:29 [ bitmap_init::x#2 bitmap_init::x#1 ]
Allocated zp[1]:30 [ bitmap_init::y#2 bitmap_init::y#1 ]
Allocated zp[2]:31 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
Allocated zp[2]:33 [ main::$4 ]
Allocated zp[2]:35 [ main::$8 ]
Allocated zp[2]:37 [ bitmap_line::x2#0 ]
Allocated zp[2]:39 [ bitmap_line::y2#0 ]
Allocated zp[2]:41 [ abs_u16::return#0 ]
Allocated zp[2]:43 [ bitmap_line::dx#0 ]
Allocated zp[2]:45 [ abs_u16::return#1 ]
Allocated zp[2]:47 [ bitmap_line::dy#0 ]
Allocated zp[2]:49 [ sgn_u16::return#0 ]
Allocated zp[2]:51 [ bitmap_line::sx#0 ]
Allocated zp[2]:53 [ sgn_u16::return#1 ]
Allocated zp[2]:55 [ bitmap_line::sy#0 ]
Allocated zp[2]:57 [ bitmap_plot::plotter#0 ]
Allocated zp[2]:59 [ bitmap_plot::$1 ]
Allocated zp[2]:61 [ bitmap_plot::plotter#1 ]
Allocated zp[1]:63 [ bitmap_plot::$2 ]
Allocated zp[1]:64 [ sgn_u16::$0 ]
Allocated zp[1]:65 [ sgn_u16::$1 ]
Allocated zp[1]:66 [ abs_u16::$0 ]
Allocated zp[1]:67 [ abs_u16::$1 ]
Allocated zp[2]:68 [ memset::end#0 ]
Allocated zp[1]:70 [ bitmap_init::$7 ]
Allocated zp[1]:71 [ bitmap_init::$4 ]
Allocated zp[1]:72 [ bitmap_init::$5 ]
Allocated zp[1]:73 [ bitmap_init::$6 ]

INITIAL ASM
Target platform is c64basic / MOS6502X
  // File Comments
// Tests the simple bitmap plotter
// Plots a few lines using the bresenham line algorithm
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(__bbegin)
.pc = $80d "Program"
  // Global Constants & labels
  .label D011 = $d011
  .const VIC_BMM = $20
  .const VIC_DEN = $10
  .const VIC_RSEL = 8
  .label D018 = $d018
  .const WHITE = 1
  .label BITMAP = $2000
  .label SCREEN = $400
  .label COSTAB = SINTAB+$40
  // @begin
__bbegin:
  // [1] phi from @begin to @1 [phi:@begin->@1]
__b1_from___bbegin:
  jmp __b1
  // @1
__b1:
  // [2] call main 
  // [4] phi from @1 to main [phi:@1->main]
main_from___b1:
  jsr main
  // [3] phi from @1 to @end [phi:@1->@end]
__bend_from___b1:
  jmp __bend
  // @end
__bend:
  // main
main: {
    .const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f
    .label __4 = $21
    .label __8 = $23
    .label a = 3
    .label i = 2
    // [5] call bitmap_init 
    // [109] phi from main to bitmap_init [phi:main->bitmap_init]
  bitmap_init_from_main:
    jsr bitmap_init
    // [6] phi from main to main::@5 [phi:main->main::@5]
  __b5_from_main:
    jmp __b5
    // main::@5
  __b5:
    // [7] call bitmap_clear 
    // [95] phi from main::@5 to bitmap_clear [phi:main::@5->bitmap_clear]
  bitmap_clear_from___b5:
    jsr bitmap_clear
    jmp __b6
    // main::@6
  __b6:
    // [8] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2 
    lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
    sta D011
    // [9] phi from main::@6 to main::toD0181 [phi:main::@6->main::toD0181]
  toD0181_from___b6:
    jmp toD0181
    // main::toD0181
  toD0181:
    jmp __b4
    // main::@4
  __b4:
    // [10] *((const byte*) D018) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
    // [11] phi from main::@4 to main::@1 [phi:main::@4->main::@1]
  __b1_from___b4:
    // [11] phi (byte) main::a#2 = (byte) 0 [phi:main::@4->main::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z a
    // [11] phi (byte) main::i#2 = (byte) 0 [phi:main::@4->main::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp __b1
    // main::@1
  __b1:
    // [12] if((byte) main::i#2!=(byte) 8) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z i
    bne __b2
    jmp __b3
    // main::@3
  __b3:
    // [13] *((const byte*) SCREEN+(word) $3e7) ← ++ *((const byte*) SCREEN+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc SCREEN+$3e7
    jmp __b3
    // main::@2
  __b2:
    // [14] (word~) main::$4 ← (word)*((const byte*) COSTAB + (byte) main::a#2) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy.z a
    lda COSTAB,y
    sta.z __4
    lda #0
    sta.z __4+1
    // [15] (word) bitmap_line::x1#0 ← (word~) main::$4 + (byte) $78 -- vwuz1=vwuz2_plus_vbuc1 
    lda #$78
    clc
    adc.z __4
    sta.z bitmap_line.x1
    lda #0
    adc.z __4+1
    sta.z bitmap_line.x1+1
    // [16] (word) bitmap_line::y1#0 ← (word)*((const byte*) SINTAB + (byte) main::a#2) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy.z a
    lda SINTAB,y
    sta.z bitmap_line.y1
    lda #0
    sta.z bitmap_line.y1+1
    // [17] (word~) main::$8 ← (word)*((const byte*) COSTAB+(byte) $20 + (byte) main::a#2) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy.z a
    lda COSTAB+$20,y
    sta.z __8
    lda #0
    sta.z __8+1
    // [18] (word) bitmap_line::x2#0 ← (word~) main::$8 + (byte) $78 -- vwuz1=vwuz2_plus_vbuc1 
    lda #$78
    clc
    adc.z __8
    sta.z bitmap_line.x2
    lda #0
    adc.z __8+1
    sta.z bitmap_line.x2+1
    // [19] (word) bitmap_line::y2#0 ← (word)*((const byte*) SINTAB+(byte) $20 + (byte) main::a#2) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy.z a
    lda SINTAB+$20,y
    sta.z bitmap_line.y2
    lda #0
    sta.z bitmap_line.y2+1
    // [20] call bitmap_line 
    jsr bitmap_line
    jmp __b7
    // main::@7
  __b7:
    // [21] (byte) main::a#1 ← (byte) main::a#2 + (byte) $20 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z a
    axs #-[$20]
    stx.z a
    // [22] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [11] phi from main::@7 to main::@1 [phi:main::@7->main::@1]
  __b1_from___b7:
    // [11] phi (byte) main::a#2 = (byte) main::a#1 [phi:main::@7->main::@1#0] -- register_copy 
    // [11] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#1] -- register_copy 
    jmp __b1
}
  // bitmap_line
// Draw a line on the bitmap using bresenhams algorithm
// bitmap_line(word zp(8) x1, word zp(6) y1, word zp($25) x2, word zp($27) y2)
bitmap_line: {
    .label dx = $2b
    .label dy = $2f
    .label sx = $33
    .label sy = $37
    .label e1 = $a
    .label e = 4
    .label y = 6
    .label x = 8
    .label x1 = 8
    .label y1 = 6
    .label x2 = $25
    .label y2 = $27
    // [23] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 -- vwuz1=vwuz2_minus_vwuz3 
    lda.z x2
    sec
    sbc.z x1
    sta.z abs_u16.w
    lda.z x2+1
    sbc.z x1+1
    sta.z abs_u16.w+1
    // [24] call abs_u16 
    // [88] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16]
  abs_u16_from_bitmap_line:
    // [88] phi (word) abs_u16::w#2 = (word) abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy 
    jsr abs_u16
    // [25] (word) abs_u16::return#0 ← (word) abs_u16::return#4 -- vwuz1=vwuz2 
    lda.z abs_u16.return_2
    sta.z abs_u16.return
    lda.z abs_u16.return_2+1
    sta.z abs_u16.return+1
    jmp __b12
    // bitmap_line::@12
  __b12:
    // [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 -- vwuz1=vwuz2 
    lda.z abs_u16.return
    sta.z dx
    lda.z abs_u16.return+1
    sta.z dx+1
    // [27] (word) abs_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 -- vwuz1=vwuz2_minus_vwuz3 
    lda.z y2
    sec
    sbc.z y1
    sta.z abs_u16.w
    lda.z y2+1
    sbc.z y1+1
    sta.z abs_u16.w+1
    // [28] call abs_u16 
    // [88] phi from bitmap_line::@12 to abs_u16 [phi:bitmap_line::@12->abs_u16]
  abs_u16_from___b12:
    // [88] phi (word) abs_u16::w#2 = (word) abs_u16::w#1 [phi:bitmap_line::@12->abs_u16#0] -- register_copy 
    jsr abs_u16
    // [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4 -- vwuz1=vwuz2 
    lda.z abs_u16.return_2
    sta.z abs_u16.return_1
    lda.z abs_u16.return_2+1
    sta.z abs_u16.return_1+1
    jmp __b13
    // bitmap_line::@13
  __b13:
    // [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 -- vwuz1=vwuz2 
    lda.z abs_u16.return_1
    sta.z dy
    lda.z abs_u16.return_1+1
    sta.z dy+1
    // [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 -- vwuz1_neq_0_then_la1 
    lda.z dx
    bne __b1
    lda.z dx+1
    bne __b1
    jmp __b18
    // bitmap_line::@18
  __b18:
    // [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 -- vwuz1_eq_0_then_la1 
    lda.z dy
    bne !+
    lda.z dy+1
    beq __b4
  !:
    jmp __b1
    // bitmap_line::@1
  __b1:
    // [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 -- vwuz1=vwuz2_minus_vwuz3 
    lda.z x2
    sec
    sbc.z x1
    sta.z sgn_u16.w
    lda.z x2+1
    sbc.z x1+1
    sta.z sgn_u16.w+1
    // [34] call sgn_u16 
    // [81] phi from bitmap_line::@1 to sgn_u16 [phi:bitmap_line::@1->sgn_u16]
  sgn_u16_from___b1:
    // [81] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#0 [phi:bitmap_line::@1->sgn_u16#0] -- register_copy 
    jsr sgn_u16
    // [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 -- vwuz1=vwuz2 
    lda.z sgn_u16.return_2
    sta.z sgn_u16.return
    lda.z sgn_u16.return_2+1
    sta.z sgn_u16.return+1
    jmp __b14
    // bitmap_line::@14
  __b14:
    // [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 -- vwuz1=vwuz2 
    lda.z sgn_u16.return
    sta.z sx
    lda.z sgn_u16.return+1
    sta.z sx+1
    // [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 -- vwuz1=vwuz2_minus_vwuz3 
    lda.z y2
    sec
    sbc.z y1
    sta.z sgn_u16.w
    lda.z y2+1
    sbc.z y1+1
    sta.z sgn_u16.w+1
    // [38] call sgn_u16 
    // [81] phi from bitmap_line::@14 to sgn_u16 [phi:bitmap_line::@14->sgn_u16]
  sgn_u16_from___b14:
    // [81] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#1 [phi:bitmap_line::@14->sgn_u16#0] -- register_copy 
    jsr sgn_u16
    // [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 -- vwuz1=vwuz2 
    lda.z sgn_u16.return_2
    sta.z sgn_u16.return_1
    lda.z sgn_u16.return_2+1
    sta.z sgn_u16.return_1+1
    jmp __b15
    // bitmap_line::@15
  __b15:
    // [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 -- vwuz1=vwuz2 
    lda.z sgn_u16.return_1
    sta.z sy
    lda.z sgn_u16.return_1+1
    sta.z sy+1
    // [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 -- vwuz1_gt_vwuz2_then_la1 
    lda.z dy+1
    cmp.z dx+1
    bcc __b2
    bne !+
    lda.z dy
    cmp.z dx
    bcc __b2
  !:
    jmp __b5
    // bitmap_line::@5
  __b5:
    // [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 
    lda.z dx+1
    lsr
    sta.z e+1
    lda.z dx
    ror
    sta.z e
    // [43] phi from bitmap_line::@5 bitmap_line::@7 to bitmap_line::@6 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6]
  __b6_from___b5:
  __b6_from___b7:
    // [43] phi (word) bitmap_line::e#3 = (word) bitmap_line::e#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#0] -- register_copy 
    // [43] phi (word) bitmap_line::x#13 = (word) bitmap_line::x1#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#1] -- register_copy 
    // [43] phi (word) bitmap_line::y#4 = (word) bitmap_line::y1#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#2] -- register_copy 
    jmp __b6
    // bitmap_line::@6
  __b6:
    // [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 -- vbuz1=_byte_vwuz2 
    lda.z y
    sta.z bitmap_plot.y
    // [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 -- vwuz1=vwuz2 
    lda.z x
    sta.z bitmap_plot.x
    lda.z x+1
    sta.z bitmap_plot.x+1
    // [46] call bitmap_plot 
    // [74] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot]
  bitmap_plot_from___b6:
    // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#1 [phi:bitmap_line::@6->bitmap_plot#0] -- register_copy 
    // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line::@6->bitmap_plot#1] -- register_copy 
    jsr bitmap_plot
    jmp __b16
    // bitmap_line::@16
  __b16:
    // [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z y
    clc
    adc.z sy
    sta.z y
    lda.z y+1
    adc.z sy+1
    sta.z y+1
    // [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z e
    clc
    adc.z dx
    sta.z e
    lda.z e+1
    adc.z dx+1
    sta.z e+1
    // [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 -- vwuz1_ge_vwuz2_then_la1 
    lda.z e+1
    cmp.z dy+1
    bne !+
    lda.z e
    cmp.z dy
    beq __b7_from___b16
  !:
    bcc __b7_from___b16
    jmp __b8
    // bitmap_line::@8
  __b8:
    // [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z x
    clc
    adc.z sx
    sta.z x
    lda.z x+1
    adc.z sx+1
    sta.z x+1
    // [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 
    lda.z e
    sec
    sbc.z dy
    sta.z e
    lda.z e+1
    sbc.z dy+1
    sta.z e+1
    // [52] phi from bitmap_line::@16 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7]
  __b7_from___b16:
  __b7_from___b8:
    // [52] phi (word) bitmap_line::e#6 = (word) bitmap_line::e#1 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#0] -- register_copy 
    // [52] phi (word) bitmap_line::x#12 = (word) bitmap_line::x#13 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#1] -- register_copy 
    jmp __b7
    // bitmap_line::@7
  __b7:
    // [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 -- vwuz1_neq_vwuz2_then_la1 
    lda.z y+1
    cmp.z y2+1
    bne __b6_from___b7
    lda.z y
    cmp.z y2
    bne __b6_from___b7
    // [54] phi from bitmap_line::@10 bitmap_line::@7 to bitmap_line::@3 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3]
  __b3_from___b10:
  __b3_from___b7:
    // [54] phi (word) bitmap_line::x#6 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#0] -- register_copy 
    // [54] phi (word) bitmap_line::y#7 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#1] -- register_copy 
    jmp __b3
    // bitmap_line::@3
  __b3:
    // [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 -- vbuz1=_byte_vwuz2 
    lda.z y
    sta.z bitmap_plot.y
    // [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 -- vwuz1=vwuz2 
    lda.z x
    sta.z bitmap_plot.x
    lda.z x+1
    sta.z bitmap_plot.x+1
    // [57] call bitmap_plot 
    // [74] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot]
  bitmap_plot_from___b3:
    // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#2 [phi:bitmap_line::@3->bitmap_plot#0] -- register_copy 
    // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line::@3->bitmap_plot#1] -- register_copy 
    jsr bitmap_plot
    jmp __breturn
    // bitmap_line::@return
  __breturn:
    // [58] return 
    rts
    // bitmap_line::@2
  __b2:
    // [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 
    lda.z dy+1
    lsr
    sta.z e1+1
    lda.z dy
    ror
    sta.z e1
    // [60] phi from bitmap_line::@10 bitmap_line::@2 to bitmap_line::@9 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9]
  __b9_from___b10:
  __b9_from___b2:
    // [60] phi (word) bitmap_line::e1#3 = (word) bitmap_line::e1#6 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#0] -- register_copy 
    // [60] phi (word) bitmap_line::x#7 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#1] -- register_copy 
    // [60] phi (word) bitmap_line::y#15 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#2] -- register_copy 
    jmp __b9
    // bitmap_line::@9
  __b9:
    // [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 -- vbuz1=_byte_vwuz2 
    lda.z y
    sta.z bitmap_plot.y
    // [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 -- vwuz1=vwuz2 
    lda.z x
    sta.z bitmap_plot.x
    lda.z x+1
    sta.z bitmap_plot.x+1
    // [63] call bitmap_plot 
    // [74] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot]
  bitmap_plot_from___b9:
    // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#3 [phi:bitmap_line::@9->bitmap_plot#0] -- register_copy 
    // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line::@9->bitmap_plot#1] -- register_copy 
    jsr bitmap_plot
    jmp __b17
    // bitmap_line::@17
  __b17:
    // [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z x
    clc
    adc.z sx
    sta.z x
    lda.z x+1
    adc.z sx+1
    sta.z x+1
    // [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z e1
    clc
    adc.z dy
    sta.z e1
    lda.z e1+1
    adc.z dy+1
    sta.z e1+1
    // [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 -- vwuz1_ge_vwuz2_then_la1 
    lda.z e1+1
    cmp.z dx+1
    bne !+
    lda.z e1
    cmp.z dx
    beq __b10_from___b17
  !:
    bcc __b10_from___b17
    jmp __b11
    // bitmap_line::@11
  __b11:
    // [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z y
    clc
    adc.z sy
    sta.z y
    lda.z y+1
    adc.z sy+1
    sta.z y+1
    // [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 
    lda.z e1
    sec
    sbc.z dx
    sta.z e1
    lda.z e1+1
    sbc.z dx+1
    sta.z e1+1
    // [69] phi from bitmap_line::@11 bitmap_line::@17 to bitmap_line::@10 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10]
  __b10_from___b11:
  __b10_from___b17:
    // [69] phi (word) bitmap_line::e1#6 = (word) bitmap_line::e1#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#0] -- register_copy 
    // [69] phi (word) bitmap_line::y#13 = (word) bitmap_line::y#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#1] -- register_copy 
    jmp __b10
    // bitmap_line::@10
  __b10:
    // [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 -- vwuz1_neq_vwuz2_then_la1 
    lda.z x+1
    cmp.z x2+1
    bne __b9_from___b10
    lda.z x
    cmp.z x2
    bne __b9_from___b10
    jmp __b3_from___b10
    // bitmap_line::@4
  __b4:
    // [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 -- vbuz1=_byte_vwuz2 
    lda.z y1
    sta.z bitmap_plot.y
    // [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0 -- vwuz1=vwuz2 
    lda.z x1
    sta.z bitmap_plot.x
    lda.z x1+1
    sta.z bitmap_plot.x+1
    // [73] call bitmap_plot 
    // [74] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot]
  bitmap_plot_from___b4:
    // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy 
    // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy 
    jsr bitmap_plot
    jmp __breturn
}
  // bitmap_plot
// Plot a single dot in the bitmap
// bitmap_plot(word zp($d) x, byte zp($c) y)
bitmap_plot: {
    .label __1 = $3b
    .label __2 = $3f
    .label plotter = $39
    .label plotter_1 = $3d
    .label x = $d
    .label y = $c
    // [75] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 
    ldy.z y
    lda bitmap_plot_yhi,y
    sta.z plotter+1
    lda bitmap_plot_ylo,y
    sta.z plotter
    // [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 
    lda.z x
    and #<$fff8
    sta.z __1
    lda.z x+1
    and #>$fff8
    sta.z __1+1
    // [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz2_plus_vwuz3 
    lda.z plotter
    clc
    adc.z __1
    sta.z plotter_1
    lda.z plotter+1
    adc.z __1+1
    sta.z plotter_1+1
    // [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 -- vbuz1=_lo_vwuz2 
    lda.z x
    sta.z __2
    // [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 
    ldy #0
    lda (plotter_1),y
    ldy.z __2
    ora bitmap_plot_bit,y
    ldy #0
    sta (plotter_1),y
    jmp __breturn
    // bitmap_plot::@return
  __breturn:
    // [80] return 
    rts
}
  // sgn_u16
// Get the sign of a 16-bit unsigned number treated as a signed number.
// Returns unsigned -1 if the number is
// sgn_u16(word zp($f) w)
sgn_u16: {
    .label __0 = $40
    .label __1 = $41
    .label w = $f
    .label return = $31
    .label return_1 = $35
    .label return_2 = $11
    // [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 -- vbuz1=_hi_vwuz2 
    lda.z w+1
    sta.z __0
    // [83] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 
    lda #$80
    and.z __0
    sta.z __1
    // [84] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 -- vbuc1_neq_vbuz1_then_la1 
    lda #0
    cmp.z __1
    bne __b1_from_sgn_u16
    // [86] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return]
  __breturn_from_sgn_u16:
    // [86] phi (word) sgn_u16::return#4 = (byte) 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 
    lda #<1
    sta.z return_2
    lda #>1
    sta.z return_2+1
    jmp __breturn
    // [85] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1]
  __b1_from_sgn_u16:
    jmp __b1
    // sgn_u16::@1
  __b1:
    // [86] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return]
  __breturn_from___b1:
    // [86] phi (word) sgn_u16::return#4 = (byte) -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 
    lda #<-1
    sta.z return_2
    lda #>-1
    sta.z return_2+1
    jmp __breturn
    // sgn_u16::@return
  __breturn:
    // [87] return 
    rts
}
  // abs_u16
// Get the absolute value of a 16-bit unsigned number treated as a signed number.
// abs_u16(word zp($13) w)
abs_u16: {
    .label __0 = $42
    .label __1 = $43
    .label w = $13
    .label return = $29
    .label return_1 = $2d
    .label return_2 = $13
    // [89] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 -- vbuz1=_hi_vwuz2 
    lda.z w+1
    sta.z __0
    // [90] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1 
    lda #$80
    and.z __0
    sta.z __1
    // [91] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 -- vbuc1_neq_vbuz1_then_la1 
    lda #0
    cmp.z __1
    bne __b1
    // [93] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return]
  __breturn_from_abs_u16:
  __breturn_from___b1:
    // [93] phi (word) abs_u16::return#4 = (word) abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy 
    jmp __breturn
    // abs_u16::@1
  __b1:
    // [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 -- vwuz1=_neg_vwuz1 
    sec
    lda #0
    sbc.z return_2
    sta.z return_2
    lda #0
    sbc.z return_2+1
    sta.z return_2+1
    jmp __breturn_from___b1
    // abs_u16::@return
  __breturn:
    // [94] return 
    rts
}
  // bitmap_clear
// Clear all graphics on the bitmap
// bgcol - the background color to fill the screen with
// fgcol - the foreground color to fill the screen with
bitmap_clear: {
    .const col = WHITE*$10
    // [96] call memset 
    // [100] phi from bitmap_clear to memset [phi:bitmap_clear->memset]
  memset_from_bitmap_clear:
    // [100] phi (byte) memset::c#4 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuz1=vbuc1 
    lda #col
    sta.z memset.c
    // [100] phi (void*) memset::str#3 = (void*)(const byte*) SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 
    lda #<SCREEN
    sta.z memset.str
    lda #>SCREEN
    sta.z memset.str+1
    // [100] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 
    lda #<$3e8
    sta.z memset.num
    lda #>$3e8
    sta.z memset.num+1
    jsr memset
    // [97] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1]
  __b1_from_bitmap_clear:
    jmp __b1
    // bitmap_clear::@1
  __b1:
    // [98] call memset 
    // [100] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset]
  memset_from___b1:
    // [100] phi (byte) memset::c#4 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuz1=vbuc1 
    lda #0
    sta.z memset.c
    // [100] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 
    lda #<BITMAP
    sta.z memset.str
    lda #>BITMAP
    sta.z memset.str+1
    // [100] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 
    lda #<$1f40
    sta.z memset.num
    lda #>$1f40
    sta.z memset.num+1
    jsr memset
    jmp __breturn
    // bitmap_clear::@return
  __breturn:
    // [99] 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* zp($17) str, byte zp($19) c, word zp($15) num)
memset: {
    .label end = $44
    .label dst = $1a
    .label num = $15
    .label str = $17
    .label c = $19
    // [101] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 
    lda.z num
    bne !+
    lda.z num+1
    beq __breturn
  !:
    jmp __b1
    // memset::@1
  __b1:
    // [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz3 
    lda.z str
    clc
    adc.z num
    sta.z end
    lda.z str+1
    adc.z num+1
    sta.z end+1
    // [103] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 -- pbuz1=pbuz2 
    lda.z str
    sta.z dst
    lda.z str+1
    sta.z dst+1
    // [104] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2]
  __b2_from___b1:
  __b2_from___b3:
    // [104] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy 
    jmp __b2
    // memset::@2
  __b2:
    // [105] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 
    lda.z dst+1
    cmp.z end+1
    bne __b3
    lda.z dst
    cmp.z end
    bne __b3
    jmp __breturn
    // memset::@return
  __breturn:
    // [106] return 
    rts
    // memset::@3
  __b3:
    // [107] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuz2 
    lda.z c
    ldy #0
    sta (dst),y
    // [108] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    jmp __b2_from___b3
}
  // bitmap_init
// Initialize bitmap plotting tables
bitmap_init: {
    .label __4 = $47
    .label __5 = $48
    .label __6 = $49
    .label __7 = $46
    .label bits = $1c
    .label x = $1d
    .label y = $1e
    .label yoffs = $1f
    // [110] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
  __b1_from_bitmap_init:
    // [110] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z x
    // [110] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 
    lda #$80
    sta.z bits
    jmp __b1
    // [110] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1]
  __b1_from___b2:
    // [110] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy 
    // [110] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy 
    jmp __b1
    // bitmap_init::@1
  __b1:
    // [111] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z bits
    ldy.z x
    sta bitmap_plot_bit,y
    // [112] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 
    lsr.z bits
    // [113] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuz1_neq_0_then_la1 
    lda.z bits
    cmp #0
    bne __b6_from___b1
    // [115] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2]
  __b2_from___b1:
    // [115] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 
    lda #$80
    sta.z bits
    jmp __b2
    // [114] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6]
  __b6_from___b1:
    jmp __b6
    // bitmap_init::@6
  __b6:
    // [115] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2]
  __b2_from___b6:
    // [115] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy 
    jmp __b2
    // bitmap_init::@2
  __b2:
    // [116] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 
    inc.z x
    // [117] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1 
    lda.z x
    cmp #0
    bne __b1_from___b2
    // [118] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3]
  __b3_from___b2:
    // [118] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 
    lda #<BITMAP
    sta.z yoffs
    lda #>BITMAP
    sta.z yoffs+1
    // [118] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 
    lda #0
    sta.z y
    jmp __b3
    // [118] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3]
  __b3_from___b4:
    // [118] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy 
    // [118] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy 
    jmp __b3
    // bitmap_init::@3
  __b3:
    // [119] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuz2_band_vbuc1 
    lda #7
    and.z y
    sta.z __7
    // [120] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 
    lda.z yoffs
    sta.z __4
    // [121] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 
    lda.z __7
    ora.z __4
    sta.z __5
    // [122] *((const byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z __5
    ldy.z y
    sta bitmap_plot_ylo,y
    // [123] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 
    lda.z yoffs+1
    sta.z __6
    // [124] *((const byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2 
    lda.z __6
    ldy.z y
    sta bitmap_plot_yhi,y
    // [125] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 
    lda #7
    cmp.z __7
    bne __b4_from___b3
    jmp __b5
    // bitmap_init::@5
  __b5:
    // [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 
    clc
    lda.z yoffs
    adc #<$28*8
    sta.z yoffs
    lda.z yoffs+1
    adc #>$28*8
    sta.z yoffs+1
    // [127] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4]
  __b4_from___b3:
  __b4_from___b5:
    // [127] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy 
    jmp __b4
    // bitmap_init::@4
  __b4:
    // [128] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 
    inc.z y
    // [129] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1 
    lda.z y
    cmp #0
    bne __b3_from___b4
    jmp __breturn
    // bitmap_init::@return
  __breturn:
    // [130] return 
    rts
}
  // File Data
  // Tables for the plotter - initialized by calling bitmap_init();
  bitmap_plot_ylo: .fill $100, 0
  bitmap_plot_yhi: .fill $100, 0
  bitmap_plot_bit: .fill $100, 0
  .align $100
SINTAB:
.fill $180, 99.5+99.5*sin(i*2*PI/256) 

REGISTER UPLIFT POTENTIAL REGISTERS
Equivalence Class zp[1]:71 [ bitmap_init::$4 ] has ALU potential.
Statement [8] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [10] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [14] (word~) main::$4 ← (word)*((const byte*) COSTAB + (byte) main::a#2) [ main::i#2 main::a#2 main::$4 ] ( main:2 [ main::i#2 main::a#2 main::$4 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::a#2 main::a#1 ]
Statement [15] (word) bitmap_line::x1#0 ← (word~) main::$4 + (byte) $78 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ) always clobbers reg byte a 
Statement [16] (word) bitmap_line::y1#0 ← (word)*((const byte*) SINTAB + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 ] ) always clobbers reg byte a 
Statement [17] (word~) main::$8 ← (word)*((const byte*) COSTAB+(byte) $20 + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 main::$8 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 main::$8 ] ) always clobbers reg byte a 
Statement [18] (word) bitmap_line::x2#0 ← (word~) main::$8 + (byte) $78 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ) always clobbers reg byte a 
Statement [19] (word) bitmap_line::y2#0 ← (word)*((const byte*) SINTAB+(byte) $20 + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ) always clobbers reg byte a 
Statement [21] (byte) main::a#1 ← (byte) main::a#2 + (byte) $20 [ main::i#2 main::a#1 ] ( main:2 [ main::i#2 main::a#1 ] ) always clobbers reg byte a 
Statement [23] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#0 ] ) always clobbers reg byte a 
Statement [25] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#0 ] ) always clobbers reg byte a 
Statement [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 ] ) always clobbers reg byte a 
Statement [27] (word) abs_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ) always clobbers reg byte a 
Statement [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ) always clobbers reg byte a 
Statement [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a 
Statement [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a 
Statement [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a 
Statement [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ) always clobbers reg byte a 
Statement [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ) always clobbers reg byte a 
Statement [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ) always clobbers reg byte a 
Statement [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ) always clobbers reg byte a 
Statement [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ) always clobbers reg byte a 
Statement [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a 
Statement [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a 
Statement [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ) always clobbers reg byte a 
Statement [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ) always clobbers reg byte a 
Statement [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:12 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ]
Statement [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ) always clobbers reg byte a 
Statement [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a 
Statement [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a 
Statement [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ) always clobbers reg byte a 
Statement [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ) always clobbers reg byte a 
Statement [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ) always clobbers reg byte a 
Statement [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x#6 bitmap_plot::y#2 ] ) always clobbers reg byte a 
Statement [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_plot::y#2 bitmap_plot::x#2 ] ) always clobbers reg byte a 
Statement [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ) always clobbers reg byte a 
Statement [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ) always clobbers reg byte a 
Statement [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ) always clobbers reg byte a 
Statement [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ) always clobbers reg byte a 
Statement [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a 
Statement [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a 
Statement [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ) always clobbers reg byte a 
Statement [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ) always clobbers reg byte a 
Statement [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ) always clobbers reg byte a 
Statement [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_plot::y#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_plot::y#0 ] ) always clobbers reg byte a 
Statement [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0 [ bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a 
Statement [75] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a 
Statement [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a 
Statement [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] ) always clobbers reg byte a 
Statement [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a 
Statement [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ]
Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::a#2 main::a#1 ]
Statement [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 [ sgn_u16::$0 ] ( main:2::bitmap_line:20::sgn_u16:34 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::bitmap_line:20::sgn_u16:38 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] ) always clobbers reg byte a 
Statement [89] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 [ abs_u16::w#2 abs_u16::$0 ] ( main:2::bitmap_line:20::abs_u16:24 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_line:20::abs_u16:28 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] ) always clobbers reg byte a 
Statement [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:20::abs_u16:24 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] main:2::bitmap_line:20::abs_u16:28 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] ) always clobbers reg byte a 
Statement [101] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:7::memset:96 [ memset::num#2 memset::str#3 memset::c#4 ] main:2::bitmap_clear:7::memset:98 [ memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:25 [ memset::c#4 ]
Statement [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:7::memset:96 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::bitmap_clear:7::memset:98 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a 
Statement [103] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a 
Statement [105] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a 
Statement [107] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:25 [ memset::c#4 ]
Statement [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:30 [ bitmap_init::y#2 bitmap_init::y#1 ]
Statement [8] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [10] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [14] (word~) main::$4 ← (word)*((const byte*) COSTAB + (byte) main::a#2) [ main::i#2 main::a#2 main::$4 ] ( main:2 [ main::i#2 main::a#2 main::$4 ] ) always clobbers reg byte a 
Statement [15] (word) bitmap_line::x1#0 ← (word~) main::$4 + (byte) $78 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ) always clobbers reg byte a 
Statement [16] (word) bitmap_line::y1#0 ← (word)*((const byte*) SINTAB + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 ] ) always clobbers reg byte a 
Statement [17] (word~) main::$8 ← (word)*((const byte*) COSTAB+(byte) $20 + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 main::$8 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 main::$8 ] ) always clobbers reg byte a 
Statement [18] (word) bitmap_line::x2#0 ← (word~) main::$8 + (byte) $78 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ) always clobbers reg byte a 
Statement [19] (word) bitmap_line::y2#0 ← (word)*((const byte*) SINTAB+(byte) $20 + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ) always clobbers reg byte a 
Statement [21] (byte) main::a#1 ← (byte) main::a#2 + (byte) $20 [ main::i#2 main::a#1 ] ( main:2 [ main::i#2 main::a#1 ] ) always clobbers reg byte a reg byte x 
Removing always clobbered register reg byte x as potential for zp[1]:2 [ main::i#2 main::i#1 ]
Statement [23] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#0 ] ) always clobbers reg byte a 
Statement [25] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#0 ] ) always clobbers reg byte a 
Statement [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 ] ) always clobbers reg byte a 
Statement [27] (word) abs_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ) always clobbers reg byte a 
Statement [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ) always clobbers reg byte a 
Statement [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a 
Statement [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a 
Statement [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a 
Statement [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ) always clobbers reg byte a 
Statement [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ) always clobbers reg byte a 
Statement [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ) always clobbers reg byte a 
Statement [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ) always clobbers reg byte a 
Statement [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ) always clobbers reg byte a 
Statement [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a 
Statement [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a 
Statement [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ) always clobbers reg byte a 
Statement [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ) always clobbers reg byte a 
Statement [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ) always clobbers reg byte a 
Statement [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ) always clobbers reg byte a 
Statement [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a 
Statement [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a 
Statement [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ) always clobbers reg byte a 
Statement [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ) always clobbers reg byte a 
Statement [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ) always clobbers reg byte a 
Statement [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x#6 bitmap_plot::y#2 ] ) always clobbers reg byte a 
Statement [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_plot::y#2 bitmap_plot::x#2 ] ) always clobbers reg byte a 
Statement [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ) always clobbers reg byte a 
Statement [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ) always clobbers reg byte a 
Statement [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ) always clobbers reg byte a 
Statement [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ) always clobbers reg byte a 
Statement [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a 
Statement [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a 
Statement [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ) always clobbers reg byte a 
Statement [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ) always clobbers reg byte a 
Statement [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ) always clobbers reg byte a 
Statement [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_plot::y#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_plot::y#0 ] ) always clobbers reg byte a 
Statement [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0 [ bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a 
Statement [75] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a 
Statement [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a 
Statement [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] ) always clobbers reg byte a 
Statement [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a 
Statement [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 ] ) always clobbers reg byte a reg byte y 
Statement [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 [ sgn_u16::$0 ] ( main:2::bitmap_line:20::sgn_u16:34 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::bitmap_line:20::sgn_u16:38 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] ) always clobbers reg byte a 
Statement [89] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 [ abs_u16::w#2 abs_u16::$0 ] ( main:2::bitmap_line:20::abs_u16:24 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_line:20::abs_u16:28 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] ) always clobbers reg byte a 
Statement [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:20::abs_u16:24 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] main:2::bitmap_line:20::abs_u16:28 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] ) always clobbers reg byte a 
Statement [101] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:7::memset:96 [ memset::num#2 memset::str#3 memset::c#4 ] main:2::bitmap_clear:7::memset:98 [ memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a 
Statement [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:7::memset:96 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::bitmap_clear:7::memset:98 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a 
Statement [103] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a 
Statement [105] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a 
Statement [107] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y 
Statement [119] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a 
Statement [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a 
Statement [8] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [10] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [12] if((byte) main::i#2!=(byte) 8) goto main::@2 [ main::i#2 main::a#2 ] ( main:2 [ main::i#2 main::a#2 ] ) always clobbers reg byte a 
Statement [14] (word~) main::$4 ← (word)*((const byte*) COSTAB + (byte) main::a#2) [ main::i#2 main::a#2 main::$4 ] ( main:2 [ main::i#2 main::a#2 main::$4 ] ) always clobbers reg byte a 
Statement [15] (word) bitmap_line::x1#0 ← (word~) main::$4 + (byte) $78 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ) always clobbers reg byte a 
Statement [16] (word) bitmap_line::y1#0 ← (word)*((const byte*) SINTAB + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 ] ) always clobbers reg byte a 
Statement [17] (word~) main::$8 ← (word)*((const byte*) COSTAB+(byte) $20 + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 main::$8 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 main::$8 ] ) always clobbers reg byte a 
Statement [18] (word) bitmap_line::x2#0 ← (word~) main::$8 + (byte) $78 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ) always clobbers reg byte a 
Statement [19] (word) bitmap_line::y2#0 ← (word)*((const byte*) SINTAB+(byte) $20 + (byte) main::a#2) [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( main:2 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ) always clobbers reg byte a 
Statement [21] (byte) main::a#1 ← (byte) main::a#2 + (byte) $20 [ main::i#2 main::a#1 ] ( main:2 [ main::i#2 main::a#1 ] ) always clobbers reg byte a reg byte x 
Statement [23] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#0 ] ) always clobbers reg byte a 
Statement [25] (word) abs_u16::return#0 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#0 ] ) always clobbers reg byte a 
Statement [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 ] ) always clobbers reg byte a 
Statement [27] (word) abs_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ) always clobbers reg byte a 
Statement [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ) always clobbers reg byte a 
Statement [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a 
Statement [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a 
Statement [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ) always clobbers reg byte a 
Statement [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ) always clobbers reg byte a 
Statement [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ) always clobbers reg byte a 
Statement [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ) always clobbers reg byte a 
Statement [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ) always clobbers reg byte a 
Statement [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ) always clobbers reg byte a 
Statement [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a 
Statement [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ) always clobbers reg byte a 
Statement [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ) always clobbers reg byte a 
Statement [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 ] ) always clobbers reg byte a 
Statement [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::y#1 bitmap_plot::x#1 ] ) always clobbers reg byte a 
Statement [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ) always clobbers reg byte a 
Statement [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a 
Statement [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ) always clobbers reg byte a 
Statement [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ) always clobbers reg byte a 
Statement [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ) always clobbers reg byte a 
Statement [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#12 bitmap_line::e#6 ] ) always clobbers reg byte a 
Statement [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 [ bitmap_line::x#6 bitmap_plot::y#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x#6 bitmap_plot::y#2 ] ) always clobbers reg byte a 
Statement [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6 [ bitmap_plot::y#2 bitmap_plot::x#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_plot::y#2 bitmap_plot::x#2 ] ) always clobbers reg byte a 
Statement [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ) always clobbers reg byte a 
Statement [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 ] ) always clobbers reg byte a 
Statement [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::y#3 bitmap_plot::x#3 ] ) always clobbers reg byte a 
Statement [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ) always clobbers reg byte a 
Statement [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a 
Statement [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ) always clobbers reg byte a 
Statement [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ) always clobbers reg byte a 
Statement [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ) always clobbers reg byte a 
Statement [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#13 bitmap_line::x#15 bitmap_line::e1#6 ] ) always clobbers reg byte a 
Statement [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_plot::y#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_plot::y#0 ] ) always clobbers reg byte a 
Statement [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0 [ bitmap_plot::y#0 bitmap_plot::x#0 ] ( main:2::bitmap_line:20 [ main::i#2 main::a#2 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a 
Statement [75] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] ) always clobbers reg byte a 
Statement [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a 
Statement [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] ) always clobbers reg byte a 
Statement [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a 
Statement [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:20::bitmap_plot:46 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#4 bitmap_line::x#13 bitmap_line::e#3 ] main:2::bitmap_line:20::bitmap_plot:57 [ main::i#2 main::a#2 ] main:2::bitmap_line:20::bitmap_plot:63 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#15 bitmap_line::x#7 bitmap_line::e1#3 ] main:2::bitmap_line:20::bitmap_plot:73 [ main::i#2 main::a#2 ] ) always clobbers reg byte a reg byte y 
Statement [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 [ sgn_u16::$0 ] ( main:2::bitmap_line:20::sgn_u16:34 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::$0 ] main:2::bitmap_line:20::sgn_u16:38 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::$0 ] ) always clobbers reg byte a 
Statement [89] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 [ abs_u16::w#2 abs_u16::$0 ] ( main:2::bitmap_line:20::abs_u16:24 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::w#2 abs_u16::$0 ] main:2::bitmap_line:20::abs_u16:28 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#2 abs_u16::$0 ] ) always clobbers reg byte a 
Statement [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 [ abs_u16::return#2 ] ( main:2::bitmap_line:20::abs_u16:24 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] main:2::bitmap_line:20::abs_u16:28 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] ) always clobbers reg byte a 
Statement [101] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:2::bitmap_clear:7::memset:96 [ memset::num#2 memset::str#3 memset::c#4 ] main:2::bitmap_clear:7::memset:98 [ memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a 
Statement [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:2::bitmap_clear:7::memset:96 [ memset::str#3 memset::c#4 memset::end#0 ] main:2::bitmap_clear:7::memset:98 [ memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a 
Statement [103] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#4 ] main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a 
Statement [105] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a 
Statement [107] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:96 [ memset::c#4 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:98 [ memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y 
Statement [119] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a 
Statement [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a 
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , 
Potential registers zp[1]:3 [ main::a#2 main::a#1 ] : zp[1]:3 , reg byte x , 
Potential registers zp[2]:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] : zp[2]:4 , 
Potential registers zp[2]:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] : zp[2]:6 , 
Potential registers zp[2]:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] : zp[2]:8 , 
Potential registers zp[2]:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] : zp[2]:10 , 
Potential registers zp[1]:12 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] : zp[1]:12 , reg byte x , reg byte y , 
Potential registers zp[2]:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] : zp[2]:13 , 
Potential registers zp[2]:15 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] : zp[2]:15 , 
Potential registers zp[2]:17 [ sgn_u16::return#4 ] : zp[2]:17 , 
Potential registers zp[2]:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] : zp[2]:19 , 
Potential registers zp[2]:21 [ memset::num#2 ] : zp[2]:21 , 
Potential registers zp[2]:23 [ memset::str#3 ] : zp[2]:23 , 
Potential registers zp[1]:25 [ memset::c#4 ] : zp[1]:25 , reg byte x , 
Potential registers zp[2]:26 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:26 , 
Potential registers zp[1]:28 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp[1]:28 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:29 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp[1]:29 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:30 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp[1]:30 , reg byte x , reg byte y , 
Potential registers zp[2]:31 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp[2]:31 , 
Potential registers zp[2]:33 [ main::$4 ] : zp[2]:33 , 
Potential registers zp[2]:35 [ main::$8 ] : zp[2]:35 , 
Potential registers zp[2]:37 [ bitmap_line::x2#0 ] : zp[2]:37 , 
Potential registers zp[2]:39 [ bitmap_line::y2#0 ] : zp[2]:39 , 
Potential registers zp[2]:41 [ abs_u16::return#0 ] : zp[2]:41 , 
Potential registers zp[2]:43 [ bitmap_line::dx#0 ] : zp[2]:43 , 
Potential registers zp[2]:45 [ abs_u16::return#1 ] : zp[2]:45 , 
Potential registers zp[2]:47 [ bitmap_line::dy#0 ] : zp[2]:47 , 
Potential registers zp[2]:49 [ sgn_u16::return#0 ] : zp[2]:49 , 
Potential registers zp[2]:51 [ bitmap_line::sx#0 ] : zp[2]:51 , 
Potential registers zp[2]:53 [ sgn_u16::return#1 ] : zp[2]:53 , 
Potential registers zp[2]:55 [ bitmap_line::sy#0 ] : zp[2]:55 , 
Potential registers zp[2]:57 [ bitmap_plot::plotter#0 ] : zp[2]:57 , 
Potential registers zp[2]:59 [ bitmap_plot::$1 ] : zp[2]:59 , 
Potential registers zp[2]:61 [ bitmap_plot::plotter#1 ] : zp[2]:61 , 
Potential registers zp[1]:63 [ bitmap_plot::$2 ] : zp[1]:63 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:64 [ sgn_u16::$0 ] : zp[1]:64 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:65 [ sgn_u16::$1 ] : zp[1]:65 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:66 [ abs_u16::$0 ] : zp[1]:66 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:67 [ abs_u16::$1 ] : zp[1]:67 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:68 [ memset::end#0 ] : zp[2]:68 , 
Potential registers zp[1]:70 [ bitmap_init::$7 ] : zp[1]:70 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:71 [ bitmap_init::$4 ] : zp[1]:71 , reg byte a , reg byte x , reg byte y , reg byte alu , 
Potential registers zp[1]:72 [ bitmap_init::$5 ] : zp[1]:72 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:73 [ bitmap_init::$6 ] : zp[1]:73 , reg byte a , reg byte x , reg byte y , 

REGISTER UPLIFT SCOPES
Uplift Scope [bitmap_line] 658.05: zp[2]:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] 597.74: zp[2]:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] 532.97: zp[2]:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 532.97: zp[2]:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 8.64: zp[2]:47 [ bitmap_line::dy#0 ] 7.85: zp[2]:55 [ bitmap_line::sy#0 ] 7.78: zp[2]:43 [ bitmap_line::dx#0 ] 6.8: zp[2]:51 [ bitmap_line::sx#0 ] 3.62: zp[2]:39 [ bitmap_line::y2#0 ] 3.52: zp[2]:37 [ bitmap_line::x2#0 ] 
Uplift Scope [bitmap_plot] 464.5: zp[2]:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] 416: zp[1]:12 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] 4: zp[2]:59 [ bitmap_plot::$1 ] 4: zp[1]:63 [ bitmap_plot::$2 ] 3: zp[2]:61 [ bitmap_plot::plotter#1 ] 1: zp[2]:57 [ bitmap_plot::plotter#0 ] 
Uplift Scope [bitmap_init] 39.88: zp[2]:31 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp[1]:28 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22: zp[1]:29 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp[1]:30 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp[1]:71 [ bitmap_init::$4 ] 22: zp[1]:72 [ bitmap_init::$5 ] 22: zp[1]:73 [ bitmap_init::$6 ] 5.5: zp[1]:70 [ bitmap_init::$7 ] 
Uplift Scope [main] 25.3: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[2]:33 [ main::$4 ] 22: zp[2]:35 [ main::$8 ] 13.44: zp[1]:3 [ main::a#2 main::a#1 ] 
Uplift Scope [memset] 41.33: zp[2]:26 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 2.17: zp[2]:68 [ memset::end#0 ] 2: zp[2]:21 [ memset::num#2 ] 1.38: zp[1]:25 [ memset::c#4 ] 0: zp[2]:23 [ memset::str#3 ] 
Uplift Scope [abs_u16] 16.5: zp[2]:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] 4: zp[2]:41 [ abs_u16::return#0 ] 4: zp[2]:45 [ abs_u16::return#1 ] 4: zp[1]:66 [ abs_u16::$0 ] 4: zp[1]:67 [ abs_u16::$1 ] 
Uplift Scope [sgn_u16] 14: zp[2]:15 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] 4: zp[2]:49 [ sgn_u16::return#0 ] 4: zp[2]:53 [ sgn_u16::return#1 ] 4: zp[1]:64 [ sgn_u16::$0 ] 4: zp[1]:65 [ sgn_u16::$1 ] 1: zp[2]:17 [ sgn_u16::return#4 ] 
Uplift Scope [bitmap_clear] 
Uplift Scope [RADIX] 
Uplift Scope [] 

Uplifting [bitmap_line] best 33681 combination zp[2]:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:47 [ bitmap_line::dy#0 ] zp[2]:55 [ bitmap_line::sy#0 ] zp[2]:43 [ bitmap_line::dx#0 ] zp[2]:51 [ bitmap_line::sx#0 ] zp[2]:39 [ bitmap_line::y2#0 ] zp[2]:37 [ bitmap_line::x2#0 ] 
Uplifting [bitmap_plot] best 33472 combination zp[2]:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] reg byte x [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp[2]:59 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp[2]:61 [ bitmap_plot::plotter#1 ] zp[2]:57 [ bitmap_plot::plotter#0 ] 
Uplifting [bitmap_init] best 32962 combination zp[2]:31 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:72 [ bitmap_init::$5 ] zp[1]:73 [ bitmap_init::$6 ] zp[1]:70 [ bitmap_init::$7 ] 
Limited combination testing to 100 combinations of 15360 possible.
Uplifting [main] best 32962 combination zp[1]:2 [ main::i#2 main::i#1 ] zp[2]:33 [ main::$4 ] zp[2]:35 [ main::$8 ] zp[1]:3 [ main::a#2 main::a#1 ] 
Uplifting [memset] best 32946 combination zp[2]:26 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:68 [ memset::end#0 ] zp[2]:21 [ memset::num#2 ] reg byte x [ memset::c#4 ] zp[2]:23 [ memset::str#3 ] 
Uplifting [abs_u16] best 32934 combination zp[2]:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] zp[2]:41 [ abs_u16::return#0 ] zp[2]:45 [ abs_u16::return#1 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] 
Uplifting [sgn_u16] best 32922 combination zp[2]:15 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] zp[2]:49 [ sgn_u16::return#0 ] zp[2]:53 [ sgn_u16::return#1 ] reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:17 [ sgn_u16::return#4 ] 
Uplifting [bitmap_clear] best 32922 combination 
Uplifting [RADIX] best 32922 combination 
Uplifting [] best 32922 combination 
Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ]
Uplifting [main] best 32922 combination zp[1]:2 [ main::i#2 main::i#1 ] 
Attempting to uplift remaining variables inzp[1]:72 [ bitmap_init::$5 ]
Uplifting [bitmap_init] best 32862 combination reg byte a [ bitmap_init::$5 ] 
Attempting to uplift remaining variables inzp[1]:73 [ bitmap_init::$6 ]
Uplifting [bitmap_init] best 32802 combination reg byte a [ bitmap_init::$6 ] 
Attempting to uplift remaining variables inzp[1]:3 [ main::a#2 main::a#1 ]
Uplifting [main] best 32802 combination zp[1]:3 [ main::a#2 main::a#1 ] 
Attempting to uplift remaining variables inzp[1]:70 [ bitmap_init::$7 ]
Uplifting [bitmap_init] best 32802 combination zp[1]:70 [ bitmap_init::$7 ] 
Coalescing zero page register [ zp[2]:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] ] with [ zp[2]:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] - score: 4
Coalescing zero page register [ zp[2]:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] with [ zp[2]:33 [ main::$4 ] ] - score: 1
Coalescing zero page register [ zp[2]:17 [ sgn_u16::return#4 ] ] with [ zp[2]:49 [ sgn_u16::return#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:17 [ sgn_u16::return#4 sgn_u16::return#0 ] ] with [ zp[2]:53 [ sgn_u16::return#1 ] ] - score: 1
Coalescing zero page register [ zp[2]:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] ] with [ zp[2]:41 [ abs_u16::return#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 ] ] with [ zp[2]:45 [ abs_u16::return#1 ] ] - score: 1
Coalescing zero page register [ zp[2]:21 [ memset::num#2 ] ] with [ zp[2]:68 [ memset::end#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:23 [ memset::str#3 ] ] with [ zp[2]:26 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
Coalescing zero page register [ zp[2]:35 [ main::$8 ] ] with [ zp[2]:37 [ bitmap_line::x2#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:57 [ bitmap_plot::plotter#0 ] ] with [ zp[2]:61 [ bitmap_plot::plotter#1 ] ] - score: 1
Coalescing zero page register [ zp[2]:17 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 ] ] with [ zp[2]:55 [ bitmap_line::sy#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 ] ] with [ zp[2]:47 [ bitmap_line::dy#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:15 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] ] with [ zp[2]:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] ]
Coalescing zero page register [ zp[2]:21 [ memset::num#2 memset::end#0 ] ] with [ zp[2]:6 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] ]
Coalescing zero page register [ zp[2]:23 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] with [ zp[2]:8 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 main::$4 ] ]
Coalescing zero page register [ zp[2]:31 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] with [ zp[2]:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] ]
Coalescing zero page register [ zp[1]:70 [ bitmap_init::$7 ] ] with [ zp[1]:2 [ main::i#2 main::i#1 ] ]
Allocated (was zp[1]:3) zp[1]:2 [ main::a#2 main::a#1 ]
Allocated (was zp[2]:15) zp[2]:3 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
Allocated (was zp[2]:17) zp[2]:5 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
Allocated (was zp[2]:19) zp[2]:7 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
Allocated (was zp[2]:21) zp[2]:9 [ memset::num#2 memset::end#0 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ]
Allocated (was zp[2]:23) zp[2]:11 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 main::$4 ]
Allocated (was zp[2]:31) zp[2]:13 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
Allocated (was zp[2]:35) zp[2]:15 [ main::$8 bitmap_line::x2#0 ]
Allocated (was zp[2]:39) zp[2]:17 [ bitmap_line::y2#0 ]
Allocated (was zp[2]:43) zp[2]:19 [ bitmap_line::dx#0 ]
Allocated (was zp[2]:51) zp[2]:21 [ bitmap_line::sx#0 ]
Allocated (was zp[2]:57) zp[2]:23 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ]
Allocated (was zp[2]:59) zp[2]:25 [ bitmap_plot::$1 ]
Allocated (was zp[1]:70) zp[1]:27 [ bitmap_init::$7 main::i#2 main::i#1 ]

ASSEMBLER BEFORE OPTIMIZATION
  // File Comments
// Tests the simple bitmap plotter
// Plots a few lines using the bresenham line algorithm
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(__bbegin)
.pc = $80d "Program"
  // Global Constants & labels
  .label D011 = $d011
  .const VIC_BMM = $20
  .const VIC_DEN = $10
  .const VIC_RSEL = 8
  .label D018 = $d018
  .const WHITE = 1
  .label BITMAP = $2000
  .label SCREEN = $400
  .label COSTAB = SINTAB+$40
  // @begin
__bbegin:
  // [1] phi from @begin to @1 [phi:@begin->@1]
__b1_from___bbegin:
  jmp __b1
  // @1
__b1:
  // [2] call main 
  // [4] phi from @1 to main [phi:@1->main]
main_from___b1:
  jsr main
  // [3] phi from @1 to @end [phi:@1->@end]
__bend_from___b1:
  jmp __bend
  // @end
__bend:
  // main
main: {
    .const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f
    .label __4 = $b
    .label __8 = $f
    .label a = 2
    .label i = $1b
    // [5] call bitmap_init 
    // [109] phi from main to bitmap_init [phi:main->bitmap_init]
  bitmap_init_from_main:
    jsr bitmap_init
    // [6] phi from main to main::@5 [phi:main->main::@5]
  __b5_from_main:
    jmp __b5
    // main::@5
  __b5:
    // [7] call bitmap_clear 
    // [95] phi from main::@5 to bitmap_clear [phi:main::@5->bitmap_clear]
  bitmap_clear_from___b5:
    jsr bitmap_clear
    jmp __b6
    // main::@6
  __b6:
    // [8] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2 
    lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
    sta D011
    // [9] phi from main::@6 to main::toD0181 [phi:main::@6->main::toD0181]
  toD0181_from___b6:
    jmp toD0181
    // main::toD0181
  toD0181:
    jmp __b4
    // main::@4
  __b4:
    // [10] *((const byte*) D018) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
    // [11] phi from main::@4 to main::@1 [phi:main::@4->main::@1]
  __b1_from___b4:
    // [11] phi (byte) main::a#2 = (byte) 0 [phi:main::@4->main::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z a
    // [11] phi (byte) main::i#2 = (byte) 0 [phi:main::@4->main::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp __b1
    // main::@1
  __b1:
    // [12] if((byte) main::i#2!=(byte) 8) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z i
    bne __b2
    jmp __b3
    // main::@3
  __b3:
    // [13] *((const byte*) SCREEN+(word) $3e7) ← ++ *((const byte*) SCREEN+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc SCREEN+$3e7
    jmp __b3
    // main::@2
  __b2:
    // [14] (word~) main::$4 ← (word)*((const byte*) COSTAB + (byte) main::a#2) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy.z a
    lda COSTAB,y
    sta.z __4
    lda #0
    sta.z __4+1
    // [15] (word) bitmap_line::x1#0 ← (word~) main::$4 + (byte) $78 -- vwuz1=vwuz1_plus_vbuc1 
    lda #$78
    clc
    adc.z bitmap_line.x1
    sta.z bitmap_line.x1
    bcc !+
    inc.z bitmap_line.x1+1
  !:
    // [16] (word) bitmap_line::y1#0 ← (word)*((const byte*) SINTAB + (byte) main::a#2) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy.z a
    lda SINTAB,y
    sta.z bitmap_line.y1
    lda #0
    sta.z bitmap_line.y1+1
    // [17] (word~) main::$8 ← (word)*((const byte*) COSTAB+(byte) $20 + (byte) main::a#2) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy.z a
    lda COSTAB+$20,y
    sta.z __8
    lda #0
    sta.z __8+1
    // [18] (word) bitmap_line::x2#0 ← (word~) main::$8 + (byte) $78 -- vwuz1=vwuz1_plus_vbuc1 
    lda #$78
    clc
    adc.z bitmap_line.x2
    sta.z bitmap_line.x2
    bcc !+
    inc.z bitmap_line.x2+1
  !:
    // [19] (word) bitmap_line::y2#0 ← (word)*((const byte*) SINTAB+(byte) $20 + (byte) main::a#2) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy.z a
    lda SINTAB+$20,y
    sta.z bitmap_line.y2
    lda #0
    sta.z bitmap_line.y2+1
    // [20] call bitmap_line 
    jsr bitmap_line
    jmp __b7
    // main::@7
  __b7:
    // [21] (byte) main::a#1 ← (byte) main::a#2 + (byte) $20 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z a
    axs #-[$20]
    stx.z a
    // [22] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [11] phi from main::@7 to main::@1 [phi:main::@7->main::@1]
  __b1_from___b7:
    // [11] phi (byte) main::a#2 = (byte) main::a#1 [phi:main::@7->main::@1#0] -- register_copy 
    // [11] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#1] -- register_copy 
    jmp __b1
}
  // bitmap_line
// Draw a line on the bitmap using bresenhams algorithm
// bitmap_line(word zp($b) x1, word zp(9) y1, word zp($f) x2, word zp($11) y2)
bitmap_line: {
    .label dx = $13
    .label dy = 7
    .label sx = $15
    .label sy = 5
    .label e1 = $d
    .label e = 3
    .label y = 9
    .label x = $b
    .label x1 = $b
    .label y1 = 9
    .label x2 = $f
    .label y2 = $11
    // [23] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 -- vwuz1=vwuz2_minus_vwuz3 
    lda.z x2
    sec
    sbc.z x1
    sta.z abs_u16.w
    lda.z x2+1
    sbc.z x1+1
    sta.z abs_u16.w+1
    // [24] call abs_u16 
    // [88] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16]
  abs_u16_from_bitmap_line:
    // [88] phi (word) abs_u16::w#2 = (word) abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy 
    jsr abs_u16
    // [25] (word) abs_u16::return#0 ← (word) abs_u16::return#4
    jmp __b12
    // bitmap_line::@12
  __b12:
    // [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 -- vwuz1=vwuz2 
    lda.z abs_u16.return
    sta.z dx
    lda.z abs_u16.return+1
    sta.z dx+1
    // [27] (word) abs_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 -- vwuz1=vwuz2_minus_vwuz3 
    lda.z y2
    sec
    sbc.z y1
    sta.z abs_u16.w
    lda.z y2+1
    sbc.z y1+1
    sta.z abs_u16.w+1
    // [28] call abs_u16 
    // [88] phi from bitmap_line::@12 to abs_u16 [phi:bitmap_line::@12->abs_u16]
  abs_u16_from___b12:
    // [88] phi (word) abs_u16::w#2 = (word) abs_u16::w#1 [phi:bitmap_line::@12->abs_u16#0] -- register_copy 
    jsr abs_u16
    // [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4
    jmp __b13
    // bitmap_line::@13
  __b13:
    // [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1
    // [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 -- vwuz1_neq_0_then_la1 
    lda.z dx
    bne __b1
    lda.z dx+1
    bne __b1
    jmp __b18
    // bitmap_line::@18
  __b18:
    // [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 -- vwuz1_eq_0_then_la1 
    lda.z dy
    bne !+
    lda.z dy+1
    beq __b4
  !:
    jmp __b1
    // bitmap_line::@1
  __b1:
    // [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 -- vwuz1=vwuz2_minus_vwuz3 
    lda.z x2
    sec
    sbc.z x1
    sta.z sgn_u16.w
    lda.z x2+1
    sbc.z x1+1
    sta.z sgn_u16.w+1
    // [34] call sgn_u16 
    // [81] phi from bitmap_line::@1 to sgn_u16 [phi:bitmap_line::@1->sgn_u16]
  sgn_u16_from___b1:
    // [81] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#0 [phi:bitmap_line::@1->sgn_u16#0] -- register_copy 
    jsr sgn_u16
    // [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4
    jmp __b14
    // bitmap_line::@14
  __b14:
    // [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 -- vwuz1=vwuz2 
    lda.z sgn_u16.return
    sta.z sx
    lda.z sgn_u16.return+1
    sta.z sx+1
    // [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 -- vwuz1=vwuz2_minus_vwuz3 
    lda.z y2
    sec
    sbc.z y1
    sta.z sgn_u16.w
    lda.z y2+1
    sbc.z y1+1
    sta.z sgn_u16.w+1
    // [38] call sgn_u16 
    // [81] phi from bitmap_line::@14 to sgn_u16 [phi:bitmap_line::@14->sgn_u16]
  sgn_u16_from___b14:
    // [81] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#1 [phi:bitmap_line::@14->sgn_u16#0] -- register_copy 
    jsr sgn_u16
    // [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4
    jmp __b15
    // bitmap_line::@15
  __b15:
    // [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1
    // [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 -- vwuz1_gt_vwuz2_then_la1 
    lda.z dy+1
    cmp.z dx+1
    bcc __b2
    bne !+
    lda.z dy
    cmp.z dx
    bcc __b2
  !:
    jmp __b5
    // bitmap_line::@5
  __b5:
    // [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 
    lda.z dx+1
    lsr
    sta.z e+1
    lda.z dx
    ror
    sta.z e
    // [43] phi from bitmap_line::@5 bitmap_line::@7 to bitmap_line::@6 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6]
  __b6_from___b5:
  __b6_from___b7:
    // [43] phi (word) bitmap_line::e#3 = (word) bitmap_line::e#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#0] -- register_copy 
    // [43] phi (word) bitmap_line::x#13 = (word) bitmap_line::x1#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#1] -- register_copy 
    // [43] phi (word) bitmap_line::y#4 = (word) bitmap_line::y1#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#2] -- register_copy 
    jmp __b6
    // bitmap_line::@6
  __b6:
    // [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 -- vbuxx=_byte_vwuz1 
    lda.z y
    tax
    // [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13
    // [46] call bitmap_plot 
    // [74] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot]
  bitmap_plot_from___b6:
    // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#1 [phi:bitmap_line::@6->bitmap_plot#0] -- register_copy 
    // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line::@6->bitmap_plot#1] -- register_copy 
    jsr bitmap_plot
    jmp __b16
    // bitmap_line::@16
  __b16:
    // [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z y
    clc
    adc.z sy
    sta.z y
    lda.z y+1
    adc.z sy+1
    sta.z y+1
    // [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z e
    clc
    adc.z dx
    sta.z e
    lda.z e+1
    adc.z dx+1
    sta.z e+1
    // [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 -- vwuz1_ge_vwuz2_then_la1 
    lda.z e+1
    cmp.z dy+1
    bne !+
    lda.z e
    cmp.z dy
    beq __b7_from___b16
  !:
    bcc __b7_from___b16
    jmp __b8
    // bitmap_line::@8
  __b8:
    // [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z x
    clc
    adc.z sx
    sta.z x
    lda.z x+1
    adc.z sx+1
    sta.z x+1
    // [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 
    lda.z e
    sec
    sbc.z dy
    sta.z e
    lda.z e+1
    sbc.z dy+1
    sta.z e+1
    // [52] phi from bitmap_line::@16 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7]
  __b7_from___b16:
  __b7_from___b8:
    // [52] phi (word) bitmap_line::e#6 = (word) bitmap_line::e#1 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#0] -- register_copy 
    // [52] phi (word) bitmap_line::x#12 = (word) bitmap_line::x#13 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#1] -- register_copy 
    jmp __b7
    // bitmap_line::@7
  __b7:
    // [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 -- vwuz1_neq_vwuz2_then_la1 
    lda.z y+1
    cmp.z y2+1
    bne __b6_from___b7
    lda.z y
    cmp.z y2
    bne __b6_from___b7
    // [54] phi from bitmap_line::@10 bitmap_line::@7 to bitmap_line::@3 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3]
  __b3_from___b10:
  __b3_from___b7:
    // [54] phi (word) bitmap_line::x#6 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#0] -- register_copy 
    // [54] phi (word) bitmap_line::y#7 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#1] -- register_copy 
    jmp __b3
    // bitmap_line::@3
  __b3:
    // [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 -- vbuxx=_byte_vwuz1 
    lda.z y
    tax
    // [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6
    // [57] call bitmap_plot 
    // [74] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot]
  bitmap_plot_from___b3:
    // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#2 [phi:bitmap_line::@3->bitmap_plot#0] -- register_copy 
    // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line::@3->bitmap_plot#1] -- register_copy 
    jsr bitmap_plot
    jmp __breturn
    // bitmap_line::@return
  __breturn:
    // [58] return 
    rts
    // bitmap_line::@2
  __b2:
    // [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 
    lda.z dy+1
    lsr
    sta.z e1+1
    lda.z dy
    ror
    sta.z e1
    // [60] phi from bitmap_line::@10 bitmap_line::@2 to bitmap_line::@9 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9]
  __b9_from___b10:
  __b9_from___b2:
    // [60] phi (word) bitmap_line::e1#3 = (word) bitmap_line::e1#6 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#0] -- register_copy 
    // [60] phi (word) bitmap_line::x#7 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#1] -- register_copy 
    // [60] phi (word) bitmap_line::y#15 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#2] -- register_copy 
    jmp __b9
    // bitmap_line::@9
  __b9:
    // [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 -- vbuxx=_byte_vwuz1 
    lda.z y
    tax
    // [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7
    // [63] call bitmap_plot 
    // [74] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot]
  bitmap_plot_from___b9:
    // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#3 [phi:bitmap_line::@9->bitmap_plot#0] -- register_copy 
    // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line::@9->bitmap_plot#1] -- register_copy 
    jsr bitmap_plot
    jmp __b17
    // bitmap_line::@17
  __b17:
    // [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z x
    clc
    adc.z sx
    sta.z x
    lda.z x+1
    adc.z sx+1
    sta.z x+1
    // [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z e1
    clc
    adc.z dy
    sta.z e1
    lda.z e1+1
    adc.z dy+1
    sta.z e1+1
    // [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 -- vwuz1_ge_vwuz2_then_la1 
    lda.z e1+1
    cmp.z dx+1
    bne !+
    lda.z e1
    cmp.z dx
    beq __b10_from___b17
  !:
    bcc __b10_from___b17
    jmp __b11
    // bitmap_line::@11
  __b11:
    // [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z y
    clc
    adc.z sy
    sta.z y
    lda.z y+1
    adc.z sy+1
    sta.z y+1
    // [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 
    lda.z e1
    sec
    sbc.z dx
    sta.z e1
    lda.z e1+1
    sbc.z dx+1
    sta.z e1+1
    // [69] phi from bitmap_line::@11 bitmap_line::@17 to bitmap_line::@10 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10]
  __b10_from___b11:
  __b10_from___b17:
    // [69] phi (word) bitmap_line::e1#6 = (word) bitmap_line::e1#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#0] -- register_copy 
    // [69] phi (word) bitmap_line::y#13 = (word) bitmap_line::y#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#1] -- register_copy 
    jmp __b10
    // bitmap_line::@10
  __b10:
    // [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 -- vwuz1_neq_vwuz2_then_la1 
    lda.z x+1
    cmp.z x2+1
    bne __b9_from___b10
    lda.z x
    cmp.z x2
    bne __b9_from___b10
    jmp __b3_from___b10
    // bitmap_line::@4
  __b4:
    // [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 -- vbuxx=_byte_vwuz1 
    lda.z y1
    tax
    // [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0
    // [73] call bitmap_plot 
    // [74] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot]
  bitmap_plot_from___b4:
    // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy 
    // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy 
    jsr bitmap_plot
    jmp __breturn
}
  // bitmap_plot
// Plot a single dot in the bitmap
// bitmap_plot(word zp($b) x, byte register(X) y)
bitmap_plot: {
    .label __1 = $19
    .label plotter = $17
    .label x = $b
    // [75] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx 
    lda bitmap_plot_yhi,x
    sta.z plotter+1
    lda bitmap_plot_ylo,x
    sta.z plotter
    // [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 
    lda.z x
    and #<$fff8
    sta.z __1
    lda.z x+1
    and #>$fff8
    sta.z __1+1
    // [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 
    lda.z plotter
    clc
    adc.z __1
    sta.z plotter
    lda.z plotter+1
    adc.z __1+1
    sta.z plotter+1
    // [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 -- vbuaa=_lo_vwuz1 
    lda.z x
    // [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa 
    tay
    lda bitmap_plot_bit,y
    ldy #0
    ora (plotter),y
    ldy #0
    sta (plotter),y
    jmp __breturn
    // bitmap_plot::@return
  __breturn:
    // [80] return 
    rts
}
  // sgn_u16
// Get the sign of a 16-bit unsigned number treated as a signed number.
// Returns unsigned -1 if the number is
// sgn_u16(word zp(3) w)
sgn_u16: {
    .label w = 3
    .label return = 5
    // [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 -- vbuaa=_hi_vwuz1 
    lda.z w+1
    // [83] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 
    and #$80
    // [84] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 -- vbuc1_neq_vbuaa_then_la1 
    cmp #0
    bne __b1_from_sgn_u16
    // [86] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return]
  __breturn_from_sgn_u16:
    // [86] phi (word) sgn_u16::return#4 = (byte) 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 
    lda #<1
    sta.z return
    lda #>1
    sta.z return+1
    jmp __breturn
    // [85] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1]
  __b1_from_sgn_u16:
    jmp __b1
    // sgn_u16::@1
  __b1:
    // [86] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return]
  __breturn_from___b1:
    // [86] phi (word) sgn_u16::return#4 = (byte) -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 
    lda #<-1
    sta.z return
    lda #>-1
    sta.z return+1
    jmp __breturn
    // sgn_u16::@return
  __breturn:
    // [87] return 
    rts
}
  // abs_u16
// Get the absolute value of a 16-bit unsigned number treated as a signed number.
// abs_u16(word zp(7) w)
abs_u16: {
    .label w = 7
    .label return = 7
    // [89] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 -- vbuaa=_hi_vwuz1 
    lda.z w+1
    // [90] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 
    and #$80
    // [91] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 -- vbuc1_neq_vbuaa_then_la1 
    cmp #0
    bne __b1
    // [93] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return]
  __breturn_from_abs_u16:
  __breturn_from___b1:
    // [93] phi (word) abs_u16::return#4 = (word) abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy 
    jmp __breturn
    // abs_u16::@1
  __b1:
    // [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 -- vwuz1=_neg_vwuz1 
    sec
    lda #0
    sbc.z return
    sta.z return
    lda #0
    sbc.z return+1
    sta.z return+1
    jmp __breturn_from___b1
    // abs_u16::@return
  __breturn:
    // [94] return 
    rts
}
  // bitmap_clear
// Clear all graphics on the bitmap
// bgcol - the background color to fill the screen with
// fgcol - the foreground color to fill the screen with
bitmap_clear: {
    .const col = WHITE*$10
    // [96] call memset 
    // [100] phi from bitmap_clear to memset [phi:bitmap_clear->memset]
  memset_from_bitmap_clear:
    // [100] phi (byte) memset::c#4 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 
    ldx #col
    // [100] phi (void*) memset::str#3 = (void*)(const byte*) SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 
    lda #<SCREEN
    sta.z memset.str
    lda #>SCREEN
    sta.z memset.str+1
    // [100] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 
    lda #<$3e8
    sta.z memset.num
    lda #>$3e8
    sta.z memset.num+1
    jsr memset
    // [97] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1]
  __b1_from_bitmap_clear:
    jmp __b1
    // bitmap_clear::@1
  __b1:
    // [98] call memset 
    // [100] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset]
  memset_from___b1:
    // [100] phi (byte) memset::c#4 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 
    ldx #0
    // [100] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 
    lda #<BITMAP
    sta.z memset.str
    lda #>BITMAP
    sta.z memset.str+1
    // [100] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 
    lda #<$1f40
    sta.z memset.num
    lda #>$1f40
    sta.z memset.num+1
    jsr memset
    jmp __breturn
    // bitmap_clear::@return
  __breturn:
    // [99] 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* zp($b) str, byte register(X) c, word zp(9) num)
memset: {
    .label end = 9
    .label dst = $b
    .label num = 9
    .label str = $b
    // [101] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 
    lda.z num
    bne !+
    lda.z num+1
    beq __breturn
  !:
    jmp __b1
    // memset::@1
  __b1:
    // [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 
    lda.z end
    clc
    adc.z str
    sta.z end
    lda.z end+1
    adc.z str+1
    sta.z end+1
    // [103] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
    // [104] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2]
  __b2_from___b1:
  __b2_from___b3:
    // [104] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy 
    jmp __b2
    // memset::@2
  __b2:
    // [105] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 
    lda.z dst+1
    cmp.z end+1
    bne __b3
    lda.z dst
    cmp.z end
    bne __b3
    jmp __breturn
    // memset::@return
  __breturn:
    // [106] return 
    rts
    // memset::@3
  __b3:
    // [107] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuxx 
    txa
    ldy #0
    sta (dst),y
    // [108] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    jmp __b2_from___b3
}
  // bitmap_init
// Initialize bitmap plotting tables
bitmap_init: {
    .label __7 = $1b
    .label yoffs = $d
    // [110] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
  __b1_from_bitmap_init:
    // [110] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [110] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 
    lda #$80
    jmp __b1
    // [110] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1]
  __b1_from___b2:
    // [110] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy 
    // [110] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy 
    jmp __b1
    // bitmap_init::@1
  __b1:
    // [111] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta bitmap_plot_bit,x
    // [112] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuaa=vbuaa_ror_1 
    lsr
    // [113] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 
    cmp #0
    bne __b6_from___b1
    // [115] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2]
  __b2_from___b1:
    // [115] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 
    lda #$80
    jmp __b2
    // [114] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6]
  __b6_from___b1:
    jmp __b6
    // bitmap_init::@6
  __b6:
    // [115] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2]
  __b2_from___b6:
    // [115] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy 
    jmp __b2
    // bitmap_init::@2
  __b2:
    // [116] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx 
    inx
    // [117] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne __b1_from___b2
    // [118] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3]
  __b3_from___b2:
    // [118] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 
    lda #<BITMAP
    sta.z yoffs
    lda #>BITMAP
    sta.z yoffs+1
    // [118] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 
    ldx #0
    jmp __b3
    // [118] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3]
  __b3_from___b4:
    // [118] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy 
    // [118] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy 
    jmp __b3
    // bitmap_init::@3
  __b3:
    // [119] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1 
    lda #7
    sax.z __7
    // [120] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 
    lda.z yoffs
    // [121] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa 
    ora.z __7
    // [122] *((const byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta bitmap_plot_ylo,x
    // [123] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 
    lda.z yoffs+1
    // [124] *((const byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta bitmap_plot_yhi,x
    // [125] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 
    lda #7
    cmp.z __7
    bne __b4_from___b3
    jmp __b5
    // bitmap_init::@5
  __b5:
    // [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 
    clc
    lda.z yoffs
    adc #<$28*8
    sta.z yoffs
    lda.z yoffs+1
    adc #>$28*8
    sta.z yoffs+1
    // [127] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4]
  __b4_from___b3:
  __b4_from___b5:
    // [127] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy 
    jmp __b4
    // bitmap_init::@4
  __b4:
    // [128] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx 
    inx
    // [129] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne __b3_from___b4
    jmp __breturn
    // bitmap_init::@return
  __breturn:
    // [130] return 
    rts
}
  // File Data
  // Tables for the plotter - initialized by calling bitmap_init();
  bitmap_plot_ylo: .fill $100, 0
  bitmap_plot_yhi: .fill $100, 0
  bitmap_plot_bit: .fill $100, 0
  .align $100
SINTAB:
.fill $180, 99.5+99.5*sin(i*2*PI/256) 

ASSEMBLER OPTIMIZATIONS
Removing instruction jmp __b1
Removing instruction jmp __bend
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp toD0181
Removing instruction jmp __b4
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __b7
Removing instruction jmp __b12
Removing instruction jmp __b13
Removing instruction jmp __b18
Removing instruction jmp __b1
Removing instruction jmp __b14
Removing instruction jmp __b15
Removing instruction jmp __b5
Removing instruction jmp __b6
Removing instruction jmp __b16
Removing instruction jmp __b8
Removing instruction jmp __b7
Removing instruction jmp __b3
Removing instruction jmp __breturn
Removing instruction jmp __b9
Removing instruction jmp __b17
Removing instruction jmp __b11
Removing instruction jmp __b10
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b6
Removing instruction jmp __b2
Removing instruction jmp __b3
Removing instruction jmp __b5
Removing instruction jmp __b4
Removing instruction jmp __breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda #0
Removing instruction ldy.z a
Removing instruction lda.z e+1
Removing instruction lda.z e1+1
Removing instruction ldy #0
Removing instruction lda #>-1
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label __bbegin with __b1
Replacing label __b7_from___b16 with __b7
Replacing label __b7_from___b16 with __b7
Replacing label __b6_from___b7 with __b6
Replacing label __b6_from___b7 with __b6
Replacing label __b10_from___b17 with __b10
Replacing label __b10_from___b17 with __b10
Replacing label __b9_from___b10 with __b9
Replacing label __b9_from___b10 with __b9
Replacing label __b3_from___b10 with __b3
Replacing label __b1_from_sgn_u16 with __b1
Replacing label __b2_from___b3 with __b2
Replacing label __b6_from___b1 with __b2
Replacing label __b1_from___b2 with __b1
Replacing label __b4_from___b3 with __b4
Replacing label __b3_from___b4 with __b3
Removing instruction __bbegin:
Removing instruction __b1_from___bbegin:
Removing instruction main_from___b1:
Removing instruction __bend_from___b1:
Removing instruction __b5_from_main:
Removing instruction bitmap_clear_from___b5:
Removing instruction toD0181_from___b6:
Removing instruction toD0181:
Removing instruction __b6_from___b5:
Removing instruction __b6_from___b7:
Removing instruction __b7_from___b16:
Removing instruction __b7_from___b8:
Removing instruction __b3_from___b10:
Removing instruction __b3_from___b7:
Removing instruction __b9_from___b10:
Removing instruction __b9_from___b2:
Removing instruction __b10_from___b11:
Removing instruction __b10_from___b17:
Removing instruction __b1_from_sgn_u16:
Removing instruction __breturn_from___b1:
Removing instruction __breturn_from_abs_u16:
Removing instruction __b1_from_bitmap_clear:
Removing instruction memset_from___b1:
Removing instruction __b2_from___b1:
Removing instruction __b2_from___b3:
Removing instruction __b1_from___b2:
Removing instruction __b6_from___b1:
Removing instruction __b6:
Removing instruction __b2_from___b6:
Removing instruction __b3_from___b4:
Removing instruction __b4_from___b3:
Removing instruction __b4_from___b5:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction __bend:
Removing instruction bitmap_init_from_main:
Removing instruction __b5:
Removing instruction __b6:
Removing instruction __b4:
Removing instruction __b1_from___b4:
Removing instruction __b7:
Removing instruction __b1_from___b7:
Removing instruction abs_u16_from_bitmap_line:
Removing instruction __b12:
Removing instruction abs_u16_from___b12:
Removing instruction __b13:
Removing instruction __b18:
Removing instruction sgn_u16_from___b1:
Removing instruction __b14:
Removing instruction sgn_u16_from___b14:
Removing instruction __b15:
Removing instruction __b5:
Removing instruction bitmap_plot_from___b6:
Removing instruction __b16:
Removing instruction __b8:
Removing instruction bitmap_plot_from___b3:
Removing instruction bitmap_plot_from___b9:
Removing instruction __b17:
Removing instruction __b11:
Removing instruction bitmap_plot_from___b4:
Removing instruction __breturn:
Removing instruction __breturn_from_sgn_u16:
Removing instruction memset_from_bitmap_clear:
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction __b1:
Removing instruction __b1_from_bitmap_init:
Removing instruction __b2_from___b1:
Removing instruction __b3_from___b2:
Removing instruction __b5:
Removing instruction __breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Updating BasicUpstart to call main directly
Removing instruction jsr main
Succesful ASM optimization Pass5SkipBegin
Replacing jump to rts with rts in jmp __breturn
Replacing jump to rts with rts in jmp __breturn
Replacing jump to rts with rts in jmp __breturn
Skipping double jump to __breturn in jmp __breturn_from___b1
Succesful ASM optimization Pass5DoubleJumpElimination
Relabelling long label __breturn_from___b1 to b1
Succesful ASM optimization Pass5RelabelLongLabels
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __b2
Removing instruction jmp __b3
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction __b1:
Removing instruction __breturn:
Removing instruction __breturn:
Removing instruction b1:
Removing instruction __breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Fixing long branch [119] beq __b4 to bne

FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
(const byte*) BITMAP = (byte*) 8192
(const byte*) COSTAB = (const byte*) SINTAB+(byte) $40
(const byte*) D011 = (byte*) 53265
(const byte*) D018 = (byte*) 53272
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const byte*) SCREEN = (byte*) 1024
(const byte*) SINTAB[(number) $180]  = kickasm {{ .fill $180, 99.5+99.5*sin(i*2*PI/256)  }}
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_DEN = (byte) $10
(const byte) VIC_RSEL = (byte) 8
(const byte) WHITE = (byte) 1
(word()) abs_u16((word) abs_u16::w)
(byte~) abs_u16::$0 reg byte a 4.0
(byte~) abs_u16::$1 reg byte a 4.0
(label) abs_u16::@1
(label) abs_u16::@return
(word) abs_u16::return
(word) abs_u16::return#0 return zp[2]:7 4.0
(word) abs_u16::return#1 return zp[2]:7 4.0
(word) abs_u16::return#2 return zp[2]:7 4.0
(word) abs_u16::return#4 return zp[2]:7 2.0
(word) abs_u16::w
(word) abs_u16::w#0 w zp[2]:7 4.0
(word) abs_u16::w#1 w zp[2]:7 4.0
(word) abs_u16::w#2 w zp[2]:7 2.5
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
(label) bitmap_clear::@1
(label) bitmap_clear::@return
(byte) bitmap_clear::bgcol
(byte) bitmap_clear::col
(const byte) bitmap_clear::col#0 col = (const byte) WHITE*(byte) $10
(byte) bitmap_clear::fgcol
(byte*) bitmap_gfx
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
(byte~) bitmap_init::$4 reg byte a 22.0
(byte~) bitmap_init::$5 reg byte a 22.0
(byte~) bitmap_init::$6 reg byte a 22.0
(byte~) bitmap_init::$7 zp[1]:27 5.5
(label) bitmap_init::@1
(label) bitmap_init::@2
(label) bitmap_init::@3
(label) bitmap_init::@4
(label) bitmap_init::@5
(label) bitmap_init::@6
(label) bitmap_init::@return
(byte) bitmap_init::bits
(byte) bitmap_init::bits#1 reg byte a 11.0
(byte) bitmap_init::bits#3 reg byte a 16.5
(byte) bitmap_init::bits#4 reg byte a 7.333333333333333
(byte*) bitmap_init::gfx
(byte*) bitmap_init::screen
(byte) bitmap_init::x
(byte) bitmap_init::x#1 reg byte x 16.5
(byte) bitmap_init::x#2 reg byte x 5.5
(byte) bitmap_init::y
(byte) bitmap_init::y#1 reg byte x 16.5
(byte) bitmap_init::y#2 reg byte x 5.5
(byte*) bitmap_init::yoffs
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:13 22.0
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:13 6.875
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:13 11.0
(void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2)
(label) bitmap_line::@1
(label) bitmap_line::@10
(label) bitmap_line::@11
(label) bitmap_line::@12
(label) bitmap_line::@13
(label) bitmap_line::@14
(label) bitmap_line::@15
(label) bitmap_line::@16
(label) bitmap_line::@17
(label) bitmap_line::@18
(label) bitmap_line::@2
(label) bitmap_line::@3
(label) bitmap_line::@4
(label) bitmap_line::@5
(label) bitmap_line::@6
(label) bitmap_line::@7
(label) bitmap_line::@8
(label) bitmap_line::@9
(label) bitmap_line::@return
(word) bitmap_line::dx
(word) bitmap_line::dx#0 dx zp[2]:19 7.775
(word) bitmap_line::dy
(word) bitmap_line::dy#0 dy zp[2]:7 8.638888888888888
(word) bitmap_line::e
(word) bitmap_line::e#0 e zp[2]:3 4.0
(word) bitmap_line::e#1 e zp[2]:3 134.66666666666666
(word) bitmap_line::e#2 e zp[2]:3 202.0
(word) bitmap_line::e#3 e zp[2]:3 40.8
(word) bitmap_line::e#6 e zp[2]:3 151.5
(word) bitmap_line::e1
(word) bitmap_line::e1#0 e1 zp[2]:13 4.0
(word) bitmap_line::e1#1 e1 zp[2]:13 134.66666666666666
(word) bitmap_line::e1#2 e1 zp[2]:13 202.0
(word) bitmap_line::e1#3 e1 zp[2]:13 40.8
(word) bitmap_line::e1#6 e1 zp[2]:13 151.5
(word) bitmap_line::sx
(word) bitmap_line::sx#0 sx zp[2]:21 6.800000000000001
(word) bitmap_line::sy
(word) bitmap_line::sy#0 sy zp[2]:5 7.846153846153847
(word) bitmap_line::x
(word) bitmap_line::x#1 x zp[2]:11 101.0
(word) bitmap_line::x#12 x zp[2]:11 202.0
(word) bitmap_line::x#13 x zp[2]:11 58.00000000000001
(word) bitmap_line::x#15 x zp[2]:11 57.714285714285715
(word) bitmap_line::x#6 x zp[2]:11 102.0
(word) bitmap_line::x#7 x zp[2]:11 76.25
(word) bitmap_line::x1
(word) bitmap_line::x1#0 x1 zp[2]:11 0.7777777777777778
(word) bitmap_line::x2
(word) bitmap_line::x2#0 x2 zp[2]:15 3.515151515151515
(word) bitmap_line::y
(word) bitmap_line::y#1 y zp[2]:9 57.714285714285715
(word) bitmap_line::y#13 y zp[2]:9 202.0
(word) bitmap_line::y#15 y zp[2]:9 43.57142857142858
(word) bitmap_line::y#2 y zp[2]:9 101.0
(word) bitmap_line::y#4 y zp[2]:9 51.0
(word) bitmap_line::y#7 y zp[2]:9 202.0
(word) bitmap_line::y1
(word) bitmap_line::y1#0 y1 zp[2]:9 0.7599999999999999
(word) bitmap_line::y2
(word) bitmap_line::y2#0 y2 zp[2]:17 3.625
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
(word~) bitmap_plot::$1 zp[2]:25 4.0
(byte~) bitmap_plot::$2 reg byte a 4.0
(label) bitmap_plot::@return
(byte*) bitmap_plot::plotter
(word) bitmap_plot::plotter#0 plotter zp[2]:23 1.0
(byte*) bitmap_plot::plotter#1 plotter zp[2]:23 3.0
(word) bitmap_plot::x
(word) bitmap_plot::x#0 x zp[2]:11 4.0
(word) bitmap_plot::x#1 x zp[2]:11 202.0
(word) bitmap_plot::x#2 x zp[2]:11 4.0
(word) bitmap_plot::x#3 x zp[2]:11 202.0
(word) bitmap_plot::x#4 x zp[2]:11 52.5
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0 reg byte x 2.0
(byte) bitmap_plot::y#1 reg byte x 101.0
(byte) bitmap_plot::y#2 reg byte x 2.0
(byte) bitmap_plot::y#3 reg byte x 101.0
(byte) bitmap_plot::y#4 reg byte x 210.0
(const byte*) bitmap_plot_bit[(number) $100]  = { fill( $100, 0) }
(const byte*) bitmap_plot_yhi[(number) $100]  = { fill( $100, 0) }
(const byte*) bitmap_plot_ylo[(number) $100]  = { fill( $100, 0) }
(byte*) bitmap_screen
(void()) main()
(word~) main::$4 zp[2]:11 22.0
(word~) main::$8 zp[2]:15 22.0
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@5
(label) main::@6
(label) main::@7
(byte) main::a
(byte) main::a#1 a zp[1]:2 11.0
(byte) main::a#2 a zp[1]:2 2.4444444444444446
(byte) main::i
(byte) main::i#1 i zp[1]:27 22.0
(byte) main::i#2 i zp[1]:27 3.3000000000000003
(label) main::toD0181
(byte*) main::toD0181_gfx
(byte) main::toD0181_return
(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP/(byte) 4&(byte) $f
(byte*) main::toD0181_screen
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
(label) memset::@3
(label) memset::@return
(byte) memset::c
(byte) memset::c#4 reg byte x 1.375
(byte*) memset::dst
(byte*) memset::dst#1 dst zp[2]:11 22.0
(byte*) memset::dst#2 dst zp[2]:11 15.333333333333332
(byte*) memset::dst#4 dst zp[2]:11 4.0
(byte*) memset::end
(byte*) memset::end#0 end zp[2]:9 2.1666666666666665
(word) memset::num
(word) memset::num#2 num zp[2]:9 2.0
(void*) memset::return
(void*) memset::str
(void*) memset::str#3 str zp[2]:11
(word()) sgn_u16((word) sgn_u16::w)
(byte~) sgn_u16::$0 reg byte a 4.0
(byte~) sgn_u16::$1 reg byte a 4.0
(label) sgn_u16::@1
(label) sgn_u16::@return
(word) sgn_u16::return
(word) sgn_u16::return#0 return zp[2]:5 4.0
(word) sgn_u16::return#1 return zp[2]:5 4.0
(word) sgn_u16::return#4 return zp[2]:5 1.0
(word) sgn_u16::w
(word) sgn_u16::w#0 w zp[2]:3 4.0
(word) sgn_u16::w#1 w zp[2]:3 4.0
(word) sgn_u16::w#2 w zp[2]:3 6.0

zp[1]:2 [ main::a#2 main::a#1 ]
reg byte x [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ]
zp[2]:3 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
zp[2]:5 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
zp[2]:7 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
zp[2]:9 [ memset::num#2 memset::end#0 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ]
zp[2]:11 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 main::$4 ]
reg byte x [ memset::c#4 ]
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
zp[2]:13 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
zp[2]:15 [ main::$8 bitmap_line::x2#0 ]
zp[2]:17 [ bitmap_line::y2#0 ]
zp[2]:19 [ bitmap_line::dx#0 ]
zp[2]:21 [ bitmap_line::sx#0 ]
zp[2]:23 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ]
zp[2]:25 [ bitmap_plot::$1 ]
reg byte a [ bitmap_plot::$2 ]
reg byte a [ sgn_u16::$0 ]
reg byte a [ sgn_u16::$1 ]
reg byte a [ abs_u16::$0 ]
reg byte a [ abs_u16::$1 ]
zp[1]:27 [ bitmap_init::$7 main::i#2 main::i#1 ]
reg byte a [ bitmap_init::$4 ]
reg byte a [ bitmap_init::$5 ]
reg byte a [ bitmap_init::$6 ]


FINAL ASSEMBLER
Score: 27287

  // File Comments
// Tests the simple bitmap plotter
// Plots a few lines using the bresenham line algorithm
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
  // Global Constants & labels
  .label D011 = $d011
  .const VIC_BMM = $20
  .const VIC_DEN = $10
  .const VIC_RSEL = 8
  .label D018 = $d018
  .const WHITE = 1
  .label BITMAP = $2000
  .label SCREEN = $400
  .label COSTAB = SINTAB+$40
  // @begin
  // [1] phi from @begin to @1 [phi:@begin->@1]
  // @1
  // [2] call main 
  // [4] phi from @1 to main [phi:@1->main]
  // [3] phi from @1 to @end [phi:@1->@end]
  // @end
  // main
main: {
    .const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f
    .label __4 = $b
    .label __8 = $f
    .label a = 2
    .label i = $1b
    // bitmap_init(BITMAP, SCREEN)
    // [5] call bitmap_init 
    // [109] phi from main to bitmap_init [phi:main->bitmap_init]
    jsr bitmap_init
    // [6] phi from main to main::@5 [phi:main->main::@5]
    // main::@5
    // bitmap_clear(BLACK, WHITE)
    // [7] call bitmap_clear 
    // [95] phi from main::@5 to bitmap_clear [phi:main::@5->bitmap_clear]
    jsr bitmap_clear
    // main::@6
    // *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
    // [8] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2 
    lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
    sta D011
    // [9] phi from main::@6 to main::toD0181 [phi:main::@6->main::toD0181]
    // main::toD0181
    // main::@4
    // *D018 = toD018(SCREEN, BITMAP)
    // [10] *((const byte*) D018) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
    // [11] phi from main::@4 to main::@1 [phi:main::@4->main::@1]
    // [11] phi (byte) main::a#2 = (byte) 0 [phi:main::@4->main::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta.z a
    // [11] phi (byte) main::i#2 = (byte) 0 [phi:main::@4->main::@1#1] -- vbuz1=vbuc1 
    sta.z i
    // main::@1
  __b1:
    // for( byte i=0, a=0; i!=8; i++, a+=32)
    // [12] if((byte) main::i#2!=(byte) 8) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z i
    bne __b2
    // main::@3
  __b3:
    // (*(SCREEN+999))++;
    // [13] *((const byte*) SCREEN+(word) $3e7) ← ++ *((const byte*) SCREEN+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc SCREEN+$3e7
    jmp __b3
    // main::@2
  __b2:
    // (word)COSTAB[a]
    // [14] (word~) main::$4 ← (word)*((const byte*) COSTAB + (byte) main::a#2) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy.z a
    lda COSTAB,y
    sta.z __4
    lda #0
    sta.z __4+1
    // bitmap_line( (word)COSTAB[a]+120, (word)SINTAB[a], (word)COSTAB[a+32]+120, (word)SINTAB[a+32])
    // [15] (word) bitmap_line::x1#0 ← (word~) main::$4 + (byte) $78 -- vwuz1=vwuz1_plus_vbuc1 
    lda #$78
    clc
    adc.z bitmap_line.x1
    sta.z bitmap_line.x1
    bcc !+
    inc.z bitmap_line.x1+1
  !:
    // [16] (word) bitmap_line::y1#0 ← (word)*((const byte*) SINTAB + (byte) main::a#2) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy.z a
    lda SINTAB,y
    sta.z bitmap_line.y1
    lda #0
    sta.z bitmap_line.y1+1
    // (word)COSTAB[a+32]
    // [17] (word~) main::$8 ← (word)*((const byte*) COSTAB+(byte) $20 + (byte) main::a#2) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    lda COSTAB+$20,y
    sta.z __8
    lda #0
    sta.z __8+1
    // bitmap_line( (word)COSTAB[a]+120, (word)SINTAB[a], (word)COSTAB[a+32]+120, (word)SINTAB[a+32])
    // [18] (word) bitmap_line::x2#0 ← (word~) main::$8 + (byte) $78 -- vwuz1=vwuz1_plus_vbuc1 
    lda #$78
    clc
    adc.z bitmap_line.x2
    sta.z bitmap_line.x2
    bcc !+
    inc.z bitmap_line.x2+1
  !:
    // [19] (word) bitmap_line::y2#0 ← (word)*((const byte*) SINTAB+(byte) $20 + (byte) main::a#2) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy.z a
    lda SINTAB+$20,y
    sta.z bitmap_line.y2
    lda #0
    sta.z bitmap_line.y2+1
    // [20] call bitmap_line 
    jsr bitmap_line
    // main::@7
    // a+=32
    // [21] (byte) main::a#1 ← (byte) main::a#2 + (byte) $20 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z a
    axs #-[$20]
    stx.z a
    // for( byte i=0, a=0; i!=8; i++, a+=32)
    // [22] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 
    inc.z i
    // [11] phi from main::@7 to main::@1 [phi:main::@7->main::@1]
    // [11] phi (byte) main::a#2 = (byte) main::a#1 [phi:main::@7->main::@1#0] -- register_copy 
    // [11] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@7->main::@1#1] -- register_copy 
    jmp __b1
}
  // bitmap_line
// Draw a line on the bitmap using bresenhams algorithm
// bitmap_line(word zp($b) x1, word zp(9) y1, word zp($f) x2, word zp($11) y2)
bitmap_line: {
    .label dx = $13
    .label dy = 7
    .label sx = $15
    .label sy = 5
    .label e1 = $d
    .label e = 3
    .label y = 9
    .label x = $b
    .label x1 = $b
    .label y1 = 9
    .label x2 = $f
    .label y2 = $11
    // abs_u16(x2-x1)
    // [23] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 -- vwuz1=vwuz2_minus_vwuz3 
    lda.z x2
    sec
    sbc.z x1
    sta.z abs_u16.w
    lda.z x2+1
    sbc.z x1+1
    sta.z abs_u16.w+1
    // [24] call abs_u16 
    // [88] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16]
    // [88] phi (word) abs_u16::w#2 = (word) abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy 
    jsr abs_u16
    // abs_u16(x2-x1)
    // [25] (word) abs_u16::return#0 ← (word) abs_u16::return#4
    // bitmap_line::@12
    // dx = abs_u16(x2-x1)
    // [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0 -- vwuz1=vwuz2 
    lda.z abs_u16.return
    sta.z dx
    lda.z abs_u16.return+1
    sta.z dx+1
    // abs_u16(y2-y1)
    // [27] (word) abs_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 -- vwuz1=vwuz2_minus_vwuz3 
    lda.z y2
    sec
    sbc.z y1
    sta.z abs_u16.w
    lda.z y2+1
    sbc.z y1+1
    sta.z abs_u16.w+1
    // [28] call abs_u16 
    // [88] phi from bitmap_line::@12 to abs_u16 [phi:bitmap_line::@12->abs_u16]
    // [88] phi (word) abs_u16::w#2 = (word) abs_u16::w#1 [phi:bitmap_line::@12->abs_u16#0] -- register_copy 
    jsr abs_u16
    // abs_u16(y2-y1)
    // [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4
    // bitmap_line::@13
    // dy = abs_u16(y2-y1)
    // [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1
    // if(dx==0 && dy==0)
    // [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1 -- vwuz1_neq_0_then_la1 
    lda.z dx
    bne __b1
    lda.z dx+1
    bne __b1
    // bitmap_line::@18
    // [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4 -- vwuz1_eq_0_then_la1 
    lda.z dy
    bne !+
    lda.z dy+1
    bne !__b4+
    jmp __b4
  !__b4:
  !:
    // bitmap_line::@1
  __b1:
    // sgn_u16(x2-x1)
    // [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0 -- vwuz1=vwuz2_minus_vwuz3 
    lda.z x2
    sec
    sbc.z x1
    sta.z sgn_u16.w
    lda.z x2+1
    sbc.z x1+1
    sta.z sgn_u16.w+1
    // [34] call sgn_u16 
    // [81] phi from bitmap_line::@1 to sgn_u16 [phi:bitmap_line::@1->sgn_u16]
    // [81] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#0 [phi:bitmap_line::@1->sgn_u16#0] -- register_copy 
    jsr sgn_u16
    // sgn_u16(x2-x1)
    // [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4
    // bitmap_line::@14
    // sx = sgn_u16(x2-x1)
    // [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0 -- vwuz1=vwuz2 
    lda.z sgn_u16.return
    sta.z sx
    lda.z sgn_u16.return+1
    sta.z sx+1
    // sgn_u16(y2-y1)
    // [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0 -- vwuz1=vwuz2_minus_vwuz3 
    lda.z y2
    sec
    sbc.z y1
    sta.z sgn_u16.w
    lda.z y2+1
    sbc.z y1+1
    sta.z sgn_u16.w+1
    // [38] call sgn_u16 
    // [81] phi from bitmap_line::@14 to sgn_u16 [phi:bitmap_line::@14->sgn_u16]
    // [81] phi (word) sgn_u16::w#2 = (word) sgn_u16::w#1 [phi:bitmap_line::@14->sgn_u16#0] -- register_copy 
    jsr sgn_u16
    // sgn_u16(y2-y1)
    // [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4
    // bitmap_line::@15
    // sy = sgn_u16(y2-y1)
    // [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1
    // if(dx > dy)
    // [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2 -- vwuz1_gt_vwuz2_then_la1 
    lda.z dy+1
    cmp.z dx+1
    bcc __b2
    bne !+
    lda.z dy
    cmp.z dx
    bcc __b2
  !:
    // bitmap_line::@5
    // e = dx/2
    // [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 
    lda.z dx+1
    lsr
    sta.z e+1
    lda.z dx
    ror
    sta.z e
    // [43] phi from bitmap_line::@5 bitmap_line::@7 to bitmap_line::@6 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6]
    // [43] phi (word) bitmap_line::e#3 = (word) bitmap_line::e#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#0] -- register_copy 
    // [43] phi (word) bitmap_line::x#13 = (word) bitmap_line::x1#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#1] -- register_copy 
    // [43] phi (word) bitmap_line::y#4 = (word) bitmap_line::y1#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#2] -- register_copy 
    // bitmap_line::@6
  __b6:
    // bitmap_plot(x,(byte)y)
    // [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4 -- vbuxx=_byte_vwuz1 
    lda.z y
    tax
    // [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13
    // [46] call bitmap_plot 
    // [74] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot]
    // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#1 [phi:bitmap_line::@6->bitmap_plot#0] -- register_copy 
    // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line::@6->bitmap_plot#1] -- register_copy 
    jsr bitmap_plot
    // bitmap_line::@16
    // y += sy
    // [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z y
    clc
    adc.z sy
    sta.z y
    lda.z y+1
    adc.z sy+1
    sta.z y+1
    // e += dx
    // [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z e
    clc
    adc.z dx
    sta.z e
    lda.z e+1
    adc.z dx+1
    sta.z e+1
    // if(dy<e)
    // [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7 -- vwuz1_ge_vwuz2_then_la1 
    cmp.z dy+1
    bne !+
    lda.z e
    cmp.z dy
    beq __b7
  !:
    bcc __b7
    // bitmap_line::@8
    // x += sx
    // [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z x
    clc
    adc.z sx
    sta.z x
    lda.z x+1
    adc.z sx+1
    sta.z x+1
    // e -= dy
    // [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 
    lda.z e
    sec
    sbc.z dy
    sta.z e
    lda.z e+1
    sbc.z dy+1
    sta.z e+1
    // [52] phi from bitmap_line::@16 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7]
    // [52] phi (word) bitmap_line::e#6 = (word) bitmap_line::e#1 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#0] -- register_copy 
    // [52] phi (word) bitmap_line::x#12 = (word) bitmap_line::x#13 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#1] -- register_copy 
    // bitmap_line::@7
  __b7:
    // while (y != y2)
    // [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6 -- vwuz1_neq_vwuz2_then_la1 
    lda.z y+1
    cmp.z y2+1
    bne __b6
    lda.z y
    cmp.z y2
    bne __b6
    // [54] phi from bitmap_line::@10 bitmap_line::@7 to bitmap_line::@3 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3]
    // [54] phi (word) bitmap_line::x#6 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#0] -- register_copy 
    // [54] phi (word) bitmap_line::y#7 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#1] -- register_copy 
    // bitmap_line::@3
  __b3:
    // bitmap_plot(x,(byte)y)
    // [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7 -- vbuxx=_byte_vwuz1 
    lda.z y
    tax
    // [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6
    // [57] call bitmap_plot 
    // [74] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot]
    // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#2 [phi:bitmap_line::@3->bitmap_plot#0] -- register_copy 
    // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line::@3->bitmap_plot#1] -- register_copy 
    jsr bitmap_plot
    // bitmap_line::@return
    // }
    // [58] return 
    rts
    // bitmap_line::@2
  __b2:
    // e = dy/2
    // [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1 -- vwuz1=vwuz2_ror_1 
    lda.z dy+1
    lsr
    sta.z e1+1
    lda.z dy
    ror
    sta.z e1
    // [60] phi from bitmap_line::@10 bitmap_line::@2 to bitmap_line::@9 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9]
    // [60] phi (word) bitmap_line::e1#3 = (word) bitmap_line::e1#6 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#0] -- register_copy 
    // [60] phi (word) bitmap_line::x#7 = (word) bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#1] -- register_copy 
    // [60] phi (word) bitmap_line::y#15 = (word) bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#2] -- register_copy 
    // bitmap_line::@9
  __b9:
    // bitmap_plot(x,(byte)y)
    // [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15 -- vbuxx=_byte_vwuz1 
    lda.z y
    tax
    // [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7
    // [63] call bitmap_plot 
    // [74] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot]
    // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#3 [phi:bitmap_line::@9->bitmap_plot#0] -- register_copy 
    // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line::@9->bitmap_plot#1] -- register_copy 
    jsr bitmap_plot
    // bitmap_line::@17
    // x += sx
    // [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z x
    clc
    adc.z sx
    sta.z x
    lda.z x+1
    adc.z sx+1
    sta.z x+1
    // e += dy
    // [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z e1
    clc
    adc.z dy
    sta.z e1
    lda.z e1+1
    adc.z dy+1
    sta.z e1+1
    // if(dx < e)
    // [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10 -- vwuz1_ge_vwuz2_then_la1 
    cmp.z dx+1
    bne !+
    lda.z e1
    cmp.z dx
    beq __b10
  !:
    bcc __b10
    // bitmap_line::@11
    // y += sy
    // [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 
    lda.z y
    clc
    adc.z sy
    sta.z y
    lda.z y+1
    adc.z sy+1
    sta.z y+1
    // e -= dx
    // [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 
    lda.z e1
    sec
    sbc.z dx
    sta.z e1
    lda.z e1+1
    sbc.z dx+1
    sta.z e1+1
    // [69] phi from bitmap_line::@11 bitmap_line::@17 to bitmap_line::@10 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10]
    // [69] phi (word) bitmap_line::e1#6 = (word) bitmap_line::e1#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#0] -- register_copy 
    // [69] phi (word) bitmap_line::y#13 = (word) bitmap_line::y#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#1] -- register_copy 
    // bitmap_line::@10
  __b10:
    // while (x != x2)
    // [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9 -- vwuz1_neq_vwuz2_then_la1 
    lda.z x+1
    cmp.z x2+1
    bne __b9
    lda.z x
    cmp.z x2
    bne __b9
    jmp __b3
    // bitmap_line::@4
  __b4:
    // bitmap_plot(x,(byte)y)
    // [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0 -- vbuxx=_byte_vwuz1 
    lda.z y1
    tax
    // [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0
    // [73] call bitmap_plot 
    // [74] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot]
    // [74] phi (word) bitmap_plot::x#4 = (word) bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy 
    // [74] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy 
    jsr bitmap_plot
    rts
}
  // bitmap_plot
// Plot a single dot in the bitmap
// bitmap_plot(word zp($b) x, byte register(X) y)
bitmap_plot: {
    .label __1 = $19
    .label plotter = $17
    .label x = $b
    // (byte*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] }
    // [75] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx 
    lda bitmap_plot_yhi,x
    sta.z plotter+1
    lda bitmap_plot_ylo,x
    sta.z plotter
    // x & $fff8
    // [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 
    lda.z x
    and #<$fff8
    sta.z __1
    lda.z x+1
    and #>$fff8
    sta.z __1+1
    // plotter += ( x & $fff8 )
    // [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 
    lda.z plotter
    clc
    adc.z __1
    sta.z plotter
    lda.z plotter+1
    adc.z __1+1
    sta.z plotter+1
    // <x
    // [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4 -- vbuaa=_lo_vwuz1 
    lda.z x
    // *plotter |= bitmap_plot_bit[<x]
    // [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa 
    tay
    lda bitmap_plot_bit,y
    ldy #0
    ora (plotter),y
    sta (plotter),y
    // bitmap_plot::@return
    // }
    // [80] return 
    rts
}
  // sgn_u16
// Get the sign of a 16-bit unsigned number treated as a signed number.
// Returns unsigned -1 if the number is
// sgn_u16(word zp(3) w)
sgn_u16: {
    .label w = 3
    .label return = 5
    // >w
    // [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 -- vbuaa=_hi_vwuz1 
    lda.z w+1
    // >w&0x80
    // [83] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 
    and #$80
    // if(>w&0x80)
    // [84] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1 -- vbuc1_neq_vbuaa_then_la1 
    cmp #0
    bne __b1
    // [86] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return]
    // [86] phi (word) sgn_u16::return#4 = (byte) 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 
    lda #<1
    sta.z return
    lda #>1
    sta.z return+1
    rts
    // [85] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1]
    // sgn_u16::@1
  __b1:
    // [86] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return]
    // [86] phi (word) sgn_u16::return#4 = (byte) -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 
    lda #<-1
    sta.z return
    sta.z return+1
    // sgn_u16::@return
    // }
    // [87] return 
    rts
}
  // abs_u16
// Get the absolute value of a 16-bit unsigned number treated as a signed number.
// abs_u16(word zp(7) w)
abs_u16: {
    .label w = 7
    .label return = 7
    // >w
    // [89] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2 -- vbuaa=_hi_vwuz1 
    lda.z w+1
    // >w&0x80
    // [90] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1 
    and #$80
    // if(>w&0x80)
    // [91] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1 -- vbuc1_neq_vbuaa_then_la1 
    cmp #0
    bne __b1
    // [93] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return]
    // [93] phi (word) abs_u16::return#4 = (word) abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy 
    rts
    // abs_u16::@1
  __b1:
    // return -w;
    // [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2 -- vwuz1=_neg_vwuz1 
    sec
    lda #0
    sbc.z return
    sta.z return
    lda #0
    sbc.z return+1
    sta.z return+1
    // abs_u16::@return
    // }
    // [94] return 
    rts
}
  // bitmap_clear
// Clear all graphics on the bitmap
// bgcol - the background color to fill the screen with
// fgcol - the foreground color to fill the screen with
bitmap_clear: {
    .const col = WHITE*$10
    // memset(bitmap_screen, col, 1000uw)
    // [96] call memset 
    // [100] phi from bitmap_clear to memset [phi:bitmap_clear->memset]
    // [100] phi (byte) memset::c#4 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 
    ldx #col
    // [100] phi (void*) memset::str#3 = (void*)(const byte*) SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 
    lda #<SCREEN
    sta.z memset.str
    lda #>SCREEN
    sta.z memset.str+1
    // [100] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 
    lda #<$3e8
    sta.z memset.num
    lda #>$3e8
    sta.z memset.num+1
    jsr memset
    // [97] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1]
    // bitmap_clear::@1
    // memset(bitmap_gfx, 0, 8000uw)
    // [98] call memset 
    // [100] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset]
    // [100] phi (byte) memset::c#4 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 
    ldx #0
    // [100] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 
    lda #<BITMAP
    sta.z memset.str
    lda #>BITMAP
    sta.z memset.str+1
    // [100] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 
    lda #<$1f40
    sta.z memset.num
    lda #>$1f40
    sta.z memset.num+1
    jsr memset
    // bitmap_clear::@return
    // }
    // [99] 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* zp($b) str, byte register(X) c, word zp(9) num)
memset: {
    .label end = 9
    .label dst = $b
    .label num = 9
    .label str = $b
    // if(num>0)
    // [101] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 
    lda.z num
    bne !+
    lda.z num+1
    beq __breturn
  !:
    // memset::@1
    // end = (char*)str + num
    // [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 
    lda.z end
    clc
    adc.z str
    sta.z end
    lda.z end+1
    adc.z str+1
    sta.z end+1
    // [103] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
    // [104] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2]
    // [104] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy 
    // memset::@2
  __b2:
    // for(char* dst = str; dst!=end; dst++)
    // [105] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 
    lda.z dst+1
    cmp.z end+1
    bne __b3
    lda.z dst
    cmp.z end
    bne __b3
    // memset::@return
  __breturn:
    // }
    // [106] return 
    rts
    // memset::@3
  __b3:
    // *dst = c
    // [107] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuxx 
    txa
    ldy #0
    sta (dst),y
    // for(char* dst = str; dst!=end; dst++)
    // [108] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 
    inc.z dst
    bne !+
    inc.z dst+1
  !:
    jmp __b2
}
  // bitmap_init
// Initialize bitmap plotting tables
bitmap_init: {
    .label __7 = $1b
    .label yoffs = $d
    // [110] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
    // [110] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 
    ldx #0
    // [110] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 
    lda #$80
    // [110] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1]
    // [110] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy 
    // [110] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy 
    // bitmap_init::@1
  __b1:
    // bitmap_plot_bit[x] = bits
    // [111] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta bitmap_plot_bit,x
    // bits >>= 1
    // [112] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuaa=vbuaa_ror_1 
    lsr
    // if(bits==0)
    // [113] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 
    cmp #0
    bne __b2
    // [115] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2]
    // [115] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 
    lda #$80
    // [114] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6]
    // bitmap_init::@6
    // [115] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2]
    // [115] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy 
    // bitmap_init::@2
  __b2:
    // for(byte x : 0..255)
    // [116] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx 
    inx
    // [117] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne __b1
    // [118] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3]
    // [118] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 
    lda #<BITMAP
    sta.z yoffs
    lda #>BITMAP
    sta.z yoffs+1
    // [118] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 
    ldx #0
    // [118] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3]
    // [118] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy 
    // [118] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy 
    // bitmap_init::@3
  __b3:
    // y&$7
    // [119] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1 
    lda #7
    sax.z __7
    // <yoffs
    // [120] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 
    lda.z yoffs
    // y&$7 | <yoffs
    // [121] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa 
    ora.z __7
    // bitmap_plot_ylo[y] = y&$7 | <yoffs
    // [122] *((const byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta bitmap_plot_ylo,x
    // >yoffs
    // [123] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 
    lda.z yoffs+1
    // bitmap_plot_yhi[y] = >yoffs
    // [124] *((const byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa 
    sta bitmap_plot_yhi,x
    // if((y&$7)==7)
    // [125] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 
    lda #7
    cmp.z __7
    bne __b4
    // bitmap_init::@5
    // yoffs = yoffs + 40*8
    // [126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 
    clc
    lda.z yoffs
    adc #<$28*8
    sta.z yoffs
    lda.z yoffs+1
    adc #>$28*8
    sta.z yoffs+1
    // [127] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4]
    // [127] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy 
    // bitmap_init::@4
  __b4:
    // for(byte y : 0..255)
    // [128] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx 
    inx
    // [129] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 
    cpx #0
    bne __b3
    // bitmap_init::@return
    // }
    // [130] return 
    rts
}
  // File Data
  // Tables for the plotter - initialized by calling bitmap_init();
  bitmap_plot_ylo: .fill $100, 0
  bitmap_plot_yhi: .fill $100, 0
  bitmap_plot_bit: .fill $100, 0
  .align $100
SINTAB:
.fill $180, 99.5+99.5*sin(i*2*PI/256) 

