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 (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
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx 
Inlined call (byte~) main::$5 ← call toD018 (byte*) SCREEN (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) bitmap_init::@8
Culled Empty Block (label) @9
Culled Empty Block (label) @10
Culled Empty Block (label) @11
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) @12
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) @13
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) @14
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) 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
  (byte*) D011#0 ← ((byte*)) (number) $d011
  (byte) VIC_BMM#0 ← (number) $20
  (byte) VIC_DEN#0 ← (number) $10
  (byte) VIC_RSEL#0 ← (number) 8
  (byte*) D018#0 ← ((byte*)) (number) $d018
  (byte) BLACK#0 ← (number) 0
  (byte) WHITE#0 ← (number) 1
  to:@8
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
@8: scope:[]  from @begin
  (byte*) bitmap_screen#0 ← (byte*) 0
  (byte*) bitmap_gfx#0 ← (byte*) 0
  (byte[$100]) bitmap_plot_ylo#0 ← { fill( $100, 0) }
  (byte[$100]) bitmap_plot_yhi#0 ← { fill( $100, 0) }
  (byte[$100]) bitmap_plot_bit#0 ← { fill( $100, 0) }
  to:@46
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 ← (number) $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#26 ← phi( bitmap_init/(byte*) bitmap_screen#1 bitmap_init::@2/(byte*) bitmap_screen#23 )
  (byte*) bitmap_gfx#27 ← phi( bitmap_init/(byte*) bitmap_gfx#1 bitmap_init::@2/(byte*) bitmap_gfx#24 )
  (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 )
  *((byte[$100]) bitmap_plot_bit#0 + (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#23 ← phi( bitmap_init::@1/(byte*) bitmap_screen#26 bitmap_init::@3/(byte*) bitmap_screen#27 )
  (byte*) bitmap_gfx#24 ← phi( bitmap_init::@1/(byte*) bitmap_gfx#27 bitmap_init::@3/(byte*) bitmap_gfx#28 )
  (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#27 ← phi( bitmap_init::@1/(byte*) bitmap_screen#26 )
  (byte*) bitmap_gfx#28 ← phi( bitmap_init::@1/(byte*) bitmap_gfx#27 )
  (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#20 ← phi( bitmap_init::@2/(byte*) bitmap_screen#23 )
  (byte*) bitmap_gfx#21 ← phi( bitmap_init::@2/(byte*) bitmap_gfx#24 )
  (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#20 bitmap_init::@6/(byte*) bitmap_screen#11 )
  (byte*) bitmap_gfx#16 ← phi( bitmap_init::@4/(byte*) bitmap_gfx#21 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
  *((byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (number~) bitmap_init::$5
  (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
  *((byte[$100]) bitmap_plot_yhi#0 + (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
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
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*)) { *((byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4), *((byte[$100]) bitmap_plot_ylo#0 + (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) | *((byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2)
  to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot]  from bitmap_plot
  return 
  to:@return
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
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
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
@46: scope:[]  from @8
  (byte*) bitmap_screen#19 ← phi( @8/(byte*) bitmap_screen#0 )
  (byte*) bitmap_gfx#20 ← phi( @8/(byte*) bitmap_gfx#0 )
  (byte*) BITMAP#0 ← ((byte*)) (number) $2000
  (byte*) SCREEN#0 ← ((byte*)) (number) $400
  (byte[$180]) SINTAB#0 ← kickasm {{ .fill $180, 99.5+99.5*sin(i*2*PI/256)  }}
  (byte*~) $0 ← (byte[$180]) SINTAB#0 + (number) $40
  (byte*) COSTAB#0 ← (byte*~) $0
  to:@47
main: scope:[main]  from @47
  (byte*) COSTAB#9 ← phi( @47/(byte*) COSTAB#10 )
  (byte*) bitmap_screen#12 ← phi( @47/(byte*) bitmap_screen#14 )
  (byte*) bitmap_gfx#13 ← phi( @47/(byte*) bitmap_gfx#15 )
  (byte*) bitmap_init::gfx#0 ← (byte*) BITMAP#0
  (byte*) bitmap_init::screen#0 ← (byte*) SCREEN#0
  call bitmap_init 
  to:main::@14
main::@14: scope:[main]  from main
  (byte*) COSTAB#8 ← phi( main/(byte*) COSTAB#9 )
  (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 ← (byte) BLACK#0
  (byte) bitmap_clear::fgcol#0 ← (byte) WHITE#0
  call bitmap_clear 
  to:main::@15
main::@15: scope:[main]  from main::@14
  (byte*) bitmap_screen#29 ← phi( main::@14/(byte*) bitmap_screen#3 )
  (byte*) bitmap_gfx#30 ← phi( main::@14/(byte*) bitmap_gfx#3 )
  (byte*) COSTAB#7 ← phi( main::@14/(byte*) COSTAB#8 )
  (byte~) main::$2 ← (byte) VIC_BMM#0 | (byte) VIC_DEN#0
  (byte~) main::$3 ← (byte~) main::$2 | (byte) VIC_RSEL#0
  (number~) main::$4 ← (byte~) main::$3 | (number) 3
  *((byte*) D011#0) ← (number~) main::$4
  (byte*) main::toD0181_screen#0 ← (byte*) SCREEN#0
  (byte*) main::toD0181_gfx#0 ← (byte*) BITMAP#0
  to:main::toD0181
main::toD0181: scope:[main]  from main::@15
  (byte*) bitmap_screen#28 ← phi( main::@15/(byte*) bitmap_screen#29 )
  (byte*) bitmap_gfx#29 ← phi( main::@15/(byte*) bitmap_gfx#30 )
  (byte*) COSTAB#6 ← phi( main::@15/(byte*) COSTAB#7 )
  (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#0 ← ((word)) (byte*) main::toD0181_screen#1
  (number~) main::toD0181_$1#0 ← (word~) main::toD0181_$0#0 & (number) $3fff
  (number~) main::toD0181_$2#0 ← (number~) main::toD0181_$1#0 * (number) 4
  (number~) main::toD0181_$3#0 ← > (number~) main::toD0181_$2#0
  (word~) main::toD0181_$4#0 ← ((word)) (byte*) main::toD0181_gfx#1
  (byte~) main::toD0181_$5#0 ← > (word~) main::toD0181_$4#0
  (number~) main::toD0181_$6#0 ← (byte~) main::toD0181_$5#0 / (number) 4
  (number~) main::toD0181_$7#0 ← (number~) main::toD0181_$6#0 & (number) $f
  (number~) main::toD0181_$8#0 ← (number~) main::toD0181_$3#0 | (number~) main::toD0181_$7#0
  (byte) main::toD0181_return#0 ← (number~) main::toD0181_$8#0
  to:main::toD0181_@return
main::toD0181_@return: scope:[main]  from main::toD0181
  (byte*) bitmap_screen#24 ← phi( main::toD0181/(byte*) bitmap_screen#28 )
  (byte*) bitmap_gfx#25 ← phi( main::toD0181/(byte*) bitmap_gfx#29 )
  (byte*) COSTAB#5 ← phi( main::toD0181/(byte*) COSTAB#6 )
  (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#21 ← phi( main::toD0181_@return/(byte*) bitmap_screen#24 )
  (byte*) bitmap_gfx#22 ← phi( main::toD0181_@return/(byte*) bitmap_gfx#25 )
  (byte*) COSTAB#3 ← phi( main::toD0181_@return/(byte*) COSTAB#5 )
  (byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 )
  (byte~) main::$5 ← (byte) main::toD0181_return#3
  *((byte*) D018#0) ← (byte~) main::$5
  (byte) main::i#0 ← (number) 0
  (byte) main::a#0 ← (number) 0
  to:main::@1
main::@1: scope:[main]  from main::@13 main::@16
  (byte*) bitmap_screen#17 ← phi( main::@13/(byte*) bitmap_screen#21 main::@16/(byte*) bitmap_screen#22 )
  (byte*) bitmap_gfx#18 ← phi( main::@13/(byte*) bitmap_gfx#22 main::@16/(byte*) bitmap_gfx#23 )
  (byte) main::a#4 ← phi( main::@13/(byte) main::a#0 main::@16/(byte) main::a#1 )
  (byte*) COSTAB#2 ← phi( main::@13/(byte*) COSTAB#3 main::@16/(byte*) COSTAB#4 )
  (byte) main::i#2 ← phi( main::@13/(byte) main::i#0 main::@16/(byte) main::i#1 )
  (bool~) main::$6 ← (byte) main::i#2 != (number) 8
  if((bool~) main::$6) goto main::@2
  to:main::@7
main::@2: scope:[main]  from main::@1
  (byte*) bitmap_screen#25 ← phi( main::@1/(byte*) bitmap_screen#17 )
  (byte*) bitmap_gfx#26 ← 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 )
  (byte*) COSTAB#1 ← phi( main::@1/(byte*) COSTAB#2 )
  (word~) main::$7 ← ((word)) *((byte*) COSTAB#1 + (byte) main::a#2)
  (number~) main::$8 ← (word~) main::$7 + (number) $78
  (word~) main::$9 ← ((word)) *((byte[$180]) SINTAB#0 + (byte) main::a#2)
  (number~) main::$10 ← (byte) main::a#2 + (number) $20
  (word~) main::$11 ← ((word)) *((byte*) COSTAB#1 + (number~) main::$10)
  (number~) main::$12 ← (word~) main::$11 + (number) $78
  (number~) main::$13 ← (byte) main::a#2 + (number) $20
  (word~) main::$14 ← ((word)) *((byte[$180]) SINTAB#0 + (number~) main::$13)
  (word) bitmap_line::x1#0 ← (number~) main::$8
  (word) bitmap_line::y1#0 ← (word~) main::$9
  (word) bitmap_line::x2#0 ← (number~) main::$12
  (word) bitmap_line::y2#0 ← (word~) main::$14
  call bitmap_line 
  to:main::@16
main::@16: scope:[main]  from main::@2
  (byte*) bitmap_screen#22 ← phi( main::@2/(byte*) bitmap_screen#25 )
  (byte*) bitmap_gfx#23 ← phi( main::@2/(byte*) bitmap_gfx#26 )
  (byte*) COSTAB#4 ← phi( main::@2/(byte*) COSTAB#1 )
  (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::$18 ← (byte*) SCREEN#0 + (number) $3e7
  *((byte*~) main::$18) ← ++ *((byte*~) main::$18)
  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
@47: scope:[]  from @46
  (byte*) COSTAB#10 ← phi( @46/(byte*) COSTAB#0 )
  (byte*) bitmap_screen#14 ← phi( @46/(byte*) bitmap_screen#19 )
  (byte*) bitmap_gfx#15 ← phi( @46/(byte*) bitmap_gfx#20 )
  call main 
  to:@48
@48: scope:[]  from @47
  (byte*) bitmap_screen#10 ← phi( @47/(byte*) bitmap_screen#4 )
  (byte*) bitmap_gfx#10 ← phi( @47/(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 @48

SYMBOL TABLE SSA
(byte*~) $0
(label) @46
(label) @47
(label) @48
(label) @8
(label) @begin
(label) @end
(byte*) BITMAP
(byte*) BITMAP#0
(byte) BLACK
(byte) BLACK#0
(byte*) COSTAB
(byte*) COSTAB#0
(byte*) COSTAB#1
(byte*) COSTAB#10
(byte*) COSTAB#2
(byte*) COSTAB#3
(byte*) COSTAB#4
(byte*) COSTAB#5
(byte*) COSTAB#6
(byte*) COSTAB#7
(byte*) COSTAB#8
(byte*) COSTAB#9
(byte*) D011
(byte*) D011#0
(byte*) D018
(byte*) D018#0
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(byte*) SCREEN
(byte*) SCREEN#0
(byte[$180]) SINTAB
(byte[$180]) SINTAB#0
(byte) VIC_BMM
(byte) VIC_BMM#0
(byte) VIC_DEN
(byte) VIC_DEN#0
(byte) VIC_RSEL
(byte) VIC_RSEL#0
(byte) WHITE
(byte) WHITE#0
(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#30
(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
(byte[$100]) bitmap_plot_bit
(byte[$100]) bitmap_plot_bit#0
(byte[$100]) bitmap_plot_yhi
(byte[$100]) bitmap_plot_yhi#0
(byte[$100]) bitmap_plot_ylo
(byte[$100]) bitmap_plot_ylo#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#29
(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
(number~) main::$12
(number~) main::$13
(word~) main::$14
(byte*~) main::$18
(byte~) main::$2
(byte~) main::$3
(number~) main::$4
(byte~) main::$5
(bool~) main::$6
(word~) main::$7
(number~) main::$8
(word~) 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
(word~) main::toD0181_$0#0
(number~) main::toD0181_$1
(number~) main::toD0181_$1#0
(number~) main::toD0181_$2
(number~) main::toD0181_$2#0
(number~) main::toD0181_$3
(number~) main::toD0181_$3#0
(word~) main::toD0181_$4
(word~) main::toD0181_$4#0
(byte~) main::toD0181_$5
(byte~) main::toD0181_$5#0
(number~) main::toD0181_$6
(number~) main::toD0181_$6#0
(number~) main::toD0181_$7
(number~) main::toD0181_$7#0
(number~) main::toD0181_$8
(number~) main::toD0181_$8#0
(label) main::toD0181_@return
(byte*) main::toD0181_gfx
(byte*) main::toD0181_gfx#0
(byte*) main::toD0181_gfx#1
(byte) main::toD0181_return
(byte) main::toD0181_return#0
(byte) main::toD0181_return#1
(byte) main::toD0181_return#2
(byte) main::toD0181_return#3
(byte*) main::toD0181_screen
(byte*) main::toD0181_screen#0
(byte*) main::toD0181_screen#1
(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#0 + bitmap_plot::y#4) w= (byte)*(bitmap_plot_ylo#0 + bitmap_plot::y#4)
Successful SSA optimization Pass2FixInlineConstructors
Adding number conversion cast (unumber) $20 in (byte) VIC_BMM#0 ← (number) $20
Adding number conversion cast (unumber) $10 in (byte) VIC_DEN#0 ← (number) $10
Adding number conversion cast (unumber) 8 in (byte) VIC_RSEL#0 ← (number) 8
Adding number conversion cast (unumber) 0 in (byte) BLACK#0 ← (number) 0
Adding number conversion cast (unumber) 1 in (byte) WHITE#0 ← (number) 1
Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#2 > (number) 0
Adding number conversion cast (unumber) $80 in (byte) bitmap_init::bits#0 ← (number) $80
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) $40 in (byte*~) $0 ← (byte[$180]) SINTAB#0 + (number) $40
Adding number conversion cast (unumber) 3 in (number~) main::$4 ← (byte~) main::$3 | (number) 3
Adding number conversion cast (unumber) main::$4 in (number~) main::$4 ← (byte~) main::$3 | (unumber)(number) 3
Adding number conversion cast (unumber) $3fff in (number~) main::toD0181_$1#0 ← (word~) main::toD0181_$0#0 & (number) $3fff
Adding number conversion cast (unumber) main::toD0181_$1#0 in (number~) main::toD0181_$1#0 ← (word~) main::toD0181_$0#0 & (unumber)(number) $3fff
Adding number conversion cast (unumber) 4 in (number~) main::toD0181_$2#0 ← (unumber~) main::toD0181_$1#0 * (number) 4
Adding number conversion cast (unumber) main::toD0181_$2#0 in (number~) main::toD0181_$2#0 ← (unumber~) main::toD0181_$1#0 * (unumber)(number) 4
Adding number conversion cast (unumber) main::toD0181_$3#0 in (number~) main::toD0181_$3#0 ← > (unumber~) main::toD0181_$2#0
Adding number conversion cast (unumber) 4 in (number~) main::toD0181_$6#0 ← (byte~) main::toD0181_$5#0 / (number) 4
Adding number conversion cast (unumber) main::toD0181_$6#0 in (number~) main::toD0181_$6#0 ← (byte~) main::toD0181_$5#0 / (unumber)(number) 4
Adding number conversion cast (unumber) $f in (number~) main::toD0181_$7#0 ← (unumber~) main::toD0181_$6#0 & (number) $f
Adding number conversion cast (unumber) main::toD0181_$7#0 in (number~) main::toD0181_$7#0 ← (unumber~) main::toD0181_$6#0 & (unumber)(number) $f
Adding number conversion cast (unumber) main::toD0181_$8#0 in (number~) main::toD0181_$8#0 ← (unumber~) main::toD0181_$3#0 | (unumber~) main::toD0181_$7#0
Adding number conversion cast (unumber) 0 in (byte) main::i#0 ← (number) 0
Adding number conversion cast (unumber) 0 in (byte) main::a#0 ← (number) 0
Adding number conversion cast (unumber) 8 in (bool~) main::$6 ← (byte) main::i#2 != (number) 8
Adding number conversion cast (unumber) $78 in (number~) main::$8 ← (word~) main::$7 + (number) $78
Adding number conversion cast (unumber) main::$8 in (number~) main::$8 ← (word~) main::$7 + (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) $78 in (number~) main::$12 ← (word~) main::$11 + (number) $78
Adding number conversion cast (unumber) main::$12 in (number~) main::$12 ← (word~) main::$11 + (unumber)(number) $78
Adding number conversion cast (unumber) $20 in (number~) main::$13 ← (byte) main::a#2 + (number) $20
Adding number conversion cast (unumber) main::$13 in (number~) main::$13 ← (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::$18 ← (byte*) SCREEN#0 + (number) $3e7
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (byte*) D011#0 ← (byte*)(number) $d011
Inlining cast (byte) VIC_BMM#0 ← (unumber)(number) $20
Inlining cast (byte) VIC_DEN#0 ← (unumber)(number) $10
Inlining cast (byte) VIC_RSEL#0 ← (unumber)(number) 8
Inlining cast (byte*) D018#0 ← (byte*)(number) $d018
Inlining cast (byte) BLACK#0 ← (unumber)(number) 0
Inlining cast (byte) WHITE#0 ← (unumber)(number) 1
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#0 ← (unumber)(number) $80
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 (byte*) BITMAP#0 ← (byte*)(number) $2000
Inlining cast (byte*) SCREEN#0 ← (byte*)(number) $400
Inlining cast (word~) main::toD0181_$0#0 ← (word)(byte*) main::toD0181_screen#1
Inlining cast (word~) main::toD0181_$4#0 ← (word)(byte*) main::toD0181_gfx#1
Inlining cast (byte) main::i#0 ← (unumber)(number) 0
Inlining cast (byte) main::a#0 ← (unumber)(number) 0
Inlining cast (word~) main::$7 ← (word)*((byte*) COSTAB#1 + (byte) main::a#2)
Inlining cast (word~) main::$9 ← (word)*((byte[$180]) SINTAB#0 + (byte) main::a#2)
Inlining cast (word~) main::$11 ← (word)*((byte*) COSTAB#1 + (unumber~) main::$10)
Inlining cast (word~) main::$14 ← (word)*((byte[$180]) SINTAB#0 + (unumber~) main::$13)
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 53265
Simplifying constant integer cast $20
Simplifying constant integer cast $10
Simplifying constant integer cast 8
Simplifying constant pointer cast (byte*) 53272
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Simplifying constant integer cast 0
Simplifying constant integer cast $80
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 *((byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4)
Simplifying constant integer cast *((byte[$100]) bitmap_plot_ylo#0 + (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 pointer cast (byte*) 8192
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast $40
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 0
Simplifying constant integer cast 0
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) $20
Finalized unsigned number type (byte) $10
Finalized unsigned number type (byte) 8
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) 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) $40
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) 0
Finalized unsigned number type (byte) 0
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 byte in (unumber~) main::$4 ← (byte~) main::$3 | (byte) 3
Inferred type updated to word in (unumber~) main::toD0181_$1#0 ← (word~) main::toD0181_$0#0 & (word) $3fff
Inferred type updated to word in (unumber~) main::toD0181_$2#0 ← (word~) main::toD0181_$1#0 * (byte) 4
Inferred type updated to byte in (unumber~) main::toD0181_$3#0 ← > (word~) main::toD0181_$2#0
Inferred type updated to byte in (unumber~) main::toD0181_$6#0 ← (byte~) main::toD0181_$5#0 / (byte) 4
Inferred type updated to byte in (unumber~) main::toD0181_$7#0 ← (byte~) main::toD0181_$6#0 & (byte) $f
Inferred type updated to byte in (unumber~) main::toD0181_$8#0 ← (byte~) main::toD0181_$3#0 | (byte~) main::toD0181_$7#0
Inferred type updated to word in (unumber~) main::$8 ← (word~) main::$7 + (byte) $78
Inferred type updated to byte in (unumber~) main::$10 ← (byte) main::a#2 + (byte) $20
Inferred type updated to word in (unumber~) main::$12 ← (word~) main::$11 + (byte) $78
Inferred type updated to byte in (unumber~) main::$13 ← (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 [9] (bool~) memset::$1 ← (word) memset::num#2 <= (byte) 0 from [8] (bool~) memset::$0 ← (word) memset::num#2 > (byte) 0
Inversing boolean not [41] (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte) 0 from [40] (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte) 0
Inversing boolean not [61] (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte) 7 from [60] (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte) 7
Inversing boolean not [159] (bool~) bitmap_line::$21 ← (word) bitmap_line::dy#3 >= (word) bitmap_line::e#1 from [158] (bool~) bitmap_line::$20 ← (word) bitmap_line::dy#3 < (word) bitmap_line::e#1
Inversing boolean not [181] (bool~) bitmap_line::$27 ← (word) bitmap_line::dx#5 >= (word) bitmap_line::e1#1 from [180] (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#27 = (byte*) bitmap_gfx#28 
Alias (byte*) bitmap_screen#26 = (byte*) bitmap_screen#27 
Alias (byte*) bitmap_init::gfx#2 = (byte*) bitmap_init::gfx#3 (byte*) bitmap_init::yoffs#0 
Alias (byte*) bitmap_gfx#21 = (byte*) bitmap_gfx#24 
Alias (byte*) bitmap_screen#20 = (byte*) bitmap_screen#23 
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#0 = (byte*) bitmap_gfx#20 (byte*) bitmap_gfx#15 
Alias (byte*) bitmap_screen#0 = (byte*) bitmap_screen#19 (byte*) bitmap_screen#14 
Alias (byte*) COSTAB#0 = (byte*~) $0 (byte*) COSTAB#10 
Alias (byte*) COSTAB#3 = (byte*) COSTAB#8 (byte*) COSTAB#9 (byte*) COSTAB#7 (byte*) COSTAB#6 (byte*) COSTAB#5 
Alias (byte*) bitmap_gfx#22 = (byte*) bitmap_gfx#3 (byte*) bitmap_gfx#8 (byte*) bitmap_gfx#30 (byte*) bitmap_gfx#29 (byte*) bitmap_gfx#25 
Alias (byte*) bitmap_screen#21 = (byte*) bitmap_screen#3 (byte*) bitmap_screen#8 (byte*) bitmap_screen#29 (byte*) bitmap_screen#28 (byte*) bitmap_screen#24 
Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 
Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 
Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8#0 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$5 
Alias (byte*) COSTAB#1 = (byte*) COSTAB#2 (byte*) COSTAB#4 
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#26 (byte*) bitmap_gfx#23 
Alias (byte*) bitmap_screen#17 = (byte*) bitmap_screen#25 (byte*) bitmap_screen#22 
Alias (word) bitmap_line::x1#0 = (word~) main::$8 
Alias (word) bitmap_line::y1#0 = (word~) main::$9 
Alias (word) bitmap_line::x2#0 = (word~) main::$12 
Alias (word) bitmap_line::y2#0 = (word~) main::$14 
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#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#21 = (byte*) bitmap_gfx#27 
Alias (byte*) bitmap_screen#20 = (byte*) bitmap_screen#26 
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#21 (byte*) bitmap_gfx#1
Identical Phi Values (byte*) bitmap_screen#20 (byte*) bitmap_screen#1
Identical Phi Values (byte*) bitmap_gfx#11 (byte*) bitmap_gfx#21
Identical Phi Values (byte*) bitmap_screen#11 (byte*) bitmap_screen#20
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#21
Identical Phi Values (byte*) bitmap_gfx#12 (byte*) bitmap_gfx#22
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*) COSTAB#3 (byte*) COSTAB#0
Identical Phi Values (byte*) bitmap_gfx#22 (byte*) bitmap_gfx#11
Identical Phi Values (byte*) bitmap_screen#21 (byte*) bitmap_screen#11
Identical Phi Values (byte*) COSTAB#1 (byte*) COSTAB#3
Identical Phi Values (byte*) bitmap_gfx#18 (byte*) bitmap_gfx#22
Identical Phi Values (byte*) bitmap_screen#17 (byte*) bitmap_screen#21
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 [59] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
Successful SSA optimization Pass2DuplicateRValueIdentification
Simple Condition (bool~) memset::$1 [10] if((word) memset::num#2<=(byte) 0) goto memset::@1
Simple Condition (bool~) memset::$4 [20] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5
Simple Condition (bool~) bitmap_init::$1 [42] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@2
Simple Condition (bool~) bitmap_init::$2 [46] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1
Simple Condition (bool~) bitmap_init::$9 [62] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@6
Simple Condition (bool~) bitmap_init::$11 [66] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5
Simple Condition (bool~) bitmap_line::$12 [137] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2
Simple Condition (bool~) bitmap_line::$21 [160] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@8
Simple Condition (bool~) bitmap_line::$22 [163] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@7
Simple Condition (bool~) bitmap_line::$27 [182] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@13
Simple Condition (bool~) bitmap_line::$28 [185] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@12
Simple Condition (bool~) abs_u16::$3 [193] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1
Simple Condition (bool~) sgn_u16::$2 [206] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1
Simple Condition (bool~) main::$6 [255] if((byte) main::i#2!=(byte) 8) goto main::@2
Successful SSA optimization Pass2ConditionalJumpSimplification
Rewriting ! if()-condition to reversed if() [119] (bool~) bitmap_line::$7 ← ! (bool~) bitmap_line::$6
Successful SSA optimization Pass2ConditionalAndOrRewriting
Rewriting && if()-condition to two if()s [118] (bool~) bitmap_line::$6 ← (bool~) bitmap_line::$4 && (bool~) bitmap_line::$5
Successful SSA optimization Pass2ConditionalAndOrRewriting
Constant right-side identified [29] (byte[$100]) bitmap_plot_ylo#0 ← { fill( $100, 0) }
Constant right-side identified [30] (byte[$100]) bitmap_plot_yhi#0 ← { fill( $100, 0) }
Constant right-side identified [31] (byte[$100]) bitmap_plot_bit#0 ← { fill( $100, 0) }
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) D011#0 = (byte*) 53265
Constant (const byte) VIC_BMM#0 = $20
Constant (const byte) VIC_DEN#0 = $10
Constant (const byte) VIC_RSEL#0 = 8
Constant (const byte*) D018#0 = (byte*) 53272
Constant (const byte) BLACK#0 = 0
Constant (const byte) WHITE#0 = 1
Constant (const byte*) bitmap_screen#0 = (byte*) 0
Constant (const byte*) bitmap_gfx#0 = (byte*) 0
Constant (const byte[$100]) bitmap_plot_ylo#0 = { fill( $100, 0) }
Constant (const byte[$100]) bitmap_plot_yhi#0 = { fill( $100, 0) }
Constant (const byte[$100]) bitmap_plot_bit#0 = { fill( $100, 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#0 = (byte*) 8192
Constant (const byte*) SCREEN#0 = (byte*) 1024
Constant (const byte[$180]) SINTAB#0 = kickasm {{ .fill $180, 99.5+99.5*sin(i*2*PI/256)  }}
Constant (const byte) main::i#0 = 0
Constant (const byte) main::a#0 = 0
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) bitmap_init::gfx#0 = BITMAP#0
Constant (const byte*) bitmap_init::screen#0 = SCREEN#0
Constant (const byte) bitmap_clear::bgcol#0 = BLACK#0
Constant (const byte) bitmap_clear::fgcol#0 = WHITE#0
Constant (const byte*) main::toD0181_screen#0 = SCREEN#0
Constant (const byte*) main::toD0181_gfx#0 = BITMAP#0
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) bitmap_gfx#1 = bitmap_init::gfx#0
Constant (const byte*) bitmap_screen#1 = bitmap_init::screen#0
Successful SSA optimization Pass2ConstantIdentification
Constant value identified (void*)bitmap_screen#1 in [78] (void*) memset::str#0 ← (void*)(const byte*) bitmap_screen#1
Constant value identified (void*)bitmap_gfx#1 in [84] (void*) memset::str#1 ← (void*)(const byte*) bitmap_gfx#1
Constant value identified (word)main::toD0181_screen#0 in [236] (word~) main::toD0181_$0#0 ← (word)(const byte*) main::toD0181_screen#0
Constant value identified (word)main::toD0181_gfx#0 in [240] (word~) main::toD0181_$4#0 ← (word)(const byte*) main::toD0181_gfx#0
Successful SSA optimization Pass2ConstantValues
if() condition always true - replacing block destination [274] if(true) goto main::@8
Successful SSA optimization Pass2ConstantIfs
Resolved ranged next value [44] bitmap_init::x#1 ← ++ bitmap_init::x#2 to ++
Resolved ranged comparison value [46] if(bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 to (number) 0
Resolved ranged next value [64] bitmap_init::y#1 ← ++ bitmap_init::y#2 to ++
Resolved ranged comparison value [66] if(bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 to (number) 0
Simplifying expression containing zero bitmap_clear::$0 in [76] (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 [36] (void*) memset::return#2 ← (void*) memset::str#3
Eliminating unused variable (void*) memset::return#3 and assignment [39] (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#0
Successful SSA optimization PassNEliminateUnusedVars
Removing unused block main::@return
Successful SSA optimization Pass2EliminateUnusedBlocks
Successful SSA optimization Pass2LoopHeadConstantIdentification
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 
Alias (byte) main::i#1 = (byte) main::i#2 
Alias (byte) main::a#1 = (byte) main::a#2 
Alias (byte) main::i#5 = (byte) main::i#6 
Alias (byte) main::a#5 = (byte) main::a#6 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (byte) main::i#7 (const byte) main::i#0
Identical Phi Values (byte) main::a#7 (const byte) main::a#0
Successful SSA optimization Pass2IdenticalPhiElimination
Simple Condition (bool~) bitmap_line::$4 [57] if((word) bitmap_line::dx#0==(byte) 0) goto bitmap_line::@24
Simple Condition (bool~) bitmap_line::$5 [148] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4
Successful SSA optimization Pass2ConditionalJumpSimplification
Negating conditional jump and destination [57] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1
Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
Constant right-side identified [31] (byte) bitmap_clear::col#0 ← (const byte) bitmap_clear::fgcol#0 * (byte) $10
Constant right-side identified [112] (byte*) COSTAB#0 ← (const byte[$180]) SINTAB#0 + (byte) $40
Constant right-side identified [115] (byte~) main::$2 ← (const byte) VIC_BMM#0 | (const byte) VIC_DEN#0
Constant right-side identified [145] (byte*~) main::$18 ← (const byte*) SCREEN#0 + (word) $3e7
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) bitmap_clear::col#0 = bitmap_clear::fgcol#0*$10
Constant (const void*) memset::str#0 = (void*)bitmap_screen#1
Constant (const void*) memset::str#1 = (void*)bitmap_gfx#1
Constant (const byte*) COSTAB#0 = SINTAB#0+$40
Constant (const byte) main::$2 = VIC_BMM#0|VIC_DEN#0
Constant (const word) main::toD0181_$0#0 = (word)main::toD0181_screen#0
Constant (const word) main::toD0181_$4#0 = (word)main::toD0181_gfx#0
Constant (const byte*) main::$18 = SCREEN#0+$3e7
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) memset::c#0 = bitmap_clear::col#0
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [150] if((const byte) main::i#0!=(byte) 8) goto main::@2
Successful SSA optimization Pass2ConstantIfs
Constant right-side identified [106] (byte~) main::$3 ← (const byte) main::$2 | (const byte) VIC_RSEL#0
Constant right-side identified [109] (word~) main::toD0181_$1#0 ← (const word) main::toD0181_$0#0 & (word) $3fff
Constant right-side identified [112] (byte~) main::toD0181_$5#0 ← > (const word) main::toD0181_$4#0
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) main::$3 = main::$2|VIC_RSEL#0
Constant (const word) main::toD0181_$1#0 = main::toD0181_$0#0&$3fff
Constant (const byte) main::toD0181_$5#0 = >main::toD0181_$4#0
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [106] (byte~) main::$4 ← (const byte) main::$3 | (byte) 3
Constant right-side identified [108] (word~) main::toD0181_$2#0 ← (const word) main::toD0181_$1#0 * (byte) 4
Constant right-side identified [110] (byte~) main::toD0181_$6#0 ← (const byte) main::toD0181_$5#0 / (byte) 4
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) main::$4 = main::$3|3
Constant (const word) main::toD0181_$2#0 = main::toD0181_$1#0*4
Constant (const byte) main::toD0181_$6#0 = main::toD0181_$5#0/4
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [107] (byte~) main::toD0181_$3#0 ← > (const word) main::toD0181_$2#0
Constant right-side identified [108] (byte~) main::toD0181_$7#0 ← (const byte) main::toD0181_$6#0 & (byte) $f
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) main::toD0181_$3#0 = >main::toD0181_$2#0
Constant (const byte) main::toD0181_$7#0 = main::toD0181_$6#0&$f
Successful SSA optimization Pass2ConstantIdentification
Constant right-side identified [107] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$3#0 | (const byte) main::toD0181_$7#0
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_$7#0
Successful SSA optimization Pass2ConstantIdentification
Inlining Noop Cast [2] (byte*~) memset::$2 ← (byte*)(void*) memset::str#3 keeping memset::str#3
Inlining Noop Cast [4] (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3 keeping memset::str#3
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#0
Constant inlined main::toD0181_screen#0 = (const byte*) SCREEN#0
Constant inlined main::toD0181_gfx#0 = (const byte*) BITMAP#0
Constant inlined bitmap_init::gfx#0 = (const byte*) BITMAP#0
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::$18 = (const byte*) SCREEN#0+(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#0
Constant inlined memset::str#0 = (void*)(const byte*) SCREEN#0
Constant inlined bitmap_gfx#1 = (const byte*) BITMAP#0
Constant inlined main::toD0181_$0#0 = (word)(const byte*) SCREEN#0
Constant inlined bitmap_clear::fgcol#0 = (const byte) WHITE#0
Constant inlined main::toD0181_$1#0 = (word)(const byte*) SCREEN#0&(word) $3fff
Constant inlined main::toD0181_$6#0 = >(word)(const byte*) BITMAP#0/(byte) 4
Constant inlined main::toD0181_$7#0 = >(word)(const byte*) BITMAP#0/(byte) 4&(byte) $f
Constant inlined bitmap_screen#1 = (const byte*) SCREEN#0
Constant inlined main::toD0181_$2#0 = (word)(const byte*) SCREEN#0&(word) $3fff*(byte) 4
Constant inlined main::$2 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0
Constant inlined main::toD0181_$3#0 = >(word)(const byte*) SCREEN#0&(word) $3fff*(byte) 4
Constant inlined main::toD0181_$4#0 = (word)(const byte*) BITMAP#0
Constant inlined main::toD0181_$5#0 = >(word)(const byte*) BITMAP#0
Constant inlined bitmap_init::y#0 = (byte) 0
Constant inlined main::$3 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0
Constant inlined memset::c#0 = (const byte) bitmap_clear::col#0
Constant inlined main::$4 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3
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#0+$20 + main::$10)
Consolidated array index constant in assignment *(SINTAB#0+$20 + main::$13)
Successful SSA optimization Pass2ConstantAdditionElimination
Alias (byte) main::a#5 = (byte~) main::$10 (byte~) main::$13 
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)
Added new block during phi lifting main::@17(between main::@1 and main::@2)
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @8
Adding NOP phi() at start of @46
Adding NOP phi() at start of @47
Adding NOP phi() at start of @48
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::@1_1
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:4 
Calls in [main] to bitmap_init:8 bitmap_clear:10 bitmap_line:23 
Calls in [bitmap_line] to abs_u16:33 abs_u16:38 sgn_u16:45 sgn_u16:50 bitmap_plot:63 bitmap_plot:80 bitmap_plot:97 bitmap_plot:118 
Calls in [bitmap_clear] to memset:145 memset:147 

Created 30 initial phi equivalence classes
Coalesced [29] main::i#8 ← main::i#1
Coalesced [30] main::a#8 ← main::a#1
Coalesced [32] abs_u16::w#5 ← abs_u16::w#0
Coalesced [37] abs_u16::w#6 ← abs_u16::w#1
Coalesced [44] sgn_u16::w#3 ← sgn_u16::w#0
Coalesced [49] sgn_u16::w#4 ← sgn_u16::w#1
Coalesced [55] bitmap_line::y#20 ← bitmap_line::y1#0
Coalesced [56] bitmap_line::x#20 ← bitmap_line::x1#0
Coalesced [57] bitmap_line::e#7 ← bitmap_line::e#0
Coalesced [61] bitmap_plot::y#8 ← bitmap_plot::y#1
Coalesced [62] bitmap_plot::x#8 ← bitmap_plot::x#1
Coalesced [69] bitmap_line::x#23 ← bitmap_line::x#1
Coalesced [70] bitmap_line::e#10 ← bitmap_line::e#2
Coalesced [73] bitmap_line::y#23 ← bitmap_line::y#1
Coalesced [74] bitmap_line::x#25 ← bitmap_line::x#12
Coalesced [78] bitmap_plot::y#6 ← bitmap_plot::y#2
Coalesced [79] bitmap_plot::x#6 ← bitmap_plot::x#2
Coalesced [83] bitmap_line::y#21 ← bitmap_line::y#1
Coalesced [84] bitmap_line::x#21 ← bitmap_line::x#12
Coalesced [85] bitmap_line::e#8 ← bitmap_line::e#6
Coalesced (already) [86] bitmap_line::x#22 ← bitmap_line::x#13
Coalesced [87] bitmap_line::e#9 ← bitmap_line::e#1
Coalesced [89] bitmap_line::y#25 ← bitmap_line::y1#0
Coalesced [90] bitmap_line::x#27 ← bitmap_line::x1#0
Coalesced [91] bitmap_line::e1#8 ← bitmap_line::e1#0
Coalesced [95] bitmap_plot::y#5 ← bitmap_plot::y#3
Coalesced [96] bitmap_plot::x#5 ← bitmap_plot::x#3
Coalesced [103] bitmap_line::y#26 ← bitmap_line::y#2
Coalesced [104] bitmap_line::e1#9 ← bitmap_line::e1#2
Coalesced [107] bitmap_line::y#22 ← bitmap_line::y#13
Coalesced [108] bitmap_line::x#24 ← bitmap_line::x#15
Coalesced (already) [109] bitmap_line::y#24 ← bitmap_line::y#13
Coalesced (already) [110] bitmap_line::x#26 ← bitmap_line::x#15
Coalesced [111] bitmap_line::e1#7 ← bitmap_line::e1#6
Coalesced (already) [112] bitmap_line::y#27 ← bitmap_line::y#15
Coalesced [113] bitmap_line::e1#10 ← bitmap_line::e1#1
Coalesced [116] bitmap_plot::y#7 ← bitmap_plot::y#0
Coalesced [117] bitmap_plot::x#7 ← bitmap_plot::x#0
Coalesced [139] abs_u16::return#9 ← abs_u16::w#2
Coalesced [143] abs_u16::return#8 ← abs_u16::return#2
Coalesced [160] memset::dst#5 ← memset::dst#1
Coalesced [180] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1
Coalesced [185] bitmap_init::y#5 ← bitmap_init::y#1
Coalesced [186] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4
Coalesced (already) [187] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2
Coalesced [188] bitmap_init::bits#5 ← bitmap_init::bits#4
Coalesced [189] bitmap_init::x#5 ← bitmap_init::x#1
Coalesced [190] bitmap_init::bits#6 ← bitmap_init::bits#1
Coalesced down to 19 phi equivalence classes
Culled Empty Block (label) @8
Culled Empty Block (label) @46
Culled Empty Block (label) @48
Culled Empty Block (label) main::toD0181_@return
Culled Empty Block (label) main::@1_1
Culled Empty Block (label) main::@7
Culled Empty Block (label) main::@17
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 @47 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()
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#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(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#0) ← (const byte) main::toD0181_return#0
  to:main::@2
main::@2: scope:[main]  from main::@1 main::@4
  [11] (byte) main::a#5 ← phi( main::@1/(byte) main::a#1 main::@4/(byte) 0 )
  [11] (byte) main::i#5 ← phi( main::@1/(byte) main::i#1 main::@4/(byte) 0 )
  [12] (word~) main::$7 ← (word)*((const byte*) COSTAB#0 + (byte) main::a#5)
  [13] (word) bitmap_line::x1#0 ← (word~) main::$7 + (byte) $78
  [14] (word) bitmap_line::y1#0 ← (word)*((const byte[$180]) SINTAB#0 + (byte) main::a#5)
  [15] (word~) main::$11 ← (word)*((const byte*) COSTAB#0+(byte) $20 + (byte) main::a#5)
  [16] (word) bitmap_line::x2#0 ← (word~) main::$11 + (byte) $78
  [17] (word) bitmap_line::y2#0 ← (word)*((const byte[$180]) SINTAB#0+(byte) $20 + (byte) main::a#5)
  [18] call bitmap_line 
  to:main::@7
main::@7: scope:[main]  from main::@2
  [19] (byte) main::a#1 ← (byte) main::a#5 + (byte) $20
  [20] (byte) main::i#1 ← ++ (byte) main::i#5
  to:main::@1
main::@1: scope:[main]  from main::@7
  [21] if((byte) main::i#1!=(byte) 8) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@1 main::@3
  [22] *((const byte*) SCREEN#0+(word) $3e7) ← ++ *((const byte*) SCREEN#0+(word) $3e7)
  to:main::@3
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
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[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (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[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2)
  to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot]  from bitmap_plot
  [80] return 
  to:@return
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
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
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
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#0 bitmap_clear::@1/(void*)(const byte*) BITMAP#0 )
  [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
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[$100]) bitmap_plot_bit#0 + (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#0 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[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
  [123] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
  [124] *((const byte[$100]) bitmap_plot_yhi#0 + (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
(byte*) BITMAP
(byte) BLACK
(byte*) COSTAB
(byte*) D011
(byte*) D018
(byte*) SCREEN
(byte[$180]) SINTAB
(byte) VIC_BMM
(byte) VIC_DEN
(byte) VIC_RSEL
(byte) WHITE
(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[$100]) bitmap_plot_bit
(byte[$100]) bitmap_plot_yhi
(byte[$100]) bitmap_plot_ylo
(byte*) bitmap_screen
(void()) main()
(word~) main::$11 22.0
(word~) main::$7 22.0
(byte) main::a
(byte) main::a#1 7.333333333333333
(byte) main::a#5 2.75
(byte) main::i
(byte) main::i#1 16.5
(byte) main::i#5 2.4444444444444446
(word~) main::toD0181_$0
(number~) main::toD0181_$1
(number~) main::toD0181_$2
(number~) main::toD0181_$3
(word~) main::toD0181_$4
(byte~) main::toD0181_$5
(number~) main::toD0181_$6
(number~) main::toD0181_$7
(number~) main::toD0181_$8
(byte*) main::toD0181_gfx
(byte) main::toD0181_return
(byte*) main::toD0181_screen
(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#5 main::i#1 ]
[ main::a#5 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::$7 to zero page equivalence class [ main::$7 ]
Added variable main::$11 to zero page equivalence class [ main::$11 ]
Added variable bitmap_line::x2#0 to zero page equivalence class [ bitmap_line::x2#0 ]
Added variable bitmap_line::y2#0 to zero page equivalence class [ bitmap_line::y2#0 ]
Added variable abs_u16::return#0 to zero page equivalence class [ abs_u16::return#0 ]
Added variable bitmap_line::dx#0 to zero page equivalence class [ bitmap_line::dx#0 ]
Added variable abs_u16::return#1 to zero page equivalence class [ abs_u16::return#1 ]
Added variable bitmap_line::dy#0 to zero page equivalence class [ bitmap_line::dy#0 ]
Added variable sgn_u16::return#0 to zero page equivalence class [ sgn_u16::return#0 ]
Added variable bitmap_line::sx#0 to zero page equivalence class [ bitmap_line::sx#0 ]
Added variable sgn_u16::return#1 to zero page equivalence class [ sgn_u16::return#1 ]
Added variable bitmap_line::sy#0 to zero page equivalence class [ bitmap_line::sy#0 ]
Added variable bitmap_plot::plotter#0 to zero page equivalence class [ bitmap_plot::plotter#0 ]
Added variable bitmap_plot::$1 to zero page equivalence class [ bitmap_plot::$1 ]
Added variable bitmap_plot::plotter#1 to zero page equivalence class [ bitmap_plot::plotter#1 ]
Added variable bitmap_plot::$2 to zero page equivalence class [ bitmap_plot::$2 ]
Added variable sgn_u16::$0 to zero page equivalence class [ sgn_u16::$0 ]
Added variable sgn_u16::$1 to zero page equivalence class [ sgn_u16::$1 ]
Added variable abs_u16::$0 to zero page equivalence class [ abs_u16::$0 ]
Added variable abs_u16::$1 to zero page equivalence class [ abs_u16::$1 ]
Added variable memset::end#0 to zero page equivalence class [ memset::end#0 ]
Added variable bitmap_init::$7 to zero page equivalence class [ bitmap_init::$7 ]
Added variable bitmap_init::$4 to zero page equivalence class [ bitmap_init::$4 ]
Added variable bitmap_init::$5 to zero page equivalence class [ bitmap_init::$5 ]
Added variable bitmap_init::$6 to zero page equivalence class [ bitmap_init::$6 ]
Complete equivalence classes
[ main::i#5 main::i#1 ]
[ main::a#5 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::$7 ]
[ main::$11 ]
[ 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 ZP_BYTE:2 [ main::i#5 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::a#5 main::a#1 ]
Allocated zp ZP_WORD:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
Allocated zp ZP_WORD: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 ZP_WORD: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 ZP_WORD:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
Allocated zp ZP_BYTE:12 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ]
Allocated zp ZP_WORD:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ]
Allocated zp ZP_WORD:15 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ]
Allocated zp ZP_WORD:17 [ sgn_u16::return#4 ]
Allocated zp ZP_WORD:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ]
Allocated zp ZP_WORD:21 [ memset::num#2 ]
Allocated zp ZP_WORD:23 [ memset::str#3 ]
Allocated zp ZP_BYTE:25 [ memset::c#4 ]
Allocated zp ZP_WORD:26 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
Allocated zp ZP_BYTE:28 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
Allocated zp ZP_BYTE:29 [ bitmap_init::x#2 bitmap_init::x#1 ]
Allocated zp ZP_BYTE:30 [ bitmap_init::y#2 bitmap_init::y#1 ]
Allocated zp ZP_WORD:31 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
Allocated zp ZP_WORD:33 [ main::$7 ]
Allocated zp ZP_WORD:35 [ main::$11 ]
Allocated zp ZP_WORD:37 [ bitmap_line::x2#0 ]
Allocated zp ZP_WORD:39 [ bitmap_line::y2#0 ]
Allocated zp ZP_WORD:41 [ abs_u16::return#0 ]
Allocated zp ZP_WORD:43 [ bitmap_line::dx#0 ]
Allocated zp ZP_WORD:45 [ abs_u16::return#1 ]
Allocated zp ZP_WORD:47 [ bitmap_line::dy#0 ]
Allocated zp ZP_WORD:49 [ sgn_u16::return#0 ]
Allocated zp ZP_WORD:51 [ bitmap_line::sx#0 ]
Allocated zp ZP_WORD:53 [ sgn_u16::return#1 ]
Allocated zp ZP_WORD:55 [ bitmap_line::sy#0 ]
Allocated zp ZP_WORD:57 [ bitmap_plot::plotter#0 ]
Allocated zp ZP_WORD:59 [ bitmap_plot::$1 ]
Allocated zp ZP_WORD:61 [ bitmap_plot::plotter#1 ]
Allocated zp ZP_BYTE:63 [ bitmap_plot::$2 ]
Allocated zp ZP_BYTE:64 [ sgn_u16::$0 ]
Allocated zp ZP_BYTE:65 [ sgn_u16::$1 ]
Allocated zp ZP_BYTE:66 [ abs_u16::$0 ]
Allocated zp ZP_BYTE:67 [ abs_u16::$1 ]
Allocated zp ZP_WORD:68 [ memset::end#0 ]
Allocated zp ZP_BYTE:70 [ bitmap_init::$7 ]
Allocated zp ZP_BYTE:71 [ bitmap_init::$4 ]
Allocated zp ZP_BYTE:72 [ bitmap_init::$5 ]
Allocated zp ZP_BYTE:73 [ bitmap_init::$6 ]

INITIAL ASM
Target platform is c64basic
  // 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 _7 = $21
    .label _11 = $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#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(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#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
    // [11] phi from main::@4 to main::@2 [phi:main::@4->main::@2]
  b2_from_b4:
    // [11] phi (byte) main::a#5 = (byte) 0 [phi:main::@4->main::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z a
    // [11] phi (byte) main::i#5 = (byte) 0 [phi:main::@4->main::@2#1] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp b2
    // [11] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  b2_from_b1:
    // [11] phi (byte) main::a#5 = (byte) main::a#1 [phi:main::@1->main::@2#0] -- register_copy 
    // [11] phi (byte) main::i#5 = (byte) main::i#1 [phi:main::@1->main::@2#1] -- register_copy 
    jmp b2
    // main::@2
  b2:
    // [12] (word~) main::$7 ← (word)*((const byte*) COSTAB#0 + (byte) main::a#5) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy.z a
    lda COSTAB,y
    sta.z _7
    lda #0
    sta.z _7+1
    // [13] (word) bitmap_line::x1#0 ← (word~) main::$7 + (byte) $78 -- vwuz1=vwuz2_plus_vbuc1 
    lda #$78
    clc
    adc.z _7
    sta.z bitmap_line.x1
    lda #0
    adc.z _7+1
    sta.z bitmap_line.x1+1
    // [14] (word) bitmap_line::y1#0 ← (word)*((const byte[$180]) SINTAB#0 + (byte) main::a#5) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy.z a
    lda SINTAB,y
    sta.z bitmap_line.y1
    lda #0
    sta.z bitmap_line.y1+1
    // [15] (word~) main::$11 ← (word)*((const byte*) COSTAB#0+(byte) $20 + (byte) main::a#5) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy.z a
    lda COSTAB+$20,y
    sta.z _11
    lda #0
    sta.z _11+1
    // [16] (word) bitmap_line::x2#0 ← (word~) main::$11 + (byte) $78 -- vwuz1=vwuz2_plus_vbuc1 
    lda #$78
    clc
    adc.z _11
    sta.z bitmap_line.x2
    lda #0
    adc.z _11+1
    sta.z bitmap_line.x2+1
    // [17] (word) bitmap_line::y2#0 ← (word)*((const byte[$180]) SINTAB#0+(byte) $20 + (byte) main::a#5) -- 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
    // [18] call bitmap_line 
    jsr bitmap_line
    jmp b7
    // main::@7
  b7:
    // [19] (byte) main::a#1 ← (byte) main::a#5 + (byte) $20 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z a
    axs #-[$20]
    stx.z a
    // [20] (byte) main::i#1 ← ++ (byte) main::i#5 -- vbuz1=_inc_vbuz1 
    inc.z i
    jmp b1
    // main::@1
  b1:
    // [21] if((byte) main::i#1!=(byte) 8) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z i
    bne b2_from_b1
    jmp b3
    // main::@3
  b3:
    // [22] *((const byte*) SCREEN#0+(word) $3e7) ← ++ *((const byte*) SCREEN#0+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc SCREEN+$3e7
    jmp b3
}
  // bitmap_line
// Draw a line on the bitmap using bresenhams algorithm
// bitmap_line(word zeropage(8) x1, word zeropage(6) y1, word zeropage($25) x2, word zeropage($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_4
    sta.z abs_u16.return
    lda.z abs_u16.return_4+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_4
    sta.z abs_u16.return_1
    lda.z abs_u16.return_4+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_4
    sta.z sgn_u16.return
    lda.z sgn_u16.return_4+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_4
    sta.z sgn_u16.return_1
    lda.z sgn_u16.return_4+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 zeropage($d) x, byte zeropage($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[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (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[$100]) bitmap_plot_bit#0 + (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 zeropage($f) w)
sgn_u16: {
    .label _0 = $40
    .label _1 = $41
    .label w = $f
    .label return = $31
    .label return_1 = $35
    .label return_4 = $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_4
    lda #>1
    sta.z return_4+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_4
    lda #>-1
    sta.z return_4+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 zeropage($13) w)
abs_u16: {
    .label _0 = $42
    .label _1 = $43
    .label w = $13
    .label return = $29
    .label return_1 = $2d
    .label return_2 = $13
    .label return_4 = $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#0 [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#0 [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* zeropage($17) str, byte zeropage($19) c, word zeropage($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[$100]) bitmap_plot_bit#0 + (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#0 [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[$100]) bitmap_plot_ylo#0 + (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[$100]) bitmap_plot_yhi#0 + (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 ZP_BYTE:71 [ bitmap_init::$4 ] has ALU potential.
Statement [8] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [10] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [12] (word~) main::$7 ← (word)*((const byte*) COSTAB#0 + (byte) main::a#5) [ main::i#5 main::a#5 main::$7 ] ( main:2 [ main::i#5 main::a#5 main::$7 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#5 main::i#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::a#5 main::a#1 ]
Statement [13] (word) bitmap_line::x1#0 ← (word~) main::$7 + (byte) $78 [ main::i#5 main::a#5 bitmap_line::x1#0 ] ( main:2 [ main::i#5 main::a#5 bitmap_line::x1#0 ] ) always clobbers reg byte a 
Statement [14] (word) bitmap_line::y1#0 ← (word)*((const byte[$180]) SINTAB#0 + (byte) main::a#5) [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 ] ( main:2 [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 ] ) always clobbers reg byte a 
Statement [15] (word~) main::$11 ← (word)*((const byte*) COSTAB#0+(byte) $20 + (byte) main::a#5) [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 main::$11 ] ( main:2 [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 main::$11 ] ) always clobbers reg byte a 
Statement [16] (word) bitmap_line::x2#0 ← (word~) main::$11 + (byte) $78 [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( main:2 [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ) always clobbers reg byte a 
Statement [17] (word) bitmap_line::y2#0 ← (word)*((const byte[$180]) SINTAB#0+(byte) $20 + (byte) main::a#5) [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( main:2 [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ) always clobbers reg byte a 
Statement [19] (byte) main::a#1 ← (byte) main::a#5 + (byte) $20 [ main::i#5 main::a#1 ] ( main:2 [ main::i#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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 ZP_BYTE: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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a 
Statement [75] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::i#5 main::a#5 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:18::bitmap_plot:57 [ main::i#5 main::a#5 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::i#5 main::a#5 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:18::bitmap_plot:73 [ main::i#5 main::a#5 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:18::bitmap_plot:46 [ main::i#5 main::a#5 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:18::bitmap_plot:57 [ main::i#5 main::a#5 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::i#5 main::a#5 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:18::bitmap_plot:73 [ main::i#5 main::a#5 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:18::bitmap_plot:46 [ main::i#5 main::a#5 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:18::bitmap_plot:57 [ main::i#5 main::a#5 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::i#5 main::a#5 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:18::bitmap_plot:73 [ main::i#5 main::a#5 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:18::bitmap_plot:46 [ main::i#5 main::a#5 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:18::bitmap_plot:57 [ main::i#5 main::a#5 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::i#5 main::a#5 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:18::bitmap_plot:73 [ main::i#5 main::a#5 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[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::i#5 main::a#5 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:18::bitmap_plot:57 [ main::i#5 main::a#5 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::i#5 main::a#5 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:18::bitmap_plot:73 [ main::i#5 main::a#5 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#5 main::i#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ main::a#5 main::a#1 ]
Statement [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2 [ sgn_u16::$0 ] ( main:2::bitmap_line:18::sgn_u16:34 [ main::i#5 main::a#5 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:18::sgn_u16:38 [ main::i#5 main::a#5 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:18::abs_u16:24 [ main::i#5 main::a#5 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:18::abs_u16:28 [ main::i#5 main::a#5 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:18::abs_u16:24 [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] main:2::bitmap_line:18::abs_u16:28 [ main::i#5 main::a#5 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 ZP_BYTE: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 ZP_BYTE: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 ZP_BYTE:30 [ bitmap_init::y#2 bitmap_init::y#1 ]
Statement [8] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [10] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [12] (word~) main::$7 ← (word)*((const byte*) COSTAB#0 + (byte) main::a#5) [ main::i#5 main::a#5 main::$7 ] ( main:2 [ main::i#5 main::a#5 main::$7 ] ) always clobbers reg byte a 
Statement [13] (word) bitmap_line::x1#0 ← (word~) main::$7 + (byte) $78 [ main::i#5 main::a#5 bitmap_line::x1#0 ] ( main:2 [ main::i#5 main::a#5 bitmap_line::x1#0 ] ) always clobbers reg byte a 
Statement [14] (word) bitmap_line::y1#0 ← (word)*((const byte[$180]) SINTAB#0 + (byte) main::a#5) [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 ] ( main:2 [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 ] ) always clobbers reg byte a 
Statement [15] (word~) main::$11 ← (word)*((const byte*) COSTAB#0+(byte) $20 + (byte) main::a#5) [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 main::$11 ] ( main:2 [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 main::$11 ] ) always clobbers reg byte a 
Statement [16] (word) bitmap_line::x2#0 ← (word~) main::$11 + (byte) $78 [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( main:2 [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ) always clobbers reg byte a 
Statement [17] (word) bitmap_line::y2#0 ← (word)*((const byte[$180]) SINTAB#0+(byte) $20 + (byte) main::a#5) [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( main:2 [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ) always clobbers reg byte a 
Statement [19] (byte) main::a#1 ← (byte) main::a#5 + (byte) $20 [ main::i#5 main::a#1 ] ( main:2 [ main::i#5 main::a#1 ] ) always clobbers reg byte a reg byte x 
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ main::i#5 main::i#1 ]
Statement [21] if((byte) main::i#1!=(byte) 8) goto main::@2 [ main::i#1 main::a#1 ] ( main:2 [ main::i#1 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a 
Statement [75] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::i#5 main::a#5 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:18::bitmap_plot:57 [ main::i#5 main::a#5 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::i#5 main::a#5 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:18::bitmap_plot:73 [ main::i#5 main::a#5 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:18::bitmap_plot:46 [ main::i#5 main::a#5 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:18::bitmap_plot:57 [ main::i#5 main::a#5 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::i#5 main::a#5 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:18::bitmap_plot:73 [ main::i#5 main::a#5 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:18::bitmap_plot:46 [ main::i#5 main::a#5 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:18::bitmap_plot:57 [ main::i#5 main::a#5 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::i#5 main::a#5 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:18::bitmap_plot:73 [ main::i#5 main::a#5 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:18::bitmap_plot:46 [ main::i#5 main::a#5 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:18::bitmap_plot:57 [ main::i#5 main::a#5 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::i#5 main::a#5 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:18::bitmap_plot:73 [ main::i#5 main::a#5 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[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::i#5 main::a#5 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:18::bitmap_plot:57 [ main::i#5 main::a#5 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::i#5 main::a#5 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:18::bitmap_plot:73 [ main::i#5 main::a#5 ] ) 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:18::sgn_u16:34 [ main::i#5 main::a#5 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:18::sgn_u16:38 [ main::i#5 main::a#5 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:18::abs_u16:24 [ main::i#5 main::a#5 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:18::abs_u16:28 [ main::i#5 main::a#5 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:18::abs_u16:24 [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] main:2::bitmap_line:18::abs_u16:28 [ main::i#5 main::a#5 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#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [10] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [12] (word~) main::$7 ← (word)*((const byte*) COSTAB#0 + (byte) main::a#5) [ main::i#5 main::a#5 main::$7 ] ( main:2 [ main::i#5 main::a#5 main::$7 ] ) always clobbers reg byte a 
Statement [13] (word) bitmap_line::x1#0 ← (word~) main::$7 + (byte) $78 [ main::i#5 main::a#5 bitmap_line::x1#0 ] ( main:2 [ main::i#5 main::a#5 bitmap_line::x1#0 ] ) always clobbers reg byte a 
Statement [14] (word) bitmap_line::y1#0 ← (word)*((const byte[$180]) SINTAB#0 + (byte) main::a#5) [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 ] ( main:2 [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 ] ) always clobbers reg byte a 
Statement [15] (word~) main::$11 ← (word)*((const byte*) COSTAB#0+(byte) $20 + (byte) main::a#5) [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 main::$11 ] ( main:2 [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 main::$11 ] ) always clobbers reg byte a 
Statement [16] (word) bitmap_line::x2#0 ← (word~) main::$11 + (byte) $78 [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ( main:2 [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 ] ) always clobbers reg byte a 
Statement [17] (word) bitmap_line::y2#0 ← (word)*((const byte[$180]) SINTAB#0+(byte) $20 + (byte) main::a#5) [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ( main:2 [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 ] ) always clobbers reg byte a 
Statement [19] (byte) main::a#1 ← (byte) main::a#5 + (byte) $20 [ main::i#5 main::a#1 ] ( main:2 [ main::i#5 main::a#1 ] ) always clobbers reg byte a reg byte x 
Statement [21] if((byte) main::i#1!=(byte) 8) goto main::@2 [ main::i#1 main::a#1 ] ( main:2 [ main::i#1 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 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:18 [ main::i#5 main::a#5 bitmap_plot::y#0 bitmap_plot::x#0 ] ) always clobbers reg byte a 
Statement [75] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::i#5 main::a#5 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:18::bitmap_plot:57 [ main::i#5 main::a#5 bitmap_plot::x#4 bitmap_plot::plotter#0 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::i#5 main::a#5 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:18::bitmap_plot:73 [ main::i#5 main::a#5 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:18::bitmap_plot:46 [ main::i#5 main::a#5 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:18::bitmap_plot:57 [ main::i#5 main::a#5 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::i#5 main::a#5 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:18::bitmap_plot:73 [ main::i#5 main::a#5 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:18::bitmap_plot:46 [ main::i#5 main::a#5 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:18::bitmap_plot:57 [ main::i#5 main::a#5 bitmap_plot::x#4 bitmap_plot::plotter#1 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::i#5 main::a#5 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:18::bitmap_plot:73 [ main::i#5 main::a#5 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:18::bitmap_plot:46 [ main::i#5 main::a#5 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:18::bitmap_plot:57 [ main::i#5 main::a#5 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::i#5 main::a#5 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:18::bitmap_plot:73 [ main::i#5 main::a#5 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[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_line:18::bitmap_plot:46 [ main::i#5 main::a#5 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:18::bitmap_plot:57 [ main::i#5 main::a#5 ] main:2::bitmap_line:18::bitmap_plot:63 [ main::i#5 main::a#5 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:18::bitmap_plot:73 [ main::i#5 main::a#5 ] ) 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:18::sgn_u16:34 [ main::i#5 main::a#5 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:18::sgn_u16:38 [ main::i#5 main::a#5 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:18::abs_u16:24 [ main::i#5 main::a#5 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:18::abs_u16:28 [ main::i#5 main::a#5 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:18::abs_u16:24 [ main::i#5 main::a#5 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::x2#0 bitmap_line::y2#0 abs_u16::return#2 ] main:2::bitmap_line:18::abs_u16:28 [ main::i#5 main::a#5 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 ZP_BYTE:2 [ main::i#5 main::i#1 ] : zp ZP_BYTE:2 , 
Potential registers zp ZP_BYTE:3 [ main::a#5 main::a#1 ] : zp ZP_BYTE:3 , reg byte x , 
Potential registers zp ZP_WORD:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] : zp ZP_WORD:4 , 
Potential registers zp ZP_WORD: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 ZP_WORD:6 , 
Potential registers zp ZP_WORD: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 ZP_WORD:8 , 
Potential registers zp ZP_WORD:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] : zp ZP_WORD:10 , 
Potential registers zp ZP_BYTE:12 [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] : zp ZP_BYTE:12 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:13 [ bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] : zp ZP_WORD:13 , 
Potential registers zp ZP_WORD:15 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] : zp ZP_WORD:15 , 
Potential registers zp ZP_WORD:17 [ sgn_u16::return#4 ] : zp ZP_WORD:17 , 
Potential registers zp ZP_WORD:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] : zp ZP_WORD:19 , 
Potential registers zp ZP_WORD:21 [ memset::num#2 ] : zp ZP_WORD:21 , 
Potential registers zp ZP_WORD:23 [ memset::str#3 ] : zp ZP_WORD:23 , 
Potential registers zp ZP_BYTE:25 [ memset::c#4 ] : zp ZP_BYTE:25 , reg byte x , 
Potential registers zp ZP_WORD:26 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp ZP_WORD:26 , 
Potential registers zp ZP_BYTE:28 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:29 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:30 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp ZP_BYTE:30 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:31 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp ZP_WORD:31 , 
Potential registers zp ZP_WORD:33 [ main::$7 ] : zp ZP_WORD:33 , 
Potential registers zp ZP_WORD:35 [ main::$11 ] : zp ZP_WORD:35 , 
Potential registers zp ZP_WORD:37 [ bitmap_line::x2#0 ] : zp ZP_WORD:37 , 
Potential registers zp ZP_WORD:39 [ bitmap_line::y2#0 ] : zp ZP_WORD:39 , 
Potential registers zp ZP_WORD:41 [ abs_u16::return#0 ] : zp ZP_WORD:41 , 
Potential registers zp ZP_WORD:43 [ bitmap_line::dx#0 ] : zp ZP_WORD:43 , 
Potential registers zp ZP_WORD:45 [ abs_u16::return#1 ] : zp ZP_WORD:45 , 
Potential registers zp ZP_WORD:47 [ bitmap_line::dy#0 ] : zp ZP_WORD:47 , 
Potential registers zp ZP_WORD:49 [ sgn_u16::return#0 ] : zp ZP_WORD:49 , 
Potential registers zp ZP_WORD:51 [ bitmap_line::sx#0 ] : zp ZP_WORD:51 , 
Potential registers zp ZP_WORD:53 [ sgn_u16::return#1 ] : zp ZP_WORD:53 , 
Potential registers zp ZP_WORD:55 [ bitmap_line::sy#0 ] : zp ZP_WORD:55 , 
Potential registers zp ZP_WORD:57 [ bitmap_plot::plotter#0 ] : zp ZP_WORD:57 , 
Potential registers zp ZP_WORD:59 [ bitmap_plot::$1 ] : zp ZP_WORD:59 , 
Potential registers zp ZP_WORD:61 [ bitmap_plot::plotter#1 ] : zp ZP_WORD:61 , 
Potential registers zp ZP_BYTE:63 [ bitmap_plot::$2 ] : zp ZP_BYTE:63 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:64 [ sgn_u16::$0 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:65 [ sgn_u16::$1 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:66 [ abs_u16::$0 ] : zp ZP_BYTE:66 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:67 [ abs_u16::$1 ] : zp ZP_BYTE:67 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:68 [ memset::end#0 ] : zp ZP_WORD:68 , 
Potential registers zp ZP_BYTE:70 [ bitmap_init::$7 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:71 [ bitmap_init::$4 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , reg byte alu , 
Potential registers zp ZP_BYTE:72 [ bitmap_init::$5 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:73 [ bitmap_init::$6 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , 

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

Uplifting [bitmap_line] best 33711 combination zp ZP_WORD: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 ZP_WORD: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 ZP_WORD:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp ZP_WORD:10 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp ZP_WORD:47 [ bitmap_line::dy#0 ] zp ZP_WORD:55 [ bitmap_line::sy#0 ] zp ZP_WORD:43 [ bitmap_line::dx#0 ] zp ZP_WORD:51 [ bitmap_line::sx#0 ] zp ZP_WORD:39 [ bitmap_line::y2#0 ] zp ZP_WORD:37 [ bitmap_line::x2#0 ] 
Uplifting [bitmap_plot] best 33502 combination zp ZP_WORD: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 ZP_WORD:59 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:61 [ bitmap_plot::plotter#1 ] zp ZP_WORD:57 [ bitmap_plot::plotter#0 ] 
Uplifting [bitmap_init] best 32992 combination zp ZP_WORD: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 ZP_BYTE:72 [ bitmap_init::$5 ] zp ZP_BYTE:73 [ bitmap_init::$6 ] zp ZP_BYTE:70 [ bitmap_init::$7 ] 
Limited combination testing to 100 combinations of 15360 possible.
Uplifting [main] best 32992 combination zp ZP_WORD:33 [ main::$7 ] zp ZP_WORD:35 [ main::$11 ] zp ZP_BYTE:2 [ main::i#5 main::i#1 ] zp ZP_BYTE:3 [ main::a#5 main::a#1 ] 
Uplifting [memset] best 32976 combination zp ZP_WORD:26 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp ZP_WORD:68 [ memset::end#0 ] zp ZP_WORD:21 [ memset::num#2 ] reg byte x [ memset::c#4 ] zp ZP_WORD:23 [ memset::str#3 ] 
Uplifting [abs_u16] best 32964 combination zp ZP_WORD:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] zp ZP_WORD:41 [ abs_u16::return#0 ] zp ZP_WORD:45 [ abs_u16::return#1 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] 
Uplifting [sgn_u16] best 32952 combination zp ZP_WORD:15 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] zp ZP_WORD:49 [ sgn_u16::return#0 ] zp ZP_WORD:53 [ sgn_u16::return#1 ] reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp ZP_WORD:17 [ sgn_u16::return#4 ] 
Uplifting [bitmap_clear] best 32952 combination 
Uplifting [RADIX] best 32952 combination 
Uplifting [] best 32952 combination 
Attempting to uplift remaining variables inzp ZP_BYTE:72 [ bitmap_init::$5 ]
Uplifting [bitmap_init] best 32892 combination reg byte a [ bitmap_init::$5 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:73 [ bitmap_init::$6 ]
Uplifting [bitmap_init] best 32832 combination reg byte a [ bitmap_init::$6 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::i#5 main::i#1 ]
Uplifting [main] best 32832 combination zp ZP_BYTE:2 [ main::i#5 main::i#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ main::a#5 main::a#1 ]
Uplifting [main] best 32832 combination zp ZP_BYTE:3 [ main::a#5 main::a#1 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:70 [ bitmap_init::$7 ]
Uplifting [bitmap_init] best 32832 combination zp ZP_BYTE:70 [ bitmap_init::$7 ] 
Coalescing zero page register [ zp ZP_WORD: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 ZP_WORD: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 ZP_WORD: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 ZP_WORD:33 [ main::$7 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:17 [ sgn_u16::return#4 ] ] with [ zp ZP_WORD:49 [ sgn_u16::return#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:17 [ sgn_u16::return#4 sgn_u16::return#0 ] ] with [ zp ZP_WORD:53 [ sgn_u16::return#1 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:19 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] ] with [ zp ZP_WORD:41 [ abs_u16::return#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD: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 ZP_WORD:45 [ abs_u16::return#1 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:21 [ memset::num#2 ] ] with [ zp ZP_WORD:68 [ memset::end#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:23 [ memset::str#3 ] ] with [ zp ZP_WORD:26 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:35 [ main::$11 ] ] with [ zp ZP_WORD:37 [ bitmap_line::x2#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:57 [ bitmap_plot::plotter#0 ] ] with [ zp ZP_WORD:61 [ bitmap_plot::plotter#1 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:17 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 ] ] with [ zp ZP_WORD:55 [ bitmap_line::sy#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD: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 ZP_WORD:47 [ bitmap_line::dy#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:15 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] ] with [ zp ZP_WORD: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 ZP_WORD:21 [ memset::num#2 memset::end#0 ] ] with [ zp ZP_WORD: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 ZP_WORD:23 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] with [ zp ZP_WORD: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::$7 ] ]
Coalescing zero page register [ zp ZP_WORD:31 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] with [ zp ZP_WORD: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 ZP_BYTE:70 [ bitmap_init::$7 ] ] with [ zp ZP_BYTE:2 [ main::i#5 main::i#1 ] ]
Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ main::a#5 main::a#1 ]
Allocated (was zp ZP_WORD:15) zp ZP_WORD: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 ZP_WORD:17) zp ZP_WORD:5 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
Allocated (was zp ZP_WORD:19) zp ZP_WORD: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 ZP_WORD:21) zp ZP_WORD: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 ZP_WORD:23) zp ZP_WORD: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::$7 ]
Allocated (was zp ZP_WORD:31) zp ZP_WORD: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 ZP_WORD:35) zp ZP_WORD:15 [ main::$11 bitmap_line::x2#0 ]
Allocated (was zp ZP_WORD:39) zp ZP_WORD:17 [ bitmap_line::y2#0 ]
Allocated (was zp ZP_WORD:43) zp ZP_WORD:19 [ bitmap_line::dx#0 ]
Allocated (was zp ZP_WORD:51) zp ZP_WORD:21 [ bitmap_line::sx#0 ]
Allocated (was zp ZP_WORD:57) zp ZP_WORD:23 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ]
Allocated (was zp ZP_WORD:59) zp ZP_WORD:25 [ bitmap_plot::$1 ]
Allocated (was zp ZP_BYTE:70) zp ZP_BYTE:27 [ bitmap_init::$7 main::i#5 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 _7 = $b
    .label _11 = $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#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(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#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
    // [11] phi from main::@4 to main::@2 [phi:main::@4->main::@2]
  b2_from_b4:
    // [11] phi (byte) main::a#5 = (byte) 0 [phi:main::@4->main::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z a
    // [11] phi (byte) main::i#5 = (byte) 0 [phi:main::@4->main::@2#1] -- vbuz1=vbuc1 
    lda #0
    sta.z i
    jmp b2
    // [11] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
  b2_from_b1:
    // [11] phi (byte) main::a#5 = (byte) main::a#1 [phi:main::@1->main::@2#0] -- register_copy 
    // [11] phi (byte) main::i#5 = (byte) main::i#1 [phi:main::@1->main::@2#1] -- register_copy 
    jmp b2
    // main::@2
  b2:
    // [12] (word~) main::$7 ← (word)*((const byte*) COSTAB#0 + (byte) main::a#5) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy.z a
    lda COSTAB,y
    sta.z _7
    lda #0
    sta.z _7+1
    // [13] (word) bitmap_line::x1#0 ← (word~) main::$7 + (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
  !:
    // [14] (word) bitmap_line::y1#0 ← (word)*((const byte[$180]) SINTAB#0 + (byte) main::a#5) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy.z a
    lda SINTAB,y
    sta.z bitmap_line.y1
    lda #0
    sta.z bitmap_line.y1+1
    // [15] (word~) main::$11 ← (word)*((const byte*) COSTAB#0+(byte) $20 + (byte) main::a#5) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy.z a
    lda COSTAB+$20,y
    sta.z _11
    lda #0
    sta.z _11+1
    // [16] (word) bitmap_line::x2#0 ← (word~) main::$11 + (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
  !:
    // [17] (word) bitmap_line::y2#0 ← (word)*((const byte[$180]) SINTAB#0+(byte) $20 + (byte) main::a#5) -- 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
    // [18] call bitmap_line 
    jsr bitmap_line
    jmp b7
    // main::@7
  b7:
    // [19] (byte) main::a#1 ← (byte) main::a#5 + (byte) $20 -- vbuz1=vbuz1_plus_vbuc1 
    lax.z a
    axs #-[$20]
    stx.z a
    // [20] (byte) main::i#1 ← ++ (byte) main::i#5 -- vbuz1=_inc_vbuz1 
    inc.z i
    jmp b1
    // main::@1
  b1:
    // [21] if((byte) main::i#1!=(byte) 8) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z i
    bne b2_from_b1
    jmp b3
    // main::@3
  b3:
    // [22] *((const byte*) SCREEN#0+(word) $3e7) ← ++ *((const byte*) SCREEN#0+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc SCREEN+$3e7
    jmp b3
}
  // bitmap_line
// Draw a line on the bitmap using bresenhams algorithm
// bitmap_line(word zeropage($b) x1, word zeropage(9) y1, word zeropage($f) x2, word zeropage($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 zeropage($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[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (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[$100]) bitmap_plot_bit#0 + (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 zeropage(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 zeropage(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#0 [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#0 [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* zeropage($b) str, byte register(X) c, word zeropage(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[$100]) bitmap_plot_bit#0 + (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#0 [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[$100]) bitmap_plot_ylo#0 + (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[$100]) bitmap_plot_yhi#0 + (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 b2
Removing instruction jmp b7
Removing instruction jmp b1
Removing instruction jmp b3
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
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label b2_from_b1 with b2
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 b1_from_bbegin:
Removing instruction b1:
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 b2_from_b1:
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 b2_from_b4:
Removing instruction b7:
Removing instruction b1:
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 b2
Succesful ASM optimization Pass5RelabelLongLabels
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b3
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction bbegin:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction b2:
Removing instruction breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Fixing long branch [117] beq b4 to bne

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

zp ZP_BYTE:2 [ main::a#5 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 ZP_WORD: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 ZP_WORD:5 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
zp ZP_WORD: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 ZP_WORD: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 ZP_WORD: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::$7 ]
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 ZP_WORD: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 ZP_WORD:15 [ main::$11 bitmap_line::x2#0 ]
zp ZP_WORD:17 [ bitmap_line::y2#0 ]
zp ZP_WORD:19 [ bitmap_line::dx#0 ]
zp ZP_WORD:21 [ bitmap_line::sx#0 ]
zp ZP_WORD:23 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ]
zp ZP_WORD: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 ZP_BYTE:27 [ bitmap_init::$7 main::i#5 main::i#1 ]
reg byte a [ bitmap_init::$4 ]
reg byte a [ bitmap_init::$5 ]
reg byte a [ bitmap_init::$6 ]


FINAL ASSEMBLER
Score: 27259

  // 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 _7 = $b
    .label _11 = $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#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(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#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 
    lda #toD0181_return
    sta D018
    // [11] phi from main::@4 to main::@2 [phi:main::@4->main::@2]
    // [11] phi (byte) main::a#5 = (byte) 0 [phi:main::@4->main::@2#0] -- vbuz1=vbuc1 
    lda #0
    sta.z a
    // [11] phi (byte) main::i#5 = (byte) 0 [phi:main::@4->main::@2#1] -- vbuz1=vbuc1 
    sta.z i
    // [11] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
    // [11] phi (byte) main::a#5 = (byte) main::a#1 [phi:main::@1->main::@2#0] -- register_copy 
    // [11] phi (byte) main::i#5 = (byte) main::i#1 [phi:main::@1->main::@2#1] -- register_copy 
    // main::@2
  b2:
    // (word)COSTAB[a]
    // [12] (word~) main::$7 ← (word)*((const byte*) COSTAB#0 + (byte) main::a#5) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    ldy.z a
    lda COSTAB,y
    sta.z _7
    lda #0
    sta.z _7+1
    // bitmap_line( (word)COSTAB[a]+120, (word)SINTAB[a], (word)COSTAB[a+32]+120, (word)SINTAB[a+32])
    // [13] (word) bitmap_line::x1#0 ← (word~) main::$7 + (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
  !:
    // [14] (word) bitmap_line::y1#0 ← (word)*((const byte[$180]) SINTAB#0 + (byte) main::a#5) -- 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]
    // [15] (word~) main::$11 ← (word)*((const byte*) COSTAB#0+(byte) $20 + (byte) main::a#5) -- vwuz1=_word_pbuc1_derefidx_vbuz2 
    lda COSTAB+$20,y
    sta.z _11
    lda #0
    sta.z _11+1
    // bitmap_line( (word)COSTAB[a]+120, (word)SINTAB[a], (word)COSTAB[a+32]+120, (word)SINTAB[a+32])
    // [16] (word) bitmap_line::x2#0 ← (word~) main::$11 + (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
  !:
    // [17] (word) bitmap_line::y2#0 ← (word)*((const byte[$180]) SINTAB#0+(byte) $20 + (byte) main::a#5) -- 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
    // [18] call bitmap_line 
    jsr bitmap_line
    // main::@7
    // a+=32
    // [19] (byte) main::a#1 ← (byte) main::a#5 + (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)
    // [20] (byte) main::i#1 ← ++ (byte) main::i#5 -- vbuz1=_inc_vbuz1 
    inc.z i
    // main::@1
    // [21] if((byte) main::i#1!=(byte) 8) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 
    lda #8
    cmp.z i
    bne b2
    // main::@3
  b3:
    // (*(SCREEN+999))++;
    // [22] *((const byte*) SCREEN#0+(word) $3e7) ← ++ *((const byte*) SCREEN#0+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc SCREEN+$3e7
    jmp b3
}
  // bitmap_line
// Draw a line on the bitmap using bresenhams algorithm
// bitmap_line(word zeropage($b) x1, word zeropage(9) y1, word zeropage($f) x2, word zeropage($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 zeropage($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[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[$100]) bitmap_plot_ylo#0 + (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[$100]) bitmap_plot_bit#0 + (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 zeropage(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
    lda #>-1
    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 zeropage(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#0 [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#0 [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* zeropage($b) str, byte register(X) c, word zeropage(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[$100]) bitmap_plot_bit#0 + (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#0 [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[$100]) bitmap_plot_ylo#0 + (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[$100]) bitmap_plot_yhi#0 + (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) 

