De-inlining cast (word)toD018::screen De-inlining cast (word)toSpritePtr::sprite Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx Culled Empty Block (label) @1 Culled Empty Block (label) @2 Culled Empty Block (label) @3 Culled Empty Block (label) @4 Culled Empty Block (label) bitmap_init::@8 Culled Empty Block (label) @5 Culled Empty Block (label) bitmap_clear::@4 Culled Empty Block (label) @6 Culled Empty Block (label) @7 Culled Empty Block (label) bitmap_line::@12 Culled Empty Block (label) bitmap_line::@6 Culled Empty Block (label) bitmap_line::@14 Culled Empty Block (label) bitmap_line::@13 Culled Empty Block (label) bitmap_line::@16 Culled Empty Block (label) bitmap_line::@18 Culled Empty Block (label) bitmap_line::@2 Culled Empty Block (label) bitmap_line::@19 Culled Empty Block (label) bitmap_line::@22 Culled Empty Block (label) bitmap_line::@9 Culled Empty Block (label) bitmap_line::@24 Culled Empty Block (label) bitmap_line::@23 Culled Empty Block (label) bitmap_line::@26 Culled Empty Block (label) bitmap_line::@28 Culled Empty Block (label) @8 Culled Empty Block (label) bitmap_line_xdyi::@4 Culled Empty Block (label) @9 Culled Empty Block (label) bitmap_line_xdyd::@4 Culled Empty Block (label) @10 Culled Empty Block (label) bitmap_line_ydxi::@4 Culled Empty Block (label) @11 Culled Empty Block (label) bitmap_line_ydxd::@4 Culled Empty Block (label) main::@2 Culled Empty Block (label) @13 Culled Empty Block (label) init_screen::@4 Culled Empty Block (label) init_screen::@3 Culled Empty Block (label) init_screen::@5 Culled Empty Block (label) init_screen::@6 CONTROL FLOW GRAPH SSA @begin: scope:[] from to:@12 (void()) bitmap_init((byte*) bitmap_init::bitmap) bitmap_init: scope:[bitmap_init] from main (byte*) bitmap_init::bitmap#2 ← phi( main/(byte*) bitmap_init::bitmap#0 ) (byte) bitmap_init::bits#0 ← (byte) $80 (byte) bitmap_init::x#0 ← (byte) 0 to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) bitmap_init::bits#0 bitmap_init::@2/(byte) bitmap_init::bits#4 ) (byte*) bitmap_init::bitmap#1 ← phi( bitmap_init/(byte*) bitmap_init::bitmap#2 bitmap_init::@2/(byte*) bitmap_init::bitmap#3 ) (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) bitmap_init::x#0 bitmap_init::@2/(byte) bitmap_init::x#1 ) (number~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (number) $f8 *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_init::x#2) ← (number~) bitmap_init::$0 (byte~) bitmap_init::$1 ← > (byte*) bitmap_init::bitmap#1 *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$1 *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 (byte~) bitmap_init::$2 ← (byte) bitmap_init::bits#3 >> (number) 1 (byte) bitmap_init::bits#1 ← (byte~) bitmap_init::$2 (bool~) bitmap_init::$3 ← (byte) bitmap_init::bits#1 == (number) 0 (bool~) bitmap_init::$4 ← ! (bool~) bitmap_init::$3 if((bool~) bitmap_init::$4) goto bitmap_init::@2 to:bitmap_init::@3 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@3 (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::bitmap#3 ← phi( bitmap_init::@1/(byte*) bitmap_init::bitmap#1 bitmap_init::@3/(byte*) bitmap_init::bitmap#4 ) (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::$5 ← (byte) bitmap_init::x#1 != rangelast(0,$ff) if((bool~) bitmap_init::$5) goto bitmap_init::@1 to:bitmap_init::@4 bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@1 (byte*) bitmap_init::bitmap#4 ← phi( bitmap_init::@1/(byte*) bitmap_init::bitmap#1 ) (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_init::yoffs#0 ← (byte*)(number) 0 (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_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::$6 ← (byte) bitmap_init::y#2 & (number) 7 (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 (number~) bitmap_init::$8 ← (number~) bitmap_init::$6 | (byte~) bitmap_init::$7 *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (number~) bitmap_init::$8 (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 (number~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (number) 7 (bool~) bitmap_init::$11 ← (number~) bitmap_init::$10 == (number) 7 (bool~) bitmap_init::$12 ← ! (bool~) bitmap_init::$11 if((bool~) bitmap_init::$12) goto bitmap_init::@6 to:bitmap_init::@7 bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@5 bitmap_init::@7 (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::$14 ← (byte) bitmap_init::y#1 != rangelast(0,$ff) if((bool~) bitmap_init::$14) goto bitmap_init::@5 to:bitmap_init::@return bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@5 (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::$13 ← (byte*) bitmap_init::yoffs#3 + (number) $28*(number) 8 (byte*) bitmap_init::yoffs#1 ← (byte*~) bitmap_init::$13 to:bitmap_init::@6 bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@6 return to:@return (void()) bitmap_clear() bitmap_clear: scope:[bitmap_clear] from main::@3 (byte*) bitmap_clear::bitmap#0 ← (byte*){ *((const to_nomodify byte*) bitmap_plot_xhi + (number) 0), *((const to_nomodify byte*) bitmap_plot_xlo + (number) 0) } (byte) bitmap_clear::y#0 ← (byte) 0 to:bitmap_clear::@1 bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3 (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte) bitmap_clear::y#0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*) bitmap_clear::bitmap#0 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#4 ) (byte) bitmap_clear::x#0 ← (byte) 0 to:bitmap_clear::@2 bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2 (byte) bitmap_clear::y#3 ← phi( bitmap_clear::@1/(byte) bitmap_clear::y#4 bitmap_clear::@2/(byte) bitmap_clear::y#3 ) (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte) bitmap_clear::x#0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) *((byte*) bitmap_clear::bitmap#2) ← (number) 0 (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 (byte) bitmap_clear::x#1 ← (byte) bitmap_clear::x#2 + rangenext(0,$c7) (bool~) bitmap_clear::$0 ← (byte) bitmap_clear::x#1 != rangelast(0,$c7) if((bool~) bitmap_clear::$0) goto bitmap_clear::@2 to:bitmap_clear::@3 bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2 (byte*) bitmap_clear::bitmap#4 ← phi( bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) (byte) bitmap_clear::y#2 ← phi( bitmap_clear::@2/(byte) bitmap_clear::y#3 ) (byte) bitmap_clear::y#1 ← (byte) bitmap_clear::y#2 + rangenext(0,$27) (bool~) bitmap_clear::$1 ← (byte) bitmap_clear::y#1 != rangelast(0,$27) if((bool~) bitmap_clear::$1) goto bitmap_clear::@1 to:bitmap_clear::@return bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3 return to:@return (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) bitmap_plot: scope:[bitmap_plot] from bitmap_line_xdyd::@1 bitmap_line_xdyi::@1 bitmap_line_ydxd::@1 bitmap_line_ydxi::@1 (byte) bitmap_plot::y#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::y#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::y#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::y#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::y#2 ) (byte) bitmap_plot::x#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::x#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::x#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::x#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::x#2 ) (word) bitmap_plot::plotter_x#0 ← (word){ *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4), *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) } (word) bitmap_plot::plotter_y#0 ← (word){ *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4), *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) } (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 (byte*) bitmap_plot::plotter#0 ← ((byte*)) (word~) bitmap_plot::$0 (byte~) bitmap_plot::$1 ← *((byte*) bitmap_plot::plotter#0) | *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) *((byte*) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 to:bitmap_plot::@return bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot return to:@return (void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) bitmap_line: scope:[bitmap_line] from main::@1 (byte) bitmap_line::y1#13 ← phi( main::@1/(byte) bitmap_line::y1#0 ) (byte) bitmap_line::y0#13 ← phi( main::@1/(byte) bitmap_line::y0#0 ) (byte) bitmap_line::x1#1 ← phi( main::@1/(byte) bitmap_line::x1#0 ) (byte) bitmap_line::x0#1 ← phi( main::@1/(byte) bitmap_line::x0#0 ) (byte) bitmap_line::xd#0 ← (byte) 0 (byte) bitmap_line::yd#0 ← (byte) 0 (bool~) bitmap_line::$0 ← (byte) bitmap_line::x0#1 < (byte) bitmap_line::x1#1 if((bool~) bitmap_line::$0) goto bitmap_line::@1 to:bitmap_line::@3 bitmap_line::@1: scope:[bitmap_line] from bitmap_line (byte) bitmap_line::y1#1 ← phi( bitmap_line/(byte) bitmap_line::y1#13 ) (byte) bitmap_line::y0#1 ← phi( bitmap_line/(byte) bitmap_line::y0#13 ) (byte) bitmap_line::x0#2 ← phi( bitmap_line/(byte) bitmap_line::x0#1 ) (byte) bitmap_line::x1#2 ← phi( bitmap_line/(byte) bitmap_line::x1#1 ) (byte~) bitmap_line::$11 ← (byte) bitmap_line::x1#2 - (byte) bitmap_line::x0#2 (byte) bitmap_line::xd#1 ← (byte~) bitmap_line::$11 (bool~) bitmap_line::$12 ← (byte) bitmap_line::y0#1 < (byte) bitmap_line::y1#1 if((bool~) bitmap_line::$12) goto bitmap_line::@20 to:bitmap_line::@7 bitmap_line::@3: scope:[bitmap_line] from bitmap_line (byte) bitmap_line::y1#2 ← phi( bitmap_line/(byte) bitmap_line::y1#13 ) (byte) bitmap_line::y0#2 ← phi( bitmap_line/(byte) bitmap_line::y0#13 ) (byte) bitmap_line::x1#3 ← phi( bitmap_line/(byte) bitmap_line::x1#1 ) (byte) bitmap_line::x0#3 ← phi( bitmap_line/(byte) bitmap_line::x0#1 ) (byte~) bitmap_line::$1 ← (byte) bitmap_line::x0#3 - (byte) bitmap_line::x1#3 (byte) bitmap_line::xd#2 ← (byte~) bitmap_line::$1 (bool~) bitmap_line::$2 ← (byte) bitmap_line::y0#2 < (byte) bitmap_line::y1#2 if((bool~) bitmap_line::$2) goto bitmap_line::@10 to:bitmap_line::@4 bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@3 (byte) bitmap_line::x0#11 ← phi( bitmap_line::@3/(byte) bitmap_line::x0#3 ) (byte) bitmap_line::x1#11 ← phi( bitmap_line::@3/(byte) bitmap_line::x1#3 ) (byte) bitmap_line::xd#3 ← phi( bitmap_line::@3/(byte) bitmap_line::xd#2 ) (byte) bitmap_line::y0#3 ← phi( bitmap_line::@3/(byte) bitmap_line::y0#2 ) (byte) bitmap_line::y1#3 ← phi( bitmap_line::@3/(byte) bitmap_line::y1#2 ) (byte~) bitmap_line::$7 ← (byte) bitmap_line::y1#3 - (byte) bitmap_line::y0#3 (byte) bitmap_line::yd#1 ← (byte~) bitmap_line::$7 (bool~) bitmap_line::$8 ← (byte) bitmap_line::yd#1 < (byte) bitmap_line::xd#3 if((bool~) bitmap_line::$8) goto bitmap_line::@15 to:bitmap_line::@17 bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@3 (byte) bitmap_line::x0#10 ← phi( bitmap_line::@3/(byte) bitmap_line::x0#3 ) (byte) bitmap_line::x1#10 ← phi( bitmap_line::@3/(byte) bitmap_line::x1#3 ) (byte) bitmap_line::xd#4 ← phi( bitmap_line::@3/(byte) bitmap_line::xd#2 ) (byte) bitmap_line::y1#4 ← phi( bitmap_line::@3/(byte) bitmap_line::y1#2 ) (byte) bitmap_line::y0#4 ← phi( bitmap_line::@3/(byte) bitmap_line::y0#2 ) (byte~) bitmap_line::$3 ← (byte) bitmap_line::y0#4 - (byte) bitmap_line::y1#4 (byte) bitmap_line::yd#2 ← (byte~) bitmap_line::$3 (bool~) bitmap_line::$4 ← (byte) bitmap_line::yd#2 < (byte) bitmap_line::xd#4 if((bool~) bitmap_line::$4) goto bitmap_line::@11 to:bitmap_line::@5 bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@4 (byte) bitmap_line::yd#5 ← phi( bitmap_line::@4/(byte) bitmap_line::yd#2 ) (byte) bitmap_line::xd#5 ← phi( bitmap_line::@4/(byte) bitmap_line::xd#4 ) (byte) bitmap_line::x0#4 ← phi( bitmap_line::@4/(byte) bitmap_line::x0#10 ) (byte) bitmap_line::y1#5 ← phi( bitmap_line::@4/(byte) bitmap_line::y1#4 ) (byte) bitmap_line::x1#4 ← phi( bitmap_line::@4/(byte) bitmap_line::x1#10 ) (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#4 (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#5 (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#4 (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#5 (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#5 call bitmap_line_xdyi to:bitmap_line::@29 bitmap_line::@29: scope:[bitmap_line] from bitmap_line::@11 to:bitmap_line::@return bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@4 (byte) bitmap_line::xd#6 ← phi( bitmap_line::@4/(byte) bitmap_line::xd#4 ) (byte) bitmap_line::yd#6 ← phi( bitmap_line::@4/(byte) bitmap_line::yd#2 ) (byte) bitmap_line::y0#5 ← phi( bitmap_line::@4/(byte) bitmap_line::y0#4 ) (byte) bitmap_line::x1#5 ← phi( bitmap_line::@4/(byte) bitmap_line::x1#10 ) (byte) bitmap_line::y1#6 ← phi( bitmap_line::@4/(byte) bitmap_line::y1#4 ) (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#6 (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#5 (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#5 (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#6 (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#6 call bitmap_line_ydxi to:bitmap_line::@30 bitmap_line::@30: scope:[bitmap_line] from bitmap_line::@5 to:bitmap_line::@return bitmap_line::@15: scope:[bitmap_line] from bitmap_line::@10 (byte) bitmap_line::yd#7 ← phi( bitmap_line::@10/(byte) bitmap_line::yd#1 ) (byte) bitmap_line::xd#7 ← phi( bitmap_line::@10/(byte) bitmap_line::xd#3 ) (byte) bitmap_line::x0#5 ← phi( bitmap_line::@10/(byte) bitmap_line::x0#11 ) (byte) bitmap_line::y1#7 ← phi( bitmap_line::@10/(byte) bitmap_line::y1#3 ) (byte) bitmap_line::x1#6 ← phi( bitmap_line::@10/(byte) bitmap_line::x1#11 ) (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#6 (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#7 (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#5 (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#7 (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#7 call bitmap_line_xdyd to:bitmap_line::@31 bitmap_line::@31: scope:[bitmap_line] from bitmap_line::@15 to:bitmap_line::@return bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@10 (byte) bitmap_line::xd#8 ← phi( bitmap_line::@10/(byte) bitmap_line::xd#3 ) (byte) bitmap_line::yd#8 ← phi( bitmap_line::@10/(byte) bitmap_line::yd#1 ) (byte) bitmap_line::y1#8 ← phi( bitmap_line::@10/(byte) bitmap_line::y1#3 ) (byte) bitmap_line::x0#6 ← phi( bitmap_line::@10/(byte) bitmap_line::x0#11 ) (byte) bitmap_line::y0#6 ← phi( bitmap_line::@10/(byte) bitmap_line::y0#3 ) (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#6 (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#6 (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#8 (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#8 (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#8 call bitmap_line_ydxd to:bitmap_line::@32 bitmap_line::@32: scope:[bitmap_line] from bitmap_line::@17 to:bitmap_line::@return bitmap_line::@20: scope:[bitmap_line] from bitmap_line::@1 (byte) bitmap_line::x1#13 ← phi( bitmap_line::@1/(byte) bitmap_line::x1#2 ) (byte) bitmap_line::x0#13 ← phi( bitmap_line::@1/(byte) bitmap_line::x0#2 ) (byte) bitmap_line::xd#9 ← phi( bitmap_line::@1/(byte) bitmap_line::xd#1 ) (byte) bitmap_line::y0#7 ← phi( bitmap_line::@1/(byte) bitmap_line::y0#1 ) (byte) bitmap_line::y1#9 ← phi( bitmap_line::@1/(byte) bitmap_line::y1#1 ) (byte~) bitmap_line::$17 ← (byte) bitmap_line::y1#9 - (byte) bitmap_line::y0#7 (byte) bitmap_line::yd#3 ← (byte~) bitmap_line::$17 (bool~) bitmap_line::$18 ← (byte) bitmap_line::yd#3 < (byte) bitmap_line::xd#9 if((bool~) bitmap_line::$18) goto bitmap_line::@25 to:bitmap_line::@27 bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@1 (byte) bitmap_line::x1#12 ← phi( bitmap_line::@1/(byte) bitmap_line::x1#2 ) (byte) bitmap_line::x0#12 ← phi( bitmap_line::@1/(byte) bitmap_line::x0#2 ) (byte) bitmap_line::xd#10 ← phi( bitmap_line::@1/(byte) bitmap_line::xd#1 ) (byte) bitmap_line::y1#10 ← phi( bitmap_line::@1/(byte) bitmap_line::y1#1 ) (byte) bitmap_line::y0#8 ← phi( bitmap_line::@1/(byte) bitmap_line::y0#1 ) (byte~) bitmap_line::$13 ← (byte) bitmap_line::y0#8 - (byte) bitmap_line::y1#10 (byte) bitmap_line::yd#4 ← (byte~) bitmap_line::$13 (bool~) bitmap_line::$14 ← (byte) bitmap_line::yd#4 < (byte) bitmap_line::xd#10 if((bool~) bitmap_line::$14) goto bitmap_line::@21 to:bitmap_line::@8 bitmap_line::@21: scope:[bitmap_line] from bitmap_line::@7 (byte) bitmap_line::yd#9 ← phi( bitmap_line::@7/(byte) bitmap_line::yd#4 ) (byte) bitmap_line::xd#11 ← phi( bitmap_line::@7/(byte) bitmap_line::xd#10 ) (byte) bitmap_line::x1#7 ← phi( bitmap_line::@7/(byte) bitmap_line::x1#12 ) (byte) bitmap_line::y0#9 ← phi( bitmap_line::@7/(byte) bitmap_line::y0#8 ) (byte) bitmap_line::x0#7 ← phi( bitmap_line::@7/(byte) bitmap_line::x0#12 ) (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#7 (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#9 (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#7 (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#11 (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#9 call bitmap_line_xdyd to:bitmap_line::@33 bitmap_line::@33: scope:[bitmap_line] from bitmap_line::@21 to:bitmap_line::@return bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@7 (byte) bitmap_line::xd#12 ← phi( bitmap_line::@7/(byte) bitmap_line::xd#10 ) (byte) bitmap_line::yd#10 ← phi( bitmap_line::@7/(byte) bitmap_line::yd#4 ) (byte) bitmap_line::y0#10 ← phi( bitmap_line::@7/(byte) bitmap_line::y0#8 ) (byte) bitmap_line::x1#8 ← phi( bitmap_line::@7/(byte) bitmap_line::x1#12 ) (byte) bitmap_line::y1#11 ← phi( bitmap_line::@7/(byte) bitmap_line::y1#10 ) (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#11 (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#8 (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#10 (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#10 (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#12 call bitmap_line_ydxd to:bitmap_line::@34 bitmap_line::@34: scope:[bitmap_line] from bitmap_line::@8 to:bitmap_line::@return bitmap_line::@25: scope:[bitmap_line] from bitmap_line::@20 (byte) bitmap_line::yd#11 ← phi( bitmap_line::@20/(byte) bitmap_line::yd#3 ) (byte) bitmap_line::xd#13 ← phi( bitmap_line::@20/(byte) bitmap_line::xd#9 ) (byte) bitmap_line::x1#9 ← phi( bitmap_line::@20/(byte) bitmap_line::x1#13 ) (byte) bitmap_line::y0#11 ← phi( bitmap_line::@20/(byte) bitmap_line::y0#7 ) (byte) bitmap_line::x0#8 ← phi( bitmap_line::@20/(byte) bitmap_line::x0#13 ) (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#8 (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#11 (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#9 (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#13 (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#11 call bitmap_line_xdyi to:bitmap_line::@35 bitmap_line::@35: scope:[bitmap_line] from bitmap_line::@25 to:bitmap_line::@return bitmap_line::@27: scope:[bitmap_line] from bitmap_line::@20 (byte) bitmap_line::xd#14 ← phi( bitmap_line::@20/(byte) bitmap_line::xd#9 ) (byte) bitmap_line::yd#12 ← phi( bitmap_line::@20/(byte) bitmap_line::yd#3 ) (byte) bitmap_line::y1#12 ← phi( bitmap_line::@20/(byte) bitmap_line::y1#9 ) (byte) bitmap_line::x0#9 ← phi( bitmap_line::@20/(byte) bitmap_line::x0#13 ) (byte) bitmap_line::y0#12 ← phi( bitmap_line::@20/(byte) bitmap_line::y0#7 ) (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#12 (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#9 (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#12 (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#12 (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#14 call bitmap_line_ydxi to:bitmap_line::@36 bitmap_line::@36: scope:[bitmap_line] from bitmap_line::@27 to:bitmap_line::@return bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@29 bitmap_line::@30 bitmap_line::@31 bitmap_line::@32 bitmap_line::@33 bitmap_line::@34 bitmap_line::@35 bitmap_line::@36 return to:@return (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) bitmap_line_xdyi: scope:[bitmap_line_xdyi] from bitmap_line::@11 bitmap_line::@25 (byte) bitmap_line_xdyi::x1#6 ← phi( bitmap_line::@11/(byte) bitmap_line_xdyi::x1#0 bitmap_line::@25/(byte) bitmap_line_xdyi::x1#1 ) (byte) bitmap_line_xdyi::xd#5 ← phi( bitmap_line::@11/(byte) bitmap_line_xdyi::xd#0 bitmap_line::@25/(byte) bitmap_line_xdyi::xd#1 ) (byte) bitmap_line_xdyi::y#5 ← phi( bitmap_line::@11/(byte) bitmap_line_xdyi::y#0 bitmap_line::@25/(byte) bitmap_line_xdyi::y#1 ) (byte) bitmap_line_xdyi::x#6 ← phi( bitmap_line::@11/(byte) bitmap_line_xdyi::x#0 bitmap_line::@25/(byte) bitmap_line_xdyi::x#1 ) (byte) bitmap_line_xdyi::yd#2 ← phi( bitmap_line::@11/(byte) bitmap_line_xdyi::yd#0 bitmap_line::@25/(byte) bitmap_line_xdyi::yd#1 ) (byte~) bitmap_line_xdyi::$0 ← (byte) bitmap_line_xdyi::yd#2 >> (number) 1 (byte) bitmap_line_xdyi::e#0 ← (byte~) bitmap_line_xdyi::$0 to:bitmap_line_xdyi::@1 bitmap_line_xdyi::@1: scope:[bitmap_line_xdyi] from bitmap_line_xdyi bitmap_line_xdyi::@2 (byte) bitmap_line_xdyi::x1#5 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::x1#6 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::x1#2 ) (byte) bitmap_line_xdyi::xd#4 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::xd#5 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::xd#6 ) (byte) bitmap_line_xdyi::yd#4 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::yd#2 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::yd#5 ) (byte) bitmap_line_xdyi::e#5 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::e#0 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::e#6 ) (byte) bitmap_line_xdyi::y#3 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::y#5 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::y#6 ) (byte) bitmap_line_xdyi::x#3 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::x#6 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::x#5 ) (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 call bitmap_plot to:bitmap_line_xdyi::@5 bitmap_line_xdyi::@5: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@1 (byte) bitmap_line_xdyi::y#7 ← phi( bitmap_line_xdyi::@1/(byte) bitmap_line_xdyi::y#3 ) (byte) bitmap_line_xdyi::x1#4 ← phi( bitmap_line_xdyi::@1/(byte) bitmap_line_xdyi::x1#5 ) (byte) bitmap_line_xdyi::xd#2 ← phi( bitmap_line_xdyi::@1/(byte) bitmap_line_xdyi::xd#4 ) (byte) bitmap_line_xdyi::yd#3 ← phi( bitmap_line_xdyi::@1/(byte) bitmap_line_xdyi::yd#4 ) (byte) bitmap_line_xdyi::e#3 ← phi( bitmap_line_xdyi::@1/(byte) bitmap_line_xdyi::e#5 ) (byte) bitmap_line_xdyi::x#4 ← phi( bitmap_line_xdyi::@1/(byte) bitmap_line_xdyi::x#3 ) (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#4 (byte~) bitmap_line_xdyi::$2 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#3 (byte) bitmap_line_xdyi::e#1 ← (byte~) bitmap_line_xdyi::$2 (bool~) bitmap_line_xdyi::$3 ← (byte) bitmap_line_xdyi::xd#2 < (byte) bitmap_line_xdyi::e#1 (bool~) bitmap_line_xdyi::$4 ← ! (bool~) bitmap_line_xdyi::$3 if((bool~) bitmap_line_xdyi::$4) goto bitmap_line_xdyi::@2 to:bitmap_line_xdyi::@3 bitmap_line_xdyi::@2: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@3 bitmap_line_xdyi::@5 (byte) bitmap_line_xdyi::xd#6 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::xd#3 bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::xd#2 ) (byte) bitmap_line_xdyi::yd#5 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::yd#6 bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::yd#3 ) (byte) bitmap_line_xdyi::e#6 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::e#2 bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::e#1 ) (byte) bitmap_line_xdyi::y#6 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::y#2 bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::y#7 ) (byte) bitmap_line_xdyi::x#5 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::x#7 bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::x#2 ) (byte) bitmap_line_xdyi::x1#2 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::x1#3 bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::x1#4 ) (number~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#2 + (number) 1 (bool~) bitmap_line_xdyi::$7 ← (byte) bitmap_line_xdyi::x#5 != (number~) bitmap_line_xdyi::$6 if((bool~) bitmap_line_xdyi::$7) goto bitmap_line_xdyi::@1 to:bitmap_line_xdyi::@return bitmap_line_xdyi::@3: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@5 (byte) bitmap_line_xdyi::yd#6 ← phi( bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::yd#3 ) (byte) bitmap_line_xdyi::x#7 ← phi( bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::x#2 ) (byte) bitmap_line_xdyi::x1#3 ← phi( bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::x1#4 ) (byte) bitmap_line_xdyi::xd#3 ← phi( bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::xd#2 ) (byte) bitmap_line_xdyi::e#4 ← phi( bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::e#1 ) (byte) bitmap_line_xdyi::y#4 ← phi( bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::y#7 ) (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#4 (byte~) bitmap_line_xdyi::$5 ← (byte) bitmap_line_xdyi::e#4 - (byte) bitmap_line_xdyi::xd#3 (byte) bitmap_line_xdyi::e#2 ← (byte~) bitmap_line_xdyi::$5 to:bitmap_line_xdyi::@2 bitmap_line_xdyi::@return: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@2 return to:@return (void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd) bitmap_line_xdyd: scope:[bitmap_line_xdyd] from bitmap_line::@15 bitmap_line::@21 (byte) bitmap_line_xdyd::x1#6 ← phi( bitmap_line::@15/(byte) bitmap_line_xdyd::x1#0 bitmap_line::@21/(byte) bitmap_line_xdyd::x1#1 ) (byte) bitmap_line_xdyd::xd#5 ← phi( bitmap_line::@15/(byte) bitmap_line_xdyd::xd#0 bitmap_line::@21/(byte) bitmap_line_xdyd::xd#1 ) (byte) bitmap_line_xdyd::y#5 ← phi( bitmap_line::@15/(byte) bitmap_line_xdyd::y#0 bitmap_line::@21/(byte) bitmap_line_xdyd::y#1 ) (byte) bitmap_line_xdyd::x#6 ← phi( bitmap_line::@15/(byte) bitmap_line_xdyd::x#0 bitmap_line::@21/(byte) bitmap_line_xdyd::x#1 ) (byte) bitmap_line_xdyd::yd#2 ← phi( bitmap_line::@15/(byte) bitmap_line_xdyd::yd#0 bitmap_line::@21/(byte) bitmap_line_xdyd::yd#1 ) (byte~) bitmap_line_xdyd::$0 ← (byte) bitmap_line_xdyd::yd#2 >> (number) 1 (byte) bitmap_line_xdyd::e#0 ← (byte~) bitmap_line_xdyd::$0 to:bitmap_line_xdyd::@1 bitmap_line_xdyd::@1: scope:[bitmap_line_xdyd] from bitmap_line_xdyd bitmap_line_xdyd::@2 (byte) bitmap_line_xdyd::x1#5 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::x1#6 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::x1#2 ) (byte) bitmap_line_xdyd::xd#4 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::xd#5 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::xd#6 ) (byte) bitmap_line_xdyd::yd#4 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::yd#2 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::yd#5 ) (byte) bitmap_line_xdyd::e#5 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::e#0 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::e#6 ) (byte) bitmap_line_xdyd::y#3 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::y#5 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::y#6 ) (byte) bitmap_line_xdyd::x#3 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::x#6 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::x#5 ) (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 call bitmap_plot to:bitmap_line_xdyd::@5 bitmap_line_xdyd::@5: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@1 (byte) bitmap_line_xdyd::y#7 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_line_xdyd::y#3 ) (byte) bitmap_line_xdyd::x1#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_line_xdyd::x1#5 ) (byte) bitmap_line_xdyd::xd#2 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_line_xdyd::xd#4 ) (byte) bitmap_line_xdyd::yd#3 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_line_xdyd::yd#4 ) (byte) bitmap_line_xdyd::e#3 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_line_xdyd::e#5 ) (byte) bitmap_line_xdyd::x#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_line_xdyd::x#3 ) (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#4 (byte~) bitmap_line_xdyd::$2 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#3 (byte) bitmap_line_xdyd::e#1 ← (byte~) bitmap_line_xdyd::$2 (bool~) bitmap_line_xdyd::$3 ← (byte) bitmap_line_xdyd::xd#2 < (byte) bitmap_line_xdyd::e#1 (bool~) bitmap_line_xdyd::$4 ← ! (bool~) bitmap_line_xdyd::$3 if((bool~) bitmap_line_xdyd::$4) goto bitmap_line_xdyd::@2 to:bitmap_line_xdyd::@3 bitmap_line_xdyd::@2: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@3 bitmap_line_xdyd::@5 (byte) bitmap_line_xdyd::xd#6 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::xd#3 bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::xd#2 ) (byte) bitmap_line_xdyd::yd#5 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::yd#6 bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::yd#3 ) (byte) bitmap_line_xdyd::e#6 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::e#2 bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::e#1 ) (byte) bitmap_line_xdyd::y#6 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::y#2 bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::y#7 ) (byte) bitmap_line_xdyd::x#5 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::x#7 bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::x#2 ) (byte) bitmap_line_xdyd::x1#2 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::x1#3 bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::x1#4 ) (number~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#2 + (number) 1 (bool~) bitmap_line_xdyd::$7 ← (byte) bitmap_line_xdyd::x#5 != (number~) bitmap_line_xdyd::$6 if((bool~) bitmap_line_xdyd::$7) goto bitmap_line_xdyd::@1 to:bitmap_line_xdyd::@return bitmap_line_xdyd::@3: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@5 (byte) bitmap_line_xdyd::yd#6 ← phi( bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::yd#3 ) (byte) bitmap_line_xdyd::x#7 ← phi( bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::x#2 ) (byte) bitmap_line_xdyd::x1#3 ← phi( bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::x1#4 ) (byte) bitmap_line_xdyd::xd#3 ← phi( bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::xd#2 ) (byte) bitmap_line_xdyd::e#4 ← phi( bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::e#1 ) (byte) bitmap_line_xdyd::y#4 ← phi( bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::y#7 ) (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#4 (byte~) bitmap_line_xdyd::$5 ← (byte) bitmap_line_xdyd::e#4 - (byte) bitmap_line_xdyd::xd#3 (byte) bitmap_line_xdyd::e#2 ← (byte~) bitmap_line_xdyd::$5 to:bitmap_line_xdyd::@2 bitmap_line_xdyd::@return: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@2 return to:@return (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) bitmap_line_ydxi: scope:[bitmap_line_ydxi] from bitmap_line::@27 bitmap_line::@5 (byte) bitmap_line_ydxi::y1#6 ← phi( bitmap_line::@27/(byte) bitmap_line_ydxi::y1#1 bitmap_line::@5/(byte) bitmap_line_ydxi::y1#0 ) (byte) bitmap_line_ydxi::yd#5 ← phi( bitmap_line::@27/(byte) bitmap_line_ydxi::yd#1 bitmap_line::@5/(byte) bitmap_line_ydxi::yd#0 ) (byte) bitmap_line_ydxi::y#6 ← phi( bitmap_line::@27/(byte) bitmap_line_ydxi::y#1 bitmap_line::@5/(byte) bitmap_line_ydxi::y#0 ) (byte) bitmap_line_ydxi::x#5 ← phi( bitmap_line::@27/(byte) bitmap_line_ydxi::x#1 bitmap_line::@5/(byte) bitmap_line_ydxi::x#0 ) (byte) bitmap_line_ydxi::xd#2 ← phi( bitmap_line::@27/(byte) bitmap_line_ydxi::xd#1 bitmap_line::@5/(byte) bitmap_line_ydxi::xd#0 ) (byte~) bitmap_line_ydxi::$0 ← (byte) bitmap_line_ydxi::xd#2 >> (number) 1 (byte) bitmap_line_ydxi::e#0 ← (byte~) bitmap_line_ydxi::$0 to:bitmap_line_ydxi::@1 bitmap_line_ydxi::@1: scope:[bitmap_line_ydxi] from bitmap_line_ydxi bitmap_line_ydxi::@2 (byte) bitmap_line_ydxi::y1#5 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::y1#6 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::y1#2 ) (byte) bitmap_line_ydxi::yd#4 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::yd#5 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::yd#6 ) (byte) bitmap_line_ydxi::xd#4 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::xd#2 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::xd#5 ) (byte) bitmap_line_ydxi::e#5 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::e#0 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::e#6 ) (byte) bitmap_line_ydxi::y#3 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::y#6 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::y#5 ) (byte) bitmap_line_ydxi::x#3 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::x#5 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::x#6 ) (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 call bitmap_plot to:bitmap_line_ydxi::@5 bitmap_line_ydxi::@5: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@1 (byte) bitmap_line_ydxi::x#7 ← phi( bitmap_line_ydxi::@1/(byte) bitmap_line_ydxi::x#3 ) (byte) bitmap_line_ydxi::y1#4 ← phi( bitmap_line_ydxi::@1/(byte) bitmap_line_ydxi::y1#5 ) (byte) bitmap_line_ydxi::yd#2 ← phi( bitmap_line_ydxi::@1/(byte) bitmap_line_ydxi::yd#4 ) (byte) bitmap_line_ydxi::xd#3 ← phi( bitmap_line_ydxi::@1/(byte) bitmap_line_ydxi::xd#4 ) (byte) bitmap_line_ydxi::e#3 ← phi( bitmap_line_ydxi::@1/(byte) bitmap_line_ydxi::e#5 ) (byte) bitmap_line_ydxi::y#4 ← phi( bitmap_line_ydxi::@1/(byte) bitmap_line_ydxi::y#3 ) (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#4 (byte~) bitmap_line_ydxi::$2 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#3 (byte) bitmap_line_ydxi::e#1 ← (byte~) bitmap_line_ydxi::$2 (bool~) bitmap_line_ydxi::$3 ← (byte) bitmap_line_ydxi::yd#2 < (byte) bitmap_line_ydxi::e#1 (bool~) bitmap_line_ydxi::$4 ← ! (bool~) bitmap_line_ydxi::$3 if((bool~) bitmap_line_ydxi::$4) goto bitmap_line_ydxi::@2 to:bitmap_line_ydxi::@3 bitmap_line_ydxi::@2: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@3 bitmap_line_ydxi::@5 (byte) bitmap_line_ydxi::yd#6 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::yd#3 bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::yd#2 ) (byte) bitmap_line_ydxi::xd#5 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::xd#6 bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::xd#3 ) (byte) bitmap_line_ydxi::e#6 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::e#2 bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::e#1 ) (byte) bitmap_line_ydxi::x#6 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::x#2 bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::x#7 ) (byte) bitmap_line_ydxi::y#5 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::y#7 bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::y#2 ) (byte) bitmap_line_ydxi::y1#2 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::y1#3 bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::y1#4 ) (number~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#2 + (number) 1 (bool~) bitmap_line_ydxi::$7 ← (byte) bitmap_line_ydxi::y#5 != (number~) bitmap_line_ydxi::$6 if((bool~) bitmap_line_ydxi::$7) goto bitmap_line_ydxi::@1 to:bitmap_line_ydxi::@return bitmap_line_ydxi::@3: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@5 (byte) bitmap_line_ydxi::xd#6 ← phi( bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::xd#3 ) (byte) bitmap_line_ydxi::y#7 ← phi( bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::y#2 ) (byte) bitmap_line_ydxi::y1#3 ← phi( bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::y1#4 ) (byte) bitmap_line_ydxi::yd#3 ← phi( bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::yd#2 ) (byte) bitmap_line_ydxi::e#4 ← phi( bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::e#1 ) (byte) bitmap_line_ydxi::x#4 ← phi( bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::x#7 ) (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#4 (byte~) bitmap_line_ydxi::$5 ← (byte) bitmap_line_ydxi::e#4 - (byte) bitmap_line_ydxi::yd#3 (byte) bitmap_line_ydxi::e#2 ← (byte~) bitmap_line_ydxi::$5 to:bitmap_line_ydxi::@2 bitmap_line_ydxi::@return: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@2 return to:@return (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) bitmap_line_ydxd: scope:[bitmap_line_ydxd] from bitmap_line::@17 bitmap_line::@8 (byte) bitmap_line_ydxd::y1#6 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxd::y1#0 bitmap_line::@8/(byte) bitmap_line_ydxd::y1#1 ) (byte) bitmap_line_ydxd::yd#5 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxd::yd#0 bitmap_line::@8/(byte) bitmap_line_ydxd::yd#1 ) (byte) bitmap_line_ydxd::y#7 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxd::y#0 bitmap_line::@8/(byte) bitmap_line_ydxd::y#1 ) (byte) bitmap_line_ydxd::x#5 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxd::x#0 bitmap_line::@8/(byte) bitmap_line_ydxd::x#1 ) (byte) bitmap_line_ydxd::xd#2 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxd::xd#0 bitmap_line::@8/(byte) bitmap_line_ydxd::xd#1 ) (byte~) bitmap_line_ydxd::$0 ← (byte) bitmap_line_ydxd::xd#2 >> (number) 1 (byte) bitmap_line_ydxd::e#0 ← (byte~) bitmap_line_ydxd::$0 to:bitmap_line_ydxd::@1 bitmap_line_ydxd::@1: scope:[bitmap_line_ydxd] from bitmap_line_ydxd bitmap_line_ydxd::@2 (byte) bitmap_line_ydxd::y1#5 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::y1#6 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::y1#2 ) (byte) bitmap_line_ydxd::yd#4 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::yd#5 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::yd#6 ) (byte) bitmap_line_ydxd::xd#4 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::xd#2 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::xd#5 ) (byte) bitmap_line_ydxd::e#5 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::e#0 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::e#6 ) (byte) bitmap_line_ydxd::y#4 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::y#7 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::y#6 ) (byte) bitmap_line_ydxd::x#3 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::x#5 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::x#6 ) (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#4 call bitmap_plot to:bitmap_line_ydxd::@5 bitmap_line_ydxd::@5: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@1 (byte) bitmap_line_ydxd::x#7 ← phi( bitmap_line_ydxd::@1/(byte) bitmap_line_ydxd::x#3 ) (byte) bitmap_line_ydxd::y1#4 ← phi( bitmap_line_ydxd::@1/(byte) bitmap_line_ydxd::y1#5 ) (byte) bitmap_line_ydxd::yd#2 ← phi( bitmap_line_ydxd::@1/(byte) bitmap_line_ydxd::yd#4 ) (byte) bitmap_line_ydxd::xd#3 ← phi( bitmap_line_ydxd::@1/(byte) bitmap_line_ydxd::xd#4 ) (byte) bitmap_line_ydxd::e#3 ← phi( bitmap_line_ydxd::@1/(byte) bitmap_line_ydxd::e#5 ) (byte) bitmap_line_ydxd::y#5 ← phi( bitmap_line_ydxd::@1/(byte) bitmap_line_ydxd::y#4 ) (byte) bitmap_line_ydxd::y#2 ← (byte) bitmap_line_ydxd::y#5 (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 (byte~) bitmap_line_ydxd::$2 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#3 (byte) bitmap_line_ydxd::e#1 ← (byte~) bitmap_line_ydxd::$2 (bool~) bitmap_line_ydxd::$3 ← (byte) bitmap_line_ydxd::yd#2 < (byte) bitmap_line_ydxd::e#1 (bool~) bitmap_line_ydxd::$4 ← ! (bool~) bitmap_line_ydxd::$3 if((bool~) bitmap_line_ydxd::$4) goto bitmap_line_ydxd::@2 to:bitmap_line_ydxd::@3 bitmap_line_ydxd::@2: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@3 bitmap_line_ydxd::@5 (byte) bitmap_line_ydxd::yd#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::yd#3 bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::yd#2 ) (byte) bitmap_line_ydxd::xd#5 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::xd#6 bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::xd#3 ) (byte) bitmap_line_ydxd::e#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::e#2 bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::e#1 ) (byte) bitmap_line_ydxd::x#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::x#2 bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::x#7 ) (byte) bitmap_line_ydxd::y#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::y#8 bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::y#3 ) (byte) bitmap_line_ydxd::y1#2 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::y1#3 bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::y1#4 ) (number~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#2 + (number) 1 (bool~) bitmap_line_ydxd::$7 ← (byte) bitmap_line_ydxd::y#6 != (number~) bitmap_line_ydxd::$6 if((bool~) bitmap_line_ydxd::$7) goto bitmap_line_ydxd::@1 to:bitmap_line_ydxd::@return bitmap_line_ydxd::@3: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@5 (byte) bitmap_line_ydxd::xd#6 ← phi( bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::xd#3 ) (byte) bitmap_line_ydxd::y#8 ← phi( bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::y#3 ) (byte) bitmap_line_ydxd::y1#3 ← phi( bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::y1#4 ) (byte) bitmap_line_ydxd::yd#3 ← phi( bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::yd#2 ) (byte) bitmap_line_ydxd::e#4 ← phi( bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::e#1 ) (byte) bitmap_line_ydxd::x#4 ← phi( bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::x#7 ) (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#4 (byte~) bitmap_line_ydxd::$5 ← (byte) bitmap_line_ydxd::e#4 - (byte) bitmap_line_ydxd::yd#3 (byte) bitmap_line_ydxd::e#2 ← (byte~) bitmap_line_ydxd::$5 to:bitmap_line_ydxd::@2 bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2 return to:@return @12: scope:[] from @begin (byte) next#0 ← (byte) 0 to:@14 (void()) main() main: scope:[main] from @14 (byte) next#12 ← phi( @14/(byte) next#9 ) *((const nomodify byte*) BORDERCOL) ← (number) 0 *((const nomodify byte*) BGCOL) ← (number) 0 *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(number) 3 *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(number) $3fff/(number) $40|(word)(const nomodify byte*) BITMAP&(number) $3fff/(number) $400 (byte*) bitmap_init::bitmap#0 ← (const nomodify byte*) BITMAP call bitmap_init to:main::@3 main::@3: scope:[main] from main (byte) next#11 ← phi( main/(byte) next#12 ) call bitmap_clear to:main::@4 main::@4: scope:[main] from main::@3 (byte) next#10 ← phi( main::@3/(byte) next#11 ) call init_screen to:main::@5 main::@5: scope:[main] from main::@4 (byte) next#8 ← phi( main::@4/(byte) next#10 ) to:main::@1 main::@1: scope:[main] from main::@5 main::@6 (byte) next#4 ← phi( main::@5/(byte) next#8 main::@6/(byte) next#1 ) (byte) bitmap_line::x0#0 ← (number) 0 (byte) bitmap_line::x1#0 ← (byte) next#4 (byte) bitmap_line::y0#0 ← (number) 0 (byte) bitmap_line::y1#0 ← (number) $64 call bitmap_line to:main::@6 main::@6: scope:[main] from main::@1 (byte) next#5 ← phi( main::@1/(byte) next#4 ) (byte) next#1 ← ++ (byte) next#5 if(true) goto main::@1 to:main::@return main::@return: scope:[main] from main::@6 (byte) next#6 ← phi( main::@6/(byte) next#1 ) (byte) next#2 ← (byte) next#6 return to:@return (void()) init_screen() init_screen: scope:[init_screen] from main::@4 (byte*) init_screen::c#0 ← (const nomodify byte*) SCREEN to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@2 (byte*) init_screen::c#2 ← phi( init_screen/(byte*) init_screen::c#0 init_screen::@2/(byte*) init_screen::c#1 ) (bool~) init_screen::$0 ← (byte*) init_screen::c#2 != (const nomodify byte*) SCREEN+(number) $400 if((bool~) init_screen::$0) goto init_screen::@2 to:init_screen::@return init_screen::@2: scope:[init_screen] from init_screen::@1 (byte*) init_screen::c#3 ← phi( init_screen::@1/(byte*) init_screen::c#2 ) *((byte*) init_screen::c#3) ← (number) $14 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#3 to:init_screen::@1 init_screen::@return: scope:[init_screen] from init_screen::@1 return to:@return @14: scope:[] from @12 (byte) next#9 ← phi( @12/(byte) next#0 ) call main to:@15 @15: scope:[] from @14 (byte) next#7 ← phi( @14/(byte) next#2 ) (byte) next#3 ← (byte) next#7 to:@end @end: scope:[] from @15 SYMBOL TABLE SSA (label) @12 (label) @14 (label) @15 (label) @begin (label) @end (const nomodify byte*) BGCOL = (byte*)(number) $d021 (const nomodify byte*) BITMAP = (byte*)(number) $2000 (const nomodify byte*) BORDERCOL = (byte*)(number) $d020 (const nomodify byte*) D011 = (byte*)(number) $d011 (const nomodify byte*) SCREEN = (byte*)(number) $400 (const nomodify byte) VIC_BMM = (byte) $20 (const nomodify byte) VIC_DEN = (byte) $10 (const nomodify byte*) VIC_MEMORY = (byte*)(number) $d018 (const nomodify byte) VIC_RSEL = (byte) 8 (void()) bitmap_clear() (bool~) bitmap_clear::$0 (bool~) bitmap_clear::$1 (label) bitmap_clear::@1 (label) bitmap_clear::@2 (label) bitmap_clear::@3 (label) bitmap_clear::@return (byte*) bitmap_clear::bitmap (byte*) bitmap_clear::bitmap#0 (byte*) bitmap_clear::bitmap#1 (byte*) bitmap_clear::bitmap#2 (byte*) bitmap_clear::bitmap#3 (byte*) bitmap_clear::bitmap#4 (byte) bitmap_clear::x (byte) bitmap_clear::x#0 (byte) bitmap_clear::x#1 (byte) bitmap_clear::x#2 (byte) bitmap_clear::y (byte) bitmap_clear::y#0 (byte) bitmap_clear::y#1 (byte) bitmap_clear::y#2 (byte) bitmap_clear::y#3 (byte) bitmap_clear::y#4 (void()) bitmap_init((byte*) bitmap_init::bitmap) (number~) bitmap_init::$0 (byte~) bitmap_init::$1 (number~) bitmap_init::$10 (bool~) bitmap_init::$11 (bool~) bitmap_init::$12 (byte*~) bitmap_init::$13 (bool~) bitmap_init::$14 (byte~) bitmap_init::$2 (bool~) bitmap_init::$3 (bool~) bitmap_init::$4 (bool~) bitmap_init::$5 (number~) bitmap_init::$6 (byte~) bitmap_init::$7 (number~) bitmap_init::$8 (byte~) 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::bitmap (byte*) bitmap_init::bitmap#0 (byte*) bitmap_init::bitmap#1 (byte*) bitmap_init::bitmap#2 (byte*) bitmap_init::bitmap#3 (byte*) bitmap_init::bitmap#4 (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::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((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) (bool~) bitmap_line::$0 (byte~) bitmap_line::$1 (byte~) bitmap_line::$11 (bool~) bitmap_line::$12 (byte~) bitmap_line::$13 (bool~) bitmap_line::$14 (byte~) bitmap_line::$17 (bool~) bitmap_line::$18 (bool~) bitmap_line::$2 (byte~) bitmap_line::$3 (bool~) bitmap_line::$4 (byte~) bitmap_line::$7 (bool~) bitmap_line::$8 (label) bitmap_line::@1 (label) bitmap_line::@10 (label) bitmap_line::@11 (label) bitmap_line::@15 (label) bitmap_line::@17 (label) bitmap_line::@20 (label) bitmap_line::@21 (label) bitmap_line::@25 (label) bitmap_line::@27 (label) bitmap_line::@29 (label) bitmap_line::@3 (label) bitmap_line::@30 (label) bitmap_line::@31 (label) bitmap_line::@32 (label) bitmap_line::@33 (label) bitmap_line::@34 (label) bitmap_line::@35 (label) bitmap_line::@36 (label) bitmap_line::@4 (label) bitmap_line::@5 (label) bitmap_line::@7 (label) bitmap_line::@8 (label) bitmap_line::@return (byte) bitmap_line::x0 (byte) bitmap_line::x0#0 (byte) bitmap_line::x0#1 (byte) bitmap_line::x0#10 (byte) bitmap_line::x0#11 (byte) bitmap_line::x0#12 (byte) bitmap_line::x0#13 (byte) bitmap_line::x0#2 (byte) bitmap_line::x0#3 (byte) bitmap_line::x0#4 (byte) bitmap_line::x0#5 (byte) bitmap_line::x0#6 (byte) bitmap_line::x0#7 (byte) bitmap_line::x0#8 (byte) bitmap_line::x0#9 (byte) bitmap_line::x1 (byte) bitmap_line::x1#0 (byte) bitmap_line::x1#1 (byte) bitmap_line::x1#10 (byte) bitmap_line::x1#11 (byte) bitmap_line::x1#12 (byte) bitmap_line::x1#13 (byte) bitmap_line::x1#2 (byte) bitmap_line::x1#3 (byte) bitmap_line::x1#4 (byte) bitmap_line::x1#5 (byte) bitmap_line::x1#6 (byte) bitmap_line::x1#7 (byte) bitmap_line::x1#8 (byte) bitmap_line::x1#9 (byte) bitmap_line::xd (byte) bitmap_line::xd#0 (byte) bitmap_line::xd#1 (byte) bitmap_line::xd#10 (byte) bitmap_line::xd#11 (byte) bitmap_line::xd#12 (byte) bitmap_line::xd#13 (byte) bitmap_line::xd#14 (byte) bitmap_line::xd#2 (byte) bitmap_line::xd#3 (byte) bitmap_line::xd#4 (byte) bitmap_line::xd#5 (byte) bitmap_line::xd#6 (byte) bitmap_line::xd#7 (byte) bitmap_line::xd#8 (byte) bitmap_line::xd#9 (byte) bitmap_line::y0 (byte) bitmap_line::y0#0 (byte) bitmap_line::y0#1 (byte) bitmap_line::y0#10 (byte) bitmap_line::y0#11 (byte) bitmap_line::y0#12 (byte) bitmap_line::y0#13 (byte) bitmap_line::y0#2 (byte) bitmap_line::y0#3 (byte) bitmap_line::y0#4 (byte) bitmap_line::y0#5 (byte) bitmap_line::y0#6 (byte) bitmap_line::y0#7 (byte) bitmap_line::y0#8 (byte) bitmap_line::y0#9 (byte) bitmap_line::y1 (byte) bitmap_line::y1#0 (byte) bitmap_line::y1#1 (byte) bitmap_line::y1#10 (byte) bitmap_line::y1#11 (byte) bitmap_line::y1#12 (byte) bitmap_line::y1#13 (byte) bitmap_line::y1#2 (byte) bitmap_line::y1#3 (byte) bitmap_line::y1#4 (byte) bitmap_line::y1#5 (byte) bitmap_line::y1#6 (byte) bitmap_line::y1#7 (byte) bitmap_line::y1#8 (byte) bitmap_line::y1#9 (byte) bitmap_line::yd (byte) bitmap_line::yd#0 (byte) bitmap_line::yd#1 (byte) bitmap_line::yd#10 (byte) bitmap_line::yd#11 (byte) bitmap_line::yd#12 (byte) bitmap_line::yd#2 (byte) bitmap_line::yd#3 (byte) bitmap_line::yd#4 (byte) bitmap_line::yd#5 (byte) bitmap_line::yd#6 (byte) bitmap_line::yd#7 (byte) bitmap_line::yd#8 (byte) bitmap_line::yd#9 (void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd) (byte~) bitmap_line_xdyd::$0 (byte~) bitmap_line_xdyd::$2 (bool~) bitmap_line_xdyd::$3 (bool~) bitmap_line_xdyd::$4 (byte~) bitmap_line_xdyd::$5 (number~) bitmap_line_xdyd::$6 (bool~) bitmap_line_xdyd::$7 (label) bitmap_line_xdyd::@1 (label) bitmap_line_xdyd::@2 (label) bitmap_line_xdyd::@3 (label) bitmap_line_xdyd::@5 (label) bitmap_line_xdyd::@return (byte) bitmap_line_xdyd::e (byte) bitmap_line_xdyd::e#0 (byte) bitmap_line_xdyd::e#1 (byte) bitmap_line_xdyd::e#2 (byte) bitmap_line_xdyd::e#3 (byte) bitmap_line_xdyd::e#4 (byte) bitmap_line_xdyd::e#5 (byte) bitmap_line_xdyd::e#6 (byte) bitmap_line_xdyd::x (byte) bitmap_line_xdyd::x#0 (byte) bitmap_line_xdyd::x#1 (byte) bitmap_line_xdyd::x#2 (byte) bitmap_line_xdyd::x#3 (byte) bitmap_line_xdyd::x#4 (byte) bitmap_line_xdyd::x#5 (byte) bitmap_line_xdyd::x#6 (byte) bitmap_line_xdyd::x#7 (byte) bitmap_line_xdyd::x1 (byte) bitmap_line_xdyd::x1#0 (byte) bitmap_line_xdyd::x1#1 (byte) bitmap_line_xdyd::x1#2 (byte) bitmap_line_xdyd::x1#3 (byte) bitmap_line_xdyd::x1#4 (byte) bitmap_line_xdyd::x1#5 (byte) bitmap_line_xdyd::x1#6 (byte) bitmap_line_xdyd::xd (byte) bitmap_line_xdyd::xd#0 (byte) bitmap_line_xdyd::xd#1 (byte) bitmap_line_xdyd::xd#2 (byte) bitmap_line_xdyd::xd#3 (byte) bitmap_line_xdyd::xd#4 (byte) bitmap_line_xdyd::xd#5 (byte) bitmap_line_xdyd::xd#6 (byte) bitmap_line_xdyd::y (byte) bitmap_line_xdyd::y#0 (byte) bitmap_line_xdyd::y#1 (byte) bitmap_line_xdyd::y#2 (byte) bitmap_line_xdyd::y#3 (byte) bitmap_line_xdyd::y#4 (byte) bitmap_line_xdyd::y#5 (byte) bitmap_line_xdyd::y#6 (byte) bitmap_line_xdyd::y#7 (byte) bitmap_line_xdyd::yd (byte) bitmap_line_xdyd::yd#0 (byte) bitmap_line_xdyd::yd#1 (byte) bitmap_line_xdyd::yd#2 (byte) bitmap_line_xdyd::yd#3 (byte) bitmap_line_xdyd::yd#4 (byte) bitmap_line_xdyd::yd#5 (byte) bitmap_line_xdyd::yd#6 (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) (byte~) bitmap_line_xdyi::$0 (byte~) bitmap_line_xdyi::$2 (bool~) bitmap_line_xdyi::$3 (bool~) bitmap_line_xdyi::$4 (byte~) bitmap_line_xdyi::$5 (number~) bitmap_line_xdyi::$6 (bool~) bitmap_line_xdyi::$7 (label) bitmap_line_xdyi::@1 (label) bitmap_line_xdyi::@2 (label) bitmap_line_xdyi::@3 (label) bitmap_line_xdyi::@5 (label) bitmap_line_xdyi::@return (byte) bitmap_line_xdyi::e (byte) bitmap_line_xdyi::e#0 (byte) bitmap_line_xdyi::e#1 (byte) bitmap_line_xdyi::e#2 (byte) bitmap_line_xdyi::e#3 (byte) bitmap_line_xdyi::e#4 (byte) bitmap_line_xdyi::e#5 (byte) bitmap_line_xdyi::e#6 (byte) bitmap_line_xdyi::x (byte) bitmap_line_xdyi::x#0 (byte) bitmap_line_xdyi::x#1 (byte) bitmap_line_xdyi::x#2 (byte) bitmap_line_xdyi::x#3 (byte) bitmap_line_xdyi::x#4 (byte) bitmap_line_xdyi::x#5 (byte) bitmap_line_xdyi::x#6 (byte) bitmap_line_xdyi::x#7 (byte) bitmap_line_xdyi::x1 (byte) bitmap_line_xdyi::x1#0 (byte) bitmap_line_xdyi::x1#1 (byte) bitmap_line_xdyi::x1#2 (byte) bitmap_line_xdyi::x1#3 (byte) bitmap_line_xdyi::x1#4 (byte) bitmap_line_xdyi::x1#5 (byte) bitmap_line_xdyi::x1#6 (byte) bitmap_line_xdyi::xd (byte) bitmap_line_xdyi::xd#0 (byte) bitmap_line_xdyi::xd#1 (byte) bitmap_line_xdyi::xd#2 (byte) bitmap_line_xdyi::xd#3 (byte) bitmap_line_xdyi::xd#4 (byte) bitmap_line_xdyi::xd#5 (byte) bitmap_line_xdyi::xd#6 (byte) bitmap_line_xdyi::y (byte) bitmap_line_xdyi::y#0 (byte) bitmap_line_xdyi::y#1 (byte) bitmap_line_xdyi::y#2 (byte) bitmap_line_xdyi::y#3 (byte) bitmap_line_xdyi::y#4 (byte) bitmap_line_xdyi::y#5 (byte) bitmap_line_xdyi::y#6 (byte) bitmap_line_xdyi::y#7 (byte) bitmap_line_xdyi::yd (byte) bitmap_line_xdyi::yd#0 (byte) bitmap_line_xdyi::yd#1 (byte) bitmap_line_xdyi::yd#2 (byte) bitmap_line_xdyi::yd#3 (byte) bitmap_line_xdyi::yd#4 (byte) bitmap_line_xdyi::yd#5 (byte) bitmap_line_xdyi::yd#6 (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) (byte~) bitmap_line_ydxd::$0 (byte~) bitmap_line_ydxd::$2 (bool~) bitmap_line_ydxd::$3 (bool~) bitmap_line_ydxd::$4 (byte~) bitmap_line_ydxd::$5 (number~) bitmap_line_ydxd::$6 (bool~) bitmap_line_ydxd::$7 (label) bitmap_line_ydxd::@1 (label) bitmap_line_ydxd::@2 (label) bitmap_line_ydxd::@3 (label) bitmap_line_ydxd::@5 (label) bitmap_line_ydxd::@return (byte) bitmap_line_ydxd::e (byte) bitmap_line_ydxd::e#0 (byte) bitmap_line_ydxd::e#1 (byte) bitmap_line_ydxd::e#2 (byte) bitmap_line_ydxd::e#3 (byte) bitmap_line_ydxd::e#4 (byte) bitmap_line_ydxd::e#5 (byte) bitmap_line_ydxd::e#6 (byte) bitmap_line_ydxd::x (byte) bitmap_line_ydxd::x#0 (byte) bitmap_line_ydxd::x#1 (byte) bitmap_line_ydxd::x#2 (byte) bitmap_line_ydxd::x#3 (byte) bitmap_line_ydxd::x#4 (byte) bitmap_line_ydxd::x#5 (byte) bitmap_line_ydxd::x#6 (byte) bitmap_line_ydxd::x#7 (byte) bitmap_line_ydxd::xd (byte) bitmap_line_ydxd::xd#0 (byte) bitmap_line_ydxd::xd#1 (byte) bitmap_line_ydxd::xd#2 (byte) bitmap_line_ydxd::xd#3 (byte) bitmap_line_ydxd::xd#4 (byte) bitmap_line_ydxd::xd#5 (byte) bitmap_line_ydxd::xd#6 (byte) bitmap_line_ydxd::y (byte) bitmap_line_ydxd::y#0 (byte) bitmap_line_ydxd::y#1 (byte) bitmap_line_ydxd::y#2 (byte) bitmap_line_ydxd::y#3 (byte) bitmap_line_ydxd::y#4 (byte) bitmap_line_ydxd::y#5 (byte) bitmap_line_ydxd::y#6 (byte) bitmap_line_ydxd::y#7 (byte) bitmap_line_ydxd::y#8 (byte) bitmap_line_ydxd::y1 (byte) bitmap_line_ydxd::y1#0 (byte) bitmap_line_ydxd::y1#1 (byte) bitmap_line_ydxd::y1#2 (byte) bitmap_line_ydxd::y1#3 (byte) bitmap_line_ydxd::y1#4 (byte) bitmap_line_ydxd::y1#5 (byte) bitmap_line_ydxd::y1#6 (byte) bitmap_line_ydxd::yd (byte) bitmap_line_ydxd::yd#0 (byte) bitmap_line_ydxd::yd#1 (byte) bitmap_line_ydxd::yd#2 (byte) bitmap_line_ydxd::yd#3 (byte) bitmap_line_ydxd::yd#4 (byte) bitmap_line_ydxd::yd#5 (byte) bitmap_line_ydxd::yd#6 (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) (byte~) bitmap_line_ydxi::$0 (byte~) bitmap_line_ydxi::$2 (bool~) bitmap_line_ydxi::$3 (bool~) bitmap_line_ydxi::$4 (byte~) bitmap_line_ydxi::$5 (number~) bitmap_line_ydxi::$6 (bool~) bitmap_line_ydxi::$7 (label) bitmap_line_ydxi::@1 (label) bitmap_line_ydxi::@2 (label) bitmap_line_ydxi::@3 (label) bitmap_line_ydxi::@5 (label) bitmap_line_ydxi::@return (byte) bitmap_line_ydxi::e (byte) bitmap_line_ydxi::e#0 (byte) bitmap_line_ydxi::e#1 (byte) bitmap_line_ydxi::e#2 (byte) bitmap_line_ydxi::e#3 (byte) bitmap_line_ydxi::e#4 (byte) bitmap_line_ydxi::e#5 (byte) bitmap_line_ydxi::e#6 (byte) bitmap_line_ydxi::x (byte) bitmap_line_ydxi::x#0 (byte) bitmap_line_ydxi::x#1 (byte) bitmap_line_ydxi::x#2 (byte) bitmap_line_ydxi::x#3 (byte) bitmap_line_ydxi::x#4 (byte) bitmap_line_ydxi::x#5 (byte) bitmap_line_ydxi::x#6 (byte) bitmap_line_ydxi::x#7 (byte) bitmap_line_ydxi::xd (byte) bitmap_line_ydxi::xd#0 (byte) bitmap_line_ydxi::xd#1 (byte) bitmap_line_ydxi::xd#2 (byte) bitmap_line_ydxi::xd#3 (byte) bitmap_line_ydxi::xd#4 (byte) bitmap_line_ydxi::xd#5 (byte) bitmap_line_ydxi::xd#6 (byte) bitmap_line_ydxi::y (byte) bitmap_line_ydxi::y#0 (byte) bitmap_line_ydxi::y#1 (byte) bitmap_line_ydxi::y#2 (byte) bitmap_line_ydxi::y#3 (byte) bitmap_line_ydxi::y#4 (byte) bitmap_line_ydxi::y#5 (byte) bitmap_line_ydxi::y#6 (byte) bitmap_line_ydxi::y#7 (byte) bitmap_line_ydxi::y1 (byte) bitmap_line_ydxi::y1#0 (byte) bitmap_line_ydxi::y1#1 (byte) bitmap_line_ydxi::y1#2 (byte) bitmap_line_ydxi::y1#3 (byte) bitmap_line_ydxi::y1#4 (byte) bitmap_line_ydxi::y1#5 (byte) bitmap_line_ydxi::y1#6 (byte) bitmap_line_ydxi::yd (byte) bitmap_line_ydxi::yd#0 (byte) bitmap_line_ydxi::yd#1 (byte) bitmap_line_ydxi::yd#2 (byte) bitmap_line_ydxi::yd#3 (byte) bitmap_line_ydxi::yd#4 (byte) bitmap_line_ydxi::yd#5 (byte) bitmap_line_ydxi::yd#6 (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) (word~) bitmap_plot::$0 (byte~) bitmap_plot::$1 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter (byte*) bitmap_plot::plotter#0 (word) bitmap_plot::plotter_x (word) bitmap_plot::plotter_x#0 (word) bitmap_plot::plotter_y (word) bitmap_plot::plotter_y#0 (byte) bitmap_plot::x (byte) bitmap_plot::x#0 (byte) bitmap_plot::x#1 (byte) bitmap_plot::x#2 (byte) bitmap_plot::x#3 (byte) bitmap_plot::x#4 (byte) bitmap_plot::y (byte) bitmap_plot::y#0 (byte) bitmap_plot::y#1 (byte) bitmap_plot::y#2 (byte) bitmap_plot::y#3 (byte) bitmap_plot::y#4 (const to_nomodify byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) } (const to_nomodify byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) } (const to_nomodify byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) } (const to_nomodify byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) } (const to_nomodify byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) } (void()) init_screen() (bool~) init_screen::$0 (label) init_screen::@1 (label) init_screen::@2 (label) init_screen::@return (byte*) init_screen::c (byte*) init_screen::c#0 (byte*) init_screen::c#1 (byte*) init_screen::c#2 (byte*) init_screen::c#3 (void()) main() (label) main::@1 (label) main::@3 (label) main::@4 (label) main::@5 (label) main::@6 (label) main::@return (byte) next (byte) next#0 (byte) next#1 (byte) next#10 (byte) next#11 (byte) next#12 (byte) next#2 (byte) next#3 (byte) next#4 (byte) next#5 (byte) next#6 (byte) next#7 (byte) next#8 (byte) next#9 Fixing inline constructor with bitmap_clear::$2 ← (byte)*(bitmap_plot_xhi + 0) w= (byte)*(bitmap_plot_xlo + 0) Fixing inline constructor with bitmap_plot::$2 ← (byte)*(bitmap_plot_xhi + bitmap_plot::x#4) w= (byte)*(bitmap_plot_xlo + bitmap_plot::x#4) Fixing inline constructor with bitmap_plot::$3 ← (byte)*(bitmap_plot_yhi + bitmap_plot::y#4) w= (byte)*(bitmap_plot_ylo + bitmap_plot::y#4) Successful SSA optimization Pass2FixInlineConstructors Adding number conversion cast (unumber) $f8 in (number~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (number) $f8 Adding number conversion cast (unumber) bitmap_init::$0 in (number~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (unumber)(number) $f8 Adding number conversion cast (unumber) 1 in (byte~) bitmap_init::$2 ← (byte) bitmap_init::bits#3 >> (number) 1 Adding number conversion cast (unumber) 0 in (bool~) bitmap_init::$3 ← (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::$6 ← (byte) bitmap_init::y#2 & (number) 7 Adding number conversion cast (unumber) bitmap_init::$6 in (number~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (unumber)(number) 7 Adding number conversion cast (unumber) bitmap_init::$8 in (number~) bitmap_init::$8 ← (unumber~) bitmap_init::$6 | (byte~) bitmap_init::$7 Adding number conversion cast (unumber) 7 in (number~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (number) 7 Adding number conversion cast (unumber) bitmap_init::$10 in (number~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (unumber)(number) 7 Adding number conversion cast (unumber) 7 in (bool~) bitmap_init::$11 ← (unumber~) bitmap_init::$10 == (number) 7 Adding number conversion cast (unumber) $28*8 in (byte*~) bitmap_init::$13 ← (byte*) bitmap_init::yoffs#3 + (number) $28*(number) 8 Adding number conversion cast (unumber) 0 in (byte*~) bitmap_clear::$2 ← (byte)*((const to_nomodify byte*) bitmap_plot_xhi + (number) 0) w= (byte)*((const to_nomodify byte*) bitmap_plot_xlo + (number) 0) Adding number conversion cast (unumber) 0 in (byte*~) bitmap_clear::$2 ← (byte)*((const to_nomodify byte*) bitmap_plot_xhi + (unumber)(number) 0) w= (byte)*((const to_nomodify byte*) bitmap_plot_xlo + (number) 0) Adding number conversion cast (unumber) 0 in *((byte*) bitmap_clear::bitmap#2) ← (number) 0 Adding number conversion cast (unumber) 1 in (byte~) bitmap_line_xdyi::$0 ← (byte) bitmap_line_xdyi::yd#2 >> (number) 1 Adding number conversion cast (unumber) 1 in (number~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#2 + (number) 1 Adding number conversion cast (unumber) bitmap_line_xdyi::$6 in (number~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#2 + (unumber)(number) 1 Adding number conversion cast (unumber) 1 in (byte~) bitmap_line_xdyd::$0 ← (byte) bitmap_line_xdyd::yd#2 >> (number) 1 Adding number conversion cast (unumber) 1 in (number~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#2 + (number) 1 Adding number conversion cast (unumber) bitmap_line_xdyd::$6 in (number~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#2 + (unumber)(number) 1 Adding number conversion cast (unumber) 1 in (byte~) bitmap_line_ydxi::$0 ← (byte) bitmap_line_ydxi::xd#2 >> (number) 1 Adding number conversion cast (unumber) 1 in (number~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#2 + (number) 1 Adding number conversion cast (unumber) bitmap_line_ydxi::$6 in (number~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#2 + (unumber)(number) 1 Adding number conversion cast (unumber) 1 in (byte~) bitmap_line_ydxd::$0 ← (byte) bitmap_line_ydxd::xd#2 >> (number) 1 Adding number conversion cast (unumber) 1 in (number~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#2 + (number) 1 Adding number conversion cast (unumber) bitmap_line_ydxd::$6 in (number~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#2 + (unumber)(number) 1 Adding number conversion cast (unumber) 0 in *((const nomodify byte*) BORDERCOL) ← (number) 0 Adding number conversion cast (unumber) 0 in *((const nomodify byte*) BGCOL) ← (number) 0 Adding number conversion cast (unumber) VIC_BMM|VIC_DEN|VIC_RSEL|3 in *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(number) 3 Adding number conversion cast (unumber) 3 in *((const nomodify byte*) D011) ← ((unumber)) (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(number) 3 Adding number conversion cast (unumber) $3fff in *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(number) $3fff/(number) $40|(word)(const nomodify byte*) BITMAP&(number) $3fff/(number) $400 Adding number conversion cast (unumber) $3fff in *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(unumber)(number) $3fff/(number) $40|(word)(const nomodify byte*) BITMAP&(number) $3fff/(number) $400 Adding number conversion cast (unumber) 0 in (byte) bitmap_line::x0#0 ← (number) 0 Adding number conversion cast (unumber) 0 in (byte) bitmap_line::y0#0 ← (number) 0 Adding number conversion cast (unumber) $64 in (byte) bitmap_line::y1#0 ← (number) $64 Adding number conversion cast (unumber) $400 in (bool~) init_screen::$0 ← (byte*) init_screen::c#2 != (const nomodify byte*) SCREEN+(number) $400 Adding number conversion cast (unumber) $14 in *((byte*) init_screen::c#3) ← (number) $14 Successful SSA optimization PassNAddNumberTypeConversions Adding number conversion cast (unumber) $40 in *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(unumber)(number) $3fff/(number) $40|(word)(const nomodify byte*) BITMAP&(unumber)(number) $3fff/(number) $400 Adding number conversion cast (unumber) $400 in *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(unumber)(number) $3fff/(unumber)(number) $40|(word)(const nomodify byte*) BITMAP&(unumber)(number) $3fff/(number) $400 Successful SSA optimization PassNAddNumberTypeConversions Inlining cast (byte) bitmap_init::bits#2 ← (unumber)(number) $80 Inlining cast *((byte*) bitmap_clear::bitmap#2) ← (unumber)(number) 0 Inlining cast (byte*) bitmap_plot::plotter#0 ← (byte*)(word~) bitmap_plot::$0 Inlining cast *((const nomodify byte*) BORDERCOL) ← (unumber)(number) 0 Inlining cast *((const nomodify byte*) BGCOL) ← (unumber)(number) 0 Inlining cast *((const nomodify byte*) D011) ← (unumber)(const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(unumber)(number) 3 Inlining cast (byte) bitmap_line::x0#0 ← (unumber)(number) 0 Inlining cast (byte) bitmap_line::y0#0 ← (unumber)(number) 0 Inlining cast (byte) bitmap_line::y1#0 ← (unumber)(number) $64 Inlining cast *((byte*) init_screen::c#3) ← (unumber)(number) $14 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 53280 Simplifying constant pointer cast (byte*) 53281 Simplifying constant pointer cast (byte*) 53265 Simplifying constant pointer cast (byte*) 53272 Simplifying constant pointer cast (byte*) 1024 Simplifying constant pointer cast (byte*) 8192 Simplifying constant integer cast $f8 Simplifying constant integer cast 1 Simplifying constant integer cast 0 Simplifying constant integer cast $80 Simplifying constant pointer cast (byte*) 0 Simplifying constant integer cast 7 Simplifying constant integer cast 7 Simplifying constant integer cast 7 Simplifying constant integer cast *((const to_nomodify byte*) bitmap_plot_xhi + (unumber)(number) 0) Simplifying constant integer cast 0 Simplifying constant integer cast *((const to_nomodify byte*) bitmap_plot_xlo + (unumber)(number) 0) Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) Simplifying constant integer cast *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) Simplifying constant integer cast *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) Simplifying constant integer cast *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(unumber)(number) 3 Simplifying constant integer cast 3 Simplifying constant integer cast $3fff Simplifying constant integer cast $40 Simplifying constant integer cast $3fff Simplifying constant integer cast $400 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast $64 Simplifying constant integer cast $400 Simplifying constant integer cast $14 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $f8 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) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 3 Finalized unsigned number type (word) $3fff Finalized unsigned number type (byte) $40 Finalized unsigned number type (word) $3fff Finalized unsigned number type (word) $400 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) $64 Finalized unsigned number type (word) $400 Finalized unsigned number type (byte) $14 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 Inferred type updated to byte in (unumber~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte) 7 Inferred type updated to byte in (unumber~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 Inferred type updated to byte in (unumber~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 Inferred type updated to byte in (unumber~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#2 + (byte) 1 Inferred type updated to byte in (unumber~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#2 + (byte) 1 Inferred type updated to byte in (unumber~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#2 + (byte) 1 Inferred type updated to byte in (unumber~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#2 + (byte) 1 Adding pointer type conversion cast (byte*) bitmap_clear::$2 in (byte*~) bitmap_clear::$2 ← *((const to_nomodify byte*) bitmap_plot_xhi + (byte) 0) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) 0) Successful SSA optimization PassNAddTypeConversionAssignment Inversing boolean not [12] (bool~) bitmap_init::$4 ← (byte) bitmap_init::bits#1 != (byte) 0 from [11] (bool~) bitmap_init::$3 ← (byte) bitmap_init::bits#1 == (byte) 0 Inversing boolean not [31] (bool~) bitmap_init::$12 ← (byte~) bitmap_init::$10 != (byte) 7 from [30] (bool~) bitmap_init::$11 ← (byte~) bitmap_init::$10 == (byte) 7 Inversing boolean not [172] (bool~) bitmap_line_xdyi::$4 ← (byte) bitmap_line_xdyi::xd#2 >= (byte) bitmap_line_xdyi::e#1 from [171] (bool~) bitmap_line_xdyi::$3 ← (byte) bitmap_line_xdyi::xd#2 < (byte) bitmap_line_xdyi::e#1 Inversing boolean not [195] (bool~) bitmap_line_xdyd::$4 ← (byte) bitmap_line_xdyd::xd#2 >= (byte) bitmap_line_xdyd::e#1 from [194] (bool~) bitmap_line_xdyd::$3 ← (byte) bitmap_line_xdyd::xd#2 < (byte) bitmap_line_xdyd::e#1 Inversing boolean not [218] (bool~) bitmap_line_ydxi::$4 ← (byte) bitmap_line_ydxi::yd#2 >= (byte) bitmap_line_ydxi::e#1 from [217] (bool~) bitmap_line_ydxi::$3 ← (byte) bitmap_line_ydxi::yd#2 < (byte) bitmap_line_ydxi::e#1 Inversing boolean not [242] (bool~) bitmap_line_ydxd::$4 ← (byte) bitmap_line_ydxd::yd#2 >= (byte) bitmap_line_ydxd::e#1 from [241] (bool~) bitmap_line_ydxd::$3 ← (byte) bitmap_line_ydxd::yd#2 < (byte) bitmap_line_ydxd::e#1 Successful SSA optimization Pass2UnaryNotSimplification Alias bitmap_init::bits#1 = bitmap_init::$2 Alias bitmap_init::x#2 = bitmap_init::x#4 Alias bitmap_init::bitmap#1 = bitmap_init::bitmap#4 Alias bitmap_init::yoffs#2 = bitmap_init::yoffs#3 Alias bitmap_init::y#2 = bitmap_init::y#4 Alias bitmap_init::yoffs#1 = bitmap_init::$13 Alias bitmap_clear::bitmap#0 = bitmap_clear::$2 Alias bitmap_clear::y#2 = bitmap_clear::y#3 Alias bitmap_clear::bitmap#1 = bitmap_clear::bitmap#4 Alias bitmap_plot::plotter_x#0 = bitmap_plot::$2 Alias bitmap_plot::plotter_y#0 = bitmap_plot::$3 Alias bitmap_line::x1#1 = bitmap_line::x1#2 bitmap_line::x1#3 bitmap_line::x1#11 bitmap_line::x1#10 bitmap_line::x1#4 bitmap_line::x1#5 bitmap_line::x1#6 bitmap_line::x1#13 bitmap_line::x1#12 bitmap_line::x1#7 bitmap_line::x1#8 bitmap_line::x1#9 Alias bitmap_line::x0#1 = bitmap_line::x0#2 bitmap_line::x0#3 bitmap_line::x0#11 bitmap_line::x0#10 bitmap_line::x0#4 bitmap_line::x0#5 bitmap_line::x0#6 bitmap_line::x0#13 bitmap_line::x0#12 bitmap_line::x0#7 bitmap_line::x0#8 bitmap_line::x0#9 Alias bitmap_line::y0#1 = bitmap_line::y0#13 bitmap_line::y0#2 bitmap_line::y0#3 bitmap_line::y0#4 bitmap_line::y0#5 bitmap_line::y0#6 bitmap_line::y0#7 bitmap_line::y0#8 bitmap_line::y0#9 bitmap_line::y0#10 bitmap_line::y0#11 bitmap_line::y0#12 Alias bitmap_line::y1#1 = bitmap_line::y1#13 bitmap_line::y1#2 bitmap_line::y1#3 bitmap_line::y1#4 bitmap_line::y1#5 bitmap_line::y1#6 bitmap_line::y1#7 bitmap_line::y1#8 bitmap_line::y1#9 bitmap_line::y1#10 bitmap_line::y1#11 bitmap_line::y1#12 Alias bitmap_line::xd#1 = bitmap_line::$11 bitmap_line::xd#9 bitmap_line::xd#10 bitmap_line::xd#11 bitmap_line::xd#12 bitmap_line::xd#13 bitmap_line::xd#14 Alias bitmap_line::xd#2 = bitmap_line::$1 bitmap_line::xd#3 bitmap_line::xd#4 bitmap_line::xd#5 bitmap_line::xd#6 bitmap_line::xd#7 bitmap_line::xd#8 Alias bitmap_line::yd#1 = bitmap_line::$7 bitmap_line::yd#7 bitmap_line::yd#8 Alias bitmap_line::yd#2 = bitmap_line::$3 bitmap_line::yd#5 bitmap_line::yd#6 Alias bitmap_line::yd#11 = bitmap_line::yd#3 bitmap_line::$17 bitmap_line::yd#12 Alias bitmap_line::yd#10 = bitmap_line::yd#4 bitmap_line::$13 bitmap_line::yd#9 Alias bitmap_line_xdyi::e#0 = bitmap_line_xdyi::$0 Alias bitmap_line_xdyi::x#3 = bitmap_line_xdyi::x#4 Alias bitmap_line_xdyi::e#3 = bitmap_line_xdyi::e#5 Alias bitmap_line_xdyi::yd#3 = bitmap_line_xdyi::yd#4 bitmap_line_xdyi::yd#6 Alias bitmap_line_xdyi::xd#2 = bitmap_line_xdyi::xd#4 bitmap_line_xdyi::xd#3 Alias bitmap_line_xdyi::x1#3 = bitmap_line_xdyi::x1#4 bitmap_line_xdyi::x1#5 Alias bitmap_line_xdyi::y#3 = bitmap_line_xdyi::y#7 bitmap_line_xdyi::y#4 Alias bitmap_line_xdyi::e#1 = bitmap_line_xdyi::$2 bitmap_line_xdyi::e#4 Alias bitmap_line_xdyi::x#2 = bitmap_line_xdyi::x#7 Alias bitmap_line_xdyi::e#2 = bitmap_line_xdyi::$5 Alias bitmap_line_xdyd::e#0 = bitmap_line_xdyd::$0 Alias bitmap_line_xdyd::x#3 = bitmap_line_xdyd::x#4 Alias bitmap_line_xdyd::e#3 = bitmap_line_xdyd::e#5 Alias bitmap_line_xdyd::yd#3 = bitmap_line_xdyd::yd#4 bitmap_line_xdyd::yd#6 Alias bitmap_line_xdyd::xd#2 = bitmap_line_xdyd::xd#4 bitmap_line_xdyd::xd#3 Alias bitmap_line_xdyd::x1#3 = bitmap_line_xdyd::x1#4 bitmap_line_xdyd::x1#5 Alias bitmap_line_xdyd::y#3 = bitmap_line_xdyd::y#7 bitmap_line_xdyd::y#4 Alias bitmap_line_xdyd::e#1 = bitmap_line_xdyd::$2 bitmap_line_xdyd::e#4 Alias bitmap_line_xdyd::x#2 = bitmap_line_xdyd::x#7 Alias bitmap_line_xdyd::e#2 = bitmap_line_xdyd::$5 Alias bitmap_line_ydxi::e#0 = bitmap_line_ydxi::$0 Alias bitmap_line_ydxi::y#3 = bitmap_line_ydxi::y#4 Alias bitmap_line_ydxi::e#3 = bitmap_line_ydxi::e#5 Alias bitmap_line_ydxi::xd#3 = bitmap_line_ydxi::xd#4 bitmap_line_ydxi::xd#6 Alias bitmap_line_ydxi::yd#2 = bitmap_line_ydxi::yd#4 bitmap_line_ydxi::yd#3 Alias bitmap_line_ydxi::y1#3 = bitmap_line_ydxi::y1#4 bitmap_line_ydxi::y1#5 Alias bitmap_line_ydxi::x#3 = bitmap_line_ydxi::x#7 bitmap_line_ydxi::x#4 Alias bitmap_line_ydxi::e#1 = bitmap_line_ydxi::$2 bitmap_line_ydxi::e#4 Alias bitmap_line_ydxi::y#2 = bitmap_line_ydxi::y#7 Alias bitmap_line_ydxi::e#2 = bitmap_line_ydxi::$5 Alias bitmap_line_ydxd::e#0 = bitmap_line_ydxd::$0 Alias bitmap_line_ydxd::y#2 = bitmap_line_ydxd::y#5 bitmap_line_ydxd::y#4 Alias bitmap_line_ydxd::e#3 = bitmap_line_ydxd::e#5 Alias bitmap_line_ydxd::xd#3 = bitmap_line_ydxd::xd#4 bitmap_line_ydxd::xd#6 Alias bitmap_line_ydxd::yd#2 = bitmap_line_ydxd::yd#4 bitmap_line_ydxd::yd#3 Alias bitmap_line_ydxd::y1#3 = bitmap_line_ydxd::y1#4 bitmap_line_ydxd::y1#5 Alias bitmap_line_ydxd::x#3 = bitmap_line_ydxd::x#7 bitmap_line_ydxd::x#4 Alias bitmap_line_ydxd::e#1 = bitmap_line_ydxd::$2 bitmap_line_ydxd::e#4 Alias bitmap_line_ydxd::y#3 = bitmap_line_ydxd::y#8 Alias bitmap_line_ydxd::e#2 = bitmap_line_ydxd::$5 Alias next#10 = next#11 next#12 next#8 Alias next#4 = next#5 Alias next#1 = next#6 next#2 Alias init_screen::c#2 = init_screen::c#3 Alias next#0 = next#9 Alias next#3 = next#7 Successful SSA optimization Pass2AliasElimination Alias bitmap_init::x#2 = bitmap_init::x#3 Alias bitmap_init::bitmap#1 = bitmap_init::bitmap#3 Alias bitmap_init::y#2 = bitmap_init::y#3 Alias bitmap_line_xdyi::x1#2 = bitmap_line_xdyi::x1#3 Alias bitmap_line_xdyi::x#2 = bitmap_line_xdyi::x#5 Alias bitmap_line_xdyi::yd#3 = bitmap_line_xdyi::yd#5 Alias bitmap_line_xdyi::xd#2 = bitmap_line_xdyi::xd#6 Alias bitmap_line_xdyd::x1#2 = bitmap_line_xdyd::x1#3 Alias bitmap_line_xdyd::x#2 = bitmap_line_xdyd::x#5 Alias bitmap_line_xdyd::yd#3 = bitmap_line_xdyd::yd#5 Alias bitmap_line_xdyd::xd#2 = bitmap_line_xdyd::xd#6 Alias bitmap_line_ydxi::y1#2 = bitmap_line_ydxi::y1#3 Alias bitmap_line_ydxi::y#2 = bitmap_line_ydxi::y#5 Alias bitmap_line_ydxi::xd#3 = bitmap_line_ydxi::xd#5 Alias bitmap_line_ydxi::yd#2 = bitmap_line_ydxi::yd#6 Alias bitmap_line_ydxd::y1#2 = bitmap_line_ydxd::y1#3 Alias bitmap_line_ydxd::y#3 = bitmap_line_ydxd::y#6 Alias bitmap_line_ydxd::xd#3 = bitmap_line_ydxd::xd#5 Alias bitmap_line_ydxd::yd#2 = bitmap_line_ydxd::yd#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) bitmap_init::bitmap#2 (byte*) bitmap_init::bitmap#0 Identical Phi Values (byte*) bitmap_init::bitmap#1 (byte*) bitmap_init::bitmap#2 Identical Phi Values (byte) bitmap_clear::y#2 (byte) bitmap_clear::y#4 Identical Phi Values (byte) bitmap_line::x0#1 (byte) bitmap_line::x0#0 Identical Phi Values (byte) bitmap_line::x1#1 (byte) bitmap_line::x1#0 Identical Phi Values (byte) bitmap_line::y0#1 (byte) bitmap_line::y0#0 Identical Phi Values (byte) bitmap_line::y1#1 (byte) bitmap_line::y1#0 Identical Phi Values (byte) bitmap_line_xdyi::yd#3 (byte) bitmap_line_xdyi::yd#2 Identical Phi Values (byte) bitmap_line_xdyi::xd#2 (byte) bitmap_line_xdyi::xd#5 Identical Phi Values (byte) bitmap_line_xdyi::x1#2 (byte) bitmap_line_xdyi::x1#6 Identical Phi Values (byte) bitmap_line_xdyd::yd#3 (byte) bitmap_line_xdyd::yd#2 Identical Phi Values (byte) bitmap_line_xdyd::xd#2 (byte) bitmap_line_xdyd::xd#5 Identical Phi Values (byte) bitmap_line_xdyd::x1#2 (byte) bitmap_line_xdyd::x1#6 Identical Phi Values (byte) bitmap_line_ydxi::xd#3 (byte) bitmap_line_ydxi::xd#2 Identical Phi Values (byte) bitmap_line_ydxi::yd#2 (byte) bitmap_line_ydxi::yd#5 Identical Phi Values (byte) bitmap_line_ydxi::y1#2 (byte) bitmap_line_ydxi::y1#6 Identical Phi Values (byte) bitmap_line_ydxd::xd#3 (byte) bitmap_line_ydxd::xd#2 Identical Phi Values (byte) bitmap_line_ydxd::yd#2 (byte) bitmap_line_ydxd::yd#5 Identical Phi Values (byte) bitmap_line_ydxd::y1#2 (byte) bitmap_line_ydxd::y1#6 Identical Phi Values (byte) next#10 (byte) next#0 Identical Phi Values (byte) next#3 (byte) next#1 Successful SSA optimization Pass2IdenticalPhiElimination Identified duplicate assignment right side [29] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 Successful SSA optimization Pass2DuplicateRValueIdentification Simple Condition (bool~) bitmap_init::$4 [11] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@2 Simple Condition (bool~) bitmap_init::$5 [15] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 Simple Condition (bool~) bitmap_init::$12 [28] if((byte~) bitmap_init::$10!=(byte) 7) goto bitmap_init::@6 Simple Condition (bool~) bitmap_init::$14 [32] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 Simple Condition (bool~) bitmap_clear::$0 [45] if((byte) bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2 Simple Condition (bool~) bitmap_clear::$1 [48] if((byte) bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1 Simple Condition (bool~) bitmap_line::$0 [62] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 Simple Condition (bool~) bitmap_line::$12 [65] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@20 Simple Condition (bool~) bitmap_line::$2 [68] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@10 Simple Condition (bool~) bitmap_line::$8 [71] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#2) goto bitmap_line::@15 Simple Condition (bool~) bitmap_line::$4 [74] if((byte) bitmap_line::yd#2<(byte) bitmap_line::xd#2) goto bitmap_line::@11 Simple Condition (bool~) bitmap_line::$18 [101] if((byte) bitmap_line::yd#11<(byte) bitmap_line::xd#1) goto bitmap_line::@25 Simple Condition (bool~) bitmap_line::$14 [104] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#1) goto bitmap_line::@21 Simple Condition (bool~) bitmap_line_xdyi::$4 [139] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 Simple Condition (bool~) bitmap_line_xdyi::$7 [143] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 Simple Condition (bool~) bitmap_line_xdyd::$4 [156] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 Simple Condition (bool~) bitmap_line_xdyd::$7 [160] if((byte) bitmap_line_xdyd::x#2!=(byte~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 Simple Condition (bool~) bitmap_line_ydxi::$4 [173] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 Simple Condition (bool~) bitmap_line_ydxi::$7 [177] if((byte) bitmap_line_ydxi::y#2!=(byte~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 Simple Condition (bool~) bitmap_line_ydxd::$4 [190] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 Simple Condition (bool~) bitmap_line_ydxd::$7 [194] if((byte) bitmap_line_ydxd::y#3!=(byte~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 Simple Condition (bool~) init_screen::$0 [220] if((byte*) init_screen::c#2!=(const nomodify byte*) SCREEN+(word) $400) goto init_screen::@2 Successful SSA optimization Pass2ConditionalJumpSimplification 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::yoffs#0 = (byte*) 0 Constant (const byte) bitmap_init::y#0 = 0 Constant (const byte) bitmap_clear::y#0 = 0 Constant (const byte) bitmap_clear::x#0 = 0 Constant (const byte) bitmap_line::xd#0 = 0 Constant (const byte) bitmap_line::yd#0 = 0 Constant (const byte) next#0 = 0 Constant (const byte*) bitmap_init::bitmap#0 = BITMAP Constant (const byte) bitmap_line::x0#0 = 0 Constant (const byte) bitmap_line::y0#0 = 0 Constant (const byte) bitmap_line::y1#0 = $64 Constant (const byte*) init_screen::c#0 = SCREEN Successful SSA optimization Pass2ConstantIdentification Constant (const byte) bitmap_line_xdyi::y#0 = bitmap_line::y1#0 Constant (const byte) bitmap_line_xdyi::x1#0 = bitmap_line::x0#0 Constant (const byte) bitmap_line_ydxi::y#0 = bitmap_line::y1#0 Constant (const byte) bitmap_line_ydxi::y1#0 = bitmap_line::y0#0 Constant (const byte) bitmap_line_xdyd::y#0 = bitmap_line::y1#0 Constant (const byte) bitmap_line_xdyd::x1#0 = bitmap_line::x0#0 Constant (const byte) bitmap_line_ydxd::y#0 = bitmap_line::y0#0 Constant (const byte) bitmap_line_ydxd::x#0 = bitmap_line::x0#0 Constant (const byte) bitmap_line_ydxd::y1#0 = bitmap_line::y1#0 Constant (const byte) bitmap_line_xdyd::x#1 = bitmap_line::x0#0 Constant (const byte) bitmap_line_xdyd::y#1 = bitmap_line::y0#0 Constant (const byte) bitmap_line_ydxd::y#1 = bitmap_line::y1#0 Constant (const byte) bitmap_line_ydxd::y1#1 = bitmap_line::y0#0 Constant (const byte) bitmap_line_xdyi::x#1 = bitmap_line::x0#0 Constant (const byte) bitmap_line_xdyi::y#1 = bitmap_line::y0#0 Constant (const byte) bitmap_line_ydxi::y#1 = bitmap_line::y0#0 Constant (const byte) bitmap_line_ydxi::x#1 = bitmap_line::x0#0 Constant (const byte) bitmap_line_ydxi::y1#1 = bitmap_line::y1#0 Successful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination [65] if((const byte) bitmap_line::y0#0<(const byte) bitmap_line::y1#0) goto bitmap_line::@20 if() condition always true - replacing block destination [68] if((const byte) bitmap_line::y0#0<(const byte) bitmap_line::y1#0) goto bitmap_line::@10 if() condition always true - replacing block destination [215] if(true) goto main::@1 Successful SSA optimization Pass2ConstantIfs Resolved ranged next value [13] bitmap_init::x#1 ← ++ bitmap_init::x#2 to ++ Resolved ranged comparison value [15] if(bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 to (number) 0 Resolved ranged next value [30] bitmap_init::y#1 ← ++ bitmap_init::y#2 to ++ Resolved ranged comparison value [32] if(bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 to (number) 0 Resolved ranged next value [43] bitmap_clear::x#1 ← ++ bitmap_clear::x#2 to ++ Resolved ranged comparison value [45] if(bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2 to (number) $c8 Resolved ranged next value [46] bitmap_clear::y#1 ← ++ bitmap_clear::y#4 to ++ Resolved ranged comparison value [48] if(bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1 to (number) $28 Simplifying expression containing zero bitmap_plot_xhi in [35] (word~) bitmap_clear::$3 ← *((const to_nomodify byte*) bitmap_plot_xhi + (byte) 0) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) 0) Simplifying expression containing zero bitmap_plot_xlo in [35] (word~) bitmap_clear::$3 ← *((const to_nomodify byte*) bitmap_plot_xhi) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) 0) Simplifying expression containing zero bitmap_line::x1#0 in [63] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (const byte) bitmap_line::x0#0 Simplifying expression containing zero bitmap_line::x1#0 in [66] (byte) bitmap_line::xd#2 ← (const byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 Simplifying expression containing zero bitmap_line::y1#0 in [69] (byte) bitmap_line::yd#1 ← (const byte) bitmap_line::y1#0 - (const byte) bitmap_line::y0#0 Simplifying expression containing zero bitmap_line::y1#0 in [72] (byte) bitmap_line::yd#2 ← (const byte) bitmap_line::y0#0 - (const byte) bitmap_line::y1#0 Simplifying expression containing zero bitmap_line::y1#0 in [99] (byte) bitmap_line::yd#11 ← (const byte) bitmap_line::y1#0 - (const byte) bitmap_line::y0#0 Simplifying expression containing zero bitmap_line::y1#0 in [102] (byte) bitmap_line::yd#10 ← (const byte) bitmap_line::y0#0 - (const byte) bitmap_line::y1#0 Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const byte) bitmap_line::xd#0 Eliminating unused constant (const byte) bitmap_line::yd#0 Successful SSA optimization PassNEliminateUnusedVars Eliminating variable (byte) bitmap_line::yd#2 from unused block bitmap_line::@4 Eliminating variable (byte) bitmap_line_xdyi::x#0 from unused block bitmap_line::@11 Eliminating variable (byte) bitmap_line_xdyi::xd#0 from unused block bitmap_line::@11 Eliminating variable (byte) bitmap_line_xdyi::yd#0 from unused block bitmap_line::@11 Eliminating variable (byte) bitmap_line_ydxi::x#0 from unused block bitmap_line::@5 Eliminating variable (byte) bitmap_line_ydxi::yd#0 from unused block bitmap_line::@5 Eliminating variable (byte) bitmap_line_ydxi::xd#0 from unused block bitmap_line::@5 Eliminating variable (byte) bitmap_line::yd#10 from unused block bitmap_line::@7 Eliminating variable (byte) bitmap_line_xdyd::x1#1 from unused block bitmap_line::@21 Eliminating variable (byte) bitmap_line_xdyd::xd#1 from unused block bitmap_line::@21 Eliminating variable (byte) bitmap_line_xdyd::yd#1 from unused block bitmap_line::@21 Eliminating variable (byte) bitmap_line_ydxd::x#1 from unused block bitmap_line::@8 Eliminating variable (byte) bitmap_line_ydxd::yd#1 from unused block bitmap_line::@8 Eliminating variable (byte) bitmap_line_ydxd::xd#1 from unused block bitmap_line::@8 Removing unused block bitmap_line::@4 Removing PHI-reference to removed block (bitmap_line::@11) in block bitmap_line_xdyi Removing PHI-reference to removed block (bitmap_line::@11) in block bitmap_line_xdyi Removing PHI-reference to removed block (bitmap_line::@11) in block bitmap_line_xdyi Removing PHI-reference to removed block (bitmap_line::@11) in block bitmap_line_xdyi Removing PHI-reference to removed block (bitmap_line::@11) in block bitmap_line_xdyi Removing unused block bitmap_line::@11 Removing unused block bitmap_line::@29 Removing PHI-reference to removed block (bitmap_line::@5) in block bitmap_line_ydxi Removing PHI-reference to removed block (bitmap_line::@5) in block bitmap_line_ydxi Removing PHI-reference to removed block (bitmap_line::@5) in block bitmap_line_ydxi Removing PHI-reference to removed block (bitmap_line::@5) in block bitmap_line_ydxi Removing PHI-reference to removed block (bitmap_line::@5) in block bitmap_line_ydxi Removing unused block bitmap_line::@5 Removing unused block bitmap_line::@30 Removing unused block bitmap_line::@7 Removing PHI-reference to removed block (bitmap_line::@21) in block bitmap_line_xdyd Removing PHI-reference to removed block (bitmap_line::@21) in block bitmap_line_xdyd Removing PHI-reference to removed block (bitmap_line::@21) in block bitmap_line_xdyd Removing PHI-reference to removed block (bitmap_line::@21) in block bitmap_line_xdyd Removing PHI-reference to removed block (bitmap_line::@21) in block bitmap_line_xdyd Removing unused block bitmap_line::@21 Removing unused block bitmap_line::@33 Removing PHI-reference to removed block (bitmap_line::@8) in block bitmap_line_ydxd Removing PHI-reference to removed block (bitmap_line::@8) in block bitmap_line_ydxd Removing PHI-reference to removed block (bitmap_line::@8) in block bitmap_line_ydxd Removing PHI-reference to removed block (bitmap_line::@8) in block bitmap_line_ydxd Removing PHI-reference to removed block (bitmap_line::@8) in block bitmap_line_ydxd Removing unused block bitmap_line::@8 Removing unused block bitmap_line::@34 Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Adding number conversion cast (unumber) 0 in if((byte) bitmap_init::x#1!=(number) 0) goto bitmap_init::@1 Adding number conversion cast (unumber) 0 in if((byte) bitmap_init::y#1!=(number) 0) goto bitmap_init::@5 Adding number conversion cast (unumber) $c8 in if((byte) bitmap_clear::x#1!=(number) $c8) goto bitmap_clear::@2 Adding number conversion cast (unumber) $28 in if((byte) bitmap_clear::y#1!=(number) $28) goto bitmap_clear::@1 Successful SSA optimization PassNAddNumberTypeConversions Inlining cast (byte*) bitmap_clear::bitmap#0 ← (byte*)(word~) bitmap_clear::$3 Successful SSA optimization Pass2InlineCast Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast $c8 Simplifying constant integer cast $28 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) $c8 Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions Alias bitmap_init::$10 = bitmap_init::$6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) bitmap_line_xdyi::yd#2 (byte) bitmap_line_xdyi::yd#1 Identical Phi Values (byte) bitmap_line_xdyi::x#6 (const byte) bitmap_line_xdyi::x#1 Identical Phi Values (byte) bitmap_line_xdyi::y#5 (const byte) bitmap_line_xdyi::y#1 Identical Phi Values (byte) bitmap_line_xdyi::xd#5 (byte) bitmap_line_xdyi::xd#1 Identical Phi Values (byte) bitmap_line_xdyi::x1#6 (byte) bitmap_line_xdyi::x1#1 Identical Phi Values (byte) bitmap_line_xdyd::yd#2 (byte) bitmap_line_xdyd::yd#0 Identical Phi Values (byte) bitmap_line_xdyd::x#6 (byte) bitmap_line_xdyd::x#0 Identical Phi Values (byte) bitmap_line_xdyd::y#5 (const byte) bitmap_line_xdyd::y#0 Identical Phi Values (byte) bitmap_line_xdyd::xd#5 (byte) bitmap_line_xdyd::xd#0 Identical Phi Values (byte) bitmap_line_xdyd::x1#6 (const byte) bitmap_line_xdyd::x1#0 Identical Phi Values (byte) bitmap_line_ydxi::xd#2 (byte) bitmap_line_ydxi::xd#1 Identical Phi Values (byte) bitmap_line_ydxi::x#5 (const byte) bitmap_line_ydxi::x#1 Identical Phi Values (byte) bitmap_line_ydxi::y#6 (const byte) bitmap_line_ydxi::y#1 Identical Phi Values (byte) bitmap_line_ydxi::yd#5 (byte) bitmap_line_ydxi::yd#1 Identical Phi Values (byte) bitmap_line_ydxi::y1#6 (const byte) bitmap_line_ydxi::y1#1 Identical Phi Values (byte) bitmap_line_ydxd::xd#2 (byte) bitmap_line_ydxd::xd#0 Identical Phi Values (byte) bitmap_line_ydxd::x#5 (const byte) bitmap_line_ydxd::x#0 Identical Phi Values (byte) bitmap_line_ydxd::y#7 (const byte) bitmap_line_ydxd::y#0 Identical Phi Values (byte) bitmap_line_ydxd::yd#5 (byte) bitmap_line_ydxd::yd#0 Identical Phi Values (byte) bitmap_line_ydxd::y1#6 (const byte) bitmap_line_ydxd::y1#0 Successful SSA optimization Pass2IdenticalPhiElimination Constant right-side identified [3] (byte~) bitmap_init::$1 ← > (const byte*) bitmap_init::bitmap#0 Constant right-side identified [90] (byte~) bitmap_line_xdyd::$6 ← (const byte) bitmap_line_xdyd::x1#0 + (byte) 1 Constant right-side identified [105] (byte~) bitmap_line_ydxi::$6 ← (const byte) bitmap_line_ydxi::y1#1 + (byte) 1 Constant right-side identified [120] (byte~) bitmap_line_ydxd::$6 ← (const byte) bitmap_line_ydxd::y1#0 + (byte) 1 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) bitmap_init::$1 = >bitmap_init::bitmap#0 Constant (const byte) bitmap_line::yd#1 = bitmap_line::y1#0 Constant (const byte) bitmap_line::yd#11 = bitmap_line::y1#0 Constant (const byte) bitmap_line_xdyd::$6 = bitmap_line_xdyd::x1#0+1 Constant (const byte) bitmap_line_ydxi::$6 = bitmap_line_ydxi::y1#1+1 Constant (const byte) bitmap_line_ydxd::$6 = bitmap_line_ydxd::y1#0+1 Successful SSA optimization Pass2ConstantIdentification Constant (const byte) bitmap_line_xdyd::yd#0 = bitmap_line::yd#1 Constant (const byte) bitmap_line_ydxd::yd#0 = bitmap_line::yd#1 Constant (const byte) bitmap_line_xdyi::yd#1 = bitmap_line::yd#11 Constant (const byte) bitmap_line_ydxi::yd#1 = bitmap_line::yd#11 Successful SSA optimization Pass2ConstantIdentification Simplifying expression containing zero 1 in Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const byte) bitmap_line_xdyi::y#0 Eliminating unused constant (const byte) bitmap_line_xdyi::x1#0 Eliminating unused constant (const byte) bitmap_line_xdyd::x1#0 Eliminating unused constant (const byte) bitmap_line_xdyd::x#1 Eliminating unused constant (const byte) bitmap_line_xdyd::y#1 Eliminating unused constant (const byte) bitmap_line_ydxi::y#0 Eliminating unused constant (const byte) bitmap_line_ydxi::y1#0 Eliminating unused constant (const byte) bitmap_line_ydxd::y#1 Eliminating unused constant (const byte) bitmap_line_ydxd::y1#1 Successful SSA optimization PassNEliminateUnusedVars Constant right-side identified [58] (byte) bitmap_line_xdyi::e#0 ← (const byte) bitmap_line_xdyi::yd#1 >> (byte) 1 Constant right-side identified [72] (byte) bitmap_line_xdyd::e#0 ← (const byte) bitmap_line_xdyd::yd#0 >> (byte) 1 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) bitmap_line_xdyi::e#0 = bitmap_line_xdyi::yd#1>>1 Constant (const byte) bitmap_line_xdyd::e#0 = bitmap_line_xdyd::yd#0>>1 Successful SSA optimization Pass2ConstantIdentification Inlining Noop Cast [24] (byte*) bitmap_clear::bitmap#0 ← (byte*)(word~) bitmap_clear::$3 keeping bitmap_clear::bitmap#0 Inlining Noop Cast [38] (byte*) bitmap_plot::plotter#0 ← (byte*)(word~) bitmap_plot::$0 keeping bitmap_plot::plotter#0 Successful SSA optimization Pass2NopCastInlining 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::yoffs#0 Inlining constant with var siblings (const byte) bitmap_init::y#0 Inlining constant with var siblings (const byte) bitmap_clear::y#0 Inlining constant with var siblings (const byte) bitmap_clear::x#0 Inlining constant with var siblings (const byte) bitmap_line_xdyi::x#1 Inlining constant with var siblings (const byte) bitmap_line_xdyi::y#1 Inlining constant with var siblings (const byte) bitmap_line_xdyi::e#0 Inlining constant with var siblings (const byte) bitmap_line_xdyd::y#0 Inlining constant with var siblings (const byte) bitmap_line_xdyd::e#0 Inlining constant with var siblings (const byte) bitmap_line_ydxi::y#1 Inlining constant with var siblings (const byte) bitmap_line_ydxi::x#1 Inlining constant with var siblings (const byte) bitmap_line_ydxd::y#0 Inlining constant with var siblings (const byte) bitmap_line_ydxd::x#0 Inlining constant with var siblings (const byte*) init_screen::c#0 Inlining constant with var siblings (const byte) next#0 Constant inlined bitmap_line_ydxi::x#1 = (const byte) bitmap_line::x0#0 Constant inlined bitmap_line::yd#1 = (const byte) bitmap_line::y1#0 Constant inlined bitmap_line_xdyd::e#0 = (const byte) bitmap_line::y1#0>>(byte) 1 Constant inlined bitmap_line_xdyd::$6 = (byte) 1 Constant inlined bitmap_line_ydxi::$6 = (const byte) bitmap_line::y1#0+(byte) 1 Constant inlined bitmap_init::bits#0 = (byte) $80 Constant inlined bitmap_init::bits#2 = (byte) $80 Constant inlined bitmap_line_xdyi::e#0 = (const byte) bitmap_line::y1#0>>(byte) 1 Constant inlined bitmap_line_xdyd::y#0 = (const byte) bitmap_line::y1#0 Constant inlined init_screen::c#0 = (const nomodify byte*) SCREEN Constant inlined next#0 = (byte) 0 Constant inlined bitmap_line_ydxi::y#1 = (const byte) bitmap_line::y0#0 Constant inlined bitmap_line_xdyi::y#1 = (const byte) bitmap_line::y0#0 Constant inlined bitmap_init::yoffs#0 = (byte*) 0 Constant inlined bitmap_line_ydxd::yd#0 = (const byte) bitmap_line::y1#0 Constant inlined bitmap_clear::x#0 = (byte) 0 Constant inlined bitmap_line_xdyi::yd#1 = (const byte) bitmap_line::y1#0 Constant inlined bitmap_clear::y#0 = (byte) 0 Constant inlined bitmap_line::yd#11 = (const byte) bitmap_line::y1#0 Constant inlined bitmap_line_xdyd::yd#0 = (const byte) bitmap_line::y1#0 Constant inlined bitmap_line_ydxi::yd#1 = (const byte) bitmap_line::y1#0 Constant inlined bitmap_line_ydxd::y#0 = (const byte) bitmap_line::y0#0 Constant inlined bitmap_line_ydxd::x#0 = (const byte) bitmap_line::x0#0 Constant inlined bitmap_line_ydxd::y1#0 = (const byte) bitmap_line::y1#0 Constant inlined bitmap_init::$1 = >(const nomodify byte*) BITMAP Constant inlined bitmap_line_ydxd::$6 = (const byte) bitmap_line::y1#0+(byte) 1 Constant inlined bitmap_init::y#0 = (byte) 0 Constant inlined bitmap_init::x#0 = (byte) 0 Constant inlined bitmap_line_ydxi::y1#1 = (const byte) bitmap_line::y1#0 Constant inlined bitmap_init::bitmap#0 = (const nomodify byte*) BITMAP Constant inlined bitmap_line_xdyi::x#1 = (const byte) bitmap_line::x0#0 Successful SSA optimization Pass2ConstantInlining 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_clear::@5(between bitmap_clear::@3 and bitmap_clear::@1) Added new block during phi lifting bitmap_clear::@6(between bitmap_clear::@2 and bitmap_clear::@2) Added new block during phi lifting bitmap_line_xdyi::@6(between bitmap_line_xdyi::@2 and bitmap_line_xdyi::@1) Added new block during phi lifting bitmap_line_xdyi::@7(between bitmap_line_xdyi::@5 and bitmap_line_xdyi::@2) Added new block during phi lifting bitmap_line_xdyd::@6(between bitmap_line_xdyd::@2 and bitmap_line_xdyd::@1) Added new block during phi lifting bitmap_line_xdyd::@7(between bitmap_line_xdyd::@5 and bitmap_line_xdyd::@2) Added new block during phi lifting bitmap_line_ydxi::@6(between bitmap_line_ydxi::@2 and bitmap_line_ydxi::@1) Added new block during phi lifting bitmap_line_ydxi::@7(between bitmap_line_ydxi::@5 and bitmap_line_ydxi::@2) Added new block during phi lifting bitmap_line_ydxd::@6(between bitmap_line_ydxd::@2 and bitmap_line_ydxd::@1) Added new block during phi lifting bitmap_line_ydxd::@7(between bitmap_line_ydxd::@5 and bitmap_line_ydxd::@2) Adding NOP phi() at start of @begin Adding NOP phi() at start of @12 Adding NOP phi() at start of @14 Adding NOP phi() at start of @15 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@3 Adding NOP phi() at start of main::@4 Adding NOP phi() at start of main::@5 Adding NOP phi() at start of bitmap_line::@32 Adding NOP phi() at start of bitmap_line::@31 Adding NOP phi() at start of bitmap_line::@36 Adding NOP phi() at start of bitmap_line::@35 Adding NOP phi() at start of bitmap_line_xdyi Adding NOP phi() at start of init_screen Adding NOP phi() at start of bitmap_init Adding NOP phi() at start of bitmap_init::@3 Adding NOP phi() at start of bitmap_init::@4 CALL GRAPH Calls in [] to main:3 Calls in [main] to bitmap_init:10 bitmap_clear:12 init_screen:14 bitmap_line:18 Calls in [bitmap_line] to bitmap_line_ydxd:25 bitmap_line_xdyd:30 bitmap_line_ydxi:35 bitmap_line_xdyi:39 Calls in [bitmap_line_xdyi] to bitmap_plot:47 Calls in [bitmap_line_ydxi] to bitmap_plot:78 Calls in [bitmap_line_xdyd] to bitmap_plot:100 Calls in [bitmap_line_ydxd] to bitmap_plot:123 Created 34 initial phi equivalence classes Coalesced [20] next#13 ← next#1 Coalesced [45] bitmap_plot::x#6 ← bitmap_plot::x#0 Coalesced [46] bitmap_plot::y#6 ← bitmap_plot::y#0 Coalesced [53] bitmap_line_xdyi::y#9 ← bitmap_line_xdyi::y#2 Coalesced [54] bitmap_line_xdyi::e#8 ← bitmap_line_xdyi::e#2 Coalesced [59] bitmap_line_xdyi::x#8 ← bitmap_line_xdyi::x#2 Coalesced [60] bitmap_line_xdyi::y#8 ← bitmap_line_xdyi::y#6 Coalesced [61] bitmap_line_xdyi::e#7 ← bitmap_line_xdyi::e#6 Coalesced (already) [62] bitmap_line_xdyi::y#10 ← bitmap_line_xdyi::y#3 Coalesced [63] bitmap_line_xdyi::e#9 ← bitmap_line_xdyi::e#1 Coalesced [72] bitmap_line_ydxi::e#7 ← bitmap_line_ydxi::e#0 Coalesced [76] bitmap_plot::x#8 ← bitmap_plot::x#2 Coalesced [77] bitmap_plot::y#8 ← bitmap_plot::y#2 Coalesced [84] bitmap_line_ydxi::x#9 ← bitmap_line_ydxi::x#2 Coalesced [85] bitmap_line_ydxi::e#9 ← bitmap_line_ydxi::e#2 Coalesced [89] bitmap_line_ydxi::x#8 ← bitmap_line_ydxi::x#6 Coalesced [90] bitmap_line_ydxi::y#8 ← bitmap_line_ydxi::y#2 Coalesced [91] bitmap_line_ydxi::e#8 ← bitmap_line_ydxi::e#6 Coalesced (already) [92] bitmap_line_ydxi::x#10 ← bitmap_line_ydxi::x#3 Coalesced [93] bitmap_line_ydxi::e#10 ← bitmap_line_ydxi::e#1 Coalesced [94] bitmap_line_xdyd::x#8 ← bitmap_line_xdyd::x#0 Coalesced [98] bitmap_plot::x#5 ← bitmap_plot::x#1 Coalesced [99] bitmap_plot::y#5 ← bitmap_plot::y#1 Coalesced [106] bitmap_line_xdyd::y#9 ← bitmap_line_xdyd::y#2 Coalesced [107] bitmap_line_xdyd::e#8 ← bitmap_line_xdyd::e#2 Coalesced [111] bitmap_line_xdyd::x#9 ← bitmap_line_xdyd::x#2 Coalesced [112] bitmap_line_xdyd::y#8 ← bitmap_line_xdyd::y#6 Coalesced [113] bitmap_line_xdyd::e#7 ← bitmap_line_xdyd::e#6 Coalesced (already) [114] bitmap_line_xdyd::y#10 ← bitmap_line_xdyd::y#3 Coalesced [115] bitmap_line_xdyd::e#9 ← bitmap_line_xdyd::e#1 Coalesced [117] bitmap_line_ydxd::e#7 ← bitmap_line_ydxd::e#0 Coalesced [121] bitmap_plot::x#7 ← bitmap_plot::x#3 Coalesced [122] bitmap_plot::y#7 ← bitmap_plot::y#3 Coalesced [129] bitmap_line_ydxd::x#9 ← bitmap_line_ydxd::x#2 Coalesced [130] bitmap_line_ydxd::e#9 ← bitmap_line_ydxd::e#2 Coalesced [134] bitmap_line_ydxd::x#8 ← bitmap_line_ydxd::x#6 Coalesced [135] bitmap_line_ydxd::y#9 ← bitmap_line_ydxd::y#3 Coalesced [136] bitmap_line_ydxd::e#8 ← bitmap_line_ydxd::e#6 Coalesced (already) [137] bitmap_line_ydxd::x#10 ← bitmap_line_ydxd::x#3 Coalesced [138] bitmap_line_ydxd::e#10 ← bitmap_line_ydxd::e#1 Coalesced [145] init_screen::c#4 ← init_screen::c#1 Coalesced [149] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3 Coalesced [158] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1 Coalesced [159] bitmap_clear::y#5 ← bitmap_clear::y#1 Coalesced (already) [160] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1 Coalesced [161] bitmap_clear::x#3 ← bitmap_clear::x#1 Coalesced [184] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 Coalesced [189] bitmap_init::y#5 ← bitmap_init::y#1 Coalesced [190] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 Coalesced (already) [191] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 Coalesced [192] bitmap_init::x#5 ← bitmap_init::x#1 Coalesced [193] bitmap_init::bits#5 ← bitmap_init::bits#4 Coalesced [194] bitmap_init::bits#6 ← bitmap_init::bits#1 Coalesced down to 23 phi equivalence classes Culled Empty Block (label) @12 Culled Empty Block (label) @15 Culled Empty Block (label) main::@5 Culled Empty Block (label) bitmap_line::@32 Culled Empty Block (label) bitmap_line::@31 Culled Empty Block (label) bitmap_line::@36 Culled Empty Block (label) bitmap_line::@35 Culled Empty Block (label) bitmap_line_xdyi::@6 Culled Empty Block (label) bitmap_line_xdyi::@7 Culled Empty Block (label) bitmap_line_ydxi::@6 Culled Empty Block (label) bitmap_line_ydxi::@7 Culled Empty Block (label) bitmap_line_xdyd::@6 Culled Empty Block (label) bitmap_line_xdyd::@7 Culled Empty Block (label) bitmap_line_ydxd::@6 Culled Empty Block (label) bitmap_line_ydxd::@7 Culled Empty Block (label) bitmap_clear::@5 Culled Empty Block (label) bitmap_clear::@6 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 @14 to @1 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::@3 to bitmap_line::@2 Renumbering block bitmap_line::@10 to bitmap_line::@3 Renumbering block bitmap_line::@15 to bitmap_line::@4 Renumbering block bitmap_line::@17 to bitmap_line::@5 Renumbering block bitmap_line::@20 to bitmap_line::@6 Renumbering block bitmap_line::@25 to bitmap_line::@7 Renumbering block bitmap_line::@27 to bitmap_line::@8 Renumbering block bitmap_line_xdyi::@5 to bitmap_line_xdyi::@4 Renumbering block bitmap_line_xdyd::@5 to bitmap_line_xdyd::@4 Renumbering block bitmap_line_ydxi::@5 to bitmap_line_ydxi::@4 Renumbering block bitmap_line_ydxd::@5 to bitmap_line_ydxd::@4 Renumbering block main::@3 to main::@2 Renumbering block main::@4 to main::@3 Renumbering block main::@6 to main::@4 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::@2 Adding NOP phi() at start of main::@3 Adding NOP phi() at start of bitmap_line_xdyi Adding NOP phi() at start of bitmap_line_xdyd Adding NOP phi() at start of init_screen Adding NOP phi() at start of bitmap_init Adding NOP phi() at start of bitmap_init::@6 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() to:@1 @1: scope:[] from @begin [1] phi() [2] call main to:@end @end: scope:[] from @1 [3] phi() (void()) main() main: scope:[main] from @1 [4] *((const nomodify byte*) BORDERCOL) ← (byte) 0 [5] *((const nomodify byte*) BGCOL) ← (byte) 0 [6] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 [7] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) BITMAP&(word) $3fff/(word) $400 [8] call bitmap_init to:main::@2 main::@2: scope:[main] from main [9] phi() [10] call bitmap_clear to:main::@3 main::@3: scope:[main] from main::@2 [11] phi() [12] call init_screen to:main::@1 main::@1: scope:[main] from main::@3 main::@4 [13] (byte) next#4 ← phi( main::@3/(byte) 0 main::@4/(byte) next#1 ) [14] (byte) bitmap_line::x1#0 ← (byte) next#4 [15] call bitmap_line to:main::@4 main::@4: scope:[main] from main::@1 [16] (byte) next#1 ← ++ (byte) next#4 to:main::@1 (void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) bitmap_line: scope:[bitmap_line] from main::@1 [17] if((const byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 to:bitmap_line::@2 bitmap_line::@2: scope:[bitmap_line] from bitmap_line [18] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x1#0 to:bitmap_line::@3 bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@2 [19] if((const byte) bitmap_line::y1#0<(byte) bitmap_line::xd#2) goto bitmap_line::@4 to:bitmap_line::@5 bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@3 [20] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#2 [21] call bitmap_line_ydxd to:bitmap_line::@return bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@4 bitmap_line::@5 bitmap_line::@7 bitmap_line::@8 [22] return to:@return bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@3 [23] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 [24] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#2 [25] call bitmap_line_xdyd to:bitmap_line::@return bitmap_line::@1: scope:[bitmap_line] from bitmap_line [26] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 to:bitmap_line::@6 bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@1 [27] if((const byte) bitmap_line::y1#0<(byte) bitmap_line::xd#1) goto bitmap_line::@7 to:bitmap_line::@8 bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@6 [28] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#1 [29] call bitmap_line_ydxi to:bitmap_line::@return bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@6 [30] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 [31] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#1 [32] call bitmap_line_xdyi to:bitmap_line::@return (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) bitmap_line_xdyi: scope:[bitmap_line_xdyi] from bitmap_line::@7 [33] phi() to:bitmap_line_xdyi::@1 bitmap_line_xdyi::@1: scope:[bitmap_line_xdyi] from bitmap_line_xdyi bitmap_line_xdyi::@2 [34] (byte) bitmap_line_xdyi::e#3 ← phi( bitmap_line_xdyi/(const byte) bitmap_line::y1#0>>(byte) 1 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::e#6 ) [34] (byte) bitmap_line_xdyi::y#3 ← phi( bitmap_line_xdyi/(const byte) bitmap_line::y0#0 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::y#6 ) [34] (byte) bitmap_line_xdyi::x#3 ← phi( bitmap_line_xdyi/(const byte) bitmap_line::x0#0 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::x#2 ) [35] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 [36] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 [37] call bitmap_plot to:bitmap_line_xdyi::@4 bitmap_line_xdyi::@4: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@1 [38] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 [39] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 [40] if((byte) bitmap_line_xdyi::xd#1>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 to:bitmap_line_xdyi::@3 bitmap_line_xdyi::@3: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@4 [41] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 [42] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 to:bitmap_line_xdyi::@2 bitmap_line_xdyi::@2: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@3 bitmap_line_xdyi::@4 [43] (byte) bitmap_line_xdyi::e#6 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::e#2 bitmap_line_xdyi::@4/(byte) bitmap_line_xdyi::e#1 ) [43] (byte) bitmap_line_xdyi::y#6 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::y#2 bitmap_line_xdyi::@4/(byte) bitmap_line_xdyi::y#3 ) [44] (byte~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#1 + (byte) 1 [45] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 to:bitmap_line_xdyi::@return bitmap_line_xdyi::@return: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@2 [46] return to:@return (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) bitmap_plot: scope:[bitmap_plot] from bitmap_line_xdyd::@1 bitmap_line_xdyi::@1 bitmap_line_ydxd::@1 bitmap_line_ydxi::@1 [47] (byte) bitmap_plot::y#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::y#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::y#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::y#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::y#2 ) [47] (byte) bitmap_plot::x#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::x#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::x#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::x#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::x#2 ) [48] (word) bitmap_plot::plotter_x#0 ← *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [49] (word) bitmap_plot::plotter_y#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [50] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [51] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [52] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 to:bitmap_plot::@return bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot [53] return to:@return (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) bitmap_line_ydxi: scope:[bitmap_line_ydxi] from bitmap_line::@8 [54] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 to:bitmap_line_ydxi::@1 bitmap_line_ydxi::@1: scope:[bitmap_line_ydxi] from bitmap_line_ydxi bitmap_line_ydxi::@2 [55] (byte) bitmap_line_ydxi::e#3 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::e#0 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::e#6 ) [55] (byte) bitmap_line_ydxi::y#3 ← phi( bitmap_line_ydxi/(const byte) bitmap_line::y0#0 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::y#2 ) [55] (byte) bitmap_line_ydxi::x#3 ← phi( bitmap_line_ydxi/(const byte) bitmap_line::x0#0 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::x#6 ) [56] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 [57] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 [58] call bitmap_plot to:bitmap_line_ydxi::@4 bitmap_line_ydxi::@4: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@1 [59] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 [60] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 [61] if((const byte) bitmap_line::y1#0>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 to:bitmap_line_ydxi::@3 bitmap_line_ydxi::@3: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@4 [62] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 [63] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 to:bitmap_line_ydxi::@2 bitmap_line_ydxi::@2: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@3 bitmap_line_ydxi::@4 [64] (byte) bitmap_line_ydxi::e#6 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::e#2 bitmap_line_ydxi::@4/(byte) bitmap_line_ydxi::e#1 ) [64] (byte) bitmap_line_ydxi::x#6 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::x#2 bitmap_line_ydxi::@4/(byte) bitmap_line_ydxi::x#3 ) [65] if((byte) bitmap_line_ydxi::y#2!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxi::@1 to:bitmap_line_ydxi::@return bitmap_line_ydxi::@return: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@2 [66] return to:@return (void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd) bitmap_line_xdyd: scope:[bitmap_line_xdyd] from bitmap_line::@4 [67] phi() to:bitmap_line_xdyd::@1 bitmap_line_xdyd::@1: scope:[bitmap_line_xdyd] from bitmap_line_xdyd bitmap_line_xdyd::@2 [68] (byte) bitmap_line_xdyd::e#3 ← phi( bitmap_line_xdyd/(const byte) bitmap_line::y1#0>>(byte) 1 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::e#6 ) [68] (byte) bitmap_line_xdyd::y#3 ← phi( bitmap_line_xdyd/(const byte) bitmap_line::y1#0 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::y#6 ) [68] (byte) bitmap_line_xdyd::x#3 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::x#0 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::x#2 ) [69] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 [70] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 [71] call bitmap_plot to:bitmap_line_xdyd::@4 bitmap_line_xdyd::@4: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@1 [72] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 [73] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 [74] if((byte) bitmap_line_xdyd::xd#0>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 to:bitmap_line_xdyd::@3 bitmap_line_xdyd::@3: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@4 [75] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 [76] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 to:bitmap_line_xdyd::@2 bitmap_line_xdyd::@2: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@3 bitmap_line_xdyd::@4 [77] (byte) bitmap_line_xdyd::e#6 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::e#2 bitmap_line_xdyd::@4/(byte) bitmap_line_xdyd::e#1 ) [77] (byte) bitmap_line_xdyd::y#6 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::y#2 bitmap_line_xdyd::@4/(byte) bitmap_line_xdyd::y#3 ) [78] if((byte) bitmap_line_xdyd::x#2!=(byte) 1) goto bitmap_line_xdyd::@1 to:bitmap_line_xdyd::@return bitmap_line_xdyd::@return: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@2 [79] return to:@return (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) bitmap_line_ydxd: scope:[bitmap_line_ydxd] from bitmap_line::@5 [80] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 to:bitmap_line_ydxd::@1 bitmap_line_ydxd::@1: scope:[bitmap_line_ydxd] from bitmap_line_ydxd bitmap_line_ydxd::@2 [81] (byte) bitmap_line_ydxd::e#3 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::e#0 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::e#6 ) [81] (byte) bitmap_line_ydxd::y#2 ← phi( bitmap_line_ydxd/(const byte) bitmap_line::y0#0 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::y#3 ) [81] (byte) bitmap_line_ydxd::x#3 ← phi( bitmap_line_ydxd/(const byte) bitmap_line::x0#0 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::x#6 ) [82] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 [83] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 [84] call bitmap_plot to:bitmap_line_ydxd::@4 bitmap_line_ydxd::@4: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@1 [85] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 [86] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 [87] if((const byte) bitmap_line::y1#0>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 to:bitmap_line_ydxd::@3 bitmap_line_ydxd::@3: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@4 [88] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 [89] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 to:bitmap_line_ydxd::@2 bitmap_line_ydxd::@2: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@3 bitmap_line_ydxd::@4 [90] (byte) bitmap_line_ydxd::e#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::e#2 bitmap_line_ydxd::@4/(byte) bitmap_line_ydxd::e#1 ) [90] (byte) bitmap_line_ydxd::x#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::x#2 bitmap_line_ydxd::@4/(byte) bitmap_line_ydxd::x#3 ) [91] if((byte) bitmap_line_ydxd::y#3!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxd::@1 to:bitmap_line_ydxd::@return bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2 [92] return to:@return (void()) init_screen() init_screen: scope:[init_screen] from main::@3 [93] phi() to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@2 [94] (byte*) init_screen::c#2 ← phi( init_screen/(const nomodify byte*) SCREEN init_screen::@2/(byte*) init_screen::c#1 ) [95] if((byte*) init_screen::c#2!=(const nomodify byte*) SCREEN+(word) $400) goto init_screen::@2 to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@1 [96] return to:@return init_screen::@2: scope:[init_screen] from init_screen::@1 [97] *((byte*) init_screen::c#2) ← (byte) $14 [98] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 to:init_screen::@1 (void()) bitmap_clear() bitmap_clear: scope:[bitmap_clear] from main::@2 [99] (word) bitmap_clear::bitmap#0 ← *((const to_nomodify byte*) bitmap_plot_xhi) w= *((const to_nomodify byte*) bitmap_plot_xlo) [100] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 to:bitmap_clear::@1 bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3 [101] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) [101] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) to:bitmap_clear::@2 bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2 [102] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) [102] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) [103] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [104] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 [105] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 [106] if((byte) bitmap_clear::x#1!=(byte) $c8) goto bitmap_clear::@2 to:bitmap_clear::@3 bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2 [107] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 [108] if((byte) bitmap_clear::y#1!=(byte) $28) goto bitmap_clear::@1 to:bitmap_clear::@return bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3 [109] return to:@return (void()) bitmap_init((byte*) bitmap_init::bitmap) bitmap_init: scope:[bitmap_init] from main [110] phi() to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 [111] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 ) [111] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) [112] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 [113] *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 [114] *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const nomodify byte*) BITMAP [115] *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [116] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 [117] 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 [118] phi() to:bitmap_init::@2 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6 [119] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 ) [120] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 [121] 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 [122] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(byte*) 0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 ) [122] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 ) [123] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 [124] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 [125] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$10 | (byte~) bitmap_init::$7 [126] *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 [127] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 [128] *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 [129] if((byte~) bitmap_init::$10!=(byte) 7) goto bitmap_init::@4 to:bitmap_init::@5 bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3 [130] (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 [131] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 ) [132] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 [133] 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 [134] return to:@return VARIABLE REGISTER WEIGHTS (void()) bitmap_clear() (byte*) bitmap_clear::bitmap (word) bitmap_clear::bitmap#0 101.0 (byte*) bitmap_clear::bitmap#1 4200.6 (byte*) bitmap_clear::bitmap#2 15502.0 (byte*) bitmap_clear::bitmap#3 2103.0 (byte*) bitmap_clear::bitmap#5 202.0 (byte) bitmap_clear::x (byte) bitmap_clear::x#1 15001.5 (byte) bitmap_clear::x#2 6667.333333333333 (byte) bitmap_clear::y (byte) bitmap_clear::y#1 1501.5 (byte) bitmap_clear::y#4 333.6666666666667 (void()) bitmap_init((byte*) bitmap_init::bitmap) (byte~) bitmap_init::$0 2002.0 (byte~) bitmap_init::$10 500.5 (byte~) bitmap_init::$7 2002.0 (byte~) bitmap_init::$8 2002.0 (byte~) bitmap_init::$9 2002.0 (byte*) bitmap_init::bitmap (byte) bitmap_init::bits (byte) bitmap_init::bits#1 1001.0 (byte) bitmap_init::bits#3 600.5999999999999 (byte) bitmap_init::bits#4 667.3333333333334 (byte) bitmap_init::x (byte) bitmap_init::x#1 1501.5 (byte) bitmap_init::x#2 667.3333333333333 (byte) bitmap_init::y (byte) bitmap_init::y#1 1501.5 (byte) bitmap_init::y#2 500.5 (byte*) bitmap_init::yoffs (byte*) bitmap_init::yoffs#1 2002.0 (byte*) bitmap_init::yoffs#2 625.625 (byte*) bitmap_init::yoffs#4 1001.0 (void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) (byte) bitmap_line::x0 (byte) bitmap_line::x1 (byte) bitmap_line::x1#0 851.0000000000001 (byte) bitmap_line::xd (byte) bitmap_line::xd#1 1334.6666666666667 (byte) bitmap_line::xd#2 1334.6666666666667 (byte) bitmap_line::y0 (byte) bitmap_line::y1 (byte) bitmap_line::yd (void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd) (byte) bitmap_line_xdyd::e (byte) bitmap_line_xdyd::e#1 1333334.6666666667 (byte) bitmap_line_xdyd::e#2 2000002.0 (byte) bitmap_line_xdyd::e#3 400000.4 (byte) bitmap_line_xdyd::e#6 1500001.5 (byte) bitmap_line_xdyd::x (byte) bitmap_line_xdyd::x#0 3667.333333333333 (byte) bitmap_line_xdyd::x#2 428571.85714285716 (byte) bitmap_line_xdyd::x#3 752501.0 (byte) bitmap_line_xdyd::x1 (byte) bitmap_line_xdyd::xd (byte) bitmap_line_xdyd::xd#0 153923.3076923077 (byte) bitmap_line_xdyd::y (byte) bitmap_line_xdyd::y#2 1000001.0 (byte) bitmap_line_xdyd::y#3 571429.1428571428 (byte) bitmap_line_xdyd::y#6 1500001.5 (byte) bitmap_line_xdyd::yd (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) (byte~) bitmap_line_xdyi::$6 2000002.0 (byte) bitmap_line_xdyi::e (byte) bitmap_line_xdyi::e#1 1333334.6666666667 (byte) bitmap_line_xdyi::e#2 2000002.0 (byte) bitmap_line_xdyi::e#3 400000.4 (byte) bitmap_line_xdyi::e#6 1000001.0 (byte) bitmap_line_xdyi::x (byte) bitmap_line_xdyi::x#2 375000.375 (byte) bitmap_line_xdyi::x#3 750000.75 (byte) bitmap_line_xdyi::x1 (byte) bitmap_line_xdyi::x1#1 66733.46666666667 (byte) bitmap_line_xdyi::xd (byte) bitmap_line_xdyi::xd#1 142928.7857142857 (byte) bitmap_line_xdyi::y (byte) bitmap_line_xdyi::y#2 1000001.0 (byte) bitmap_line_xdyi::y#3 571429.1428571428 (byte) bitmap_line_xdyi::y#6 1000001.0 (byte) bitmap_line_xdyi::yd (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) (byte) bitmap_line_ydxd::e (byte) bitmap_line_ydxd::e#0 20002.0 (byte) bitmap_line_ydxd::e#1 1333334.6666666667 (byte) bitmap_line_ydxd::e#2 2000002.0 (byte) bitmap_line_ydxd::e#3 402000.60000000003 (byte) bitmap_line_ydxd::e#6 1500001.5 (byte) bitmap_line_ydxd::x (byte) bitmap_line_ydxd::x#2 1000001.0 (byte) bitmap_line_ydxd::x#3 571429.1428571428 (byte) bitmap_line_ydxd::x#6 1500001.5 (byte) bitmap_line_ydxd::xd (byte) bitmap_line_ydxd::xd#0 77769.46153846153 (byte) bitmap_line_ydxd::y (byte) bitmap_line_ydxd::y#2 750000.75 (byte) bitmap_line_ydxd::y#3 428571.85714285716 (byte) bitmap_line_ydxd::y1 (byte) bitmap_line_ydxd::yd (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) (byte) bitmap_line_ydxi::e (byte) bitmap_line_ydxi::e#0 20002.0 (byte) bitmap_line_ydxi::e#1 1333334.6666666667 (byte) bitmap_line_ydxi::e#2 2000002.0 (byte) bitmap_line_ydxi::e#3 402000.60000000003 (byte) bitmap_line_ydxi::e#6 1500001.5 (byte) bitmap_line_ydxi::x (byte) bitmap_line_ydxi::x#2 1000001.0 (byte) bitmap_line_ydxi::x#3 571429.1428571428 (byte) bitmap_line_ydxi::x#6 1500001.5 (byte) bitmap_line_ydxi::xd (byte) bitmap_line_ydxi::xd#1 77769.46153846153 (byte) bitmap_line_ydxi::y (byte) bitmap_line_ydxi::y#2 428571.85714285716 (byte) bitmap_line_ydxi::y#3 750000.75 (byte) bitmap_line_ydxi::y1 (byte) bitmap_line_ydxi::yd (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) (byte~) bitmap_plot::$1 2.0000002E7 (byte*) bitmap_plot::plotter (word) bitmap_plot::plotter#0 5000000.5 (word) bitmap_plot::plotter_x (word) bitmap_plot::plotter_x#0 1.0000001E7 (word) bitmap_plot::plotter_y (word) bitmap_plot::plotter_y#0 2.0000002E7 (byte) bitmap_plot::x (byte) bitmap_plot::x#0 1000001.0 (byte) bitmap_plot::x#1 1000001.0 (byte) bitmap_plot::x#2 1000001.0 (byte) bitmap_plot::x#3 1000001.0 (byte) bitmap_plot::x#4 8500001.75 (byte) bitmap_plot::y (byte) bitmap_plot::y#0 2000002.0 (byte) bitmap_plot::y#1 2000002.0 (byte) bitmap_plot::y#2 2000002.0 (byte) bitmap_plot::y#3 2000002.0 (byte) bitmap_plot::y#4 1.2000003E7 (void()) init_screen() (byte*) init_screen::c (byte*) init_screen::c#1 2002.0 (byte*) init_screen::c#2 1334.6666666666667 (void()) main() (byte) next (byte) next#1 202.0 (byte) next#4 101.0 Initial phi equivalence classes [ next#4 next#1 ] [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] [ init_screen::c#2 init_screen::c#1 ] [ bitmap_clear::y#4 bitmap_clear::y#1 ] [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] [ bitmap_clear::x#2 bitmap_clear::x#1 ] [ bitmap_init::x#2 bitmap_init::x#1 ] [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] [ bitmap_init::y#2 bitmap_init::y#1 ] [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] Added variable bitmap_line::x1#0 to live range equivalence class [ bitmap_line::x1#0 ] Added variable bitmap_line::xd#2 to live range equivalence class [ bitmap_line::xd#2 ] Added variable bitmap_line_ydxd::xd#0 to live range equivalence class [ bitmap_line_ydxd::xd#0 ] Added variable bitmap_line_xdyd::xd#0 to live range equivalence class [ bitmap_line_xdyd::xd#0 ] Added variable bitmap_line::xd#1 to live range equivalence class [ bitmap_line::xd#1 ] Added variable bitmap_line_ydxi::xd#1 to live range equivalence class [ bitmap_line_ydxi::xd#1 ] Added variable bitmap_line_xdyi::x1#1 to live range equivalence class [ bitmap_line_xdyi::x1#1 ] Added variable bitmap_line_xdyi::xd#1 to live range equivalence class [ bitmap_line_xdyi::xd#1 ] Added variable bitmap_line_xdyi::$6 to live range equivalence class [ bitmap_line_xdyi::$6 ] Added variable bitmap_plot::plotter_x#0 to live range equivalence class [ bitmap_plot::plotter_x#0 ] Added variable bitmap_plot::plotter_y#0 to live range equivalence class [ bitmap_plot::plotter_y#0 ] Added variable bitmap_plot::plotter#0 to live range equivalence class [ bitmap_plot::plotter#0 ] Added variable bitmap_plot::$1 to live range equivalence class [ bitmap_plot::$1 ] Added variable bitmap_clear::bitmap#0 to live range equivalence class [ bitmap_clear::bitmap#0 ] Added variable bitmap_init::$0 to live range equivalence class [ bitmap_init::$0 ] Added variable bitmap_init::$10 to live range equivalence class [ bitmap_init::$10 ] Added variable bitmap_init::$7 to live range equivalence class [ bitmap_init::$7 ] Added variable bitmap_init::$8 to live range equivalence class [ bitmap_init::$8 ] Added variable bitmap_init::$9 to live range equivalence class [ bitmap_init::$9 ] Complete equivalence classes [ next#4 next#1 ] [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] [ init_screen::c#2 init_screen::c#1 ] [ bitmap_clear::y#4 bitmap_clear::y#1 ] [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] [ bitmap_clear::x#2 bitmap_clear::x#1 ] [ bitmap_init::x#2 bitmap_init::x#1 ] [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] [ bitmap_init::y#2 bitmap_init::y#1 ] [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] [ bitmap_line::x1#0 ] [ bitmap_line::xd#2 ] [ bitmap_line_ydxd::xd#0 ] [ bitmap_line_xdyd::xd#0 ] [ bitmap_line::xd#1 ] [ bitmap_line_ydxi::xd#1 ] [ bitmap_line_xdyi::x1#1 ] [ bitmap_line_xdyi::xd#1 ] [ bitmap_line_xdyi::$6 ] [ bitmap_plot::plotter_x#0 ] [ bitmap_plot::plotter_y#0 ] [ bitmap_plot::plotter#0 ] [ bitmap_plot::$1 ] [ bitmap_clear::bitmap#0 ] [ bitmap_init::$0 ] [ bitmap_init::$10 ] [ bitmap_init::$7 ] [ bitmap_init::$8 ] [ bitmap_init::$9 ] Allocated zp[1]:2 [ next#4 next#1 ] Allocated zp[1]:3 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] Allocated zp[1]:4 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Allocated zp[1]:5 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Allocated zp[1]:6 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] Allocated zp[1]:7 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] Allocated zp[1]:8 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] Allocated zp[1]:9 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] Allocated zp[1]:10 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] Allocated zp[1]:11 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] Allocated zp[1]:12 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] Allocated zp[1]:13 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] Allocated zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Allocated zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] Allocated zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] Allocated zp[2]:17 [ init_screen::c#2 init_screen::c#1 ] Allocated zp[1]:19 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Allocated zp[2]:20 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] Allocated zp[1]:22 [ bitmap_clear::x#2 bitmap_clear::x#1 ] Allocated zp[1]:23 [ bitmap_init::x#2 bitmap_init::x#1 ] Allocated zp[1]:24 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] Allocated zp[1]:25 [ bitmap_init::y#2 bitmap_init::y#1 ] Allocated zp[2]:26 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] Allocated zp[1]:28 [ bitmap_line::x1#0 ] Allocated zp[1]:29 [ bitmap_line::xd#2 ] Allocated zp[1]:30 [ bitmap_line_ydxd::xd#0 ] Allocated zp[1]:31 [ bitmap_line_xdyd::xd#0 ] Allocated zp[1]:32 [ bitmap_line::xd#1 ] Allocated zp[1]:33 [ bitmap_line_ydxi::xd#1 ] Allocated zp[1]:34 [ bitmap_line_xdyi::x1#1 ] Allocated zp[1]:35 [ bitmap_line_xdyi::xd#1 ] Allocated zp[1]:36 [ bitmap_line_xdyi::$6 ] Allocated zp[2]:37 [ bitmap_plot::plotter_x#0 ] Allocated zp[2]:39 [ bitmap_plot::plotter_y#0 ] Allocated zp[2]:41 [ bitmap_plot::plotter#0 ] Allocated zp[1]:43 [ bitmap_plot::$1 ] Allocated zp[2]:44 [ bitmap_clear::bitmap#0 ] Allocated zp[1]:46 [ bitmap_init::$0 ] Allocated zp[1]:47 [ bitmap_init::$10 ] Allocated zp[1]:48 [ bitmap_init::$7 ] Allocated zp[1]:49 [ bitmap_init::$8 ] Allocated zp[1]:50 [ bitmap_init::$9 ] INITIAL ASM Target platform is c64basic / MOS6502X // File Comments // Illustrates problem with bitmap-draw.kc line() // Reported by Janne Johansson // Upstart .pc = $801 "Basic" :BasicUpstart(__bbegin) .pc = $80d "Program" // Global Constants & labels .label BORDERCOL = $d020 .label BGCOL = $d021 .label D011 = $d011 .const VIC_BMM = $20 .const VIC_DEN = $10 .const VIC_RSEL = 8 .label VIC_MEMORY = $d018 .label SCREEN = $400 .label BITMAP = $2000 .label next = 2 // @begin __bbegin: // [1] phi from @begin to @1 [phi:@begin->@1] __b1_from___bbegin: jmp __b1 // @1 __b1: // [2] call main jsr main // [3] phi from @1 to @end [phi:@1->@end] __bend_from___b1: jmp __bend // @end __bend: // main main: { // [4] *((const nomodify byte*) BORDERCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL // [5] *((const nomodify byte*) BGCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL // [6] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta D011 // [7] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) BITMAP&(word) $3fff/(word) $400 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400 sta VIC_MEMORY // [8] call bitmap_init // [110] phi from main to bitmap_init [phi:main->bitmap_init] bitmap_init_from_main: jsr bitmap_init // [9] phi from main to main::@2 [phi:main->main::@2] __b2_from_main: jmp __b2 // main::@2 __b2: // [10] call bitmap_clear jsr bitmap_clear // [11] phi from main::@2 to main::@3 [phi:main::@2->main::@3] __b3_from___b2: jmp __b3 // main::@3 __b3: // [12] call init_screen // [93] phi from main::@3 to init_screen [phi:main::@3->init_screen] init_screen_from___b3: jsr init_screen // [13] phi from main::@3 to main::@1 [phi:main::@3->main::@1] __b1_from___b3: // [13] phi (byte) next#4 = (byte) 0 [phi:main::@3->main::@1#0] -- vbuz1=vbuc1 lda #0 sta.z next jmp __b1 // main::@1 __b1: // [14] (byte) bitmap_line::x1#0 ← (byte) next#4 -- vbuz1=vbuz2 lda.z next sta.z bitmap_line.x1 // [15] call bitmap_line jsr bitmap_line jmp __b4 // main::@4 __b4: // [16] (byte) next#1 ← ++ (byte) next#4 -- vbuz1=_inc_vbuz1 inc.z next // [13] phi from main::@4 to main::@1 [phi:main::@4->main::@1] __b1_from___b4: // [13] phi (byte) next#4 = (byte) next#1 [phi:main::@4->main::@1#0] -- register_copy jmp __b1 } // bitmap_line // Draw a line on the bitmap // bitmap_line(byte zp($1c) x1) bitmap_line: { .label x0 = 0 .label y0 = 0 .label y1 = $64 .label xd = $20 .label xd_1 = $1d .label x1 = $1c // [17] if((const byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuc1_lt_vbuz1_then_la1 lda #x0 cmp.z x1 bcc __b1 jmp __b2 // bitmap_line::@2 __b2: // [18] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda.z x1 sta.z xd_1 jmp __b3 // bitmap_line::@3 __b3: // [19] if((const byte) bitmap_line::y1#0<(byte) bitmap_line::xd#2) goto bitmap_line::@4 -- vbuc1_lt_vbuz1_then_la1 lda #y1 cmp.z xd_1 bcc __b4 jmp __b5 // bitmap_line::@5 __b5: // [20] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#2 -- vbuz1=vbuz2 lda.z xd_1 sta.z bitmap_line_ydxd.xd // [21] call bitmap_line_ydxd jsr bitmap_line_ydxd jmp __breturn // bitmap_line::@return __breturn: // [22] return rts // bitmap_line::@4 __b4: // [23] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda.z x1 sta.z bitmap_line_xdyd.x // [24] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#2 -- vbuz1=vbuz2 lda.z xd_1 sta.z bitmap_line_xdyd.xd // [25] call bitmap_line_xdyd // [67] phi from bitmap_line::@4 to bitmap_line_xdyd [phi:bitmap_line::@4->bitmap_line_xdyd] bitmap_line_xdyd_from___b4: jsr bitmap_line_xdyd jmp __breturn // bitmap_line::@1 __b1: // [26] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda.z x1 sta.z xd jmp __b6 // bitmap_line::@6 __b6: // [27] if((const byte) bitmap_line::y1#0<(byte) bitmap_line::xd#1) goto bitmap_line::@7 -- vbuc1_lt_vbuz1_then_la1 lda #y1 cmp.z xd bcc __b7 jmp __b8 // bitmap_line::@8 __b8: // [28] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda.z xd sta.z bitmap_line_ydxi.xd // [29] call bitmap_line_ydxi jsr bitmap_line_ydxi jmp __breturn // bitmap_line::@7 __b7: // [30] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda.z x1 sta.z bitmap_line_xdyi.x1 // [31] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda.z xd sta.z bitmap_line_xdyi.xd // [32] call bitmap_line_xdyi // [33] phi from bitmap_line::@7 to bitmap_line_xdyi [phi:bitmap_line::@7->bitmap_line_xdyi] bitmap_line_xdyi_from___b7: jsr bitmap_line_xdyi jmp __breturn } // bitmap_line_xdyi // bitmap_line_xdyi(byte zp(3) x, byte zp(4) y, byte zp($22) x1, byte zp($23) xd) bitmap_line_xdyi: { .label __6 = $24 .label x1 = $22 .label xd = $23 .label x = 3 .label e = 5 .label y = 4 // [34] phi from bitmap_line_xdyi to bitmap_line_xdyi::@1 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1] __b1_from_bitmap_line_xdyi: // [34] phi (byte) bitmap_line_xdyi::e#3 = (const byte) bitmap_line::y1#0>>(byte) 1 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1#0] -- vbuz1=vbuc1 lda #bitmap_line.y1>>1 sta.z e // [34] phi (byte) bitmap_line_xdyi::y#3 = (const byte) bitmap_line::y0#0 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y0 sta.z y // [34] phi (byte) bitmap_line_xdyi::x#3 = (const byte) bitmap_line::x0#0 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1#2] -- vbuz1=vbuc1 lda #bitmap_line.x0 sta.z x jmp __b1 // [34] phi from bitmap_line_xdyi::@2 to bitmap_line_xdyi::@1 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1] __b1_from___b2: // [34] phi (byte) bitmap_line_xdyi::e#3 = (byte) bitmap_line_xdyi::e#6 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#0] -- register_copy // [34] phi (byte) bitmap_line_xdyi::y#3 = (byte) bitmap_line_xdyi::y#6 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#1] -- register_copy // [34] phi (byte) bitmap_line_xdyi::x#3 = (byte) bitmap_line_xdyi::x#2 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#2] -- register_copy jmp __b1 // bitmap_line_xdyi::@1 __b1: // [35] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuz1=vbuz2 lda.z x sta.z bitmap_plot.x // [36] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuz1=vbuz2 lda.z y sta.z bitmap_plot.y // [37] call bitmap_plot // [47] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] bitmap_plot_from___b1: // [47] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy // [47] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b4 // bitmap_line_xdyi::@4 __b4: // [38] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 inc.z x // [39] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_plus_vbuc1 lax.z e axs #-[bitmap_line.y1] stx.z e // [40] if((byte) bitmap_line_xdyi::xd#1>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -- vbuz1_ge_vbuz2_then_la1 lda.z xd cmp.z e bcs __b2_from___b4 jmp __b3 // bitmap_line_xdyi::@3 __b3: // [41] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 inc.z y // [42] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 -- vbuz1=vbuz1_minus_vbuz2 lda.z e sec sbc.z xd sta.z e // [43] phi from bitmap_line_xdyi::@3 bitmap_line_xdyi::@4 to bitmap_line_xdyi::@2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@4->bitmap_line_xdyi::@2] __b2_from___b3: __b2_from___b4: // [43] phi (byte) bitmap_line_xdyi::e#6 = (byte) bitmap_line_xdyi::e#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@4->bitmap_line_xdyi::@2#0] -- register_copy // [43] phi (byte) bitmap_line_xdyi::y#6 = (byte) bitmap_line_xdyi::y#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@4->bitmap_line_xdyi::@2#1] -- register_copy jmp __b2 // bitmap_line_xdyi::@2 __b2: // [44] (byte~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#1 + (byte) 1 -- vbuz1=vbuz2_plus_1 ldy.z x1 iny sty.z __6 // [45] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuz2_then_la1 lda.z x cmp.z __6 bne __b1_from___b2 jmp __breturn // bitmap_line_xdyi::@return __breturn: // [46] return rts } // bitmap_plot // bitmap_plot(byte zp(6) x, byte zp(7) y) bitmap_plot: { .label __1 = $2b .label plotter_x = $25 .label plotter_y = $27 .label plotter = $29 .label x = 6 .label y = 7 // [48] (word) bitmap_plot::plotter_x#0 ← *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 ldy.z x lda bitmap_plot_xhi,y sta.z plotter_x+1 lda bitmap_plot_xlo,y sta.z plotter_x // [49] (word) bitmap_plot::plotter_y#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 ldy.z y lda bitmap_plot_yhi,y sta.z plotter_y+1 lda bitmap_plot_ylo,y sta.z plotter_y // [50] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz2_plus_vwuz3 lda.z plotter_x clc adc.z plotter_y sta.z plotter lda.z plotter_x+1 adc.z plotter_y+1 sta.z plotter+1 // [51] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) -- vbuz1=_deref_pbuz2_bor_pbuc1_derefidx_vbuz3 ldy #0 lda (plotter),y ldy.z x ora bitmap_plot_bit,y sta.z __1 // [52] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuz2 lda.z __1 ldy #0 sta (plotter),y jmp __breturn // bitmap_plot::@return __breturn: // [53] return rts } // bitmap_line_ydxi // bitmap_line_ydxi(byte zp(9) y, byte zp(8) x, byte zp($21) xd) bitmap_line_ydxi: { .label xd = $21 .label e = $a .label y = 9 .label x = 8 // [54] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z xd lsr sta.z e // [55] phi from bitmap_line_ydxi to bitmap_line_ydxi::@1 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1] __b1_from_bitmap_line_ydxi: // [55] phi (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#0 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1#0] -- register_copy // [55] phi (byte) bitmap_line_ydxi::y#3 = (const byte) bitmap_line::y0#0 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y0 sta.z y // [55] phi (byte) bitmap_line_ydxi::x#3 = (const byte) bitmap_line::x0#0 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1#2] -- vbuz1=vbuc1 lda #bitmap_line.x0 sta.z x jmp __b1 // [55] phi from bitmap_line_ydxi::@2 to bitmap_line_ydxi::@1 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1] __b1_from___b2: // [55] phi (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#6 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#0] -- register_copy // [55] phi (byte) bitmap_line_ydxi::y#3 = (byte) bitmap_line_ydxi::y#2 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#1] -- register_copy // [55] phi (byte) bitmap_line_ydxi::x#3 = (byte) bitmap_line_ydxi::x#6 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#2] -- register_copy jmp __b1 // bitmap_line_ydxi::@1 __b1: // [56] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 -- vbuz1=vbuz2 lda.z x sta.z bitmap_plot.x // [57] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuz1=vbuz2 lda.z y sta.z bitmap_plot.y // [58] call bitmap_plot // [47] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] bitmap_plot_from___b1: // [47] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy // [47] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b4 // bitmap_line_ydxi::@4 __b4: // [59] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 inc.z y // [60] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 -- vbuz1=vbuz1_plus_vbuz2 lda.z e clc adc.z xd sta.z e // [61] if((const byte) bitmap_line::y1#0>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -- vbuc1_ge_vbuz1_then_la1 lda #bitmap_line.y1 cmp.z e bcs __b2_from___b4 jmp __b3 // bitmap_line_ydxi::@3 __b3: // [62] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuz1=_inc_vbuz1 inc.z x // [63] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_minus_vbuc1 lax.z e axs #bitmap_line.y1 stx.z e // [64] phi from bitmap_line_ydxi::@3 bitmap_line_ydxi::@4 to bitmap_line_ydxi::@2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@4->bitmap_line_ydxi::@2] __b2_from___b3: __b2_from___b4: // [64] phi (byte) bitmap_line_ydxi::e#6 = (byte) bitmap_line_ydxi::e#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@4->bitmap_line_ydxi::@2#0] -- register_copy // [64] phi (byte) bitmap_line_ydxi::x#6 = (byte) bitmap_line_ydxi::x#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@4->bitmap_line_ydxi::@2#1] -- register_copy jmp __b2 // bitmap_line_ydxi::@2 __b2: // [65] if((byte) bitmap_line_ydxi::y#2!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuc1_then_la1 lda #bitmap_line.y1+1 cmp.z y bne __b1_from___b2 jmp __breturn // bitmap_line_ydxi::@return __breturn: // [66] return rts } // bitmap_line_xdyd // bitmap_line_xdyd(byte zp($b) x, byte zp($c) y, byte zp($1f) xd) bitmap_line_xdyd: { .label x = $b .label xd = $1f .label e = $d .label y = $c // [68] phi from bitmap_line_xdyd to bitmap_line_xdyd::@1 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1] __b1_from_bitmap_line_xdyd: // [68] phi (byte) bitmap_line_xdyd::e#3 = (const byte) bitmap_line::y1#0>>(byte) 1 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1#0] -- vbuz1=vbuc1 lda #bitmap_line.y1>>1 sta.z e // [68] phi (byte) bitmap_line_xdyd::y#3 = (const byte) bitmap_line::y1#0 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y1 sta.z y // [68] phi (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1#2] -- register_copy jmp __b1 // [68] phi from bitmap_line_xdyd::@2 to bitmap_line_xdyd::@1 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1] __b1_from___b2: // [68] phi (byte) bitmap_line_xdyd::e#3 = (byte) bitmap_line_xdyd::e#6 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#0] -- register_copy // [68] phi (byte) bitmap_line_xdyd::y#3 = (byte) bitmap_line_xdyd::y#6 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#1] -- register_copy // [68] phi (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#2 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#2] -- register_copy jmp __b1 // bitmap_line_xdyd::@1 __b1: // [69] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuz1=vbuz2 lda.z x sta.z bitmap_plot.x // [70] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuz1=vbuz2 lda.z y sta.z bitmap_plot.y // [71] call bitmap_plot // [47] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] bitmap_plot_from___b1: // [47] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy // [47] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b4 // bitmap_line_xdyd::@4 __b4: // [72] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 inc.z x // [73] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_plus_vbuc1 lax.z e axs #-[bitmap_line.y1] stx.z e // [74] if((byte) bitmap_line_xdyd::xd#0>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -- vbuz1_ge_vbuz2_then_la1 lda.z xd cmp.z e bcs __b2_from___b4 jmp __b3 // bitmap_line_xdyd::@3 __b3: // [75] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 dec.z y // [76] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 -- vbuz1=vbuz1_minus_vbuz2 lda.z e sec sbc.z xd sta.z e // [77] phi from bitmap_line_xdyd::@3 bitmap_line_xdyd::@4 to bitmap_line_xdyd::@2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@4->bitmap_line_xdyd::@2] __b2_from___b3: __b2_from___b4: // [77] phi (byte) bitmap_line_xdyd::e#6 = (byte) bitmap_line_xdyd::e#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@4->bitmap_line_xdyd::@2#0] -- register_copy // [77] phi (byte) bitmap_line_xdyd::y#6 = (byte) bitmap_line_xdyd::y#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@4->bitmap_line_xdyd::@2#1] -- register_copy jmp __b2 // bitmap_line_xdyd::@2 __b2: // [78] if((byte) bitmap_line_xdyd::x#2!=(byte) 1) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuc1_then_la1 lda #1 cmp.z x bne __b1_from___b2 jmp __breturn // bitmap_line_xdyd::@return __breturn: // [79] return rts } // bitmap_line_ydxd // bitmap_line_ydxd(byte zp($f) y, byte zp($e) x, byte zp($1e) xd) bitmap_line_ydxd: { .label xd = $1e .label e = $10 .label y = $f .label x = $e // [80] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z xd lsr sta.z e // [81] phi from bitmap_line_ydxd to bitmap_line_ydxd::@1 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1] __b1_from_bitmap_line_ydxd: // [81] phi (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#0 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1#0] -- register_copy // [81] phi (byte) bitmap_line_ydxd::y#2 = (const byte) bitmap_line::y0#0 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y0 sta.z y // [81] phi (byte) bitmap_line_ydxd::x#3 = (const byte) bitmap_line::x0#0 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1#2] -- vbuz1=vbuc1 lda #bitmap_line.x0 sta.z x jmp __b1 // [81] phi from bitmap_line_ydxd::@2 to bitmap_line_ydxd::@1 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1] __b1_from___b2: // [81] phi (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#6 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#0] -- register_copy // [81] phi (byte) bitmap_line_ydxd::y#2 = (byte) bitmap_line_ydxd::y#3 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#1] -- register_copy // [81] phi (byte) bitmap_line_ydxd::x#3 = (byte) bitmap_line_ydxd::x#6 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#2] -- register_copy jmp __b1 // bitmap_line_ydxd::@1 __b1: // [82] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 -- vbuz1=vbuz2 lda.z x sta.z bitmap_plot.x // [83] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuz1=vbuz2 lda.z y sta.z bitmap_plot.y // [84] call bitmap_plot // [47] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] bitmap_plot_from___b1: // [47] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy // [47] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b4 // bitmap_line_ydxd::@4 __b4: // [85] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 inc.z y // [86] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 -- vbuz1=vbuz1_plus_vbuz2 lda.z e clc adc.z xd sta.z e // [87] if((const byte) bitmap_line::y1#0>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -- vbuc1_ge_vbuz1_then_la1 lda #bitmap_line.y1 cmp.z e bcs __b2_from___b4 jmp __b3 // bitmap_line_ydxd::@3 __b3: // [88] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuz1=_dec_vbuz1 dec.z x // [89] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_minus_vbuc1 lax.z e axs #bitmap_line.y1 stx.z e // [90] phi from bitmap_line_ydxd::@3 bitmap_line_ydxd::@4 to bitmap_line_ydxd::@2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@4->bitmap_line_ydxd::@2] __b2_from___b3: __b2_from___b4: // [90] phi (byte) bitmap_line_ydxd::e#6 = (byte) bitmap_line_ydxd::e#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@4->bitmap_line_ydxd::@2#0] -- register_copy // [90] phi (byte) bitmap_line_ydxd::x#6 = (byte) bitmap_line_ydxd::x#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@4->bitmap_line_ydxd::@2#1] -- register_copy jmp __b2 // bitmap_line_ydxd::@2 __b2: // [91] if((byte) bitmap_line_ydxd::y#3!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuc1_then_la1 lda #bitmap_line.y1+1 cmp.z y bne __b1_from___b2 jmp __breturn // bitmap_line_ydxd::@return __breturn: // [92] return rts } // init_screen init_screen: { .label c = $11 // [94] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] __b1_from_init_screen: // [94] phi (byte*) init_screen::c#2 = (const nomodify byte*) SCREEN [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta.z c+1 jmp __b1 // init_screen::@1 __b1: // [95] if((byte*) init_screen::c#2!=(const nomodify byte*) SCREEN+(word) $400) goto init_screen::@2 -- pbuz1_neq_pbuc1_then_la1 lda.z c+1 cmp #>SCREEN+$400 bne __b2 lda.z c cmp #init_screen::@1] __b1_from___b2: // [94] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@1#0] -- register_copy jmp __b1 } // bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = $2c .label bitmap_1 = $14 .label x = $16 .label y = $13 // [99] (word) bitmap_clear::bitmap#0 ← *((const to_nomodify byte*) bitmap_plot_xhi) w= *((const to_nomodify byte*) bitmap_plot_xlo) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_xlo sta.z bitmap lda bitmap_plot_xhi sta.z bitmap+1 // [100] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 -- pbuz1=pbuz2 lda.z bitmap sta.z bitmap_1 lda.z bitmap+1 sta.z bitmap_1+1 // [101] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] __b1_from_bitmap_clear: // [101] phi (byte) bitmap_clear::y#4 = (byte) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta.z y // [101] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp __b1 // [101] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] __b1_from___b3: // [101] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy // [101] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp __b1 // bitmap_clear::@1 __b1: // [102] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] __b2_from___b1: // [102] phi (byte) bitmap_clear::x#2 = (byte) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuz1=vbuc1 lda #0 sta.z x // [102] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp __b2 // [102] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] __b2_from___b2: // [102] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy // [102] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp __b2 // bitmap_clear::@2 __b2: // [103] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (bitmap_1),y // [104] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc.z bitmap_1 bne !+ inc.z bitmap_1+1 !: // [105] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 inc.z x // [106] if((byte) bitmap_clear::x#1!=(byte) $c8) goto bitmap_clear::@2 -- vbuz1_neq_vbuc1_then_la1 lda #$c8 cmp.z x bne __b2_from___b2 jmp __b3 // bitmap_clear::@3 __b3: // [107] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc.z y // [108] if((byte) bitmap_clear::y#1!=(byte) $28) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp.z y bne __b1_from___b3 jmp __breturn // bitmap_clear::@return __breturn: // [109] return rts } // bitmap_init // Initialize the bitmap plotter tables for a specific bitmap bitmap_init: { .label __0 = $2e .label __7 = $30 .label __8 = $31 .label __9 = $32 .label __10 = $2f .label bits = $18 .label x = $17 .label y = $19 .label yoffs = $1a // [111] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] __b1_from_bitmap_init: // [111] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 lda #$80 sta.z bits // [111] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 lda #0 sta.z x jmp __b1 // [111] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] __b1_from___b2: // [111] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy // [111] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp __b1 // bitmap_init::@1 __b1: // [112] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 -- vbuz1=vbuz2_band_vbuc1 lda #$f8 and.z x sta.z __0 // [113] *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuz1=vbuz2 lda.z __0 ldy.z x sta bitmap_plot_xlo,y // [114] *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const nomodify byte*) BITMAP -- pbuc1_derefidx_vbuz1=vbuc2 lda #>BITMAP ldy.z x sta bitmap_plot_xhi,y // [115] *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 lda.z bits ldy.z x sta bitmap_plot_bit,y // [116] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 lsr.z bits // [117] 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 // [119] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] __b2_from___b1: // [119] 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 // [118] 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: // [119] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] __b2_from___b6: // [119] 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: // [120] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 inc.z x // [121] 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 // [122] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] __b3_from___b2: // [122] phi (byte*) bitmap_init::yoffs#2 = (byte*) 0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #<0 sta.z yoffs lda #>0 sta.z yoffs+1 // [122] 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 // [122] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] __b3_from___b4: // [122] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy // [122] 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: // [123] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and.z y sta.z __10 // [124] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 lda.z yoffs sta.z __7 // [125] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$10 | (byte~) bitmap_init::$7 -- vbuz1=vbuz2_bor_vbuz3 lda.z __10 ora.z __7 sta.z __8 // [126] *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 -- pbuc1_derefidx_vbuz1=vbuz2 lda.z __8 ldy.z y sta bitmap_plot_ylo,y // [127] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 lda.z yoffs+1 sta.z __9 // [128] *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuz1=vbuz2 lda.z __9 ldy.z y sta bitmap_plot_yhi,y // [129] if((byte~) bitmap_init::$10!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 lda #7 cmp.z __10 bne __b4_from___b3 jmp __b5 // bitmap_init::@5 __b5: // [130] (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 // [131] 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: // [131] 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: // [132] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 inc.z y // [133] 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: // [134] return rts } // File Data // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 bitmap_plot_ylo: .fill $100, 0 bitmap_plot_yhi: .fill $100, 0 bitmap_plot_bit: .fill $100, 0 REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp[1]:48 [ bitmap_init::$7 ] has ALU potential. Statement [4] *((const nomodify byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement [5] *((const nomodify byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement [6] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement [7] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement [39] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ next#4 next#1 ] Removing always clobbered register reg byte a as potential for zp[1]:34 [ bitmap_line_xdyi::x1#1 ] Removing always clobbered register reg byte a as potential for zp[1]:35 [ bitmap_line_xdyi::xd#1 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Removing always clobbered register reg byte a as potential for zp[1]:3 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] Statement [42] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [48] (word) bitmap_plot::plotter_x#0 ← *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Removing always clobbered register reg byte a as potential for zp[1]:6 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] Removing always clobbered register reg byte a as potential for zp[1]:7 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] Removing always clobbered register reg byte a as potential for zp[1]:33 [ bitmap_line_ydxi::xd#1 ] Removing always clobbered register reg byte a as potential for zp[1]:8 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] Removing always clobbered register reg byte a as potential for zp[1]:9 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] Removing always clobbered register reg byte a as potential for zp[1]:10 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] Removing always clobbered register reg byte a as potential for zp[1]:31 [ bitmap_line_xdyd::xd#0 ] Removing always clobbered register reg byte a as potential for zp[1]:11 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] Removing always clobbered register reg byte a as potential for zp[1]:12 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] Removing always clobbered register reg byte a as potential for zp[1]:13 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] Removing always clobbered register reg byte a as potential for zp[1]:30 [ bitmap_line_ydxd::xd#0 ] Removing always clobbered register reg byte a as potential for zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Removing always clobbered register reg byte a as potential for zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] Removing always clobbered register reg byte a as potential for zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] Statement [49] (word) bitmap_plot::plotter_y#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a Statement [50] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a Statement [51] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ next#4 next#1 ] Removing always clobbered register reg byte y as potential for zp[1]:34 [ bitmap_line_xdyi::x1#1 ] Removing always clobbered register reg byte y as potential for zp[1]:35 [ bitmap_line_xdyi::xd#1 ] Removing always clobbered register reg byte y as potential for zp[1]:3 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] Removing always clobbered register reg byte y as potential for zp[1]:4 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Removing always clobbered register reg byte y as potential for zp[1]:5 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Removing always clobbered register reg byte y as potential for zp[1]:33 [ bitmap_line_ydxi::xd#1 ] Removing always clobbered register reg byte y as potential for zp[1]:8 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] Removing always clobbered register reg byte y as potential for zp[1]:9 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] Removing always clobbered register reg byte y as potential for zp[1]:10 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] Removing always clobbered register reg byte y as potential for zp[1]:31 [ bitmap_line_xdyd::xd#0 ] Removing always clobbered register reg byte y as potential for zp[1]:11 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] Removing always clobbered register reg byte y as potential for zp[1]:12 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] Removing always clobbered register reg byte y as potential for zp[1]:13 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] Removing always clobbered register reg byte y as potential for zp[1]:30 [ bitmap_line_ydxd::xd#0 ] Removing always clobbered register reg byte y as potential for zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Removing always clobbered register reg byte y as potential for zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] Removing always clobbered register reg byte y as potential for zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] Statement [52] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte y Statement [54] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [60] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [63] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:2 [ next#4 next#1 ] Removing always clobbered register reg byte x as potential for zp[1]:33 [ bitmap_line_ydxi::xd#1 ] Removing always clobbered register reg byte x as potential for zp[1]:9 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] Removing always clobbered register reg byte x as potential for zp[1]:8 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] Statement [65] if((byte) bitmap_line_ydxi::y#2!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxi::@1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [73] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:31 [ bitmap_line_xdyd::xd#0 ] Removing always clobbered register reg byte x as potential for zp[1]:12 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] Removing always clobbered register reg byte x as potential for zp[1]:11 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] Statement [74] if((byte) bitmap_line_xdyd::xd#0>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [76] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [78] if((byte) bitmap_line_xdyd::x#2!=(byte) 1) goto bitmap_line_xdyd::@1 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [80] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [86] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [89] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:30 [ bitmap_line_ydxd::xd#0 ] Removing always clobbered register reg byte x as potential for zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] Removing always clobbered register reg byte x as potential for zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Statement [91] if((byte) bitmap_line_ydxd::y#3!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxd::@1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [95] if((byte*) init_screen::c#2!=(const nomodify byte*) SCREEN+(word) $400) goto init_screen::@2 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] { } ) always clobbers reg byte a Statement [97] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] { } ) always clobbers reg byte a reg byte y Statement [99] (word) bitmap_clear::bitmap#0 ← *((const to_nomodify byte*) bitmap_plot_xhi) w= *((const to_nomodify byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#0 ] { } ) always clobbers reg byte a Statement [100] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#5 ] { } ) always clobbers reg byte a Statement [103] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:10 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp[1]:19 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:19 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:22 [ bitmap_clear::x#2 bitmap_clear::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:22 [ bitmap_clear::x#2 bitmap_clear::x#1 ] Statement [114] *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const nomodify byte*) BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:23 [ bitmap_init::x#2 bitmap_init::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:24 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] Statement [115] *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a Statement [130] (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:8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:25 [ bitmap_init::y#2 bitmap_init::y#1 ] Statement [4] *((const nomodify byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement [5] *((const nomodify byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement [6] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement [7] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement [39] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:34 [ bitmap_line_xdyi::x1#1 ] Removing always clobbered register reg byte x as potential for zp[1]:35 [ bitmap_line_xdyi::xd#1 ] Removing always clobbered register reg byte x as potential for zp[1]:4 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Removing always clobbered register reg byte x as potential for zp[1]:3 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] Statement [40] if((byte) bitmap_line_xdyi::xd#1>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [42] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [48] (word) bitmap_plot::plotter_x#0 ← *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a Statement [49] (word) bitmap_plot::plotter_y#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a Statement [50] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a Statement [51] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a reg byte y Statement [52] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte y Statement [54] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [60] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [63] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a reg byte x Statement [65] if((byte) bitmap_line_ydxi::y#2!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxi::@1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [73] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a reg byte x Statement [74] if((byte) bitmap_line_xdyd::xd#0>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [76] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [78] if((byte) bitmap_line_xdyd::x#2!=(byte) 1) goto bitmap_line_xdyd::@1 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [80] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [86] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [89] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a reg byte x Statement [91] if((byte) bitmap_line_ydxd::y#3!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxd::@1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [95] if((byte*) init_screen::c#2!=(const nomodify byte*) SCREEN+(word) $400) goto init_screen::@2 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] { } ) always clobbers reg byte a Statement [97] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] { } ) always clobbers reg byte a reg byte y Statement [99] (word) bitmap_clear::bitmap#0 ← *((const to_nomodify byte*) bitmap_plot_xhi) w= *((const to_nomodify byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#0 ] { } ) always clobbers reg byte a Statement [100] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#5 ] { } ) always clobbers reg byte a Statement [103] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:10 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] { } ) always clobbers reg byte a reg byte y Statement [112] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] { } ) always clobbers reg byte a Statement [114] *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const nomodify byte*) BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a Statement [115] *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a Statement [123] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] { } ) always clobbers reg byte a Statement [130] (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:8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Statement [4] *((const nomodify byte*) BORDERCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement [5] *((const nomodify byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement [6] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement [7] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] { } ) always clobbers reg byte a Statement [39] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a reg byte x Statement [40] if((byte) bitmap_line_xdyi::xd#1>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [42] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [48] (word) bitmap_plot::plotter_x#0 ← *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a Statement [49] (word) bitmap_plot::plotter_y#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a Statement [50] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a Statement [51] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte a reg byte y Statement [52] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::bitmap_line:15::bitmap_line_xdyi:32::bitmap_plot:37 [ next#4 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxi:29::bitmap_plot:58 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } main:2::bitmap_line:15::bitmap_line_xdyd:25::bitmap_plot:71 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } main:2::bitmap_line:15::bitmap_line_ydxd:21::bitmap_plot:84 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } ) always clobbers reg byte y Statement [54] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [60] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [63] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a reg byte x Statement [65] if((byte) bitmap_line_ydxi::y#2!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxi::@1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] ( main:2::bitmap_line:15::bitmap_line_ydxi:29 [ next#4 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [73] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a reg byte x Statement [74] if((byte) bitmap_line_xdyd::xd#0>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [76] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [78] if((byte) bitmap_line_xdyd::x#2!=(byte) 1) goto bitmap_line_xdyd::@1 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] ( main:2::bitmap_line:15::bitmap_line_xdyd:25 [ next#4 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] { { next#4 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [80] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [86] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [89] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a reg byte x Statement [91] if((byte) bitmap_line_ydxd::y#3!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxd::@1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] ( main:2::bitmap_line:15::bitmap_line_ydxd:21 [ next#4 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] { { next#4 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [95] if((byte*) init_screen::c#2!=(const nomodify byte*) SCREEN+(word) $400) goto init_screen::@2 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] { } ) always clobbers reg byte a Statement [97] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( main:2::init_screen:12 [ init_screen::c#2 ] { } ) always clobbers reg byte a reg byte y Statement [99] (word) bitmap_clear::bitmap#0 ← *((const to_nomodify byte*) bitmap_plot_xhi) w= *((const to_nomodify byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#0 ] { } ) always clobbers reg byte a Statement [100] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:10 [ bitmap_clear::bitmap#5 ] { } ) always clobbers reg byte a Statement [103] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:10 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] { } ) always clobbers reg byte a reg byte y Statement [112] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] { } ) always clobbers reg byte a Statement [114] *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const nomodify byte*) BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a Statement [115] *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::bitmap_init:8 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a Statement [123] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ( main:2::bitmap_init:8 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] { } ) always clobbers reg byte a Statement [130] (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:8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Potential registers zp[1]:2 [ next#4 next#1 ] : zp[1]:2 , Potential registers zp[1]:3 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] : zp[1]:3 , Potential registers zp[1]:4 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] : zp[1]:4 , Potential registers zp[1]:5 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] : zp[1]:5 , reg byte x , Potential registers zp[1]:6 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] : zp[1]:6 , reg byte x , reg byte y , Potential registers zp[1]:7 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] : zp[1]:7 , reg byte x , reg byte y , Potential registers zp[1]:8 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] : zp[1]:8 , Potential registers zp[1]:9 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] : zp[1]:9 , Potential registers zp[1]:10 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] : zp[1]:10 , reg byte x , Potential registers zp[1]:11 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] : zp[1]:11 , Potential registers zp[1]:12 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] : zp[1]:12 , Potential registers zp[1]:13 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] : zp[1]:13 , reg byte x , Potential registers zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] : zp[1]:14 , Potential registers zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] : zp[1]:15 , Potential registers zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] : zp[1]:16 , reg byte x , Potential registers zp[2]:17 [ init_screen::c#2 init_screen::c#1 ] : zp[2]:17 , Potential registers zp[1]:19 [ bitmap_clear::y#4 bitmap_clear::y#1 ] : zp[1]:19 , reg byte x , Potential registers zp[2]:20 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] : zp[2]:20 , Potential registers zp[1]:22 [ bitmap_clear::x#2 bitmap_clear::x#1 ] : zp[1]:22 , reg byte x , Potential registers zp[1]:23 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp[1]:23 , reg byte x , reg byte y , Potential registers zp[1]:24 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp[1]:24 , reg byte x , reg byte y , Potential registers zp[1]:25 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp[1]:25 , reg byte x , reg byte y , Potential registers zp[2]:26 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp[2]:26 , Potential registers zp[1]:28 [ bitmap_line::x1#0 ] : zp[1]:28 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:29 [ bitmap_line::xd#2 ] : zp[1]:29 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:30 [ bitmap_line_ydxd::xd#0 ] : zp[1]:30 , Potential registers zp[1]:31 [ bitmap_line_xdyd::xd#0 ] : zp[1]:31 , Potential registers zp[1]:32 [ bitmap_line::xd#1 ] : zp[1]:32 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:33 [ bitmap_line_ydxi::xd#1 ] : zp[1]:33 , Potential registers zp[1]:34 [ bitmap_line_xdyi::x1#1 ] : zp[1]:34 , Potential registers zp[1]:35 [ bitmap_line_xdyi::xd#1 ] : zp[1]:35 , Potential registers zp[1]:36 [ bitmap_line_xdyi::$6 ] : zp[1]:36 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:37 [ bitmap_plot::plotter_x#0 ] : zp[2]:37 , Potential registers zp[2]:39 [ bitmap_plot::plotter_y#0 ] : zp[2]:39 , Potential registers zp[2]:41 [ bitmap_plot::plotter#0 ] : zp[2]:41 , Potential registers zp[1]:43 [ bitmap_plot::$1 ] : zp[1]:43 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:44 [ bitmap_clear::bitmap#0 ] : zp[2]:44 , Potential registers zp[1]:46 [ bitmap_init::$0 ] : zp[1]:46 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:47 [ bitmap_init::$10 ] : zp[1]:47 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:48 [ bitmap_init::$7 ] : zp[1]:48 , reg byte a , reg byte x , reg byte y , reg byte alu , Potential registers zp[1]:49 [ bitmap_init::$8 ] : zp[1]:49 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:50 [ bitmap_init::$9 ] : zp[1]:50 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES Uplift Scope [bitmap_plot] 20,000,011: zp[1]:7 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] 20,000,002: zp[2]:39 [ bitmap_plot::plotter_y#0 ] 20,000,002: zp[1]:43 [ bitmap_plot::$1 ] 12,500,005.75: zp[1]:6 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] 10,000,001: zp[2]:37 [ bitmap_plot::plotter_x#0 ] 5,000,000.5: zp[2]:41 [ bitmap_plot::plotter#0 ] Uplift Scope [bitmap_line_xdyi] 4,733,338.07: zp[1]:5 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] 2,571,431.14: zp[1]:4 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] 2,000,002: zp[1]:36 [ bitmap_line_xdyi::$6 ] 1,125,001.12: zp[1]:3 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] 142,928.79: zp[1]:35 [ bitmap_line_xdyi::xd#1 ] 66,733.47: zp[1]:34 [ bitmap_line_xdyi::x1#1 ] Uplift Scope [bitmap_line_xdyd] 5,233,338.57: zp[1]:13 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] 3,071,431.64: zp[1]:12 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] 1,184,740.19: zp[1]:11 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] 153,923.31: zp[1]:31 [ bitmap_line_xdyd::xd#0 ] Uplift Scope [bitmap_line_ydxi] 5,255,340.77: zp[1]:10 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] 3,071,431.64: zp[1]:8 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] 1,178,572.61: zp[1]:9 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] 77,769.46: zp[1]:33 [ bitmap_line_ydxi::xd#1 ] Uplift Scope [bitmap_line_ydxd] 5,255,340.77: zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] 3,071,431.64: zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] 1,178,572.61: zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] 77,769.46: zp[1]:30 [ bitmap_line_ydxd::xd#0 ] Uplift Scope [bitmap_clear] 22,007.6: zp[2]:20 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 21,668.83: zp[1]:22 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 1,835.17: zp[1]:19 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 101: zp[2]:44 [ bitmap_clear::bitmap#0 ] Uplift Scope [bitmap_init] 3,628.62: zp[2]:26 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 2,268.93: zp[1]:24 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 2,168.83: zp[1]:23 [ bitmap_init::x#2 bitmap_init::x#1 ] 2,002: zp[1]:25 [ bitmap_init::y#2 bitmap_init::y#1 ] 2,002: zp[1]:46 [ bitmap_init::$0 ] 2,002: zp[1]:48 [ bitmap_init::$7 ] 2,002: zp[1]:49 [ bitmap_init::$8 ] 2,002: zp[1]:50 [ bitmap_init::$9 ] 500.5: zp[1]:47 [ bitmap_init::$10 ] Uplift Scope [bitmap_line] 1,334.67: zp[1]:29 [ bitmap_line::xd#2 ] 1,334.67: zp[1]:32 [ bitmap_line::xd#1 ] 851: zp[1]:28 [ bitmap_line::x1#0 ] Uplift Scope [init_screen] 3,336.67: zp[2]:17 [ init_screen::c#2 init_screen::c#1 ] Uplift Scope [] 303: zp[1]:2 [ next#4 next#1 ] Uplift Scope [main] Uplifting [bitmap_plot] best 40165 combination reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] zp[2]:39 [ bitmap_plot::plotter_y#0 ] reg byte a [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] zp[2]:37 [ bitmap_plot::plotter_x#0 ] zp[2]:41 [ bitmap_plot::plotter#0 ] Uplifting [bitmap_line_xdyi] best 39565 combination zp[1]:5 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] zp[1]:4 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] reg byte x [ bitmap_line_xdyi::$6 ] zp[1]:3 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] zp[1]:35 [ bitmap_line_xdyi::xd#1 ] zp[1]:34 [ bitmap_line_xdyi::x1#1 ] Uplifting [bitmap_line_xdyd] best 39565 combination zp[1]:13 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] zp[1]:12 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] zp[1]:11 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] zp[1]:31 [ bitmap_line_xdyd::xd#0 ] Uplifting [bitmap_line_ydxi] best 39565 combination zp[1]:10 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] zp[1]:8 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] zp[1]:9 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] zp[1]:33 [ bitmap_line_ydxi::xd#1 ] Uplifting [bitmap_line_ydxd] best 39565 combination zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] zp[1]:30 [ bitmap_line_ydxd::xd#0 ] Uplifting [bitmap_clear] best 38665 combination zp[2]:20 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp[1]:19 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp[2]:44 [ bitmap_clear::bitmap#0 ] Uplifting [bitmap_init] best 38145 combination zp[2]:26 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte y [ 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::$0 ] zp[1]:48 [ bitmap_init::$7 ] zp[1]:49 [ bitmap_init::$8 ] zp[1]:50 [ bitmap_init::$9 ] zp[1]:47 [ bitmap_init::$10 ] Limited combination testing to 100 combinations of 34560 possible. Uplifting [bitmap_line] best 38089 combination reg byte x [ bitmap_line::xd#2 ] reg byte x [ bitmap_line::xd#1 ] reg byte a [ bitmap_line::x1#0 ] Uplifting [init_screen] best 38089 combination zp[2]:17 [ init_screen::c#2 init_screen::c#1 ] Uplifting [] best 38089 combination zp[1]:2 [ next#4 next#1 ] Uplifting [main] best 38089 combination Attempting to uplift remaining variables inzp[1]:10 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] Uplifting [bitmap_line_ydxi] best 38089 combination zp[1]:10 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] Attempting to uplift remaining variables inzp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] Uplifting [bitmap_line_ydxd] best 38089 combination zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] Attempting to uplift remaining variables inzp[1]:13 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] Uplifting [bitmap_line_xdyd] best 38089 combination zp[1]:13 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] Attempting to uplift remaining variables inzp[1]:5 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Uplifting [bitmap_line_xdyi] best 38089 combination zp[1]:5 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Attempting to uplift remaining variables inzp[1]:8 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] Uplifting [bitmap_line_ydxi] best 38089 combination zp[1]:8 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] Attempting to uplift remaining variables inzp[1]:12 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] Uplifting [bitmap_line_xdyd] best 38089 combination zp[1]:12 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] Attempting to uplift remaining variables inzp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Uplifting [bitmap_line_ydxd] best 38089 combination zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Attempting to uplift remaining variables inzp[1]:4 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Uplifting [bitmap_line_xdyi] best 38089 combination zp[1]:4 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Attempting to uplift remaining variables inzp[1]:11 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] Uplifting [bitmap_line_xdyd] best 38089 combination zp[1]:11 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] Attempting to uplift remaining variables inzp[1]:9 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] Uplifting [bitmap_line_ydxi] best 38089 combination zp[1]:9 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] Attempting to uplift remaining variables inzp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] Uplifting [bitmap_line_ydxd] best 38089 combination zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] Attempting to uplift remaining variables inzp[1]:3 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] Uplifting [bitmap_line_xdyi] best 38089 combination zp[1]:3 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] Attempting to uplift remaining variables inzp[1]:31 [ bitmap_line_xdyd::xd#0 ] Uplifting [bitmap_line_xdyd] best 38089 combination zp[1]:31 [ bitmap_line_xdyd::xd#0 ] Attempting to uplift remaining variables inzp[1]:35 [ bitmap_line_xdyi::xd#1 ] Uplifting [bitmap_line_xdyi] best 38089 combination zp[1]:35 [ bitmap_line_xdyi::xd#1 ] Attempting to uplift remaining variables inzp[1]:30 [ bitmap_line_ydxd::xd#0 ] Uplifting [bitmap_line_ydxd] best 38089 combination zp[1]:30 [ bitmap_line_ydxd::xd#0 ] Attempting to uplift remaining variables inzp[1]:33 [ bitmap_line_ydxi::xd#1 ] Uplifting [bitmap_line_ydxi] best 38089 combination zp[1]:33 [ bitmap_line_ydxi::xd#1 ] Attempting to uplift remaining variables inzp[1]:34 [ bitmap_line_xdyi::x1#1 ] Uplifting [bitmap_line_xdyi] best 38089 combination zp[1]:34 [ bitmap_line_xdyi::x1#1 ] Attempting to uplift remaining variables inzp[1]:48 [ bitmap_init::$7 ] Uplifting [bitmap_init] best 38029 combination reg byte a [ bitmap_init::$7 ] Attempting to uplift remaining variables inzp[1]:49 [ bitmap_init::$8 ] Uplifting [bitmap_init] best 37969 combination reg byte a [ bitmap_init::$8 ] Attempting to uplift remaining variables inzp[1]:50 [ bitmap_init::$9 ] Uplifting [bitmap_init] best 37909 combination reg byte a [ bitmap_init::$9 ] Attempting to uplift remaining variables inzp[1]:19 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Uplifting [bitmap_clear] best 37909 combination zp[1]:19 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Attempting to uplift remaining variables inzp[1]:47 [ bitmap_init::$10 ] Uplifting [bitmap_init] best 37909 combination zp[1]:47 [ bitmap_init::$10 ] Attempting to uplift remaining variables inzp[1]:2 [ next#4 next#1 ] Uplifting [] best 37909 combination zp[1]:2 [ next#4 next#1 ] Coalescing zero page register [ zp[2]:20 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp[2]:44 [ bitmap_clear::bitmap#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:37 [ bitmap_plot::plotter_x#0 ] ] with [ zp[2]:41 [ bitmap_plot::plotter#0 ] ] - score: 1 Coalescing zero page register [ zp[1]:8 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] ] with [ zp[1]:3 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] ] Coalescing zero page register [ zp[1]:9 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] ] with [ zp[1]:4 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] ] Coalescing zero page register [ zp[1]:10 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] ] with [ zp[1]:5 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] ] Coalescing zero page register [ zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] ] with [ zp[1]:11 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] ] Coalescing zero page register [ zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] ] with [ zp[1]:12 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] ] Coalescing zero page register [ zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] ] with [ zp[1]:13 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] ] Coalescing zero page register [ zp[2]:20 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 ] ] with [ zp[2]:17 [ init_screen::c#2 init_screen::c#1 ] ] Coalescing zero page register [ zp[1]:30 [ bitmap_line_ydxd::xd#0 ] ] with [ zp[1]:19 [ bitmap_clear::y#4 bitmap_clear::y#1 ] ] Coalescing zero page register [ zp[1]:33 [ bitmap_line_ydxi::xd#1 ] ] with [ zp[1]:31 [ bitmap_line_xdyd::xd#0 ] ] Coalescing zero page register [ zp[2]:37 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 ] ] with [ zp[2]:26 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] Coalescing zero page register [ zp[1]:47 [ bitmap_init::$10 ] ] with [ zp[1]:34 [ bitmap_line_xdyi::x1#1 ] ] Coalescing zero page register [ zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] ] with [ zp[1]:8 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] ] Coalescing zero page register [ zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] ] with [ zp[1]:9 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] ] Coalescing zero page register [ zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] ] with [ zp[1]:10 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] ] Coalescing zero page register [ zp[1]:33 [ bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#0 ] ] with [ zp[1]:30 [ bitmap_line_ydxd::xd#0 bitmap_clear::y#4 bitmap_clear::y#1 ] ] Coalescing zero page register [ zp[2]:37 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] with [ zp[2]:20 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 init_screen::c#2 init_screen::c#1 ] ] Coalescing zero page register [ zp[1]:35 [ bitmap_line_xdyi::xd#1 ] ] with [ zp[1]:33 [ bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#0 bitmap_clear::y#4 bitmap_clear::y#1 ] ] Allocated (was zp[1]:14) zp[1]:3 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] Allocated (was zp[1]:15) zp[1]:4 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Allocated (was zp[1]:16) zp[1]:5 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Allocated (was zp[1]:35) zp[1]:6 [ bitmap_line_xdyi::xd#1 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#0 bitmap_clear::y#4 bitmap_clear::y#1 ] Allocated (was zp[2]:37) zp[2]:7 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 init_screen::c#2 init_screen::c#1 ] Allocated (was zp[2]:39) zp[2]:9 [ bitmap_plot::plotter_y#0 ] Allocated (was zp[1]:47) zp[1]:11 [ bitmap_init::$10 bitmap_line_xdyi::x1#1 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments // Illustrates problem with bitmap-draw.kc line() // Reported by Janne Johansson // Upstart .pc = $801 "Basic" :BasicUpstart(__bbegin) .pc = $80d "Program" // Global Constants & labels .label BORDERCOL = $d020 .label BGCOL = $d021 .label D011 = $d011 .const VIC_BMM = $20 .const VIC_DEN = $10 .const VIC_RSEL = 8 .label VIC_MEMORY = $d018 .label SCREEN = $400 .label BITMAP = $2000 .label next = 2 // @begin __bbegin: // [1] phi from @begin to @1 [phi:@begin->@1] __b1_from___bbegin: jmp __b1 // @1 __b1: // [2] call main jsr main // [3] phi from @1 to @end [phi:@1->@end] __bend_from___b1: jmp __bend // @end __bend: // main main: { // [4] *((const nomodify byte*) BORDERCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL // [5] *((const nomodify byte*) BGCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BGCOL // [6] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta D011 // [7] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) BITMAP&(word) $3fff/(word) $400 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400 sta VIC_MEMORY // [8] call bitmap_init // [110] phi from main to bitmap_init [phi:main->bitmap_init] bitmap_init_from_main: jsr bitmap_init // [9] phi from main to main::@2 [phi:main->main::@2] __b2_from_main: jmp __b2 // main::@2 __b2: // [10] call bitmap_clear jsr bitmap_clear // [11] phi from main::@2 to main::@3 [phi:main::@2->main::@3] __b3_from___b2: jmp __b3 // main::@3 __b3: // [12] call init_screen // [93] phi from main::@3 to init_screen [phi:main::@3->init_screen] init_screen_from___b3: jsr init_screen // [13] phi from main::@3 to main::@1 [phi:main::@3->main::@1] __b1_from___b3: // [13] phi (byte) next#4 = (byte) 0 [phi:main::@3->main::@1#0] -- vbuz1=vbuc1 lda #0 sta.z next jmp __b1 // main::@1 __b1: // [14] (byte) bitmap_line::x1#0 ← (byte) next#4 -- vbuaa=vbuz1 lda.z next // [15] call bitmap_line jsr bitmap_line jmp __b4 // main::@4 __b4: // [16] (byte) next#1 ← ++ (byte) next#4 -- vbuz1=_inc_vbuz1 inc.z next // [13] phi from main::@4 to main::@1 [phi:main::@4->main::@1] __b1_from___b4: // [13] phi (byte) next#4 = (byte) next#1 [phi:main::@4->main::@1#0] -- register_copy jmp __b1 } // bitmap_line // Draw a line on the bitmap // bitmap_line(byte register(A) x1) bitmap_line: { .label x0 = 0 .label y0 = 0 .label y1 = $64 // [17] if((const byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuc1_lt_vbuaa_then_la1 cmp #x0 beq !+ bcs __b1 !: jmp __b2 // bitmap_line::@2 __b2: // [18] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuaa tax jmp __b3 // bitmap_line::@3 __b3: // [19] if((const byte) bitmap_line::y1#0<(byte) bitmap_line::xd#2) goto bitmap_line::@4 -- vbuc1_lt_vbuxx_then_la1 cpx #y1 beq !+ bcs __b4 !: jmp __b5 // bitmap_line::@5 __b5: // [20] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#2 -- vbuz1=vbuxx stx.z bitmap_line_ydxd.xd // [21] call bitmap_line_ydxd jsr bitmap_line_ydxd jmp __breturn // bitmap_line::@return __breturn: // [22] return rts // bitmap_line::@4 __b4: // [23] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuaa sta.z bitmap_line_xdyd.x // [24] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#2 -- vbuz1=vbuxx stx.z bitmap_line_xdyd.xd // [25] call bitmap_line_xdyd // [67] phi from bitmap_line::@4 to bitmap_line_xdyd [phi:bitmap_line::@4->bitmap_line_xdyd] bitmap_line_xdyd_from___b4: jsr bitmap_line_xdyd jmp __breturn // bitmap_line::@1 __b1: // [26] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuaa tax jmp __b6 // bitmap_line::@6 __b6: // [27] if((const byte) bitmap_line::y1#0<(byte) bitmap_line::xd#1) goto bitmap_line::@7 -- vbuc1_lt_vbuxx_then_la1 cpx #y1 beq !+ bcs __b7 !: jmp __b8 // bitmap_line::@8 __b8: // [28] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuxx stx.z bitmap_line_ydxi.xd // [29] call bitmap_line_ydxi jsr bitmap_line_ydxi jmp __breturn // bitmap_line::@7 __b7: // [30] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuaa sta.z bitmap_line_xdyi.x1 // [31] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuxx stx.z bitmap_line_xdyi.xd // [32] call bitmap_line_xdyi // [33] phi from bitmap_line::@7 to bitmap_line_xdyi [phi:bitmap_line::@7->bitmap_line_xdyi] bitmap_line_xdyi_from___b7: jsr bitmap_line_xdyi jmp __breturn } // bitmap_line_xdyi // bitmap_line_xdyi(byte zp(3) x, byte zp(4) y, byte zp($b) x1, byte zp(6) xd) bitmap_line_xdyi: { .label x1 = $b .label xd = 6 .label x = 3 .label e = 5 .label y = 4 // [34] phi from bitmap_line_xdyi to bitmap_line_xdyi::@1 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1] __b1_from_bitmap_line_xdyi: // [34] phi (byte) bitmap_line_xdyi::e#3 = (const byte) bitmap_line::y1#0>>(byte) 1 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1#0] -- vbuz1=vbuc1 lda #bitmap_line.y1>>1 sta.z e // [34] phi (byte) bitmap_line_xdyi::y#3 = (const byte) bitmap_line::y0#0 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y0 sta.z y // [34] phi (byte) bitmap_line_xdyi::x#3 = (const byte) bitmap_line::x0#0 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1#2] -- vbuz1=vbuc1 lda #bitmap_line.x0 sta.z x jmp __b1 // [34] phi from bitmap_line_xdyi::@2 to bitmap_line_xdyi::@1 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1] __b1_from___b2: // [34] phi (byte) bitmap_line_xdyi::e#3 = (byte) bitmap_line_xdyi::e#6 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#0] -- register_copy // [34] phi (byte) bitmap_line_xdyi::y#3 = (byte) bitmap_line_xdyi::y#6 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#1] -- register_copy // [34] phi (byte) bitmap_line_xdyi::x#3 = (byte) bitmap_line_xdyi::x#2 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#2] -- register_copy jmp __b1 // bitmap_line_xdyi::@1 __b1: // [35] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuxx=vbuz1 ldx.z x // [36] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 ldy.z y // [37] call bitmap_plot // [47] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] bitmap_plot_from___b1: // [47] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy // [47] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b4 // bitmap_line_xdyi::@4 __b4: // [38] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 inc.z x // [39] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_plus_vbuc1 lax.z e axs #-[bitmap_line.y1] stx.z e // [40] if((byte) bitmap_line_xdyi::xd#1>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -- vbuz1_ge_vbuz2_then_la1 lda.z xd cmp.z e bcs __b2_from___b4 jmp __b3 // bitmap_line_xdyi::@3 __b3: // [41] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 inc.z y // [42] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 -- vbuz1=vbuz1_minus_vbuz2 lda.z e sec sbc.z xd sta.z e // [43] phi from bitmap_line_xdyi::@3 bitmap_line_xdyi::@4 to bitmap_line_xdyi::@2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@4->bitmap_line_xdyi::@2] __b2_from___b3: __b2_from___b4: // [43] phi (byte) bitmap_line_xdyi::e#6 = (byte) bitmap_line_xdyi::e#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@4->bitmap_line_xdyi::@2#0] -- register_copy // [43] phi (byte) bitmap_line_xdyi::y#6 = (byte) bitmap_line_xdyi::y#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@4->bitmap_line_xdyi::@2#1] -- register_copy jmp __b2 // bitmap_line_xdyi::@2 __b2: // [44] (byte~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#1 + (byte) 1 -- vbuxx=vbuz1_plus_1 ldx.z x1 inx // [45] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuxx_then_la1 cpx.z x bne __b1_from___b2 jmp __breturn // bitmap_line_xdyi::@return __breturn: // [46] return rts } // bitmap_plot // bitmap_plot(byte register(X) x, byte register(Y) y) bitmap_plot: { .label plotter_x = 7 .label plotter_y = 9 .label plotter = 7 // [48] (word) bitmap_plot::plotter_x#0 ← *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda bitmap_plot_xhi,x sta.z plotter_x+1 lda bitmap_plot_xlo,x sta.z plotter_x // [49] (word) bitmap_plot::plotter_y#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy lda bitmap_plot_yhi,y sta.z plotter_y+1 lda bitmap_plot_ylo,y sta.z plotter_y // [50] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z plotter clc adc.z plotter_y sta.z plotter lda.z plotter+1 adc.z plotter_y+1 sta.z plotter+1 // [51] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx lda bitmap_plot_bit,x ldy #0 ora (plotter),y // [52] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa ldy #0 sta (plotter),y jmp __breturn // bitmap_plot::@return __breturn: // [53] return rts } // bitmap_line_ydxi // bitmap_line_ydxi(byte zp(4) y, byte zp(3) x, byte zp(6) xd) bitmap_line_ydxi: { .label xd = 6 .label e = 5 .label y = 4 .label x = 3 // [54] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z xd lsr sta.z e // [55] phi from bitmap_line_ydxi to bitmap_line_ydxi::@1 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1] __b1_from_bitmap_line_ydxi: // [55] phi (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#0 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1#0] -- register_copy // [55] phi (byte) bitmap_line_ydxi::y#3 = (const byte) bitmap_line::y0#0 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y0 sta.z y // [55] phi (byte) bitmap_line_ydxi::x#3 = (const byte) bitmap_line::x0#0 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1#2] -- vbuz1=vbuc1 lda #bitmap_line.x0 sta.z x jmp __b1 // [55] phi from bitmap_line_ydxi::@2 to bitmap_line_ydxi::@1 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1] __b1_from___b2: // [55] phi (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#6 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#0] -- register_copy // [55] phi (byte) bitmap_line_ydxi::y#3 = (byte) bitmap_line_ydxi::y#2 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#1] -- register_copy // [55] phi (byte) bitmap_line_ydxi::x#3 = (byte) bitmap_line_ydxi::x#6 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#2] -- register_copy jmp __b1 // bitmap_line_ydxi::@1 __b1: // [56] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 -- vbuxx=vbuz1 ldx.z x // [57] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 ldy.z y // [58] call bitmap_plot // [47] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] bitmap_plot_from___b1: // [47] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy // [47] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b4 // bitmap_line_ydxi::@4 __b4: // [59] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 inc.z y // [60] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 -- vbuz1=vbuz1_plus_vbuz2 lda.z e clc adc.z xd sta.z e // [61] if((const byte) bitmap_line::y1#0>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -- vbuc1_ge_vbuz1_then_la1 lda #bitmap_line.y1 cmp.z e bcs __b2_from___b4 jmp __b3 // bitmap_line_ydxi::@3 __b3: // [62] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuz1=_inc_vbuz1 inc.z x // [63] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_minus_vbuc1 lax.z e axs #bitmap_line.y1 stx.z e // [64] phi from bitmap_line_ydxi::@3 bitmap_line_ydxi::@4 to bitmap_line_ydxi::@2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@4->bitmap_line_ydxi::@2] __b2_from___b3: __b2_from___b4: // [64] phi (byte) bitmap_line_ydxi::e#6 = (byte) bitmap_line_ydxi::e#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@4->bitmap_line_ydxi::@2#0] -- register_copy // [64] phi (byte) bitmap_line_ydxi::x#6 = (byte) bitmap_line_ydxi::x#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@4->bitmap_line_ydxi::@2#1] -- register_copy jmp __b2 // bitmap_line_ydxi::@2 __b2: // [65] if((byte) bitmap_line_ydxi::y#2!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuc1_then_la1 lda #bitmap_line.y1+1 cmp.z y bne __b1_from___b2 jmp __breturn // bitmap_line_ydxi::@return __breturn: // [66] return rts } // bitmap_line_xdyd // bitmap_line_xdyd(byte zp(3) x, byte zp(4) y, byte zp(6) xd) bitmap_line_xdyd: { .label x = 3 .label xd = 6 .label e = 5 .label y = 4 // [68] phi from bitmap_line_xdyd to bitmap_line_xdyd::@1 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1] __b1_from_bitmap_line_xdyd: // [68] phi (byte) bitmap_line_xdyd::e#3 = (const byte) bitmap_line::y1#0>>(byte) 1 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1#0] -- vbuz1=vbuc1 lda #bitmap_line.y1>>1 sta.z e // [68] phi (byte) bitmap_line_xdyd::y#3 = (const byte) bitmap_line::y1#0 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y1 sta.z y // [68] phi (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1#2] -- register_copy jmp __b1 // [68] phi from bitmap_line_xdyd::@2 to bitmap_line_xdyd::@1 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1] __b1_from___b2: // [68] phi (byte) bitmap_line_xdyd::e#3 = (byte) bitmap_line_xdyd::e#6 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#0] -- register_copy // [68] phi (byte) bitmap_line_xdyd::y#3 = (byte) bitmap_line_xdyd::y#6 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#1] -- register_copy // [68] phi (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#2 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#2] -- register_copy jmp __b1 // bitmap_line_xdyd::@1 __b1: // [69] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 ldx.z x // [70] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 ldy.z y // [71] call bitmap_plot // [47] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] bitmap_plot_from___b1: // [47] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy // [47] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b4 // bitmap_line_xdyd::@4 __b4: // [72] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 inc.z x // [73] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_plus_vbuc1 lax.z e axs #-[bitmap_line.y1] stx.z e // [74] if((byte) bitmap_line_xdyd::xd#0>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -- vbuz1_ge_vbuz2_then_la1 lda.z xd cmp.z e bcs __b2_from___b4 jmp __b3 // bitmap_line_xdyd::@3 __b3: // [75] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 dec.z y // [76] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 -- vbuz1=vbuz1_minus_vbuz2 lda.z e sec sbc.z xd sta.z e // [77] phi from bitmap_line_xdyd::@3 bitmap_line_xdyd::@4 to bitmap_line_xdyd::@2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@4->bitmap_line_xdyd::@2] __b2_from___b3: __b2_from___b4: // [77] phi (byte) bitmap_line_xdyd::e#6 = (byte) bitmap_line_xdyd::e#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@4->bitmap_line_xdyd::@2#0] -- register_copy // [77] phi (byte) bitmap_line_xdyd::y#6 = (byte) bitmap_line_xdyd::y#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@4->bitmap_line_xdyd::@2#1] -- register_copy jmp __b2 // bitmap_line_xdyd::@2 __b2: // [78] if((byte) bitmap_line_xdyd::x#2!=(byte) 1) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuc1_then_la1 lda #1 cmp.z x bne __b1_from___b2 jmp __breturn // bitmap_line_xdyd::@return __breturn: // [79] return rts } // bitmap_line_ydxd // bitmap_line_ydxd(byte zp(4) y, byte zp(3) x, byte zp(6) xd) bitmap_line_ydxd: { .label xd = 6 .label e = 5 .label y = 4 .label x = 3 // [80] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z xd lsr sta.z e // [81] phi from bitmap_line_ydxd to bitmap_line_ydxd::@1 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1] __b1_from_bitmap_line_ydxd: // [81] phi (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#0 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1#0] -- register_copy // [81] phi (byte) bitmap_line_ydxd::y#2 = (const byte) bitmap_line::y0#0 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y0 sta.z y // [81] phi (byte) bitmap_line_ydxd::x#3 = (const byte) bitmap_line::x0#0 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1#2] -- vbuz1=vbuc1 lda #bitmap_line.x0 sta.z x jmp __b1 // [81] phi from bitmap_line_ydxd::@2 to bitmap_line_ydxd::@1 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1] __b1_from___b2: // [81] phi (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#6 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#0] -- register_copy // [81] phi (byte) bitmap_line_ydxd::y#2 = (byte) bitmap_line_ydxd::y#3 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#1] -- register_copy // [81] phi (byte) bitmap_line_ydxd::x#3 = (byte) bitmap_line_ydxd::x#6 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#2] -- register_copy jmp __b1 // bitmap_line_ydxd::@1 __b1: // [82] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 -- vbuxx=vbuz1 ldx.z x // [83] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 ldy.z y // [84] call bitmap_plot // [47] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] bitmap_plot_from___b1: // [47] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy // [47] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b4 // bitmap_line_ydxd::@4 __b4: // [85] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 inc.z y // [86] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 -- vbuz1=vbuz1_plus_vbuz2 lda.z e clc adc.z xd sta.z e // [87] if((const byte) bitmap_line::y1#0>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -- vbuc1_ge_vbuz1_then_la1 lda #bitmap_line.y1 cmp.z e bcs __b2_from___b4 jmp __b3 // bitmap_line_ydxd::@3 __b3: // [88] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuz1=_dec_vbuz1 dec.z x // [89] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_minus_vbuc1 lax.z e axs #bitmap_line.y1 stx.z e // [90] phi from bitmap_line_ydxd::@3 bitmap_line_ydxd::@4 to bitmap_line_ydxd::@2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@4->bitmap_line_ydxd::@2] __b2_from___b3: __b2_from___b4: // [90] phi (byte) bitmap_line_ydxd::e#6 = (byte) bitmap_line_ydxd::e#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@4->bitmap_line_ydxd::@2#0] -- register_copy // [90] phi (byte) bitmap_line_ydxd::x#6 = (byte) bitmap_line_ydxd::x#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@4->bitmap_line_ydxd::@2#1] -- register_copy jmp __b2 // bitmap_line_ydxd::@2 __b2: // [91] if((byte) bitmap_line_ydxd::y#3!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuc1_then_la1 lda #bitmap_line.y1+1 cmp.z y bne __b1_from___b2 jmp __breturn // bitmap_line_ydxd::@return __breturn: // [92] return rts } // init_screen init_screen: { .label c = 7 // [94] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] __b1_from_init_screen: // [94] phi (byte*) init_screen::c#2 = (const nomodify byte*) SCREEN [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta.z c+1 jmp __b1 // init_screen::@1 __b1: // [95] if((byte*) init_screen::c#2!=(const nomodify byte*) SCREEN+(word) $400) goto init_screen::@2 -- pbuz1_neq_pbuc1_then_la1 lda.z c+1 cmp #>SCREEN+$400 bne __b2 lda.z c cmp #init_screen::@1] __b1_from___b2: // [94] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@1#0] -- register_copy jmp __b1 } // bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = 7 .label y = 6 // [99] (word) bitmap_clear::bitmap#0 ← *((const to_nomodify byte*) bitmap_plot_xhi) w= *((const to_nomodify byte*) bitmap_plot_xlo) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_xlo sta.z bitmap lda bitmap_plot_xhi sta.z bitmap+1 // [100] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 // [101] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] __b1_from_bitmap_clear: // [101] phi (byte) bitmap_clear::y#4 = (byte) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta.z y // [101] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp __b1 // [101] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] __b1_from___b3: // [101] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy // [101] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp __b1 // bitmap_clear::@1 __b1: // [102] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] __b2_from___b1: // [102] phi (byte) bitmap_clear::x#2 = (byte) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 ldx #0 // [102] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp __b2 // [102] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] __b2_from___b2: // [102] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy // [102] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp __b2 // bitmap_clear::@2 __b2: // [103] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (bitmap),y // [104] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc.z bitmap bne !+ inc.z bitmap+1 !: // [105] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx // [106] if((byte) bitmap_clear::x#1!=(byte) $c8) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$c8 bne __b2_from___b2 jmp __b3 // bitmap_clear::@3 __b3: // [107] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc.z y // [108] if((byte) bitmap_clear::y#1!=(byte) $28) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp.z y bne __b1_from___b3 jmp __breturn // bitmap_clear::@return __breturn: // [109] return rts } // bitmap_init // Initialize the bitmap plotter tables for a specific bitmap bitmap_init: { .label __10 = $b .label yoffs = 7 // [111] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] __b1_from_bitmap_init: // [111] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#0] -- vbuyy=vbuc1 ldy #$80 // [111] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#1] -- vbuxx=vbuc1 ldx #0 jmp __b1 // [111] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] __b1_from___b2: // [111] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy // [111] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp __b1 // bitmap_init::@1 __b1: // [112] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 -- vbuaa=vbuxx_band_vbuc1 txa and #$f8 // [113] *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_xlo,x // [114] *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const nomodify byte*) BITMAP -- pbuc1_derefidx_vbuxx=vbuc2 lda #>BITMAP sta bitmap_plot_xhi,x // [115] *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy tya sta bitmap_plot_bit,x // [116] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuyy=vbuyy_ror_1 tya lsr tay // [117] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuyy_neq_0_then_la1 cpy #0 bne __b6_from___b1 // [119] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] __b2_from___b1: // [119] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuyy=vbuc1 ldy #$80 jmp __b2 // [118] 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: // [119] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] __b2_from___b6: // [119] 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: // [120] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx // [121] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne __b1_from___b2 // [122] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] __b3_from___b2: // [122] phi (byte*) bitmap_init::yoffs#2 = (byte*) 0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #<0 sta.z yoffs lda #>0 sta.z yoffs+1 // [122] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 ldx #0 jmp __b3 // [122] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] __b3_from___b4: // [122] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy // [122] 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: // [123] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1 lda #7 sax.z __10 // [124] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda.z yoffs // [125] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$10 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa ora.z __10 // [126] *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_ylo,x // [127] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda.z yoffs+1 // [128] *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x // [129] if((byte~) bitmap_init::$10!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 lda #7 cmp.z __10 bne __b4_from___b3 jmp __b5 // bitmap_init::@5 __b5: // [130] (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 // [131] 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: // [131] 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: // [132] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx // [133] 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: // [134] return rts } // File Data // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 bitmap_plot_ylo: .fill $100, 0 bitmap_plot_yhi: .fill $100, 0 bitmap_plot_bit: .fill $100, 0 ASSEMBLER OPTIMIZATIONS Removing instruction jmp __b1 Removing instruction jmp __bend Removing instruction jmp __b2 Removing instruction jmp __b3 Removing instruction jmp __b1 Removing instruction jmp __b4 Removing instruction jmp __b2 Removing instruction jmp __b3 Removing instruction jmp __b5 Removing instruction jmp __breturn Removing instruction jmp __b6 Removing instruction jmp __b8 Removing instruction jmp __b1 Removing instruction jmp __b4 Removing instruction jmp __b3 Removing instruction jmp __b2 Removing instruction jmp __breturn Removing instruction jmp __breturn Removing instruction jmp __b1 Removing instruction jmp __b4 Removing instruction jmp __b3 Removing instruction jmp __b2 Removing instruction jmp __breturn Removing instruction jmp __b1 Removing instruction jmp __b4 Removing instruction jmp __b3 Removing instruction jmp __b2 Removing instruction jmp __breturn Removing instruction jmp __b1 Removing instruction jmp __b4 Removing instruction jmp __b3 Removing instruction jmp __b2 Removing instruction jmp __breturn Removing instruction jmp __b1 Removing instruction jmp __breturn Removing instruction jmp __b1 Removing instruction jmp __b2 Removing instruction jmp __b3 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 #0 Replacing instruction ldy #0 with TAY Removing instruction lda #>0 Replacing instruction ldx #0 with TAX Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label __b2_from___b4 with __b2 Replacing label __b1_from___b2 with __b1 Replacing label __b2_from___b4 with __b2 Replacing label __b1_from___b2 with __b1 Replacing label __b2_from___b4 with __b2 Replacing label __b1_from___b2 with __b1 Replacing label __b2_from___b4 with __b2 Replacing label __b1_from___b2 with __b1 Replacing label __b2_from___b2 with __b2 Replacing label __b1_from___b3 with __b1 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 __bend_from___b1: Removing instruction __b2_from_main: Removing instruction __b3_from___b2: Removing instruction init_screen_from___b3: Removing instruction __b1_from___b2: Removing instruction __b2_from___b3: Removing instruction __b2_from___b4: Removing instruction __b1_from___b2: Removing instruction __b2_from___b3: Removing instruction __b2_from___b4: Removing instruction __b1_from___b2: Removing instruction __b2_from___b3: Removing instruction __b2_from___b4: Removing instruction __b1_from___b2: Removing instruction __b2_from___b3: Removing instruction __b2_from___b4: Removing instruction __b1_from___b3: Removing instruction __b2_from___b1: Removing instruction __b2_from___b2: 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 __b2: Removing instruction __b3: Removing instruction __b1_from___b3: Removing instruction __b4: Removing instruction __b1_from___b4: Removing instruction __b2: Removing instruction __b3: Removing instruction __b5: Removing instruction bitmap_line_xdyd_from___b4: Removing instruction __b6: Removing instruction __b8: Removing instruction bitmap_line_xdyi_from___b7: Removing instruction __b1_from_bitmap_line_xdyi: Removing instruction bitmap_plot_from___b1: Removing instruction __b4: Removing instruction __b3: Removing instruction __breturn: Removing instruction __breturn: Removing instruction __b1_from_bitmap_line_ydxi: Removing instruction bitmap_plot_from___b1: Removing instruction __b4: Removing instruction __b3: Removing instruction __breturn: Removing instruction __b1_from_bitmap_line_xdyd: Removing instruction bitmap_plot_from___b1: Removing instruction __b4: Removing instruction __b3: Removing instruction __breturn: Removing instruction __b1_from_bitmap_line_ydxd: Removing instruction bitmap_plot_from___b1: Removing instruction __b4: Removing instruction __b3: Removing instruction __breturn: Removing instruction __b1_from_init_screen: Removing instruction __breturn: Removing instruction __b1_from___b2: Removing instruction __b1_from_bitmap_clear: Removing instruction __b3: Removing instruction __breturn: 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 Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction jmp __b1 Removing instruction jmp __b1 Removing instruction jmp __b1 Removing instruction jmp __b1 Removing instruction jmp __b1 Removing instruction jmp __b2 Removing instruction jmp __b1 Removing instruction jmp __b2 Removing instruction jmp __b3 Succesful ASM optimization Pass5NextJumpElimination Replacing instruction lda.z e with TXA Replacing instruction lda.z e with TXA Removing instruction __bbegin: Removing instruction __breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE (label) @1 (label) @begin (label) @end (const nomodify byte*) BGCOL = (byte*) 53281 (const nomodify byte*) BITMAP = (byte*) 8192 (const nomodify byte*) BORDERCOL = (byte*) 53280 (const nomodify byte*) D011 = (byte*) 53265 (const nomodify byte*) SCREEN = (byte*) 1024 (const nomodify byte) VIC_BMM = (byte) $20 (const nomodify byte) VIC_DEN = (byte) $10 (const nomodify byte*) VIC_MEMORY = (byte*) 53272 (const nomodify byte) VIC_RSEL = (byte) 8 (void()) bitmap_clear() (label) bitmap_clear::@1 (label) bitmap_clear::@2 (label) bitmap_clear::@3 (label) bitmap_clear::@return (byte*) bitmap_clear::bitmap (word) bitmap_clear::bitmap#0 bitmap zp[2]:7 101.0 (byte*) bitmap_clear::bitmap#1 bitmap zp[2]:7 4200.6 (byte*) bitmap_clear::bitmap#2 bitmap zp[2]:7 15502.0 (byte*) bitmap_clear::bitmap#3 bitmap zp[2]:7 2103.0 (byte*) bitmap_clear::bitmap#5 bitmap zp[2]:7 202.0 (byte) bitmap_clear::x (byte) bitmap_clear::x#1 reg byte x 15001.5 (byte) bitmap_clear::x#2 reg byte x 6667.333333333333 (byte) bitmap_clear::y (byte) bitmap_clear::y#1 y zp[1]:6 1501.5 (byte) bitmap_clear::y#4 y zp[1]:6 333.6666666666667 (void()) bitmap_init((byte*) bitmap_init::bitmap) (byte~) bitmap_init::$0 reg byte a 2002.0 (byte~) bitmap_init::$10 zp[1]:11 500.5 (byte~) bitmap_init::$7 reg byte a 2002.0 (byte~) bitmap_init::$8 reg byte a 2002.0 (byte~) bitmap_init::$9 reg byte a 2002.0 (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::bitmap (byte) bitmap_init::bits (byte) bitmap_init::bits#1 reg byte y 1001.0 (byte) bitmap_init::bits#3 reg byte y 600.5999999999999 (byte) bitmap_init::bits#4 reg byte y 667.3333333333334 (byte) bitmap_init::x (byte) bitmap_init::x#1 reg byte x 1501.5 (byte) bitmap_init::x#2 reg byte x 667.3333333333333 (byte) bitmap_init::y (byte) bitmap_init::y#1 reg byte x 1501.5 (byte) bitmap_init::y#2 reg byte x 500.5 (byte*) bitmap_init::yoffs (byte*) bitmap_init::yoffs#1 yoffs zp[2]:7 2002.0 (byte*) bitmap_init::yoffs#2 yoffs zp[2]:7 625.625 (byte*) bitmap_init::yoffs#4 yoffs zp[2]:7 1001.0 (void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) (label) bitmap_line::@1 (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::@return (byte) bitmap_line::x0 (const byte) bitmap_line::x0#0 x0 = (byte) 0 (byte) bitmap_line::x1 (byte) bitmap_line::x1#0 reg byte a 851.0000000000001 (byte) bitmap_line::xd (byte) bitmap_line::xd#1 reg byte x 1334.6666666666667 (byte) bitmap_line::xd#2 reg byte x 1334.6666666666667 (byte) bitmap_line::y0 (const byte) bitmap_line::y0#0 y0 = (byte) 0 (byte) bitmap_line::y1 (const byte) bitmap_line::y1#0 y1 = (byte) $64 (byte) bitmap_line::yd (void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd) (label) bitmap_line_xdyd::@1 (label) bitmap_line_xdyd::@2 (label) bitmap_line_xdyd::@3 (label) bitmap_line_xdyd::@4 (label) bitmap_line_xdyd::@return (byte) bitmap_line_xdyd::e (byte) bitmap_line_xdyd::e#1 e zp[1]:5 1333334.6666666667 (byte) bitmap_line_xdyd::e#2 e zp[1]:5 2000002.0 (byte) bitmap_line_xdyd::e#3 e zp[1]:5 400000.4 (byte) bitmap_line_xdyd::e#6 e zp[1]:5 1500001.5 (byte) bitmap_line_xdyd::x (byte) bitmap_line_xdyd::x#0 x zp[1]:3 3667.333333333333 (byte) bitmap_line_xdyd::x#2 x zp[1]:3 428571.85714285716 (byte) bitmap_line_xdyd::x#3 x zp[1]:3 752501.0 (byte) bitmap_line_xdyd::x1 (byte) bitmap_line_xdyd::xd (byte) bitmap_line_xdyd::xd#0 xd zp[1]:6 153923.3076923077 (byte) bitmap_line_xdyd::y (byte) bitmap_line_xdyd::y#2 y zp[1]:4 1000001.0 (byte) bitmap_line_xdyd::y#3 y zp[1]:4 571429.1428571428 (byte) bitmap_line_xdyd::y#6 y zp[1]:4 1500001.5 (byte) bitmap_line_xdyd::yd (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) (byte~) bitmap_line_xdyi::$6 reg byte x 2000002.0 (label) bitmap_line_xdyi::@1 (label) bitmap_line_xdyi::@2 (label) bitmap_line_xdyi::@3 (label) bitmap_line_xdyi::@4 (label) bitmap_line_xdyi::@return (byte) bitmap_line_xdyi::e (byte) bitmap_line_xdyi::e#1 e zp[1]:5 1333334.6666666667 (byte) bitmap_line_xdyi::e#2 e zp[1]:5 2000002.0 (byte) bitmap_line_xdyi::e#3 e zp[1]:5 400000.4 (byte) bitmap_line_xdyi::e#6 e zp[1]:5 1000001.0 (byte) bitmap_line_xdyi::x (byte) bitmap_line_xdyi::x#2 x zp[1]:3 375000.375 (byte) bitmap_line_xdyi::x#3 x zp[1]:3 750000.75 (byte) bitmap_line_xdyi::x1 (byte) bitmap_line_xdyi::x1#1 x1 zp[1]:11 66733.46666666667 (byte) bitmap_line_xdyi::xd (byte) bitmap_line_xdyi::xd#1 xd zp[1]:6 142928.7857142857 (byte) bitmap_line_xdyi::y (byte) bitmap_line_xdyi::y#2 y zp[1]:4 1000001.0 (byte) bitmap_line_xdyi::y#3 y zp[1]:4 571429.1428571428 (byte) bitmap_line_xdyi::y#6 y zp[1]:4 1000001.0 (byte) bitmap_line_xdyi::yd (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) (label) bitmap_line_ydxd::@1 (label) bitmap_line_ydxd::@2 (label) bitmap_line_ydxd::@3 (label) bitmap_line_ydxd::@4 (label) bitmap_line_ydxd::@return (byte) bitmap_line_ydxd::e (byte) bitmap_line_ydxd::e#0 e zp[1]:5 20002.0 (byte) bitmap_line_ydxd::e#1 e zp[1]:5 1333334.6666666667 (byte) bitmap_line_ydxd::e#2 e zp[1]:5 2000002.0 (byte) bitmap_line_ydxd::e#3 e zp[1]:5 402000.60000000003 (byte) bitmap_line_ydxd::e#6 e zp[1]:5 1500001.5 (byte) bitmap_line_ydxd::x (byte) bitmap_line_ydxd::x#2 x zp[1]:3 1000001.0 (byte) bitmap_line_ydxd::x#3 x zp[1]:3 571429.1428571428 (byte) bitmap_line_ydxd::x#6 x zp[1]:3 1500001.5 (byte) bitmap_line_ydxd::xd (byte) bitmap_line_ydxd::xd#0 xd zp[1]:6 77769.46153846153 (byte) bitmap_line_ydxd::y (byte) bitmap_line_ydxd::y#2 y zp[1]:4 750000.75 (byte) bitmap_line_ydxd::y#3 y zp[1]:4 428571.85714285716 (byte) bitmap_line_ydxd::y1 (byte) bitmap_line_ydxd::yd (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) (label) bitmap_line_ydxi::@1 (label) bitmap_line_ydxi::@2 (label) bitmap_line_ydxi::@3 (label) bitmap_line_ydxi::@4 (label) bitmap_line_ydxi::@return (byte) bitmap_line_ydxi::e (byte) bitmap_line_ydxi::e#0 e zp[1]:5 20002.0 (byte) bitmap_line_ydxi::e#1 e zp[1]:5 1333334.6666666667 (byte) bitmap_line_ydxi::e#2 e zp[1]:5 2000002.0 (byte) bitmap_line_ydxi::e#3 e zp[1]:5 402000.60000000003 (byte) bitmap_line_ydxi::e#6 e zp[1]:5 1500001.5 (byte) bitmap_line_ydxi::x (byte) bitmap_line_ydxi::x#2 x zp[1]:3 1000001.0 (byte) bitmap_line_ydxi::x#3 x zp[1]:3 571429.1428571428 (byte) bitmap_line_ydxi::x#6 x zp[1]:3 1500001.5 (byte) bitmap_line_ydxi::xd (byte) bitmap_line_ydxi::xd#1 xd zp[1]:6 77769.46153846153 (byte) bitmap_line_ydxi::y (byte) bitmap_line_ydxi::y#2 y zp[1]:4 428571.85714285716 (byte) bitmap_line_ydxi::y#3 y zp[1]:4 750000.75 (byte) bitmap_line_ydxi::y1 (byte) bitmap_line_ydxi::yd (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) (byte~) bitmap_plot::$1 reg byte a 2.0000002E7 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter (word) bitmap_plot::plotter#0 plotter zp[2]:7 5000000.5 (word) bitmap_plot::plotter_x (word) bitmap_plot::plotter_x#0 plotter_x zp[2]:7 1.0000001E7 (word) bitmap_plot::plotter_y (word) bitmap_plot::plotter_y#0 plotter_y zp[2]:9 2.0000002E7 (byte) bitmap_plot::x (byte) bitmap_plot::x#0 reg byte x 1000001.0 (byte) bitmap_plot::x#1 reg byte x 1000001.0 (byte) bitmap_plot::x#2 reg byte x 1000001.0 (byte) bitmap_plot::x#3 reg byte x 1000001.0 (byte) bitmap_plot::x#4 reg byte x 8500001.75 (byte) bitmap_plot::y (byte) bitmap_plot::y#0 reg byte y 2000002.0 (byte) bitmap_plot::y#1 reg byte y 2000002.0 (byte) bitmap_plot::y#2 reg byte y 2000002.0 (byte) bitmap_plot::y#3 reg byte y 2000002.0 (byte) bitmap_plot::y#4 reg byte y 1.2000003E7 (const to_nomodify byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) } (const to_nomodify byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) } (const to_nomodify byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) } (const to_nomodify byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) } (const to_nomodify byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) } (void()) init_screen() (label) init_screen::@1 (label) init_screen::@2 (label) init_screen::@return (byte*) init_screen::c (byte*) init_screen::c#1 c zp[2]:7 2002.0 (byte*) init_screen::c#2 c zp[2]:7 1334.6666666666667 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (byte) next (byte) next#1 next zp[1]:2 202.0 (byte) next#4 next zp[1]:2 101.0 zp[1]:2 [ next#4 next#1 ] reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] zp[1]:3 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] zp[1]:4 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] zp[1]:5 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_line::x1#0 ] reg byte x [ bitmap_line::xd#2 ] reg byte x [ bitmap_line::xd#1 ] zp[1]:6 [ bitmap_line_xdyi::xd#1 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#0 bitmap_clear::y#4 bitmap_clear::y#1 ] reg byte x [ bitmap_line_xdyi::$6 ] zp[2]:7 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 init_screen::c#2 init_screen::c#1 ] zp[2]:9 [ bitmap_plot::plotter_y#0 ] reg byte a [ bitmap_plot::$1 ] reg byte a [ bitmap_init::$0 ] zp[1]:11 [ bitmap_init::$10 bitmap_line_xdyi::x1#1 ] reg byte a [ bitmap_init::$7 ] reg byte a [ bitmap_init::$8 ] reg byte a [ bitmap_init::$9 ] FINAL ASSEMBLER Score: 30221 // File Comments // Illustrates problem with bitmap-draw.kc line() // Reported by Janne Johansson // Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" // Global Constants & labels .label BORDERCOL = $d020 .label BGCOL = $d021 .label D011 = $d011 .const VIC_BMM = $20 .const VIC_DEN = $10 .const VIC_RSEL = 8 .label VIC_MEMORY = $d018 .label SCREEN = $400 .label BITMAP = $2000 .label next = 2 // @begin // [1] phi from @begin to @1 [phi:@begin->@1] // @1 // [2] call main // [3] phi from @1 to @end [phi:@1->@end] // @end // main main: { // *BORDERCOL = 0 // [4] *((const nomodify byte*) BORDERCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDERCOL // *BGCOL = 0 // [5] *((const nomodify byte*) BGCOL) ← (byte) 0 -- _deref_pbuc1=vbuc2 sta BGCOL // *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 // [6] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta D011 // *VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400)) // [7] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) BITMAP&(word) $3fff/(word) $400 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400 sta VIC_MEMORY // bitmap_init(BITMAP) // [8] call bitmap_init // [110] phi from main to bitmap_init [phi:main->bitmap_init] jsr bitmap_init // [9] phi from main to main::@2 [phi:main->main::@2] // main::@2 // bitmap_clear() // [10] call bitmap_clear jsr bitmap_clear // [11] phi from main::@2 to main::@3 [phi:main::@2->main::@3] // main::@3 // init_screen() // [12] call init_screen // [93] phi from main::@3 to init_screen [phi:main::@3->init_screen] jsr init_screen // [13] phi from main::@3 to main::@1 [phi:main::@3->main::@1] // [13] phi (byte) next#4 = (byte) 0 [phi:main::@3->main::@1#0] -- vbuz1=vbuc1 lda #0 sta.z next // main::@1 __b1: // bitmap_line(0,next,0,100) // [14] (byte) bitmap_line::x1#0 ← (byte) next#4 -- vbuaa=vbuz1 lda.z next // [15] call bitmap_line jsr bitmap_line // main::@4 // next++; // [16] (byte) next#1 ← ++ (byte) next#4 -- vbuz1=_inc_vbuz1 inc.z next // [13] phi from main::@4 to main::@1 [phi:main::@4->main::@1] // [13] phi (byte) next#4 = (byte) next#1 [phi:main::@4->main::@1#0] -- register_copy jmp __b1 } // bitmap_line // Draw a line on the bitmap // bitmap_line(byte register(A) x1) bitmap_line: { .label x0 = 0 .label y0 = 0 .label y1 = $64 // if(x0bitmap_line_xdyd] jsr bitmap_line_xdyd rts // bitmap_line::@1 __b1: // xd = x1-x0 // [26] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuaa tax // bitmap_line::@6 // if(ydbitmap_line_xdyi] jsr bitmap_line_xdyi rts } // bitmap_line_xdyi // bitmap_line_xdyi(byte zp(3) x, byte zp(4) y, byte zp($b) x1, byte zp(6) xd) bitmap_line_xdyi: { .label x1 = $b .label xd = 6 .label x = 3 .label e = 5 .label y = 4 // [34] phi from bitmap_line_xdyi to bitmap_line_xdyi::@1 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1] // [34] phi (byte) bitmap_line_xdyi::e#3 = (const byte) bitmap_line::y1#0>>(byte) 1 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1#0] -- vbuz1=vbuc1 lda #bitmap_line.y1>>1 sta.z e // [34] phi (byte) bitmap_line_xdyi::y#3 = (const byte) bitmap_line::y0#0 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y0 sta.z y // [34] phi (byte) bitmap_line_xdyi::x#3 = (const byte) bitmap_line::x0#0 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1#2] -- vbuz1=vbuc1 lda #bitmap_line.x0 sta.z x // [34] phi from bitmap_line_xdyi::@2 to bitmap_line_xdyi::@1 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1] // [34] phi (byte) bitmap_line_xdyi::e#3 = (byte) bitmap_line_xdyi::e#6 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#0] -- register_copy // [34] phi (byte) bitmap_line_xdyi::y#3 = (byte) bitmap_line_xdyi::y#6 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#1] -- register_copy // [34] phi (byte) bitmap_line_xdyi::x#3 = (byte) bitmap_line_xdyi::x#2 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#2] -- register_copy // bitmap_line_xdyi::@1 __b1: // bitmap_plot(x,y) // [35] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuxx=vbuz1 ldx.z x // [36] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 ldy.z y // [37] call bitmap_plot // [47] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] // [47] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy // [47] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot // bitmap_line_xdyi::@4 // x++; // [38] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 inc.z x // e = e+yd // [39] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_plus_vbuc1 lax.z e axs #-[bitmap_line.y1] stx.z e // if(xd=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -- vbuz1_ge_vbuz2_then_la1 lda.z xd cmp.z e bcs __b2 // bitmap_line_xdyi::@3 // y++; // [41] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 inc.z y // e = e - xd // [42] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 -- vbuz1=vbuz1_minus_vbuz2 txa sec sbc.z xd sta.z e // [43] phi from bitmap_line_xdyi::@3 bitmap_line_xdyi::@4 to bitmap_line_xdyi::@2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@4->bitmap_line_xdyi::@2] // [43] phi (byte) bitmap_line_xdyi::e#6 = (byte) bitmap_line_xdyi::e#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@4->bitmap_line_xdyi::@2#0] -- register_copy // [43] phi (byte) bitmap_line_xdyi::y#6 = (byte) bitmap_line_xdyi::y#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@4->bitmap_line_xdyi::@2#1] -- register_copy // bitmap_line_xdyi::@2 __b2: // x1+1 // [44] (byte~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#1 + (byte) 1 -- vbuxx=vbuz1_plus_1 ldx.z x1 inx // while (x!=(x1+1)) // [45] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuxx_then_la1 cpx.z x bne __b1 // bitmap_line_xdyi::@return // } // [46] return rts } // bitmap_plot // bitmap_plot(byte register(X) x, byte register(Y) y) bitmap_plot: { .label plotter_x = 7 .label plotter_y = 9 .label plotter = 7 // plotter_x = { bitmap_plot_xhi[x], bitmap_plot_xlo[x] } // [48] (word) bitmap_plot::plotter_x#0 ← *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda bitmap_plot_xhi,x sta.z plotter_x+1 lda bitmap_plot_xlo,x sta.z plotter_x // plotter_y = { bitmap_plot_yhi[y], bitmap_plot_ylo[y] } // [49] (word) bitmap_plot::plotter_y#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy lda bitmap_plot_yhi,y sta.z plotter_y+1 lda bitmap_plot_ylo,y sta.z plotter_y // plotter_x+plotter_y // [50] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z plotter clc adc.z plotter_y sta.z plotter lda.z plotter+1 adc.z plotter_y+1 sta.z plotter+1 // *plotter | bitmap_plot_bit[x] // [51] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx lda bitmap_plot_bit,x ldy #0 ora (plotter),y // *plotter = *plotter | bitmap_plot_bit[x] // [52] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa sta (plotter),y // bitmap_plot::@return // } // [53] return rts } // bitmap_line_ydxi // bitmap_line_ydxi(byte zp(4) y, byte zp(3) x, byte zp(6) xd) bitmap_line_ydxi: { .label xd = 6 .label e = 5 .label y = 4 .label x = 3 // e = xd>>1 // [54] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z xd lsr sta.z e // [55] phi from bitmap_line_ydxi to bitmap_line_ydxi::@1 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1] // [55] phi (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#0 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1#0] -- register_copy // [55] phi (byte) bitmap_line_ydxi::y#3 = (const byte) bitmap_line::y0#0 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y0 sta.z y // [55] phi (byte) bitmap_line_ydxi::x#3 = (const byte) bitmap_line::x0#0 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1#2] -- vbuz1=vbuc1 lda #bitmap_line.x0 sta.z x // [55] phi from bitmap_line_ydxi::@2 to bitmap_line_ydxi::@1 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1] // [55] phi (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#6 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#0] -- register_copy // [55] phi (byte) bitmap_line_ydxi::y#3 = (byte) bitmap_line_ydxi::y#2 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#1] -- register_copy // [55] phi (byte) bitmap_line_ydxi::x#3 = (byte) bitmap_line_ydxi::x#6 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#2] -- register_copy // bitmap_line_ydxi::@1 __b1: // bitmap_plot(x,y) // [56] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 -- vbuxx=vbuz1 ldx.z x // [57] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 ldy.z y // [58] call bitmap_plot // [47] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] // [47] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy // [47] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot // bitmap_line_ydxi::@4 // y++; // [59] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 inc.z y // e = e+xd // [60] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 -- vbuz1=vbuz1_plus_vbuz2 lda.z e clc adc.z xd sta.z e // if(yd=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -- vbuc1_ge_vbuz1_then_la1 lda #bitmap_line.y1 cmp.z e bcs __b2 // bitmap_line_ydxi::@3 // x++; // [62] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuz1=_inc_vbuz1 inc.z x // e = e - yd // [63] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_minus_vbuc1 lax.z e axs #bitmap_line.y1 stx.z e // [64] phi from bitmap_line_ydxi::@3 bitmap_line_ydxi::@4 to bitmap_line_ydxi::@2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@4->bitmap_line_ydxi::@2] // [64] phi (byte) bitmap_line_ydxi::e#6 = (byte) bitmap_line_ydxi::e#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@4->bitmap_line_ydxi::@2#0] -- register_copy // [64] phi (byte) bitmap_line_ydxi::x#6 = (byte) bitmap_line_ydxi::x#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@4->bitmap_line_ydxi::@2#1] -- register_copy // bitmap_line_ydxi::@2 __b2: // while (y!=(y1+1)) // [65] if((byte) bitmap_line_ydxi::y#2!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuc1_then_la1 lda #bitmap_line.y1+1 cmp.z y bne __b1 // bitmap_line_ydxi::@return // } // [66] return rts } // bitmap_line_xdyd // bitmap_line_xdyd(byte zp(3) x, byte zp(4) y, byte zp(6) xd) bitmap_line_xdyd: { .label x = 3 .label xd = 6 .label e = 5 .label y = 4 // [68] phi from bitmap_line_xdyd to bitmap_line_xdyd::@1 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1] // [68] phi (byte) bitmap_line_xdyd::e#3 = (const byte) bitmap_line::y1#0>>(byte) 1 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1#0] -- vbuz1=vbuc1 lda #bitmap_line.y1>>1 sta.z e // [68] phi (byte) bitmap_line_xdyd::y#3 = (const byte) bitmap_line::y1#0 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y1 sta.z y // [68] phi (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1#2] -- register_copy // [68] phi from bitmap_line_xdyd::@2 to bitmap_line_xdyd::@1 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1] // [68] phi (byte) bitmap_line_xdyd::e#3 = (byte) bitmap_line_xdyd::e#6 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#0] -- register_copy // [68] phi (byte) bitmap_line_xdyd::y#3 = (byte) bitmap_line_xdyd::y#6 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#1] -- register_copy // [68] phi (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#2 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#2] -- register_copy // bitmap_line_xdyd::@1 __b1: // bitmap_plot(x,y) // [69] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 ldx.z x // [70] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 ldy.z y // [71] call bitmap_plot // [47] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] // [47] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy // [47] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot // bitmap_line_xdyd::@4 // x++; // [72] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 inc.z x // e = e+yd // [73] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_plus_vbuc1 lax.z e axs #-[bitmap_line.y1] stx.z e // if(xd=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -- vbuz1_ge_vbuz2_then_la1 lda.z xd cmp.z e bcs __b2 // bitmap_line_xdyd::@3 // y--; // [75] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 dec.z y // e = e - xd // [76] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 -- vbuz1=vbuz1_minus_vbuz2 txa sec sbc.z xd sta.z e // [77] phi from bitmap_line_xdyd::@3 bitmap_line_xdyd::@4 to bitmap_line_xdyd::@2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@4->bitmap_line_xdyd::@2] // [77] phi (byte) bitmap_line_xdyd::e#6 = (byte) bitmap_line_xdyd::e#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@4->bitmap_line_xdyd::@2#0] -- register_copy // [77] phi (byte) bitmap_line_xdyd::y#6 = (byte) bitmap_line_xdyd::y#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@4->bitmap_line_xdyd::@2#1] -- register_copy // bitmap_line_xdyd::@2 __b2: // while (x!=(x1+1)) // [78] if((byte) bitmap_line_xdyd::x#2!=(byte) 1) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuc1_then_la1 lda #1 cmp.z x bne __b1 // bitmap_line_xdyd::@return // } // [79] return rts } // bitmap_line_ydxd // bitmap_line_ydxd(byte zp(4) y, byte zp(3) x, byte zp(6) xd) bitmap_line_ydxd: { .label xd = 6 .label e = 5 .label y = 4 .label x = 3 // e = xd>>1 // [80] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z xd lsr sta.z e // [81] phi from bitmap_line_ydxd to bitmap_line_ydxd::@1 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1] // [81] phi (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#0 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1#0] -- register_copy // [81] phi (byte) bitmap_line_ydxd::y#2 = (const byte) bitmap_line::y0#0 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y0 sta.z y // [81] phi (byte) bitmap_line_ydxd::x#3 = (const byte) bitmap_line::x0#0 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1#2] -- vbuz1=vbuc1 lda #bitmap_line.x0 sta.z x // [81] phi from bitmap_line_ydxd::@2 to bitmap_line_ydxd::@1 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1] // [81] phi (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#6 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#0] -- register_copy // [81] phi (byte) bitmap_line_ydxd::y#2 = (byte) bitmap_line_ydxd::y#3 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#1] -- register_copy // [81] phi (byte) bitmap_line_ydxd::x#3 = (byte) bitmap_line_ydxd::x#6 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#2] -- register_copy // bitmap_line_ydxd::@1 __b1: // bitmap_plot(x,y) // [82] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 -- vbuxx=vbuz1 ldx.z x // [83] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 ldy.z y // [84] call bitmap_plot // [47] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] // [47] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy // [47] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot // bitmap_line_ydxd::@4 // y = y++; // [85] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 inc.z y // e = e+xd // [86] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 -- vbuz1=vbuz1_plus_vbuz2 lda.z e clc adc.z xd sta.z e // if(yd=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -- vbuc1_ge_vbuz1_then_la1 lda #bitmap_line.y1 cmp.z e bcs __b2 // bitmap_line_ydxd::@3 // x--; // [88] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuz1=_dec_vbuz1 dec.z x // e = e - yd // [89] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_minus_vbuc1 lax.z e axs #bitmap_line.y1 stx.z e // [90] phi from bitmap_line_ydxd::@3 bitmap_line_ydxd::@4 to bitmap_line_ydxd::@2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@4->bitmap_line_ydxd::@2] // [90] phi (byte) bitmap_line_ydxd::e#6 = (byte) bitmap_line_ydxd::e#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@4->bitmap_line_ydxd::@2#0] -- register_copy // [90] phi (byte) bitmap_line_ydxd::x#6 = (byte) bitmap_line_ydxd::x#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@4->bitmap_line_ydxd::@2#1] -- register_copy // bitmap_line_ydxd::@2 __b2: // while (y!=(y1+1)) // [91] if((byte) bitmap_line_ydxd::y#3!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuc1_then_la1 lda #bitmap_line.y1+1 cmp.z y bne __b1 // bitmap_line_ydxd::@return // } // [92] return rts } // init_screen init_screen: { .label c = 7 // [94] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] // [94] phi (byte*) init_screen::c#2 = (const nomodify byte*) SCREEN [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta.z c+1 // init_screen::@1 __b1: // for(byte* c = SCREEN; c!=SCREEN+$400;c++) // [95] if((byte*) init_screen::c#2!=(const nomodify byte*) SCREEN+(word) $400) goto init_screen::@2 -- pbuz1_neq_pbuc1_then_la1 lda.z c+1 cmp #>SCREEN+$400 bne __b2 lda.z c cmp #init_screen::@1] // [94] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@1#0] -- register_copy jmp __b1 } // bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = 7 .label y = 6 // bitmap = (char*) { bitmap_plot_xhi[0], bitmap_plot_xlo[0] } // [99] (word) bitmap_clear::bitmap#0 ← *((const to_nomodify byte*) bitmap_plot_xhi) w= *((const to_nomodify byte*) bitmap_plot_xlo) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_xlo sta.z bitmap lda bitmap_plot_xhi sta.z bitmap+1 // [100] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 // [101] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] // [101] phi (byte) bitmap_clear::y#4 = (byte) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta.z y // [101] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy // [101] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] // [101] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy // [101] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy // bitmap_clear::@1 __b1: // [102] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] // [102] phi (byte) bitmap_clear::x#2 = (byte) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 ldx #0 // [102] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy // [102] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] // [102] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy // [102] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy // bitmap_clear::@2 __b2: // *bitmap++ = 0 // [103] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (bitmap),y // *bitmap++ = 0; // [104] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc.z bitmap bne !+ inc.z bitmap+1 !: // for( char x: 0..199 ) // [105] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx // [106] if((byte) bitmap_clear::x#1!=(byte) $c8) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$c8 bne __b2 // bitmap_clear::@3 // for( char y: 0..39 ) // [107] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc.z y // [108] if((byte) bitmap_clear::y#1!=(byte) $28) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp.z y bne __b1 // bitmap_clear::@return // } // [109] return rts } // bitmap_init // Initialize the bitmap plotter tables for a specific bitmap bitmap_init: { .label __10 = $b .label yoffs = 7 // [111] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] // [111] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#0] -- vbuyy=vbuc1 ldy #$80 // [111] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#1] -- vbuxx=vbuc1 ldx #0 // [111] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] // [111] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy // [111] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy // bitmap_init::@1 __b1: // x&$f8 // [112] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 -- vbuaa=vbuxx_band_vbuc1 txa and #$f8 // bitmap_plot_xlo[x] = x&$f8 // [113] *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_xlo,x // bitmap_plot_xhi[x] = >bitmap // [114] *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const nomodify byte*) BITMAP -- pbuc1_derefidx_vbuxx=vbuc2 lda #>BITMAP sta bitmap_plot_xhi,x // bitmap_plot_bit[x] = bits // [115] *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy tya sta bitmap_plot_bit,x // bits = bits>>1 // [116] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuyy=vbuyy_ror_1 tya lsr tay // if(bits==0) // [117] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuyy_neq_0_then_la1 cpy #0 bne __b2 // [119] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] // [119] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuyy=vbuc1 ldy #$80 // [118] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] // bitmap_init::@6 // [119] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] // [119] 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(char x : 0..255) // [120] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx // [121] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne __b1 // [122] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] // [122] phi (byte*) bitmap_init::yoffs#2 = (byte*) 0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #<0 sta.z yoffs sta.z yoffs+1 // [122] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 tax // [122] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] // [122] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy // [122] 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 // [123] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1 lda #7 sax.z __10 // yoffs // [127] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda.z yoffs+1 // bitmap_plot_yhi[y] = >yoffs // [128] *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x // if((y&$7)==7) // [129] if((byte~) bitmap_init::$10!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 lda #7 cmp.z __10 bne __b4 // bitmap_init::@5 // yoffs = yoffs + 40*8 // [130] (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 // [131] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] // [131] 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(char y : 0..255) // [132] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx // [133] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne __b3 // bitmap_init::@return // } // [134] return rts } // File Data // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 bitmap_plot_ylo: .fill $100, 0 bitmap_plot_yhi: .fill $100, 0 bitmap_plot_bit: .fill $100, 0