PARSING src/test/java/dk/camelot64/kickc/test/kc/bitmap-plotter.kc
byte* D011 = $d011;
  byte RST8 = %10000000;
  byte ECM =  %01000000;
  byte BMM =  %00100000;
  byte DEN =  %00010000;
  byte RSEL =  %00001000;
byte* RASTER = $d012;
byte* D016 = $d016;
  byte MCM =  %00010000;
  byte CSEL = %00001000;
byte* D018 = $d018;
byte* BGCOL = $d020;
byte* FGCOL = $d021;

byte* COLS = $d800;


byte* SCREEN = $400;
const byte* BITMAP = $2000;

void main() {
    *BGCOL = 0;
    *FGCOL = 0;
    *D011 = BMM|DEN|RSEL|3;
    *D018 = (byte)(((word)SCREEN/$40)|((word)BITMAP/$400));
    init_screen();
    init_plot_tables();
    do {
        do {} while (*RASTER!=$ff);
        (*BGCOL)++;
        plots();
        (*BGCOL)--;
    } while (true);
}

byte[] plots_x = { 60, 80, 110, 80, 60, 40, 10, 40 };
byte[] plots_y = { 10, 40, 60, 80, 110, 80, 60, 40 };
byte plots_cnt = 8;

void plots() {
    for(byte i=0; i<plots_cnt;i++) {
        plot(plots_x[i], plots_y[i]);
    }
}

const byte[256] plot_xlo;
const byte[256] plot_xhi;
const byte[256] plot_ylo;
const byte[256] plot_yhi;
const byte[256] plot_bit;

void plot(byte x, byte y) {
    byte* plotter_x = 0;
    word plotter_y = 0;
    >plotter_x = plot_xhi[x];  // Needs word arrays arranged as two underlying byte arrays to allow byte* plotter_x = plot_x[x]; - and eventually - byte* plotter = plot_x[x] + plot_y[y];
    <plotter_x = plot_xlo[x];
    >plotter_y = plot_yhi[y];
    <plotter_y = plot_ylo[y];
    byte* plotter = plotter_x+plotter_y;
    *plotter = *plotter | plot_bit[x];
}

void init_plot_tables() {
    byte bits = $80;
    for(byte x : 0..255) {
        plot_xlo[x] = x&$f8;
        plot_xhi[x] = >BITMAP;
        plot_bit[x] = bits;
        bits = bits>>1;
        if(bits==0) {
          bits = $80;
        }
    }
    byte* yoffs = $0;
    for(byte y : 0..255) {
        plot_ylo[y] = y&$7 | <yoffs;
        plot_yhi[y] = >yoffs;
        if((y&$7)==7) {
            yoffs = yoffs + 40*8; // Needs better constant type inference for yoffs = yoffs + 40*8;
        }
    }
}

void init_screen() {
    for(byte* b = BITMAP; b!=BITMAP+$2000; b++) {
        *b = 0;
    }
    for(byte* c = SCREEN; c!=SCREEN+$400;c++) {
        *c = $14;
    }
}

Adding pre/post-modifier *((byte*) BGCOL) ← ++ *((byte*) BGCOL)
Adding pre/post-modifier *((byte*) BGCOL) ← -- *((byte*) BGCOL)
Adding pre/post-modifier (byte) plots::i ← ++ (byte) plots::i
Adding pre/post-modifier (byte*) init_screen::b ← ++ (byte*) init_screen::b
Adding pre/post-modifier (byte*) init_screen::c ← ++ (byte*) init_screen::c

STATEMENTS
  (byte*) D011 ← (word/dword/signed dword) 53265
  (byte) RST8 ← (byte/word/signed word/dword/signed dword) 128
  (byte) ECM ← (byte/signed byte/word/signed word/dword/signed dword) 64
  (byte) BMM ← (byte/signed byte/word/signed word/dword/signed dword) 32
  (byte) DEN ← (byte/signed byte/word/signed word/dword/signed dword) 16
  (byte) RSEL ← (byte/signed byte/word/signed word/dword/signed dword) 8
  (byte*) RASTER ← (word/dword/signed dword) 53266
  (byte*) D016 ← (word/dword/signed dword) 53270
  (byte) MCM ← (byte/signed byte/word/signed word/dword/signed dword) 16
  (byte) CSEL ← (byte/signed byte/word/signed word/dword/signed dword) 8
  (byte*) D018 ← (word/dword/signed dword) 53272
  (byte*) BGCOL ← (word/dword/signed dword) 53280
  (byte*) FGCOL ← (word/dword/signed dword) 53281
  (byte*) COLS ← (word/dword/signed dword) 55296
  (byte*) SCREEN ← (word/signed word/dword/signed dword) 1024
  (byte*) BITMAP ← (word/signed word/dword/signed dword) 8192
proc (void()) main()
  *((byte*) BGCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 0
  *((byte*) FGCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte~) main::$0 ← (byte) BMM | (byte) DEN
  (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL
  (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word/dword/signed dword) 3
  *((byte*) D011) ← (byte~) main::$2
  (word~) main::$3 ← ((word)) (byte*) SCREEN
  (word~) main::$4 ← (word~) main::$3 / (byte/signed byte/word/signed word/dword/signed dword) 64
  (word~) main::$5 ← ((word)) (byte*) BITMAP
  (word~) main::$6 ← (word~) main::$5 / (word/signed word/dword/signed dword) 1024
  (word~) main::$7 ← (word~) main::$4 | (word~) main::$6
  (byte~) main::$8 ← ((byte)) (word~) main::$7
  *((byte*) D018) ← (byte~) main::$8
  (void~) main::$9 ← call init_screen 
  (void~) main::$10 ← call init_plot_tables 
main::@1:
main::@2:
  (boolean~) main::$11 ← *((byte*) RASTER) != (byte/word/signed word/dword/signed dword) 255
  if((boolean~) main::$11) goto main::@2
  *((byte*) BGCOL) ← ++ *((byte*) BGCOL)
  (void~) main::$12 ← call plots 
  *((byte*) BGCOL) ← -- *((byte*) BGCOL)
  if(true) goto main::@1
main::@return:
  return 
endproc // main()
  (byte[]) plots_x ← { (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 110, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 40 }
  (byte[]) plots_y ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 110, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 40 }
  (byte) plots_cnt ← (byte/signed byte/word/signed word/dword/signed dword) 8
proc (void()) plots()
  (byte) plots::i ← (byte/signed byte/word/signed word/dword/signed dword) 0
plots::@1:
  (void~) plots::$0 ← call plot *((byte[]) plots_x + (byte) plots::i) *((byte[]) plots_y + (byte) plots::i) 
  (byte) plots::i ← ++ (byte) plots::i
  (boolean~) plots::$1 ← (byte) plots::i < (byte) plots_cnt
  if((boolean~) plots::$1) goto plots::@1
plots::@return:
  return 
endproc // plots()
  (byte[256]) plot_xlo ← { fill( 256, 0) }
  (byte[256]) plot_xhi ← { fill( 256, 0) }
  (byte[256]) plot_ylo ← { fill( 256, 0) }
  (byte[256]) plot_yhi ← { fill( 256, 0) }
  (byte[256]) plot_bit ← { fill( 256, 0) }
proc (void()) plot((byte) plot::x , (byte) plot::y)
  (byte*) plot::plotter_x ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (word) plot::plotter_y ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte~) plot::$0 ← > (byte*) plot::plotter_x
  lval((byte~) plot::$0) ← *((byte[256]) plot_xhi + (byte) plot::x)
  (byte~) plot::$1 ← < (byte*) plot::plotter_x
  lval((byte~) plot::$1) ← *((byte[256]) plot_xlo + (byte) plot::x)
  (byte~) plot::$2 ← > (word) plot::plotter_y
  lval((byte~) plot::$2) ← *((byte[256]) plot_yhi + (byte) plot::y)
  (byte~) plot::$3 ← < (word) plot::plotter_y
  lval((byte~) plot::$3) ← *((byte[256]) plot_ylo + (byte) plot::y)
  (byte*~) plot::$4 ← (byte*) plot::plotter_x + (word) plot::plotter_y
  (byte*) plot::plotter ← (byte*~) plot::$4
  (byte~) plot::$5 ← *((byte*) plot::plotter) | *((byte[256]) plot_bit + (byte) plot::x)
  *((byte*) plot::plotter) ← (byte~) plot::$5
plot::@return:
  return 
endproc // plot()
proc (void()) init_plot_tables()
  (byte) init_plot_tables::bits ← (byte/word/signed word/dword/signed dword) 128
  (byte) init_plot_tables::x ← (byte/signed byte/word/signed word/dword/signed dword) 0
init_plot_tables::@1:
  (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x & (byte/word/signed word/dword/signed dword) 248
  *((byte[256]) plot_xlo + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$0
  (byte~) init_plot_tables::$1 ← > (byte*) BITMAP
  *((byte[256]) plot_xhi + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$1
  *((byte[256]) plot_bit + (byte) init_plot_tables::x) ← (byte) init_plot_tables::bits
  (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits >> (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) init_plot_tables::bits ← (byte~) init_plot_tables::$2
  (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits == (byte/signed byte/word/signed word/dword/signed dword) 0
  (boolean~) init_plot_tables::$4 ← ! (boolean~) init_plot_tables::$3
  if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2
  (byte) init_plot_tables::bits ← (byte/word/signed word/dword/signed dword) 128
init_plot_tables::@2:
  (byte) init_plot_tables::x ← ++ (byte) init_plot_tables::x
  (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x != (byte/signed byte/word/signed word/dword/signed dword) 0
  if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1
  (byte*) init_plot_tables::yoffs ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte) init_plot_tables::y ← (byte/signed byte/word/signed word/dword/signed dword) 0
init_plot_tables::@3:
  (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word/dword/signed dword) 7
  (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs
  (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7
  *((byte[256]) plot_ylo + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$8
  (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs
  *((byte[256]) plot_yhi + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$9
  (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word/dword/signed dword) 7
  (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word/dword/signed dword) 7
  (boolean~) init_plot_tables::$12 ← ! (boolean~) init_plot_tables::$11
  if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4
  (word/signed word/dword/signed dword~) init_plot_tables::$13 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 8
  (byte*~) init_plot_tables::$14 ← (byte*) init_plot_tables::yoffs + (word/signed word/dword/signed dword~) init_plot_tables::$13
  (byte*) init_plot_tables::yoffs ← (byte*~) init_plot_tables::$14
init_plot_tables::@4:
  (byte) init_plot_tables::y ← ++ (byte) init_plot_tables::y
  (boolean~) init_plot_tables::$15 ← (byte) init_plot_tables::y != (byte/signed byte/word/signed word/dword/signed dword) 0
  if((boolean~) init_plot_tables::$15) goto init_plot_tables::@3
init_plot_tables::@return:
  return 
endproc // init_plot_tables()
proc (void()) init_screen()
  (byte*) init_screen::b ← (byte*) BITMAP
init_screen::@1:
  *((byte*) init_screen::b) ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte*) init_screen::b ← ++ (byte*) init_screen::b
  (byte*~) init_screen::$0 ← (byte*) BITMAP + (word/signed word/dword/signed dword) 8192
  (boolean~) init_screen::$1 ← (byte*) init_screen::b != (byte*~) init_screen::$0
  if((boolean~) init_screen::$1) goto init_screen::@1
  (byte*) init_screen::c ← (byte*) SCREEN
init_screen::@2:
  *((byte*) init_screen::c) ← (byte/signed byte/word/signed word/dword/signed dword) 20
  (byte*) init_screen::c ← ++ (byte*) init_screen::c
  (byte*~) init_screen::$2 ← (byte*) SCREEN + (word/signed word/dword/signed dword) 1024
  (boolean~) init_screen::$3 ← (byte*) init_screen::c != (byte*~) init_screen::$2
  if((boolean~) init_screen::$3) goto init_screen::@2
init_screen::@return:
  return 
endproc // init_screen()
  call main 

SYMBOLS
(byte*) BGCOL
(byte*) BITMAP
(byte) BMM
(byte*) COLS
(byte) CSEL
(byte*) D011
(byte*) D016
(byte*) D018
(byte) DEN
(byte) ECM
(byte*) FGCOL
(byte) MCM
(byte*) RASTER
(byte) RSEL
(byte) RST8
(byte*) SCREEN
(void()) init_plot_tables()
(byte~) init_plot_tables::$0
(byte~) init_plot_tables::$1
(byte~) init_plot_tables::$10
(boolean~) init_plot_tables::$11
(boolean~) init_plot_tables::$12
(word/signed word/dword/signed dword~) init_plot_tables::$13
(byte*~) init_plot_tables::$14
(boolean~) init_plot_tables::$15
(byte~) init_plot_tables::$2
(boolean~) init_plot_tables::$3
(boolean~) init_plot_tables::$4
(boolean~) init_plot_tables::$5
(byte~) init_plot_tables::$6
(byte~) init_plot_tables::$7
(byte~) init_plot_tables::$8
(byte~) init_plot_tables::$9
(label) init_plot_tables::@1
(label) init_plot_tables::@2
(label) init_plot_tables::@3
(label) init_plot_tables::@4
(label) init_plot_tables::@return
(byte) init_plot_tables::bits
(byte) init_plot_tables::x
(byte) init_plot_tables::y
(byte*) init_plot_tables::yoffs
(void()) init_screen()
(byte*~) init_screen::$0
(boolean~) init_screen::$1
(byte*~) init_screen::$2
(boolean~) init_screen::$3
(label) init_screen::@1
(label) init_screen::@2
(label) init_screen::@return
(byte*) init_screen::b
(byte*) init_screen::c
(void()) main()
(byte~) main::$0
(byte~) main::$1
(void~) main::$10
(boolean~) main::$11
(void~) main::$12
(byte~) main::$2
(word~) main::$3
(word~) main::$4
(word~) main::$5
(word~) main::$6
(word~) main::$7
(byte~) main::$8
(void~) main::$9
(label) main::@1
(label) main::@2
(label) main::@return
(void()) plot((byte) plot::x , (byte) plot::y)
(byte~) plot::$0
(byte~) plot::$1
(byte~) plot::$2
(byte~) plot::$3
(byte*~) plot::$4
(byte~) plot::$5
(label) plot::@return
(byte*) plot::plotter
(byte*) plot::plotter_x
(word) plot::plotter_y
(byte) plot::x
(byte) plot::y
(byte[256]) plot_bit
(byte[256]) plot_xhi
(byte[256]) plot_xlo
(byte[256]) plot_yhi
(byte[256]) plot_ylo
(void()) plots()
(void~) plots::$0
(boolean~) plots::$1
(label) plots::@1
(label) plots::@return
(byte) plots::i
(byte) plots_cnt
(byte[]) plots_x
(byte[]) plots_y

Fixing lo/hi-lvalue with new tmpVar plot::$6 plot::$6 ← *(plot_xhi + plot::x)
Fixing lo/hi-lvalue with new tmpVar plot::$7 plot::$7 ← *(plot_xlo + plot::x)
Fixing lo/hi-lvalue with new tmpVar plot::$8 plot::$8 ← *(plot_yhi + plot::y)
Fixing lo/hi-lvalue with new tmpVar plot::$9 plot::$9 ← *(plot_ylo + plot::y)
Promoting word/dword/signed dword to byte* in D011 ← ((byte*)) 53265
Promoting word/dword/signed dword to byte* in RASTER ← ((byte*)) 53266
Promoting word/dword/signed dword to byte* in D016 ← ((byte*)) 53270
Promoting word/dword/signed dword to byte* in D018 ← ((byte*)) 53272
Promoting word/dword/signed dword to byte* in BGCOL ← ((byte*)) 53280
Promoting word/dword/signed dword to byte* in FGCOL ← ((byte*)) 53281
Promoting word/dword/signed dword to byte* in COLS ← ((byte*)) 55296
Promoting word/signed word/dword/signed dword to byte* in SCREEN ← ((byte*)) 1024
Promoting word/signed word/dword/signed dword to byte* in BITMAP ← ((byte*)) 8192
Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in plot::plotter_x ← ((byte*)) 0
Promoting byte/signed byte/word/signed word/dword/signed dword to byte* in init_plot_tables::yoffs ← ((byte*)) 0
INITIAL CONTROL FLOW GRAPH
@begin: scope:[]  from
  (byte*) D011 ← ((byte*)) (word/dword/signed dword) 53265
  (byte) RST8 ← (byte/word/signed word/dword/signed dword) 128
  (byte) ECM ← (byte/signed byte/word/signed word/dword/signed dword) 64
  (byte) BMM ← (byte/signed byte/word/signed word/dword/signed dword) 32
  (byte) DEN ← (byte/signed byte/word/signed word/dword/signed dword) 16
  (byte) RSEL ← (byte/signed byte/word/signed word/dword/signed dword) 8
  (byte*) RASTER ← ((byte*)) (word/dword/signed dword) 53266
  (byte*) D016 ← ((byte*)) (word/dword/signed dword) 53270
  (byte) MCM ← (byte/signed byte/word/signed word/dword/signed dword) 16
  (byte) CSEL ← (byte/signed byte/word/signed word/dword/signed dword) 8
  (byte*) D018 ← ((byte*)) (word/dword/signed dword) 53272
  (byte*) BGCOL ← ((byte*)) (word/dword/signed dword) 53280
  (byte*) FGCOL ← ((byte*)) (word/dword/signed dword) 53281
  (byte*) COLS ← ((byte*)) (word/dword/signed dword) 55296
  (byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024
  (byte*) BITMAP ← ((byte*)) (word/signed word/dword/signed dword) 8192
  to:@1
main: scope:[main]  from
  *((byte*) BGCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 0
  *((byte*) FGCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte~) main::$0 ← (byte) BMM | (byte) DEN
  (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL
  (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word/dword/signed dword) 3
  *((byte*) D011) ← (byte~) main::$2
  (word~) main::$3 ← ((word)) (byte*) SCREEN
  (word~) main::$4 ← (word~) main::$3 / (byte/signed byte/word/signed word/dword/signed dword) 64
  (word~) main::$5 ← ((word)) (byte*) BITMAP
  (word~) main::$6 ← (word~) main::$5 / (word/signed word/dword/signed dword) 1024
  (word~) main::$7 ← (word~) main::$4 | (word~) main::$6
  (byte~) main::$8 ← ((byte)) (word~) main::$7
  *((byte*) D018) ← (byte~) main::$8
  (void~) main::$9 ← call init_screen 
  (void~) main::$10 ← call init_plot_tables 
  to:main::@1
main::@1: scope:[main]  from main main::@3
  to:main::@2
main::@2: scope:[main]  from main::@1 main::@2
  (boolean~) main::$11 ← *((byte*) RASTER) != (byte/word/signed word/dword/signed dword) 255
  if((boolean~) main::$11) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@2
  *((byte*) BGCOL) ← ++ *((byte*) BGCOL)
  (void~) main::$12 ← call plots 
  *((byte*) BGCOL) ← -- *((byte*) BGCOL)
  if(true) goto main::@1
  to:main::@4
main::@4: scope:[main]  from main::@3
  to:main::@return
main::@return: scope:[main]  from main::@4
  return 
  to:@return
@1: scope:[]  from @begin
  (byte[]) plots_x ← { (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 110, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 40 }
  (byte[]) plots_y ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 110, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 40 }
  (byte) plots_cnt ← (byte/signed byte/word/signed word/dword/signed dword) 8
  to:@2
plots: scope:[plots]  from
  (byte) plots::i ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:plots::@1
plots::@1: scope:[plots]  from plots plots::@1
  (void~) plots::$0 ← call plot *((byte[]) plots_x + (byte) plots::i) *((byte[]) plots_y + (byte) plots::i) 
  (byte) plots::i ← ++ (byte) plots::i
  (boolean~) plots::$1 ← (byte) plots::i < (byte) plots_cnt
  if((boolean~) plots::$1) goto plots::@1
  to:plots::@2
plots::@2: scope:[plots]  from plots::@1
  to:plots::@return
plots::@return: scope:[plots]  from plots::@2
  return 
  to:@return
@2: scope:[]  from @1
  (byte[256]) plot_xlo ← { fill( 256, 0) }
  (byte[256]) plot_xhi ← { fill( 256, 0) }
  (byte[256]) plot_ylo ← { fill( 256, 0) }
  (byte[256]) plot_yhi ← { fill( 256, 0) }
  (byte[256]) plot_bit ← { fill( 256, 0) }
  to:@3
plot: scope:[plot]  from
  (byte*) plot::plotter_x ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
  (word) plot::plotter_y ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte~) plot::$0 ← > (byte*) plot::plotter_x
  (byte~) plot::$6 ← *((byte[256]) plot_xhi + (byte) plot::x)
  (byte*) plot::plotter_x ← (byte*) plot::plotter_x hi= (byte~) plot::$6
  (byte~) plot::$1 ← < (byte*) plot::plotter_x
  (byte~) plot::$7 ← *((byte[256]) plot_xlo + (byte) plot::x)
  (byte*) plot::plotter_x ← (byte*) plot::plotter_x lo= (byte~) plot::$7
  (byte~) plot::$2 ← > (word) plot::plotter_y
  (byte~) plot::$8 ← *((byte[256]) plot_yhi + (byte) plot::y)
  (word) plot::plotter_y ← (word) plot::plotter_y hi= (byte~) plot::$8
  (byte~) plot::$3 ← < (word) plot::plotter_y
  (byte~) plot::$9 ← *((byte[256]) plot_ylo + (byte) plot::y)
  (word) plot::plotter_y ← (word) plot::plotter_y lo= (byte~) plot::$9
  (byte*~) plot::$4 ← (byte*) plot::plotter_x + (word) plot::plotter_y
  (byte*) plot::plotter ← (byte*~) plot::$4
  (byte~) plot::$5 ← *((byte*) plot::plotter) | *((byte[256]) plot_bit + (byte) plot::x)
  *((byte*) plot::plotter) ← (byte~) plot::$5
  to:plot::@return
plot::@return: scope:[plot]  from plot
  return 
  to:@return
@3: scope:[]  from @2
  to:@4
init_plot_tables: scope:[init_plot_tables]  from
  (byte) init_plot_tables::bits ← (byte/word/signed word/dword/signed dword) 128
  (byte) init_plot_tables::x ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:init_plot_tables::@1
init_plot_tables::@1: scope:[init_plot_tables]  from init_plot_tables init_plot_tables::@2
  (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x & (byte/word/signed word/dword/signed dword) 248
  *((byte[256]) plot_xlo + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$0
  (byte~) init_plot_tables::$1 ← > (byte*) BITMAP
  *((byte[256]) plot_xhi + (byte) init_plot_tables::x) ← (byte~) init_plot_tables::$1
  *((byte[256]) plot_bit + (byte) init_plot_tables::x) ← (byte) init_plot_tables::bits
  (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits >> (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) init_plot_tables::bits ← (byte~) init_plot_tables::$2
  (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits == (byte/signed byte/word/signed word/dword/signed dword) 0
  (boolean~) init_plot_tables::$4 ← ! (boolean~) init_plot_tables::$3
  if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2
  to:init_plot_tables::@5
init_plot_tables::@2: scope:[init_plot_tables]  from init_plot_tables::@1 init_plot_tables::@5
  (byte) init_plot_tables::x ← ++ (byte) init_plot_tables::x
  (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x != (byte/signed byte/word/signed word/dword/signed dword) 0
  if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1
  to:init_plot_tables::@6
init_plot_tables::@5: scope:[init_plot_tables]  from init_plot_tables::@1
  (byte) init_plot_tables::bits ← (byte/word/signed word/dword/signed dword) 128
  to:init_plot_tables::@2
init_plot_tables::@6: scope:[init_plot_tables]  from init_plot_tables::@2
  (byte*) init_plot_tables::yoffs ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte) init_plot_tables::y ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:init_plot_tables::@3
init_plot_tables::@3: scope:[init_plot_tables]  from init_plot_tables::@4 init_plot_tables::@6
  (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word/dword/signed dword) 7
  (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs
  (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7
  *((byte[256]) plot_ylo + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$8
  (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs
  *((byte[256]) plot_yhi + (byte) init_plot_tables::y) ← (byte~) init_plot_tables::$9
  (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y & (byte/signed byte/word/signed word/dword/signed dword) 7
  (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word/dword/signed dword) 7
  (boolean~) init_plot_tables::$12 ← ! (boolean~) init_plot_tables::$11
  if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4
  to:init_plot_tables::@7
init_plot_tables::@4: scope:[init_plot_tables]  from init_plot_tables::@3 init_plot_tables::@7
  (byte) init_plot_tables::y ← ++ (byte) init_plot_tables::y
  (boolean~) init_plot_tables::$15 ← (byte) init_plot_tables::y != (byte/signed byte/word/signed word/dword/signed dword) 0
  if((boolean~) init_plot_tables::$15) goto init_plot_tables::@3
  to:init_plot_tables::@8
init_plot_tables::@7: scope:[init_plot_tables]  from init_plot_tables::@3
  (word/signed word/dword/signed dword~) init_plot_tables::$13 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 8
  (byte*~) init_plot_tables::$14 ← (byte*) init_plot_tables::yoffs + (word/signed word/dword/signed dword~) init_plot_tables::$13
  (byte*) init_plot_tables::yoffs ← (byte*~) init_plot_tables::$14
  to:init_plot_tables::@4
init_plot_tables::@8: scope:[init_plot_tables]  from init_plot_tables::@4
  to:init_plot_tables::@return
init_plot_tables::@return: scope:[init_plot_tables]  from init_plot_tables::@8
  return 
  to:@return
@4: scope:[]  from @3
  to:@5
init_screen: scope:[init_screen]  from
  (byte*) init_screen::b ← (byte*) BITMAP
  to:init_screen::@1
init_screen::@1: scope:[init_screen]  from init_screen init_screen::@1
  *((byte*) init_screen::b) ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte*) init_screen::b ← ++ (byte*) init_screen::b
  (byte*~) init_screen::$0 ← (byte*) BITMAP + (word/signed word/dword/signed dword) 8192
  (boolean~) init_screen::$1 ← (byte*) init_screen::b != (byte*~) init_screen::$0
  if((boolean~) init_screen::$1) goto init_screen::@1
  to:init_screen::@3
init_screen::@3: scope:[init_screen]  from init_screen::@1
  (byte*) init_screen::c ← (byte*) SCREEN
  to:init_screen::@2
init_screen::@2: scope:[init_screen]  from init_screen::@2 init_screen::@3
  *((byte*) init_screen::c) ← (byte/signed byte/word/signed word/dword/signed dword) 20
  (byte*) init_screen::c ← ++ (byte*) init_screen::c
  (byte*~) init_screen::$2 ← (byte*) SCREEN + (word/signed word/dword/signed dword) 1024
  (boolean~) init_screen::$3 ← (byte*) init_screen::c != (byte*~) init_screen::$2
  if((boolean~) init_screen::$3) goto init_screen::@2
  to:init_screen::@4
init_screen::@4: scope:[init_screen]  from init_screen::@2
  to:init_screen::@return
init_screen::@return: scope:[init_screen]  from init_screen::@4
  return 
  to:@return
@5: scope:[]  from @4
  call main 
  to:@end
@end: scope:[]  from @5

Eliminating unused variable (byte) RST8 and assignment [1] (byte) RST8 ← (byte/word/signed word/dword/signed dword) 128
Eliminating unused variable (byte) ECM and assignment [2] (byte) ECM ← (byte/signed byte/word/signed word/dword/signed dword) 64
Eliminating unused variable (byte*) D016 and assignment [7] (byte*) D016 ← ((byte*)) (word/dword/signed dword) 53270
Eliminating unused variable (byte) MCM and assignment [8] (byte) MCM ← (byte/signed byte/word/signed word/dword/signed dword) 16
Eliminating unused variable (byte) CSEL and assignment [9] (byte) CSEL ← (byte/signed byte/word/signed word/dword/signed dword) 8
Eliminating unused variable (byte*) COLS and assignment [13] (byte*) COLS ← ((byte*)) (word/dword/signed dword) 55296
Eliminating unused variable - keeping the call (void~) main::$9
Eliminating unused variable - keeping the call (void~) main::$10
Eliminating unused variable - keeping the call (void~) main::$12
Eliminating unused variable - keeping the call (void~) plots::$0
Eliminating unused variable (byte~) plot::$0 and assignment [54] (byte~) plot::$0 ← > (byte*) plot::plotter_x
Eliminating unused variable (byte~) plot::$1 and assignment [57] (byte~) plot::$1 ← < (byte*) plot::plotter_x
Eliminating unused variable (byte~) plot::$2 and assignment [60] (byte~) plot::$2 ← > (word) plot::plotter_y
Eliminating unused variable (byte~) plot::$3 and assignment [63] (byte~) plot::$3 ← < (word) plot::plotter_y
Removing empty block main::@4
Removing empty block plots::@2
Removing empty block @3
Removing empty block init_plot_tables::@8
Removing empty block @4
Removing empty block init_screen::@4
PROCEDURE MODIFY VARIABLE ANALYSIS

Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...
Completing Phi functions...

CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
@begin: scope:[]  from
  (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265
  (byte) BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32
  (byte) DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
  (byte) RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
  (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266
  (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272
  (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53280
  (byte*) FGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281
  (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
  (byte*) BITMAP#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192
  to:@1
main: scope:[main]  from @5
  (byte) plots_cnt#10 ← phi( @5/(byte) plots_cnt#11 )
  (byte*) RASTER#6 ← phi( @5/(byte*) RASTER#8 )
  (byte*) D018#1 ← phi( @5/(byte*) D018#2 )
  (byte*) SCREEN#1 ← phi( @5/(byte*) SCREEN#4 )
  (byte*) D011#1 ← phi( @5/(byte*) D011#2 )
  (byte) RSEL#1 ← phi( @5/(byte) RSEL#2 )
  (byte) DEN#1 ← phi( @5/(byte) DEN#2 )
  (byte) BMM#1 ← phi( @5/(byte) BMM#2 )
  (byte*) FGCOL#1 ← phi( @5/(byte*) FGCOL#2 )
  (byte*) BGCOL#1 ← phi( @5/(byte*) BGCOL#4 )
  *((byte*) BGCOL#1) ← (byte/signed byte/word/signed word/dword/signed dword) 0
  *((byte*) FGCOL#1) ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte~) main::$0 ← (byte) BMM#1 | (byte) DEN#1
  (byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#1
  (byte~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word/dword/signed dword) 3
  *((byte*) D011#1) ← (byte~) main::$2
  (word~) main::$3 ← ((word)) (byte*) SCREEN#1
  (word~) main::$4 ← (word~) main::$3 / (byte/signed byte/word/signed word/dword/signed dword) 64
  (word~) main::$5 ← ((word)) (byte*) BITMAP#0
  (word~) main::$6 ← (word~) main::$5 / (word/signed word/dword/signed dword) 1024
  (word~) main::$7 ← (word~) main::$4 | (word~) main::$6
  (byte~) main::$8 ← ((byte)) (word~) main::$7
  *((byte*) D018#1) ← (byte~) main::$8
  call init_screen param-assignment
  to:main::@5
main::@5: scope:[main]  from main
  (byte) plots_cnt#8 ← phi( main/(byte) plots_cnt#10 )
  (byte*) BGCOL#9 ← phi( main/(byte*) BGCOL#1 )
  (byte*) RASTER#4 ← phi( main/(byte*) RASTER#6 )
  call init_plot_tables param-assignment
  to:main::@6
main::@6: scope:[main]  from main::@5
  (byte) plots_cnt#7 ← phi( main::@5/(byte) plots_cnt#8 )
  (byte*) BGCOL#7 ← phi( main::@5/(byte*) BGCOL#9 )
  (byte*) RASTER#3 ← phi( main::@5/(byte*) RASTER#4 )
  to:main::@2
main::@1: scope:[main]  from main::@7
  (byte) plots_cnt#6 ← phi( main::@7/(byte) plots_cnt#9 )
  (byte*) BGCOL#6 ← phi( main::@7/(byte*) BGCOL#3 )
  (byte*) RASTER#2 ← phi( main::@7/(byte*) RASTER#5 )
  to:main::@2
main::@2: scope:[main]  from main::@1 main::@2 main::@6
  (byte) plots_cnt#5 ← phi( main::@1/(byte) plots_cnt#6 main::@2/(byte) plots_cnt#5 main::@6/(byte) plots_cnt#7 )
  (byte*) BGCOL#5 ← phi( main::@1/(byte*) BGCOL#6 main::@2/(byte*) BGCOL#5 main::@6/(byte*) BGCOL#7 )
  (byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#2 main::@2/(byte*) RASTER#1 main::@6/(byte*) RASTER#3 )
  (boolean~) main::$11 ← *((byte*) RASTER#1) != (byte/word/signed word/dword/signed dword) 255
  if((boolean~) main::$11) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@2
  (byte) plots_cnt#4 ← phi( main::@2/(byte) plots_cnt#5 )
  (byte*) RASTER#7 ← phi( main::@2/(byte*) RASTER#1 )
  (byte*) BGCOL#2 ← phi( main::@2/(byte*) BGCOL#5 )
  *((byte*) BGCOL#2) ← ++ *((byte*) BGCOL#2)
  call plots param-assignment
  to:main::@7
main::@7: scope:[main]  from main::@3
  (byte) plots_cnt#9 ← phi( main::@3/(byte) plots_cnt#4 )
  (byte*) RASTER#5 ← phi( main::@3/(byte*) RASTER#7 )
  (byte*) BGCOL#3 ← phi( main::@3/(byte*) BGCOL#2 )
  *((byte*) BGCOL#3) ← -- *((byte*) BGCOL#3)
  if(true) goto main::@1
  to:main::@return
main::@return: scope:[main]  from main::@7
  return 
  to:@return
@1: scope:[]  from @begin
  (byte*) RASTER#10 ← phi( @begin/(byte*) RASTER#0 )
  (byte*) D018#4 ← phi( @begin/(byte*) D018#0 )
  (byte*) SCREEN#8 ← phi( @begin/(byte*) SCREEN#0 )
  (byte*) D011#4 ← phi( @begin/(byte*) D011#0 )
  (byte) RSEL#4 ← phi( @begin/(byte) RSEL#0 )
  (byte) DEN#4 ← phi( @begin/(byte) DEN#0 )
  (byte) BMM#4 ← phi( @begin/(byte) BMM#0 )
  (byte*) FGCOL#4 ← phi( @begin/(byte*) FGCOL#0 )
  (byte*) BGCOL#10 ← phi( @begin/(byte*) BGCOL#0 )
  (byte[]) plots_x#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 110, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 40 }
  (byte[]) plots_y#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 110, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 40 }
  (byte) plots_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
  to:@2
plots: scope:[plots]  from main::@3
  (byte) plots_cnt#3 ← phi( main::@3/(byte) plots_cnt#4 )
  (byte) plots::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:plots::@1
plots::@1: scope:[plots]  from plots plots::@3
  (byte) plots_cnt#2 ← phi( plots/(byte) plots_cnt#3 plots::@3/(byte) plots_cnt#1 )
  (byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 )
  (byte) plot::x#0 ← *((byte[]) plots_x#0 + (byte) plots::i#2)
  (byte) plot::y#0 ← *((byte[]) plots_y#0 + (byte) plots::i#2)
  call plot param-assignment
  to:plots::@3
plots::@3: scope:[plots]  from plots::@1
  (byte) plots_cnt#1 ← phi( plots::@1/(byte) plots_cnt#2 )
  (byte) plots::i#3 ← phi( plots::@1/(byte) plots::i#2 )
  (byte) plots::i#1 ← ++ (byte) plots::i#3
  (boolean~) plots::$1 ← (byte) plots::i#1 < (byte) plots_cnt#1
  if((boolean~) plots::$1) goto plots::@1
  to:plots::@return
plots::@return: scope:[plots]  from plots::@3
  return 
  to:@return
@2: scope:[]  from @1
  (byte) plots_cnt#12 ← phi( @1/(byte) plots_cnt#0 )
  (byte*) RASTER#9 ← phi( @1/(byte*) RASTER#10 )
  (byte*) D018#3 ← phi( @1/(byte*) D018#4 )
  (byte*) SCREEN#7 ← phi( @1/(byte*) SCREEN#8 )
  (byte*) D011#3 ← phi( @1/(byte*) D011#4 )
  (byte) RSEL#3 ← phi( @1/(byte) RSEL#4 )
  (byte) DEN#3 ← phi( @1/(byte) DEN#4 )
  (byte) BMM#3 ← phi( @1/(byte) BMM#4 )
  (byte*) FGCOL#3 ← phi( @1/(byte*) FGCOL#4 )
  (byte*) BGCOL#8 ← phi( @1/(byte*) BGCOL#10 )
  (byte[256]) plot_xlo#0 ← { fill( 256, 0) }
  (byte[256]) plot_xhi#0 ← { fill( 256, 0) }
  (byte[256]) plot_ylo#0 ← { fill( 256, 0) }
  (byte[256]) plot_yhi#0 ← { fill( 256, 0) }
  (byte[256]) plot_bit#0 ← { fill( 256, 0) }
  to:@5
plot: scope:[plot]  from plots::@1
  (byte) plot::y#1 ← phi( plots::@1/(byte) plot::y#0 )
  (byte) plot::x#1 ← phi( plots::@1/(byte) plot::x#0 )
  (byte*) plot::plotter_x#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
  (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte~) plot::$6 ← *((byte[256]) plot_xhi#0 + (byte) plot::x#1)
  (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$6
  (byte~) plot::$7 ← *((byte[256]) plot_xlo#0 + (byte) plot::x#1)
  (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7
  (byte~) plot::$8 ← *((byte[256]) plot_yhi#0 + (byte) plot::y#1)
  (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$8
  (byte~) plot::$9 ← *((byte[256]) plot_ylo#0 + (byte) plot::y#1)
  (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9
  (byte*~) plot::$4 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2
  (byte*) plot::plotter#0 ← (byte*~) plot::$4
  (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((byte[256]) plot_bit#0 + (byte) plot::x#1)
  *((byte*) plot::plotter#0) ← (byte~) plot::$5
  to:plot::@return
plot::@return: scope:[plot]  from plot
  return 
  to:@return
init_plot_tables: scope:[init_plot_tables]  from main::@5
  (byte) init_plot_tables::bits#0 ← (byte/word/signed word/dword/signed dword) 128
  (byte) init_plot_tables::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:init_plot_tables::@1
init_plot_tables::@1: scope:[init_plot_tables]  from init_plot_tables init_plot_tables::@2
  (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) init_plot_tables::bits#0 init_plot_tables::@2/(byte) init_plot_tables::bits#4 )
  (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) init_plot_tables::x#0 init_plot_tables::@2/(byte) init_plot_tables::x#1 )
  (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248
  *((byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0
  (byte~) init_plot_tables::$1 ← > (byte*) BITMAP#0
  *((byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$1
  *((byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3
  (byte~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
  (byte) init_plot_tables::bits#1 ← (byte~) init_plot_tables::$2
  (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
  (boolean~) init_plot_tables::$4 ← ! (boolean~) init_plot_tables::$3
  if((boolean~) init_plot_tables::$4) goto init_plot_tables::@2
  to:init_plot_tables::@5
init_plot_tables::@2: scope:[init_plot_tables]  from init_plot_tables::@1 init_plot_tables::@5
  (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::bits#1 init_plot_tables::@5/(byte) init_plot_tables::bits#2 )
  (byte) init_plot_tables::x#3 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 init_plot_tables::@5/(byte) init_plot_tables::x#4 )
  (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#3
  (boolean~) init_plot_tables::$5 ← (byte) init_plot_tables::x#1 != (byte/signed byte/word/signed word/dword/signed dword) 0
  if((boolean~) init_plot_tables::$5) goto init_plot_tables::@1
  to:init_plot_tables::@6
init_plot_tables::@5: scope:[init_plot_tables]  from init_plot_tables::@1
  (byte) init_plot_tables::x#4 ← phi( init_plot_tables::@1/(byte) init_plot_tables::x#2 )
  (byte) init_plot_tables::bits#2 ← (byte/word/signed word/dword/signed dword) 128
  to:init_plot_tables::@2
init_plot_tables::@6: scope:[init_plot_tables]  from init_plot_tables::@2
  (byte*) init_plot_tables::yoffs#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte) init_plot_tables::y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
  to:init_plot_tables::@3
init_plot_tables::@3: scope:[init_plot_tables]  from init_plot_tables::@4 init_plot_tables::@6
  (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@6/(byte*) init_plot_tables::yoffs#0 )
  (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@6/(byte) init_plot_tables::y#0 )
  (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
  (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2
  (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7
  *((byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8
  (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2
  *((byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9
  (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
  (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word/dword/signed dword) 7
  (boolean~) init_plot_tables::$12 ← ! (boolean~) init_plot_tables::$11
  if((boolean~) init_plot_tables::$12) goto init_plot_tables::@4
  to:init_plot_tables::@7
init_plot_tables::@4: scope:[init_plot_tables]  from init_plot_tables::@3 init_plot_tables::@7
  (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 )
  (byte) init_plot_tables::y#3 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 init_plot_tables::@7/(byte) init_plot_tables::y#4 )
  (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#3
  (boolean~) init_plot_tables::$15 ← (byte) init_plot_tables::y#1 != (byte/signed byte/word/signed word/dword/signed dword) 0
  if((boolean~) init_plot_tables::$15) goto init_plot_tables::@3
  to:init_plot_tables::@return
init_plot_tables::@7: scope:[init_plot_tables]  from init_plot_tables::@3
  (byte) init_plot_tables::y#4 ← phi( init_plot_tables::@3/(byte) init_plot_tables::y#2 )
  (byte*) init_plot_tables::yoffs#3 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 )
  (word/signed word/dword/signed dword~) init_plot_tables::$13 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 8
  (byte*~) init_plot_tables::$14 ← (byte*) init_plot_tables::yoffs#3 + (word/signed word/dword/signed dword~) init_plot_tables::$13
  (byte*) init_plot_tables::yoffs#1 ← (byte*~) init_plot_tables::$14
  to:init_plot_tables::@4
init_plot_tables::@return: scope:[init_plot_tables]  from init_plot_tables::@4
  return 
  to:@return
init_screen: scope:[init_screen]  from main
  (byte*) SCREEN#6 ← phi( main/(byte*) SCREEN#1 )
  (byte*) init_screen::b#0 ← (byte*) BITMAP#0
  to:init_screen::@1
init_screen::@1: scope:[init_screen]  from init_screen init_screen::@1
  (byte*) SCREEN#5 ← phi( init_screen/(byte*) SCREEN#6 init_screen::@1/(byte*) SCREEN#5 )
  (byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 )
  *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0
  (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2
  (byte*~) init_screen::$0 ← (byte*) BITMAP#0 + (word/signed word/dword/signed dword) 8192
  (boolean~) init_screen::$1 ← (byte*) init_screen::b#1 != (byte*~) init_screen::$0
  if((boolean~) init_screen::$1) goto init_screen::@1
  to:init_screen::@3
init_screen::@3: scope:[init_screen]  from init_screen::@1
  (byte*) SCREEN#2 ← phi( init_screen::@1/(byte*) SCREEN#5 )
  (byte*) init_screen::c#0 ← (byte*) SCREEN#2
  to:init_screen::@2
init_screen::@2: scope:[init_screen]  from init_screen::@2 init_screen::@3
  (byte*) SCREEN#3 ← phi( init_screen::@2/(byte*) SCREEN#3 init_screen::@3/(byte*) SCREEN#2 )
  (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 )
  *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20
  (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2
  (byte*~) init_screen::$2 ← (byte*) SCREEN#3 + (word/signed word/dword/signed dword) 1024
  (boolean~) init_screen::$3 ← (byte*) init_screen::c#1 != (byte*~) init_screen::$2
  if((boolean~) init_screen::$3) goto init_screen::@2
  to:init_screen::@return
init_screen::@return: scope:[init_screen]  from init_screen::@2
  return 
  to:@return
@5: scope:[]  from @2
  (byte) plots_cnt#11 ← phi( @2/(byte) plots_cnt#12 )
  (byte*) RASTER#8 ← phi( @2/(byte*) RASTER#9 )
  (byte*) D018#2 ← phi( @2/(byte*) D018#3 )
  (byte*) SCREEN#4 ← phi( @2/(byte*) SCREEN#7 )
  (byte*) D011#2 ← phi( @2/(byte*) D011#3 )
  (byte) RSEL#2 ← phi( @2/(byte) RSEL#3 )
  (byte) DEN#2 ← phi( @2/(byte) DEN#3 )
  (byte) BMM#2 ← phi( @2/(byte) BMM#3 )
  (byte*) FGCOL#2 ← phi( @2/(byte*) FGCOL#3 )
  (byte*) BGCOL#4 ← phi( @2/(byte*) BGCOL#8 )
  call main param-assignment
  to:@6
@6: scope:[]  from @5
  to:@end
@end: scope:[]  from @6

SYMBOL TABLE SSA
(label) @1
(label) @2
(label) @5
(label) @6
(label) @begin
(label) @end
(byte*) BGCOL
(byte*) BGCOL#0
(byte*) BGCOL#1
(byte*) BGCOL#10
(byte*) BGCOL#2
(byte*) BGCOL#3
(byte*) BGCOL#4
(byte*) BGCOL#5
(byte*) BGCOL#6
(byte*) BGCOL#7
(byte*) BGCOL#8
(byte*) BGCOL#9
(byte*) BITMAP
(byte*) BITMAP#0
(byte) BMM
(byte) BMM#0
(byte) BMM#1
(byte) BMM#2
(byte) BMM#3
(byte) BMM#4
(byte*) D011
(byte*) D011#0
(byte*) D011#1
(byte*) D011#2
(byte*) D011#3
(byte*) D011#4
(byte*) D018
(byte*) D018#0
(byte*) D018#1
(byte*) D018#2
(byte*) D018#3
(byte*) D018#4
(byte) DEN
(byte) DEN#0
(byte) DEN#1
(byte) DEN#2
(byte) DEN#3
(byte) DEN#4
(byte*) FGCOL
(byte*) FGCOL#0
(byte*) FGCOL#1
(byte*) FGCOL#2
(byte*) FGCOL#3
(byte*) FGCOL#4
(byte*) RASTER
(byte*) RASTER#0
(byte*) RASTER#1
(byte*) RASTER#10
(byte*) RASTER#2
(byte*) RASTER#3
(byte*) RASTER#4
(byte*) RASTER#5
(byte*) RASTER#6
(byte*) RASTER#7
(byte*) RASTER#8
(byte*) RASTER#9
(byte) RSEL
(byte) RSEL#0
(byte) RSEL#1
(byte) RSEL#2
(byte) RSEL#3
(byte) RSEL#4
(byte*) SCREEN
(byte*) SCREEN#0
(byte*) SCREEN#1
(byte*) SCREEN#2
(byte*) SCREEN#3
(byte*) SCREEN#4
(byte*) SCREEN#5
(byte*) SCREEN#6
(byte*) SCREEN#7
(byte*) SCREEN#8
(void()) init_plot_tables()
(byte~) init_plot_tables::$0
(byte~) init_plot_tables::$1
(byte~) init_plot_tables::$10
(boolean~) init_plot_tables::$11
(boolean~) init_plot_tables::$12
(word/signed word/dword/signed dword~) init_plot_tables::$13
(byte*~) init_plot_tables::$14
(boolean~) init_plot_tables::$15
(byte~) init_plot_tables::$2
(boolean~) init_plot_tables::$3
(boolean~) init_plot_tables::$4
(boolean~) init_plot_tables::$5
(byte~) init_plot_tables::$6
(byte~) init_plot_tables::$7
(byte~) init_plot_tables::$8
(byte~) init_plot_tables::$9
(label) init_plot_tables::@1
(label) init_plot_tables::@2
(label) init_plot_tables::@3
(label) init_plot_tables::@4
(label) init_plot_tables::@5
(label) init_plot_tables::@6
(label) init_plot_tables::@7
(label) init_plot_tables::@return
(byte) init_plot_tables::bits
(byte) init_plot_tables::bits#0
(byte) init_plot_tables::bits#1
(byte) init_plot_tables::bits#2
(byte) init_plot_tables::bits#3
(byte) init_plot_tables::bits#4
(byte) init_plot_tables::x
(byte) init_plot_tables::x#0
(byte) init_plot_tables::x#1
(byte) init_plot_tables::x#2
(byte) init_plot_tables::x#3
(byte) init_plot_tables::x#4
(byte) init_plot_tables::y
(byte) init_plot_tables::y#0
(byte) init_plot_tables::y#1
(byte) init_plot_tables::y#2
(byte) init_plot_tables::y#3
(byte) init_plot_tables::y#4
(byte*) init_plot_tables::yoffs
(byte*) init_plot_tables::yoffs#0
(byte*) init_plot_tables::yoffs#1
(byte*) init_plot_tables::yoffs#2
(byte*) init_plot_tables::yoffs#3
(byte*) init_plot_tables::yoffs#4
(void()) init_screen()
(byte*~) init_screen::$0
(boolean~) init_screen::$1
(byte*~) init_screen::$2
(boolean~) init_screen::$3
(label) init_screen::@1
(label) init_screen::@2
(label) init_screen::@3
(label) init_screen::@return
(byte*) init_screen::b
(byte*) init_screen::b#0
(byte*) init_screen::b#1
(byte*) init_screen::b#2
(byte*) init_screen::c
(byte*) init_screen::c#0
(byte*) init_screen::c#1
(byte*) init_screen::c#2
(void()) main()
(byte~) main::$0
(byte~) main::$1
(boolean~) main::$11
(byte~) main::$2
(word~) main::$3
(word~) main::$4
(word~) main::$5
(word~) main::$6
(word~) main::$7
(byte~) main::$8
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@5
(label) main::@6
(label) main::@7
(label) main::@return
(void()) plot((byte) plot::x , (byte) plot::y)
(byte*~) plot::$4
(byte~) plot::$5
(byte~) plot::$6
(byte~) plot::$7
(byte~) plot::$8
(byte~) plot::$9
(label) plot::@return
(byte*) plot::plotter
(byte*) plot::plotter#0
(byte*) plot::plotter_x
(byte*) plot::plotter_x#0
(byte*) plot::plotter_x#1
(byte*) plot::plotter_x#2
(word) plot::plotter_y
(word) plot::plotter_y#0
(word) plot::plotter_y#1
(word) plot::plotter_y#2
(byte) plot::x
(byte) plot::x#0
(byte) plot::x#1
(byte) plot::y
(byte) plot::y#0
(byte) plot::y#1
(byte[256]) plot_bit
(byte[256]) plot_bit#0
(byte[256]) plot_xhi
(byte[256]) plot_xhi#0
(byte[256]) plot_xlo
(byte[256]) plot_xlo#0
(byte[256]) plot_yhi
(byte[256]) plot_yhi#0
(byte[256]) plot_ylo
(byte[256]) plot_ylo#0
(void()) plots()
(boolean~) plots::$1
(label) plots::@1
(label) plots::@3
(label) plots::@return
(byte) plots::i
(byte) plots::i#0
(byte) plots::i#1
(byte) plots::i#2
(byte) plots::i#3
(byte) plots_cnt
(byte) plots_cnt#0
(byte) plots_cnt#1
(byte) plots_cnt#10
(byte) plots_cnt#11
(byte) plots_cnt#12
(byte) plots_cnt#2
(byte) plots_cnt#3
(byte) plots_cnt#4
(byte) plots_cnt#5
(byte) plots_cnt#6
(byte) plots_cnt#7
(byte) plots_cnt#8
(byte) plots_cnt#9
(byte[]) plots_x
(byte[]) plots_x#0
(byte[]) plots_y
(byte[]) plots_y#0

OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @6
Succesful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (boolean~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (boolean~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word/dword/signed dword) 7 from (boolean~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word/dword/signed dword) 7
Succesful SSA optimization Pass2UnaryNotSimplification
Not aliassing across scopes: BGCOL#1 BGCOL#4
Not aliassing across scopes: FGCOL#1 FGCOL#2
Not aliassing across scopes: BMM#1 BMM#2
Not aliassing across scopes: DEN#1 DEN#2
Not aliassing across scopes: RSEL#1 RSEL#2
Not aliassing across scopes: D011#1 D011#2
Not aliassing across scopes: SCREEN#1 SCREEN#4
Not aliassing across scopes: D018#1 D018#2
Not aliassing across scopes: RASTER#6 RASTER#8
Not aliassing across scopes: plots_cnt#10 plots_cnt#11
Not aliassing across scopes: plots_cnt#3 plots_cnt#4
Not aliassing across scopes: plot::x#1 plot::x#0
Not aliassing across scopes: plot::y#1 plot::y#0
Not aliassing across scopes: SCREEN#6 SCREEN#1
Not aliassing across scopes: init_screen::b#0 BITMAP#0
Not aliassing across scopes: init_screen::c#0 SCREEN#2
Not aliassing identity: SCREEN#3 SCREEN#3
Alias (byte*) RASTER#3 = (byte*) RASTER#4 (byte*) RASTER#6 
Alias (byte*) BGCOL#1 = (byte*) BGCOL#9 (byte*) BGCOL#7 
Alias (byte) plots_cnt#10 = (byte) plots_cnt#8 (byte) plots_cnt#7 
Alias (byte*) RASTER#1 = (byte*) RASTER#2 (byte*) RASTER#5 (byte*) RASTER#7 
Alias (byte*) BGCOL#2 = (byte*) BGCOL#6 (byte*) BGCOL#3 (byte*) BGCOL#5 
Alias (byte) plots_cnt#4 = (byte) plots_cnt#6 (byte) plots_cnt#9 (byte) plots_cnt#5 
Alias (byte*) BGCOL#0 = (byte*) BGCOL#10 (byte*) BGCOL#8 (byte*) BGCOL#4 
Alias (byte*) FGCOL#0 = (byte*) FGCOL#4 (byte*) FGCOL#3 (byte*) FGCOL#2 
Alias (byte) BMM#0 = (byte) BMM#4 (byte) BMM#3 (byte) BMM#2 
Alias (byte) DEN#0 = (byte) DEN#4 (byte) DEN#3 (byte) DEN#2 
Alias (byte) RSEL#0 = (byte) RSEL#4 (byte) RSEL#3 (byte) RSEL#2 
Alias (byte*) D011#0 = (byte*) D011#4 (byte*) D011#3 (byte*) D011#2 
Alias (byte*) SCREEN#0 = (byte*) SCREEN#8 (byte*) SCREEN#7 (byte*) SCREEN#4 
Alias (byte*) D018#0 = (byte*) D018#4 (byte*) D018#3 (byte*) D018#2 
Alias (byte*) RASTER#0 = (byte*) RASTER#10 (byte*) RASTER#9 (byte*) RASTER#8 
Alias (byte) plots::i#2 = (byte) plots::i#3 
Alias (byte) plots_cnt#1 = (byte) plots_cnt#2 
Alias (byte) plots_cnt#0 = (byte) plots_cnt#12 (byte) plots_cnt#11 
Alias (byte*) plot::plotter#0 = (byte*~) plot::$4 
Alias (byte) init_plot_tables::bits#1 = (byte~) init_plot_tables::$2 
Alias (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#4 
Alias (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#3 
Alias (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#4 
Alias (byte*) init_plot_tables::yoffs#1 = (byte*~) init_plot_tables::$14 
Alias (byte*) SCREEN#2 = (byte*) SCREEN#5 
Succesful SSA optimization Pass2AliasElimination
Not aliassing across scopes: BGCOL#1 BGCOL#0
Not aliassing across scopes: FGCOL#1 FGCOL#0
Not aliassing across scopes: BMM#1 BMM#0
Not aliassing across scopes: DEN#1 DEN#0
Not aliassing across scopes: RSEL#1 RSEL#0
Not aliassing across scopes: D011#1 D011#0
Not aliassing across scopes: SCREEN#1 SCREEN#0
Not aliassing across scopes: D018#1 D018#0
Not aliassing across scopes: RASTER#3 RASTER#0
Not aliassing across scopes: plots_cnt#10 plots_cnt#0
Not aliassing identity: RASTER#1 RASTER#1
Not aliassing identity: BGCOL#2 BGCOL#2
Not aliassing identity: plots_cnt#4 plots_cnt#4
Not aliassing across scopes: plots_cnt#3 plots_cnt#4
Not aliassing across scopes: plot::x#1 plot::x#0
Not aliassing across scopes: plot::y#1 plot::y#0
Not aliassing across scopes: SCREEN#6 SCREEN#1
Not aliassing across scopes: init_screen::b#0 BITMAP#0
Not aliassing across scopes: init_screen::c#0 SCREEN#2
Not aliassing identity: SCREEN#3 SCREEN#3
Alias (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#3 
Alias (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#3 
Succesful SSA optimization Pass2AliasElimination
Not aliassing across scopes: BGCOL#1 BGCOL#0
Not aliassing across scopes: FGCOL#1 FGCOL#0
Not aliassing across scopes: BMM#1 BMM#0
Not aliassing across scopes: DEN#1 DEN#0
Not aliassing across scopes: RSEL#1 RSEL#0
Not aliassing across scopes: D011#1 D011#0
Not aliassing across scopes: SCREEN#1 SCREEN#0
Not aliassing across scopes: D018#1 D018#0
Not aliassing across scopes: RASTER#3 RASTER#0
Not aliassing across scopes: plots_cnt#10 plots_cnt#0
Not aliassing identity: RASTER#1 RASTER#1
Not aliassing identity: BGCOL#2 BGCOL#2
Not aliassing identity: plots_cnt#4 plots_cnt#4
Not aliassing across scopes: plots_cnt#3 plots_cnt#4
Not aliassing across scopes: plot::x#1 plot::x#0
Not aliassing across scopes: plot::y#1 plot::y#0
Not aliassing across scopes: SCREEN#6 SCREEN#1
Not aliassing across scopes: init_screen::b#0 BITMAP#0
Not aliassing across scopes: init_screen::c#0 SCREEN#2
Not aliassing identity: SCREEN#3 SCREEN#3
Self Phi Eliminated (byte*) RASTER#1
Self Phi Eliminated (byte*) RASTER#1
Self Phi Eliminated (byte*) BGCOL#2
Self Phi Eliminated (byte*) BGCOL#2
Self Phi Eliminated (byte) plots_cnt#4
Self Phi Eliminated (byte) plots_cnt#4
Self Phi Eliminated (byte) plots_cnt#1
Self Phi Eliminated (byte*) SCREEN#2
Self Phi Eliminated (byte*) SCREEN#3
Succesful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) BGCOL#1 (byte*) BGCOL#0
Redundant Phi (byte*) FGCOL#1 (byte*) FGCOL#0
Redundant Phi (byte) BMM#1 (byte) BMM#0
Redundant Phi (byte) DEN#1 (byte) DEN#0
Redundant Phi (byte) RSEL#1 (byte) RSEL#0
Redundant Phi (byte*) D011#1 (byte*) D011#0
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
Redundant Phi (byte*) D018#1 (byte*) D018#0
Redundant Phi (byte*) RASTER#3 (byte*) RASTER#0
Redundant Phi (byte) plots_cnt#10 (byte) plots_cnt#0
Redundant Phi (byte*) RASTER#1 (byte*) RASTER#3
Redundant Phi (byte*) BGCOL#2 (byte*) BGCOL#1
Redundant Phi (byte) plots_cnt#4 (byte) plots_cnt#10
Redundant Phi (byte) plots_cnt#3 (byte) plots_cnt#4
Redundant Phi (byte) plots_cnt#1 (byte) plots_cnt#3
Redundant Phi (byte) plot::x#1 (byte) plot::x#0
Redundant Phi (byte) plot::y#1 (byte) plot::y#0
Redundant Phi (byte*) SCREEN#6 (byte*) SCREEN#1
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#6
Redundant Phi (byte*) SCREEN#3 (byte*) SCREEN#2
Succesful SSA optimization Pass2RedundantPhiElimination
Simple Condition (boolean~) main::$11 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2
Simple Condition (boolean~) plots::$1 if((byte) plots::i#1<(byte) plots_cnt#0) goto plots::@1
Simple Condition (boolean~) init_plot_tables::$4 if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@2
Simple Condition (boolean~) init_plot_tables::$5 if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1
Simple Condition (boolean~) init_plot_tables::$12 if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4
Simple Condition (boolean~) init_plot_tables::$15 if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3
Simple Condition (boolean~) init_screen::$1 if((byte*) init_screen::b#1!=(byte*~) init_screen::$0) goto init_screen::@1
Simple Condition (boolean~) init_screen::$3 if((byte*) init_screen::c#1!=(byte*~) init_screen::$2) goto init_screen::@2
Succesful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) D011#0 = ((byte*))53265
Constant (const byte) BMM#0 = 32
Constant (const byte) DEN#0 = 16
Constant (const byte) RSEL#0 = 8
Constant (const byte*) RASTER#0 = ((byte*))53266
Constant (const byte*) D018#0 = ((byte*))53272
Constant (const byte*) BGCOL#0 = ((byte*))53280
Constant (const byte*) FGCOL#0 = ((byte*))53281
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte*) BITMAP#0 = ((byte*))8192
Constant (const byte[]) plots_x#0 = { 60, 80, 110, 80, 60, 40, 10, 40 }
Constant (const byte[]) plots_y#0 = { 10, 40, 60, 80, 110, 80, 60, 40 }
Constant (const byte) plots_cnt#0 = 8
Constant (const byte) plots::i#0 = 0
Constant (const byte[256]) plot_xlo#0 = { fill( 256, 0) }
Constant (const byte[256]) plot_xhi#0 = { fill( 256, 0) }
Constant (const byte[256]) plot_ylo#0 = { fill( 256, 0) }
Constant (const byte[256]) plot_yhi#0 = { fill( 256, 0) }
Constant (const byte[256]) plot_bit#0 = { fill( 256, 0) }
Constant (const byte*) plot::plotter_x#0 = ((byte*))0
Constant (const word) plot::plotter_y#0 = 0
Constant (const byte) init_plot_tables::bits#0 = 128
Constant (const byte) init_plot_tables::x#0 = 0
Constant (const byte) init_plot_tables::bits#2 = 128
Constant (const byte*) init_plot_tables::yoffs#0 = ((byte*))0
Constant (const byte) init_plot_tables::y#0 = 0
Constant (const word/signed word/dword/signed dword) init_plot_tables::$13 = 40*8
Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$0 = BMM#0|DEN#0
Constant (const word) main::$3 = ((word))SCREEN#0
Constant (const word) main::$5 = ((word))BITMAP#0
Constant (const byte) init_plot_tables::$1 = >BITMAP#0
Constant (const byte*) init_screen::b#0 = BITMAP#0
Constant (const byte*) init_screen::$0 = BITMAP#0+8192
Constant (const byte*) init_screen::c#0 = SCREEN#0
Constant (const byte*) init_screen::$2 = SCREEN#0+1024
Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$1 = main::$0|RSEL#0
Constant (const word) main::$4 = main::$3/64
Constant (const word) main::$6 = main::$5/1024
Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$2 = main::$1|3
Constant (const word) main::$7 = main::$4|main::$6
Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$8 = ((byte))main::$7
Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) init_plot_tables::yoffs#2
Culled Empty Block (label) main::@6
Culled Empty Block (label) main::@1
Culled Empty Block (label) @1
Culled Empty Block (label) @2
Not culling empty block because it shares successor with its predecessor. (label) init_plot_tables::@5
Culled Empty Block (label) init_plot_tables::@6
Culled Empty Block (label) init_screen::@3
Succesful SSA optimization Pass2CullEmptyBlocks
Not culling empty block because it shares successor with its predecessor. (label) init_plot_tables::@5
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) init_plot_tables::yoffs#2
Not culling empty block because it shares successor with its predecessor. (label) init_plot_tables::@5
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) init_plot_tables::yoffs#2
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) plots::i#0
Inlining constant with var siblings (const byte) plots::i#0
Inlining constant with var siblings (const byte*) plot::plotter_x#0
Inlining constant with var siblings (const byte*) plot::plotter_x#0
Inlining constant with var siblings (const word) plot::plotter_y#0
Inlining constant with var siblings (const word) plot::plotter_y#0
Inlining constant with var siblings (const byte) init_plot_tables::bits#0
Inlining constant with var siblings (const byte) init_plot_tables::bits#0
Inlining constant with var siblings (const byte) init_plot_tables::bits#0
Inlining constant with var siblings (const byte) init_plot_tables::x#0
Inlining constant with var siblings (const byte) init_plot_tables::x#0
Inlining constant with var siblings (const byte) init_plot_tables::bits#2
Inlining constant with var siblings (const byte) init_plot_tables::bits#2
Inlining constant with var siblings (const byte) init_plot_tables::bits#2
Inlining constant with var siblings (const byte*) init_plot_tables::yoffs#0
Inlining constant with var siblings (const byte*) init_plot_tables::yoffs#0
Inlining constant with var siblings (const byte*) init_plot_tables::yoffs#0
Inlining constant with var siblings (const byte) init_plot_tables::y#0
Inlining constant with var siblings (const byte) init_plot_tables::y#0
Inlining constant with var siblings (const byte*) init_screen::b#0
Inlining constant with var siblings (const byte*) init_screen::b#0
Inlining constant with var siblings (const byte*) init_screen::c#0
Inlining constant with var siblings (const byte*) init_screen::c#0
Constant inlined plots::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined init_plot_tables::bits#2 = (byte/word/signed word/dword/signed dword) 128
Constant inlined init_plot_tables::bits#0 = (byte/word/signed word/dword/signed dword) 128
Constant inlined plot::plotter_y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined plot::plotter_x#0 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined init_screen::$2 = (const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024
Constant inlined main::$1 = (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0
Constant inlined init_plot_tables::$1 = >(const byte*) BITMAP#0
Constant inlined main::$2 = (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3
Constant inlined main::$0 = (const byte) BMM#0|(const byte) DEN#0
Constant inlined main::$5 = ((word))(const byte*) BITMAP#0
Constant inlined init_plot_tables::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::$6 = ((word))(const byte*) BITMAP#0/(word/signed word/dword/signed dword) 1024
Constant inlined init_plot_tables::yoffs#0 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::$3 = ((word))(const byte*) SCREEN#0
Constant inlined main::$4 = ((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64
Constant inlined init_plot_tables::$13 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8
Constant inlined init_plot_tables::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined init_screen::c#0 = (const byte*) SCREEN#0
Constant inlined init_screen::b#0 = (const byte*) BITMAP#0
Constant inlined main::$7 = ((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0/(word/signed word/dword/signed dword) 1024
Constant inlined init_screen::$0 = (const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192
Constant inlined main::$8 = ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0/(word/signed word/dword/signed dword) 1024
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @5 @end main main::@5 main::@2 main::@3 main::@7 main::@return plots plots::@1 plots::@3 plots::@return plot plot::@return init_plot_tables init_plot_tables::@1 init_plot_tables::@5 init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@7 init_plot_tables::@4 init_plot_tables::@return init_screen init_screen::@1 init_screen::@2 init_screen::@return 
Added new block during phi lifting plots::@4(between plots::@3 and plots::@1)
Added new block during phi lifting init_plot_tables::@9(between init_plot_tables::@2 and init_plot_tables::@1)
Added new block during phi lifting init_plot_tables::@10(between init_plot_tables::@1 and init_plot_tables::@2)
Added new block during phi lifting init_plot_tables::@11(between init_plot_tables::@4 and init_plot_tables::@3)
Added new block during phi lifting init_plot_tables::@12(between init_plot_tables::@3 and init_plot_tables::@4)
Added new block during phi lifting init_screen::@5(between init_screen::@1 and init_screen::@1)
Added new block during phi lifting init_screen::@6(between init_screen::@2 and init_screen::@2)
Block Sequence Planned @begin @5 @end main main::@5 main::@2 main::@3 main::@7 main::@return plots plots::@1 plots::@3 plots::@return plots::@4 plot plot::@return init_plot_tables init_plot_tables::@1 init_plot_tables::@5 init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@7 init_plot_tables::@4 init_plot_tables::@return init_plot_tables::@11 init_plot_tables::@12 init_plot_tables::@9 init_plot_tables::@10 init_screen init_screen::@1 init_screen::@2 init_screen::@return init_screen::@6 init_screen::@5 
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @5
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@5
Adding NOP phi() at start of plots
Adding NOP phi() at start of init_plot_tables
Adding NOP phi() at start of init_plot_tables::@5
Adding NOP phi() at start of init_screen
CALL GRAPH
Calls in [] to main:2 
Calls in [main] to init_screen:8 init_plot_tables:10 plots:13 
Calls in [plots] to plot:21 

Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Created 9 initial phi equivalence classes
Coalesced [25] plots::i#4 ← plots::i#1
Coalesced [60] init_plot_tables::yoffs#7 ← init_plot_tables::yoffs#1
Coalesced [65] init_plot_tables::y#5 ← init_plot_tables::y#1
Coalesced [66] init_plot_tables::yoffs#5 ← init_plot_tables::yoffs#4
Coalesced (already) [67] init_plot_tables::yoffs#6 ← init_plot_tables::yoffs#2
Coalesced [68] init_plot_tables::x#5 ← init_plot_tables::x#1
Coalesced [69] init_plot_tables::bits#5 ← init_plot_tables::bits#4
Coalesced [70] init_plot_tables::bits#6 ← init_plot_tables::bits#1
Coalesced [81] init_screen::c#3 ← init_screen::c#1
Coalesced [82] init_screen::b#3 ← init_screen::b#1
Coalesced down to 7 phi equivalence classes
Culled Empty Block (label) plots::@4
Culled Empty Block (label) init_plot_tables::@5
Culled Empty Block (label) init_plot_tables::@11
Culled Empty Block (label) init_plot_tables::@12
Culled Empty Block (label) init_plot_tables::@9
Not culling empty block because it shares successor with its predecessor. (label) init_plot_tables::@10
Culled Empty Block (label) init_screen::@6
Culled Empty Block (label) init_screen::@5
Block Sequence Planned @begin @5 @end main main::@5 main::@2 main::@3 main::@7 main::@return plots plots::@1 plots::@3 plots::@return plot plot::@return init_plot_tables init_plot_tables::@1 init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@7 init_plot_tables::@4 init_plot_tables::@return init_plot_tables::@10 init_screen init_screen::@1 init_screen::@2 init_screen::@return 
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @5
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@5
Adding NOP phi() at start of plots
Adding NOP phi() at start of init_plot_tables
Adding NOP phi() at start of init_plot_tables::@10
Adding NOP phi() at start of init_screen
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...

FINAL CONTROL FLOW GRAPH
@begin: scope:[]  from
  [0] phi() [ ] ( )
  to:@5
@5: scope:[]  from @begin
  [1] phi() [ ] ( )
  [2] call main param-assignment [ ] ( )
  to:@end
@end: scope:[]  from @5
  [3] phi() [ ] ( )
main: scope:[main]  from @5
  [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
  [5] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] )
  [6] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] )
  [7] *((const byte*) D018#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0/(word/signed word/dword/signed dword) 1024 [ ] ( main:2 [ ] )
  [8] call init_screen param-assignment [ ] ( main:2 [ ] )
  to:main::@5
main::@5: scope:[main]  from main
  [9] phi() [ ] ( main:2 [ ] )
  [10] call init_plot_tables param-assignment [ ] ( main:2 [ ] )
  to:main::@2
main::@2: scope:[main]  from main::@2 main::@5 main::@7
  [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 [ ] ( main:2 [ ] )
  to:main::@3
main::@3: scope:[main]  from main::@2
  [12] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ] ( main:2 [ ] )
  [13] call plots param-assignment [ ] ( main:2 [ ] )
  to:main::@7
main::@7: scope:[main]  from main::@3
  [14] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ ] ( main:2 [ ] )
  [15] if(true) goto main::@2 [ ] ( main:2 [ ] )
  to:main::@return
main::@return: scope:[main]  from main::@7
  [16] return  [ ] ( main:2 [ ] )
  to:@return
plots: scope:[plots]  from main::@3
  [17] phi() [ ] ( main:2::plots:13 [ ] )
  to:plots::@1
plots::@1: scope:[plots]  from plots plots::@3
  [18] (byte) plots::i#2 ← phi( plots/(byte/signed byte/word/signed word/dword/signed dword) 0 plots::@3/(byte) plots::i#1 ) [ plots::i#2 ] ( main:2::plots:13 [ plots::i#2 ] )
  [19] (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 ] )
  [20] (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 plot::y#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 plot::y#0 ] )
  [21] call plot param-assignment [ plots::i#2 ] ( main:2::plots:13 [ plots::i#2 ] )
  to:plots::@3
plots::@3: scope:[plots]  from plots::@1
  [22] (byte) plots::i#1 ← ++ (byte) plots::i#2 [ plots::i#1 ] ( main:2::plots:13 [ plots::i#1 ] )
  [23] if((byte) plots::i#1<(const byte) plots_cnt#0) goto plots::@1 [ plots::i#1 ] ( main:2::plots:13 [ plots::i#1 ] )
  to:plots::@return
plots::@return: scope:[plots]  from plots::@3
  [24] return  [ ] ( main:2::plots:13 [ ] )
  to:@return
plot: scope:[plot]  from plots::@1
  [25] (byte~) plot::$6 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::$6 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::$6 ] )
  [26] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$6 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] )
  [27] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$7 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$7 ] )
  [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] )
  [29] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$8 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$8 ] )
  [30] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] )
  [31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] )
  [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] )
  [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter#0 ] )
  [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$5 ] )
  [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] )
  to:plot::@return
plot::@return: scope:[plot]  from plot
  [36] return  [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] )
  to:@return
init_plot_tables: scope:[init_plot_tables]  from main::@5
  [37] phi() [ ] ( main:2::init_plot_tables:10 [ ] )
  to:init_plot_tables::@1
init_plot_tables::@1: scope:[init_plot_tables]  from init_plot_tables init_plot_tables::@2
  [38] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word/dword/signed dword) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
  [38] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word/dword/signed dword) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
  [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] )
  [40] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
  [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
  [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
  [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] )
  [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] )
  to:init_plot_tables::@2
init_plot_tables::@2: scope:[init_plot_tables]  from init_plot_tables::@1 init_plot_tables::@10
  [45] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word/dword/signed dword) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] )
  [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
  [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
  to:init_plot_tables::@3
init_plot_tables::@3: scope:[init_plot_tables]  from init_plot_tables::@2 init_plot_tables::@4
  [48] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
  [48] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
  [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] )
  [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] )
  [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] )
  [52] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
  [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] )
  [54] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
  [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] )
  [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
  to:init_plot_tables::@7
init_plot_tables::@7: scope:[init_plot_tables]  from init_plot_tables::@3
  [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] )
  to:init_plot_tables::@4
init_plot_tables::@4: scope:[init_plot_tables]  from init_plot_tables::@3 init_plot_tables::@7
  [58] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] )
  [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] )
  [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] )
  to:init_plot_tables::@return
init_plot_tables::@return: scope:[init_plot_tables]  from init_plot_tables::@4
  [61] return  [ ] ( main:2::init_plot_tables:10 [ ] )
  to:@return
init_plot_tables::@10: scope:[init_plot_tables]  from init_plot_tables::@1
  [62] phi() [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] )
  to:init_plot_tables::@2
init_screen: scope:[init_screen]  from main
  [63] phi() [ ] ( main:2::init_screen:8 [ ] )
  to:init_screen::@1
init_screen::@1: scope:[init_screen]  from init_screen init_screen::@1
  [64] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] )
  [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] )
  [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] )
  [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] )
  to:init_screen::@2
init_screen::@2: scope:[init_screen]  from init_screen::@1 init_screen::@2
  [68] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] )
  [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] )
  [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] )
  [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] )
  to:init_screen::@return
init_screen::@return: scope:[init_screen]  from init_screen::@2
  [72] return  [ ] ( main:2::init_screen:8 [ ] )
  to:@return

DOMINATORS
@begin dominated by  @begin 
@5 dominated by  @begin @5 
@end dominated by  @end @begin @5 
main dominated by  main @begin @5 
main::@5 dominated by  main main::@5 @begin @5 
main::@2 dominated by  main main::@2 main::@5 @begin @5 
main::@3 dominated by  main main::@2 main::@5 main::@3 @begin @5 
main::@7 dominated by  main::@7 main main::@2 main::@5 main::@3 @begin @5 
main::@return dominated by  main::@return main::@7 main main::@2 main::@5 main::@3 @begin @5 
plots dominated by  main main::@2 main::@5 main::@3 @begin plots @5 
plots::@1 dominated by  plots::@1 main main::@2 main::@5 main::@3 @begin plots @5 
plots::@3 dominated by  plots::@3 plots::@1 main main::@2 main::@5 main::@3 @begin plots @5 
plots::@return dominated by  plots::@3 plots::@1 main main::@2 main::@5 main::@3 @begin plots::@return plots @5 
plot dominated by  plots::@1 main plot main::@2 main::@5 main::@3 @begin plots @5 
plot::@return dominated by  plots::@1 main plot main::@2 main::@5 main::@3 @begin plots @5 plot::@return 
init_plot_tables dominated by  main init_plot_tables main::@5 @begin @5 
init_plot_tables::@1 dominated by  main init_plot_tables init_plot_tables::@1 main::@5 @begin @5 
init_plot_tables::@2 dominated by  main init_plot_tables init_plot_tables::@2 init_plot_tables::@1 main::@5 @begin @5 
init_plot_tables::@3 dominated by  main init_plot_tables init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@1 main::@5 @begin @5 
init_plot_tables::@7 dominated by  main init_plot_tables init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@1 main::@5 init_plot_tables::@7 @begin @5 
init_plot_tables::@4 dominated by  main init_plot_tables init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@1 main::@5 init_plot_tables::@4 @begin @5 
init_plot_tables::@return dominated by  main init_plot_tables init_plot_tables::@2 init_plot_tables::@3 init_plot_tables::@1 main::@5 init_plot_tables::@4 @begin @5 init_plot_tables::@return 
init_plot_tables::@10 dominated by  main init_plot_tables init_plot_tables::@1 main::@5 init_plot_tables::@10 @begin @5 
init_screen dominated by  main @begin init_screen @5 
init_screen::@1 dominated by  main init_screen::@1 @begin init_screen @5 
init_screen::@2 dominated by  main init_screen::@2 init_screen::@1 @begin init_screen @5 
init_screen::@return dominated by  main init_screen::@2 init_screen::@1 @begin init_screen::@return init_screen @5 

NATURAL LOOPS
Found back edge: Loop head: main::@2 tails: main::@2 blocks: null
Found back edge: Loop head: main::@2 tails: main::@7 blocks: null
Found back edge: Loop head: plots::@1 tails: plots::@3 blocks: null
Found back edge: Loop head: init_plot_tables::@1 tails: init_plot_tables::@2 blocks: null
Found back edge: Loop head: init_plot_tables::@3 tails: init_plot_tables::@4 blocks: null
Found back edge: Loop head: init_screen::@1 tails: init_screen::@1 blocks: null
Found back edge: Loop head: init_screen::@2 tails: init_screen::@2 blocks: null
Populated: Loop head: main::@2 tails: main::@2 blocks: main::@2 
Populated: Loop head: main::@2 tails: main::@7 blocks: main::@7 main::@3 main::@2 
Populated: Loop head: plots::@1 tails: plots::@3 blocks: plots::@3 plots::@1 
Populated: Loop head: init_plot_tables::@1 tails: init_plot_tables::@2 blocks: init_plot_tables::@2 init_plot_tables::@1 init_plot_tables::@10 
Populated: Loop head: init_plot_tables::@3 tails: init_plot_tables::@4 blocks: init_plot_tables::@4 init_plot_tables::@3 init_plot_tables::@7 
Populated: Loop head: init_screen::@1 tails: init_screen::@1 blocks: init_screen::@1 
Populated: Loop head: init_screen::@2 tails: init_screen::@2 blocks: init_screen::@2 
Loop head: main::@2 tails: main::@2 blocks: main::@2 
Loop head: main::@2 tails: main::@7 blocks: main::@7 main::@3 main::@2 
Loop head: plots::@1 tails: plots::@3 blocks: plots::@3 plots::@1 
Loop head: init_plot_tables::@1 tails: init_plot_tables::@2 blocks: init_plot_tables::@2 init_plot_tables::@1 init_plot_tables::@10 
Loop head: init_plot_tables::@3 tails: init_plot_tables::@4 blocks: init_plot_tables::@4 init_plot_tables::@3 init_plot_tables::@7 
Loop head: init_screen::@1 tails: init_screen::@1 blocks: init_screen::@1 
Loop head: init_screen::@2 tails: init_screen::@2 blocks: init_screen::@2 

NATURAL LOOPS WITH DEPTH
Found 0 loops in scope []
Found 2 loops in scope [main]
  Loop head: main::@2 tails: main::@2 blocks: main::@2 
  Loop head: main::@2 tails: main::@7 blocks: main::@7 main::@3 main::@2 
Found 2 loops in scope [init_screen]
  Loop head: init_screen::@1 tails: init_screen::@1 blocks: init_screen::@1 
  Loop head: init_screen::@2 tails: init_screen::@2 blocks: init_screen::@2 
Found 2 loops in scope [init_plot_tables]
  Loop head: init_plot_tables::@1 tails: init_plot_tables::@2 blocks: init_plot_tables::@2 init_plot_tables::@1 init_plot_tables::@10 
  Loop head: init_plot_tables::@3 tails: init_plot_tables::@4 blocks: init_plot_tables::@4 init_plot_tables::@3 init_plot_tables::@7 
Found 1 loops in scope [plots]
  Loop head: plots::@1 tails: plots::@3 blocks: plots::@3 plots::@1 
Found 0 loops in scope [plot]
Loop head: main::@2 tails: main::@2 blocks: main::@2  depth: 2
Loop head: main::@2 tails: main::@7 blocks: main::@7 main::@3 main::@2  depth: 1
Loop head: plots::@1 tails: plots::@3 blocks: plots::@3 plots::@1  depth: 2
Loop head: init_plot_tables::@1 tails: init_plot_tables::@2 blocks: init_plot_tables::@2 init_plot_tables::@1 init_plot_tables::@10  depth: 1
Loop head: init_plot_tables::@3 tails: init_plot_tables::@4 blocks: init_plot_tables::@4 init_plot_tables::@3 init_plot_tables::@7  depth: 1
Loop head: init_screen::@1 tails: init_screen::@1 blocks: init_screen::@1  depth: 1
Loop head: init_screen::@2 tails: init_screen::@2 blocks: init_screen::@2  depth: 1


VARIABLE REGISTER WEIGHTS
(byte*) BGCOL
(byte*) BITMAP
(byte) BMM
(byte*) D011
(byte*) D018
(byte) DEN
(byte*) FGCOL
(byte*) RASTER
(byte) RSEL
(byte*) SCREEN
(void()) init_plot_tables()
(byte~) init_plot_tables::$0 22.0
(byte~) init_plot_tables::$10 22.0
(byte~) init_plot_tables::$6 11.0
(byte~) init_plot_tables::$7 22.0
(byte~) init_plot_tables::$8 22.0
(byte~) init_plot_tables::$9 22.0
(byte) init_plot_tables::bits
(byte) init_plot_tables::bits#1 11.0
(byte) init_plot_tables::bits#3 6.6000000000000005
(byte) init_plot_tables::bits#4 7.333333333333333
(byte) init_plot_tables::x
(byte) init_plot_tables::x#1 16.5
(byte) init_plot_tables::x#2 7.333333333333334
(byte) init_plot_tables::y
(byte) init_plot_tables::y#1 16.5
(byte) init_plot_tables::y#2 6.0
(byte*) init_plot_tables::yoffs
(byte*) init_plot_tables::yoffs#1 22.0
(byte*) init_plot_tables::yoffs#2 6.111111111111112
(byte*) init_plot_tables::yoffs#4 11.0
(void()) init_screen()
(byte*) init_screen::b
(byte*) init_screen::b#1 16.5
(byte*) init_screen::b#2 16.5
(byte*) init_screen::c
(byte*) init_screen::c#1 16.5
(byte*) init_screen::c#2 16.5
(void()) main()
(void()) plot((byte) plot::x , (byte) plot::y)
(byte~) plot::$5 4.0
(byte~) plot::$6 4.0
(byte~) plot::$7 4.0
(byte~) plot::$8 4.0
(byte~) plot::$9 4.0
(byte*) plot::plotter
(byte*) plot::plotter#0 3.0
(byte*) plot::plotter_x
(byte*) plot::plotter_x#1 2.0
(byte*) plot::plotter_x#2 0.8
(word) plot::plotter_y
(word) plot::plotter_y#1 2.0
(word) plot::plotter_y#2 4.0
(byte) plot::x
(byte) plot::x#0 9.727272727272727
(byte) plot::y
(byte) plot::y#0 15.000000000000002
(byte[256]) plot_bit
(byte[256]) plot_xhi
(byte[256]) plot_xlo
(byte[256]) plot_yhi
(byte[256]) plot_ylo
(void()) plots()
(byte) plots::i
(byte) plots::i#1 151.5
(byte) plots::i#2 101.0
(byte) plots_cnt
(byte[]) plots_x
(byte[]) plots_y

Initial phi equivalence classes
[ plots::i#2 plots::i#1 ]
[ init_plot_tables::x#2 init_plot_tables::x#1 ]
[ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ]
[ init_plot_tables::y#2 init_plot_tables::y#1 ]
[ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ]
[ init_screen::b#2 init_screen::b#1 ]
[ init_screen::c#2 init_screen::c#1 ]
Added variable plot::x#0 to zero page equivalence class [ plot::x#0 ]
Added variable plot::y#0 to zero page equivalence class [ plot::y#0 ]
Added variable plot::$6 to zero page equivalence class [ plot::$6 ]
Added variable plot::plotter_x#1 to zero page equivalence class [ plot::plotter_x#1 ]
Added variable plot::$7 to zero page equivalence class [ plot::$7 ]
Added variable plot::plotter_x#2 to zero page equivalence class [ plot::plotter_x#2 ]
Added variable plot::$8 to zero page equivalence class [ plot::$8 ]
Added variable plot::plotter_y#1 to zero page equivalence class [ plot::plotter_y#1 ]
Added variable plot::$9 to zero page equivalence class [ plot::$9 ]
Added variable plot::plotter_y#2 to zero page equivalence class [ plot::plotter_y#2 ]
Added variable plot::plotter#0 to zero page equivalence class [ plot::plotter#0 ]
Added variable plot::$5 to zero page equivalence class [ plot::$5 ]
Added variable init_plot_tables::$0 to zero page equivalence class [ init_plot_tables::$0 ]
Added variable init_plot_tables::$6 to zero page equivalence class [ init_plot_tables::$6 ]
Added variable init_plot_tables::$7 to zero page equivalence class [ init_plot_tables::$7 ]
Added variable init_plot_tables::$8 to zero page equivalence class [ init_plot_tables::$8 ]
Added variable init_plot_tables::$9 to zero page equivalence class [ init_plot_tables::$9 ]
Added variable init_plot_tables::$10 to zero page equivalence class [ init_plot_tables::$10 ]
Complete equivalence classes
[ plots::i#2 plots::i#1 ]
[ init_plot_tables::x#2 init_plot_tables::x#1 ]
[ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ]
[ init_plot_tables::y#2 init_plot_tables::y#1 ]
[ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ]
[ init_screen::b#2 init_screen::b#1 ]
[ init_screen::c#2 init_screen::c#1 ]
[ plot::x#0 ]
[ plot::y#0 ]
[ plot::$6 ]
[ plot::plotter_x#1 ]
[ plot::$7 ]
[ plot::plotter_x#2 ]
[ plot::$8 ]
[ plot::plotter_y#1 ]
[ plot::$9 ]
[ plot::plotter_y#2 ]
[ plot::plotter#0 ]
[ plot::$5 ]
[ init_plot_tables::$0 ]
[ init_plot_tables::$6 ]
[ init_plot_tables::$7 ]
[ init_plot_tables::$8 ]
[ init_plot_tables::$9 ]
[ init_plot_tables::$10 ]
Allocated zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ]
Allocated zp ZP_BYTE:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ]
Allocated zp ZP_BYTE:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ]
Allocated zp ZP_BYTE:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ]
Allocated zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ]
Allocated zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ]
Allocated zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ]
Allocated zp ZP_BYTE:12 [ plot::x#0 ]
Allocated zp ZP_BYTE:13 [ plot::y#0 ]
Allocated zp ZP_BYTE:14 [ plot::$6 ]
Allocated zp ZP_WORD:15 [ plot::plotter_x#1 ]
Allocated zp ZP_BYTE:17 [ plot::$7 ]
Allocated zp ZP_WORD:18 [ plot::plotter_x#2 ]
Allocated zp ZP_BYTE:20 [ plot::$8 ]
Allocated zp ZP_WORD:21 [ plot::plotter_y#1 ]
Allocated zp ZP_BYTE:23 [ plot::$9 ]
Allocated zp ZP_WORD:24 [ plot::plotter_y#2 ]
Allocated zp ZP_WORD:26 [ plot::plotter#0 ]
Allocated zp ZP_BYTE:28 [ plot::$5 ]
Allocated zp ZP_BYTE:29 [ init_plot_tables::$0 ]
Allocated zp ZP_BYTE:30 [ init_plot_tables::$6 ]
Allocated zp ZP_BYTE:31 [ init_plot_tables::$7 ]
Allocated zp ZP_BYTE:32 [ init_plot_tables::$8 ]
Allocated zp ZP_BYTE:33 [ init_plot_tables::$9 ]
Allocated zp ZP_BYTE:34 [ init_plot_tables::$10 ]

INITIAL ASM
//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
  .label D011 = $d011
  .const BMM = $20
  .const DEN = $10
  .const RSEL = 8
  .label RASTER = $d012
  .label D018 = $d018
  .label BGCOL = $d020
  .label FGCOL = $d021
  .label SCREEN = $400
  .label BITMAP = $2000
  .const plots_cnt = 8
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @5 [phi:@begin->@5]
b5_from_bbegin:
  jmp b5
//SEG4 @5
b5:
//SEG5 [2] call main param-assignment [ ] ( )
  jsr main
//SEG6 [3] phi from @5 to @end [phi:@5->@end]
bend_from_b5:
  jmp bend
//SEG7 @end
bend:
//SEG8 main
main: {
  //SEG9 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 
    lda #0
    sta BGCOL
  //SEG10 [5] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 
    lda #0
    sta FGCOL
  //SEG11 [6] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 
    lda #BMM|DEN|RSEL|3
    sta D011
  //SEG12 [7] *((const byte*) D018#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0/(word/signed word/dword/signed dword) 1024 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 
    lda #$ff & ($ffff & SCREEN/$40|$ffff & BITMAP/$400)
    sta D018
  //SEG13 [8] call init_screen param-assignment [ ] ( main:2 [ ] )
  //SEG14 [63] phi from main to init_screen [phi:main->init_screen]
  init_screen_from_main:
    jsr init_screen
  //SEG15 [9] phi from main to main::@5 [phi:main->main::@5]
  b5_from_main:
    jmp b5
  //SEG16 main::@5
  b5:
  //SEG17 [10] call init_plot_tables param-assignment [ ] ( main:2 [ ] )
  //SEG18 [37] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables]
  init_plot_tables_from_b5:
    jsr init_plot_tables
    jmp b2
  //SEG19 main::@2
  b2:
  //SEG20 [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 [ ] ( main:2 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda RASTER
    cmp #$ff
    bne b2
    jmp b3
  //SEG21 main::@3
  b3:
  //SEG22 [12] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BGCOL
  //SEG23 [13] call plots param-assignment [ ] ( main:2 [ ] )
  //SEG24 [17] phi from main::@3 to plots [phi:main::@3->plots]
  plots_from_b3:
    jsr plots
    jmp b7
  //SEG25 main::@7
  b7:
  //SEG26 [14] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_dec__deref_pbuc1 
    dec BGCOL
  //SEG27 [15] if(true) goto main::@2 [ ] ( main:2 [ ] ) -- true_then_la1 
    jmp b2
    jmp breturn
  //SEG28 main::@return
  breturn:
  //SEG29 [16] return  [ ] ( main:2 [ ] )
    rts
}
//SEG30 plots
plots: {
    .label i = 2
  //SEG31 [18] phi from plots to plots::@1 [phi:plots->plots::@1]
  b1_from_plots:
  //SEG32 [18] phi (byte) plots::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plots->plots::@1#0] -- vbuz1=vbuc1 
    lda #0
    sta i
    jmp b1
  //SEG33 [18] phi from plots::@3 to plots::@1 [phi:plots::@3->plots::@1]
  b1_from_b3:
  //SEG34 [18] phi (byte) plots::i#2 = (byte) plots::i#1 [phi:plots::@3->plots::@1#0] -- register_copy 
    jmp b1
  //SEG35 plots::@1
  b1:
  //SEG36 [19] (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy i
    lda plots_x,y
    sta plot.x
  //SEG37 [20] (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 plot::y#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 plot::y#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy i
    lda plots_y,y
    sta plot.y
  //SEG38 [21] call plot param-assignment [ plots::i#2 ] ( main:2::plots:13 [ plots::i#2 ] )
    jsr plot
    jmp b3
  //SEG39 plots::@3
  b3:
  //SEG40 [22] (byte) plots::i#1 ← ++ (byte) plots::i#2 [ plots::i#1 ] ( main:2::plots:13 [ plots::i#1 ] ) -- vbuz1=_inc_vbuz1 
    inc i
  //SEG41 [23] if((byte) plots::i#1<(const byte) plots_cnt#0) goto plots::@1 [ plots::i#1 ] ( main:2::plots:13 [ plots::i#1 ] ) -- vbuz1_lt_vbuc1_then_la1 
    lda i
    cmp #plots_cnt
    bcc b1_from_b3
    jmp breturn
  //SEG42 plots::@return
  breturn:
  //SEG43 [24] return  [ ] ( main:2::plots:13 [ ] )
    rts
}
//SEG44 plot
plot: {
    .label _5 = $1c
    .label _6 = $e
    .label _7 = $11
    .label _8 = $14
    .label _9 = $17
    .label x = $c
    .label y = $d
    .label plotter_x = $f
    .label plotter_x_2 = $12
    .label plotter_y = $15
    .label plotter_y_2 = $18
    .label plotter = $1a
  //SEG45 [25] (byte~) plot::$6 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::$6 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::$6 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy x
    lda plot_xhi,y
    sta _6
  //SEG46 [26] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$6 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- pbuz1=pbuc1_sethi_vbuz2 
    lda _6
    sta plotter_x+1
    lda #<0
    sta plotter_x
  //SEG47 [27] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$7 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$7 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy x
    lda plot_xlo,y
    sta _7
  //SEG48 [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) -- pbuz1=pbuz2_setlo_vbuz3 
    lda _7
    sta plotter_x_2
    lda plotter_x+1
    sta plotter_x_2+1
  //SEG49 [29] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$8 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$8 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy y
    lda plot_yhi,y
    sta _8
  //SEG50 [30] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- vwuz1=vbuc1_sethi_vbuz2 
    lda _8
    sta plotter_y+1
    lda #<0
    sta plotter_y
  //SEG51 [31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 
    ldy y
    lda plot_ylo,y
    sta _9
  //SEG52 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- vwuz1=vwuz2_setlo_vbuz3 
    lda _9
    sta plotter_y_2
    lda plotter_y+1
    sta plotter_y_2+1
  //SEG53 [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) -- pbuz1=pbuz2_plus_vwuz3 
    lda plotter
    clc
    adc plotter_x_2
    sta plotter_y_2
    lda plotter+1
    adc plotter_x_2+1
    sta plotter_y_2+1
  //SEG54 [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$5 ] ) -- vbuz1=_deref_pbuz2_bor_pbuc1_derefidx_vbuz3 
    ldy #0
    lda (plotter),y
    ldy x
    ora plot_bit,y
    sta _5
  //SEG55 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) -- _deref_pbuz1=vbuz2 
    lda _5
    ldy #0
    sta (plotter),y
    jmp breturn
  //SEG56 plot::@return
  breturn:
  //SEG57 [36] return  [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] )
    rts
}
//SEG58 init_plot_tables
init_plot_tables: {
    .label _0 = $1d
    .label _6 = $1e
    .label _7 = $1f
    .label _8 = $20
    .label _9 = $21
    .label _10 = $22
    .label bits = 4
    .label x = 3
    .label y = 5
    .label yoffs = 6
  //SEG59 [38] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1]
  b1_from_init_plot_tables:
  //SEG60 [38] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuz1=vbuc1 
    lda #$80
    sta bits
  //SEG61 [38] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuz1=vbuc1 
    lda #0
    sta x
    jmp b1
  //SEG62 [38] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1]
  b1_from_b2:
  //SEG63 [38] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy 
  //SEG64 [38] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy 
    jmp b1
  //SEG65 init_plot_tables::@1
  b1:
  //SEG66 [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- vbuz1=vbuz2_band_vbuc1 
    lda #$f8
    and x
    sta _0
  //SEG67 [40] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 
    lda _0
    ldy x
    sta plot_xlo,y
  //SEG68 [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 
    ldy x
    lda #>BITMAP
    sta plot_xhi,y
  //SEG69 [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 
    lda bits
    ldy x
    sta plot_bit,y
  //SEG70 [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuz1=vbuz1_ror_1 
    lsr bits
  //SEG71 [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuz1_neq_0_then_la1 
    lda bits
    bne b10_from_b1
  //SEG72 [45] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2]
  b2_from_b1:
  //SEG73 [45] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuz1=vbuc1 
    lda #$80
    sta bits
    jmp b2
  //SEG74 init_plot_tables::@2
  b2:
  //SEG75 [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuz1=_inc_vbuz1 
    inc x
  //SEG76 [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuz1_neq_0_then_la1 
    lda x
    bne b1_from_b2
  //SEG77 [48] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3]
  b3_from_b2:
  //SEG78 [48] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 
    lda #<0
    sta yoffs
    lda #>0
    sta yoffs+1
  //SEG79 [48] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuz1=vbuc1 
    lda #0
    sta y
    jmp b3
  //SEG80 [48] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3]
  b3_from_b4:
  //SEG81 [48] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy 
  //SEG82 [48] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy 
    jmp b3
  //SEG83 init_plot_tables::@3
  b3:
  //SEG84 [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- vbuz1=vbuz2_band_vbuc1 
    lda #7
    and y
    sta _6
  //SEG85 [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) -- vbuz1=_lo_pbuz2 
    lda yoffs
    sta _7
  //SEG86 [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) -- vbuz1=vbuz2_bor_vbuz3 
    lda _6
    ora _7
    sta _8
  //SEG87 [52] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 
    lda _8
    ldy y
    sta plot_ylo,y
  //SEG88 [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) -- vbuz1=_hi_pbuz2 
    lda yoffs+1
    sta _9
  //SEG89 [54] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 
    lda _9
    ldy y
    sta plot_yhi,y
  //SEG90 [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- vbuz1=vbuz2_band_vbuc1 
    lda #7
    and y
    sta _10
  //SEG91 [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- vbuz1_neq_vbuc1_then_la1 
    lda _10
    cmp #7
    bne b4_from_b3
    jmp b7
  //SEG92 init_plot_tables::@7
  b7:
  //SEG93 [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1 
    lda yoffs
    clc
    adc #<$28*8
    sta yoffs
    lda yoffs+1
    adc #>$28*8
    sta yoffs+1
  //SEG94 [58] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4]
  b4_from_b3:
  b4_from_b7:
  //SEG95 [58] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy 
    jmp b4
  //SEG96 init_plot_tables::@4
  b4:
  //SEG97 [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuz1=_inc_vbuz1 
    inc y
  //SEG98 [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuz1_neq_0_then_la1 
    lda y
    bne b3_from_b4
    jmp breturn
  //SEG99 init_plot_tables::@return
  breturn:
  //SEG100 [61] return  [ ] ( main:2::init_plot_tables:10 [ ] )
    rts
  //SEG101 [62] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10]
  b10_from_b1:
    jmp b10
  //SEG102 init_plot_tables::@10
  b10:
  //SEG103 [45] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2]
  b2_from_b10:
  //SEG104 [45] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy 
    jmp b2
}
//SEG105 init_screen
init_screen: {
    .label b = 8
    .label c = $a
  //SEG106 [64] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1]
  b1_from_init_screen:
  //SEG107 [64] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 
    lda #<BITMAP
    sta b
    lda #>BITMAP
    sta b+1
    jmp b1
  //SEG108 [64] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1]
  b1_from_b1:
  //SEG109 [64] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy 
    jmp b1
  //SEG110 init_screen::@1
  b1:
  //SEG111 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1 
    lda #0
    ldy #0
    sta (b),y
  //SEG112 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1 
    inc b
    bne !+
    inc b+1
  !:
  //SEG113 [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1_neq_pbuc1_then_la1 
    lda b+1
    cmp #>BITMAP+$2000
    bne b1_from_b1
    lda b
    cmp #<BITMAP+$2000
    bne b1_from_b1
  //SEG114 [68] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2]
  b2_from_b1:
  //SEG115 [68] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta c
    lda #>SCREEN
    sta c+1
    jmp b2
  //SEG116 [68] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2]
  b2_from_b2:
  //SEG117 [68] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy 
    jmp b2
  //SEG118 init_screen::@2
  b2:
  //SEG119 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1 
    lda #$14
    ldy #0
    sta (c),y
  //SEG120 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1 
    inc c
    bne !+
    inc c+1
  !:
  //SEG121 [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1_neq_pbuc1_then_la1 
    lda c+1
    cmp #>SCREEN+$400
    bne b2_from_b2
    lda c
    cmp #<SCREEN+$400
    bne b2_from_b2
    jmp breturn
  //SEG122 init_screen::@return
  breturn:
  //SEG123 [72] return  [ ] ( main:2::init_screen:8 [ ] )
    rts
}
  plots_x: .byte $3c, $50, $6e, $50, $3c, $28, $a, $28
  plots_y: .byte $a, $28, $3c, $50, $6e, $50, $3c, $28
  plot_xlo: .fill $100, 0
  plot_xhi: .fill $100, 0
  plot_ylo: .fill $100, 0
  plot_yhi: .fill $100, 0
  plot_bit: .fill $100, 0

REGISTER UPLIFT POTENTIAL REGISTERS
Equivalence Class zp ZP_BYTE:31 [ init_plot_tables::$7 ] has ALU potential.
Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [5] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [6] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [7] *((const byte*) D018#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0/(word/signed word/dword/signed dword) 1024 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ plot::x#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ plot::y#0 ]
Statement [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) always clobbers reg byte a 
Statement [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) always clobbers reg byte a 
Statement [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$5 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ]
Statement [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) always clobbers reg byte y 
Statement [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ]
Statement [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a 
Statement [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a 
Statement [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ]
Statement [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a 
Statement [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a 
Statement [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y 
Statement [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) always clobbers reg byte a 
Statement [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y 
Statement [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) always clobbers reg byte a 
Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [5] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [6] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [7] *((const byte*) D018#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0/(word/signed word/dword/signed dword) 1024 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) always clobbers reg byte a 
Statement [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) always clobbers reg byte a 
Statement [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) always clobbers reg byte a 
Statement [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$5 ] ) always clobbers reg byte a reg byte y 
Statement [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) always clobbers reg byte y 
Statement [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a 
Statement [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a 
Statement [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a 
Statement [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a 
Statement [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a 
Statement [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a 
Statement [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y 
Statement [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) always clobbers reg byte a 
Statement [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y 
Statement [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) always clobbers reg byte a 
Potential registers zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] : zp ZP_BYTE:2 , reg byte x , 
Potential registers zp ZP_BYTE:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] : zp ZP_WORD:6 , 
Potential registers zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] : zp ZP_WORD:8 , 
Potential registers zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ] : zp ZP_WORD:10 , 
Potential registers zp ZP_BYTE:12 [ plot::x#0 ] : zp ZP_BYTE:12 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:13 [ plot::y#0 ] : zp ZP_BYTE:13 , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:14 [ plot::$6 ] : zp ZP_BYTE:14 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:15 [ plot::plotter_x#1 ] : zp ZP_WORD:15 , 
Potential registers zp ZP_BYTE:17 [ plot::$7 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:18 [ plot::plotter_x#2 ] : zp ZP_WORD:18 , 
Potential registers zp ZP_BYTE:20 [ plot::$8 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:21 [ plot::plotter_y#1 ] : zp ZP_WORD:21 , 
Potential registers zp ZP_BYTE:23 [ plot::$9 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_WORD:24 [ plot::plotter_y#2 ] : zp ZP_WORD:24 , 
Potential registers zp ZP_WORD:26 [ plot::plotter#0 ] : zp ZP_WORD:26 , 
Potential registers zp ZP_BYTE:28 [ plot::$5 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:29 [ init_plot_tables::$0 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:30 [ init_plot_tables::$6 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:31 [ init_plot_tables::$7 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , reg byte alu , 
Potential registers zp ZP_BYTE:32 [ init_plot_tables::$8 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:33 [ init_plot_tables::$9 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , 
Potential registers zp ZP_BYTE:34 [ init_plot_tables::$10 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , 

REGISTER UPLIFT SCOPES
Uplift Scope [plots] 252.5: zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] 
Uplift Scope [init_plot_tables] 39.11: zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] 24.93: zp ZP_BYTE:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] 23.83: zp ZP_BYTE:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] 22.5: zp ZP_BYTE:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ] 22: zp ZP_BYTE:29 [ init_plot_tables::$0 ] 22: zp ZP_BYTE:31 [ init_plot_tables::$7 ] 22: zp ZP_BYTE:32 [ init_plot_tables::$8 ] 22: zp ZP_BYTE:33 [ init_plot_tables::$9 ] 22: zp ZP_BYTE:34 [ init_plot_tables::$10 ] 11: zp ZP_BYTE:30 [ init_plot_tables::$6 ] 
Uplift Scope [init_screen] 33: zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] 33: zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ] 
Uplift Scope [plot] 15: zp ZP_BYTE:13 [ plot::y#0 ] 9.73: zp ZP_BYTE:12 [ plot::x#0 ] 4: zp ZP_BYTE:14 [ plot::$6 ] 4: zp ZP_BYTE:17 [ plot::$7 ] 4: zp ZP_BYTE:20 [ plot::$8 ] 4: zp ZP_BYTE:23 [ plot::$9 ] 4: zp ZP_WORD:24 [ plot::plotter_y#2 ] 4: zp ZP_BYTE:28 [ plot::$5 ] 3: zp ZP_WORD:26 [ plot::plotter#0 ] 2: zp ZP_WORD:15 [ plot::plotter_x#1 ] 2: zp ZP_WORD:21 [ plot::plotter_y#1 ] 0.8: zp ZP_WORD:18 [ plot::plotter_x#2 ] 
Uplift Scope [main] 
Uplift Scope [] 

Uplifting [plots] best 8971 combination reg byte x [ plots::i#2 plots::i#1 ] 
Uplift attempts [init_plot_tables] 10000/138240 (limiting to 10000)
Uplifting [init_plot_tables] best 8341 combination zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] reg byte a [ init_plot_tables::$7 ] reg byte a [ init_plot_tables::$8 ] reg byte a [ init_plot_tables::$9 ] zp ZP_BYTE:34 [ init_plot_tables::$10 ] zp ZP_BYTE:30 [ init_plot_tables::$6 ] 
Limited combination testing to 10000 combinations of 138240 possible.
Uplifting [init_screen] best 8341 combination zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ] 
Uplifting [plot] best 8311 combination zp ZP_BYTE:13 [ plot::y#0 ] zp ZP_BYTE:12 [ plot::x#0 ] reg byte a [ plot::$6 ] reg byte a [ plot::$7 ] reg byte a [ plot::$8 ] reg byte a [ plot::$9 ] zp ZP_WORD:24 [ plot::plotter_y#2 ] reg byte a [ plot::$5 ] zp ZP_WORD:26 [ plot::plotter#0 ] zp ZP_WORD:15 [ plot::plotter_x#1 ] zp ZP_WORD:21 [ plot::plotter_y#1 ] zp ZP_WORD:18 [ plot::plotter_x#2 ] 
Uplifting [main] best 8311 combination 
Uplifting [] best 8311 combination 
Attempting to uplift remaining variables inzp ZP_BYTE:34 [ init_plot_tables::$10 ]
Uplifting [init_plot_tables] best 8251 combination reg byte a [ init_plot_tables::$10 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:13 [ plot::y#0 ]
Uplifting [plot] best 8251 combination zp ZP_BYTE:13 [ plot::y#0 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:30 [ init_plot_tables::$6 ]
Uplifting [init_plot_tables] best 8251 combination zp ZP_BYTE:30 [ init_plot_tables::$6 ] 
Attempting to uplift remaining variables inzp ZP_BYTE:12 [ plot::x#0 ]
Uplifting [plot] best 8251 combination zp ZP_BYTE:12 [ plot::x#0 ] 
Coalescing zero page register [ zp ZP_WORD:15 [ plot::plotter_x#1 ] ] with [ zp ZP_WORD:18 [ plot::plotter_x#2 ] ]
Coalescing zero page register [ zp ZP_WORD:15 [ plot::plotter_x#1 plot::plotter_x#2 ] ] with [ zp ZP_WORD:26 [ plot::plotter#0 ] ]
Coalescing zero page register [ zp ZP_WORD:21 [ plot::plotter_y#1 ] ] with [ zp ZP_WORD:24 [ plot::plotter_y#2 ] ]
Allocated (was zp ZP_WORD:6) zp ZP_WORD:2 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ]
Allocated (was zp ZP_WORD:8) zp ZP_WORD:4 [ init_screen::b#2 init_screen::b#1 ]
Allocated (was zp ZP_WORD:10) zp ZP_WORD:6 [ init_screen::c#2 init_screen::c#1 ]
Allocated (was zp ZP_BYTE:12) zp ZP_BYTE:8 [ plot::x#0 ]
Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:9 [ plot::y#0 ]
Allocated (was zp ZP_WORD:15) zp ZP_WORD:10 [ plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 ]
Allocated (was zp ZP_WORD:21) zp ZP_WORD:12 [ plot::plotter_y#1 plot::plotter_y#2 ]
Allocated (was zp ZP_BYTE:30) zp ZP_BYTE:14 [ init_plot_tables::$6 ]

ASSEMBLER BEFORE OPTIMIZATION
//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
  .label D011 = $d011
  .const BMM = $20
  .const DEN = $10
  .const RSEL = 8
  .label RASTER = $d012
  .label D018 = $d018
  .label BGCOL = $d020
  .label FGCOL = $d021
  .label SCREEN = $400
  .label BITMAP = $2000
  .const plots_cnt = 8
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @5 [phi:@begin->@5]
b5_from_bbegin:
  jmp b5
//SEG4 @5
b5:
//SEG5 [2] call main param-assignment [ ] ( )
  jsr main
//SEG6 [3] phi from @5 to @end [phi:@5->@end]
bend_from_b5:
  jmp bend
//SEG7 @end
bend:
//SEG8 main
main: {
  //SEG9 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 
    lda #0
    sta BGCOL
  //SEG10 [5] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 
    lda #0
    sta FGCOL
  //SEG11 [6] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 
    lda #BMM|DEN|RSEL|3
    sta D011
  //SEG12 [7] *((const byte*) D018#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0/(word/signed word/dword/signed dword) 1024 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 
    lda #$ff & ($ffff & SCREEN/$40|$ffff & BITMAP/$400)
    sta D018
  //SEG13 [8] call init_screen param-assignment [ ] ( main:2 [ ] )
  //SEG14 [63] phi from main to init_screen [phi:main->init_screen]
  init_screen_from_main:
    jsr init_screen
  //SEG15 [9] phi from main to main::@5 [phi:main->main::@5]
  b5_from_main:
    jmp b5
  //SEG16 main::@5
  b5:
  //SEG17 [10] call init_plot_tables param-assignment [ ] ( main:2 [ ] )
  //SEG18 [37] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables]
  init_plot_tables_from_b5:
    jsr init_plot_tables
    jmp b2
  //SEG19 main::@2
  b2:
  //SEG20 [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 [ ] ( main:2 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda RASTER
    cmp #$ff
    bne b2
    jmp b3
  //SEG21 main::@3
  b3:
  //SEG22 [12] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BGCOL
  //SEG23 [13] call plots param-assignment [ ] ( main:2 [ ] )
  //SEG24 [17] phi from main::@3 to plots [phi:main::@3->plots]
  plots_from_b3:
    jsr plots
    jmp b7
  //SEG25 main::@7
  b7:
  //SEG26 [14] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_dec__deref_pbuc1 
    dec BGCOL
  //SEG27 [15] if(true) goto main::@2 [ ] ( main:2 [ ] ) -- true_then_la1 
    jmp b2
    jmp breturn
  //SEG28 main::@return
  breturn:
  //SEG29 [16] return  [ ] ( main:2 [ ] )
    rts
}
//SEG30 plots
plots: {
  //SEG31 [18] phi from plots to plots::@1 [phi:plots->plots::@1]
  b1_from_plots:
  //SEG32 [18] phi (byte) plots::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plots->plots::@1#0] -- vbuxx=vbuc1 
    ldx #0
    jmp b1
  //SEG33 [18] phi from plots::@3 to plots::@1 [phi:plots::@3->plots::@1]
  b1_from_b3:
  //SEG34 [18] phi (byte) plots::i#2 = (byte) plots::i#1 [phi:plots::@3->plots::@1#0] -- register_copy 
    jmp b1
  //SEG35 plots::@1
  b1:
  //SEG36 [19] (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 ] ) -- vbuz1=pbuc1_derefidx_vbuxx 
    lda plots_x,x
    sta plot.x
  //SEG37 [20] (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 plot::y#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 plot::y#0 ] ) -- vbuz1=pbuc1_derefidx_vbuxx 
    lda plots_y,x
    sta plot.y
  //SEG38 [21] call plot param-assignment [ plots::i#2 ] ( main:2::plots:13 [ plots::i#2 ] )
    jsr plot
    jmp b3
  //SEG39 plots::@3
  b3:
  //SEG40 [22] (byte) plots::i#1 ← ++ (byte) plots::i#2 [ plots::i#1 ] ( main:2::plots:13 [ plots::i#1 ] ) -- vbuxx=_inc_vbuxx 
    inx
  //SEG41 [23] if((byte) plots::i#1<(const byte) plots_cnt#0) goto plots::@1 [ plots::i#1 ] ( main:2::plots:13 [ plots::i#1 ] ) -- vbuxx_lt_vbuc1_then_la1 
    cpx #plots_cnt
    bcc b1_from_b3
    jmp breturn
  //SEG42 plots::@return
  breturn:
  //SEG43 [24] return  [ ] ( main:2::plots:13 [ ] )
    rts
}
//SEG44 plot
plot: {
    .label x = 8
    .label y = 9
    .label plotter_x = $a
    .label plotter_y = $c
    .label plotter = $a
  //SEG45 [25] (byte~) plot::$6 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::$6 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::$6 ] ) -- vbuaa=pbuc1_derefidx_vbuz1 
    ldy x
    lda plot_xhi,y
  //SEG46 [26] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$6 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- pbuz1=pbuc1_sethi_vbuaa 
    sta plotter_x+1
    lda #<0
    sta plotter_x
  //SEG47 [27] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$7 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$7 ] ) -- vbuaa=pbuc1_derefidx_vbuz1 
    ldy x
    lda plot_xlo,y
  //SEG48 [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) -- pbuz1=pbuz1_setlo_vbuaa 
    sta plotter_x
  //SEG49 [29] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$8 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$8 ] ) -- vbuaa=pbuc1_derefidx_vbuz1 
    ldy y
    lda plot_yhi,y
  //SEG50 [30] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- vwuz1=vbuc1_sethi_vbuaa 
    sta plotter_y+1
    lda #<0
    sta plotter_y
  //SEG51 [31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] ) -- vbuaa=pbuc1_derefidx_vbuz1 
    ldy y
    lda plot_ylo,y
  //SEG52 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- vwuz1=vwuz1_setlo_vbuaa 
    sta plotter_y
  //SEG53 [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) -- pbuz1=pbuz1_plus_vwuz2 
    lda plotter
    clc
    adc plotter_y
    sta plotter
    lda plotter+1
    adc plotter_y+1
    sta plotter+1
  //SEG54 [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$5 ] ) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 
    ldy #0
    lda (plotter),y
    ldy x
    ora plot_bit,y
  //SEG55 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (plotter),y
    jmp breturn
  //SEG56 plot::@return
  breturn:
  //SEG57 [36] return  [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] )
    rts
}
//SEG58 init_plot_tables
init_plot_tables: {
    .label _6 = $e
    .label yoffs = 2
  //SEG59 [38] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1]
  b1_from_init_plot_tables:
  //SEG60 [38] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 
    ldy #$80
  //SEG61 [38] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuxx=vbuc1 
    ldx #0
    jmp b1
  //SEG62 [38] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1]
  b1_from_b2:
  //SEG63 [38] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy 
  //SEG64 [38] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy 
    jmp b1
  //SEG65 init_plot_tables::@1
  b1:
  //SEG66 [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #$f8
  //SEG67 [40] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuaa 
    sta plot_xlo,x
  //SEG68 [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #>BITMAP
    sta plot_xhi,x
  //SEG69 [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuyy 
    tya
    sta plot_bit,x
  //SEG70 [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy=vbuyy_ror_1 
    tya
    lsr
    tay
  //SEG71 [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy_neq_0_then_la1 
    cpy #0
    bne b10_from_b1
  //SEG72 [45] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2]
  b2_from_b1:
  //SEG73 [45] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuyy=vbuc1 
    ldy #$80
    jmp b2
  //SEG74 init_plot_tables::@2
  b2:
  //SEG75 [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx=_inc_vbuxx 
    inx
  //SEG76 [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b1_from_b2
  //SEG77 [48] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3]
  b3_from_b2:
  //SEG78 [48] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 
    lda #<0
    sta yoffs
    lda #>0
    sta yoffs+1
  //SEG79 [48] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuxx=vbuc1 
    ldx #0
    jmp b3
  //SEG80 [48] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3]
  b3_from_b4:
  //SEG81 [48] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy 
  //SEG82 [48] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy 
    jmp b3
  //SEG83 init_plot_tables::@3
  b3:
  //SEG84 [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- vbuz1=vbuxx_band_vbuc1 
    txa
    and #7
    sta _6
  //SEG85 [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) -- vbuaa=_lo_pbuz1 
    lda yoffs
  //SEG86 [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) -- vbuaa=vbuz1_bor_vbuaa 
    ora _6
  //SEG87 [52] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa 
    sta plot_ylo,x
  //SEG88 [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) -- vbuaa=_hi_pbuz1 
    lda yoffs+1
  //SEG89 [54] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa 
    sta plot_yhi,x
  //SEG90 [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #7
  //SEG91 [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- vbuaa_neq_vbuc1_then_la1 
    cmp #7
    bne b4_from_b3
    jmp b7
  //SEG92 init_plot_tables::@7
  b7:
  //SEG93 [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1 
    lda yoffs
    clc
    adc #<$28*8
    sta yoffs
    lda yoffs+1
    adc #>$28*8
    sta yoffs+1
  //SEG94 [58] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4]
  b4_from_b3:
  b4_from_b7:
  //SEG95 [58] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy 
    jmp b4
  //SEG96 init_plot_tables::@4
  b4:
  //SEG97 [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx=_inc_vbuxx 
    inx
  //SEG98 [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b3_from_b4
    jmp breturn
  //SEG99 init_plot_tables::@return
  breturn:
  //SEG100 [61] return  [ ] ( main:2::init_plot_tables:10 [ ] )
    rts
  //SEG101 [62] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10]
  b10_from_b1:
    jmp b10
  //SEG102 init_plot_tables::@10
  b10:
  //SEG103 [45] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2]
  b2_from_b10:
  //SEG104 [45] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy 
    jmp b2
}
//SEG105 init_screen
init_screen: {
    .label b = 4
    .label c = 6
  //SEG106 [64] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1]
  b1_from_init_screen:
  //SEG107 [64] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 
    lda #<BITMAP
    sta b
    lda #>BITMAP
    sta b+1
    jmp b1
  //SEG108 [64] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1]
  b1_from_b1:
  //SEG109 [64] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy 
    jmp b1
  //SEG110 init_screen::@1
  b1:
  //SEG111 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1 
    lda #0
    ldy #0
    sta (b),y
  //SEG112 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1 
    inc b
    bne !+
    inc b+1
  !:
  //SEG113 [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1_neq_pbuc1_then_la1 
    lda b+1
    cmp #>BITMAP+$2000
    bne b1_from_b1
    lda b
    cmp #<BITMAP+$2000
    bne b1_from_b1
  //SEG114 [68] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2]
  b2_from_b1:
  //SEG115 [68] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta c
    lda #>SCREEN
    sta c+1
    jmp b2
  //SEG116 [68] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2]
  b2_from_b2:
  //SEG117 [68] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy 
    jmp b2
  //SEG118 init_screen::@2
  b2:
  //SEG119 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1 
    lda #$14
    ldy #0
    sta (c),y
  //SEG120 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1 
    inc c
    bne !+
    inc c+1
  !:
  //SEG121 [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1_neq_pbuc1_then_la1 
    lda c+1
    cmp #>SCREEN+$400
    bne b2_from_b2
    lda c
    cmp #<SCREEN+$400
    bne b2_from_b2
    jmp breturn
  //SEG122 init_screen::@return
  breturn:
  //SEG123 [72] return  [ ] ( main:2::init_screen:8 [ ] )
    rts
}
  plots_x: .byte $3c, $50, $6e, $50, $3c, $28, $a, $28
  plots_y: .byte $a, $28, $3c, $50, $6e, $50, $3c, $28
  plot_xlo: .fill $100, 0
  plot_xhi: .fill $100, 0
  plot_ylo: .fill $100, 0
  plot_yhi: .fill $100, 0
  plot_bit: .fill $100, 0

ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b5
Removing instruction jmp bend
Removing instruction jmp b5
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp b7
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b3
Removing instruction jmp breturn
Removing instruction jmp breturn
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp b7
Removing instruction jmp b4
Removing instruction jmp breturn
Removing instruction jmp b10
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda #0
Removing instruction ldy x
Removing instruction ldy y
Removing instruction lda #>0
Replacing instruction ldx #0 with TAX
Replacing instruction ldy #0 with TAY
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label b1_from_b3 with b1
Replacing label b10_from_b1 with b10
Replacing label b1_from_b2 with b1
Replacing label b4_from_b3 with b4
Replacing label b3_from_b4 with b3
Replacing label b1_from_b1 with b1
Replacing label b1_from_b1 with b1
Replacing label b2_from_b2 with b2
Replacing label b2_from_b2 with b2
Removing instruction bbegin:
Removing instruction b5_from_bbegin:
Removing instruction bend_from_b5:
Removing instruction b5_from_main:
Removing instruction init_plot_tables_from_b5:
Removing instruction b1_from_b3:
Removing instruction b1_from_b2:
Removing instruction b3_from_b4:
Removing instruction b4_from_b3:
Removing instruction b4_from_b7:
Removing instruction b10_from_b1:
Removing instruction b2_from_b10:
Removing instruction b1_from_b1:
Removing instruction b2_from_b2:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction b5:
Removing instruction bend:
Removing instruction init_screen_from_main:
Removing instruction b5:
Removing instruction b3:
Removing instruction plots_from_b3:
Removing instruction b7:
Removing instruction breturn:
Removing instruction b1_from_plots:
Removing instruction b3:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction b1_from_init_plot_tables:
Removing instruction b2_from_b1:
Removing instruction b3_from_b2:
Removing instruction b7:
Removing instruction breturn:
Removing instruction b1_from_init_screen:
Removing instruction b2_from_b1:
Removing instruction breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Skipping double jump to b2 in bne b10
Succesful ASM optimization Pass5DoubleJumpElimination
Removing unreachable instruction rts
Succesful ASM optimization Pass5UnreachableCodeElimination
Removing instruction jmp b1
Removing instruction jmp b1
Removing instruction jmp b3
Removing instruction jmp b1
Removing instruction jmp b2
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction b10:
Succesful ASM optimization Pass5UnusedLabelElimination
Removing unreachable instruction jmp b2
Succesful ASM optimization Pass5UnreachableCodeElimination

FINAL SYMBOL TABLE
(label) @5
(label) @begin
(label) @end
(byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53280
(byte*) BITMAP
(const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word/dword/signed dword) 8192
(byte) BMM
(const byte) BMM#0 BMM = (byte/signed byte/word/signed word/dword/signed dword) 32
(byte*) D011
(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265
(byte*) D018
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272
(byte) DEN
(const byte) DEN#0 DEN = (byte/signed byte/word/signed word/dword/signed dword) 16
(byte*) FGCOL
(const byte*) FGCOL#0 FGCOL = ((byte*))(word/dword/signed dword) 53281
(byte*) RASTER
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
(byte) RSEL
(const byte) RSEL#0 RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
(void()) init_plot_tables()
(byte~) init_plot_tables::$0 reg byte a 22.0
(byte~) init_plot_tables::$10 reg byte a 22.0
(byte~) init_plot_tables::$6 $6 zp ZP_BYTE:14 11.0
(byte~) init_plot_tables::$7 reg byte a 22.0
(byte~) init_plot_tables::$8 reg byte a 22.0
(byte~) init_plot_tables::$9 reg byte a 22.0
(label) init_plot_tables::@1
(label) init_plot_tables::@10
(label) init_plot_tables::@2
(label) init_plot_tables::@3
(label) init_plot_tables::@4
(label) init_plot_tables::@7
(label) init_plot_tables::@return
(byte) init_plot_tables::bits
(byte) init_plot_tables::bits#1 reg byte y 11.0
(byte) init_plot_tables::bits#3 reg byte y 6.6000000000000005
(byte) init_plot_tables::bits#4 reg byte y 7.333333333333333
(byte) init_plot_tables::x
(byte) init_plot_tables::x#1 reg byte x 16.5
(byte) init_plot_tables::x#2 reg byte x 7.333333333333334
(byte) init_plot_tables::y
(byte) init_plot_tables::y#1 reg byte x 16.5
(byte) init_plot_tables::y#2 reg byte x 6.0
(byte*) init_plot_tables::yoffs
(byte*) init_plot_tables::yoffs#1 yoffs zp ZP_WORD:2 22.0
(byte*) init_plot_tables::yoffs#2 yoffs zp ZP_WORD:2 6.111111111111112
(byte*) init_plot_tables::yoffs#4 yoffs zp ZP_WORD:2 11.0
(void()) init_screen()
(label) init_screen::@1
(label) init_screen::@2
(label) init_screen::@return
(byte*) init_screen::b
(byte*) init_screen::b#1 b zp ZP_WORD:4 16.5
(byte*) init_screen::b#2 b zp ZP_WORD:4 16.5
(byte*) init_screen::c
(byte*) init_screen::c#1 c zp ZP_WORD:6 16.5
(byte*) init_screen::c#2 c zp ZP_WORD:6 16.5
(void()) main()
(label) main::@2
(label) main::@3
(label) main::@5
(label) main::@7
(label) main::@return
(void()) plot((byte) plot::x , (byte) plot::y)
(byte~) plot::$5 reg byte a 4.0
(byte~) plot::$6 reg byte a 4.0
(byte~) plot::$7 reg byte a 4.0
(byte~) plot::$8 reg byte a 4.0
(byte~) plot::$9 reg byte a 4.0
(label) plot::@return
(byte*) plot::plotter
(byte*) plot::plotter#0 plotter zp ZP_WORD:10 3.0
(byte*) plot::plotter_x
(byte*) plot::plotter_x#1 plotter_x zp ZP_WORD:10 2.0
(byte*) plot::plotter_x#2 plotter_x zp ZP_WORD:10 0.8
(word) plot::plotter_y
(word) plot::plotter_y#1 plotter_y zp ZP_WORD:12 2.0
(word) plot::plotter_y#2 plotter_y zp ZP_WORD:12 4.0
(byte) plot::x
(byte) plot::x#0 x zp ZP_BYTE:8 9.727272727272727
(byte) plot::y
(byte) plot::y#0 y zp ZP_BYTE:9 15.000000000000002
(byte[256]) plot_bit
(const byte[256]) plot_bit#0 plot_bit = { fill( 256, 0) }
(byte[256]) plot_xhi
(const byte[256]) plot_xhi#0 plot_xhi = { fill( 256, 0) }
(byte[256]) plot_xlo
(const byte[256]) plot_xlo#0 plot_xlo = { fill( 256, 0) }
(byte[256]) plot_yhi
(const byte[256]) plot_yhi#0 plot_yhi = { fill( 256, 0) }
(byte[256]) plot_ylo
(const byte[256]) plot_ylo#0 plot_ylo = { fill( 256, 0) }
(void()) plots()
(label) plots::@1
(label) plots::@3
(label) plots::@return
(byte) plots::i
(byte) plots::i#1 reg byte x 151.5
(byte) plots::i#2 reg byte x 101.0
(byte) plots_cnt
(const byte) plots_cnt#0 plots_cnt = (byte/signed byte/word/signed word/dword/signed dword) 8
(byte[]) plots_x
(const byte[]) plots_x#0 plots_x = { (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 110, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 40 }
(byte[]) plots_y
(const byte[]) plots_y#0 plots_y = { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 110, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 40 }

reg byte x [ plots::i#2 plots::i#1 ]
reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ]
reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ]
reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ]
zp ZP_WORD:2 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ]
zp ZP_WORD:4 [ init_screen::b#2 init_screen::b#1 ]
zp ZP_WORD:6 [ init_screen::c#2 init_screen::c#1 ]
zp ZP_BYTE:8 [ plot::x#0 ]
zp ZP_BYTE:9 [ plot::y#0 ]
reg byte a [ plot::$6 ]
zp ZP_WORD:10 [ plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 ]
reg byte a [ plot::$7 ]
reg byte a [ plot::$8 ]
zp ZP_WORD:12 [ plot::plotter_y#1 plot::plotter_y#2 ]
reg byte a [ plot::$9 ]
reg byte a [ plot::$5 ]
reg byte a [ init_plot_tables::$0 ]
zp ZP_BYTE:14 [ init_plot_tables::$6 ]
reg byte a [ init_plot_tables::$7 ]
reg byte a [ init_plot_tables::$8 ]
reg byte a [ init_plot_tables::$9 ]
reg byte a [ init_plot_tables::$10 ]


FINAL ASSEMBLER
Score: 6207

//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
  .label D011 = $d011
  .const BMM = $20
  .const DEN = $10
  .const RSEL = 8
  .label RASTER = $d012
  .label D018 = $d018
  .label BGCOL = $d020
  .label FGCOL = $d021
  .label SCREEN = $400
  .label BITMAP = $2000
  .const plots_cnt = 8
//SEG2 @begin
//SEG3 [1] phi from @begin to @5 [phi:@begin->@5]
//SEG4 @5
//SEG5 [2] call main param-assignment [ ] ( )
  jsr main
//SEG6 [3] phi from @5 to @end [phi:@5->@end]
//SEG7 @end
//SEG8 main
main: {
  //SEG9 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 
    lda #0
    sta BGCOL
  //SEG10 [5] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 
    sta FGCOL
  //SEG11 [6] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 
    lda #BMM|DEN|RSEL|3
    sta D011
  //SEG12 [7] *((const byte*) D018#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0/(word/signed word/dword/signed dword) 1024 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 
    lda #$ff & ($ffff & SCREEN/$40|$ffff & BITMAP/$400)
    sta D018
  //SEG13 [8] call init_screen param-assignment [ ] ( main:2 [ ] )
  //SEG14 [63] phi from main to init_screen [phi:main->init_screen]
    jsr init_screen
  //SEG15 [9] phi from main to main::@5 [phi:main->main::@5]
  //SEG16 main::@5
  //SEG17 [10] call init_plot_tables param-assignment [ ] ( main:2 [ ] )
  //SEG18 [37] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables]
    jsr init_plot_tables
  //SEG19 main::@2
  b2:
  //SEG20 [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 [ ] ( main:2 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1 
    lda RASTER
    cmp #$ff
    bne b2
  //SEG21 main::@3
  //SEG22 [12] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_inc__deref_pbuc1 
    inc BGCOL
  //SEG23 [13] call plots param-assignment [ ] ( main:2 [ ] )
  //SEG24 [17] phi from main::@3 to plots [phi:main::@3->plots]
    jsr plots
  //SEG25 main::@7
  //SEG26 [14] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_dec__deref_pbuc1 
    dec BGCOL
  //SEG27 [15] if(true) goto main::@2 [ ] ( main:2 [ ] ) -- true_then_la1 
    jmp b2
  //SEG28 main::@return
  //SEG29 [16] return  [ ] ( main:2 [ ] )
}
//SEG30 plots
plots: {
  //SEG31 [18] phi from plots to plots::@1 [phi:plots->plots::@1]
  //SEG32 [18] phi (byte) plots::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:plots->plots::@1#0] -- vbuxx=vbuc1 
    ldx #0
  //SEG33 [18] phi from plots::@3 to plots::@1 [phi:plots::@3->plots::@1]
  //SEG34 [18] phi (byte) plots::i#2 = (byte) plots::i#1 [phi:plots::@3->plots::@1#0] -- register_copy 
  //SEG35 plots::@1
  b1:
  //SEG36 [19] (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 ] ) -- vbuz1=pbuc1_derefidx_vbuxx 
    lda plots_x,x
    sta plot.x
  //SEG37 [20] (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 plot::y#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 plot::y#0 ] ) -- vbuz1=pbuc1_derefidx_vbuxx 
    lda plots_y,x
    sta plot.y
  //SEG38 [21] call plot param-assignment [ plots::i#2 ] ( main:2::plots:13 [ plots::i#2 ] )
    jsr plot
  //SEG39 plots::@3
  //SEG40 [22] (byte) plots::i#1 ← ++ (byte) plots::i#2 [ plots::i#1 ] ( main:2::plots:13 [ plots::i#1 ] ) -- vbuxx=_inc_vbuxx 
    inx
  //SEG41 [23] if((byte) plots::i#1<(const byte) plots_cnt#0) goto plots::@1 [ plots::i#1 ] ( main:2::plots:13 [ plots::i#1 ] ) -- vbuxx_lt_vbuc1_then_la1 
    cpx #plots_cnt
    bcc b1
  //SEG42 plots::@return
  //SEG43 [24] return  [ ] ( main:2::plots:13 [ ] )
    rts
}
//SEG44 plot
plot: {
    .label x = 8
    .label y = 9
    .label plotter_x = $a
    .label plotter_y = $c
    .label plotter = $a
  //SEG45 [25] (byte~) plot::$6 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::$6 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::$6 ] ) -- vbuaa=pbuc1_derefidx_vbuz1 
    ldy x
    lda plot_xhi,y
  //SEG46 [26] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$6 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- pbuz1=pbuc1_sethi_vbuaa 
    sta plotter_x+1
    lda #<0
    sta plotter_x
  //SEG47 [27] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$7 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$7 ] ) -- vbuaa=pbuc1_derefidx_vbuz1 
    lda plot_xlo,y
  //SEG48 [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) -- pbuz1=pbuz1_setlo_vbuaa 
    sta plotter_x
  //SEG49 [29] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$8 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$8 ] ) -- vbuaa=pbuc1_derefidx_vbuz1 
    ldy y
    lda plot_yhi,y
  //SEG50 [30] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- vwuz1=vbuc1_sethi_vbuaa 
    sta plotter_y+1
    lda #<0
    sta plotter_y
  //SEG51 [31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] ) -- vbuaa=pbuc1_derefidx_vbuz1 
    lda plot_ylo,y
  //SEG52 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- vwuz1=vwuz1_setlo_vbuaa 
    sta plotter_y
  //SEG53 [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) -- pbuz1=pbuz1_plus_vwuz2 
    lda plotter
    clc
    adc plotter_y
    sta plotter
    lda plotter+1
    adc plotter_y+1
    sta plotter+1
  //SEG54 [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$5 ] ) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 
    ldy #0
    lda (plotter),y
    ldy x
    ora plot_bit,y
  //SEG55 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (plotter),y
  //SEG56 plot::@return
  //SEG57 [36] return  [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] )
    rts
}
//SEG58 init_plot_tables
init_plot_tables: {
    .label _6 = $e
    .label yoffs = 2
  //SEG59 [38] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1]
  //SEG60 [38] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 
    ldy #$80
  //SEG61 [38] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuxx=vbuc1 
    ldx #0
  //SEG62 [38] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1]
  //SEG63 [38] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy 
  //SEG64 [38] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy 
  //SEG65 init_plot_tables::@1
  b1:
  //SEG66 [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #$f8
  //SEG67 [40] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuaa 
    sta plot_xlo,x
  //SEG68 [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 
    lda #>BITMAP
    sta plot_xhi,x
  //SEG69 [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuyy 
    tya
    sta plot_bit,x
  //SEG70 [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy=vbuyy_ror_1 
    tya
    lsr
    tay
  //SEG71 [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy_neq_0_then_la1 
    cpy #0
    bne b2
  //SEG72 [45] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2]
  //SEG73 [45] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuyy=vbuc1 
    ldy #$80
  //SEG74 init_plot_tables::@2
  b2:
  //SEG75 [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx=_inc_vbuxx 
    inx
  //SEG76 [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b1
  //SEG77 [48] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3]
  //SEG78 [48] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 
    lda #<0
    sta yoffs
    sta yoffs+1
  //SEG79 [48] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuxx=vbuc1 
    tax
  //SEG80 [48] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3]
  //SEG81 [48] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy 
  //SEG82 [48] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy 
  //SEG83 init_plot_tables::@3
  b3:
  //SEG84 [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- vbuz1=vbuxx_band_vbuc1 
    txa
    and #7
    sta _6
  //SEG85 [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) -- vbuaa=_lo_pbuz1 
    lda yoffs
  //SEG86 [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) -- vbuaa=vbuz1_bor_vbuaa 
    ora _6
  //SEG87 [52] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa 
    sta plot_ylo,x
  //SEG88 [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) -- vbuaa=_hi_pbuz1 
    lda yoffs+1
  //SEG89 [54] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa 
    sta plot_yhi,x
  //SEG90 [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- vbuaa=vbuxx_band_vbuc1 
    txa
    and #7
  //SEG91 [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- vbuaa_neq_vbuc1_then_la1 
    cmp #7
    bne b4
  //SEG92 init_plot_tables::@7
  //SEG93 [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1 
    lda yoffs
    clc
    adc #<$28*8
    sta yoffs
    lda yoffs+1
    adc #>$28*8
    sta yoffs+1
  //SEG94 [58] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4]
  //SEG95 [58] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy 
  //SEG96 init_plot_tables::@4
  b4:
  //SEG97 [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx=_inc_vbuxx 
    inx
  //SEG98 [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx_neq_0_then_la1 
    cpx #0
    bne b3
  //SEG99 init_plot_tables::@return
  //SEG100 [61] return  [ ] ( main:2::init_plot_tables:10 [ ] )
    rts
  //SEG101 [62] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10]
  //SEG102 init_plot_tables::@10
  //SEG103 [45] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2]
  //SEG104 [45] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy 
}
//SEG105 init_screen
init_screen: {
    .label b = 4
    .label c = 6
  //SEG106 [64] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1]
  //SEG107 [64] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 
    lda #<BITMAP
    sta b
    lda #>BITMAP
    sta b+1
  //SEG108 [64] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1]
  //SEG109 [64] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy 
  //SEG110 init_screen::@1
  b1:
  //SEG111 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1 
    lda #0
    tay
    sta (b),y
  //SEG112 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1 
    inc b
    bne !+
    inc b+1
  !:
  //SEG113 [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1_neq_pbuc1_then_la1 
    lda b+1
    cmp #>BITMAP+$2000
    bne b1
    lda b
    cmp #<BITMAP+$2000
    bne b1
  //SEG114 [68] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2]
  //SEG115 [68] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta c
    lda #>SCREEN
    sta c+1
  //SEG116 [68] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2]
  //SEG117 [68] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy 
  //SEG118 init_screen::@2
  b2:
  //SEG119 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1 
    lda #$14
    ldy #0
    sta (c),y
  //SEG120 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1 
    inc c
    bne !+
    inc c+1
  !:
  //SEG121 [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1_neq_pbuc1_then_la1 
    lda c+1
    cmp #>SCREEN+$400
    bne b2
    lda c
    cmp #<SCREEN+$400
    bne b2
  //SEG122 init_screen::@return
  //SEG123 [72] return  [ ] ( main:2::init_screen:8 [ ] )
    rts
}
  plots_x: .byte $3c, $50, $6e, $50, $3c, $28, $a, $28
  plots_y: .byte $a, $28, $3c, $50, $6e, $50, $3c, $28
  plot_xlo: .fill $100, 0
  plot_xhi: .fill $100, 0
  plot_ylo: .fill $100, 0
  plot_yhi: .fill $100, 0
  plot_bit: .fill $100, 0

