From 253babb8ea015480b1e11baea958f419dff6c6bb Mon Sep 17 00:00:00 2001
From: jespergravgaard <jesper@balmangravgaard.dk>
Date: Tue, 11 Jun 2019 06:56:51 +0200
Subject: [PATCH] Added textbox-test using builtin multiply - by Scan/Desire.

---
 src/main/fragment/vwuz1=vbuaa_rol_3.asm       |    9 +
 .../dk/camelot64/kickc/test/TestPrograms.java |    5 +
 src/test/kc/textbox.kc                        |  100 +
 src/test/ref/textbox.asm                      |  527 ++
 src/test/ref/textbox.cfg                      |  220 +
 src/test/ref/textbox.log                      | 5255 +++++++++++++++++
 src/test/ref/textbox.sym                      |  212 +
 7 files changed, 6328 insertions(+)
 create mode 100644 src/main/fragment/vwuz1=vbuaa_rol_3.asm
 create mode 100644 src/test/kc/textbox.kc
 create mode 100644 src/test/ref/textbox.asm
 create mode 100644 src/test/ref/textbox.cfg
 create mode 100644 src/test/ref/textbox.log
 create mode 100644 src/test/ref/textbox.sym

diff --git a/src/main/fragment/vwuz1=vbuaa_rol_3.asm b/src/main/fragment/vwuz1=vbuaa_rol_3.asm
new file mode 100644
index 000000000..556d39a01
--- /dev/null
+++ b/src/main/fragment/vwuz1=vbuaa_rol_3.asm
@@ -0,0 +1,9 @@
+sta {z1}
+lda #0
+sta {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
+asl {z1}
+rol {z1}+1
diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java
index 093c7727a..4fbaf26f9 100644
--- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java
+++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java
@@ -35,6 +35,11 @@ public class TestPrograms {
    public TestPrograms() {
    }
 
+   @Test
+   public void testTextbox() throws IOException, URISyntaxException {
+      compileAndCompare("textbox");
+   }
+
    @Test
    public void testStructPtr11() throws IOException, URISyntaxException {
       compileAndCompare("struct-ptr-11");
diff --git a/src/test/kc/textbox.kc b/src/test/kc/textbox.kc
new file mode 100644
index 000000000..9c245a6ea
--- /dev/null
+++ b/src/test/kc/textbox.kc
@@ -0,0 +1,100 @@
+/* Textbox routine with word wrap for KickC by Scan/Desire */
+import "c64.kc"
+
+const byte* screen = $0400;
+const byte[] text = "this is a small test with word wrap, if a word is too long it moves it to the next line. isn't that supercalifragilisticexpialidocious? i think it's cool!";
+const byte[] text2 = "textbox by scan of desire";
+
+void main() {
+    for (byte x = 0; x < 15; x += 2) {
+        textbox(x,x,x+x+1,x+10,text2);
+        for (word wait = 0; wait < 35000; wait++) {}
+    }
+    textbox(0,12,20,24,text);
+    textbox(3,3,37,9,text);
+    textbox(30,8,39,24,text);
+    do {} while (true);
+}
+
+void textbox(byte x1, byte y1, byte x2, byte y2, byte* text) {
+    draw_window(x1, y1, x2, y2);
+    byte y = y1+1;
+    byte x = x1+1;
+   	word z = y*40;
+    byte i = 0;
+    if (x == x2 || y == y2) {
+        // no room to draw text, simply return
+        return;
+    }
+    do {
+        screen[z+x] = text[i];
+        if (text[i] == $20) {
+            // scan ahead to determine next word length
+            byte c = 0;
+            byte ls = i+1;
+            while (text[ls] != $20 && text[ls] != $00) {
+                ls++;
+                c++;
+            }
+            // if it's too big to fit but not bigger than the whole box width, move to next line
+            if (c+x >= x2 && c < x2-x1) {
+              x = x1;
+              y++;
+              if (y == y2) {
+                  // text too long for textbox
+                  return;
+              }
+              z = y*40;
+            }
+        }
+        i++;
+        x++;
+        // this is in case the word is too long for one line and needs to be cut
+        if (x == x2) {
+            x = x1+1;
+            y++;
+            if (y == y2) {
+                // text too long for textbox
+                return;
+            }
+            z = y*40;
+        }
+    } while (text[i] != 0);
+}
+
+void draw_window(byte x1, byte y1, byte x2, byte y2) {
+   	word z = y1*40;
+    word q = y2*40;
+
+    // draw horizontal lines
+    for (byte x = x1+1; x < x2; x++) {
+        screen[z+x] = $43;
+        screen[q+x] = $43;
+    }
+
+    // draw upper corners
+    screen[z+x1] = $55;
+    screen[z+x2] = $49;
+
+    // draw vertical lines
+    for (byte y = y1+1; y < y2; y++) {
+       	z = y*40;
+        screen[z+x1] = $42;
+        screen[z+x2] = $42;
+    }
+
+    // draw lower corners
+    screen[q+x1] = $4a;
+    screen[q+x2] = $4b;
+
+    // window big enough to have an inside?
+    if (x2-x1 > 1 && y2-y1 > 1) {
+        // blank inside
+        for(byte y = y1+1; y < y2; y++) {
+            z = y*40;
+            for(byte x = x1+1; x < x2; x++) {
+                screen[z+x] = $20;
+           }
+        }
+    }
+}
diff --git a/src/test/ref/textbox.asm b/src/test/ref/textbox.asm
new file mode 100644
index 000000000..18bbe6748
--- /dev/null
+++ b/src/test/ref/textbox.asm
@@ -0,0 +1,527 @@
+/* Textbox routine with word wrap for KickC by Scan/Desire */
+.pc = $801 "Basic"
+:BasicUpstart(main)
+.pc = $80d "Program"
+  .label screen = $400
+main: {
+    .label wait = 3
+    .label x = 2
+    lda #0
+    sta x
+  b1:
+    lda x
+    asl
+    clc
+    adc #1
+    sta textbox.x2
+    lax x
+    axs #-[$a]
+    stx textbox.y2
+    lda x
+    sta textbox.y1
+    lda #<text2
+    sta textbox.text
+    lda #>text2
+    sta textbox.text+1
+    jsr textbox
+    lda #0
+    sta wait
+    sta wait+1
+  b2:
+    inc wait
+    bne !+
+    inc wait+1
+  !:
+    lda wait+1
+    cmp #>$88b8
+    bcc b2
+    bne !+
+    lda wait
+    cmp #<$88b8
+    bcc b2
+  !:
+    lda x
+    clc
+    adc #2
+    sta x
+    cmp #$f
+    bcc b1
+    lda #<text
+    sta textbox.text
+    lda #>text
+    sta textbox.text+1
+    lda #$18
+    sta textbox.y2
+    lda #$14
+    sta textbox.x2
+    lda #$c
+    sta textbox.y1
+    lda #0
+    sta textbox.x1
+    jsr textbox
+    lda #<text
+    sta textbox.text
+    lda #>text
+    sta textbox.text+1
+    lda #9
+    sta textbox.y2
+    lda #$25
+    sta textbox.x2
+    lda #3
+    sta textbox.y1
+    sta textbox.x1
+    jsr textbox
+    lda #<text
+    sta textbox.text
+    lda #>text
+    sta textbox.text+1
+    lda #$18
+    sta textbox.y2
+    lda #$27
+    sta textbox.x2
+    lda #8
+    sta textbox.y1
+    lda #$1e
+    sta textbox.x1
+    jsr textbox
+  b5:
+    jmp b5
+}
+// textbox(byte zeropage(2) x1, byte zeropage(5) y1, byte zeropage(6) x2, byte zeropage(7) y2, byte* zeropage(8) text)
+textbox: {
+    .label _8 = $f
+    .label _17 = $11
+    .label x1 = 2
+    .label y1 = 5
+    .label x2 = 6
+    .label y2 = 7
+    .label y = 5
+    .label x = $b
+    .label z = $c
+    .label i = $a
+    .label text = 8
+    .label _31 = $f
+    jsr draw_window
+    inc y
+    ldy x1
+    iny
+    sty x
+    lda y
+    asl
+    asl
+    clc
+    adc y
+    sta z
+    lda #0
+    sta z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+    tya
+    cmp x2
+    beq breturn
+    lda y
+    cmp y2
+    beq breturn
+    lda #0
+    sta i
+  b1:
+    lda x
+    clc
+    adc z
+    sta _8
+    lda #0
+    adc z+1
+    sta _8+1
+    clc
+    lda _31
+    adc #<screen
+    sta _31
+    lda _31+1
+    adc #>screen
+    sta _31+1
+    ldy i
+    lda (text),y
+    ldy #0
+    sta (_31),y
+    ldy i
+    lda (text),y
+    cmp #$20
+    bne b2
+    iny
+    ldx #0
+  b3:
+    lda (text),y
+    cmp #$20
+    beq b5
+    lda (text),y
+    cmp #0
+    bne b4
+  b5:
+    txa
+    clc
+    adc x
+    tay
+    lda x2
+    sec
+    sbc x1
+    sta _17
+    cpy x2
+    bcc b2
+    cpx _17
+    bcc b6
+  b2:
+    inc i
+    inc x
+    lda x
+    cmp x2
+    bne b8
+    ldy x1
+    iny
+    sty x
+    inc y
+    lda y
+    cmp y2
+    bne b9
+  breturn:
+    rts
+  b9:
+    lda y
+    asl
+    asl
+    clc
+    adc y
+    sta z
+    lda #0
+    sta z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+  b8:
+    ldy i
+    lda (text),y
+    cmp #0
+    beq !b1+
+    jmp b1
+  !b1:
+    rts
+  b6:
+    inc y
+    lda y
+    cmp y2
+    bne b7
+    rts
+  b7:
+    lda y
+    asl
+    asl
+    clc
+    adc y
+    sta z
+    lda #0
+    sta z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+    lda x1
+    sta x
+    jmp b2
+  b4:
+    iny
+    inx
+    jmp b3
+}
+// draw_window(byte zeropage(2) x1, byte zeropage(5) y1, byte zeropage(6) x2, byte zeropage(7) y2)
+draw_window: {
+    .label _2 = $1a
+    .label _3 = $12
+    .label _4 = $20
+    .label _5 = $14
+    .label _13 = $16
+    .label _14 = $18
+    .label _18 = $1e
+    .label _19 = $1c
+    .label _24 = $24
+    .label x1 = 2
+    .label y1 = 5
+    .label x2 = 6
+    .label y2 = 7
+    .label z = $12
+    .label q = $14
+    .label z_1 = $1c
+    .label y3 = $e
+    .label z_2 = $22
+    .label _27 = $16
+    .label _28 = $18
+    .label _29 = $1a
+    .label _30 = $12
+    .label _31 = $1e
+    .label _32 = $1c
+    .label _33 = $20
+    .label _34 = $14
+    .label _35 = $24
+    lda y1
+    asl
+    asl
+    clc
+    adc y1
+    sta z
+    lda #0
+    sta z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+    lda y2
+    asl
+    asl
+    clc
+    adc y2
+    sta q
+    lda #0
+    sta q+1
+    asl q
+    rol q+1
+    asl q
+    rol q+1
+    asl q
+    rol q+1
+    ldx x1
+    inx
+  b1:
+  // draw horizontal lines
+    txa
+    clc
+    adc z
+    sta _13
+    lda #0
+    adc z+1
+    sta _13+1
+    clc
+    lda _27
+    adc #<screen
+    sta _27
+    lda _27+1
+    adc #>screen
+    sta _27+1
+    lda #$43
+    ldy #0
+    sta (_27),y
+    txa
+    clc
+    adc q
+    sta _14
+    tya
+    adc q+1
+    sta _14+1
+    clc
+    lda _28
+    adc #<screen
+    sta _28
+    lda _28+1
+    adc #>screen
+    sta _28+1
+    lda #$43
+    sta (_28),y
+    inx
+    cpx x2
+    bcc b1
+    lda x1
+    clc
+    adc z
+    sta _2
+    tya
+    adc z+1
+    sta _2+1
+    clc
+    lda _29
+    adc #<screen
+    sta _29
+    lda _29+1
+    adc #>screen
+    sta _29+1
+    // draw upper corners
+    lda #$55
+    sta (_29),y
+    lda x2
+    clc
+    adc _3
+    sta _3
+    bcc !+
+    inc _3+1
+  !:
+    clc
+    lda _30
+    adc #<screen
+    sta _30
+    lda _30+1
+    adc #>screen
+    sta _30+1
+    lda #$49
+    ldy #0
+    sta (_30),y
+    ldx y1
+    inx
+  b2:
+  // draw vertical lines
+    txa
+    asl
+    asl
+    stx $ff
+    clc
+    adc $ff
+    sta z_1
+    lda #0
+    sta z_1+1
+    asl z_1
+    rol z_1+1
+    asl z_1
+    rol z_1+1
+    asl z_1
+    rol z_1+1
+    lda x1
+    clc
+    adc z_1
+    sta _18
+    lda #0
+    adc z_1+1
+    sta _18+1
+    clc
+    lda _31
+    adc #<screen
+    sta _31
+    lda _31+1
+    adc #>screen
+    sta _31+1
+    lda #$42
+    ldy #0
+    sta (_31),y
+    lda x2
+    clc
+    adc _19
+    sta _19
+    bcc !+
+    inc _19+1
+  !:
+    clc
+    lda _32
+    adc #<screen
+    sta _32
+    lda _32+1
+    adc #>screen
+    sta _32+1
+    lda #$42
+    ldy #0
+    sta (_32),y
+    inx
+    cpx y2
+    bcc b2
+    lda x1
+    clc
+    adc q
+    sta _4
+    tya
+    adc q+1
+    sta _4+1
+    clc
+    lda _33
+    adc #<screen
+    sta _33
+    lda _33+1
+    adc #>screen
+    sta _33+1
+    // draw lower corners
+    lda #$4a
+    sta (_33),y
+    lda x2
+    clc
+    adc _5
+    sta _5
+    bcc !+
+    inc _5+1
+  !:
+    clc
+    lda _34
+    adc #<screen
+    sta _34
+    lda _34+1
+    adc #>screen
+    sta _34+1
+    lda #$4b
+    ldy #0
+    sta (_34),y
+    lda x2
+    sec
+    sbc x1
+    tax
+    lda y2
+    sec
+    sbc y1
+    cpx #1+1
+    bcc breturn
+    cmp #1+1
+    bcs b5
+  breturn:
+    rts
+  b5:
+    ldy y1
+    iny
+    sty y3
+  b3:
+  // blank inside
+    lda y3
+    asl
+    asl
+    clc
+    adc y3
+    sta z_2
+    lda #0
+    sta z_2+1
+    asl z_2
+    rol z_2+1
+    asl z_2
+    rol z_2+1
+    asl z_2
+    rol z_2+1
+    ldx x1
+    inx
+  b7:
+    txa
+    clc
+    adc z_2
+    sta _24
+    lda #0
+    adc z_2+1
+    sta _24+1
+    clc
+    lda _35
+    adc #<screen
+    sta _35
+    lda _35+1
+    adc #>screen
+    sta _35+1
+    lda #$20
+    ldy #0
+    sta (_35),y
+    inx
+    cpx x2
+    bcc b7
+    inc y3
+    lda y3
+    cmp y2
+    bcc b3
+    rts
+}
+  text: .text "this is a small test with word wrap, if a word is too long it moves it to the next line. isn't that supercalifragilisticexpialidocious? i think it's cool!@"
+  text2: .text "textbox by scan of desire@"
diff --git a/src/test/ref/textbox.cfg b/src/test/ref/textbox.cfg
new file mode 100644
index 000000000..fcd761218
--- /dev/null
+++ b/src/test/ref/textbox.cfg
@@ -0,0 +1,220 @@
+@begin: scope:[]  from
+  [0] phi()
+  to:@1
+@1: scope:[]  from @begin
+  [1] phi()
+  [2] call main 
+  to:@end
+@end: scope:[]  from @1
+  [3] phi()
+main: scope:[main]  from @1
+  [4] phi()
+  to:main::@1
+main::@1: scope:[main]  from main main::@3
+  [5] (byte) main::x#2 ← phi( main/(byte) 0 main::@3/(byte) main::x#1 )
+  [6] (byte~) main::$3 ← (byte) main::x#2 + (byte) main::x#2
+  [7] (byte) textbox::x2#0 ← (byte~) main::$3 + (byte) 1
+  [8] (byte) textbox::y2#0 ← (byte) main::x#2 + (byte) $a
+  [9] (byte) textbox::x1#0 ← (byte) main::x#2
+  [10] (byte) textbox::y1#0 ← (byte) main::x#2
+  [11] call textbox 
+  to:main::@2
+main::@2: scope:[main]  from main::@1 main::@2
+  [12] (word) main::wait#2 ← phi( main::@2/(word) main::wait#1 main::@1/(byte) 0 )
+  [13] (word) main::wait#1 ← ++ (word) main::wait#2
+  [14] if((word) main::wait#1<(word) $88b8) goto main::@2
+  to:main::@3
+main::@3: scope:[main]  from main::@2
+  [15] (byte) main::x#1 ← (byte) main::x#2 + (byte) 2
+  [16] if((byte) main::x#1<(byte) $f) goto main::@1
+  to:main::@4
+main::@4: scope:[main]  from main::@3
+  [17] phi()
+  [18] call textbox 
+  to:main::@6
+main::@6: scope:[main]  from main::@4
+  [19] phi()
+  [20] call textbox 
+  to:main::@7
+main::@7: scope:[main]  from main::@6
+  [21] phi()
+  [22] call textbox 
+  to:main::@5
+main::@5: scope:[main]  from main::@5 main::@7
+  [23] phi()
+  to:main::@5
+textbox: scope:[textbox]  from main::@1 main::@4 main::@6 main::@7
+  [24] (byte*) textbox::text#12 ← phi( main::@1/(const byte[]) text2#0 main::@4/(const byte[]) text#0 main::@6/(const byte[]) text#0 main::@7/(const byte[]) text#0 )
+  [24] (byte) textbox::y2#4 ← phi( main::@1/(byte) textbox::y2#0 main::@4/(byte) $18 main::@6/(byte) 9 main::@7/(byte) $18 )
+  [24] (byte) textbox::x2#4 ← phi( main::@1/(byte) textbox::x2#0 main::@4/(byte) $14 main::@6/(byte) $25 main::@7/(byte) $27 )
+  [24] (byte) textbox::y1#4 ← phi( main::@1/(byte) textbox::y1#0 main::@4/(byte) $c main::@6/(byte) 3 main::@7/(byte) 8 )
+  [24] (byte) textbox::x1#4 ← phi( main::@1/(byte) textbox::x1#0 main::@4/(byte) 0 main::@6/(byte) 3 main::@7/(byte) $1e )
+  [25] (byte) draw_window::x1#0 ← (byte) textbox::x1#4
+  [26] (byte) draw_window::y1#0 ← (byte) textbox::y1#4
+  [27] (byte) draw_window::x2#0 ← (byte) textbox::x2#4
+  [28] (byte) draw_window::y2#0 ← (byte) textbox::y2#4
+  [29] call draw_window 
+  to:textbox::@12
+textbox::@12: scope:[textbox]  from textbox
+  [30] (byte) textbox::y#0 ← (byte) textbox::y1#4 + (byte) 1
+  [31] (byte) textbox::x#0 ← (byte) textbox::x1#4 + (byte) 1
+  [32] (byte) textbox::$32 ← (byte) textbox::y#0 << (byte) 2
+  [33] (byte) textbox::$33 ← (byte) textbox::$32 + (byte) textbox::y#0
+  [34] (word) textbox::z#0 ← (byte) textbox::$33 << (byte) 3
+  [35] if((byte) textbox::x#0==(byte) textbox::x2#4) goto textbox::@return
+  to:textbox::@13
+textbox::@13: scope:[textbox]  from textbox::@12
+  [36] if((byte) textbox::y#0==(byte) textbox::y2#4) goto textbox::@return
+  to:textbox::@1
+textbox::@1: scope:[textbox]  from textbox::@13 textbox::@8
+  [37] (byte) textbox::y#12 ← phi( textbox::@8/(byte) textbox::y#11 textbox::@13/(byte) textbox::y#0 )
+  [37] (byte) textbox::i#2 ← phi( textbox::@8/(byte) textbox::i#1 textbox::@13/(byte) 0 )
+  [37] (byte) textbox::x#10 ← phi( textbox::@8/(byte) textbox::x#7 textbox::@13/(byte) textbox::x#0 )
+  [37] (word) textbox::z#3 ← phi( textbox::@8/(word) textbox::z#4 textbox::@13/(word) textbox::z#0 )
+  [38] (word~) textbox::$8 ← (word) textbox::z#3 + (byte) textbox::x#10
+  [39] (byte*~) textbox::$31 ← (const byte*) screen#0 + (word~) textbox::$8
+  [40] *((byte*~) textbox::$31) ← *((byte*) textbox::text#12 + (byte) textbox::i#2)
+  [41] if(*((byte*) textbox::text#12 + (byte) textbox::i#2)!=(byte) $20) goto textbox::@2
+  to:textbox::@10
+textbox::@10: scope:[textbox]  from textbox::@1
+  [42] (byte) textbox::ls#0 ← (byte) textbox::i#2 + (byte) 1
+  to:textbox::@3
+textbox::@3: scope:[textbox]  from textbox::@10 textbox::@4
+  [43] (byte) textbox::c#2 ← phi( textbox::@10/(byte) 0 textbox::@4/(byte) textbox::c#1 )
+  [43] (byte) textbox::ls#2 ← phi( textbox::@10/(byte) textbox::ls#0 textbox::@4/(byte) textbox::ls#1 )
+  [44] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)==(byte) $20) goto textbox::@5
+  to:textbox::@14
+textbox::@14: scope:[textbox]  from textbox::@3
+  [45] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)!=(byte) 0) goto textbox::@4
+  to:textbox::@5
+textbox::@5: scope:[textbox]  from textbox::@14 textbox::@3
+  [46] (byte~) textbox::$15 ← (byte) textbox::c#2 + (byte) textbox::x#10
+  [47] (byte~) textbox::$17 ← (byte) textbox::x2#4 - (byte) textbox::x1#4
+  [48] if((byte~) textbox::$15<(byte) textbox::x2#4) goto textbox::@2
+  to:textbox::@15
+textbox::@15: scope:[textbox]  from textbox::@5
+  [49] if((byte) textbox::c#2<(byte~) textbox::$17) goto textbox::@6
+  to:textbox::@2
+textbox::@2: scope:[textbox]  from textbox::@1 textbox::@15 textbox::@5 textbox::@7
+  [50] (word) textbox::z#5 ← phi( textbox::@7/(word) textbox::z#1 textbox::@1/(word) textbox::z#3 textbox::@5/(word) textbox::z#3 )
+  [50] (byte) textbox::y#5 ← phi( textbox::@7/(byte) textbox::y#1 textbox::@1/(byte) textbox::y#12 textbox::@5/(byte) textbox::y#12 )
+  [50] (byte) textbox::x#5 ← phi( textbox::@7/(byte~) textbox::x#15 textbox::@1/(byte) textbox::x#10 textbox::@5/(byte) textbox::x#10 )
+  [51] (byte) textbox::i#1 ← ++ (byte) textbox::i#2
+  [52] (byte) textbox::x#1 ← ++ (byte) textbox::x#5
+  [53] if((byte) textbox::x#1!=(byte) textbox::x2#4) goto textbox::@8
+  to:textbox::@11
+textbox::@11: scope:[textbox]  from textbox::@2
+  [54] (byte) textbox::x#12 ← (byte) textbox::x1#4 + (byte) 1
+  [55] (byte) textbox::y#2 ← ++ (byte) textbox::y#5
+  [56] if((byte) textbox::y#2!=(byte) textbox::y2#4) goto textbox::@9
+  to:textbox::@return
+textbox::@return: scope:[textbox]  from textbox::@11 textbox::@12 textbox::@13 textbox::@6 textbox::@8
+  [57] return 
+  to:@return
+textbox::@9: scope:[textbox]  from textbox::@11
+  [58] (byte) textbox::$38 ← (byte) textbox::y#2 << (byte) 2
+  [59] (byte) textbox::$39 ← (byte) textbox::$38 + (byte) textbox::y#2
+  [60] (word) textbox::z#2 ← (byte) textbox::$39 << (byte) 3
+  to:textbox::@8
+textbox::@8: scope:[textbox]  from textbox::@2 textbox::@9
+  [61] (byte) textbox::y#11 ← phi( textbox::@9/(byte) textbox::y#2 textbox::@2/(byte) textbox::y#5 )
+  [61] (byte) textbox::x#7 ← phi( textbox::@9/(byte) textbox::x#12 textbox::@2/(byte) textbox::x#1 )
+  [61] (word) textbox::z#4 ← phi( textbox::@9/(word) textbox::z#2 textbox::@2/(word) textbox::z#5 )
+  [62] if(*((byte*) textbox::text#12 + (byte) textbox::i#1)!=(byte) 0) goto textbox::@1
+  to:textbox::@return
+textbox::@6: scope:[textbox]  from textbox::@15
+  [63] (byte) textbox::y#1 ← ++ (byte) textbox::y#12
+  [64] if((byte) textbox::y#1!=(byte) textbox::y2#4) goto textbox::@7
+  to:textbox::@return
+textbox::@7: scope:[textbox]  from textbox::@6
+  [65] (byte) textbox::$35 ← (byte) textbox::y#1 << (byte) 2
+  [66] (byte) textbox::$36 ← (byte) textbox::$35 + (byte) textbox::y#1
+  [67] (word) textbox::z#1 ← (byte) textbox::$36 << (byte) 3
+  [68] (byte~) textbox::x#15 ← (byte) textbox::x1#4
+  to:textbox::@2
+textbox::@4: scope:[textbox]  from textbox::@14
+  [69] (byte) textbox::ls#1 ← ++ (byte) textbox::ls#2
+  [70] (byte) textbox::c#1 ← ++ (byte) textbox::c#2
+  to:textbox::@3
+draw_window: scope:[draw_window]  from textbox
+  [71] (byte) draw_window::$36 ← (byte) draw_window::y1#0 << (byte) 2
+  [72] (byte) draw_window::$37 ← (byte) draw_window::$36 + (byte) draw_window::y1#0
+  [73] (word) draw_window::z#0 ← (byte) draw_window::$37 << (byte) 3
+  [74] (byte) draw_window::$39 ← (byte) draw_window::y2#0 << (byte) 2
+  [75] (byte) draw_window::$40 ← (byte) draw_window::$39 + (byte) draw_window::y2#0
+  [76] (word) draw_window::q#0 ← (byte) draw_window::$40 << (byte) 3
+  [77] (byte) draw_window::x#0 ← (byte) draw_window::x1#0 + (byte) 1
+  to:draw_window::@1
+draw_window::@1: scope:[draw_window]  from draw_window draw_window::@1
+  [78] (byte) draw_window::x#2 ← phi( draw_window/(byte) draw_window::x#0 draw_window::@1/(byte) draw_window::x#1 )
+  [79] (word~) draw_window::$13 ← (word) draw_window::z#0 + (byte) draw_window::x#2
+  [80] (byte*~) draw_window::$27 ← (const byte*) screen#0 + (word~) draw_window::$13
+  [81] *((byte*~) draw_window::$27) ← (byte) $43
+  [82] (word~) draw_window::$14 ← (word) draw_window::q#0 + (byte) draw_window::x#2
+  [83] (byte*~) draw_window::$28 ← (const byte*) screen#0 + (word~) draw_window::$14
+  [84] *((byte*~) draw_window::$28) ← (byte) $43
+  [85] (byte) draw_window::x#1 ← ++ (byte) draw_window::x#2
+  [86] if((byte) draw_window::x#1<(byte) draw_window::x2#0) goto draw_window::@1
+  to:draw_window::@2
+draw_window::@2: scope:[draw_window]  from draw_window::@1
+  [87] (word~) draw_window::$2 ← (word) draw_window::z#0 + (byte) draw_window::x1#0
+  [88] (byte*~) draw_window::$29 ← (const byte*) screen#0 + (word~) draw_window::$2
+  [89] *((byte*~) draw_window::$29) ← (byte) $55
+  [90] (word~) draw_window::$3 ← (word) draw_window::z#0 + (byte) draw_window::x2#0
+  [91] (byte*~) draw_window::$30 ← (const byte*) screen#0 + (word~) draw_window::$3
+  [92] *((byte*~) draw_window::$30) ← (byte) $49
+  [93] (byte) draw_window::y#0 ← (byte) draw_window::y1#0 + (byte) 1
+  to:draw_window::@3
+draw_window::@3: scope:[draw_window]  from draw_window::@2 draw_window::@3
+  [94] (byte) draw_window::y#2 ← phi( draw_window::@2/(byte) draw_window::y#0 draw_window::@3/(byte) draw_window::y#1 )
+  [95] (byte) draw_window::$42 ← (byte) draw_window::y#2 << (byte) 2
+  [96] (byte) draw_window::$43 ← (byte) draw_window::$42 + (byte) draw_window::y#2
+  [97] (word) draw_window::z#1 ← (byte) draw_window::$43 << (byte) 3
+  [98] (word~) draw_window::$18 ← (word) draw_window::z#1 + (byte) draw_window::x1#0
+  [99] (byte*~) draw_window::$31 ← (const byte*) screen#0 + (word~) draw_window::$18
+  [100] *((byte*~) draw_window::$31) ← (byte) $42
+  [101] (word~) draw_window::$19 ← (word) draw_window::z#1 + (byte) draw_window::x2#0
+  [102] (byte*~) draw_window::$32 ← (const byte*) screen#0 + (word~) draw_window::$19
+  [103] *((byte*~) draw_window::$32) ← (byte) $42
+  [104] (byte) draw_window::y#1 ← ++ (byte) draw_window::y#2
+  [105] if((byte) draw_window::y#1<(byte) draw_window::y2#0) goto draw_window::@3
+  to:draw_window::@4
+draw_window::@4: scope:[draw_window]  from draw_window::@3
+  [106] (word~) draw_window::$4 ← (word) draw_window::q#0 + (byte) draw_window::x1#0
+  [107] (byte*~) draw_window::$33 ← (const byte*) screen#0 + (word~) draw_window::$4
+  [108] *((byte*~) draw_window::$33) ← (byte) $4a
+  [109] (word~) draw_window::$5 ← (word) draw_window::q#0 + (byte) draw_window::x2#0
+  [110] (byte*~) draw_window::$34 ← (const byte*) screen#0 + (word~) draw_window::$5
+  [111] *((byte*~) draw_window::$34) ← (byte) $4b
+  [112] (byte~) draw_window::$6 ← (byte) draw_window::x2#0 - (byte) draw_window::x1#0
+  [113] (byte~) draw_window::$8 ← (byte) draw_window::y2#0 - (byte) draw_window::y1#0
+  [114] if((byte~) draw_window::$6<(byte) 1+(byte) 1) goto draw_window::@return
+  to:draw_window::@9
+draw_window::@9: scope:[draw_window]  from draw_window::@4
+  [115] if((byte~) draw_window::$8>=(byte) 1+(byte) 1) goto draw_window::@5
+  to:draw_window::@return
+draw_window::@return: scope:[draw_window]  from draw_window::@4 draw_window::@8 draw_window::@9
+  [116] return 
+  to:@return
+draw_window::@5: scope:[draw_window]  from draw_window::@9
+  [117] (byte) draw_window::y3#0 ← (byte) draw_window::y1#0 + (byte) 1
+  to:draw_window::@6
+draw_window::@6: scope:[draw_window]  from draw_window::@5 draw_window::@8
+  [118] (byte) draw_window::y3#2 ← phi( draw_window::@5/(byte) draw_window::y3#0 draw_window::@8/(byte) draw_window::y3#1 )
+  [119] (byte) draw_window::$45 ← (byte) draw_window::y3#2 << (byte) 2
+  [120] (byte) draw_window::$46 ← (byte) draw_window::$45 + (byte) draw_window::y3#2
+  [121] (word) draw_window::z#2 ← (byte) draw_window::$46 << (byte) 3
+  [122] (byte) draw_window::x3#0 ← (byte) draw_window::x1#0 + (byte) 1
+  to:draw_window::@7
+draw_window::@7: scope:[draw_window]  from draw_window::@6 draw_window::@7
+  [123] (byte) draw_window::x3#2 ← phi( draw_window::@6/(byte) draw_window::x3#0 draw_window::@7/(byte) draw_window::x3#1 )
+  [124] (word~) draw_window::$24 ← (word) draw_window::z#2 + (byte) draw_window::x3#2
+  [125] (byte*~) draw_window::$35 ← (const byte*) screen#0 + (word~) draw_window::$24
+  [126] *((byte*~) draw_window::$35) ← (byte) $20
+  [127] (byte) draw_window::x3#1 ← ++ (byte) draw_window::x3#2
+  [128] if((byte) draw_window::x3#1<(byte) draw_window::x2#0) goto draw_window::@7
+  to:draw_window::@8
+draw_window::@8: scope:[draw_window]  from draw_window::@7
+  [129] (byte) draw_window::y3#1 ← ++ (byte) draw_window::y3#2
+  [130] if((byte) draw_window::y3#1<(byte) draw_window::y2#0) goto draw_window::@6
+  to:draw_window::@return
diff --git a/src/test/ref/textbox.log b/src/test/ref/textbox.log
new file mode 100644
index 000000000..3f9185389
--- /dev/null
+++ b/src/test/ref/textbox.log
@@ -0,0 +1,5255 @@
+Adding pointer type conversion cast (byte*) PROCPORT_DDR in (byte*) PROCPORT_DDR ← (number) 0
+Adding pointer type conversion cast (byte*) PROCPORT in (byte*) PROCPORT ← (number) 1
+Adding pointer type conversion cast (byte*) CHARGEN in (byte*) CHARGEN ← (number) $d000
+Adding pointer type conversion cast (byte*) SPRITES_XPOS in (byte*) SPRITES_XPOS ← (number) $d000
+Adding pointer type conversion cast (byte*) SPRITES_YPOS in (byte*) SPRITES_YPOS ← (number) $d001
+Adding pointer type conversion cast (byte*) SPRITES_XMSB in (byte*) SPRITES_XMSB ← (number) $d010
+Adding pointer type conversion cast (byte*) RASTER in (byte*) RASTER ← (number) $d012
+Adding pointer type conversion cast (byte*) SPRITES_ENABLE in (byte*) SPRITES_ENABLE ← (number) $d015
+Adding pointer type conversion cast (byte*) SPRITES_EXPAND_Y in (byte*) SPRITES_EXPAND_Y ← (number) $d017
+Adding pointer type conversion cast (byte*) SPRITES_PRIORITY in (byte*) SPRITES_PRIORITY ← (number) $d01b
+Adding pointer type conversion cast (byte*) SPRITES_MC in (byte*) SPRITES_MC ← (number) $d01c
+Adding pointer type conversion cast (byte*) SPRITES_EXPAND_X in (byte*) SPRITES_EXPAND_X ← (number) $d01d
+Adding pointer type conversion cast (byte*) BORDERCOL in (byte*) BORDERCOL ← (number) $d020
+Adding pointer type conversion cast (byte*) BGCOL in (byte*) BGCOL ← (number) $d021
+Adding pointer type conversion cast (byte*) BGCOL1 in (byte*) BGCOL1 ← (number) $d021
+Adding pointer type conversion cast (byte*) BGCOL2 in (byte*) BGCOL2 ← (number) $d022
+Adding pointer type conversion cast (byte*) BGCOL3 in (byte*) BGCOL3 ← (number) $d023
+Adding pointer type conversion cast (byte*) BGCOL4 in (byte*) BGCOL4 ← (number) $d024
+Adding pointer type conversion cast (byte*) SPRITES_MC1 in (byte*) SPRITES_MC1 ← (number) $d025
+Adding pointer type conversion cast (byte*) SPRITES_MC2 in (byte*) SPRITES_MC2 ← (number) $d026
+Adding pointer type conversion cast (byte*) SPRITES_COLS in (byte*) SPRITES_COLS ← (number) $d027
+Adding pointer type conversion cast (byte*) VIC_CONTROL in (byte*) VIC_CONTROL ← (number) $d011
+Adding pointer type conversion cast (byte*) D011 in (byte*) D011 ← (number) $d011
+Adding pointer type conversion cast (byte*) VIC_CONTROL2 in (byte*) VIC_CONTROL2 ← (number) $d016
+Adding pointer type conversion cast (byte*) D016 in (byte*) D016 ← (number) $d016
+Adding pointer type conversion cast (byte*) D018 in (byte*) D018 ← (number) $d018
+Adding pointer type conversion cast (byte*) VIC_MEMORY in (byte*) VIC_MEMORY ← (number) $d018
+Adding pointer type conversion cast (byte*) LIGHTPEN_X in (byte*) LIGHTPEN_X ← (number) $d013
+Adding pointer type conversion cast (byte*) LIGHTPEN_Y in (byte*) LIGHTPEN_Y ← (number) $d014
+Adding pointer type conversion cast (byte*) IRQ_STATUS in (byte*) IRQ_STATUS ← (number) $d019
+Adding pointer type conversion cast (byte*) IRQ_ENABLE in (byte*) IRQ_ENABLE ← (number) $d01a
+Adding pointer type conversion cast (byte*) COLS in (byte*) COLS ← (number) $d800
+Adding pointer type conversion cast (byte*) CIA1_PORT_A in (byte*) CIA1_PORT_A ← (number) $dc00
+Adding pointer type conversion cast (byte*) CIA1_PORT_B in (byte*) CIA1_PORT_B ← (number) $dc01
+Adding pointer type conversion cast (byte*) CIA1_PORT_A_DDR in (byte*) CIA1_PORT_A_DDR ← (number) $dc02
+Adding pointer type conversion cast (byte*) CIA1_PORT_B_DDR in (byte*) CIA1_PORT_B_DDR ← (number) $dc03
+Adding pointer type conversion cast (byte*) CIA1_INTERRUPT in (byte*) CIA1_INTERRUPT ← (number) $dc0d
+Adding pointer type conversion cast (byte*) CIA2_PORT_A in (byte*) CIA2_PORT_A ← (number) $dd00
+Adding pointer type conversion cast (byte*) CIA2_PORT_B in (byte*) CIA2_PORT_B ← (number) $dd01
+Adding pointer type conversion cast (byte*) CIA2_PORT_A_DDR in (byte*) CIA2_PORT_A_DDR ← (number) $dd02
+Adding pointer type conversion cast (byte*) CIA2_PORT_B_DDR in (byte*) CIA2_PORT_B_DDR ← (number) $dd03
+Adding pointer type conversion cast (byte*) CIA2_INTERRUPT in (byte*) CIA2_INTERRUPT ← (number) $dd0d
+Adding pointer type conversion cast (void()**) KERNEL_IRQ in (void()**) KERNEL_IRQ ← (number) $314
+Adding pointer type conversion cast (void()**) HARDWARE_IRQ in (void()**) HARDWARE_IRQ ← (number) $fffe
+Adding pointer type conversion cast (byte*) screen in (byte*) screen ← (number) $400
+Inlined call [105] (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx 
+Culled Empty Block (label) @1
+Culled Empty Block (label) @2
+Culled Empty Block (label) @3
+Culled Empty Block (label) main::@6
+Culled Empty Block (label) @5
+Culled Empty Block (label) textbox::@1
+Culled Empty Block (label) textbox::@2
+Culled Empty Block (label) textbox::@3
+Culled Empty Block (label) textbox::@9
+Culled Empty Block (label) textbox::@10
+Culled Empty Block (label) textbox::@11
+Culled Empty Block (label) textbox::@15
+Culled Empty Block (label) textbox::@13
+Culled Empty Block (label) textbox::@14
+Culled Empty Block (label) textbox::@21
+Culled Empty Block (label) textbox::@22
+Culled Empty Block (label) textbox::@23
+Culled Empty Block (label) @6
+Culled Empty Block (label) draw_window::@1
+Culled Empty Block (label) draw_window::@10
+
+CONTROL FLOW GRAPH SSA
+@begin: scope:[]  from
+  to:@4
+@4: scope:[]  from @begin
+  (byte*) screen#0 ← ((byte*)) (number) $400
+  (byte[]) text#0 ← (const string) $0
+  (byte[]) text2#0 ← (const string) $1
+  to:@7
+main: scope:[main]  from @7
+  (byte) main::x#0 ← (number) 0
+  to:main::@1
+main::@1: scope:[main]  from main main::@3
+  (byte) main::x#2 ← phi( main/(byte) main::x#0 main::@3/(byte) main::x#1 )
+  (byte~) main::$3 ← (byte) main::x#2 + (byte) main::x#2
+  (number~) main::$4 ← (byte~) main::$3 + (number) 1
+  (number~) main::$5 ← (byte) main::x#2 + (number) $a
+  (byte) textbox::x1#0 ← (byte) main::x#2
+  (byte) textbox::y1#0 ← (byte) main::x#2
+  (byte) textbox::x2#0 ← (number~) main::$4
+  (byte) textbox::y2#0 ← (number~) main::$5
+  (byte*) textbox::text#0 ← (byte[]) text2#0
+  call textbox 
+  to:main::@7
+main::@7: scope:[main]  from main::@1
+  (byte) main::x#5 ← phi( main::@1/(byte) main::x#2 )
+  (word) main::wait#0 ← (number) 0
+  to:main::@2
+main::@2: scope:[main]  from main::@2 main::@7
+  (byte) main::x#4 ← phi( main::@2/(byte) main::x#4 main::@7/(byte) main::x#5 )
+  (word) main::wait#2 ← phi( main::@2/(word) main::wait#1 main::@7/(word) main::wait#0 )
+  (word) main::wait#1 ← ++ (word) main::wait#2
+  (bool~) main::$7 ← (word) main::wait#1 < (number) $88b8
+  if((bool~) main::$7) goto main::@2
+  to:main::@3
+main::@3: scope:[main]  from main::@2
+  (byte) main::x#3 ← phi( main::@2/(byte) main::x#4 )
+  (byte) main::x#1 ← (byte) main::x#3 + (number) 2
+  (bool~) main::$8 ← (byte) main::x#1 < (number) $f
+  if((bool~) main::$8) goto main::@1
+  to:main::@4
+main::@4: scope:[main]  from main::@3
+  (byte) textbox::x1#1 ← (number) 0
+  (byte) textbox::y1#1 ← (number) $c
+  (byte) textbox::x2#1 ← (number) $14
+  (byte) textbox::y2#1 ← (number) $18
+  (byte*) textbox::text#1 ← (byte[]) text#0
+  call textbox 
+  to:main::@8
+main::@8: scope:[main]  from main::@4
+  (byte) textbox::x1#2 ← (number) 3
+  (byte) textbox::y1#2 ← (number) 3
+  (byte) textbox::x2#2 ← (number) $25
+  (byte) textbox::y2#2 ← (number) 9
+  (byte*) textbox::text#2 ← (byte[]) text#0
+  call textbox 
+  to:main::@9
+main::@9: scope:[main]  from main::@8
+  (byte) textbox::x1#3 ← (number) $1e
+  (byte) textbox::y1#3 ← (number) 8
+  (byte) textbox::x2#3 ← (number) $27
+  (byte) textbox::y2#3 ← (number) $18
+  (byte*) textbox::text#3 ← (byte[]) text#0
+  call textbox 
+  to:main::@10
+main::@10: scope:[main]  from main::@9
+  to:main::@5
+main::@5: scope:[main]  from main::@10 main::@5
+  if(true) goto main::@5
+  to:main::@return
+main::@return: scope:[main]  from main::@5
+  return 
+  to:@return
+textbox: scope:[textbox]  from main::@1 main::@4 main::@8 main::@9
+  (byte*) textbox::text#12 ← phi( main::@1/(byte*) textbox::text#0 main::@4/(byte*) textbox::text#1 main::@8/(byte*) textbox::text#2 main::@9/(byte*) textbox::text#3 )
+  (byte) textbox::y2#4 ← phi( main::@1/(byte) textbox::y2#0 main::@4/(byte) textbox::y2#1 main::@8/(byte) textbox::y2#2 main::@9/(byte) textbox::y2#3 )
+  (byte) textbox::x2#4 ← phi( main::@1/(byte) textbox::x2#0 main::@4/(byte) textbox::x2#1 main::@8/(byte) textbox::x2#2 main::@9/(byte) textbox::x2#3 )
+  (byte) textbox::y1#4 ← phi( main::@1/(byte) textbox::y1#0 main::@4/(byte) textbox::y1#1 main::@8/(byte) textbox::y1#2 main::@9/(byte) textbox::y1#3 )
+  (byte) textbox::x1#4 ← phi( main::@1/(byte) textbox::x1#0 main::@4/(byte) textbox::x1#1 main::@8/(byte) textbox::x1#2 main::@9/(byte) textbox::x1#3 )
+  (byte) draw_window::x1#0 ← (byte) textbox::x1#4
+  (byte) draw_window::y1#0 ← (byte) textbox::y1#4
+  (byte) draw_window::x2#0 ← (byte) textbox::x2#4
+  (byte) draw_window::y2#0 ← (byte) textbox::y2#4
+  call draw_window 
+  to:textbox::@24
+textbox::@24: scope:[textbox]  from textbox
+  (byte*) textbox::text#7 ← phi( textbox/(byte*) textbox::text#12 )
+  (byte) textbox::y2#5 ← phi( textbox/(byte) textbox::y2#4 )
+  (byte) textbox::x2#5 ← phi( textbox/(byte) textbox::x2#4 )
+  (byte) textbox::x1#5 ← phi( textbox/(byte) textbox::x1#4 )
+  (byte) textbox::y1#5 ← phi( textbox/(byte) textbox::y1#4 )
+  (number~) textbox::$1 ← (byte) textbox::y1#5 + (number) 1
+  (byte) textbox::y#0 ← (number~) textbox::$1
+  (number~) textbox::$2 ← (byte) textbox::x1#5 + (number) 1
+  (byte) textbox::x#0 ← (number~) textbox::$2
+  (number~) textbox::$3 ← (byte) textbox::y#0 * (number) $28
+  (word) textbox::z#0 ← (number~) textbox::$3
+  (byte) textbox::i#0 ← (number) 0
+  (bool~) textbox::$4 ← (byte) textbox::x#0 == (byte) textbox::x2#5
+  (bool~) textbox::$5 ← (byte) textbox::y#0 == (byte) textbox::y2#5
+  (bool~) textbox::$6 ← (bool~) textbox::$4 || (bool~) textbox::$5
+  (bool~) textbox::$7 ← ! (bool~) textbox::$6
+  if((bool~) textbox::$7) goto textbox::@4
+  to:textbox::@return
+textbox::@return: scope:[textbox]  from textbox::@12 textbox::@17 textbox::@20 textbox::@24
+  return 
+  to:@return
+textbox::@4: scope:[textbox]  from textbox::@17 textbox::@24
+  (byte) textbox::y2#11 ← phi( textbox::@17/(byte) textbox::y2#13 textbox::@24/(byte) textbox::y2#5 )
+  (byte) textbox::y#9 ← phi( textbox::@17/(byte) textbox::y#11 textbox::@24/(byte) textbox::y#0 )
+  (byte) textbox::x1#12 ← phi( textbox::@17/(byte) textbox::x1#15 textbox::@24/(byte) textbox::x1#5 )
+  (byte) textbox::x2#9 ← phi( textbox::@17/(byte) textbox::x2#11 textbox::@24/(byte) textbox::x2#5 )
+  (byte) textbox::i#2 ← phi( textbox::@17/(byte) textbox::i#5 textbox::@24/(byte) textbox::i#0 )
+  (byte*) textbox::text#4 ← phi( textbox::@17/(byte*) textbox::text#6 textbox::@24/(byte*) textbox::text#7 )
+  (byte) textbox::x#4 ← phi( textbox::@17/(byte) textbox::x#7 textbox::@24/(byte) textbox::x#0 )
+  (word) textbox::z#3 ← phi( textbox::@17/(word) textbox::z#4 textbox::@24/(word) textbox::z#0 )
+  (word~) textbox::$8 ← (word) textbox::z#3 + (byte) textbox::x#4
+  *((byte*) screen#0 + (word~) textbox::$8) ← *((byte*) textbox::text#4 + (byte) textbox::i#2)
+  (bool~) textbox::$9 ← *((byte*) textbox::text#4 + (byte) textbox::i#2) == (number) $20
+  (bool~) textbox::$10 ← ! (bool~) textbox::$9
+  if((bool~) textbox::$10) goto textbox::@5
+  to:textbox::@19
+textbox::@5: scope:[textbox]  from textbox::@16 textbox::@4 textbox::@8
+  (word) textbox::z#5 ← phi( textbox::@16/(word) textbox::z#1 textbox::@4/(word) textbox::z#3 textbox::@8/(word) textbox::z#6 )
+  (byte) textbox::y2#9 ← phi( textbox::@16/(byte) textbox::y2#10 textbox::@4/(byte) textbox::y2#11 textbox::@8/(byte) textbox::y2#8 )
+  (byte) textbox::y#8 ← phi( textbox::@16/(byte) textbox::y#4 textbox::@4/(byte) textbox::y#9 textbox::@8/(byte) textbox::y#7 )
+  (byte) textbox::x1#10 ← phi( textbox::@16/(byte) textbox::x1#11 textbox::@4/(byte) textbox::x1#12 textbox::@8/(byte) textbox::x1#6 )
+  (byte*) textbox::text#11 ← phi( textbox::@16/(byte*) textbox::text#13 textbox::@4/(byte*) textbox::text#4 textbox::@8/(byte*) textbox::text#14 )
+  (byte) textbox::x2#6 ← phi( textbox::@16/(byte) textbox::x2#8 textbox::@4/(byte) textbox::x2#9 textbox::@8/(byte) textbox::x2#7 )
+  (byte) textbox::x#5 ← phi( textbox::@16/(byte) textbox::x#8 textbox::@4/(byte) textbox::x#4 textbox::@8/(byte) textbox::x#6 )
+  (byte) textbox::i#3 ← phi( textbox::@16/(byte) textbox::i#6 textbox::@4/(byte) textbox::i#2 textbox::@8/(byte) textbox::i#7 )
+  (byte) textbox::i#1 ← ++ (byte) textbox::i#3
+  (byte) textbox::x#1 ← ++ (byte) textbox::x#5
+  (bool~) textbox::$24 ← (byte) textbox::x#1 == (byte) textbox::x2#6
+  (bool~) textbox::$25 ← ! (bool~) textbox::$24
+  if((bool~) textbox::$25) goto textbox::@17
+  to:textbox::@20
+textbox::@19: scope:[textbox]  from textbox::@4
+  (word) textbox::z#8 ← phi( textbox::@4/(word) textbox::z#3 )
+  (byte) textbox::y2#14 ← phi( textbox::@4/(byte) textbox::y2#11 )
+  (byte) textbox::y#12 ← phi( textbox::@4/(byte) textbox::y#9 )
+  (byte) textbox::x1#13 ← phi( textbox::@4/(byte) textbox::x1#12 )
+  (byte) textbox::x2#12 ← phi( textbox::@4/(byte) textbox::x2#9 )
+  (byte) textbox::x#10 ← phi( textbox::@4/(byte) textbox::x#4 )
+  (byte*) textbox::text#8 ← phi( textbox::@4/(byte*) textbox::text#4 )
+  (byte) textbox::i#4 ← phi( textbox::@4/(byte) textbox::i#2 )
+  (byte) textbox::c#0 ← (number) 0
+  (number~) textbox::$11 ← (byte) textbox::i#4 + (number) 1
+  (byte) textbox::ls#0 ← (number~) textbox::$11
+  to:textbox::@6
+textbox::@6: scope:[textbox]  from textbox::@19 textbox::@7
+  (word) textbox::z#7 ← phi( textbox::@19/(word) textbox::z#8 textbox::@7/(word) textbox::z#9 )
+  (byte) textbox::y2#12 ← phi( textbox::@19/(byte) textbox::y2#14 textbox::@7/(byte) textbox::y2#15 )
+  (byte) textbox::y#10 ← phi( textbox::@19/(byte) textbox::y#12 textbox::@7/(byte) textbox::y#13 )
+  (byte) textbox::i#9 ← phi( textbox::@19/(byte) textbox::i#4 textbox::@7/(byte) textbox::i#12 )
+  (byte) textbox::x1#9 ← phi( textbox::@19/(byte) textbox::x1#13 textbox::@7/(byte) textbox::x1#14 )
+  (byte) textbox::x2#10 ← phi( textbox::@19/(byte) textbox::x2#12 textbox::@7/(byte) textbox::x2#13 )
+  (byte) textbox::x#9 ← phi( textbox::@19/(byte) textbox::x#10 textbox::@7/(byte) textbox::x#11 )
+  (byte) textbox::c#4 ← phi( textbox::@19/(byte) textbox::c#0 textbox::@7/(byte) textbox::c#1 )
+  (byte) textbox::ls#2 ← phi( textbox::@19/(byte) textbox::ls#0 textbox::@7/(byte) textbox::ls#1 )
+  (byte*) textbox::text#5 ← phi( textbox::@19/(byte*) textbox::text#8 textbox::@7/(byte*) textbox::text#9 )
+  (bool~) textbox::$12 ← *((byte*) textbox::text#5 + (byte) textbox::ls#2) != (number) $20
+  (bool~) textbox::$13 ← *((byte*) textbox::text#5 + (byte) textbox::ls#2) != (number) 0
+  (bool~) textbox::$14 ← (bool~) textbox::$12 && (bool~) textbox::$13
+  if((bool~) textbox::$14) goto textbox::@7
+  to:textbox::@8
+textbox::@7: scope:[textbox]  from textbox::@6
+  (word) textbox::z#9 ← phi( textbox::@6/(word) textbox::z#7 )
+  (byte) textbox::y2#15 ← phi( textbox::@6/(byte) textbox::y2#12 )
+  (byte) textbox::y#13 ← phi( textbox::@6/(byte) textbox::y#10 )
+  (byte) textbox::i#12 ← phi( textbox::@6/(byte) textbox::i#9 )
+  (byte) textbox::x1#14 ← phi( textbox::@6/(byte) textbox::x1#9 )
+  (byte) textbox::x2#13 ← phi( textbox::@6/(byte) textbox::x2#10 )
+  (byte) textbox::x#11 ← phi( textbox::@6/(byte) textbox::x#9 )
+  (byte*) textbox::text#9 ← phi( textbox::@6/(byte*) textbox::text#5 )
+  (byte) textbox::c#2 ← phi( textbox::@6/(byte) textbox::c#4 )
+  (byte) textbox::ls#3 ← phi( textbox::@6/(byte) textbox::ls#2 )
+  (byte) textbox::ls#1 ← ++ (byte) textbox::ls#3
+  (byte) textbox::c#1 ← ++ (byte) textbox::c#2
+  to:textbox::@6
+textbox::@8: scope:[textbox]  from textbox::@6
+  (word) textbox::z#6 ← phi( textbox::@6/(word) textbox::z#7 )
+  (byte*) textbox::text#14 ← phi( textbox::@6/(byte*) textbox::text#5 )
+  (byte) textbox::y2#8 ← phi( textbox::@6/(byte) textbox::y2#12 )
+  (byte) textbox::y#7 ← phi( textbox::@6/(byte) textbox::y#10 )
+  (byte) textbox::i#7 ← phi( textbox::@6/(byte) textbox::i#9 )
+  (byte) textbox::x1#6 ← phi( textbox::@6/(byte) textbox::x1#9 )
+  (byte) textbox::x2#7 ← phi( textbox::@6/(byte) textbox::x2#10 )
+  (byte) textbox::x#6 ← phi( textbox::@6/(byte) textbox::x#9 )
+  (byte) textbox::c#3 ← phi( textbox::@6/(byte) textbox::c#4 )
+  (byte~) textbox::$15 ← (byte) textbox::c#3 + (byte) textbox::x#6
+  (bool~) textbox::$16 ← (byte~) textbox::$15 >= (byte) textbox::x2#7
+  (byte~) textbox::$17 ← (byte) textbox::x2#7 - (byte) textbox::x1#6
+  (bool~) textbox::$18 ← (byte) textbox::c#3 < (byte~) textbox::$17
+  (bool~) textbox::$19 ← (bool~) textbox::$16 && (bool~) textbox::$18
+  (bool~) textbox::$20 ← ! (bool~) textbox::$19
+  if((bool~) textbox::$20) goto textbox::@5
+  to:textbox::@12
+textbox::@12: scope:[textbox]  from textbox::@8
+  (byte*) textbox::text#16 ← phi( textbox::@8/(byte*) textbox::text#14 )
+  (byte) textbox::x2#14 ← phi( textbox::@8/(byte) textbox::x2#7 )
+  (byte) textbox::i#10 ← phi( textbox::@8/(byte) textbox::i#7 )
+  (byte) textbox::y2#6 ← phi( textbox::@8/(byte) textbox::y2#8 )
+  (byte) textbox::y#3 ← phi( textbox::@8/(byte) textbox::y#7 )
+  (byte) textbox::x1#7 ← phi( textbox::@8/(byte) textbox::x1#6 )
+  (byte) textbox::x#2 ← (byte) textbox::x1#7
+  (byte) textbox::y#1 ← ++ (byte) textbox::y#3
+  (bool~) textbox::$21 ← (byte) textbox::y#1 == (byte) textbox::y2#6
+  (bool~) textbox::$22 ← ! (bool~) textbox::$21
+  if((bool~) textbox::$22) goto textbox::@16
+  to:textbox::@return
+textbox::@16: scope:[textbox]  from textbox::@12
+  (byte) textbox::y2#10 ← phi( textbox::@12/(byte) textbox::y2#6 )
+  (byte) textbox::x1#11 ← phi( textbox::@12/(byte) textbox::x1#7 )
+  (byte*) textbox::text#13 ← phi( textbox::@12/(byte*) textbox::text#16 )
+  (byte) textbox::x2#8 ← phi( textbox::@12/(byte) textbox::x2#14 )
+  (byte) textbox::x#8 ← phi( textbox::@12/(byte) textbox::x#2 )
+  (byte) textbox::i#6 ← phi( textbox::@12/(byte) textbox::i#10 )
+  (byte) textbox::y#4 ← phi( textbox::@12/(byte) textbox::y#1 )
+  (number~) textbox::$23 ← (byte) textbox::y#4 * (number) $28
+  (word) textbox::z#1 ← (number~) textbox::$23
+  to:textbox::@5
+textbox::@17: scope:[textbox]  from textbox::@18 textbox::@5
+  (byte) textbox::y2#13 ← phi( textbox::@18/(byte) textbox::y2#16 textbox::@5/(byte) textbox::y2#9 )
+  (byte) textbox::y#11 ← phi( textbox::@18/(byte) textbox::y#6 textbox::@5/(byte) textbox::y#8 )
+  (byte) textbox::x1#15 ← phi( textbox::@18/(byte) textbox::x1#16 textbox::@5/(byte) textbox::x1#10 )
+  (byte) textbox::x2#11 ← phi( textbox::@18/(byte) textbox::x2#15 textbox::@5/(byte) textbox::x2#6 )
+  (byte) textbox::x#7 ← phi( textbox::@18/(byte) textbox::x#12 textbox::@5/(byte) textbox::x#1 )
+  (word) textbox::z#4 ← phi( textbox::@18/(word) textbox::z#2 textbox::@5/(word) textbox::z#5 )
+  (byte) textbox::i#5 ← phi( textbox::@18/(byte) textbox::i#8 textbox::@5/(byte) textbox::i#1 )
+  (byte*) textbox::text#6 ← phi( textbox::@18/(byte*) textbox::text#10 textbox::@5/(byte*) textbox::text#11 )
+  (bool~) textbox::$30 ← *((byte*) textbox::text#6 + (byte) textbox::i#5) != (number) 0
+  if((bool~) textbox::$30) goto textbox::@4
+  to:textbox::@return
+textbox::@20: scope:[textbox]  from textbox::@5
+  (byte) textbox::x2#16 ← phi( textbox::@5/(byte) textbox::x2#6 )
+  (byte) textbox::i#11 ← phi( textbox::@5/(byte) textbox::i#1 )
+  (byte*) textbox::text#15 ← phi( textbox::@5/(byte*) textbox::text#11 )
+  (byte) textbox::y2#7 ← phi( textbox::@5/(byte) textbox::y2#9 )
+  (byte) textbox::y#5 ← phi( textbox::@5/(byte) textbox::y#8 )
+  (byte) textbox::x1#8 ← phi( textbox::@5/(byte) textbox::x1#10 )
+  (number~) textbox::$26 ← (byte) textbox::x1#8 + (number) 1
+  (byte) textbox::x#3 ← (number~) textbox::$26
+  (byte) textbox::y#2 ← ++ (byte) textbox::y#5
+  (bool~) textbox::$27 ← (byte) textbox::y#2 == (byte) textbox::y2#7
+  (bool~) textbox::$28 ← ! (bool~) textbox::$27
+  if((bool~) textbox::$28) goto textbox::@18
+  to:textbox::@return
+textbox::@18: scope:[textbox]  from textbox::@20
+  (byte) textbox::y2#16 ← phi( textbox::@20/(byte) textbox::y2#7 )
+  (byte) textbox::x1#16 ← phi( textbox::@20/(byte) textbox::x1#8 )
+  (byte) textbox::x2#15 ← phi( textbox::@20/(byte) textbox::x2#16 )
+  (byte) textbox::x#12 ← phi( textbox::@20/(byte) textbox::x#3 )
+  (byte) textbox::i#8 ← phi( textbox::@20/(byte) textbox::i#11 )
+  (byte*) textbox::text#10 ← phi( textbox::@20/(byte*) textbox::text#15 )
+  (byte) textbox::y#6 ← phi( textbox::@20/(byte) textbox::y#2 )
+  (number~) textbox::$29 ← (byte) textbox::y#6 * (number) $28
+  (word) textbox::z#2 ← (number~) textbox::$29
+  to:textbox::@17
+draw_window: scope:[draw_window]  from textbox
+  (byte) draw_window::x2#6 ← phi( textbox/(byte) draw_window::x2#0 )
+  (byte) draw_window::x1#1 ← phi( textbox/(byte) draw_window::x1#0 )
+  (byte) draw_window::y2#1 ← phi( textbox/(byte) draw_window::y2#0 )
+  (byte) draw_window::y1#1 ← phi( textbox/(byte) draw_window::y1#0 )
+  (number~) draw_window::$0 ← (byte) draw_window::y1#1 * (number) $28
+  (word) draw_window::z#0 ← (number~) draw_window::$0
+  (number~) draw_window::$1 ← (byte) draw_window::y2#1 * (number) $28
+  (word) draw_window::q#0 ← (number~) draw_window::$1
+  (number~) draw_window::$12 ← (byte) draw_window::x1#1 + (number) 1
+  (byte) draw_window::x#0 ← (number~) draw_window::$12
+  to:draw_window::@2
+draw_window::@2: scope:[draw_window]  from draw_window draw_window::@2
+  (byte) draw_window::y2#7 ← phi( draw_window/(byte) draw_window::y2#1 draw_window::@2/(byte) draw_window::y2#7 )
+  (byte) draw_window::y1#5 ← phi( draw_window/(byte) draw_window::y1#1 draw_window::@2/(byte) draw_window::y1#5 )
+  (byte) draw_window::x1#6 ← phi( draw_window/(byte) draw_window::x1#1 draw_window::@2/(byte) draw_window::x1#6 )
+  (byte) draw_window::x2#1 ← phi( draw_window/(byte) draw_window::x2#6 draw_window::@2/(byte) draw_window::x2#1 )
+  (word) draw_window::q#1 ← phi( draw_window/(word) draw_window::q#0 draw_window::@2/(word) draw_window::q#1 )
+  (byte) draw_window::x#2 ← phi( draw_window/(byte) draw_window::x#0 draw_window::@2/(byte) draw_window::x#1 )
+  (word) draw_window::z#3 ← phi( draw_window/(word) draw_window::z#0 draw_window::@2/(word) draw_window::z#3 )
+  (word~) draw_window::$13 ← (word) draw_window::z#3 + (byte) draw_window::x#2
+  *((byte*) screen#0 + (word~) draw_window::$13) ← (number) $43
+  (word~) draw_window::$14 ← (word) draw_window::q#1 + (byte) draw_window::x#2
+  *((byte*) screen#0 + (word~) draw_window::$14) ← (number) $43
+  (byte) draw_window::x#1 ← ++ (byte) draw_window::x#2
+  (bool~) draw_window::$15 ← (byte) draw_window::x#1 < (byte) draw_window::x2#1
+  if((bool~) draw_window::$15) goto draw_window::@2
+  to:draw_window::@3
+draw_window::@3: scope:[draw_window]  from draw_window::@2
+  (word) draw_window::q#4 ← phi( draw_window::@2/(word) draw_window::q#1 )
+  (byte) draw_window::y2#5 ← phi( draw_window::@2/(byte) draw_window::y2#7 )
+  (byte) draw_window::y1#2 ← phi( draw_window::@2/(byte) draw_window::y1#5 )
+  (byte) draw_window::x2#2 ← phi( draw_window::@2/(byte) draw_window::x2#1 )
+  (byte) draw_window::x1#2 ← phi( draw_window::@2/(byte) draw_window::x1#6 )
+  (word) draw_window::z#4 ← phi( draw_window::@2/(word) draw_window::z#3 )
+  (word~) draw_window::$2 ← (word) draw_window::z#4 + (byte) draw_window::x1#2
+  *((byte*) screen#0 + (word~) draw_window::$2) ← (number) $55
+  (word~) draw_window::$3 ← (word) draw_window::z#4 + (byte) draw_window::x2#2
+  *((byte*) screen#0 + (word~) draw_window::$3) ← (number) $49
+  (number~) draw_window::$16 ← (byte) draw_window::y1#2 + (number) 1
+  (byte) draw_window::y#0 ← (number~) draw_window::$16
+  to:draw_window::@4
+draw_window::@4: scope:[draw_window]  from draw_window::@3 draw_window::@4
+  (byte) draw_window::y1#6 ← phi( draw_window::@3/(byte) draw_window::y1#2 draw_window::@4/(byte) draw_window::y1#6 )
+  (word) draw_window::q#3 ← phi( draw_window::@3/(word) draw_window::q#4 draw_window::@4/(word) draw_window::q#3 )
+  (byte) draw_window::y2#2 ← phi( draw_window::@3/(byte) draw_window::y2#5 draw_window::@4/(byte) draw_window::y2#2 )
+  (byte) draw_window::x2#3 ← phi( draw_window::@3/(byte) draw_window::x2#2 draw_window::@4/(byte) draw_window::x2#3 )
+  (byte) draw_window::x1#3 ← phi( draw_window::@3/(byte) draw_window::x1#2 draw_window::@4/(byte) draw_window::x1#3 )
+  (byte) draw_window::y#2 ← phi( draw_window::@3/(byte) draw_window::y#0 draw_window::@4/(byte) draw_window::y#1 )
+  (number~) draw_window::$17 ← (byte) draw_window::y#2 * (number) $28
+  (word) draw_window::z#1 ← (number~) draw_window::$17
+  (word~) draw_window::$18 ← (word) draw_window::z#1 + (byte) draw_window::x1#3
+  *((byte*) screen#0 + (word~) draw_window::$18) ← (number) $42
+  (word~) draw_window::$19 ← (word) draw_window::z#1 + (byte) draw_window::x2#3
+  *((byte*) screen#0 + (word~) draw_window::$19) ← (number) $42
+  (byte) draw_window::y#1 ← ++ (byte) draw_window::y#2
+  (bool~) draw_window::$20 ← (byte) draw_window::y#1 < (byte) draw_window::y2#2
+  if((bool~) draw_window::$20) goto draw_window::@4
+  to:draw_window::@5
+draw_window::@5: scope:[draw_window]  from draw_window::@4
+  (byte) draw_window::y1#3 ← phi( draw_window::@4/(byte) draw_window::y1#6 )
+  (byte) draw_window::y2#3 ← phi( draw_window::@4/(byte) draw_window::y2#2 )
+  (byte) draw_window::x2#4 ← phi( draw_window::@4/(byte) draw_window::x2#3 )
+  (byte) draw_window::x1#4 ← phi( draw_window::@4/(byte) draw_window::x1#3 )
+  (word) draw_window::q#2 ← phi( draw_window::@4/(word) draw_window::q#3 )
+  (word~) draw_window::$4 ← (word) draw_window::q#2 + (byte) draw_window::x1#4
+  *((byte*) screen#0 + (word~) draw_window::$4) ← (number) $4a
+  (word~) draw_window::$5 ← (word) draw_window::q#2 + (byte) draw_window::x2#4
+  *((byte*) screen#0 + (word~) draw_window::$5) ← (number) $4b
+  (byte~) draw_window::$6 ← (byte) draw_window::x2#4 - (byte) draw_window::x1#4
+  (bool~) draw_window::$7 ← (byte~) draw_window::$6 > (number) 1
+  (byte~) draw_window::$8 ← (byte) draw_window::y2#3 - (byte) draw_window::y1#3
+  (bool~) draw_window::$9 ← (byte~) draw_window::$8 > (number) 1
+  (bool~) draw_window::$10 ← (bool~) draw_window::$7 && (bool~) draw_window::$9
+  (bool~) draw_window::$11 ← ! (bool~) draw_window::$10
+  if((bool~) draw_window::$11) goto draw_window::@return
+  to:draw_window::@6
+draw_window::@6: scope:[draw_window]  from draw_window::@5
+  (byte) draw_window::y2#9 ← phi( draw_window::@5/(byte) draw_window::y2#3 )
+  (byte) draw_window::x2#8 ← phi( draw_window::@5/(byte) draw_window::x2#4 )
+  (byte) draw_window::x1#7 ← phi( draw_window::@5/(byte) draw_window::x1#4 )
+  (byte) draw_window::y1#4 ← phi( draw_window::@5/(byte) draw_window::y1#3 )
+  (number~) draw_window::$21 ← (byte) draw_window::y1#4 + (number) 1
+  (byte) draw_window::y3#0 ← (number~) draw_window::$21
+  to:draw_window::@7
+draw_window::@7: scope:[draw_window]  from draw_window::@6 draw_window::@9
+  (byte) draw_window::y2#8 ← phi( draw_window::@6/(byte) draw_window::y2#9 draw_window::@9/(byte) draw_window::y2#4 )
+  (byte) draw_window::x2#7 ← phi( draw_window::@6/(byte) draw_window::x2#8 draw_window::@9/(byte) draw_window::x2#9 )
+  (byte) draw_window::x1#5 ← phi( draw_window::@6/(byte) draw_window::x1#7 draw_window::@9/(byte) draw_window::x1#8 )
+  (byte) draw_window::y3#2 ← phi( draw_window::@6/(byte) draw_window::y3#0 draw_window::@9/(byte) draw_window::y3#1 )
+  (number~) draw_window::$22 ← (byte) draw_window::y3#2 * (number) $28
+  (word) draw_window::z#2 ← (number~) draw_window::$22
+  (number~) draw_window::$23 ← (byte) draw_window::x1#5 + (number) 1
+  (byte) draw_window::x3#0 ← (number~) draw_window::$23
+  to:draw_window::@8
+draw_window::@8: scope:[draw_window]  from draw_window::@7 draw_window::@8
+  (byte) draw_window::x1#9 ← phi( draw_window::@7/(byte) draw_window::x1#5 draw_window::@8/(byte) draw_window::x1#9 )
+  (byte) draw_window::y2#6 ← phi( draw_window::@7/(byte) draw_window::y2#8 draw_window::@8/(byte) draw_window::y2#6 )
+  (byte) draw_window::y3#4 ← phi( draw_window::@7/(byte) draw_window::y3#2 draw_window::@8/(byte) draw_window::y3#4 )
+  (byte) draw_window::x2#5 ← phi( draw_window::@7/(byte) draw_window::x2#7 draw_window::@8/(byte) draw_window::x2#5 )
+  (byte) draw_window::x3#2 ← phi( draw_window::@7/(byte) draw_window::x3#0 draw_window::@8/(byte) draw_window::x3#1 )
+  (word) draw_window::z#5 ← phi( draw_window::@7/(word) draw_window::z#2 draw_window::@8/(word) draw_window::z#5 )
+  (word~) draw_window::$24 ← (word) draw_window::z#5 + (byte) draw_window::x3#2
+  *((byte*) screen#0 + (word~) draw_window::$24) ← (number) $20
+  (byte) draw_window::x3#1 ← ++ (byte) draw_window::x3#2
+  (bool~) draw_window::$25 ← (byte) draw_window::x3#1 < (byte) draw_window::x2#5
+  if((bool~) draw_window::$25) goto draw_window::@8
+  to:draw_window::@9
+draw_window::@9: scope:[draw_window]  from draw_window::@8
+  (byte) draw_window::x2#9 ← phi( draw_window::@8/(byte) draw_window::x2#5 )
+  (byte) draw_window::x1#8 ← phi( draw_window::@8/(byte) draw_window::x1#9 )
+  (byte) draw_window::y2#4 ← phi( draw_window::@8/(byte) draw_window::y2#6 )
+  (byte) draw_window::y3#3 ← phi( draw_window::@8/(byte) draw_window::y3#4 )
+  (byte) draw_window::y3#1 ← ++ (byte) draw_window::y3#3
+  (bool~) draw_window::$26 ← (byte) draw_window::y3#1 < (byte) draw_window::y2#4
+  if((bool~) draw_window::$26) goto draw_window::@7
+  to:draw_window::@return
+draw_window::@return: scope:[draw_window]  from draw_window::@5 draw_window::@9
+  return 
+  to:@return
+@7: scope:[]  from @4
+  call main 
+  to:@8
+@8: scope:[]  from @7
+  to:@end
+@end: scope:[]  from @8
+
+SYMBOL TABLE SSA
+(const string) $0 = (string) "this is a small test with word wrap, if a word is too long it moves it to the next line. isn't that supercalifragilisticexpialidocious? i think it's cool!@"
+(const string) $1 = (string) "textbox by scan of desire@"
+(label) @4
+(label) @7
+(label) @8
+(label) @begin
+(label) @end
+(void()) draw_window((byte) draw_window::x1 , (byte) draw_window::y1 , (byte) draw_window::x2 , (byte) draw_window::y2)
+(number~) draw_window::$0
+(number~) draw_window::$1
+(bool~) draw_window::$10
+(bool~) draw_window::$11
+(number~) draw_window::$12
+(word~) draw_window::$13
+(word~) draw_window::$14
+(bool~) draw_window::$15
+(number~) draw_window::$16
+(number~) draw_window::$17
+(word~) draw_window::$18
+(word~) draw_window::$19
+(word~) draw_window::$2
+(bool~) draw_window::$20
+(number~) draw_window::$21
+(number~) draw_window::$22
+(number~) draw_window::$23
+(word~) draw_window::$24
+(bool~) draw_window::$25
+(bool~) draw_window::$26
+(word~) draw_window::$3
+(word~) draw_window::$4
+(word~) draw_window::$5
+(byte~) draw_window::$6
+(bool~) draw_window::$7
+(byte~) draw_window::$8
+(bool~) draw_window::$9
+(label) draw_window::@2
+(label) draw_window::@3
+(label) draw_window::@4
+(label) draw_window::@5
+(label) draw_window::@6
+(label) draw_window::@7
+(label) draw_window::@8
+(label) draw_window::@9
+(label) draw_window::@return
+(word) draw_window::q
+(word) draw_window::q#0
+(word) draw_window::q#1
+(word) draw_window::q#2
+(word) draw_window::q#3
+(word) draw_window::q#4
+(byte) draw_window::x
+(byte) draw_window::x#0
+(byte) draw_window::x#1
+(byte) draw_window::x#2
+(byte) draw_window::x1
+(byte) draw_window::x1#0
+(byte) draw_window::x1#1
+(byte) draw_window::x1#2
+(byte) draw_window::x1#3
+(byte) draw_window::x1#4
+(byte) draw_window::x1#5
+(byte) draw_window::x1#6
+(byte) draw_window::x1#7
+(byte) draw_window::x1#8
+(byte) draw_window::x1#9
+(byte) draw_window::x2
+(byte) draw_window::x2#0
+(byte) draw_window::x2#1
+(byte) draw_window::x2#2
+(byte) draw_window::x2#3
+(byte) draw_window::x2#4
+(byte) draw_window::x2#5
+(byte) draw_window::x2#6
+(byte) draw_window::x2#7
+(byte) draw_window::x2#8
+(byte) draw_window::x2#9
+(byte) draw_window::x3
+(byte) draw_window::x3#0
+(byte) draw_window::x3#1
+(byte) draw_window::x3#2
+(byte) draw_window::y
+(byte) draw_window::y#0
+(byte) draw_window::y#1
+(byte) draw_window::y#2
+(byte) draw_window::y1
+(byte) draw_window::y1#0
+(byte) draw_window::y1#1
+(byte) draw_window::y1#2
+(byte) draw_window::y1#3
+(byte) draw_window::y1#4
+(byte) draw_window::y1#5
+(byte) draw_window::y1#6
+(byte) draw_window::y2
+(byte) draw_window::y2#0
+(byte) draw_window::y2#1
+(byte) draw_window::y2#2
+(byte) draw_window::y2#3
+(byte) draw_window::y2#4
+(byte) draw_window::y2#5
+(byte) draw_window::y2#6
+(byte) draw_window::y2#7
+(byte) draw_window::y2#8
+(byte) draw_window::y2#9
+(byte) draw_window::y3
+(byte) draw_window::y3#0
+(byte) draw_window::y3#1
+(byte) draw_window::y3#2
+(byte) draw_window::y3#3
+(byte) draw_window::y3#4
+(word) draw_window::z
+(word) draw_window::z#0
+(word) draw_window::z#1
+(word) draw_window::z#2
+(word) draw_window::z#3
+(word) draw_window::z#4
+(word) draw_window::z#5
+(void()) main()
+(byte~) main::$3
+(number~) main::$4
+(number~) main::$5
+(bool~) main::$7
+(bool~) main::$8
+(label) main::@1
+(label) main::@10
+(label) main::@2
+(label) main::@3
+(label) main::@4
+(label) main::@5
+(label) main::@7
+(label) main::@8
+(label) main::@9
+(label) main::@return
+(word) main::wait
+(word) main::wait#0
+(word) main::wait#1
+(word) main::wait#2
+(byte) main::x
+(byte) main::x#0
+(byte) main::x#1
+(byte) main::x#2
+(byte) main::x#3
+(byte) main::x#4
+(byte) main::x#5
+(byte*) screen
+(byte*) screen#0
+(byte[]) text
+(byte[]) text#0
+(byte[]) text2
+(byte[]) text2#0
+(void()) textbox((byte) textbox::x1 , (byte) textbox::y1 , (byte) textbox::x2 , (byte) textbox::y2 , (byte*) textbox::text)
+(number~) textbox::$1
+(bool~) textbox::$10
+(number~) textbox::$11
+(bool~) textbox::$12
+(bool~) textbox::$13
+(bool~) textbox::$14
+(byte~) textbox::$15
+(bool~) textbox::$16
+(byte~) textbox::$17
+(bool~) textbox::$18
+(bool~) textbox::$19
+(number~) textbox::$2
+(bool~) textbox::$20
+(bool~) textbox::$21
+(bool~) textbox::$22
+(number~) textbox::$23
+(bool~) textbox::$24
+(bool~) textbox::$25
+(number~) textbox::$26
+(bool~) textbox::$27
+(bool~) textbox::$28
+(number~) textbox::$29
+(number~) textbox::$3
+(bool~) textbox::$30
+(bool~) textbox::$4
+(bool~) textbox::$5
+(bool~) textbox::$6
+(bool~) textbox::$7
+(word~) textbox::$8
+(bool~) textbox::$9
+(label) textbox::@12
+(label) textbox::@16
+(label) textbox::@17
+(label) textbox::@18
+(label) textbox::@19
+(label) textbox::@20
+(label) textbox::@24
+(label) textbox::@4
+(label) textbox::@5
+(label) textbox::@6
+(label) textbox::@7
+(label) textbox::@8
+(label) textbox::@return
+(byte) textbox::c
+(byte) textbox::c#0
+(byte) textbox::c#1
+(byte) textbox::c#2
+(byte) textbox::c#3
+(byte) textbox::c#4
+(byte) textbox::i
+(byte) textbox::i#0
+(byte) textbox::i#1
+(byte) textbox::i#10
+(byte) textbox::i#11
+(byte) textbox::i#12
+(byte) textbox::i#2
+(byte) textbox::i#3
+(byte) textbox::i#4
+(byte) textbox::i#5
+(byte) textbox::i#6
+(byte) textbox::i#7
+(byte) textbox::i#8
+(byte) textbox::i#9
+(byte) textbox::ls
+(byte) textbox::ls#0
+(byte) textbox::ls#1
+(byte) textbox::ls#2
+(byte) textbox::ls#3
+(byte*) textbox::text
+(byte*) textbox::text#0
+(byte*) textbox::text#1
+(byte*) textbox::text#10
+(byte*) textbox::text#11
+(byte*) textbox::text#12
+(byte*) textbox::text#13
+(byte*) textbox::text#14
+(byte*) textbox::text#15
+(byte*) textbox::text#16
+(byte*) textbox::text#2
+(byte*) textbox::text#3
+(byte*) textbox::text#4
+(byte*) textbox::text#5
+(byte*) textbox::text#6
+(byte*) textbox::text#7
+(byte*) textbox::text#8
+(byte*) textbox::text#9
+(byte) textbox::x
+(byte) textbox::x#0
+(byte) textbox::x#1
+(byte) textbox::x#10
+(byte) textbox::x#11
+(byte) textbox::x#12
+(byte) textbox::x#2
+(byte) textbox::x#3
+(byte) textbox::x#4
+(byte) textbox::x#5
+(byte) textbox::x#6
+(byte) textbox::x#7
+(byte) textbox::x#8
+(byte) textbox::x#9
+(byte) textbox::x1
+(byte) textbox::x1#0
+(byte) textbox::x1#1
+(byte) textbox::x1#10
+(byte) textbox::x1#11
+(byte) textbox::x1#12
+(byte) textbox::x1#13
+(byte) textbox::x1#14
+(byte) textbox::x1#15
+(byte) textbox::x1#16
+(byte) textbox::x1#2
+(byte) textbox::x1#3
+(byte) textbox::x1#4
+(byte) textbox::x1#5
+(byte) textbox::x1#6
+(byte) textbox::x1#7
+(byte) textbox::x1#8
+(byte) textbox::x1#9
+(byte) textbox::x2
+(byte) textbox::x2#0
+(byte) textbox::x2#1
+(byte) textbox::x2#10
+(byte) textbox::x2#11
+(byte) textbox::x2#12
+(byte) textbox::x2#13
+(byte) textbox::x2#14
+(byte) textbox::x2#15
+(byte) textbox::x2#16
+(byte) textbox::x2#2
+(byte) textbox::x2#3
+(byte) textbox::x2#4
+(byte) textbox::x2#5
+(byte) textbox::x2#6
+(byte) textbox::x2#7
+(byte) textbox::x2#8
+(byte) textbox::x2#9
+(byte) textbox::y
+(byte) textbox::y#0
+(byte) textbox::y#1
+(byte) textbox::y#10
+(byte) textbox::y#11
+(byte) textbox::y#12
+(byte) textbox::y#13
+(byte) textbox::y#2
+(byte) textbox::y#3
+(byte) textbox::y#4
+(byte) textbox::y#5
+(byte) textbox::y#6
+(byte) textbox::y#7
+(byte) textbox::y#8
+(byte) textbox::y#9
+(byte) textbox::y1
+(byte) textbox::y1#0
+(byte) textbox::y1#1
+(byte) textbox::y1#2
+(byte) textbox::y1#3
+(byte) textbox::y1#4
+(byte) textbox::y1#5
+(byte) textbox::y2
+(byte) textbox::y2#0
+(byte) textbox::y2#1
+(byte) textbox::y2#10
+(byte) textbox::y2#11
+(byte) textbox::y2#12
+(byte) textbox::y2#13
+(byte) textbox::y2#14
+(byte) textbox::y2#15
+(byte) textbox::y2#16
+(byte) textbox::y2#2
+(byte) textbox::y2#3
+(byte) textbox::y2#4
+(byte) textbox::y2#5
+(byte) textbox::y2#6
+(byte) textbox::y2#7
+(byte) textbox::y2#8
+(byte) textbox::y2#9
+(word) textbox::z
+(word) textbox::z#0
+(word) textbox::z#1
+(word) textbox::z#2
+(word) textbox::z#3
+(word) textbox::z#4
+(word) textbox::z#5
+(word) textbox::z#6
+(word) textbox::z#7
+(word) textbox::z#8
+(word) textbox::z#9
+
+Adding number conversion cast (unumber) 0 in (byte) main::x#0 ← (number) 0
+Adding number conversion cast (unumber) 1 in (number~) main::$4 ← (byte~) main::$3 + (number) 1
+Adding number conversion cast (unumber) main::$4 in (number~) main::$4 ← (byte~) main::$3 + (unumber)(number) 1
+Adding number conversion cast (unumber) $a in (number~) main::$5 ← (byte) main::x#2 + (number) $a
+Adding number conversion cast (unumber) main::$5 in (number~) main::$5 ← (byte) main::x#2 + (unumber)(number) $a
+Adding number conversion cast (unumber) 0 in (word) main::wait#0 ← (number) 0
+Adding number conversion cast (unumber) $88b8 in (bool~) main::$7 ← (word) main::wait#1 < (number) $88b8
+Adding number conversion cast (unumber) 2 in (byte) main::x#1 ← (byte) main::x#3 + (number) 2
+Adding number conversion cast (unumber) $f in (bool~) main::$8 ← (byte) main::x#1 < (number) $f
+Adding number conversion cast (unumber) 0 in (byte) textbox::x1#1 ← (number) 0
+Adding number conversion cast (unumber) $c in (byte) textbox::y1#1 ← (number) $c
+Adding number conversion cast (unumber) $14 in (byte) textbox::x2#1 ← (number) $14
+Adding number conversion cast (unumber) $18 in (byte) textbox::y2#1 ← (number) $18
+Adding number conversion cast (unumber) 3 in (byte) textbox::x1#2 ← (number) 3
+Adding number conversion cast (unumber) 3 in (byte) textbox::y1#2 ← (number) 3
+Adding number conversion cast (unumber) $25 in (byte) textbox::x2#2 ← (number) $25
+Adding number conversion cast (unumber) 9 in (byte) textbox::y2#2 ← (number) 9
+Adding number conversion cast (unumber) $1e in (byte) textbox::x1#3 ← (number) $1e
+Adding number conversion cast (unumber) 8 in (byte) textbox::y1#3 ← (number) 8
+Adding number conversion cast (unumber) $27 in (byte) textbox::x2#3 ← (number) $27
+Adding number conversion cast (unumber) $18 in (byte) textbox::y2#3 ← (number) $18
+Adding number conversion cast (unumber) 1 in (number~) textbox::$1 ← (byte) textbox::y1#5 + (number) 1
+Adding number conversion cast (unumber) textbox::$1 in (number~) textbox::$1 ← (byte) textbox::y1#5 + (unumber)(number) 1
+Adding number conversion cast (unumber) 1 in (number~) textbox::$2 ← (byte) textbox::x1#5 + (number) 1
+Adding number conversion cast (unumber) textbox::$2 in (number~) textbox::$2 ← (byte) textbox::x1#5 + (unumber)(number) 1
+Adding number conversion cast (unumber) $28 in (number~) textbox::$3 ← (byte) textbox::y#0 * (number) $28
+Adding number conversion cast (unumber) textbox::$3 in (number~) textbox::$3 ← (byte) textbox::y#0 * (unumber)(number) $28
+Adding number conversion cast (unumber) 0 in (byte) textbox::i#0 ← (number) 0
+Adding number conversion cast (unumber) $20 in (bool~) textbox::$9 ← *((byte*) textbox::text#4 + (byte) textbox::i#2) == (number) $20
+Adding number conversion cast (unumber) 0 in (byte) textbox::c#0 ← (number) 0
+Adding number conversion cast (unumber) 1 in (number~) textbox::$11 ← (byte) textbox::i#4 + (number) 1
+Adding number conversion cast (unumber) textbox::$11 in (number~) textbox::$11 ← (byte) textbox::i#4 + (unumber)(number) 1
+Adding number conversion cast (unumber) $20 in (bool~) textbox::$12 ← *((byte*) textbox::text#5 + (byte) textbox::ls#2) != (number) $20
+Adding number conversion cast (unumber) 0 in (bool~) textbox::$13 ← *((byte*) textbox::text#5 + (byte) textbox::ls#2) != (number) 0
+Adding number conversion cast (unumber) $28 in (number~) textbox::$23 ← (byte) textbox::y#4 * (number) $28
+Adding number conversion cast (unumber) textbox::$23 in (number~) textbox::$23 ← (byte) textbox::y#4 * (unumber)(number) $28
+Adding number conversion cast (unumber) 0 in (bool~) textbox::$30 ← *((byte*) textbox::text#6 + (byte) textbox::i#5) != (number) 0
+Adding number conversion cast (unumber) 1 in (number~) textbox::$26 ← (byte) textbox::x1#8 + (number) 1
+Adding number conversion cast (unumber) textbox::$26 in (number~) textbox::$26 ← (byte) textbox::x1#8 + (unumber)(number) 1
+Adding number conversion cast (unumber) $28 in (number~) textbox::$29 ← (byte) textbox::y#6 * (number) $28
+Adding number conversion cast (unumber) textbox::$29 in (number~) textbox::$29 ← (byte) textbox::y#6 * (unumber)(number) $28
+Adding number conversion cast (unumber) $28 in (number~) draw_window::$0 ← (byte) draw_window::y1#1 * (number) $28
+Adding number conversion cast (unumber) draw_window::$0 in (number~) draw_window::$0 ← (byte) draw_window::y1#1 * (unumber)(number) $28
+Adding number conversion cast (unumber) $28 in (number~) draw_window::$1 ← (byte) draw_window::y2#1 * (number) $28
+Adding number conversion cast (unumber) draw_window::$1 in (number~) draw_window::$1 ← (byte) draw_window::y2#1 * (unumber)(number) $28
+Adding number conversion cast (unumber) 1 in (number~) draw_window::$12 ← (byte) draw_window::x1#1 + (number) 1
+Adding number conversion cast (unumber) draw_window::$12 in (number~) draw_window::$12 ← (byte) draw_window::x1#1 + (unumber)(number) 1
+Adding number conversion cast (unumber) $43 in *((byte*) screen#0 + (word~) draw_window::$13) ← (number) $43
+Adding number conversion cast (unumber) $43 in *((byte*) screen#0 + (word~) draw_window::$14) ← (number) $43
+Adding number conversion cast (unumber) $55 in *((byte*) screen#0 + (word~) draw_window::$2) ← (number) $55
+Adding number conversion cast (unumber) $49 in *((byte*) screen#0 + (word~) draw_window::$3) ← (number) $49
+Adding number conversion cast (unumber) 1 in (number~) draw_window::$16 ← (byte) draw_window::y1#2 + (number) 1
+Adding number conversion cast (unumber) draw_window::$16 in (number~) draw_window::$16 ← (byte) draw_window::y1#2 + (unumber)(number) 1
+Adding number conversion cast (unumber) $28 in (number~) draw_window::$17 ← (byte) draw_window::y#2 * (number) $28
+Adding number conversion cast (unumber) draw_window::$17 in (number~) draw_window::$17 ← (byte) draw_window::y#2 * (unumber)(number) $28
+Adding number conversion cast (unumber) $42 in *((byte*) screen#0 + (word~) draw_window::$18) ← (number) $42
+Adding number conversion cast (unumber) $42 in *((byte*) screen#0 + (word~) draw_window::$19) ← (number) $42
+Adding number conversion cast (unumber) $4a in *((byte*) screen#0 + (word~) draw_window::$4) ← (number) $4a
+Adding number conversion cast (unumber) $4b in *((byte*) screen#0 + (word~) draw_window::$5) ← (number) $4b
+Adding number conversion cast (unumber) 1 in (bool~) draw_window::$7 ← (byte~) draw_window::$6 > (number) 1
+Adding number conversion cast (unumber) 1 in (bool~) draw_window::$9 ← (byte~) draw_window::$8 > (number) 1
+Adding number conversion cast (unumber) 1 in (number~) draw_window::$21 ← (byte) draw_window::y1#4 + (number) 1
+Adding number conversion cast (unumber) draw_window::$21 in (number~) draw_window::$21 ← (byte) draw_window::y1#4 + (unumber)(number) 1
+Adding number conversion cast (unumber) $28 in (number~) draw_window::$22 ← (byte) draw_window::y3#2 * (number) $28
+Adding number conversion cast (unumber) draw_window::$22 in (number~) draw_window::$22 ← (byte) draw_window::y3#2 * (unumber)(number) $28
+Adding number conversion cast (unumber) 1 in (number~) draw_window::$23 ← (byte) draw_window::x1#5 + (number) 1
+Adding number conversion cast (unumber) draw_window::$23 in (number~) draw_window::$23 ← (byte) draw_window::x1#5 + (unumber)(number) 1
+Adding number conversion cast (unumber) $20 in *((byte*) screen#0 + (word~) draw_window::$24) ← (number) $20
+Successful SSA optimization PassNAddNumberTypeConversions
+Inlining cast (byte*) screen#0 ← (byte*)(number) $400
+Inlining cast (byte) main::x#0 ← (unumber)(number) 0
+Inlining cast (word) main::wait#0 ← (unumber)(number) 0
+Inlining cast (byte) textbox::x1#1 ← (unumber)(number) 0
+Inlining cast (byte) textbox::y1#1 ← (unumber)(number) $c
+Inlining cast (byte) textbox::x2#1 ← (unumber)(number) $14
+Inlining cast (byte) textbox::y2#1 ← (unumber)(number) $18
+Inlining cast (byte) textbox::x1#2 ← (unumber)(number) 3
+Inlining cast (byte) textbox::y1#2 ← (unumber)(number) 3
+Inlining cast (byte) textbox::x2#2 ← (unumber)(number) $25
+Inlining cast (byte) textbox::y2#2 ← (unumber)(number) 9
+Inlining cast (byte) textbox::x1#3 ← (unumber)(number) $1e
+Inlining cast (byte) textbox::y1#3 ← (unumber)(number) 8
+Inlining cast (byte) textbox::x2#3 ← (unumber)(number) $27
+Inlining cast (byte) textbox::y2#3 ← (unumber)(number) $18
+Inlining cast (byte) textbox::i#0 ← (unumber)(number) 0
+Inlining cast (byte) textbox::c#0 ← (unumber)(number) 0
+Inlining cast *((byte*) screen#0 + (word~) draw_window::$13) ← (unumber)(number) $43
+Inlining cast *((byte*) screen#0 + (word~) draw_window::$14) ← (unumber)(number) $43
+Inlining cast *((byte*) screen#0 + (word~) draw_window::$2) ← (unumber)(number) $55
+Inlining cast *((byte*) screen#0 + (word~) draw_window::$3) ← (unumber)(number) $49
+Inlining cast *((byte*) screen#0 + (word~) draw_window::$18) ← (unumber)(number) $42
+Inlining cast *((byte*) screen#0 + (word~) draw_window::$19) ← (unumber)(number) $42
+Inlining cast *((byte*) screen#0 + (word~) draw_window::$4) ← (unumber)(number) $4a
+Inlining cast *((byte*) screen#0 + (word~) draw_window::$5) ← (unumber)(number) $4b
+Inlining cast *((byte*) screen#0 + (word~) draw_window::$24) ← (unumber)(number) $20
+Successful SSA optimization Pass2InlineCast
+Simplifying constant pointer cast (byte*) 1024
+Simplifying constant integer cast 0
+Simplifying constant integer cast 1
+Simplifying constant integer cast $a
+Simplifying constant integer cast 0
+Simplifying constant integer cast $88b8
+Simplifying constant integer cast 2
+Simplifying constant integer cast $f
+Simplifying constant integer cast 0
+Simplifying constant integer cast $c
+Simplifying constant integer cast $14
+Simplifying constant integer cast $18
+Simplifying constant integer cast 3
+Simplifying constant integer cast 3
+Simplifying constant integer cast $25
+Simplifying constant integer cast 9
+Simplifying constant integer cast $1e
+Simplifying constant integer cast 8
+Simplifying constant integer cast $27
+Simplifying constant integer cast $18
+Simplifying constant integer cast 1
+Simplifying constant integer cast 1
+Simplifying constant integer cast $28
+Simplifying constant integer cast 0
+Simplifying constant integer cast $20
+Simplifying constant integer cast 0
+Simplifying constant integer cast 1
+Simplifying constant integer cast $20
+Simplifying constant integer cast 0
+Simplifying constant integer cast $28
+Simplifying constant integer cast 0
+Simplifying constant integer cast 1
+Simplifying constant integer cast $28
+Simplifying constant integer cast $28
+Simplifying constant integer cast $28
+Simplifying constant integer cast 1
+Simplifying constant integer cast $43
+Simplifying constant integer cast $43
+Simplifying constant integer cast $55
+Simplifying constant integer cast $49
+Simplifying constant integer cast 1
+Simplifying constant integer cast $28
+Simplifying constant integer cast $42
+Simplifying constant integer cast $42
+Simplifying constant integer cast $4a
+Simplifying constant integer cast $4b
+Simplifying constant integer cast 1
+Simplifying constant integer cast 1
+Simplifying constant integer cast 1
+Simplifying constant integer cast $28
+Simplifying constant integer cast 1
+Simplifying constant integer cast $20
+Successful SSA optimization PassNCastSimplification
+Finalized unsigned number type (byte) 0
+Finalized unsigned number type (byte) 1
+Finalized unsigned number type (byte) $a
+Finalized unsigned number type (byte) 0
+Finalized unsigned number type (word) $88b8
+Finalized unsigned number type (byte) 2
+Finalized unsigned number type (byte) $f
+Finalized unsigned number type (byte) 0
+Finalized unsigned number type (byte) $c
+Finalized unsigned number type (byte) $14
+Finalized unsigned number type (byte) $18
+Finalized unsigned number type (byte) 3
+Finalized unsigned number type (byte) 3
+Finalized unsigned number type (byte) $25
+Finalized unsigned number type (byte) 9
+Finalized unsigned number type (byte) $1e
+Finalized unsigned number type (byte) 8
+Finalized unsigned number type (byte) $27
+Finalized unsigned number type (byte) $18
+Finalized unsigned number type (byte) 1
+Finalized unsigned number type (byte) 1
+Finalized unsigned number type (byte) $28
+Finalized unsigned number type (byte) 0
+Finalized unsigned number type (byte) $20
+Finalized unsigned number type (byte) 0
+Finalized unsigned number type (byte) 1
+Finalized unsigned number type (byte) $20
+Finalized unsigned number type (byte) 0
+Finalized unsigned number type (byte) $28
+Finalized unsigned number type (byte) 0
+Finalized unsigned number type (byte) 1
+Finalized unsigned number type (byte) $28
+Finalized unsigned number type (byte) $28
+Finalized unsigned number type (byte) $28
+Finalized unsigned number type (byte) 1
+Finalized unsigned number type (byte) $43
+Finalized unsigned number type (byte) $43
+Finalized unsigned number type (byte) $55
+Finalized unsigned number type (byte) $49
+Finalized unsigned number type (byte) 1
+Finalized unsigned number type (byte) $28
+Finalized unsigned number type (byte) $42
+Finalized unsigned number type (byte) $42
+Finalized unsigned number type (byte) $4a
+Finalized unsigned number type (byte) $4b
+Finalized unsigned number type (byte) 1
+Finalized unsigned number type (byte) 1
+Finalized unsigned number type (byte) 1
+Finalized unsigned number type (byte) $28
+Finalized unsigned number type (byte) 1
+Finalized unsigned number type (byte) $20
+Successful SSA optimization PassNFinalizeNumberTypeConversions
+Inferred type updated to byte in (unumber~) main::$4 ← (byte~) main::$3 + (byte) 1
+Inferred type updated to byte in (unumber~) main::$5 ← (byte) main::x#2 + (byte) $a
+Inferred type updated to byte in (unumber~) textbox::$1 ← (byte) textbox::y1#5 + (byte) 1
+Inferred type updated to byte in (unumber~) textbox::$2 ← (byte) textbox::x1#5 + (byte) 1
+Inferred type updated to byte in (unumber~) textbox::$3 ← (byte) textbox::y#0 * (byte) $28
+Inferred type updated to byte in (unumber~) textbox::$11 ← (byte) textbox::i#4 + (byte) 1
+Inferred type updated to byte in (unumber~) textbox::$23 ← (byte) textbox::y#4 * (byte) $28
+Inferred type updated to byte in (unumber~) textbox::$26 ← (byte) textbox::x1#8 + (byte) 1
+Inferred type updated to byte in (unumber~) textbox::$29 ← (byte) textbox::y#6 * (byte) $28
+Inferred type updated to byte in (unumber~) draw_window::$0 ← (byte) draw_window::y1#1 * (byte) $28
+Inferred type updated to byte in (unumber~) draw_window::$1 ← (byte) draw_window::y2#1 * (byte) $28
+Inferred type updated to byte in (unumber~) draw_window::$12 ← (byte) draw_window::x1#1 + (byte) 1
+Inferred type updated to byte in (unumber~) draw_window::$16 ← (byte) draw_window::y1#2 + (byte) 1
+Inferred type updated to byte in (unumber~) draw_window::$17 ← (byte) draw_window::y#2 * (byte) $28
+Inferred type updated to byte in (unumber~) draw_window::$21 ← (byte) draw_window::y1#4 + (byte) 1
+Inferred type updated to byte in (unumber~) draw_window::$22 ← (byte) draw_window::y3#2 * (byte) $28
+Inferred type updated to byte in (unumber~) draw_window::$23 ← (byte) draw_window::x1#5 + (byte) 1
+Inversing boolean not [68] (bool~) textbox::$10 ← *((byte*) textbox::text#4 + (byte) textbox::i#2) != (byte) $20 from [67] (bool~) textbox::$9 ← *((byte*) textbox::text#4 + (byte) textbox::i#2) == (byte) $20
+Inversing boolean not [74] (bool~) textbox::$25 ← (byte) textbox::x#1 != (byte) textbox::x2#6 from [73] (bool~) textbox::$24 ← (byte) textbox::x#1 == (byte) textbox::x2#6
+Inversing boolean not [100] (bool~) textbox::$22 ← (byte) textbox::y#1 != (byte) textbox::y2#6 from [99] (bool~) textbox::$21 ← (byte) textbox::y#1 == (byte) textbox::y2#6
+Inversing boolean not [113] (bool~) textbox::$28 ← (byte) textbox::y#2 != (byte) textbox::y2#7 from [112] (bool~) textbox::$27 ← (byte) textbox::y#2 == (byte) textbox::y2#7
+Successful SSA optimization Pass2UnaryNotSimplification
+Alias (byte) textbox::x2#0 = (byte~) main::$4 
+Alias (byte) textbox::y2#0 = (byte~) main::$5 
+Alias (byte) main::x#2 = (byte) main::x#5 
+Alias (byte) main::x#3 = (byte) main::x#4 
+Alias (byte) textbox::y1#4 = (byte) textbox::y1#5 
+Alias (byte) textbox::x1#4 = (byte) textbox::x1#5 
+Alias (byte) textbox::x2#4 = (byte) textbox::x2#5 
+Alias (byte) textbox::y2#4 = (byte) textbox::y2#5 
+Alias (byte*) textbox::text#12 = (byte*) textbox::text#7 
+Alias (byte) textbox::y#0 = (byte~) textbox::$1 
+Alias (byte) textbox::x#0 = (byte~) textbox::$2 
+Alias (word) textbox::z#0 = (byte~) textbox::$3 
+Alias (byte) textbox::i#2 = (byte) textbox::i#4 
+Alias (byte*) textbox::text#4 = (byte*) textbox::text#8 
+Alias (byte) textbox::x#10 = (byte) textbox::x#4 
+Alias (byte) textbox::x2#12 = (byte) textbox::x2#9 
+Alias (byte) textbox::x1#12 = (byte) textbox::x1#13 
+Alias (byte) textbox::y#12 = (byte) textbox::y#9 
+Alias (byte) textbox::y2#11 = (byte) textbox::y2#14 
+Alias (word) textbox::z#3 = (word) textbox::z#8 
+Alias (byte) textbox::ls#0 = (byte~) textbox::$11 
+Alias (byte) textbox::ls#2 = (byte) textbox::ls#3 
+Alias (byte) textbox::c#2 = (byte) textbox::c#4 (byte) textbox::c#3 
+Alias (byte*) textbox::text#13 = (byte*) textbox::text#9 (byte*) textbox::text#5 (byte*) textbox::text#14 (byte*) textbox::text#16 
+Alias (byte) textbox::x#11 = (byte) textbox::x#9 (byte) textbox::x#6 
+Alias (byte) textbox::x2#10 = (byte) textbox::x2#13 (byte) textbox::x2#7 (byte) textbox::x2#14 (byte) textbox::x2#8 
+Alias (byte) textbox::x1#11 = (byte) textbox::x1#14 (byte) textbox::x1#9 (byte) textbox::x1#6 (byte) textbox::x1#7 (byte) textbox::x#2 (byte) textbox::x#8 
+Alias (byte) textbox::i#10 = (byte) textbox::i#12 (byte) textbox::i#9 (byte) textbox::i#7 (byte) textbox::i#6 
+Alias (byte) textbox::y#10 = (byte) textbox::y#13 (byte) textbox::y#7 (byte) textbox::y#3 
+Alias (byte) textbox::y2#10 = (byte) textbox::y2#15 (byte) textbox::y2#12 (byte) textbox::y2#8 (byte) textbox::y2#6 
+Alias (word) textbox::z#6 = (word) textbox::z#9 (word) textbox::z#7 
+Alias (byte) textbox::y#1 = (byte) textbox::y#4 
+Alias (word) textbox::z#1 = (byte~) textbox::$23 
+Alias (byte) textbox::x1#10 = (byte) textbox::x1#8 (byte) textbox::x1#16 
+Alias (byte) textbox::y#5 = (byte) textbox::y#8 
+Alias (byte) textbox::y2#16 = (byte) textbox::y2#7 (byte) textbox::y2#9 
+Alias (byte*) textbox::text#10 = (byte*) textbox::text#15 (byte*) textbox::text#11 
+Alias (byte) textbox::i#1 = (byte) textbox::i#11 (byte) textbox::i#8 
+Alias (byte) textbox::x2#15 = (byte) textbox::x2#16 (byte) textbox::x2#6 
+Alias (byte) textbox::x#12 = (byte) textbox::x#3 (byte~) textbox::$26 
+Alias (byte) textbox::y#2 = (byte) textbox::y#6 
+Alias (word) textbox::z#2 = (byte~) textbox::$29 
+Alias (word) draw_window::z#0 = (byte~) draw_window::$0 
+Alias (word) draw_window::q#0 = (byte~) draw_window::$1 
+Alias (byte) draw_window::x#0 = (byte~) draw_window::$12 
+Alias (word) draw_window::z#3 = (word) draw_window::z#4 
+Alias (byte) draw_window::x1#2 = (byte) draw_window::x1#6 
+Alias (byte) draw_window::x2#1 = (byte) draw_window::x2#2 
+Alias (byte) draw_window::y1#2 = (byte) draw_window::y1#5 
+Alias (byte) draw_window::y2#5 = (byte) draw_window::y2#7 
+Alias (word) draw_window::q#1 = (word) draw_window::q#4 
+Alias (byte) draw_window::y#0 = (byte~) draw_window::$16 
+Alias (word) draw_window::z#1 = (byte~) draw_window::$17 
+Alias (word) draw_window::q#2 = (word) draw_window::q#3 
+Alias (byte) draw_window::x1#3 = (byte) draw_window::x1#4 (byte) draw_window::x1#7 
+Alias (byte) draw_window::x2#3 = (byte) draw_window::x2#4 (byte) draw_window::x2#8 
+Alias (byte) draw_window::y2#2 = (byte) draw_window::y2#3 (byte) draw_window::y2#9 
+Alias (byte) draw_window::y1#3 = (byte) draw_window::y1#6 (byte) draw_window::y1#4 
+Alias (byte) draw_window::y3#0 = (byte~) draw_window::$21 
+Alias (word) draw_window::z#2 = (byte~) draw_window::$22 
+Alias (byte) draw_window::x3#0 = (byte~) draw_window::$23 
+Alias (byte) draw_window::y3#3 = (byte) draw_window::y3#4 
+Alias (byte) draw_window::y2#4 = (byte) draw_window::y2#6 
+Alias (byte) draw_window::x1#8 = (byte) draw_window::x1#9 
+Alias (byte) draw_window::x2#5 = (byte) draw_window::x2#9 
+Successful SSA optimization Pass2AliasElimination
+Alias (byte*) textbox::text#10 = (byte*) textbox::text#6 
+Alias (byte) textbox::i#1 = (byte) textbox::i#5 
+Alias (byte) textbox::x2#11 = (byte) textbox::x2#15 
+Alias (byte) textbox::x1#10 = (byte) textbox::x1#15 
+Alias (byte) textbox::y2#13 = (byte) textbox::y2#16 
+Successful SSA optimization Pass2AliasElimination
+Self Phi Eliminated (byte) main::x#3
+Self Phi Eliminated (byte*) textbox::text#13
+Self Phi Eliminated (byte) textbox::x#11
+Self Phi Eliminated (byte) textbox::x2#10
+Self Phi Eliminated (byte) textbox::x1#11
+Self Phi Eliminated (byte) textbox::i#10
+Self Phi Eliminated (byte) textbox::y#10
+Self Phi Eliminated (byte) textbox::y2#10
+Self Phi Eliminated (word) textbox::z#6
+Self Phi Eliminated (word) draw_window::z#3
+Self Phi Eliminated (word) draw_window::q#1
+Self Phi Eliminated (byte) draw_window::x2#1
+Self Phi Eliminated (byte) draw_window::x1#2
+Self Phi Eliminated (byte) draw_window::y1#2
+Self Phi Eliminated (byte) draw_window::y2#5
+Self Phi Eliminated (byte) draw_window::x1#3
+Self Phi Eliminated (byte) draw_window::x2#3
+Self Phi Eliminated (byte) draw_window::y2#2
+Self Phi Eliminated (word) draw_window::q#2
+Self Phi Eliminated (byte) draw_window::y1#3
+Self Phi Eliminated (word) draw_window::z#5
+Self Phi Eliminated (byte) draw_window::x2#5
+Self Phi Eliminated (byte) draw_window::y3#3
+Self Phi Eliminated (byte) draw_window::y2#4
+Self Phi Eliminated (byte) draw_window::x1#8
+Successful SSA optimization Pass2SelfPhiElimination
+Identical Phi Values (byte) main::x#3 (byte) main::x#2
+Identical Phi Values (byte*) textbox::text#13 (byte*) textbox::text#4
+Identical Phi Values (byte) textbox::x#11 (byte) textbox::x#10
+Identical Phi Values (byte) textbox::x2#10 (byte) textbox::x2#12
+Identical Phi Values (byte) textbox::x1#11 (byte) textbox::x1#12
+Identical Phi Values (byte) textbox::i#10 (byte) textbox::i#2
+Identical Phi Values (byte) textbox::y#10 (byte) textbox::y#12
+Identical Phi Values (byte) textbox::y2#10 (byte) textbox::y2#11
+Identical Phi Values (word) textbox::z#6 (word) textbox::z#3
+Identical Phi Values (byte) draw_window::y1#1 (byte) draw_window::y1#0
+Identical Phi Values (byte) draw_window::y2#1 (byte) draw_window::y2#0
+Identical Phi Values (byte) draw_window::x1#1 (byte) draw_window::x1#0
+Identical Phi Values (byte) draw_window::x2#6 (byte) draw_window::x2#0
+Identical Phi Values (word) draw_window::z#3 (word) draw_window::z#0
+Identical Phi Values (word) draw_window::q#1 (word) draw_window::q#0
+Identical Phi Values (byte) draw_window::x2#1 (byte) draw_window::x2#6
+Identical Phi Values (byte) draw_window::x1#2 (byte) draw_window::x1#1
+Identical Phi Values (byte) draw_window::y1#2 (byte) draw_window::y1#1
+Identical Phi Values (byte) draw_window::y2#5 (byte) draw_window::y2#1
+Identical Phi Values (byte) draw_window::x1#3 (byte) draw_window::x1#2
+Identical Phi Values (byte) draw_window::x2#3 (byte) draw_window::x2#1
+Identical Phi Values (byte) draw_window::y2#2 (byte) draw_window::y2#5
+Identical Phi Values (word) draw_window::q#2 (word) draw_window::q#1
+Identical Phi Values (byte) draw_window::y1#3 (byte) draw_window::y1#2
+Identical Phi Values (word) draw_window::z#5 (word) draw_window::z#2
+Identical Phi Values (byte) draw_window::x2#5 (byte) draw_window::x2#7
+Identical Phi Values (byte) draw_window::y3#3 (byte) draw_window::y3#2
+Identical Phi Values (byte) draw_window::y2#4 (byte) draw_window::y2#8
+Identical Phi Values (byte) draw_window::x1#8 (byte) draw_window::x1#5
+Successful SSA optimization Pass2IdenticalPhiElimination
+Identical Phi Values (byte) textbox::i#3 (byte) textbox::i#2
+Identical Phi Values (byte) textbox::x2#11 (byte) textbox::x2#12
+Identical Phi Values (byte*) textbox::text#10 (byte*) textbox::text#4
+Identical Phi Values (byte) textbox::x1#10 (byte) textbox::x1#12
+Identical Phi Values (byte) textbox::y2#13 (byte) textbox::y2#11
+Successful SSA optimization Pass2IdenticalPhiElimination
+Simple Condition (bool~) main::$7 [19] if((word) main::wait#1<(word) $88b8) goto main::@2
+Simple Condition (bool~) main::$8 [23] if((byte) main::x#1<(byte) $f) goto main::@1
+Simple Condition (bool~) textbox::$10 [69] if(*((byte*) textbox::text#4 + (byte) textbox::i#2)!=(byte) $20) goto textbox::@5
+Simple Condition (bool~) textbox::$25 [75] if((byte) textbox::x#1!=(byte) textbox::x2#12) goto textbox::@17
+Simple Condition (bool~) textbox::$22 [101] if((byte) textbox::y#1!=(byte) textbox::y2#11) goto textbox::@16
+Simple Condition (bool~) textbox::$30 [107] if(*((byte*) textbox::text#4 + (byte) textbox::i#1)!=(byte) 0) goto textbox::@4
+Simple Condition (bool~) textbox::$28 [114] if((byte) textbox::y#2!=(byte) textbox::y2#11) goto textbox::@18
+Simple Condition (bool~) draw_window::$15 [132] if((byte) draw_window::x#1<(byte) draw_window::x2#0) goto draw_window::@2
+Simple Condition (bool~) draw_window::$20 [149] if((byte) draw_window::y#1<(byte) draw_window::y2#0) goto draw_window::@4
+Simple Condition (bool~) draw_window::$25 [175] if((byte) draw_window::x3#1<(byte) draw_window::x2#7) goto draw_window::@8
+Simple Condition (bool~) draw_window::$26 [179] if((byte) draw_window::y3#1<(byte) draw_window::y2#8) goto draw_window::@7
+Successful SSA optimization Pass2ConditionalJumpSimplification
+Rewriting ! if()-condition to reversed if() [61] (bool~) textbox::$7 ← ! (bool~) textbox::$6
+Successful SSA optimization Pass2ConditionalAndOrRewriting
+Rewriting || if()-condition to two if()s [60] (bool~) textbox::$6 ← (bool~) textbox::$4 || (bool~) textbox::$5
+Successful SSA optimization Pass2ConditionalAndOrRewriting
+Rewriting && if()-condition to two if()s [83] (bool~) textbox::$14 ← (bool~) textbox::$12 && (bool~) textbox::$13
+Successful SSA optimization Pass2ConditionalAndOrRewriting
+Rewriting ! if()-condition to reversed if() [94] (bool~) textbox::$20 ← ! (bool~) textbox::$19
+Successful SSA optimization Pass2ConditionalAndOrRewriting
+Rewriting && if()-condition to two if()s [93] (bool~) textbox::$19 ← (bool~) textbox::$16 && (bool~) textbox::$18
+Successful SSA optimization Pass2ConditionalAndOrRewriting
+Rewriting ! if()-condition to reversed if() [160] (bool~) draw_window::$11 ← ! (bool~) draw_window::$10
+Successful SSA optimization Pass2ConditionalAndOrRewriting
+Rewriting && if()-condition to two if()s [159] (bool~) draw_window::$10 ← (bool~) draw_window::$7 && (bool~) draw_window::$9
+Successful SSA optimization Pass2ConditionalAndOrRewriting
+Constant (const byte*) screen#0 = (byte*) 1024
+Constant (const byte[]) text#0 = $0
+Constant (const byte[]) text2#0 = $1
+Constant (const byte) main::x#0 = 0
+Constant (const word) main::wait#0 = 0
+Constant (const byte) textbox::x1#1 = 0
+Constant (const byte) textbox::y1#1 = $c
+Constant (const byte) textbox::x2#1 = $14
+Constant (const byte) textbox::y2#1 = $18
+Constant (const byte) textbox::x1#2 = 3
+Constant (const byte) textbox::y1#2 = 3
+Constant (const byte) textbox::x2#2 = $25
+Constant (const byte) textbox::y2#2 = 9
+Constant (const byte) textbox::x1#3 = $1e
+Constant (const byte) textbox::y1#3 = 8
+Constant (const byte) textbox::x2#3 = $27
+Constant (const byte) textbox::y2#3 = $18
+Constant (const byte) textbox::i#0 = 0
+Constant (const byte) textbox::c#0 = 0
+Successful SSA optimization Pass2ConstantIdentification
+Constant (const byte*) textbox::text#0 = text2#0
+Constant (const byte*) textbox::text#1 = text#0
+Constant (const byte*) textbox::text#2 = text#0
+Constant (const byte*) textbox::text#3 = text#0
+Successful SSA optimization Pass2ConstantIdentification
+if() condition always true - replacing block destination [42] if(true) goto main::@5
+Successful SSA optimization Pass2ConstantIfs
+De-inlining pointer[w] to *(pointer+w)   [66] *((const byte*) screen#0 + (word~) textbox::$8) ← *((byte*) textbox::text#4 + (byte) textbox::i#2)
+De-inlining pointer[w] to *(pointer+w)   [127] *((const byte*) screen#0 + (word~) draw_window::$13) ← (byte) $43
+De-inlining pointer[w] to *(pointer+w)   [129] *((const byte*) screen#0 + (word~) draw_window::$14) ← (byte) $43
+De-inlining pointer[w] to *(pointer+w)   [135] *((const byte*) screen#0 + (word~) draw_window::$2) ← (byte) $55
+De-inlining pointer[w] to *(pointer+w)   [137] *((const byte*) screen#0 + (word~) draw_window::$3) ← (byte) $49
+De-inlining pointer[w] to *(pointer+w)   [144] *((const byte*) screen#0 + (word~) draw_window::$18) ← (byte) $42
+De-inlining pointer[w] to *(pointer+w)   [146] *((const byte*) screen#0 + (word~) draw_window::$19) ← (byte) $42
+De-inlining pointer[w] to *(pointer+w)   [152] *((const byte*) screen#0 + (word~) draw_window::$4) ← (byte) $4a
+De-inlining pointer[w] to *(pointer+w)   [154] *((const byte*) screen#0 + (word~) draw_window::$5) ← (byte) $4b
+De-inlining pointer[w] to *(pointer+w)   [172] *((const byte*) screen#0 + (word~) draw_window::$24) ← (byte) $20
+Successful SSA optimization Pass2DeInlineWordDerefIdx
+Removing unused block main::@return
+Successful SSA optimization Pass2EliminateUnusedBlocks
+Self Phi Eliminated (byte*) textbox::text#4
+Self Phi Eliminated (byte) textbox::x2#12
+Self Phi Eliminated (byte) textbox::x1#12
+Self Phi Eliminated (byte) textbox::y2#11
+Self Phi Eliminated (byte) draw_window::x1#5
+Self Phi Eliminated (byte) draw_window::x2#7
+Self Phi Eliminated (byte) draw_window::y2#8
+Successful SSA optimization Pass2SelfPhiElimination
+Identical Phi Values (byte*) textbox::text#4 (byte*) textbox::text#12
+Identical Phi Values (byte) textbox::x2#12 (byte) textbox::x2#4
+Identical Phi Values (byte) textbox::x1#12 (byte) textbox::x1#4
+Identical Phi Values (byte) textbox::y2#11 (byte) textbox::y2#4
+Identical Phi Values (byte) draw_window::x1#5 (byte) draw_window::x1#0
+Identical Phi Values (byte) draw_window::x2#7 (byte) draw_window::x2#0
+Identical Phi Values (byte) draw_window::y2#8 (byte) draw_window::y2#0
+Successful SSA optimization Pass2IdenticalPhiElimination
+Simple Condition (bool~) textbox::$4 [26] if((byte) textbox::x#0==(byte) textbox::x2#4) goto textbox::@return
+Simple Condition (bool~) textbox::$12 [41] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)!=(byte) $20) goto textbox::@26
+Simple Condition (bool~) textbox::$16 [48] if((byte~) textbox::$15>=(byte) textbox::x2#4) goto textbox::@27
+Simple Condition (bool~) draw_window::$7 [97] if((byte~) draw_window::$6>(byte) 1) goto draw_window::@11
+Simple Condition (bool~) textbox::$5 [112] if((byte) textbox::y#0==(byte) textbox::y2#4) goto textbox::@return
+Simple Condition (bool~) textbox::$13 [113] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)!=(byte) 0) goto textbox::@7
+Simple Condition (bool~) textbox::$18 [114] if((byte) textbox::c#2<(byte~) textbox::$17) goto textbox::@12
+Simple Condition (bool~) draw_window::$9 [115] if((byte~) draw_window::$8>(byte) 1) goto draw_window::@6
+Successful SSA optimization Pass2ConditionalJumpSimplification
+Negating conditional jump and destination [41] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)==(byte) $20) goto textbox::@8
+Negating conditional jump and destination [48] if((byte~) textbox::$15<(byte) textbox::x2#4) goto textbox::@5
+Negating conditional jump and destination [97] if((byte~) draw_window::$6<=(byte) 1) goto draw_window::@return
+Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
+Rewriting conditional comparison [97] if((byte~) draw_window::$6<=(byte) 1) goto draw_window::@return
+Rewriting conditional comparison [115] if((byte~) draw_window::$8>(byte) 1) goto draw_window::@6
+Adding number conversion cast (unumber) 1+1 in if((byte~) draw_window::$6<(byte) 1+(number) 1) goto draw_window::@return
+Adding number conversion cast (unumber) 1 in if((byte~) draw_window::$6<(unumber)(byte) 1+(number) 1) goto draw_window::@return
+Adding number conversion cast (unumber) 1+1 in if((byte~) draw_window::$8>=(byte) 1+(number) 1) goto draw_window::@6
+Adding number conversion cast (unumber) 1 in if((byte~) draw_window::$8>=(unumber)(byte) 1+(number) 1) goto draw_window::@6
+Successful SSA optimization PassNAddNumberTypeConversions
+Simplifying constant integer cast (byte) 1+(unumber)(number) 1
+Simplifying constant integer cast 1
+Simplifying constant integer cast (byte) 1+(unumber)(number) 1
+Simplifying constant integer cast 1
+Successful SSA optimization PassNCastSimplification
+Finalized unsigned number type (byte) 1
+Finalized unsigned number type (byte) 1
+Successful SSA optimization PassNFinalizeNumberTypeConversions
+Rewriting multiplication to use shift and addition[23] (word) textbox::z#0 ← (byte) textbox::y#0 * (byte) $28
+Rewriting multiplication to use shift and addition[45] (word) textbox::z#1 ← (byte) textbox::y#1 * (byte) $28
+Rewriting multiplication to use shift and addition[51] (word) textbox::z#2 ← (byte) textbox::y#2 * (byte) $28
+Rewriting multiplication to use shift and addition[52] (word) draw_window::z#0 ← (byte) draw_window::y1#0 * (byte) $28
+Rewriting multiplication to use shift and addition[53] (word) draw_window::q#0 ← (byte) draw_window::y2#0 * (byte) $28
+Rewriting multiplication to use shift and addition[72] (word) draw_window::z#1 ← (byte) draw_window::y#2 * (byte) $28
+Rewriting multiplication to use shift and addition[92] (word) draw_window::z#2 ← (byte) draw_window::y3#2 * (byte) $28
+Inlining constant with var siblings (const byte) main::x#0
+Inlining constant with var siblings (const word) main::wait#0
+Inlining constant with var siblings (const byte) textbox::x1#1
+Inlining constant with var siblings (const byte) textbox::y1#1
+Inlining constant with var siblings (const byte) textbox::x2#1
+Inlining constant with var siblings (const byte) textbox::y2#1
+Inlining constant with var siblings (const byte) textbox::x1#2
+Inlining constant with var siblings (const byte) textbox::y1#2
+Inlining constant with var siblings (const byte) textbox::x2#2
+Inlining constant with var siblings (const byte) textbox::y2#2
+Inlining constant with var siblings (const byte) textbox::x1#3
+Inlining constant with var siblings (const byte) textbox::y1#3
+Inlining constant with var siblings (const byte) textbox::x2#3
+Inlining constant with var siblings (const byte) textbox::y2#3
+Inlining constant with var siblings (const byte) textbox::i#0
+Inlining constant with var siblings (const byte) textbox::c#0
+Inlining constant with var siblings (const byte*) textbox::text#0
+Inlining constant with var siblings (const byte*) textbox::text#1
+Inlining constant with var siblings (const byte*) textbox::text#2
+Inlining constant with var siblings (const byte*) textbox::text#3
+Constant inlined main::wait#0 = (byte) 0
+Constant inlined main::x#0 = (byte) 0
+Constant inlined textbox::text#2 = (const byte[]) text#0
+Constant inlined $0 = (const byte[]) text#0
+Constant inlined textbox::text#3 = (const byte[]) text#0
+Constant inlined $1 = (const byte[]) text2#0
+Constant inlined textbox::text#0 = (const byte[]) text2#0
+Constant inlined textbox::text#1 = (const byte[]) text#0
+Constant inlined textbox::c#0 = (byte) 0
+Constant inlined textbox::x2#1 = (byte) $14
+Constant inlined textbox::x1#2 = (byte) 3
+Constant inlined textbox::y2#3 = (byte) $18
+Constant inlined textbox::x2#2 = (byte) $25
+Constant inlined textbox::y2#2 = (byte) 9
+Constant inlined textbox::x1#3 = (byte) $1e
+Constant inlined textbox::y1#3 = (byte) 8
+Constant inlined textbox::y2#1 = (byte) $18
+Constant inlined textbox::y1#2 = (byte) 3
+Constant inlined textbox::x1#1 = (byte) 0
+Constant inlined textbox::y1#1 = (byte) $c
+Constant inlined textbox::x2#3 = (byte) $27
+Constant inlined textbox::i#0 = (byte) 0
+Successful SSA optimization Pass2ConstantInlining
+Alias (word) textbox::z#0 = (byte) textbox::$34 
+Alias (word) textbox::z#1 = (byte) textbox::$37 
+Alias (word) textbox::z#2 = (byte) textbox::$40 
+Alias (word) draw_window::z#0 = (byte) draw_window::$38 
+Alias (word) draw_window::q#0 = (byte) draw_window::$41 
+Alias (word) draw_window::z#1 = (byte) draw_window::$44 
+Alias (word) draw_window::z#2 = (byte) draw_window::$47 
+Successful SSA optimization Pass2AliasElimination
+Added new block during phi lifting main::@11(between main::@3 and main::@1)
+Added new block during phi lifting main::@12(between main::@2 and main::@2)
+Added new block during phi lifting textbox::@28(between textbox::@17 and textbox::@4)
+Added new block during phi lifting textbox::@29(between textbox::@25 and textbox::@4)
+Fixing phi predecessor for textbox::i#2 to new block ( textbox::@25 -> textbox::@29 ) during phi lifting.
+Added new block during phi lifting textbox::@30(between textbox::@4 and textbox::@5)
+Added new block during phi lifting textbox::@31(between textbox::@8 and textbox::@5)
+Added new block during phi lifting textbox::@32(between textbox::@5 and textbox::@17)
+Added new block during phi lifting draw_window::@12(between draw_window::@2 and draw_window::@2)
+Added new block during phi lifting draw_window::@13(between draw_window::@4 and draw_window::@4)
+Added new block during phi lifting draw_window::@14(between draw_window::@9 and draw_window::@7)
+Added new block during phi lifting draw_window::@15(between draw_window::@8 and draw_window::@8)
+Adding NOP phi() at start of @begin
+Adding NOP phi() at start of @4
+Adding NOP phi() at start of @7
+Adding NOP phi() at start of @8
+Adding NOP phi() at start of @end
+Adding NOP phi() at start of main
+Adding NOP phi() at start of main::@7
+Adding NOP phi() at start of main::@4
+Adding NOP phi() at start of main::@8
+Adding NOP phi() at start of main::@9
+Adding NOP phi() at start of main::@10
+Adding NOP phi() at start of main::@5
+CALL GRAPH
+Calls in [] to main:3 
+Calls in [main] to textbox:17 textbox:25 textbox:27 textbox:29 
+Calls in [textbox] to draw_window:39 
+
+Created 23 initial phi equivalence classes
+Coalesced [13] textbox::x1#17 ← textbox::x1#0
+Coalesced [14] textbox::y1#6 ← textbox::y1#0
+Coalesced [15] textbox::x2#17 ← textbox::x2#0
+Coalesced [16] textbox::y2#17 ← textbox::y2#0
+Coalesced [32] main::x#6 ← main::x#1
+Coalesced [33] main::wait#3 ← main::wait#1
+Coalesced [47] textbox::z#11 ← textbox::z#0
+Coalesced [48] textbox::x#14 ← textbox::x#0
+Coalesced [49] textbox::y#15 ← textbox::y#0
+Coalesced [56] textbox::ls#4 ← textbox::ls#0
+Coalesced [75] textbox::z#15 ← textbox::z#2
+Coalesced [76] textbox::x#18 ← textbox::x#12
+Coalesced [77] textbox::y#19 ← textbox::y#2
+Coalesced [80] textbox::z#10 ← textbox::z#4
+Coalesced [81] textbox::x#13 ← textbox::x#7
+Coalesced [82] textbox::i#13 ← textbox::i#1
+Coalesced [83] textbox::y#14 ← textbox::y#11
+Coalesced [84] textbox::z#16 ← textbox::z#5
+Coalesced [85] textbox::x#19 ← textbox::x#1
+Coalesced [86] textbox::y#20 ← textbox::y#5
+Not coalescing [92] textbox::x#15 ← textbox::x1#4
+Coalesced [93] textbox::y#16 ← textbox::y#1
+Coalesced [94] textbox::z#12 ← textbox::z#1
+Coalesced [95] textbox::x#17 ← textbox::x#10
+Coalesced (already) [96] textbox::y#18 ← textbox::y#12
+Coalesced (already) [97] textbox::z#14 ← textbox::z#3
+Coalesced [100] textbox::ls#5 ← textbox::ls#1
+Coalesced [101] textbox::c#5 ← textbox::c#1
+Coalesced (already) [102] textbox::x#16 ← textbox::x#10
+Coalesced (already) [103] textbox::y#17 ← textbox::y#12
+Coalesced (already) [104] textbox::z#13 ← textbox::z#3
+Coalesced [112] draw_window::x#3 ← draw_window::x#0
+Coalesced [129] draw_window::y#3 ← draw_window::y#0
+Coalesced [154] draw_window::y3#5 ← draw_window::y3#0
+Coalesced [160] draw_window::x3#3 ← draw_window::x3#0
+Coalesced [169] draw_window::y3#6 ← draw_window::y3#1
+Coalesced [170] draw_window::x3#4 ← draw_window::x3#1
+Coalesced [171] draw_window::y#4 ← draw_window::y#1
+Coalesced [172] draw_window::x#4 ← draw_window::x#1
+Coalesced down to 17 phi equivalence classes
+Culled Empty Block (label) @4
+Culled Empty Block (label) @8
+Culled Empty Block (label) main::@7
+Culled Empty Block (label) main::@10
+Culled Empty Block (label) main::@11
+Culled Empty Block (label) main::@12
+Culled Empty Block (label) textbox::@29
+Culled Empty Block (label) textbox::@28
+Culled Empty Block (label) textbox::@32
+Culled Empty Block (label) textbox::@31
+Culled Empty Block (label) textbox::@30
+Culled Empty Block (label) draw_window::@14
+Culled Empty Block (label) draw_window::@15
+Culled Empty Block (label) draw_window::@13
+Culled Empty Block (label) draw_window::@12
+Renumbering block @7 to @1
+Renumbering block main::@8 to main::@6
+Renumbering block main::@9 to main::@7
+Renumbering block textbox::@4 to textbox::@1
+Renumbering block textbox::@5 to textbox::@2
+Renumbering block textbox::@6 to textbox::@3
+Renumbering block textbox::@7 to textbox::@4
+Renumbering block textbox::@8 to textbox::@5
+Renumbering block textbox::@12 to textbox::@6
+Renumbering block textbox::@16 to textbox::@7
+Renumbering block textbox::@17 to textbox::@8
+Renumbering block textbox::@18 to textbox::@9
+Renumbering block textbox::@19 to textbox::@10
+Renumbering block textbox::@20 to textbox::@11
+Renumbering block textbox::@24 to textbox::@12
+Renumbering block textbox::@25 to textbox::@13
+Renumbering block textbox::@26 to textbox::@14
+Renumbering block textbox::@27 to textbox::@15
+Renumbering block draw_window::@2 to draw_window::@1
+Renumbering block draw_window::@3 to draw_window::@2
+Renumbering block draw_window::@4 to draw_window::@3
+Renumbering block draw_window::@5 to draw_window::@4
+Renumbering block draw_window::@6 to draw_window::@5
+Renumbering block draw_window::@7 to draw_window::@6
+Renumbering block draw_window::@8 to draw_window::@7
+Renumbering block draw_window::@9 to draw_window::@8
+Renumbering block draw_window::@11 to draw_window::@9
+Adding NOP phi() at start of @begin
+Adding NOP phi() at start of @1
+Adding NOP phi() at start of @end
+Adding NOP phi() at start of main
+Adding NOP phi() at start of main::@4
+Adding NOP phi() at start of main::@6
+Adding NOP phi() at start of main::@7
+Adding NOP phi() at start of main::@5
+
+FINAL CONTROL FLOW GRAPH
+@begin: scope:[]  from
+  [0] phi()
+  to:@1
+@1: scope:[]  from @begin
+  [1] phi()
+  [2] call main 
+  to:@end
+@end: scope:[]  from @1
+  [3] phi()
+main: scope:[main]  from @1
+  [4] phi()
+  to:main::@1
+main::@1: scope:[main]  from main main::@3
+  [5] (byte) main::x#2 ← phi( main/(byte) 0 main::@3/(byte) main::x#1 )
+  [6] (byte~) main::$3 ← (byte) main::x#2 + (byte) main::x#2
+  [7] (byte) textbox::x2#0 ← (byte~) main::$3 + (byte) 1
+  [8] (byte) textbox::y2#0 ← (byte) main::x#2 + (byte) $a
+  [9] (byte) textbox::x1#0 ← (byte) main::x#2
+  [10] (byte) textbox::y1#0 ← (byte) main::x#2
+  [11] call textbox 
+  to:main::@2
+main::@2: scope:[main]  from main::@1 main::@2
+  [12] (word) main::wait#2 ← phi( main::@2/(word) main::wait#1 main::@1/(byte) 0 )
+  [13] (word) main::wait#1 ← ++ (word) main::wait#2
+  [14] if((word) main::wait#1<(word) $88b8) goto main::@2
+  to:main::@3
+main::@3: scope:[main]  from main::@2
+  [15] (byte) main::x#1 ← (byte) main::x#2 + (byte) 2
+  [16] if((byte) main::x#1<(byte) $f) goto main::@1
+  to:main::@4
+main::@4: scope:[main]  from main::@3
+  [17] phi()
+  [18] call textbox 
+  to:main::@6
+main::@6: scope:[main]  from main::@4
+  [19] phi()
+  [20] call textbox 
+  to:main::@7
+main::@7: scope:[main]  from main::@6
+  [21] phi()
+  [22] call textbox 
+  to:main::@5
+main::@5: scope:[main]  from main::@5 main::@7
+  [23] phi()
+  to:main::@5
+textbox: scope:[textbox]  from main::@1 main::@4 main::@6 main::@7
+  [24] (byte*) textbox::text#12 ← phi( main::@1/(const byte[]) text2#0 main::@4/(const byte[]) text#0 main::@6/(const byte[]) text#0 main::@7/(const byte[]) text#0 )
+  [24] (byte) textbox::y2#4 ← phi( main::@1/(byte) textbox::y2#0 main::@4/(byte) $18 main::@6/(byte) 9 main::@7/(byte) $18 )
+  [24] (byte) textbox::x2#4 ← phi( main::@1/(byte) textbox::x2#0 main::@4/(byte) $14 main::@6/(byte) $25 main::@7/(byte) $27 )
+  [24] (byte) textbox::y1#4 ← phi( main::@1/(byte) textbox::y1#0 main::@4/(byte) $c main::@6/(byte) 3 main::@7/(byte) 8 )
+  [24] (byte) textbox::x1#4 ← phi( main::@1/(byte) textbox::x1#0 main::@4/(byte) 0 main::@6/(byte) 3 main::@7/(byte) $1e )
+  [25] (byte) draw_window::x1#0 ← (byte) textbox::x1#4
+  [26] (byte) draw_window::y1#0 ← (byte) textbox::y1#4
+  [27] (byte) draw_window::x2#0 ← (byte) textbox::x2#4
+  [28] (byte) draw_window::y2#0 ← (byte) textbox::y2#4
+  [29] call draw_window 
+  to:textbox::@12
+textbox::@12: scope:[textbox]  from textbox
+  [30] (byte) textbox::y#0 ← (byte) textbox::y1#4 + (byte) 1
+  [31] (byte) textbox::x#0 ← (byte) textbox::x1#4 + (byte) 1
+  [32] (byte) textbox::$32 ← (byte) textbox::y#0 << (byte) 2
+  [33] (byte) textbox::$33 ← (byte) textbox::$32 + (byte) textbox::y#0
+  [34] (word) textbox::z#0 ← (byte) textbox::$33 << (byte) 3
+  [35] if((byte) textbox::x#0==(byte) textbox::x2#4) goto textbox::@return
+  to:textbox::@13
+textbox::@13: scope:[textbox]  from textbox::@12
+  [36] if((byte) textbox::y#0==(byte) textbox::y2#4) goto textbox::@return
+  to:textbox::@1
+textbox::@1: scope:[textbox]  from textbox::@13 textbox::@8
+  [37] (byte) textbox::y#12 ← phi( textbox::@8/(byte) textbox::y#11 textbox::@13/(byte) textbox::y#0 )
+  [37] (byte) textbox::i#2 ← phi( textbox::@8/(byte) textbox::i#1 textbox::@13/(byte) 0 )
+  [37] (byte) textbox::x#10 ← phi( textbox::@8/(byte) textbox::x#7 textbox::@13/(byte) textbox::x#0 )
+  [37] (word) textbox::z#3 ← phi( textbox::@8/(word) textbox::z#4 textbox::@13/(word) textbox::z#0 )
+  [38] (word~) textbox::$8 ← (word) textbox::z#3 + (byte) textbox::x#10
+  [39] (byte*~) textbox::$31 ← (const byte*) screen#0 + (word~) textbox::$8
+  [40] *((byte*~) textbox::$31) ← *((byte*) textbox::text#12 + (byte) textbox::i#2)
+  [41] if(*((byte*) textbox::text#12 + (byte) textbox::i#2)!=(byte) $20) goto textbox::@2
+  to:textbox::@10
+textbox::@10: scope:[textbox]  from textbox::@1
+  [42] (byte) textbox::ls#0 ← (byte) textbox::i#2 + (byte) 1
+  to:textbox::@3
+textbox::@3: scope:[textbox]  from textbox::@10 textbox::@4
+  [43] (byte) textbox::c#2 ← phi( textbox::@10/(byte) 0 textbox::@4/(byte) textbox::c#1 )
+  [43] (byte) textbox::ls#2 ← phi( textbox::@10/(byte) textbox::ls#0 textbox::@4/(byte) textbox::ls#1 )
+  [44] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)==(byte) $20) goto textbox::@5
+  to:textbox::@14
+textbox::@14: scope:[textbox]  from textbox::@3
+  [45] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)!=(byte) 0) goto textbox::@4
+  to:textbox::@5
+textbox::@5: scope:[textbox]  from textbox::@14 textbox::@3
+  [46] (byte~) textbox::$15 ← (byte) textbox::c#2 + (byte) textbox::x#10
+  [47] (byte~) textbox::$17 ← (byte) textbox::x2#4 - (byte) textbox::x1#4
+  [48] if((byte~) textbox::$15<(byte) textbox::x2#4) goto textbox::@2
+  to:textbox::@15
+textbox::@15: scope:[textbox]  from textbox::@5
+  [49] if((byte) textbox::c#2<(byte~) textbox::$17) goto textbox::@6
+  to:textbox::@2
+textbox::@2: scope:[textbox]  from textbox::@1 textbox::@15 textbox::@5 textbox::@7
+  [50] (word) textbox::z#5 ← phi( textbox::@7/(word) textbox::z#1 textbox::@1/(word) textbox::z#3 textbox::@5/(word) textbox::z#3 )
+  [50] (byte) textbox::y#5 ← phi( textbox::@7/(byte) textbox::y#1 textbox::@1/(byte) textbox::y#12 textbox::@5/(byte) textbox::y#12 )
+  [50] (byte) textbox::x#5 ← phi( textbox::@7/(byte~) textbox::x#15 textbox::@1/(byte) textbox::x#10 textbox::@5/(byte) textbox::x#10 )
+  [51] (byte) textbox::i#1 ← ++ (byte) textbox::i#2
+  [52] (byte) textbox::x#1 ← ++ (byte) textbox::x#5
+  [53] if((byte) textbox::x#1!=(byte) textbox::x2#4) goto textbox::@8
+  to:textbox::@11
+textbox::@11: scope:[textbox]  from textbox::@2
+  [54] (byte) textbox::x#12 ← (byte) textbox::x1#4 + (byte) 1
+  [55] (byte) textbox::y#2 ← ++ (byte) textbox::y#5
+  [56] if((byte) textbox::y#2!=(byte) textbox::y2#4) goto textbox::@9
+  to:textbox::@return
+textbox::@return: scope:[textbox]  from textbox::@11 textbox::@12 textbox::@13 textbox::@6 textbox::@8
+  [57] return 
+  to:@return
+textbox::@9: scope:[textbox]  from textbox::@11
+  [58] (byte) textbox::$38 ← (byte) textbox::y#2 << (byte) 2
+  [59] (byte) textbox::$39 ← (byte) textbox::$38 + (byte) textbox::y#2
+  [60] (word) textbox::z#2 ← (byte) textbox::$39 << (byte) 3
+  to:textbox::@8
+textbox::@8: scope:[textbox]  from textbox::@2 textbox::@9
+  [61] (byte) textbox::y#11 ← phi( textbox::@9/(byte) textbox::y#2 textbox::@2/(byte) textbox::y#5 )
+  [61] (byte) textbox::x#7 ← phi( textbox::@9/(byte) textbox::x#12 textbox::@2/(byte) textbox::x#1 )
+  [61] (word) textbox::z#4 ← phi( textbox::@9/(word) textbox::z#2 textbox::@2/(word) textbox::z#5 )
+  [62] if(*((byte*) textbox::text#12 + (byte) textbox::i#1)!=(byte) 0) goto textbox::@1
+  to:textbox::@return
+textbox::@6: scope:[textbox]  from textbox::@15
+  [63] (byte) textbox::y#1 ← ++ (byte) textbox::y#12
+  [64] if((byte) textbox::y#1!=(byte) textbox::y2#4) goto textbox::@7
+  to:textbox::@return
+textbox::@7: scope:[textbox]  from textbox::@6
+  [65] (byte) textbox::$35 ← (byte) textbox::y#1 << (byte) 2
+  [66] (byte) textbox::$36 ← (byte) textbox::$35 + (byte) textbox::y#1
+  [67] (word) textbox::z#1 ← (byte) textbox::$36 << (byte) 3
+  [68] (byte~) textbox::x#15 ← (byte) textbox::x1#4
+  to:textbox::@2
+textbox::@4: scope:[textbox]  from textbox::@14
+  [69] (byte) textbox::ls#1 ← ++ (byte) textbox::ls#2
+  [70] (byte) textbox::c#1 ← ++ (byte) textbox::c#2
+  to:textbox::@3
+draw_window: scope:[draw_window]  from textbox
+  [71] (byte) draw_window::$36 ← (byte) draw_window::y1#0 << (byte) 2
+  [72] (byte) draw_window::$37 ← (byte) draw_window::$36 + (byte) draw_window::y1#0
+  [73] (word) draw_window::z#0 ← (byte) draw_window::$37 << (byte) 3
+  [74] (byte) draw_window::$39 ← (byte) draw_window::y2#0 << (byte) 2
+  [75] (byte) draw_window::$40 ← (byte) draw_window::$39 + (byte) draw_window::y2#0
+  [76] (word) draw_window::q#0 ← (byte) draw_window::$40 << (byte) 3
+  [77] (byte) draw_window::x#0 ← (byte) draw_window::x1#0 + (byte) 1
+  to:draw_window::@1
+draw_window::@1: scope:[draw_window]  from draw_window draw_window::@1
+  [78] (byte) draw_window::x#2 ← phi( draw_window/(byte) draw_window::x#0 draw_window::@1/(byte) draw_window::x#1 )
+  [79] (word~) draw_window::$13 ← (word) draw_window::z#0 + (byte) draw_window::x#2
+  [80] (byte*~) draw_window::$27 ← (const byte*) screen#0 + (word~) draw_window::$13
+  [81] *((byte*~) draw_window::$27) ← (byte) $43
+  [82] (word~) draw_window::$14 ← (word) draw_window::q#0 + (byte) draw_window::x#2
+  [83] (byte*~) draw_window::$28 ← (const byte*) screen#0 + (word~) draw_window::$14
+  [84] *((byte*~) draw_window::$28) ← (byte) $43
+  [85] (byte) draw_window::x#1 ← ++ (byte) draw_window::x#2
+  [86] if((byte) draw_window::x#1<(byte) draw_window::x2#0) goto draw_window::@1
+  to:draw_window::@2
+draw_window::@2: scope:[draw_window]  from draw_window::@1
+  [87] (word~) draw_window::$2 ← (word) draw_window::z#0 + (byte) draw_window::x1#0
+  [88] (byte*~) draw_window::$29 ← (const byte*) screen#0 + (word~) draw_window::$2
+  [89] *((byte*~) draw_window::$29) ← (byte) $55
+  [90] (word~) draw_window::$3 ← (word) draw_window::z#0 + (byte) draw_window::x2#0
+  [91] (byte*~) draw_window::$30 ← (const byte*) screen#0 + (word~) draw_window::$3
+  [92] *((byte*~) draw_window::$30) ← (byte) $49
+  [93] (byte) draw_window::y#0 ← (byte) draw_window::y1#0 + (byte) 1
+  to:draw_window::@3
+draw_window::@3: scope:[draw_window]  from draw_window::@2 draw_window::@3
+  [94] (byte) draw_window::y#2 ← phi( draw_window::@2/(byte) draw_window::y#0 draw_window::@3/(byte) draw_window::y#1 )
+  [95] (byte) draw_window::$42 ← (byte) draw_window::y#2 << (byte) 2
+  [96] (byte) draw_window::$43 ← (byte) draw_window::$42 + (byte) draw_window::y#2
+  [97] (word) draw_window::z#1 ← (byte) draw_window::$43 << (byte) 3
+  [98] (word~) draw_window::$18 ← (word) draw_window::z#1 + (byte) draw_window::x1#0
+  [99] (byte*~) draw_window::$31 ← (const byte*) screen#0 + (word~) draw_window::$18
+  [100] *((byte*~) draw_window::$31) ← (byte) $42
+  [101] (word~) draw_window::$19 ← (word) draw_window::z#1 + (byte) draw_window::x2#0
+  [102] (byte*~) draw_window::$32 ← (const byte*) screen#0 + (word~) draw_window::$19
+  [103] *((byte*~) draw_window::$32) ← (byte) $42
+  [104] (byte) draw_window::y#1 ← ++ (byte) draw_window::y#2
+  [105] if((byte) draw_window::y#1<(byte) draw_window::y2#0) goto draw_window::@3
+  to:draw_window::@4
+draw_window::@4: scope:[draw_window]  from draw_window::@3
+  [106] (word~) draw_window::$4 ← (word) draw_window::q#0 + (byte) draw_window::x1#0
+  [107] (byte*~) draw_window::$33 ← (const byte*) screen#0 + (word~) draw_window::$4
+  [108] *((byte*~) draw_window::$33) ← (byte) $4a
+  [109] (word~) draw_window::$5 ← (word) draw_window::q#0 + (byte) draw_window::x2#0
+  [110] (byte*~) draw_window::$34 ← (const byte*) screen#0 + (word~) draw_window::$5
+  [111] *((byte*~) draw_window::$34) ← (byte) $4b
+  [112] (byte~) draw_window::$6 ← (byte) draw_window::x2#0 - (byte) draw_window::x1#0
+  [113] (byte~) draw_window::$8 ← (byte) draw_window::y2#0 - (byte) draw_window::y1#0
+  [114] if((byte~) draw_window::$6<(byte) 1+(byte) 1) goto draw_window::@return
+  to:draw_window::@9
+draw_window::@9: scope:[draw_window]  from draw_window::@4
+  [115] if((byte~) draw_window::$8>=(byte) 1+(byte) 1) goto draw_window::@5
+  to:draw_window::@return
+draw_window::@return: scope:[draw_window]  from draw_window::@4 draw_window::@8 draw_window::@9
+  [116] return 
+  to:@return
+draw_window::@5: scope:[draw_window]  from draw_window::@9
+  [117] (byte) draw_window::y3#0 ← (byte) draw_window::y1#0 + (byte) 1
+  to:draw_window::@6
+draw_window::@6: scope:[draw_window]  from draw_window::@5 draw_window::@8
+  [118] (byte) draw_window::y3#2 ← phi( draw_window::@5/(byte) draw_window::y3#0 draw_window::@8/(byte) draw_window::y3#1 )
+  [119] (byte) draw_window::$45 ← (byte) draw_window::y3#2 << (byte) 2
+  [120] (byte) draw_window::$46 ← (byte) draw_window::$45 + (byte) draw_window::y3#2
+  [121] (word) draw_window::z#2 ← (byte) draw_window::$46 << (byte) 3
+  [122] (byte) draw_window::x3#0 ← (byte) draw_window::x1#0 + (byte) 1
+  to:draw_window::@7
+draw_window::@7: scope:[draw_window]  from draw_window::@6 draw_window::@7
+  [123] (byte) draw_window::x3#2 ← phi( draw_window::@6/(byte) draw_window::x3#0 draw_window::@7/(byte) draw_window::x3#1 )
+  [124] (word~) draw_window::$24 ← (word) draw_window::z#2 + (byte) draw_window::x3#2
+  [125] (byte*~) draw_window::$35 ← (const byte*) screen#0 + (word~) draw_window::$24
+  [126] *((byte*~) draw_window::$35) ← (byte) $20
+  [127] (byte) draw_window::x3#1 ← ++ (byte) draw_window::x3#2
+  [128] if((byte) draw_window::x3#1<(byte) draw_window::x2#0) goto draw_window::@7
+  to:draw_window::@8
+draw_window::@8: scope:[draw_window]  from draw_window::@7
+  [129] (byte) draw_window::y3#1 ← ++ (byte) draw_window::y3#2
+  [130] if((byte) draw_window::y3#1<(byte) draw_window::y2#0) goto draw_window::@6
+  to:draw_window::@return
+
+
+VARIABLE REGISTER WEIGHTS
+(void()) draw_window((byte) draw_window::x1 , (byte) draw_window::y1 , (byte) draw_window::x2 , (byte) draw_window::y2)
+(word~) draw_window::$13 202.0
+(word~) draw_window::$14 202.0
+(word~) draw_window::$18 202.0
+(word~) draw_window::$19 202.0
+(word~) draw_window::$2 4.0
+(word~) draw_window::$24 2002.0
+(byte*~) draw_window::$27 202.0
+(byte*~) draw_window::$28 202.0
+(byte*~) draw_window::$29 4.0
+(word~) draw_window::$3 4.0
+(byte*~) draw_window::$30 4.0
+(byte*~) draw_window::$31 202.0
+(byte*~) draw_window::$32 202.0
+(byte*~) draw_window::$33 4.0
+(byte*~) draw_window::$34 4.0
+(byte*~) draw_window::$35 2002.0
+(byte) draw_window::$36 4.0
+(byte) draw_window::$37 4.0
+(byte) draw_window::$39 4.0
+(word~) draw_window::$4 4.0
+(byte) draw_window::$40 4.0
+(byte) draw_window::$42 202.0
+(byte) draw_window::$43 202.0
+(byte) draw_window::$45 202.0
+(byte) draw_window::$46 202.0
+(word~) draw_window::$5 4.0
+(byte~) draw_window::$6 2.0
+(byte~) draw_window::$8 2.0
+(word) draw_window::q
+(word) draw_window::q#0 3.242424242424242
+(byte) draw_window::x
+(byte) draw_window::x#0 4.0
+(byte) draw_window::x#1 151.5
+(byte) draw_window::x#2 58.00000000000001
+(byte) draw_window::x1
+(byte) draw_window::x1#0 3.365079365079365
+(byte) draw_window::x2
+(byte) draw_window::x2#0 19.852459016393443
+(byte) draw_window::x3
+(byte) draw_window::x3#0 202.0
+(byte) draw_window::x3#1 1501.5
+(byte) draw_window::x3#2 776.0
+(byte) draw_window::y
+(byte) draw_window::y#0 4.0
+(byte) draw_window::y#1 151.5
+(byte) draw_window::y#2 40.6
+(byte) draw_window::y1
+(byte) draw_window::y1#0 0.24999999999999997
+(byte) draw_window::y2
+(byte) draw_window::y2#0 3.5
+(byte) draw_window::y3
+(byte) draw_window::y3#0 4.0
+(byte) draw_window::y3#1 151.5
+(byte) draw_window::y3#2 36.90909090909091
+(word) draw_window::z
+(word) draw_window::z#0 6.2941176470588225
+(word) draw_window::z#1 75.75
+(word) draw_window::z#2 137.75
+(void()) main()
+(byte~) main::$3 22.0
+(word) main::wait
+(word) main::wait#1 151.5
+(word) main::wait#2 202.0
+(byte) main::x
+(byte) main::x#1 16.5
+(byte) main::x#2 7.699999999999999
+(byte*) screen
+(byte[]) text
+(byte[]) text2
+(void()) textbox((byte) textbox::x1 , (byte) textbox::y1 , (byte) textbox::x2 , (byte) textbox::y2 , (byte*) textbox::text)
+(byte~) textbox::$15 101.0
+(byte~) textbox::$17 101.0
+(byte*~) textbox::$31 202.0
+(byte) textbox::$32 4.0
+(byte) textbox::$33 4.0
+(byte) textbox::$35 202.0
+(byte) textbox::$36 202.0
+(byte) textbox::$38 202.0
+(byte) textbox::$39 202.0
+(word~) textbox::$8 202.0
+(byte) textbox::c
+(byte) textbox::c#1 2002.0
+(byte) textbox::c#2 314.85714285714283
+(byte) textbox::i
+(byte) textbox::i#1 27.545454545454547
+(byte) textbox::i#2 22.954545454545453
+(byte) textbox::ls
+(byte) textbox::ls#0 202.0
+(byte) textbox::ls#1 1001.0
+(byte) textbox::ls#2 1368.3333333333335
+(byte*) textbox::text
+(byte*) textbox::text#12 50.108695652173914
+(byte) textbox::x
+(byte) textbox::x#0 1.0
+(byte) textbox::x#1 151.5
+(byte) textbox::x#10 36.214285714285715
+(byte) textbox::x#12 33.666666666666664
+(byte~) textbox::x#15 202.0
+(byte) textbox::x#5 202.0
+(byte) textbox::x#7 151.5
+(byte) textbox::x1
+(byte) textbox::x1#0 11.0
+(byte) textbox::x1#4 6.913043478260869
+(byte) textbox::x2
+(byte) textbox::x2#0 5.5
+(byte) textbox::x2#4 6.913043478260869
+(byte) textbox::y
+(byte) textbox::y#0 1.4285714285714284
+(byte) textbox::y#1 84.16666666666666
+(byte) textbox::y#11 151.5
+(byte) textbox::y#12 27.06666666666667
+(byte) textbox::y#2 101.0
+(byte) textbox::y#5 101.0
+(byte) textbox::y1
+(byte) textbox::y1#0 22.0
+(byte) textbox::y1#4 2.5
+(byte) textbox::y2
+(byte) textbox::y2#0 7.333333333333333
+(byte) textbox::y2#4 4.717391304347826
+(word) textbox::z
+(word) textbox::z#0 1.3333333333333333
+(word) textbox::z#1 101.0
+(word) textbox::z#2 202.0
+(word) textbox::z#3 29.000000000000004
+(word) textbox::z#4 151.5
+(word) textbox::z#5 101.0
+
+Initial phi equivalence classes
+[ main::x#2 main::x#1 ]
+[ main::wait#2 main::wait#1 ]
+[ textbox::x1#4 textbox::x1#0 ]
+[ textbox::y1#4 textbox::y1#0 ]
+[ textbox::x2#4 textbox::x2#0 ]
+[ textbox::y2#4 textbox::y2#0 ]
+[ textbox::text#12 ]
+[ textbox::i#2 textbox::i#1 ]
+[ textbox::ls#2 textbox::ls#0 textbox::ls#1 ]
+[ textbox::c#2 textbox::c#1 ]
+[ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ]
+[ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ]
+[ textbox::z#5 textbox::z#1 textbox::z#3 textbox::z#4 textbox::z#0 textbox::z#2 ]
+[ draw_window::x#2 draw_window::x#0 draw_window::x#1 ]
+[ draw_window::y#2 draw_window::y#0 draw_window::y#1 ]
+[ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ]
+[ draw_window::x3#2 draw_window::x3#0 draw_window::x3#1 ]
+Added variable main::$3 to zero page equivalence class [ main::$3 ]
+Added variable draw_window::x1#0 to zero page equivalence class [ draw_window::x1#0 ]
+Added variable draw_window::y1#0 to zero page equivalence class [ draw_window::y1#0 ]
+Added variable draw_window::x2#0 to zero page equivalence class [ draw_window::x2#0 ]
+Added variable draw_window::y2#0 to zero page equivalence class [ draw_window::y2#0 ]
+Added variable textbox::$32 to zero page equivalence class [ textbox::$32 ]
+Added variable textbox::$33 to zero page equivalence class [ textbox::$33 ]
+Added variable textbox::$8 to zero page equivalence class [ textbox::$8 ]
+Added variable textbox::$31 to zero page equivalence class [ textbox::$31 ]
+Added variable textbox::$15 to zero page equivalence class [ textbox::$15 ]
+Added variable textbox::$17 to zero page equivalence class [ textbox::$17 ]
+Added variable textbox::$38 to zero page equivalence class [ textbox::$38 ]
+Added variable textbox::$39 to zero page equivalence class [ textbox::$39 ]
+Added variable textbox::$35 to zero page equivalence class [ textbox::$35 ]
+Added variable textbox::$36 to zero page equivalence class [ textbox::$36 ]
+Added variable draw_window::$36 to zero page equivalence class [ draw_window::$36 ]
+Added variable draw_window::$37 to zero page equivalence class [ draw_window::$37 ]
+Added variable draw_window::z#0 to zero page equivalence class [ draw_window::z#0 ]
+Added variable draw_window::$39 to zero page equivalence class [ draw_window::$39 ]
+Added variable draw_window::$40 to zero page equivalence class [ draw_window::$40 ]
+Added variable draw_window::q#0 to zero page equivalence class [ draw_window::q#0 ]
+Added variable draw_window::$13 to zero page equivalence class [ draw_window::$13 ]
+Added variable draw_window::$27 to zero page equivalence class [ draw_window::$27 ]
+Added variable draw_window::$14 to zero page equivalence class [ draw_window::$14 ]
+Added variable draw_window::$28 to zero page equivalence class [ draw_window::$28 ]
+Added variable draw_window::$2 to zero page equivalence class [ draw_window::$2 ]
+Added variable draw_window::$29 to zero page equivalence class [ draw_window::$29 ]
+Added variable draw_window::$3 to zero page equivalence class [ draw_window::$3 ]
+Added variable draw_window::$30 to zero page equivalence class [ draw_window::$30 ]
+Added variable draw_window::$42 to zero page equivalence class [ draw_window::$42 ]
+Added variable draw_window::$43 to zero page equivalence class [ draw_window::$43 ]
+Added variable draw_window::z#1 to zero page equivalence class [ draw_window::z#1 ]
+Added variable draw_window::$18 to zero page equivalence class [ draw_window::$18 ]
+Added variable draw_window::$31 to zero page equivalence class [ draw_window::$31 ]
+Added variable draw_window::$19 to zero page equivalence class [ draw_window::$19 ]
+Added variable draw_window::$32 to zero page equivalence class [ draw_window::$32 ]
+Added variable draw_window::$4 to zero page equivalence class [ draw_window::$4 ]
+Added variable draw_window::$33 to zero page equivalence class [ draw_window::$33 ]
+Added variable draw_window::$5 to zero page equivalence class [ draw_window::$5 ]
+Added variable draw_window::$34 to zero page equivalence class [ draw_window::$34 ]
+Added variable draw_window::$6 to zero page equivalence class [ draw_window::$6 ]
+Added variable draw_window::$8 to zero page equivalence class [ draw_window::$8 ]
+Added variable draw_window::$45 to zero page equivalence class [ draw_window::$45 ]
+Added variable draw_window::$46 to zero page equivalence class [ draw_window::$46 ]
+Added variable draw_window::z#2 to zero page equivalence class [ draw_window::z#2 ]
+Added variable draw_window::$24 to zero page equivalence class [ draw_window::$24 ]
+Added variable draw_window::$35 to zero page equivalence class [ draw_window::$35 ]
+Complete equivalence classes
+[ main::x#2 main::x#1 ]
+[ main::wait#2 main::wait#1 ]
+[ textbox::x1#4 textbox::x1#0 ]
+[ textbox::y1#4 textbox::y1#0 ]
+[ textbox::x2#4 textbox::x2#0 ]
+[ textbox::y2#4 textbox::y2#0 ]
+[ textbox::text#12 ]
+[ textbox::i#2 textbox::i#1 ]
+[ textbox::ls#2 textbox::ls#0 textbox::ls#1 ]
+[ textbox::c#2 textbox::c#1 ]
+[ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ]
+[ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ]
+[ textbox::z#5 textbox::z#1 textbox::z#3 textbox::z#4 textbox::z#0 textbox::z#2 ]
+[ draw_window::x#2 draw_window::x#0 draw_window::x#1 ]
+[ draw_window::y#2 draw_window::y#0 draw_window::y#1 ]
+[ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ]
+[ draw_window::x3#2 draw_window::x3#0 draw_window::x3#1 ]
+[ main::$3 ]
+[ draw_window::x1#0 ]
+[ draw_window::y1#0 ]
+[ draw_window::x2#0 ]
+[ draw_window::y2#0 ]
+[ textbox::$32 ]
+[ textbox::$33 ]
+[ textbox::$8 ]
+[ textbox::$31 ]
+[ textbox::$15 ]
+[ textbox::$17 ]
+[ textbox::$38 ]
+[ textbox::$39 ]
+[ textbox::$35 ]
+[ textbox::$36 ]
+[ draw_window::$36 ]
+[ draw_window::$37 ]
+[ draw_window::z#0 ]
+[ draw_window::$39 ]
+[ draw_window::$40 ]
+[ draw_window::q#0 ]
+[ draw_window::$13 ]
+[ draw_window::$27 ]
+[ draw_window::$14 ]
+[ draw_window::$28 ]
+[ draw_window::$2 ]
+[ draw_window::$29 ]
+[ draw_window::$3 ]
+[ draw_window::$30 ]
+[ draw_window::$42 ]
+[ draw_window::$43 ]
+[ draw_window::z#1 ]
+[ draw_window::$18 ]
+[ draw_window::$31 ]
+[ draw_window::$19 ]
+[ draw_window::$32 ]
+[ draw_window::$4 ]
+[ draw_window::$33 ]
+[ draw_window::$5 ]
+[ draw_window::$34 ]
+[ draw_window::$6 ]
+[ draw_window::$8 ]
+[ draw_window::$45 ]
+[ draw_window::$46 ]
+[ draw_window::z#2 ]
+[ draw_window::$24 ]
+[ draw_window::$35 ]
+Allocated zp ZP_BYTE:2 [ main::x#2 main::x#1 ]
+Allocated zp ZP_WORD:3 [ main::wait#2 main::wait#1 ]
+Allocated zp ZP_BYTE:5 [ textbox::x1#4 textbox::x1#0 ]
+Allocated zp ZP_BYTE:6 [ textbox::y1#4 textbox::y1#0 ]
+Allocated zp ZP_BYTE:7 [ textbox::x2#4 textbox::x2#0 ]
+Allocated zp ZP_BYTE:8 [ textbox::y2#4 textbox::y2#0 ]
+Allocated zp ZP_WORD:9 [ textbox::text#12 ]
+Allocated zp ZP_BYTE:11 [ textbox::i#2 textbox::i#1 ]
+Allocated zp ZP_BYTE:12 [ textbox::ls#2 textbox::ls#0 textbox::ls#1 ]
+Allocated zp ZP_BYTE:13 [ textbox::c#2 textbox::c#1 ]
+Allocated zp ZP_BYTE:14 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ]
+Allocated zp ZP_BYTE:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ]
+Allocated zp ZP_WORD:16 [ textbox::z#5 textbox::z#1 textbox::z#3 textbox::z#4 textbox::z#0 textbox::z#2 ]
+Allocated zp ZP_BYTE:18 [ draw_window::x#2 draw_window::x#0 draw_window::x#1 ]
+Allocated zp ZP_BYTE:19 [ draw_window::y#2 draw_window::y#0 draw_window::y#1 ]
+Allocated zp ZP_BYTE:20 [ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ]
+Allocated zp ZP_BYTE:21 [ draw_window::x3#2 draw_window::x3#0 draw_window::x3#1 ]
+Allocated zp ZP_BYTE:22 [ main::$3 ]
+Allocated zp ZP_BYTE:23 [ draw_window::x1#0 ]
+Allocated zp ZP_BYTE:24 [ draw_window::y1#0 ]
+Allocated zp ZP_BYTE:25 [ draw_window::x2#0 ]
+Allocated zp ZP_BYTE:26 [ draw_window::y2#0 ]
+Allocated zp ZP_BYTE:27 [ textbox::$32 ]
+Allocated zp ZP_BYTE:28 [ textbox::$33 ]
+Allocated zp ZP_WORD:29 [ textbox::$8 ]
+Allocated zp ZP_WORD:31 [ textbox::$31 ]
+Allocated zp ZP_BYTE:33 [ textbox::$15 ]
+Allocated zp ZP_BYTE:34 [ textbox::$17 ]
+Allocated zp ZP_BYTE:35 [ textbox::$38 ]
+Allocated zp ZP_BYTE:36 [ textbox::$39 ]
+Allocated zp ZP_BYTE:37 [ textbox::$35 ]
+Allocated zp ZP_BYTE:38 [ textbox::$36 ]
+Allocated zp ZP_BYTE:39 [ draw_window::$36 ]
+Allocated zp ZP_BYTE:40 [ draw_window::$37 ]
+Allocated zp ZP_WORD:41 [ draw_window::z#0 ]
+Allocated zp ZP_BYTE:43 [ draw_window::$39 ]
+Allocated zp ZP_BYTE:44 [ draw_window::$40 ]
+Allocated zp ZP_WORD:45 [ draw_window::q#0 ]
+Allocated zp ZP_WORD:47 [ draw_window::$13 ]
+Allocated zp ZP_WORD:49 [ draw_window::$27 ]
+Allocated zp ZP_WORD:51 [ draw_window::$14 ]
+Allocated zp ZP_WORD:53 [ draw_window::$28 ]
+Allocated zp ZP_WORD:55 [ draw_window::$2 ]
+Allocated zp ZP_WORD:57 [ draw_window::$29 ]
+Allocated zp ZP_WORD:59 [ draw_window::$3 ]
+Allocated zp ZP_WORD:61 [ draw_window::$30 ]
+Allocated zp ZP_BYTE:63 [ draw_window::$42 ]
+Allocated zp ZP_BYTE:64 [ draw_window::$43 ]
+Allocated zp ZP_WORD:65 [ draw_window::z#1 ]
+Allocated zp ZP_WORD:67 [ draw_window::$18 ]
+Allocated zp ZP_WORD:69 [ draw_window::$31 ]
+Allocated zp ZP_WORD:71 [ draw_window::$19 ]
+Allocated zp ZP_WORD:73 [ draw_window::$32 ]
+Allocated zp ZP_WORD:75 [ draw_window::$4 ]
+Allocated zp ZP_WORD:77 [ draw_window::$33 ]
+Allocated zp ZP_WORD:79 [ draw_window::$5 ]
+Allocated zp ZP_WORD:81 [ draw_window::$34 ]
+Allocated zp ZP_BYTE:83 [ draw_window::$6 ]
+Allocated zp ZP_BYTE:84 [ draw_window::$8 ]
+Allocated zp ZP_BYTE:85 [ draw_window::$45 ]
+Allocated zp ZP_BYTE:86 [ draw_window::$46 ]
+Allocated zp ZP_WORD:87 [ draw_window::z#2 ]
+Allocated zp ZP_WORD:89 [ draw_window::$24 ]
+Allocated zp ZP_WORD:91 [ draw_window::$35 ]
+
+INITIAL ASM
+//SEG0 File Comments
+/* Textbox routine with word wrap for KickC by Scan/Desire */
+//SEG1 Basic Upstart
+.pc = $801 "Basic"
+:BasicUpstart(bbegin)
+.pc = $80d "Program"
+//SEG2 Global Constants & labels
+  .label screen = $400
+//SEG3 @begin
+bbegin:
+//SEG4 [1] phi from @begin to @1 [phi:@begin->@1]
+b1_from_bbegin:
+  jmp b1
+//SEG5 @1
+b1:
+//SEG6 [2] call main 
+//SEG7 [4] phi from @1 to main [phi:@1->main]
+main_from_b1:
+  jsr main
+//SEG8 [3] phi from @1 to @end [phi:@1->@end]
+bend_from_b1:
+  jmp bend
+//SEG9 @end
+bend:
+//SEG10 main
+main: {
+    .label _3 = $16
+    .label wait = 3
+    .label x = 2
+  //SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
+  b1_from_main:
+  //SEG12 [5] phi (byte) main::x#2 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 
+    lda #0
+    sta x
+    jmp b1
+  //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1]
+  b1_from_b3:
+  //SEG14 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@3->main::@1#0] -- register_copy 
+    jmp b1
+  //SEG15 main::@1
+  b1:
+  //SEG16 [6] (byte~) main::$3 ← (byte) main::x#2 + (byte) main::x#2 -- vbuz1=vbuz2_plus_vbuz2 
+    lda x
+    asl
+    sta _3
+  //SEG17 [7] (byte) textbox::x2#0 ← (byte~) main::$3 + (byte) 1 -- vbuz1=vbuz2_plus_1 
+    ldy _3
+    iny
+    sty textbox.x2
+  //SEG18 [8] (byte) textbox::y2#0 ← (byte) main::x#2 + (byte) $a -- vbuz1=vbuz2_plus_vbuc1 
+    lax x
+    axs #-[$a]
+    stx textbox.y2
+  //SEG19 [9] (byte) textbox::x1#0 ← (byte) main::x#2 -- vbuz1=vbuz2 
+    lda x
+    sta textbox.x1
+  //SEG20 [10] (byte) textbox::y1#0 ← (byte) main::x#2 -- vbuz1=vbuz2 
+    lda x
+    sta textbox.y1
+  //SEG21 [11] call textbox 
+  //SEG22 [24] phi from main::@1 to textbox [phi:main::@1->textbox]
+  textbox_from_b1:
+  //SEG23 [24] phi (byte*) textbox::text#12 = (const byte[]) text2#0 [phi:main::@1->textbox#0] -- pbuz1=pbuc1 
+    lda #<text2
+    sta textbox.text
+    lda #>text2
+    sta textbox.text+1
+  //SEG24 [24] phi (byte) textbox::y2#4 = (byte) textbox::y2#0 [phi:main::@1->textbox#1] -- register_copy 
+  //SEG25 [24] phi (byte) textbox::x2#4 = (byte) textbox::x2#0 [phi:main::@1->textbox#2] -- register_copy 
+  //SEG26 [24] phi (byte) textbox::y1#4 = (byte) textbox::y1#0 [phi:main::@1->textbox#3] -- register_copy 
+  //SEG27 [24] phi (byte) textbox::x1#4 = (byte) textbox::x1#0 [phi:main::@1->textbox#4] -- register_copy 
+    jsr textbox
+  //SEG28 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
+  b2_from_b1:
+  //SEG29 [12] phi (word) main::wait#2 = (byte) 0 [phi:main::@1->main::@2#0] -- vwuz1=vbuc1 
+    lda #0
+    sta wait
+    lda #0
+    sta wait+1
+    jmp b2
+  //SEG30 [12] phi from main::@2 to main::@2 [phi:main::@2->main::@2]
+  b2_from_b2:
+  //SEG31 [12] phi (word) main::wait#2 = (word) main::wait#1 [phi:main::@2->main::@2#0] -- register_copy 
+    jmp b2
+  //SEG32 main::@2
+  b2:
+  //SEG33 [13] (word) main::wait#1 ← ++ (word) main::wait#2 -- vwuz1=_inc_vwuz1 
+    inc wait
+    bne !+
+    inc wait+1
+  !:
+  //SEG34 [14] if((word) main::wait#1<(word) $88b8) goto main::@2 -- vwuz1_lt_vwuc1_then_la1 
+    lda wait+1
+    cmp #>$88b8
+    bcc b2_from_b2
+    bne !+
+    lda wait
+    cmp #<$88b8
+    bcc b2_from_b2
+  !:
+    jmp b3
+  //SEG35 main::@3
+  b3:
+  //SEG36 [15] (byte) main::x#1 ← (byte) main::x#2 + (byte) 2 -- vbuz1=vbuz1_plus_2 
+    lda x
+    clc
+    adc #2
+    sta x
+  //SEG37 [16] if((byte) main::x#1<(byte) $f) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 
+    lda x
+    cmp #$f
+    bcc b1_from_b3
+  //SEG38 [17] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
+  b4_from_b3:
+    jmp b4
+  //SEG39 main::@4
+  b4:
+  //SEG40 [18] call textbox 
+  //SEG41 [24] phi from main::@4 to textbox [phi:main::@4->textbox]
+  textbox_from_b4:
+  //SEG42 [24] phi (byte*) textbox::text#12 = (const byte[]) text#0 [phi:main::@4->textbox#0] -- pbuz1=pbuc1 
+    lda #<text
+    sta textbox.text
+    lda #>text
+    sta textbox.text+1
+  //SEG43 [24] phi (byte) textbox::y2#4 = (byte) $18 [phi:main::@4->textbox#1] -- vbuz1=vbuc1 
+    lda #$18
+    sta textbox.y2
+  //SEG44 [24] phi (byte) textbox::x2#4 = (byte) $14 [phi:main::@4->textbox#2] -- vbuz1=vbuc1 
+    lda #$14
+    sta textbox.x2
+  //SEG45 [24] phi (byte) textbox::y1#4 = (byte) $c [phi:main::@4->textbox#3] -- vbuz1=vbuc1 
+    lda #$c
+    sta textbox.y1
+  //SEG46 [24] phi (byte) textbox::x1#4 = (byte) 0 [phi:main::@4->textbox#4] -- vbuz1=vbuc1 
+    lda #0
+    sta textbox.x1
+    jsr textbox
+  //SEG47 [19] phi from main::@4 to main::@6 [phi:main::@4->main::@6]
+  b6_from_b4:
+    jmp b6
+  //SEG48 main::@6
+  b6:
+  //SEG49 [20] call textbox 
+  //SEG50 [24] phi from main::@6 to textbox [phi:main::@6->textbox]
+  textbox_from_b6:
+  //SEG51 [24] phi (byte*) textbox::text#12 = (const byte[]) text#0 [phi:main::@6->textbox#0] -- pbuz1=pbuc1 
+    lda #<text
+    sta textbox.text
+    lda #>text
+    sta textbox.text+1
+  //SEG52 [24] phi (byte) textbox::y2#4 = (byte) 9 [phi:main::@6->textbox#1] -- vbuz1=vbuc1 
+    lda #9
+    sta textbox.y2
+  //SEG53 [24] phi (byte) textbox::x2#4 = (byte) $25 [phi:main::@6->textbox#2] -- vbuz1=vbuc1 
+    lda #$25
+    sta textbox.x2
+  //SEG54 [24] phi (byte) textbox::y1#4 = (byte) 3 [phi:main::@6->textbox#3] -- vbuz1=vbuc1 
+    lda #3
+    sta textbox.y1
+  //SEG55 [24] phi (byte) textbox::x1#4 = (byte) 3 [phi:main::@6->textbox#4] -- vbuz1=vbuc1 
+    lda #3
+    sta textbox.x1
+    jsr textbox
+  //SEG56 [21] phi from main::@6 to main::@7 [phi:main::@6->main::@7]
+  b7_from_b6:
+    jmp b7
+  //SEG57 main::@7
+  b7:
+  //SEG58 [22] call textbox 
+  //SEG59 [24] phi from main::@7 to textbox [phi:main::@7->textbox]
+  textbox_from_b7:
+  //SEG60 [24] phi (byte*) textbox::text#12 = (const byte[]) text#0 [phi:main::@7->textbox#0] -- pbuz1=pbuc1 
+    lda #<text
+    sta textbox.text
+    lda #>text
+    sta textbox.text+1
+  //SEG61 [24] phi (byte) textbox::y2#4 = (byte) $18 [phi:main::@7->textbox#1] -- vbuz1=vbuc1 
+    lda #$18
+    sta textbox.y2
+  //SEG62 [24] phi (byte) textbox::x2#4 = (byte) $27 [phi:main::@7->textbox#2] -- vbuz1=vbuc1 
+    lda #$27
+    sta textbox.x2
+  //SEG63 [24] phi (byte) textbox::y1#4 = (byte) 8 [phi:main::@7->textbox#3] -- vbuz1=vbuc1 
+    lda #8
+    sta textbox.y1
+  //SEG64 [24] phi (byte) textbox::x1#4 = (byte) $1e [phi:main::@7->textbox#4] -- vbuz1=vbuc1 
+    lda #$1e
+    sta textbox.x1
+    jsr textbox
+  //SEG65 [23] phi from main::@5 main::@7 to main::@5 [phi:main::@5/main::@7->main::@5]
+  b5_from_b5:
+  b5_from_b7:
+    jmp b5
+  //SEG66 main::@5
+  b5:
+    jmp b5_from_b5
+}
+//SEG67 textbox
+// textbox(byte zeropage(5) x1, byte zeropage(6) y1, byte zeropage(7) x2, byte zeropage(8) y2, byte* zeropage(9) text)
+textbox: {
+    .label _8 = $1d
+    .label _15 = $21
+    .label _17 = $22
+    .label x1 = 5
+    .label y1 = 6
+    .label x2 = 7
+    .label y2 = 8
+    .label y = $f
+    .label x = $e
+    .label z = $10
+    .label i = $b
+    .label ls = $c
+    .label c = $d
+    .label text = 9
+    .label _31 = $1f
+    .label _32 = $1b
+    .label _33 = $1c
+    .label _35 = $25
+    .label _36 = $26
+    .label _38 = $23
+    .label _39 = $24
+  //SEG68 [25] (byte) draw_window::x1#0 ← (byte) textbox::x1#4 -- vbuz1=vbuz2 
+    lda x1
+    sta draw_window.x1
+  //SEG69 [26] (byte) draw_window::y1#0 ← (byte) textbox::y1#4 -- vbuz1=vbuz2 
+    lda y1
+    sta draw_window.y1
+  //SEG70 [27] (byte) draw_window::x2#0 ← (byte) textbox::x2#4 -- vbuz1=vbuz2 
+    lda x2
+    sta draw_window.x2
+  //SEG71 [28] (byte) draw_window::y2#0 ← (byte) textbox::y2#4 -- vbuz1=vbuz2 
+    lda y2
+    sta draw_window.y2
+  //SEG72 [29] call draw_window 
+    jsr draw_window
+    jmp b12
+  //SEG73 textbox::@12
+  b12:
+  //SEG74 [30] (byte) textbox::y#0 ← (byte) textbox::y1#4 + (byte) 1 -- vbuz1=vbuz2_plus_1 
+    ldy y1
+    iny
+    sty y
+  //SEG75 [31] (byte) textbox::x#0 ← (byte) textbox::x1#4 + (byte) 1 -- vbuz1=vbuz2_plus_1 
+    ldy x1
+    iny
+    sty x
+  //SEG76 [32] (byte) textbox::$32 ← (byte) textbox::y#0 << (byte) 2 -- vbuz1=vbuz2_rol_2 
+    lda y
+    asl
+    asl
+    sta _32
+  //SEG77 [33] (byte) textbox::$33 ← (byte) textbox::$32 + (byte) textbox::y#0 -- vbuz1=vbuz2_plus_vbuz3 
+    lda _32
+    clc
+    adc y
+    sta _33
+  //SEG78 [34] (word) textbox::z#0 ← (byte) textbox::$33 << (byte) 3 -- vwuz1=vbuz2_rol_3 
+    lda _33
+    sta z
+    lda #0
+    sta z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+  //SEG79 [35] if((byte) textbox::x#0==(byte) textbox::x2#4) goto textbox::@return -- vbuz1_eq_vbuz2_then_la1 
+    lda x
+    cmp x2
+    beq breturn
+    jmp b13
+  //SEG80 textbox::@13
+  b13:
+  //SEG81 [36] if((byte) textbox::y#0==(byte) textbox::y2#4) goto textbox::@return -- vbuz1_eq_vbuz2_then_la1 
+    lda y
+    cmp y2
+    beq breturn
+  //SEG82 [37] phi from textbox::@13 to textbox::@1 [phi:textbox::@13->textbox::@1]
+  b1_from_b13:
+  //SEG83 [37] phi (byte) textbox::y#12 = (byte) textbox::y#0 [phi:textbox::@13->textbox::@1#0] -- register_copy 
+  //SEG84 [37] phi (byte) textbox::i#2 = (byte) 0 [phi:textbox::@13->textbox::@1#1] -- vbuz1=vbuc1 
+    lda #0
+    sta i
+  //SEG85 [37] phi (byte) textbox::x#10 = (byte) textbox::x#0 [phi:textbox::@13->textbox::@1#2] -- register_copy 
+  //SEG86 [37] phi (word) textbox::z#3 = (word) textbox::z#0 [phi:textbox::@13->textbox::@1#3] -- register_copy 
+    jmp b1
+  //SEG87 [37] phi from textbox::@8 to textbox::@1 [phi:textbox::@8->textbox::@1]
+  b1_from_b8:
+  //SEG88 [37] phi (byte) textbox::y#12 = (byte) textbox::y#11 [phi:textbox::@8->textbox::@1#0] -- register_copy 
+  //SEG89 [37] phi (byte) textbox::i#2 = (byte) textbox::i#1 [phi:textbox::@8->textbox::@1#1] -- register_copy 
+  //SEG90 [37] phi (byte) textbox::x#10 = (byte) textbox::x#7 [phi:textbox::@8->textbox::@1#2] -- register_copy 
+  //SEG91 [37] phi (word) textbox::z#3 = (word) textbox::z#4 [phi:textbox::@8->textbox::@1#3] -- register_copy 
+    jmp b1
+  //SEG92 textbox::@1
+  b1:
+  //SEG93 [38] (word~) textbox::$8 ← (word) textbox::z#3 + (byte) textbox::x#10 -- vwuz1=vwuz2_plus_vbuz3 
+    lda x
+    clc
+    adc z
+    sta _8
+    lda #0
+    adc z+1
+    sta _8+1
+  //SEG94 [39] (byte*~) textbox::$31 ← (const byte*) screen#0 + (word~) textbox::$8 -- pbuz1=pbuc1_plus_vwuz2 
+    lda _8
+    clc
+    adc #<screen
+    sta _31
+    lda _8+1
+    adc #>screen
+    sta _31+1
+  //SEG95 [40] *((byte*~) textbox::$31) ← *((byte*) textbox::text#12 + (byte) textbox::i#2) -- _deref_pbuz1=pbuz2_derefidx_vbuz3 
+    ldy i
+    lda (text),y
+    ldy #0
+    sta (_31),y
+  //SEG96 [41] if(*((byte*) textbox::text#12 + (byte) textbox::i#2)!=(byte) $20) goto textbox::@2 -- pbuz1_derefidx_vbuz2_neq_vbuc1_then_la1 
+    ldy i
+    lda (text),y
+    cmp #$20
+    bne b2_from_b1
+    jmp b10
+  //SEG97 textbox::@10
+  b10:
+  //SEG98 [42] (byte) textbox::ls#0 ← (byte) textbox::i#2 + (byte) 1 -- vbuz1=vbuz2_plus_1 
+    ldy i
+    iny
+    sty ls
+  //SEG99 [43] phi from textbox::@10 to textbox::@3 [phi:textbox::@10->textbox::@3]
+  b3_from_b10:
+  //SEG100 [43] phi (byte) textbox::c#2 = (byte) 0 [phi:textbox::@10->textbox::@3#0] -- vbuz1=vbuc1 
+    lda #0
+    sta c
+  //SEG101 [43] phi (byte) textbox::ls#2 = (byte) textbox::ls#0 [phi:textbox::@10->textbox::@3#1] -- register_copy 
+    jmp b3
+  //SEG102 textbox::@3
+  b3:
+  //SEG103 [44] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)==(byte) $20) goto textbox::@5 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1 
+    ldy ls
+    lda (text),y
+    cmp #$20
+    beq b5
+    jmp b14
+  //SEG104 textbox::@14
+  b14:
+  //SEG105 [45] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)!=(byte) 0) goto textbox::@4 -- pbuz1_derefidx_vbuz2_neq_0_then_la1 
+    ldy ls
+    lda (text),y
+    cmp #0
+    bne b4
+    jmp b5
+  //SEG106 textbox::@5
+  b5:
+  //SEG107 [46] (byte~) textbox::$15 ← (byte) textbox::c#2 + (byte) textbox::x#10 -- vbuz1=vbuz2_plus_vbuz3 
+    lda c
+    clc
+    adc x
+    sta _15
+  //SEG108 [47] (byte~) textbox::$17 ← (byte) textbox::x2#4 - (byte) textbox::x1#4 -- vbuz1=vbuz2_minus_vbuz3 
+    lda x2
+    sec
+    sbc x1
+    sta _17
+  //SEG109 [48] if((byte~) textbox::$15<(byte) textbox::x2#4) goto textbox::@2 -- vbuz1_lt_vbuz2_then_la1 
+    lda _15
+    cmp x2
+    bcc b2_from_b5
+    jmp b15
+  //SEG110 textbox::@15
+  b15:
+  //SEG111 [49] if((byte) textbox::c#2<(byte~) textbox::$17) goto textbox::@6 -- vbuz1_lt_vbuz2_then_la1 
+    lda c
+    cmp _17
+    bcc b6
+  //SEG112 [50] phi from textbox::@15 to textbox::@2 [phi:textbox::@15->textbox::@2]
+  b2_from_b15:
+    jmp b2
+  //SEG113 [50] phi from textbox::@1 textbox::@5 textbox::@7 to textbox::@2 [phi:textbox::@1/textbox::@5/textbox::@7->textbox::@2]
+  b2_from_b1:
+  b2_from_b5:
+  b2_from_b7:
+  //SEG114 [50] phi (word) textbox::z#5 = (word) textbox::z#3 [phi:textbox::@1/textbox::@5/textbox::@7->textbox::@2#0] -- register_copy 
+  //SEG115 [50] phi (byte) textbox::y#5 = (byte) textbox::y#12 [phi:textbox::@1/textbox::@5/textbox::@7->textbox::@2#1] -- register_copy 
+  //SEG116 [50] phi (byte) textbox::x#5 = (byte) textbox::x#10 [phi:textbox::@1/textbox::@5/textbox::@7->textbox::@2#2] -- register_copy 
+    jmp b2
+  //SEG117 textbox::@2
+  b2:
+  //SEG118 [51] (byte) textbox::i#1 ← ++ (byte) textbox::i#2 -- vbuz1=_inc_vbuz1 
+    inc i
+  //SEG119 [52] (byte) textbox::x#1 ← ++ (byte) textbox::x#5 -- vbuz1=_inc_vbuz1 
+    inc x
+  //SEG120 [53] if((byte) textbox::x#1!=(byte) textbox::x2#4) goto textbox::@8 -- vbuz1_neq_vbuz2_then_la1 
+    lda x
+    cmp x2
+    bne b8_from_b2
+    jmp b11
+  //SEG121 textbox::@11
+  b11:
+  //SEG122 [54] (byte) textbox::x#12 ← (byte) textbox::x1#4 + (byte) 1 -- vbuz1=vbuz2_plus_1 
+    ldy x1
+    iny
+    sty x
+  //SEG123 [55] (byte) textbox::y#2 ← ++ (byte) textbox::y#5 -- vbuz1=_inc_vbuz1 
+    inc y
+  //SEG124 [56] if((byte) textbox::y#2!=(byte) textbox::y2#4) goto textbox::@9 -- vbuz1_neq_vbuz2_then_la1 
+    lda y
+    cmp y2
+    bne b9
+    jmp breturn
+  //SEG125 textbox::@return
+  breturn:
+  //SEG126 [57] return 
+    rts
+  //SEG127 textbox::@9
+  b9:
+  //SEG128 [58] (byte) textbox::$38 ← (byte) textbox::y#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 
+    lda y
+    asl
+    asl
+    sta _38
+  //SEG129 [59] (byte) textbox::$39 ← (byte) textbox::$38 + (byte) textbox::y#2 -- vbuz1=vbuz2_plus_vbuz3 
+    lda _38
+    clc
+    adc y
+    sta _39
+  //SEG130 [60] (word) textbox::z#2 ← (byte) textbox::$39 << (byte) 3 -- vwuz1=vbuz2_rol_3 
+    lda _39
+    sta z
+    lda #0
+    sta z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+  //SEG131 [61] phi from textbox::@2 textbox::@9 to textbox::@8 [phi:textbox::@2/textbox::@9->textbox::@8]
+  b8_from_b2:
+  b8_from_b9:
+  //SEG132 [61] phi (byte) textbox::y#11 = (byte) textbox::y#5 [phi:textbox::@2/textbox::@9->textbox::@8#0] -- register_copy 
+  //SEG133 [61] phi (byte) textbox::x#7 = (byte) textbox::x#1 [phi:textbox::@2/textbox::@9->textbox::@8#1] -- register_copy 
+  //SEG134 [61] phi (word) textbox::z#4 = (word) textbox::z#5 [phi:textbox::@2/textbox::@9->textbox::@8#2] -- register_copy 
+    jmp b8
+  //SEG135 textbox::@8
+  b8:
+  //SEG136 [62] if(*((byte*) textbox::text#12 + (byte) textbox::i#1)!=(byte) 0) goto textbox::@1 -- pbuz1_derefidx_vbuz2_neq_0_then_la1 
+    ldy i
+    lda (text),y
+    cmp #0
+    bne b1_from_b8
+    jmp breturn
+  //SEG137 textbox::@6
+  b6:
+  //SEG138 [63] (byte) textbox::y#1 ← ++ (byte) textbox::y#12 -- vbuz1=_inc_vbuz1 
+    inc y
+  //SEG139 [64] if((byte) textbox::y#1!=(byte) textbox::y2#4) goto textbox::@7 -- vbuz1_neq_vbuz2_then_la1 
+    lda y
+    cmp y2
+    bne b7
+    jmp breturn
+  //SEG140 textbox::@7
+  b7:
+  //SEG141 [65] (byte) textbox::$35 ← (byte) textbox::y#1 << (byte) 2 -- vbuz1=vbuz2_rol_2 
+    lda y
+    asl
+    asl
+    sta _35
+  //SEG142 [66] (byte) textbox::$36 ← (byte) textbox::$35 + (byte) textbox::y#1 -- vbuz1=vbuz2_plus_vbuz3 
+    lda _35
+    clc
+    adc y
+    sta _36
+  //SEG143 [67] (word) textbox::z#1 ← (byte) textbox::$36 << (byte) 3 -- vwuz1=vbuz2_rol_3 
+    lda _36
+    sta z
+    lda #0
+    sta z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+  //SEG144 [68] (byte~) textbox::x#15 ← (byte) textbox::x1#4 -- vbuz1=vbuz2 
+    lda x1
+    sta x
+    jmp b2_from_b7
+  //SEG145 textbox::@4
+  b4:
+  //SEG146 [69] (byte) textbox::ls#1 ← ++ (byte) textbox::ls#2 -- vbuz1=_inc_vbuz1 
+    inc ls
+  //SEG147 [70] (byte) textbox::c#1 ← ++ (byte) textbox::c#2 -- vbuz1=_inc_vbuz1 
+    inc c
+  //SEG148 [43] phi from textbox::@4 to textbox::@3 [phi:textbox::@4->textbox::@3]
+  b3_from_b4:
+  //SEG149 [43] phi (byte) textbox::c#2 = (byte) textbox::c#1 [phi:textbox::@4->textbox::@3#0] -- register_copy 
+  //SEG150 [43] phi (byte) textbox::ls#2 = (byte) textbox::ls#1 [phi:textbox::@4->textbox::@3#1] -- register_copy 
+    jmp b3
+}
+//SEG151 draw_window
+// draw_window(byte zeropage($17) x1, byte zeropage($18) y1, byte zeropage($19) x2, byte zeropage($1a) y2)
+draw_window: {
+    .label _2 = $37
+    .label _3 = $3b
+    .label _4 = $4b
+    .label _5 = $4f
+    .label _6 = $53
+    .label _8 = $54
+    .label _13 = $2f
+    .label _14 = $33
+    .label _18 = $43
+    .label _19 = $47
+    .label _24 = $59
+    .label x1 = $17
+    .label y1 = $18
+    .label x2 = $19
+    .label y2 = $1a
+    .label z = $29
+    .label q = $2d
+    .label x = $12
+    .label y = $13
+    .label z_1 = $41
+    .label y3 = $14
+    .label z_2 = $57
+    .label x3 = $15
+    .label _27 = $31
+    .label _28 = $35
+    .label _29 = $39
+    .label _30 = $3d
+    .label _31 = $45
+    .label _32 = $49
+    .label _33 = $4d
+    .label _34 = $51
+    .label _35 = $5b
+    .label _36 = $27
+    .label _37 = $28
+    .label _39 = $2b
+    .label _40 = $2c
+    .label _42 = $3f
+    .label _43 = $40
+    .label _45 = $55
+    .label _46 = $56
+  //SEG152 [71] (byte) draw_window::$36 ← (byte) draw_window::y1#0 << (byte) 2 -- vbuz1=vbuz2_rol_2 
+    lda y1
+    asl
+    asl
+    sta _36
+  //SEG153 [72] (byte) draw_window::$37 ← (byte) draw_window::$36 + (byte) draw_window::y1#0 -- vbuz1=vbuz2_plus_vbuz3 
+    lda _36
+    clc
+    adc y1
+    sta _37
+  //SEG154 [73] (word) draw_window::z#0 ← (byte) draw_window::$37 << (byte) 3 -- vwuz1=vbuz2_rol_3 
+    lda _37
+    sta z
+    lda #0
+    sta z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+  //SEG155 [74] (byte) draw_window::$39 ← (byte) draw_window::y2#0 << (byte) 2 -- vbuz1=vbuz2_rol_2 
+    lda y2
+    asl
+    asl
+    sta _39
+  //SEG156 [75] (byte) draw_window::$40 ← (byte) draw_window::$39 + (byte) draw_window::y2#0 -- vbuz1=vbuz2_plus_vbuz3 
+    lda _39
+    clc
+    adc y2
+    sta _40
+  //SEG157 [76] (word) draw_window::q#0 ← (byte) draw_window::$40 << (byte) 3 -- vwuz1=vbuz2_rol_3 
+    lda _40
+    sta q
+    lda #0
+    sta q+1
+    asl q
+    rol q+1
+    asl q
+    rol q+1
+    asl q
+    rol q+1
+  //SEG158 [77] (byte) draw_window::x#0 ← (byte) draw_window::x1#0 + (byte) 1 -- vbuz1=vbuz2_plus_1 
+    ldy x1
+    iny
+    sty x
+  //SEG159 [78] phi from draw_window draw_window::@1 to draw_window::@1 [phi:draw_window/draw_window::@1->draw_window::@1]
+  b1_from_draw_window:
+  b1_from_b1:
+  //SEG160 [78] phi (byte) draw_window::x#2 = (byte) draw_window::x#0 [phi:draw_window/draw_window::@1->draw_window::@1#0] -- register_copy 
+    jmp b1
+  // draw horizontal lines
+  //SEG161 draw_window::@1
+  b1:
+  //SEG162 [79] (word~) draw_window::$13 ← (word) draw_window::z#0 + (byte) draw_window::x#2 -- vwuz1=vwuz2_plus_vbuz3 
+    lda x
+    clc
+    adc z
+    sta _13
+    lda #0
+    adc z+1
+    sta _13+1
+  //SEG163 [80] (byte*~) draw_window::$27 ← (const byte*) screen#0 + (word~) draw_window::$13 -- pbuz1=pbuc1_plus_vwuz2 
+    lda _13
+    clc
+    adc #<screen
+    sta _27
+    lda _13+1
+    adc #>screen
+    sta _27+1
+  //SEG164 [81] *((byte*~) draw_window::$27) ← (byte) $43 -- _deref_pbuz1=vbuc1 
+    lda #$43
+    ldy #0
+    sta (_27),y
+  //SEG165 [82] (word~) draw_window::$14 ← (word) draw_window::q#0 + (byte) draw_window::x#2 -- vwuz1=vwuz2_plus_vbuz3 
+    lda x
+    clc
+    adc q
+    sta _14
+    lda #0
+    adc q+1
+    sta _14+1
+  //SEG166 [83] (byte*~) draw_window::$28 ← (const byte*) screen#0 + (word~) draw_window::$14 -- pbuz1=pbuc1_plus_vwuz2 
+    lda _14
+    clc
+    adc #<screen
+    sta _28
+    lda _14+1
+    adc #>screen
+    sta _28+1
+  //SEG167 [84] *((byte*~) draw_window::$28) ← (byte) $43 -- _deref_pbuz1=vbuc1 
+    lda #$43
+    ldy #0
+    sta (_28),y
+  //SEG168 [85] (byte) draw_window::x#1 ← ++ (byte) draw_window::x#2 -- vbuz1=_inc_vbuz1 
+    inc x
+  //SEG169 [86] if((byte) draw_window::x#1<(byte) draw_window::x2#0) goto draw_window::@1 -- vbuz1_lt_vbuz2_then_la1 
+    lda x
+    cmp x2
+    bcc b1_from_b1
+    jmp b2
+  //SEG170 draw_window::@2
+  b2:
+  //SEG171 [87] (word~) draw_window::$2 ← (word) draw_window::z#0 + (byte) draw_window::x1#0 -- vwuz1=vwuz2_plus_vbuz3 
+    lda x1
+    clc
+    adc z
+    sta _2
+    lda #0
+    adc z+1
+    sta _2+1
+  //SEG172 [88] (byte*~) draw_window::$29 ← (const byte*) screen#0 + (word~) draw_window::$2 -- pbuz1=pbuc1_plus_vwuz2 
+    lda _2
+    clc
+    adc #<screen
+    sta _29
+    lda _2+1
+    adc #>screen
+    sta _29+1
+  //SEG173 [89] *((byte*~) draw_window::$29) ← (byte) $55 -- _deref_pbuz1=vbuc1 
+    // draw upper corners
+    lda #$55
+    ldy #0
+    sta (_29),y
+  //SEG174 [90] (word~) draw_window::$3 ← (word) draw_window::z#0 + (byte) draw_window::x2#0 -- vwuz1=vwuz2_plus_vbuz3 
+    lda x2
+    clc
+    adc z
+    sta _3
+    lda #0
+    adc z+1
+    sta _3+1
+  //SEG175 [91] (byte*~) draw_window::$30 ← (const byte*) screen#0 + (word~) draw_window::$3 -- pbuz1=pbuc1_plus_vwuz2 
+    lda _3
+    clc
+    adc #<screen
+    sta _30
+    lda _3+1
+    adc #>screen
+    sta _30+1
+  //SEG176 [92] *((byte*~) draw_window::$30) ← (byte) $49 -- _deref_pbuz1=vbuc1 
+    lda #$49
+    ldy #0
+    sta (_30),y
+  //SEG177 [93] (byte) draw_window::y#0 ← (byte) draw_window::y1#0 + (byte) 1 -- vbuz1=vbuz2_plus_1 
+    ldy y1
+    iny
+    sty y
+  //SEG178 [94] phi from draw_window::@2 draw_window::@3 to draw_window::@3 [phi:draw_window::@2/draw_window::@3->draw_window::@3]
+  b3_from_b2:
+  b3_from_b3:
+  //SEG179 [94] phi (byte) draw_window::y#2 = (byte) draw_window::y#0 [phi:draw_window::@2/draw_window::@3->draw_window::@3#0] -- register_copy 
+    jmp b3
+  // draw vertical lines
+  //SEG180 draw_window::@3
+  b3:
+  //SEG181 [95] (byte) draw_window::$42 ← (byte) draw_window::y#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 
+    lda y
+    asl
+    asl
+    sta _42
+  //SEG182 [96] (byte) draw_window::$43 ← (byte) draw_window::$42 + (byte) draw_window::y#2 -- vbuz1=vbuz2_plus_vbuz3 
+    lda _42
+    clc
+    adc y
+    sta _43
+  //SEG183 [97] (word) draw_window::z#1 ← (byte) draw_window::$43 << (byte) 3 -- vwuz1=vbuz2_rol_3 
+    lda _43
+    sta z_1
+    lda #0
+    sta z_1+1
+    asl z_1
+    rol z_1+1
+    asl z_1
+    rol z_1+1
+    asl z_1
+    rol z_1+1
+  //SEG184 [98] (word~) draw_window::$18 ← (word) draw_window::z#1 + (byte) draw_window::x1#0 -- vwuz1=vwuz2_plus_vbuz3 
+    lda x1
+    clc
+    adc z_1
+    sta _18
+    lda #0
+    adc z_1+1
+    sta _18+1
+  //SEG185 [99] (byte*~) draw_window::$31 ← (const byte*) screen#0 + (word~) draw_window::$18 -- pbuz1=pbuc1_plus_vwuz2 
+    lda _18
+    clc
+    adc #<screen
+    sta _31
+    lda _18+1
+    adc #>screen
+    sta _31+1
+  //SEG186 [100] *((byte*~) draw_window::$31) ← (byte) $42 -- _deref_pbuz1=vbuc1 
+    lda #$42
+    ldy #0
+    sta (_31),y
+  //SEG187 [101] (word~) draw_window::$19 ← (word) draw_window::z#1 + (byte) draw_window::x2#0 -- vwuz1=vwuz2_plus_vbuz3 
+    lda x2
+    clc
+    adc z_1
+    sta _19
+    lda #0
+    adc z_1+1
+    sta _19+1
+  //SEG188 [102] (byte*~) draw_window::$32 ← (const byte*) screen#0 + (word~) draw_window::$19 -- pbuz1=pbuc1_plus_vwuz2 
+    lda _19
+    clc
+    adc #<screen
+    sta _32
+    lda _19+1
+    adc #>screen
+    sta _32+1
+  //SEG189 [103] *((byte*~) draw_window::$32) ← (byte) $42 -- _deref_pbuz1=vbuc1 
+    lda #$42
+    ldy #0
+    sta (_32),y
+  //SEG190 [104] (byte) draw_window::y#1 ← ++ (byte) draw_window::y#2 -- vbuz1=_inc_vbuz1 
+    inc y
+  //SEG191 [105] if((byte) draw_window::y#1<(byte) draw_window::y2#0) goto draw_window::@3 -- vbuz1_lt_vbuz2_then_la1 
+    lda y
+    cmp y2
+    bcc b3_from_b3
+    jmp b4
+  //SEG192 draw_window::@4
+  b4:
+  //SEG193 [106] (word~) draw_window::$4 ← (word) draw_window::q#0 + (byte) draw_window::x1#0 -- vwuz1=vwuz2_plus_vbuz3 
+    lda x1
+    clc
+    adc q
+    sta _4
+    lda #0
+    adc q+1
+    sta _4+1
+  //SEG194 [107] (byte*~) draw_window::$33 ← (const byte*) screen#0 + (word~) draw_window::$4 -- pbuz1=pbuc1_plus_vwuz2 
+    lda _4
+    clc
+    adc #<screen
+    sta _33
+    lda _4+1
+    adc #>screen
+    sta _33+1
+  //SEG195 [108] *((byte*~) draw_window::$33) ← (byte) $4a -- _deref_pbuz1=vbuc1 
+    // draw lower corners
+    lda #$4a
+    ldy #0
+    sta (_33),y
+  //SEG196 [109] (word~) draw_window::$5 ← (word) draw_window::q#0 + (byte) draw_window::x2#0 -- vwuz1=vwuz2_plus_vbuz3 
+    lda x2
+    clc
+    adc q
+    sta _5
+    lda #0
+    adc q+1
+    sta _5+1
+  //SEG197 [110] (byte*~) draw_window::$34 ← (const byte*) screen#0 + (word~) draw_window::$5 -- pbuz1=pbuc1_plus_vwuz2 
+    lda _5
+    clc
+    adc #<screen
+    sta _34
+    lda _5+1
+    adc #>screen
+    sta _34+1
+  //SEG198 [111] *((byte*~) draw_window::$34) ← (byte) $4b -- _deref_pbuz1=vbuc1 
+    lda #$4b
+    ldy #0
+    sta (_34),y
+  //SEG199 [112] (byte~) draw_window::$6 ← (byte) draw_window::x2#0 - (byte) draw_window::x1#0 -- vbuz1=vbuz2_minus_vbuz3 
+    lda x2
+    sec
+    sbc x1
+    sta _6
+  //SEG200 [113] (byte~) draw_window::$8 ← (byte) draw_window::y2#0 - (byte) draw_window::y1#0 -- vbuz1=vbuz2_minus_vbuz3 
+    lda y2
+    sec
+    sbc y1
+    sta _8
+  //SEG201 [114] if((byte~) draw_window::$6<(byte) 1+(byte) 1) goto draw_window::@return -- vbuz1_lt_vbuc1_then_la1 
+    lda _6
+    cmp #1+1
+    bcc breturn
+    jmp b9
+  //SEG202 draw_window::@9
+  b9:
+  //SEG203 [115] if((byte~) draw_window::$8>=(byte) 1+(byte) 1) goto draw_window::@5 -- vbuz1_ge_vbuc1_then_la1 
+    lda _8
+    cmp #1+1
+    bcs b5
+    jmp breturn
+  //SEG204 draw_window::@return
+  breturn:
+  //SEG205 [116] return 
+    rts
+  //SEG206 draw_window::@5
+  b5:
+  //SEG207 [117] (byte) draw_window::y3#0 ← (byte) draw_window::y1#0 + (byte) 1 -- vbuz1=vbuz2_plus_1 
+    ldy y1
+    iny
+    sty y3
+  //SEG208 [118] phi from draw_window::@5 draw_window::@8 to draw_window::@6 [phi:draw_window::@5/draw_window::@8->draw_window::@6]
+  b6_from_b5:
+  b6_from_b8:
+  //SEG209 [118] phi (byte) draw_window::y3#2 = (byte) draw_window::y3#0 [phi:draw_window::@5/draw_window::@8->draw_window::@6#0] -- register_copy 
+    jmp b6
+  // blank inside
+  //SEG210 draw_window::@6
+  b6:
+  //SEG211 [119] (byte) draw_window::$45 ← (byte) draw_window::y3#2 << (byte) 2 -- vbuz1=vbuz2_rol_2 
+    lda y3
+    asl
+    asl
+    sta _45
+  //SEG212 [120] (byte) draw_window::$46 ← (byte) draw_window::$45 + (byte) draw_window::y3#2 -- vbuz1=vbuz2_plus_vbuz3 
+    lda _45
+    clc
+    adc y3
+    sta _46
+  //SEG213 [121] (word) draw_window::z#2 ← (byte) draw_window::$46 << (byte) 3 -- vwuz1=vbuz2_rol_3 
+    lda _46
+    sta z_2
+    lda #0
+    sta z_2+1
+    asl z_2
+    rol z_2+1
+    asl z_2
+    rol z_2+1
+    asl z_2
+    rol z_2+1
+  //SEG214 [122] (byte) draw_window::x3#0 ← (byte) draw_window::x1#0 + (byte) 1 -- vbuz1=vbuz2_plus_1 
+    ldy x1
+    iny
+    sty x3
+  //SEG215 [123] phi from draw_window::@6 draw_window::@7 to draw_window::@7 [phi:draw_window::@6/draw_window::@7->draw_window::@7]
+  b7_from_b6:
+  b7_from_b7:
+  //SEG216 [123] phi (byte) draw_window::x3#2 = (byte) draw_window::x3#0 [phi:draw_window::@6/draw_window::@7->draw_window::@7#0] -- register_copy 
+    jmp b7
+  //SEG217 draw_window::@7
+  b7:
+  //SEG218 [124] (word~) draw_window::$24 ← (word) draw_window::z#2 + (byte) draw_window::x3#2 -- vwuz1=vwuz2_plus_vbuz3 
+    lda x3
+    clc
+    adc z_2
+    sta _24
+    lda #0
+    adc z_2+1
+    sta _24+1
+  //SEG219 [125] (byte*~) draw_window::$35 ← (const byte*) screen#0 + (word~) draw_window::$24 -- pbuz1=pbuc1_plus_vwuz2 
+    lda _24
+    clc
+    adc #<screen
+    sta _35
+    lda _24+1
+    adc #>screen
+    sta _35+1
+  //SEG220 [126] *((byte*~) draw_window::$35) ← (byte) $20 -- _deref_pbuz1=vbuc1 
+    lda #$20
+    ldy #0
+    sta (_35),y
+  //SEG221 [127] (byte) draw_window::x3#1 ← ++ (byte) draw_window::x3#2 -- vbuz1=_inc_vbuz1 
+    inc x3
+  //SEG222 [128] if((byte) draw_window::x3#1<(byte) draw_window::x2#0) goto draw_window::@7 -- vbuz1_lt_vbuz2_then_la1 
+    lda x3
+    cmp x2
+    bcc b7_from_b7
+    jmp b8
+  //SEG223 draw_window::@8
+  b8:
+  //SEG224 [129] (byte) draw_window::y3#1 ← ++ (byte) draw_window::y3#2 -- vbuz1=_inc_vbuz1 
+    inc y3
+  //SEG225 [130] if((byte) draw_window::y3#1<(byte) draw_window::y2#0) goto draw_window::@6 -- vbuz1_lt_vbuz2_then_la1 
+    lda y3
+    cmp y2
+    bcc b6_from_b8
+    jmp breturn
+}
+  text: .text "this is a small test with word wrap, if a word is too long it moves it to the next line. isn't that supercalifragilisticexpialidocious? i think it's cool!@"
+  text2: .text "textbox by scan of desire@"
+
+REGISTER UPLIFT POTENTIAL REGISTERS
+Statement [6] (byte~) main::$3 ← (byte) main::x#2 + (byte) main::x#2 [ main::x#2 main::$3 ] ( main:2 [ main::x#2 main::$3 ] ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::x#2 main::x#1 ]
+Statement [8] (byte) textbox::y2#0 ← (byte) main::x#2 + (byte) $a [ main::x#2 textbox::x2#0 textbox::y2#0 ] ( main:2 [ main::x#2 textbox::x2#0 textbox::y2#0 ] ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ textbox::x2#4 textbox::x2#0 ]
+Statement [14] if((word) main::wait#1<(word) $88b8) goto main::@2 [ main::x#2 main::wait#1 ] ( main:2 [ main::x#2 main::wait#1 ] ) always clobbers reg byte a 
+Statement [32] (byte) textbox::$32 ← (byte) textbox::y#0 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$32 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$32 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$32 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$32 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$32 ] ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ textbox::x1#4 textbox::x1#0 ]
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ textbox::y2#4 textbox::y2#0 ]
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ]
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ]
+Statement [33] (byte) textbox::$33 ← (byte) textbox::$32 + (byte) textbox::y#0 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$33 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$33 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$33 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$33 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$33 ] ) always clobbers reg byte a 
+Statement [34] (word) textbox::z#0 ← (byte) textbox::$33 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] ) always clobbers reg byte a 
+Statement [38] (word~) textbox::$8 ← (word) textbox::z#3 + (byte) textbox::x#10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$8 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$8 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$8 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$8 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$8 ] ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ textbox::i#2 textbox::i#1 ]
+Statement [39] (byte*~) textbox::$31 ← (const byte*) screen#0 + (word~) textbox::$8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$31 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$31 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$31 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$31 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$31 ] ) always clobbers reg byte a 
+Statement [40] *((byte*~) textbox::$31) ← *((byte*) textbox::text#12 + (byte) textbox::i#2) [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ) always clobbers reg byte a reg byte y 
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::x#2 main::x#1 ]
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:5 [ textbox::x1#4 textbox::x1#0 ]
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:7 [ textbox::x2#4 textbox::x2#0 ]
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:8 [ textbox::y2#4 textbox::y2#0 ]
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:14 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ]
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:11 [ textbox::i#2 textbox::i#1 ]
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ]
+Statement [41] if(*((byte*) textbox::text#12 + (byte) textbox::i#2)!=(byte) $20) goto textbox::@2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ) always clobbers reg byte a reg byte y 
+Statement [44] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)==(byte) $20) goto textbox::@5 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ textbox::ls#2 textbox::ls#0 textbox::ls#1 ]
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ textbox::c#2 textbox::c#1 ]
+Statement [45] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)!=(byte) 0) goto textbox::@4 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ) always clobbers reg byte a 
+Statement [46] (byte~) textbox::$15 ← (byte) textbox::c#2 + (byte) textbox::x#10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 ] ) always clobbers reg byte a 
+Statement [47] (byte~) textbox::$17 ← (byte) textbox::x2#4 - (byte) textbox::x1#4 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 textbox::$17 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 textbox::$17 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 textbox::$17 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 textbox::$17 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 textbox::$17 ] ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ textbox::$15 ]
+Statement [58] (byte) textbox::$38 ← (byte) textbox::y#2 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$38 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$38 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$38 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$38 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$38 ] ) always clobbers reg byte a 
+Statement [59] (byte) textbox::$39 ← (byte) textbox::$38 + (byte) textbox::y#2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] ) always clobbers reg byte a 
+Statement [60] (word) textbox::z#2 ← (byte) textbox::$39 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] ) always clobbers reg byte a 
+Statement [62] if(*((byte*) textbox::text#12 + (byte) textbox::i#1)!=(byte) 0) goto textbox::@1 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] ) always clobbers reg byte a reg byte y 
+Statement [65] (byte) textbox::$35 ← (byte) textbox::y#1 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$35 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$35 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$35 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$35 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$35 ] ) always clobbers reg byte a 
+Statement [66] (byte) textbox::$36 ← (byte) textbox::$35 + (byte) textbox::y#1 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] ) always clobbers reg byte a 
+Statement [67] (word) textbox::z#1 ← (byte) textbox::$36 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] ) always clobbers reg byte a 
+Statement [71] (byte) draw_window::$36 ← (byte) draw_window::y1#0 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ textbox::y1#4 textbox::y1#0 ]
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ draw_window::x1#0 ]
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ draw_window::y1#0 ]
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ draw_window::x2#0 ]
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ draw_window::y2#0 ]
+Statement [72] (byte) draw_window::$37 ← (byte) draw_window::$36 + (byte) draw_window::y1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] ) always clobbers reg byte a 
+Statement [73] (word) draw_window::z#0 ← (byte) draw_window::$37 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] ) always clobbers reg byte a 
+Statement [74] (byte) draw_window::$39 ← (byte) draw_window::y2#0 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] ) always clobbers reg byte a 
+Statement [75] (byte) draw_window::$40 ← (byte) draw_window::$39 + (byte) draw_window::y2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] ) always clobbers reg byte a 
+Statement [76] (word) draw_window::q#0 ← (byte) draw_window::$40 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ) always clobbers reg byte a 
+Statement [79] (word~) draw_window::$13 ← (word) draw_window::z#0 + (byte) draw_window::x#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$13 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$13 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$13 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$13 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$13 ] ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:18 [ draw_window::x#2 draw_window::x#0 draw_window::x#1 ]
+Statement [80] (byte*~) draw_window::$27 ← (const byte*) screen#0 + (word~) draw_window::$13 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] ) always clobbers reg byte a 
+Statement [81] *((byte*~) draw_window::$27) ← (byte) $43 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ) always clobbers reg byte a reg byte y 
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ textbox::y1#4 textbox::y1#0 ]
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:23 [ draw_window::x1#0 ]
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:24 [ draw_window::y1#0 ]
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:25 [ draw_window::x2#0 ]
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:26 [ draw_window::y2#0 ]
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:18 [ draw_window::x#2 draw_window::x#0 draw_window::x#1 ]
+Statement [82] (word~) draw_window::$14 ← (word) draw_window::q#0 + (byte) draw_window::x#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] ) always clobbers reg byte a 
+Statement [83] (byte*~) draw_window::$28 ← (const byte*) screen#0 + (word~) draw_window::$14 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] ) always clobbers reg byte a 
+Statement [84] *((byte*~) draw_window::$28) ← (byte) $43 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ) always clobbers reg byte a reg byte y 
+Statement [87] (word~) draw_window::$2 ← (word) draw_window::z#0 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] ) always clobbers reg byte a 
+Statement [88] (byte*~) draw_window::$29 ← (const byte*) screen#0 + (word~) draw_window::$2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] ) always clobbers reg byte a 
+Statement [89] *((byte*~) draw_window::$29) ← (byte) $55 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ) always clobbers reg byte a reg byte y 
+Statement [90] (word~) draw_window::$3 ← (word) draw_window::z#0 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] ) always clobbers reg byte a 
+Statement [91] (byte*~) draw_window::$30 ← (const byte*) screen#0 + (word~) draw_window::$3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] ) always clobbers reg byte a 
+Statement [92] *((byte*~) draw_window::$30) ← (byte) $49 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ) always clobbers reg byte a reg byte y 
+Statement [95] (byte) draw_window::$42 ← (byte) draw_window::y#2 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:19 [ draw_window::y#2 draw_window::y#0 draw_window::y#1 ]
+Statement [96] (byte) draw_window::$43 ← (byte) draw_window::$42 + (byte) draw_window::y#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] ) always clobbers reg byte a 
+Statement [97] (word) draw_window::z#1 ← (byte) draw_window::$43 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ) always clobbers reg byte a 
+Statement [98] (word~) draw_window::$18 ← (word) draw_window::z#1 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$18 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$18 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$18 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$18 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$18 ] ) always clobbers reg byte a 
+Statement [99] (byte*~) draw_window::$31 ← (const byte*) screen#0 + (word~) draw_window::$18 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] ) always clobbers reg byte a 
+Statement [100] *((byte*~) draw_window::$31) ← (byte) $42 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ) always clobbers reg byte a reg byte y 
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:19 [ draw_window::y#2 draw_window::y#0 draw_window::y#1 ]
+Statement [101] (word~) draw_window::$19 ← (word) draw_window::z#1 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$19 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$19 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$19 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$19 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$19 ] ) always clobbers reg byte a 
+Statement [102] (byte*~) draw_window::$32 ← (const byte*) screen#0 + (word~) draw_window::$19 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] ) always clobbers reg byte a 
+Statement [103] *((byte*~) draw_window::$32) ← (byte) $42 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] ) always clobbers reg byte a reg byte y 
+Statement [106] (word~) draw_window::$4 ← (word) draw_window::q#0 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] ) always clobbers reg byte a 
+Statement [107] (byte*~) draw_window::$33 ← (const byte*) screen#0 + (word~) draw_window::$4 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] ) always clobbers reg byte a 
+Statement [108] *((byte*~) draw_window::$33) ← (byte) $4a [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ) always clobbers reg byte a reg byte y 
+Statement [109] (word~) draw_window::$5 ← (word) draw_window::q#0 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] ) always clobbers reg byte a 
+Statement [110] (byte*~) draw_window::$34 ← (const byte*) screen#0 + (word~) draw_window::$5 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] ) always clobbers reg byte a 
+Statement [111] *((byte*~) draw_window::$34) ← (byte) $4b [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] ) always clobbers reg byte a reg byte y 
+Statement [112] (byte~) draw_window::$6 ← (byte) draw_window::x2#0 - (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] ) always clobbers reg byte a 
+Statement [113] (byte~) draw_window::$8 ← (byte) draw_window::y2#0 - (byte) draw_window::y1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:83 [ draw_window::$6 ]
+Statement [119] (byte) draw_window::$45 ← (byte) draw_window::y3#2 << (byte) 2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ]
+Statement [120] (byte) draw_window::$46 ← (byte) draw_window::$45 + (byte) draw_window::y3#2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] ) always clobbers reg byte a 
+Statement [121] (word) draw_window::z#2 ← (byte) draw_window::$46 << (byte) 3 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] ) always clobbers reg byte a 
+Statement [124] (word~) draw_window::$24 ← (word) draw_window::z#2 + (byte) draw_window::x3#2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$24 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$24 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$24 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$24 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$24 ] ) always clobbers reg byte a 
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ draw_window::x3#2 draw_window::x3#0 draw_window::x3#1 ]
+Statement [125] (byte*~) draw_window::$35 ← (const byte*) screen#0 + (word~) draw_window::$24 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] ) always clobbers reg byte a 
+Statement [126] *((byte*~) draw_window::$35) ← (byte) $20 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] ) always clobbers reg byte a reg byte y 
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:20 [ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ]
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:21 [ draw_window::x3#2 draw_window::x3#0 draw_window::x3#1 ]
+Statement [6] (byte~) main::$3 ← (byte) main::x#2 + (byte) main::x#2 [ main::x#2 main::$3 ] ( main:2 [ main::x#2 main::$3 ] ) always clobbers reg byte a 
+Statement [8] (byte) textbox::y2#0 ← (byte) main::x#2 + (byte) $a [ main::x#2 textbox::x2#0 textbox::y2#0 ] ( main:2 [ main::x#2 textbox::x2#0 textbox::y2#0 ] ) always clobbers reg byte a reg byte x 
+Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ main::x#2 main::x#1 ]
+Removing always clobbered register reg byte x as potential for zp ZP_BYTE:7 [ textbox::x2#4 textbox::x2#0 ]
+Statement [14] if((word) main::wait#1<(word) $88b8) goto main::@2 [ main::x#2 main::wait#1 ] ( main:2 [ main::x#2 main::wait#1 ] ) always clobbers reg byte a 
+Statement [15] (byte) main::x#1 ← (byte) main::x#2 + (byte) 2 [ main::x#1 ] ( main:2 [ main::x#1 ] ) always clobbers reg byte a 
+Statement [16] if((byte) main::x#1<(byte) $f) goto main::@1 [ main::x#1 ] ( main:2 [ main::x#1 ] ) always clobbers reg byte a 
+Statement [32] (byte) textbox::$32 ← (byte) textbox::y#0 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$32 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$32 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$32 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$32 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$32 ] ) always clobbers reg byte a 
+Statement [33] (byte) textbox::$33 ← (byte) textbox::$32 + (byte) textbox::y#0 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$33 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$33 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$33 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$33 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$33 ] ) always clobbers reg byte a 
+Statement [34] (word) textbox::z#0 ← (byte) textbox::$33 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] ) always clobbers reg byte a 
+Statement [38] (word~) textbox::$8 ← (word) textbox::z#3 + (byte) textbox::x#10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$8 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$8 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$8 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$8 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$8 ] ) always clobbers reg byte a 
+Statement [39] (byte*~) textbox::$31 ← (const byte*) screen#0 + (word~) textbox::$8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$31 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$31 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$31 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$31 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$31 ] ) always clobbers reg byte a 
+Statement [40] *((byte*~) textbox::$31) ← *((byte*) textbox::text#12 + (byte) textbox::i#2) [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ) always clobbers reg byte a reg byte y 
+Statement [41] if(*((byte*) textbox::text#12 + (byte) textbox::i#2)!=(byte) $20) goto textbox::@2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ) always clobbers reg byte a reg byte y 
+Statement [44] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)==(byte) $20) goto textbox::@5 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ) always clobbers reg byte a 
+Statement [45] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)!=(byte) 0) goto textbox::@4 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ) always clobbers reg byte a 
+Statement [46] (byte~) textbox::$15 ← (byte) textbox::c#2 + (byte) textbox::x#10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 ] ) always clobbers reg byte a 
+Statement [47] (byte~) textbox::$17 ← (byte) textbox::x2#4 - (byte) textbox::x1#4 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 textbox::$17 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 textbox::$17 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 textbox::$17 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 textbox::$17 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 textbox::$17 ] ) always clobbers reg byte a 
+Statement [58] (byte) textbox::$38 ← (byte) textbox::y#2 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$38 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$38 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$38 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$38 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$38 ] ) always clobbers reg byte a 
+Statement [59] (byte) textbox::$39 ← (byte) textbox::$38 + (byte) textbox::y#2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] ) always clobbers reg byte a 
+Statement [60] (word) textbox::z#2 ← (byte) textbox::$39 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] ) always clobbers reg byte a 
+Statement [62] if(*((byte*) textbox::text#12 + (byte) textbox::i#1)!=(byte) 0) goto textbox::@1 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] ) always clobbers reg byte a reg byte y 
+Statement [65] (byte) textbox::$35 ← (byte) textbox::y#1 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$35 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$35 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$35 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$35 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$35 ] ) always clobbers reg byte a 
+Statement [66] (byte) textbox::$36 ← (byte) textbox::$35 + (byte) textbox::y#1 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] ) always clobbers reg byte a 
+Statement [67] (word) textbox::z#1 ← (byte) textbox::$36 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] ) always clobbers reg byte a 
+Statement [71] (byte) draw_window::$36 ← (byte) draw_window::y1#0 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] ) always clobbers reg byte a 
+Statement [72] (byte) draw_window::$37 ← (byte) draw_window::$36 + (byte) draw_window::y1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] ) always clobbers reg byte a 
+Statement [73] (word) draw_window::z#0 ← (byte) draw_window::$37 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] ) always clobbers reg byte a 
+Statement [74] (byte) draw_window::$39 ← (byte) draw_window::y2#0 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] ) always clobbers reg byte a 
+Statement [75] (byte) draw_window::$40 ← (byte) draw_window::$39 + (byte) draw_window::y2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] ) always clobbers reg byte a 
+Statement [76] (word) draw_window::q#0 ← (byte) draw_window::$40 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ) always clobbers reg byte a 
+Statement [79] (word~) draw_window::$13 ← (word) draw_window::z#0 + (byte) draw_window::x#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$13 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$13 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$13 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$13 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$13 ] ) always clobbers reg byte a 
+Statement [80] (byte*~) draw_window::$27 ← (const byte*) screen#0 + (word~) draw_window::$13 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] ) always clobbers reg byte a 
+Statement [81] *((byte*~) draw_window::$27) ← (byte) $43 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ) always clobbers reg byte a reg byte y 
+Statement [82] (word~) draw_window::$14 ← (word) draw_window::q#0 + (byte) draw_window::x#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] ) always clobbers reg byte a 
+Statement [83] (byte*~) draw_window::$28 ← (const byte*) screen#0 + (word~) draw_window::$14 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] ) always clobbers reg byte a 
+Statement [84] *((byte*~) draw_window::$28) ← (byte) $43 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ) always clobbers reg byte a reg byte y 
+Statement [87] (word~) draw_window::$2 ← (word) draw_window::z#0 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] ) always clobbers reg byte a 
+Statement [88] (byte*~) draw_window::$29 ← (const byte*) screen#0 + (word~) draw_window::$2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] ) always clobbers reg byte a 
+Statement [89] *((byte*~) draw_window::$29) ← (byte) $55 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ) always clobbers reg byte a reg byte y 
+Statement [90] (word~) draw_window::$3 ← (word) draw_window::z#0 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] ) always clobbers reg byte a 
+Statement [91] (byte*~) draw_window::$30 ← (const byte*) screen#0 + (word~) draw_window::$3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] ) always clobbers reg byte a 
+Statement [92] *((byte*~) draw_window::$30) ← (byte) $49 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ) always clobbers reg byte a reg byte y 
+Statement [95] (byte) draw_window::$42 ← (byte) draw_window::y#2 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] ) always clobbers reg byte a 
+Statement [96] (byte) draw_window::$43 ← (byte) draw_window::$42 + (byte) draw_window::y#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] ) always clobbers reg byte a 
+Statement [97] (word) draw_window::z#1 ← (byte) draw_window::$43 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ) always clobbers reg byte a 
+Statement [98] (word~) draw_window::$18 ← (word) draw_window::z#1 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$18 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$18 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$18 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$18 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$18 ] ) always clobbers reg byte a 
+Statement [99] (byte*~) draw_window::$31 ← (const byte*) screen#0 + (word~) draw_window::$18 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] ) always clobbers reg byte a 
+Statement [100] *((byte*~) draw_window::$31) ← (byte) $42 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ) always clobbers reg byte a reg byte y 
+Statement [101] (word~) draw_window::$19 ← (word) draw_window::z#1 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$19 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$19 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$19 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$19 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$19 ] ) always clobbers reg byte a 
+Statement [102] (byte*~) draw_window::$32 ← (const byte*) screen#0 + (word~) draw_window::$19 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] ) always clobbers reg byte a 
+Statement [103] *((byte*~) draw_window::$32) ← (byte) $42 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] ) always clobbers reg byte a reg byte y 
+Statement [106] (word~) draw_window::$4 ← (word) draw_window::q#0 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] ) always clobbers reg byte a 
+Statement [107] (byte*~) draw_window::$33 ← (const byte*) screen#0 + (word~) draw_window::$4 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] ) always clobbers reg byte a 
+Statement [108] *((byte*~) draw_window::$33) ← (byte) $4a [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ) always clobbers reg byte a reg byte y 
+Statement [109] (word~) draw_window::$5 ← (word) draw_window::q#0 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] ) always clobbers reg byte a 
+Statement [110] (byte*~) draw_window::$34 ← (const byte*) screen#0 + (word~) draw_window::$5 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] ) always clobbers reg byte a 
+Statement [111] *((byte*~) draw_window::$34) ← (byte) $4b [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] ) always clobbers reg byte a reg byte y 
+Statement [112] (byte~) draw_window::$6 ← (byte) draw_window::x2#0 - (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] ) always clobbers reg byte a 
+Statement [113] (byte~) draw_window::$8 ← (byte) draw_window::y2#0 - (byte) draw_window::y1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] ) always clobbers reg byte a 
+Statement [119] (byte) draw_window::$45 ← (byte) draw_window::y3#2 << (byte) 2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] ) always clobbers reg byte a 
+Statement [120] (byte) draw_window::$46 ← (byte) draw_window::$45 + (byte) draw_window::y3#2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] ) always clobbers reg byte a 
+Statement [121] (word) draw_window::z#2 ← (byte) draw_window::$46 << (byte) 3 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] ) always clobbers reg byte a 
+Statement [124] (word~) draw_window::$24 ← (word) draw_window::z#2 + (byte) draw_window::x3#2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$24 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$24 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$24 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$24 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$24 ] ) always clobbers reg byte a 
+Statement [125] (byte*~) draw_window::$35 ← (const byte*) screen#0 + (word~) draw_window::$24 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] ) always clobbers reg byte a 
+Statement [126] *((byte*~) draw_window::$35) ← (byte) $20 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] ) always clobbers reg byte a reg byte y 
+Statement [6] (byte~) main::$3 ← (byte) main::x#2 + (byte) main::x#2 [ main::x#2 main::$3 ] ( main:2 [ main::x#2 main::$3 ] ) always clobbers reg byte a 
+Statement [8] (byte) textbox::y2#0 ← (byte) main::x#2 + (byte) $a [ main::x#2 textbox::x2#0 textbox::y2#0 ] ( main:2 [ main::x#2 textbox::x2#0 textbox::y2#0 ] ) always clobbers reg byte a reg byte x 
+Statement [14] if((word) main::wait#1<(word) $88b8) goto main::@2 [ main::x#2 main::wait#1 ] ( main:2 [ main::x#2 main::wait#1 ] ) always clobbers reg byte a 
+Statement [15] (byte) main::x#1 ← (byte) main::x#2 + (byte) 2 [ main::x#1 ] ( main:2 [ main::x#1 ] ) always clobbers reg byte a 
+Statement [16] if((byte) main::x#1<(byte) $f) goto main::@1 [ main::x#1 ] ( main:2 [ main::x#1 ] ) always clobbers reg byte a 
+Statement [32] (byte) textbox::$32 ← (byte) textbox::y#0 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$32 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$32 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$32 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$32 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$32 ] ) always clobbers reg byte a 
+Statement [33] (byte) textbox::$33 ← (byte) textbox::$32 + (byte) textbox::y#0 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$33 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$33 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$33 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$33 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::$33 ] ) always clobbers reg byte a 
+Statement [34] (word) textbox::z#0 ← (byte) textbox::$33 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::y#0 textbox::x#0 textbox::z#0 ] ) always clobbers reg byte a 
+Statement [38] (word~) textbox::$8 ← (word) textbox::z#3 + (byte) textbox::x#10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$8 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$8 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$8 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$8 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$8 ] ) always clobbers reg byte a 
+Statement [39] (byte*~) textbox::$31 ← (const byte*) screen#0 + (word~) textbox::$8 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$31 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$31 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$31 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$31 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::$31 ] ) always clobbers reg byte a 
+Statement [40] *((byte*~) textbox::$31) ← *((byte*) textbox::text#12 + (byte) textbox::i#2) [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ) always clobbers reg byte a reg byte y 
+Statement [41] if(*((byte*) textbox::text#12 + (byte) textbox::i#2)!=(byte) $20) goto textbox::@2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 ] ) always clobbers reg byte a reg byte y 
+Statement [44] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)==(byte) $20) goto textbox::@5 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ) always clobbers reg byte a 
+Statement [45] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)!=(byte) 0) goto textbox::@4 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::ls#2 textbox::c#2 ] ) always clobbers reg byte a 
+Statement [46] (byte~) textbox::$15 ← (byte) textbox::c#2 + (byte) textbox::x#10 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 ] ) always clobbers reg byte a 
+Statement [47] (byte~) textbox::$17 ← (byte) textbox::x2#4 - (byte) textbox::x1#4 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 textbox::$17 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 textbox::$17 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 textbox::$17 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 textbox::$17 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#3 textbox::x#10 textbox::i#2 textbox::y#12 textbox::c#2 textbox::$15 textbox::$17 ] ) always clobbers reg byte a 
+Statement [58] (byte) textbox::$38 ← (byte) textbox::y#2 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$38 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$38 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$38 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$38 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$38 ] ) always clobbers reg byte a 
+Statement [59] (byte) textbox::$39 ← (byte) textbox::$38 + (byte) textbox::y#2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::$39 ] ) always clobbers reg byte a 
+Statement [60] (word) textbox::z#2 ← (byte) textbox::$39 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#1 textbox::x#12 textbox::y#2 textbox::z#2 ] ) always clobbers reg byte a 
+Statement [62] if(*((byte*) textbox::text#12 + (byte) textbox::i#1)!=(byte) 0) goto textbox::@1 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::z#4 textbox::x#7 textbox::i#1 textbox::y#11 ] ) always clobbers reg byte a reg byte y 
+Statement [65] (byte) textbox::$35 ← (byte) textbox::y#1 << (byte) 2 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$35 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$35 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$35 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$35 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$35 ] ) always clobbers reg byte a 
+Statement [66] (byte) textbox::$36 ← (byte) textbox::$35 + (byte) textbox::y#1 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::$36 ] ) always clobbers reg byte a 
+Statement [67] (word) textbox::z#1 ← (byte) textbox::$36 << (byte) 3 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] ( main:2::textbox:11 [ main::x#2 textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] main:2::textbox:18 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] main:2::textbox:20 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] main:2::textbox:22 [ textbox::x1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 textbox::i#2 textbox::y#1 textbox::z#1 ] ) always clobbers reg byte a 
+Statement [71] (byte) draw_window::$36 ← (byte) draw_window::y1#0 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$36 ] ) always clobbers reg byte a 
+Statement [72] (byte) draw_window::$37 ← (byte) draw_window::$36 + (byte) draw_window::y1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$37 ] ) always clobbers reg byte a 
+Statement [73] (word) draw_window::z#0 ← (byte) draw_window::$37 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 ] ) always clobbers reg byte a 
+Statement [74] (byte) draw_window::$39 ← (byte) draw_window::y2#0 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$39 ] ) always clobbers reg byte a 
+Statement [75] (byte) draw_window::$40 ← (byte) draw_window::$39 + (byte) draw_window::y2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::$40 ] ) always clobbers reg byte a 
+Statement [76] (word) draw_window::q#0 ← (byte) draw_window::$40 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ) always clobbers reg byte a 
+Statement [79] (word~) draw_window::$13 ← (word) draw_window::z#0 + (byte) draw_window::x#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$13 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$13 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$13 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$13 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$13 ] ) always clobbers reg byte a 
+Statement [80] (byte*~) draw_window::$27 ← (const byte*) screen#0 + (word~) draw_window::$13 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$27 ] ) always clobbers reg byte a 
+Statement [81] *((byte*~) draw_window::$27) ← (byte) $43 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ) always clobbers reg byte a reg byte y 
+Statement [82] (word~) draw_window::$14 ← (word) draw_window::q#0 + (byte) draw_window::x#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$14 ] ) always clobbers reg byte a 
+Statement [83] (byte*~) draw_window::$28 ← (const byte*) screen#0 + (word~) draw_window::$14 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 draw_window::$28 ] ) always clobbers reg byte a 
+Statement [84] *((byte*~) draw_window::$28) ← (byte) $43 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::x#2 ] ) always clobbers reg byte a reg byte y 
+Statement [87] (word~) draw_window::$2 ← (word) draw_window::z#0 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$2 ] ) always clobbers reg byte a 
+Statement [88] (byte*~) draw_window::$29 ← (const byte*) screen#0 + (word~) draw_window::$2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 draw_window::$29 ] ) always clobbers reg byte a 
+Statement [89] *((byte*~) draw_window::$29) ← (byte) $55 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::z#0 draw_window::q#0 ] ) always clobbers reg byte a reg byte y 
+Statement [90] (word~) draw_window::$3 ← (word) draw_window::z#0 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$3 ] ) always clobbers reg byte a 
+Statement [91] (byte*~) draw_window::$30 ← (const byte*) screen#0 + (word~) draw_window::$3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$30 ] ) always clobbers reg byte a 
+Statement [92] *((byte*~) draw_window::$30) ← (byte) $49 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ) always clobbers reg byte a reg byte y 
+Statement [95] (byte) draw_window::$42 ← (byte) draw_window::y#2 << (byte) 2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$42 ] ) always clobbers reg byte a 
+Statement [96] (byte) draw_window::$43 ← (byte) draw_window::$42 + (byte) draw_window::y#2 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$43 ] ) always clobbers reg byte a 
+Statement [97] (word) draw_window::z#1 ← (byte) draw_window::$43 << (byte) 3 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ) always clobbers reg byte a 
+Statement [98] (word~) draw_window::$18 ← (word) draw_window::z#1 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$18 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$18 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$18 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$18 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$18 ] ) always clobbers reg byte a 
+Statement [99] (byte*~) draw_window::$31 ← (const byte*) screen#0 + (word~) draw_window::$18 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 draw_window::$31 ] ) always clobbers reg byte a 
+Statement [100] *((byte*~) draw_window::$31) ← (byte) $42 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::z#1 ] ) always clobbers reg byte a reg byte y 
+Statement [101] (word~) draw_window::$19 ← (word) draw_window::z#1 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$19 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$19 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$19 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$19 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$19 ] ) always clobbers reg byte a 
+Statement [102] (byte*~) draw_window::$32 ← (const byte*) screen#0 + (word~) draw_window::$19 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 draw_window::$32 ] ) always clobbers reg byte a 
+Statement [103] *((byte*~) draw_window::$32) ← (byte) $42 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::y#2 ] ) always clobbers reg byte a reg byte y 
+Statement [106] (word~) draw_window::$4 ← (word) draw_window::q#0 + (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$4 ] ) always clobbers reg byte a 
+Statement [107] (byte*~) draw_window::$33 ← (const byte*) screen#0 + (word~) draw_window::$4 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 draw_window::$33 ] ) always clobbers reg byte a 
+Statement [108] *((byte*~) draw_window::$33) ← (byte) $4a [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::q#0 ] ) always clobbers reg byte a reg byte y 
+Statement [109] (word~) draw_window::$5 ← (word) draw_window::q#0 + (byte) draw_window::x2#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$5 ] ) always clobbers reg byte a 
+Statement [110] (byte*~) draw_window::$34 ← (const byte*) screen#0 + (word~) draw_window::$5 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$34 ] ) always clobbers reg byte a 
+Statement [111] *((byte*~) draw_window::$34) ← (byte) $4b [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 ] ) always clobbers reg byte a reg byte y 
+Statement [112] (byte~) draw_window::$6 ← (byte) draw_window::x2#0 - (byte) draw_window::x1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 ] ) always clobbers reg byte a 
+Statement [113] (byte~) draw_window::$8 ← (byte) draw_window::y2#0 - (byte) draw_window::y1#0 [ draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::y1#0 draw_window::x2#0 draw_window::y2#0 draw_window::$6 draw_window::$8 ] ) always clobbers reg byte a 
+Statement [119] (byte) draw_window::$45 ← (byte) draw_window::y3#2 << (byte) 2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$45 ] ) always clobbers reg byte a 
+Statement [120] (byte) draw_window::$46 ← (byte) draw_window::$45 + (byte) draw_window::y3#2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::$46 ] ) always clobbers reg byte a 
+Statement [121] (word) draw_window::z#2 ← (byte) draw_window::$46 << (byte) 3 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 ] ) always clobbers reg byte a 
+Statement [124] (word~) draw_window::$24 ← (word) draw_window::z#2 + (byte) draw_window::x3#2 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$24 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$24 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$24 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$24 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$24 ] ) always clobbers reg byte a 
+Statement [125] (byte*~) draw_window::$35 ← (const byte*) screen#0 + (word~) draw_window::$24 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 draw_window::$35 ] ) always clobbers reg byte a 
+Statement [126] *((byte*~) draw_window::$35) ← (byte) $20 [ draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] ( main:2::textbox:11::draw_window:29 [ main::x#2 textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] main:2::textbox:18::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] main:2::textbox:20::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] main:2::textbox:22::draw_window:29 [ textbox::x1#4 textbox::y1#4 textbox::x2#4 textbox::y2#4 textbox::text#12 draw_window::x1#0 draw_window::x2#0 draw_window::y2#0 draw_window::y3#2 draw_window::z#2 draw_window::x3#2 ] ) always clobbers reg byte a reg byte y 
+Potential registers zp ZP_BYTE:2 [ main::x#2 main::x#1 ] : zp ZP_BYTE:2 , 
+Potential registers zp ZP_WORD:3 [ main::wait#2 main::wait#1 ] : zp ZP_WORD:3 , 
+Potential registers zp ZP_BYTE:5 [ textbox::x1#4 textbox::x1#0 ] : zp ZP_BYTE:5 , reg byte x , 
+Potential registers zp ZP_BYTE:6 [ textbox::y1#4 textbox::y1#0 ] : zp ZP_BYTE:6 , reg byte x , 
+Potential registers zp ZP_BYTE:7 [ textbox::x2#4 textbox::x2#0 ] : zp ZP_BYTE:7 , 
+Potential registers zp ZP_BYTE:8 [ textbox::y2#4 textbox::y2#0 ] : zp ZP_BYTE:8 , reg byte x , 
+Potential registers zp ZP_WORD:9 [ textbox::text#12 ] : zp ZP_WORD:9 , 
+Potential registers zp ZP_BYTE:11 [ textbox::i#2 textbox::i#1 ] : zp ZP_BYTE:11 , reg byte x , 
+Potential registers zp ZP_BYTE:12 [ textbox::ls#2 textbox::ls#0 textbox::ls#1 ] : zp ZP_BYTE:12 , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:13 [ textbox::c#2 textbox::c#1 ] : zp ZP_BYTE:13 , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:14 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ] : zp ZP_BYTE:14 , reg byte x , 
+Potential registers zp ZP_BYTE:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ] : zp ZP_BYTE:15 , reg byte x , 
+Potential registers zp ZP_WORD:16 [ textbox::z#5 textbox::z#1 textbox::z#3 textbox::z#4 textbox::z#0 textbox::z#2 ] : zp ZP_WORD:16 , 
+Potential registers zp ZP_BYTE:18 [ draw_window::x#2 draw_window::x#0 draw_window::x#1 ] : zp ZP_BYTE:18 , reg byte x , 
+Potential registers zp ZP_BYTE:19 [ draw_window::y#2 draw_window::y#0 draw_window::y#1 ] : zp ZP_BYTE:19 , reg byte x , 
+Potential registers zp ZP_BYTE:20 [ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ] : zp ZP_BYTE:20 , reg byte x , 
+Potential registers zp ZP_BYTE:21 [ draw_window::x3#2 draw_window::x3#0 draw_window::x3#1 ] : zp ZP_BYTE:21 , reg byte x , 
+Potential registers zp ZP_BYTE:22 [ main::$3 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:23 [ draw_window::x1#0 ] : zp ZP_BYTE:23 , reg byte x , 
+Potential registers zp ZP_BYTE:24 [ draw_window::y1#0 ] : zp ZP_BYTE:24 , reg byte x , 
+Potential registers zp ZP_BYTE:25 [ draw_window::x2#0 ] : zp ZP_BYTE:25 , reg byte x , 
+Potential registers zp ZP_BYTE:26 [ draw_window::y2#0 ] : zp ZP_BYTE:26 , reg byte x , 
+Potential registers zp ZP_BYTE:27 [ textbox::$32 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:28 [ textbox::$33 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp ZP_WORD:29 [ textbox::$8 ] : zp ZP_WORD:29 , 
+Potential registers zp ZP_WORD:31 [ textbox::$31 ] : zp ZP_WORD:31 , 
+Potential registers zp ZP_BYTE:33 [ textbox::$15 ] : zp ZP_BYTE:33 , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:34 [ textbox::$17 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:35 [ textbox::$38 ] : zp ZP_BYTE:35 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:36 [ textbox::$39 ] : zp ZP_BYTE:36 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:37 [ textbox::$35 ] : zp ZP_BYTE:37 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:38 [ textbox::$36 ] : zp ZP_BYTE:38 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:39 [ draw_window::$36 ] : zp ZP_BYTE:39 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:40 [ draw_window::$37 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp ZP_WORD:41 [ draw_window::z#0 ] : zp ZP_WORD:41 , 
+Potential registers zp ZP_BYTE:43 [ draw_window::$39 ] : zp ZP_BYTE:43 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:44 [ draw_window::$40 ] : zp ZP_BYTE:44 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp ZP_WORD:45 [ draw_window::q#0 ] : zp ZP_WORD:45 , 
+Potential registers zp ZP_WORD:47 [ draw_window::$13 ] : zp ZP_WORD:47 , 
+Potential registers zp ZP_WORD:49 [ draw_window::$27 ] : zp ZP_WORD:49 , 
+Potential registers zp ZP_WORD:51 [ draw_window::$14 ] : zp ZP_WORD:51 , 
+Potential registers zp ZP_WORD:53 [ draw_window::$28 ] : zp ZP_WORD:53 , 
+Potential registers zp ZP_WORD:55 [ draw_window::$2 ] : zp ZP_WORD:55 , 
+Potential registers zp ZP_WORD:57 [ draw_window::$29 ] : zp ZP_WORD:57 , 
+Potential registers zp ZP_WORD:59 [ draw_window::$3 ] : zp ZP_WORD:59 , 
+Potential registers zp ZP_WORD:61 [ draw_window::$30 ] : zp ZP_WORD:61 , 
+Potential registers zp ZP_BYTE:63 [ draw_window::$42 ] : zp ZP_BYTE:63 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:64 [ draw_window::$43 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp ZP_WORD:65 [ draw_window::z#1 ] : zp ZP_WORD:65 , 
+Potential registers zp ZP_WORD:67 [ draw_window::$18 ] : zp ZP_WORD:67 , 
+Potential registers zp ZP_WORD:69 [ draw_window::$31 ] : zp ZP_WORD:69 , 
+Potential registers zp ZP_WORD:71 [ draw_window::$19 ] : zp ZP_WORD:71 , 
+Potential registers zp ZP_WORD:73 [ draw_window::$32 ] : zp ZP_WORD:73 , 
+Potential registers zp ZP_WORD:75 [ draw_window::$4 ] : zp ZP_WORD:75 , 
+Potential registers zp ZP_WORD:77 [ draw_window::$33 ] : zp ZP_WORD:77 , 
+Potential registers zp ZP_WORD:79 [ draw_window::$5 ] : zp ZP_WORD:79 , 
+Potential registers zp ZP_WORD:81 [ draw_window::$34 ] : zp ZP_WORD:81 , 
+Potential registers zp ZP_BYTE:83 [ draw_window::$6 ] : zp ZP_BYTE:83 , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:84 [ draw_window::$8 ] : zp ZP_BYTE:84 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:85 [ draw_window::$45 ] : zp ZP_BYTE:85 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp ZP_BYTE:86 [ draw_window::$46 ] : zp ZP_BYTE:86 , reg byte a , reg byte x , reg byte y , 
+Potential registers zp ZP_WORD:87 [ draw_window::z#2 ] : zp ZP_WORD:87 , 
+Potential registers zp ZP_WORD:89 [ draw_window::$24 ] : zp ZP_WORD:89 , 
+Potential registers zp ZP_WORD:91 [ draw_window::$35 ] : zp ZP_WORD:91 , 
+
+REGISTER UPLIFT SCOPES
+Uplift Scope [draw_window] 2,479.5: zp ZP_BYTE:21 [ draw_window::x3#2 draw_window::x3#0 draw_window::x3#1 ] 2,002: zp ZP_WORD:89 [ draw_window::$24 ] 2,002: zp ZP_WORD:91 [ draw_window::$35 ] 213.5: zp ZP_BYTE:18 [ draw_window::x#2 draw_window::x#0 draw_window::x#1 ] 202: zp ZP_WORD:47 [ draw_window::$13 ] 202: zp ZP_WORD:49 [ draw_window::$27 ] 202: zp ZP_WORD:51 [ draw_window::$14 ] 202: zp ZP_WORD:53 [ draw_window::$28 ] 202: zp ZP_BYTE:63 [ draw_window::$42 ] 202: zp ZP_BYTE:64 [ draw_window::$43 ] 202: zp ZP_WORD:67 [ draw_window::$18 ] 202: zp ZP_WORD:69 [ draw_window::$31 ] 202: zp ZP_WORD:71 [ draw_window::$19 ] 202: zp ZP_WORD:73 [ draw_window::$32 ] 202: zp ZP_BYTE:85 [ draw_window::$45 ] 202: zp ZP_BYTE:86 [ draw_window::$46 ] 196.1: zp ZP_BYTE:19 [ draw_window::y#2 draw_window::y#0 draw_window::y#1 ] 192.41: zp ZP_BYTE:20 [ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ] 137.75: zp ZP_WORD:87 [ draw_window::z#2 ] 75.75: zp ZP_WORD:65 [ draw_window::z#1 ] 19.85: zp ZP_BYTE:25 [ draw_window::x2#0 ] 6.29: zp ZP_WORD:41 [ draw_window::z#0 ] 4: zp ZP_BYTE:39 [ draw_window::$36 ] 4: zp ZP_BYTE:40 [ draw_window::$37 ] 4: zp ZP_BYTE:43 [ draw_window::$39 ] 4: zp ZP_BYTE:44 [ draw_window::$40 ] 4: zp ZP_WORD:55 [ draw_window::$2 ] 4: zp ZP_WORD:57 [ draw_window::$29 ] 4: zp ZP_WORD:59 [ draw_window::$3 ] 4: zp ZP_WORD:61 [ draw_window::$30 ] 4: zp ZP_WORD:75 [ draw_window::$4 ] 4: zp ZP_WORD:77 [ draw_window::$33 ] 4: zp ZP_WORD:79 [ draw_window::$5 ] 4: zp ZP_WORD:81 [ draw_window::$34 ] 3.5: zp ZP_BYTE:26 [ draw_window::y2#0 ] 3.37: zp ZP_BYTE:23 [ draw_window::x1#0 ] 3.24: zp ZP_WORD:45 [ draw_window::q#0 ] 2: zp ZP_BYTE:83 [ draw_window::$6 ] 2: zp ZP_BYTE:84 [ draw_window::$8 ] 0.25: zp ZP_BYTE:24 [ draw_window::y1#0 ] 
+Uplift Scope [textbox] 2,571.33: zp ZP_BYTE:12 [ textbox::ls#2 textbox::ls#0 textbox::ls#1 ] 2,316.86: zp ZP_BYTE:13 [ textbox::c#2 textbox::c#1 ] 777.88: zp ZP_BYTE:14 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ] 585.83: zp ZP_WORD:16 [ textbox::z#5 textbox::z#1 textbox::z#3 textbox::z#4 textbox::z#0 textbox::z#2 ] 466.16: zp ZP_BYTE:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ] 202: zp ZP_WORD:29 [ textbox::$8 ] 202: zp ZP_WORD:31 [ textbox::$31 ] 202: zp ZP_BYTE:35 [ textbox::$38 ] 202: zp ZP_BYTE:36 [ textbox::$39 ] 202: zp ZP_BYTE:37 [ textbox::$35 ] 202: zp ZP_BYTE:38 [ textbox::$36 ] 101: zp ZP_BYTE:33 [ textbox::$15 ] 101: zp ZP_BYTE:34 [ textbox::$17 ] 50.5: zp ZP_BYTE:11 [ textbox::i#2 textbox::i#1 ] 50.11: zp ZP_WORD:9 [ textbox::text#12 ] 24.5: zp ZP_BYTE:6 [ textbox::y1#4 textbox::y1#0 ] 17.91: zp ZP_BYTE:5 [ textbox::x1#4 textbox::x1#0 ] 12.41: zp ZP_BYTE:7 [ textbox::x2#4 textbox::x2#0 ] 12.05: zp ZP_BYTE:8 [ textbox::y2#4 textbox::y2#0 ] 4: zp ZP_BYTE:27 [ textbox::$32 ] 4: zp ZP_BYTE:28 [ textbox::$33 ] 
+Uplift Scope [main] 353.5: zp ZP_WORD:3 [ main::wait#2 main::wait#1 ] 24.2: zp ZP_BYTE:2 [ main::x#2 main::x#1 ] 22: zp ZP_BYTE:22 [ main::$3 ] 
+Uplift Scope [] 
+
+Uplifting [draw_window] best 188817 combination reg byte x [ draw_window::x3#2 draw_window::x3#0 draw_window::x3#1 ] zp ZP_WORD:89 [ draw_window::$24 ] zp ZP_WORD:91 [ draw_window::$35 ] reg byte x [ draw_window::x#2 draw_window::x#0 draw_window::x#1 ] zp ZP_WORD:47 [ draw_window::$13 ] zp ZP_WORD:49 [ draw_window::$27 ] zp ZP_WORD:51 [ draw_window::$14 ] zp ZP_WORD:53 [ draw_window::$28 ] reg byte a [ draw_window::$42 ] reg byte a [ draw_window::$43 ] zp ZP_WORD:67 [ draw_window::$18 ] zp ZP_WORD:69 [ draw_window::$31 ] zp ZP_WORD:71 [ draw_window::$19 ] zp ZP_WORD:73 [ draw_window::$32 ] reg byte a [ draw_window::$45 ] zp ZP_BYTE:86 [ draw_window::$46 ] zp ZP_BYTE:19 [ draw_window::y#2 draw_window::y#0 draw_window::y#1 ] zp ZP_BYTE:20 [ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ] zp ZP_WORD:87 [ draw_window::z#2 ] zp ZP_WORD:65 [ draw_window::z#1 ] zp ZP_BYTE:25 [ draw_window::x2#0 ] zp ZP_WORD:41 [ draw_window::z#0 ] zp ZP_BYTE:39 [ draw_window::$36 ] zp ZP_BYTE:40 [ draw_window::$37 ] zp ZP_BYTE:43 [ draw_window::$39 ] zp ZP_BYTE:44 [ draw_window::$40 ] zp ZP_WORD:55 [ draw_window::$2 ] zp ZP_WORD:57 [ draw_window::$29 ] zp ZP_WORD:59 [ draw_window::$3 ] zp ZP_WORD:61 [ draw_window::$30 ] zp ZP_WORD:75 [ draw_window::$4 ] zp ZP_WORD:77 [ draw_window::$33 ] zp ZP_WORD:79 [ draw_window::$5 ] zp ZP_WORD:81 [ draw_window::$34 ] zp ZP_BYTE:26 [ draw_window::y2#0 ] zp ZP_BYTE:23 [ draw_window::x1#0 ] zp ZP_WORD:45 [ draw_window::q#0 ] zp ZP_BYTE:83 [ draw_window::$6 ] zp ZP_BYTE:84 [ draw_window::$8 ] zp ZP_BYTE:24 [ draw_window::y1#0 ] 
+Limited combination testing to 100 combinations of 201326592 possible.
+Uplifting [textbox] best 172517 combination reg byte y [ textbox::ls#2 textbox::ls#0 textbox::ls#1 ] reg byte x [ textbox::c#2 textbox::c#1 ] zp ZP_BYTE:14 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ] zp ZP_WORD:16 [ textbox::z#5 textbox::z#1 textbox::z#3 textbox::z#4 textbox::z#0 textbox::z#2 ] zp ZP_BYTE:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ] zp ZP_WORD:29 [ textbox::$8 ] zp ZP_WORD:31 [ textbox::$31 ] reg byte a [ textbox::$38 ] zp ZP_BYTE:36 [ textbox::$39 ] zp ZP_BYTE:37 [ textbox::$35 ] zp ZP_BYTE:38 [ textbox::$36 ] zp ZP_BYTE:33 [ textbox::$15 ] zp ZP_BYTE:34 [ textbox::$17 ] zp ZP_BYTE:11 [ textbox::i#2 textbox::i#1 ] zp ZP_WORD:9 [ textbox::text#12 ] zp ZP_BYTE:6 [ textbox::y1#4 textbox::y1#0 ] zp ZP_BYTE:5 [ textbox::x1#4 textbox::x1#0 ] zp ZP_BYTE:7 [ textbox::x2#4 textbox::x2#0 ] zp ZP_BYTE:8 [ textbox::y2#4 textbox::y2#0 ] zp ZP_BYTE:27 [ textbox::$32 ] zp ZP_BYTE:28 [ textbox::$33 ] 
+Limited combination testing to 100 combinations of 28311552 possible.
+Uplifting [main] best 172477 combination zp ZP_WORD:3 [ main::wait#2 main::wait#1 ] zp ZP_BYTE:2 [ main::x#2 main::x#1 ] reg byte a [ main::$3 ] 
+Uplifting [] best 172477 combination 
+Attempting to uplift remaining variables inzp ZP_BYTE:14 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ]
+Uplifting [textbox] best 172477 combination zp ZP_BYTE:14 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ]
+Uplifting [textbox] best 172477 combination zp ZP_BYTE:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:36 [ textbox::$39 ]
+Uplifting [textbox] best 171877 combination reg byte a [ textbox::$39 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:37 [ textbox::$35 ]
+Uplifting [textbox] best 171277 combination reg byte a [ textbox::$35 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:38 [ textbox::$36 ]
+Uplifting [textbox] best 170677 combination reg byte a [ textbox::$36 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:86 [ draw_window::$46 ]
+Uplifting [draw_window] best 170077 combination reg byte a [ draw_window::$46 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:19 [ draw_window::y#2 draw_window::y#0 draw_window::y#1 ]
+Uplifting [draw_window] best 169674 combination reg byte x [ draw_window::y#2 draw_window::y#0 draw_window::y#1 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:20 [ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ]
+Uplifting [draw_window] best 169674 combination zp ZP_BYTE:20 [ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:33 [ textbox::$15 ]
+Uplifting [textbox] best 169274 combination reg byte y [ textbox::$15 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:34 [ textbox::$17 ]
+Uplifting [textbox] best 169274 combination zp ZP_BYTE:34 [ textbox::$17 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:11 [ textbox::i#2 textbox::i#1 ]
+Uplifting [textbox] best 169274 combination zp ZP_BYTE:11 [ textbox::i#2 textbox::i#1 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:6 [ textbox::y1#4 textbox::y1#0 ]
+Uplifting [textbox] best 169274 combination zp ZP_BYTE:6 [ textbox::y1#4 textbox::y1#0 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::x#2 main::x#1 ]
+Uplifting [main] best 169274 combination zp ZP_BYTE:2 [ main::x#2 main::x#1 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:25 [ draw_window::x2#0 ]
+Uplifting [draw_window] best 169274 combination zp ZP_BYTE:25 [ draw_window::x2#0 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:5 [ textbox::x1#4 textbox::x1#0 ]
+Uplifting [textbox] best 169274 combination zp ZP_BYTE:5 [ textbox::x1#4 textbox::x1#0 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:7 [ textbox::x2#4 textbox::x2#0 ]
+Uplifting [textbox] best 169274 combination zp ZP_BYTE:7 [ textbox::x2#4 textbox::x2#0 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:8 [ textbox::y2#4 textbox::y2#0 ]
+Uplifting [textbox] best 169274 combination zp ZP_BYTE:8 [ textbox::y2#4 textbox::y2#0 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:27 [ textbox::$32 ]
+Uplifting [textbox] best 169268 combination reg byte a [ textbox::$32 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:28 [ textbox::$33 ]
+Uplifting [textbox] best 169262 combination reg byte a [ textbox::$33 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:39 [ draw_window::$36 ]
+Uplifting [draw_window] best 169256 combination reg byte a [ draw_window::$36 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:40 [ draw_window::$37 ]
+Uplifting [draw_window] best 169250 combination reg byte a [ draw_window::$37 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:43 [ draw_window::$39 ]
+Uplifting [draw_window] best 169244 combination reg byte a [ draw_window::$39 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:44 [ draw_window::$40 ]
+Uplifting [draw_window] best 169238 combination reg byte a [ draw_window::$40 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:26 [ draw_window::y2#0 ]
+Uplifting [draw_window] best 169238 combination zp ZP_BYTE:26 [ draw_window::y2#0 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:23 [ draw_window::x1#0 ]
+Uplifting [draw_window] best 169238 combination zp ZP_BYTE:23 [ draw_window::x1#0 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:83 [ draw_window::$6 ]
+Uplifting [draw_window] best 169234 combination reg byte x [ draw_window::$6 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:84 [ draw_window::$8 ]
+Uplifting [draw_window] best 169228 combination reg byte a [ draw_window::$8 ] 
+Attempting to uplift remaining variables inzp ZP_BYTE:24 [ draw_window::y1#0 ]
+Uplifting [draw_window] best 169228 combination zp ZP_BYTE:24 [ draw_window::y1#0 ] 
+Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ main::x#2 main::x#1 ] ] with [ zp ZP_BYTE:5 [ textbox::x1#4 textbox::x1#0 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_BYTE:6 [ textbox::y1#4 textbox::y1#0 ] ] with [ zp ZP_BYTE:15 [ textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_BYTE:6 [ textbox::y1#4 textbox::y1#0 textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 ] ] with [ zp ZP_BYTE:24 [ draw_window::y1#0 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_BYTE:7 [ textbox::x2#4 textbox::x2#0 ] ] with [ zp ZP_BYTE:25 [ draw_window::x2#0 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_BYTE:8 [ textbox::y2#4 textbox::y2#0 ] ] with [ zp ZP_BYTE:26 [ draw_window::y2#0 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_WORD:29 [ textbox::$8 ] ] with [ zp ZP_WORD:31 [ textbox::$31 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_WORD:41 [ draw_window::z#0 ] ] with [ zp ZP_WORD:59 [ draw_window::$3 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_WORD:45 [ draw_window::q#0 ] ] with [ zp ZP_WORD:79 [ draw_window::$5 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_WORD:47 [ draw_window::$13 ] ] with [ zp ZP_WORD:49 [ draw_window::$27 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_WORD:51 [ draw_window::$14 ] ] with [ zp ZP_WORD:53 [ draw_window::$28 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_WORD:55 [ draw_window::$2 ] ] with [ zp ZP_WORD:57 [ draw_window::$29 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_WORD:65 [ draw_window::z#1 ] ] with [ zp ZP_WORD:71 [ draw_window::$19 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_WORD:67 [ draw_window::$18 ] ] with [ zp ZP_WORD:69 [ draw_window::$31 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_WORD:75 [ draw_window::$4 ] ] with [ zp ZP_WORD:77 [ draw_window::$33 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_WORD:89 [ draw_window::$24 ] ] with [ zp ZP_WORD:91 [ draw_window::$35 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ main::x#2 main::x#1 textbox::x1#4 textbox::x1#0 ] ] with [ zp ZP_BYTE:23 [ draw_window::x1#0 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_WORD:41 [ draw_window::z#0 draw_window::$3 ] ] with [ zp ZP_WORD:61 [ draw_window::$30 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_WORD:45 [ draw_window::q#0 draw_window::$5 ] ] with [ zp ZP_WORD:81 [ draw_window::$34 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_WORD:65 [ draw_window::z#1 draw_window::$19 ] ] with [ zp ZP_WORD:73 [ draw_window::$32 ] ] - score: 1
+Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:5 [ textbox::y1#4 textbox::y1#0 textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 draw_window::y1#0 ]
+Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:6 [ textbox::x2#4 textbox::x2#0 draw_window::x2#0 ]
+Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:7 [ textbox::y2#4 textbox::y2#0 draw_window::y2#0 ]
+Allocated (was zp ZP_WORD:9) zp ZP_WORD:8 [ textbox::text#12 ]
+Allocated (was zp ZP_BYTE:11) zp ZP_BYTE:10 [ textbox::i#2 textbox::i#1 ]
+Allocated (was zp ZP_BYTE:14) zp ZP_BYTE:11 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ]
+Allocated (was zp ZP_WORD:16) zp ZP_WORD:12 [ textbox::z#5 textbox::z#1 textbox::z#3 textbox::z#4 textbox::z#0 textbox::z#2 ]
+Allocated (was zp ZP_BYTE:20) zp ZP_BYTE:14 [ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ]
+Allocated (was zp ZP_WORD:29) zp ZP_WORD:15 [ textbox::$8 textbox::$31 ]
+Allocated (was zp ZP_BYTE:34) zp ZP_BYTE:17 [ textbox::$17 ]
+Allocated (was zp ZP_WORD:41) zp ZP_WORD:18 [ draw_window::z#0 draw_window::$3 draw_window::$30 ]
+Allocated (was zp ZP_WORD:45) zp ZP_WORD:20 [ draw_window::q#0 draw_window::$5 draw_window::$34 ]
+Allocated (was zp ZP_WORD:47) zp ZP_WORD:22 [ draw_window::$13 draw_window::$27 ]
+Allocated (was zp ZP_WORD:51) zp ZP_WORD:24 [ draw_window::$14 draw_window::$28 ]
+Allocated (was zp ZP_WORD:55) zp ZP_WORD:26 [ draw_window::$2 draw_window::$29 ]
+Allocated (was zp ZP_WORD:65) zp ZP_WORD:28 [ draw_window::z#1 draw_window::$19 draw_window::$32 ]
+Allocated (was zp ZP_WORD:67) zp ZP_WORD:30 [ draw_window::$18 draw_window::$31 ]
+Allocated (was zp ZP_WORD:75) zp ZP_WORD:32 [ draw_window::$4 draw_window::$33 ]
+Allocated (was zp ZP_WORD:87) zp ZP_WORD:34 [ draw_window::z#2 ]
+Allocated (was zp ZP_WORD:89) zp ZP_WORD:36 [ draw_window::$24 draw_window::$35 ]
+
+ASSEMBLER BEFORE OPTIMIZATION
+//SEG0 File Comments
+/* Textbox routine with word wrap for KickC by Scan/Desire */
+//SEG1 Basic Upstart
+.pc = $801 "Basic"
+:BasicUpstart(bbegin)
+.pc = $80d "Program"
+//SEG2 Global Constants & labels
+  .label screen = $400
+//SEG3 @begin
+bbegin:
+//SEG4 [1] phi from @begin to @1 [phi:@begin->@1]
+b1_from_bbegin:
+  jmp b1
+//SEG5 @1
+b1:
+//SEG6 [2] call main 
+//SEG7 [4] phi from @1 to main [phi:@1->main]
+main_from_b1:
+  jsr main
+//SEG8 [3] phi from @1 to @end [phi:@1->@end]
+bend_from_b1:
+  jmp bend
+//SEG9 @end
+bend:
+//SEG10 main
+main: {
+    .label wait = 3
+    .label x = 2
+  //SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
+  b1_from_main:
+  //SEG12 [5] phi (byte) main::x#2 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 
+    lda #0
+    sta x
+    jmp b1
+  //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1]
+  b1_from_b3:
+  //SEG14 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@3->main::@1#0] -- register_copy 
+    jmp b1
+  //SEG15 main::@1
+  b1:
+  //SEG16 [6] (byte~) main::$3 ← (byte) main::x#2 + (byte) main::x#2 -- vbuaa=vbuz1_plus_vbuz1 
+    lda x
+    asl
+  //SEG17 [7] (byte) textbox::x2#0 ← (byte~) main::$3 + (byte) 1 -- vbuz1=vbuaa_plus_1 
+    clc
+    adc #1
+    sta textbox.x2
+  //SEG18 [8] (byte) textbox::y2#0 ← (byte) main::x#2 + (byte) $a -- vbuz1=vbuz2_plus_vbuc1 
+    lax x
+    axs #-[$a]
+    stx textbox.y2
+  //SEG19 [9] (byte) textbox::x1#0 ← (byte) main::x#2
+  //SEG20 [10] (byte) textbox::y1#0 ← (byte) main::x#2 -- vbuz1=vbuz2 
+    lda x
+    sta textbox.y1
+  //SEG21 [11] call textbox 
+  //SEG22 [24] phi from main::@1 to textbox [phi:main::@1->textbox]
+  textbox_from_b1:
+  //SEG23 [24] phi (byte*) textbox::text#12 = (const byte[]) text2#0 [phi:main::@1->textbox#0] -- pbuz1=pbuc1 
+    lda #<text2
+    sta textbox.text
+    lda #>text2
+    sta textbox.text+1
+  //SEG24 [24] phi (byte) textbox::y2#4 = (byte) textbox::y2#0 [phi:main::@1->textbox#1] -- register_copy 
+  //SEG25 [24] phi (byte) textbox::x2#4 = (byte) textbox::x2#0 [phi:main::@1->textbox#2] -- register_copy 
+  //SEG26 [24] phi (byte) textbox::y1#4 = (byte) textbox::y1#0 [phi:main::@1->textbox#3] -- register_copy 
+  //SEG27 [24] phi (byte) textbox::x1#4 = (byte) textbox::x1#0 [phi:main::@1->textbox#4] -- register_copy 
+    jsr textbox
+  //SEG28 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
+  b2_from_b1:
+  //SEG29 [12] phi (word) main::wait#2 = (byte) 0 [phi:main::@1->main::@2#0] -- vwuz1=vbuc1 
+    lda #0
+    sta wait
+    lda #0
+    sta wait+1
+    jmp b2
+  //SEG30 [12] phi from main::@2 to main::@2 [phi:main::@2->main::@2]
+  b2_from_b2:
+  //SEG31 [12] phi (word) main::wait#2 = (word) main::wait#1 [phi:main::@2->main::@2#0] -- register_copy 
+    jmp b2
+  //SEG32 main::@2
+  b2:
+  //SEG33 [13] (word) main::wait#1 ← ++ (word) main::wait#2 -- vwuz1=_inc_vwuz1 
+    inc wait
+    bne !+
+    inc wait+1
+  !:
+  //SEG34 [14] if((word) main::wait#1<(word) $88b8) goto main::@2 -- vwuz1_lt_vwuc1_then_la1 
+    lda wait+1
+    cmp #>$88b8
+    bcc b2_from_b2
+    bne !+
+    lda wait
+    cmp #<$88b8
+    bcc b2_from_b2
+  !:
+    jmp b3
+  //SEG35 main::@3
+  b3:
+  //SEG36 [15] (byte) main::x#1 ← (byte) main::x#2 + (byte) 2 -- vbuz1=vbuz1_plus_2 
+    lda x
+    clc
+    adc #2
+    sta x
+  //SEG37 [16] if((byte) main::x#1<(byte) $f) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 
+    lda x
+    cmp #$f
+    bcc b1_from_b3
+  //SEG38 [17] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
+  b4_from_b3:
+    jmp b4
+  //SEG39 main::@4
+  b4:
+  //SEG40 [18] call textbox 
+  //SEG41 [24] phi from main::@4 to textbox [phi:main::@4->textbox]
+  textbox_from_b4:
+  //SEG42 [24] phi (byte*) textbox::text#12 = (const byte[]) text#0 [phi:main::@4->textbox#0] -- pbuz1=pbuc1 
+    lda #<text
+    sta textbox.text
+    lda #>text
+    sta textbox.text+1
+  //SEG43 [24] phi (byte) textbox::y2#4 = (byte) $18 [phi:main::@4->textbox#1] -- vbuz1=vbuc1 
+    lda #$18
+    sta textbox.y2
+  //SEG44 [24] phi (byte) textbox::x2#4 = (byte) $14 [phi:main::@4->textbox#2] -- vbuz1=vbuc1 
+    lda #$14
+    sta textbox.x2
+  //SEG45 [24] phi (byte) textbox::y1#4 = (byte) $c [phi:main::@4->textbox#3] -- vbuz1=vbuc1 
+    lda #$c
+    sta textbox.y1
+  //SEG46 [24] phi (byte) textbox::x1#4 = (byte) 0 [phi:main::@4->textbox#4] -- vbuz1=vbuc1 
+    lda #0
+    sta textbox.x1
+    jsr textbox
+  //SEG47 [19] phi from main::@4 to main::@6 [phi:main::@4->main::@6]
+  b6_from_b4:
+    jmp b6
+  //SEG48 main::@6
+  b6:
+  //SEG49 [20] call textbox 
+  //SEG50 [24] phi from main::@6 to textbox [phi:main::@6->textbox]
+  textbox_from_b6:
+  //SEG51 [24] phi (byte*) textbox::text#12 = (const byte[]) text#0 [phi:main::@6->textbox#0] -- pbuz1=pbuc1 
+    lda #<text
+    sta textbox.text
+    lda #>text
+    sta textbox.text+1
+  //SEG52 [24] phi (byte) textbox::y2#4 = (byte) 9 [phi:main::@6->textbox#1] -- vbuz1=vbuc1 
+    lda #9
+    sta textbox.y2
+  //SEG53 [24] phi (byte) textbox::x2#4 = (byte) $25 [phi:main::@6->textbox#2] -- vbuz1=vbuc1 
+    lda #$25
+    sta textbox.x2
+  //SEG54 [24] phi (byte) textbox::y1#4 = (byte) 3 [phi:main::@6->textbox#3] -- vbuz1=vbuc1 
+    lda #3
+    sta textbox.y1
+  //SEG55 [24] phi (byte) textbox::x1#4 = (byte) 3 [phi:main::@6->textbox#4] -- vbuz1=vbuc1 
+    lda #3
+    sta textbox.x1
+    jsr textbox
+  //SEG56 [21] phi from main::@6 to main::@7 [phi:main::@6->main::@7]
+  b7_from_b6:
+    jmp b7
+  //SEG57 main::@7
+  b7:
+  //SEG58 [22] call textbox 
+  //SEG59 [24] phi from main::@7 to textbox [phi:main::@7->textbox]
+  textbox_from_b7:
+  //SEG60 [24] phi (byte*) textbox::text#12 = (const byte[]) text#0 [phi:main::@7->textbox#0] -- pbuz1=pbuc1 
+    lda #<text
+    sta textbox.text
+    lda #>text
+    sta textbox.text+1
+  //SEG61 [24] phi (byte) textbox::y2#4 = (byte) $18 [phi:main::@7->textbox#1] -- vbuz1=vbuc1 
+    lda #$18
+    sta textbox.y2
+  //SEG62 [24] phi (byte) textbox::x2#4 = (byte) $27 [phi:main::@7->textbox#2] -- vbuz1=vbuc1 
+    lda #$27
+    sta textbox.x2
+  //SEG63 [24] phi (byte) textbox::y1#4 = (byte) 8 [phi:main::@7->textbox#3] -- vbuz1=vbuc1 
+    lda #8
+    sta textbox.y1
+  //SEG64 [24] phi (byte) textbox::x1#4 = (byte) $1e [phi:main::@7->textbox#4] -- vbuz1=vbuc1 
+    lda #$1e
+    sta textbox.x1
+    jsr textbox
+  //SEG65 [23] phi from main::@5 main::@7 to main::@5 [phi:main::@5/main::@7->main::@5]
+  b5_from_b5:
+  b5_from_b7:
+    jmp b5
+  //SEG66 main::@5
+  b5:
+    jmp b5_from_b5
+}
+//SEG67 textbox
+// textbox(byte zeropage(2) x1, byte zeropage(5) y1, byte zeropage(6) x2, byte zeropage(7) y2, byte* zeropage(8) text)
+textbox: {
+    .label _8 = $f
+    .label _17 = $11
+    .label x1 = 2
+    .label y1 = 5
+    .label x2 = 6
+    .label y2 = 7
+    .label y = 5
+    .label x = $b
+    .label z = $c
+    .label i = $a
+    .label text = 8
+    .label _31 = $f
+  //SEG68 [25] (byte) draw_window::x1#0 ← (byte) textbox::x1#4
+  //SEG69 [26] (byte) draw_window::y1#0 ← (byte) textbox::y1#4
+  //SEG70 [27] (byte) draw_window::x2#0 ← (byte) textbox::x2#4
+  //SEG71 [28] (byte) draw_window::y2#0 ← (byte) textbox::y2#4
+  //SEG72 [29] call draw_window 
+    jsr draw_window
+    jmp b12
+  //SEG73 textbox::@12
+  b12:
+  //SEG74 [30] (byte) textbox::y#0 ← (byte) textbox::y1#4 + (byte) 1 -- vbuz1=vbuz1_plus_1 
+    inc y
+  //SEG75 [31] (byte) textbox::x#0 ← (byte) textbox::x1#4 + (byte) 1 -- vbuz1=vbuz2_plus_1 
+    ldy x1
+    iny
+    sty x
+  //SEG76 [32] (byte) textbox::$32 ← (byte) textbox::y#0 << (byte) 2 -- vbuaa=vbuz1_rol_2 
+    lda y
+    asl
+    asl
+  //SEG77 [33] (byte) textbox::$33 ← (byte) textbox::$32 + (byte) textbox::y#0 -- vbuaa=vbuaa_plus_vbuz1 
+    clc
+    adc y
+  //SEG78 [34] (word) textbox::z#0 ← (byte) textbox::$33 << (byte) 3 -- vwuz1=vbuaa_rol_3 
+    sta z
+    lda #0
+    sta z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+  //SEG79 [35] if((byte) textbox::x#0==(byte) textbox::x2#4) goto textbox::@return -- vbuz1_eq_vbuz2_then_la1 
+    lda x
+    cmp x2
+    beq breturn
+    jmp b13
+  //SEG80 textbox::@13
+  b13:
+  //SEG81 [36] if((byte) textbox::y#0==(byte) textbox::y2#4) goto textbox::@return -- vbuz1_eq_vbuz2_then_la1 
+    lda y
+    cmp y2
+    beq breturn
+  //SEG82 [37] phi from textbox::@13 to textbox::@1 [phi:textbox::@13->textbox::@1]
+  b1_from_b13:
+  //SEG83 [37] phi (byte) textbox::y#12 = (byte) textbox::y#0 [phi:textbox::@13->textbox::@1#0] -- register_copy 
+  //SEG84 [37] phi (byte) textbox::i#2 = (byte) 0 [phi:textbox::@13->textbox::@1#1] -- vbuz1=vbuc1 
+    lda #0
+    sta i
+  //SEG85 [37] phi (byte) textbox::x#10 = (byte) textbox::x#0 [phi:textbox::@13->textbox::@1#2] -- register_copy 
+  //SEG86 [37] phi (word) textbox::z#3 = (word) textbox::z#0 [phi:textbox::@13->textbox::@1#3] -- register_copy 
+    jmp b1
+  //SEG87 [37] phi from textbox::@8 to textbox::@1 [phi:textbox::@8->textbox::@1]
+  b1_from_b8:
+  //SEG88 [37] phi (byte) textbox::y#12 = (byte) textbox::y#11 [phi:textbox::@8->textbox::@1#0] -- register_copy 
+  //SEG89 [37] phi (byte) textbox::i#2 = (byte) textbox::i#1 [phi:textbox::@8->textbox::@1#1] -- register_copy 
+  //SEG90 [37] phi (byte) textbox::x#10 = (byte) textbox::x#7 [phi:textbox::@8->textbox::@1#2] -- register_copy 
+  //SEG91 [37] phi (word) textbox::z#3 = (word) textbox::z#4 [phi:textbox::@8->textbox::@1#3] -- register_copy 
+    jmp b1
+  //SEG92 textbox::@1
+  b1:
+  //SEG93 [38] (word~) textbox::$8 ← (word) textbox::z#3 + (byte) textbox::x#10 -- vwuz1=vwuz2_plus_vbuz3 
+    lda x
+    clc
+    adc z
+    sta _8
+    lda #0
+    adc z+1
+    sta _8+1
+  //SEG94 [39] (byte*~) textbox::$31 ← (const byte*) screen#0 + (word~) textbox::$8 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _31
+    adc #<screen
+    sta _31
+    lda _31+1
+    adc #>screen
+    sta _31+1
+  //SEG95 [40] *((byte*~) textbox::$31) ← *((byte*) textbox::text#12 + (byte) textbox::i#2) -- _deref_pbuz1=pbuz2_derefidx_vbuz3 
+    ldy i
+    lda (text),y
+    ldy #0
+    sta (_31),y
+  //SEG96 [41] if(*((byte*) textbox::text#12 + (byte) textbox::i#2)!=(byte) $20) goto textbox::@2 -- pbuz1_derefidx_vbuz2_neq_vbuc1_then_la1 
+    ldy i
+    lda (text),y
+    cmp #$20
+    bne b2_from_b1
+    jmp b10
+  //SEG97 textbox::@10
+  b10:
+  //SEG98 [42] (byte) textbox::ls#0 ← (byte) textbox::i#2 + (byte) 1 -- vbuyy=vbuz1_plus_1 
+    ldy i
+    iny
+  //SEG99 [43] phi from textbox::@10 to textbox::@3 [phi:textbox::@10->textbox::@3]
+  b3_from_b10:
+  //SEG100 [43] phi (byte) textbox::c#2 = (byte) 0 [phi:textbox::@10->textbox::@3#0] -- vbuxx=vbuc1 
+    ldx #0
+  //SEG101 [43] phi (byte) textbox::ls#2 = (byte) textbox::ls#0 [phi:textbox::@10->textbox::@3#1] -- register_copy 
+    jmp b3
+  //SEG102 textbox::@3
+  b3:
+  //SEG103 [44] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)==(byte) $20) goto textbox::@5 -- pbuz1_derefidx_vbuyy_eq_vbuc1_then_la1 
+    lda (text),y
+    cmp #$20
+    beq b5
+    jmp b14
+  //SEG104 textbox::@14
+  b14:
+  //SEG105 [45] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)!=(byte) 0) goto textbox::@4 -- pbuz1_derefidx_vbuyy_neq_0_then_la1 
+    lda (text),y
+    cmp #0
+    bne b4
+    jmp b5
+  //SEG106 textbox::@5
+  b5:
+  //SEG107 [46] (byte~) textbox::$15 ← (byte) textbox::c#2 + (byte) textbox::x#10 -- vbuyy=vbuxx_plus_vbuz1 
+    txa
+    clc
+    adc x
+    tay
+  //SEG108 [47] (byte~) textbox::$17 ← (byte) textbox::x2#4 - (byte) textbox::x1#4 -- vbuz1=vbuz2_minus_vbuz3 
+    lda x2
+    sec
+    sbc x1
+    sta _17
+  //SEG109 [48] if((byte~) textbox::$15<(byte) textbox::x2#4) goto textbox::@2 -- vbuyy_lt_vbuz1_then_la1 
+    cpy x2
+    bcc b2_from_b5
+    jmp b15
+  //SEG110 textbox::@15
+  b15:
+  //SEG111 [49] if((byte) textbox::c#2<(byte~) textbox::$17) goto textbox::@6 -- vbuxx_lt_vbuz1_then_la1 
+    cpx _17
+    bcc b6
+  //SEG112 [50] phi from textbox::@15 to textbox::@2 [phi:textbox::@15->textbox::@2]
+  b2_from_b15:
+    jmp b2
+  //SEG113 [50] phi from textbox::@1 textbox::@5 textbox::@7 to textbox::@2 [phi:textbox::@1/textbox::@5/textbox::@7->textbox::@2]
+  b2_from_b1:
+  b2_from_b5:
+  b2_from_b7:
+  //SEG114 [50] phi (word) textbox::z#5 = (word) textbox::z#3 [phi:textbox::@1/textbox::@5/textbox::@7->textbox::@2#0] -- register_copy 
+  //SEG115 [50] phi (byte) textbox::y#5 = (byte) textbox::y#12 [phi:textbox::@1/textbox::@5/textbox::@7->textbox::@2#1] -- register_copy 
+  //SEG116 [50] phi (byte) textbox::x#5 = (byte) textbox::x#10 [phi:textbox::@1/textbox::@5/textbox::@7->textbox::@2#2] -- register_copy 
+    jmp b2
+  //SEG117 textbox::@2
+  b2:
+  //SEG118 [51] (byte) textbox::i#1 ← ++ (byte) textbox::i#2 -- vbuz1=_inc_vbuz1 
+    inc i
+  //SEG119 [52] (byte) textbox::x#1 ← ++ (byte) textbox::x#5 -- vbuz1=_inc_vbuz1 
+    inc x
+  //SEG120 [53] if((byte) textbox::x#1!=(byte) textbox::x2#4) goto textbox::@8 -- vbuz1_neq_vbuz2_then_la1 
+    lda x
+    cmp x2
+    bne b8_from_b2
+    jmp b11
+  //SEG121 textbox::@11
+  b11:
+  //SEG122 [54] (byte) textbox::x#12 ← (byte) textbox::x1#4 + (byte) 1 -- vbuz1=vbuz2_plus_1 
+    ldy x1
+    iny
+    sty x
+  //SEG123 [55] (byte) textbox::y#2 ← ++ (byte) textbox::y#5 -- vbuz1=_inc_vbuz1 
+    inc y
+  //SEG124 [56] if((byte) textbox::y#2!=(byte) textbox::y2#4) goto textbox::@9 -- vbuz1_neq_vbuz2_then_la1 
+    lda y
+    cmp y2
+    bne b9
+    jmp breturn
+  //SEG125 textbox::@return
+  breturn:
+  //SEG126 [57] return 
+    rts
+  //SEG127 textbox::@9
+  b9:
+  //SEG128 [58] (byte) textbox::$38 ← (byte) textbox::y#2 << (byte) 2 -- vbuaa=vbuz1_rol_2 
+    lda y
+    asl
+    asl
+  //SEG129 [59] (byte) textbox::$39 ← (byte) textbox::$38 + (byte) textbox::y#2 -- vbuaa=vbuaa_plus_vbuz1 
+    clc
+    adc y
+  //SEG130 [60] (word) textbox::z#2 ← (byte) textbox::$39 << (byte) 3 -- vwuz1=vbuaa_rol_3 
+    sta z
+    lda #0
+    sta z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+  //SEG131 [61] phi from textbox::@2 textbox::@9 to textbox::@8 [phi:textbox::@2/textbox::@9->textbox::@8]
+  b8_from_b2:
+  b8_from_b9:
+  //SEG132 [61] phi (byte) textbox::y#11 = (byte) textbox::y#5 [phi:textbox::@2/textbox::@9->textbox::@8#0] -- register_copy 
+  //SEG133 [61] phi (byte) textbox::x#7 = (byte) textbox::x#1 [phi:textbox::@2/textbox::@9->textbox::@8#1] -- register_copy 
+  //SEG134 [61] phi (word) textbox::z#4 = (word) textbox::z#5 [phi:textbox::@2/textbox::@9->textbox::@8#2] -- register_copy 
+    jmp b8
+  //SEG135 textbox::@8
+  b8:
+  //SEG136 [62] if(*((byte*) textbox::text#12 + (byte) textbox::i#1)!=(byte) 0) goto textbox::@1 -- pbuz1_derefidx_vbuz2_neq_0_then_la1 
+    ldy i
+    lda (text),y
+    cmp #0
+    bne b1_from_b8
+    jmp breturn
+  //SEG137 textbox::@6
+  b6:
+  //SEG138 [63] (byte) textbox::y#1 ← ++ (byte) textbox::y#12 -- vbuz1=_inc_vbuz1 
+    inc y
+  //SEG139 [64] if((byte) textbox::y#1!=(byte) textbox::y2#4) goto textbox::@7 -- vbuz1_neq_vbuz2_then_la1 
+    lda y
+    cmp y2
+    bne b7
+    jmp breturn
+  //SEG140 textbox::@7
+  b7:
+  //SEG141 [65] (byte) textbox::$35 ← (byte) textbox::y#1 << (byte) 2 -- vbuaa=vbuz1_rol_2 
+    lda y
+    asl
+    asl
+  //SEG142 [66] (byte) textbox::$36 ← (byte) textbox::$35 + (byte) textbox::y#1 -- vbuaa=vbuaa_plus_vbuz1 
+    clc
+    adc y
+  //SEG143 [67] (word) textbox::z#1 ← (byte) textbox::$36 << (byte) 3 -- vwuz1=vbuaa_rol_3 
+    sta z
+    lda #0
+    sta z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+  //SEG144 [68] (byte~) textbox::x#15 ← (byte) textbox::x1#4 -- vbuz1=vbuz2 
+    lda x1
+    sta x
+    jmp b2_from_b7
+  //SEG145 textbox::@4
+  b4:
+  //SEG146 [69] (byte) textbox::ls#1 ← ++ (byte) textbox::ls#2 -- vbuyy=_inc_vbuyy 
+    iny
+  //SEG147 [70] (byte) textbox::c#1 ← ++ (byte) textbox::c#2 -- vbuxx=_inc_vbuxx 
+    inx
+  //SEG148 [43] phi from textbox::@4 to textbox::@3 [phi:textbox::@4->textbox::@3]
+  b3_from_b4:
+  //SEG149 [43] phi (byte) textbox::c#2 = (byte) textbox::c#1 [phi:textbox::@4->textbox::@3#0] -- register_copy 
+  //SEG150 [43] phi (byte) textbox::ls#2 = (byte) textbox::ls#1 [phi:textbox::@4->textbox::@3#1] -- register_copy 
+    jmp b3
+}
+//SEG151 draw_window
+// draw_window(byte zeropage(2) x1, byte zeropage(5) y1, byte zeropage(6) x2, byte zeropage(7) y2)
+draw_window: {
+    .label _2 = $1a
+    .label _3 = $12
+    .label _4 = $20
+    .label _5 = $14
+    .label _13 = $16
+    .label _14 = $18
+    .label _18 = $1e
+    .label _19 = $1c
+    .label _24 = $24
+    .label x1 = 2
+    .label y1 = 5
+    .label x2 = 6
+    .label y2 = 7
+    .label z = $12
+    .label q = $14
+    .label z_1 = $1c
+    .label y3 = $e
+    .label z_2 = $22
+    .label _27 = $16
+    .label _28 = $18
+    .label _29 = $1a
+    .label _30 = $12
+    .label _31 = $1e
+    .label _32 = $1c
+    .label _33 = $20
+    .label _34 = $14
+    .label _35 = $24
+  //SEG152 [71] (byte) draw_window::$36 ← (byte) draw_window::y1#0 << (byte) 2 -- vbuaa=vbuz1_rol_2 
+    lda y1
+    asl
+    asl
+  //SEG153 [72] (byte) draw_window::$37 ← (byte) draw_window::$36 + (byte) draw_window::y1#0 -- vbuaa=vbuaa_plus_vbuz1 
+    clc
+    adc y1
+  //SEG154 [73] (word) draw_window::z#0 ← (byte) draw_window::$37 << (byte) 3 -- vwuz1=vbuaa_rol_3 
+    sta z
+    lda #0
+    sta z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+  //SEG155 [74] (byte) draw_window::$39 ← (byte) draw_window::y2#0 << (byte) 2 -- vbuaa=vbuz1_rol_2 
+    lda y2
+    asl
+    asl
+  //SEG156 [75] (byte) draw_window::$40 ← (byte) draw_window::$39 + (byte) draw_window::y2#0 -- vbuaa=vbuaa_plus_vbuz1 
+    clc
+    adc y2
+  //SEG157 [76] (word) draw_window::q#0 ← (byte) draw_window::$40 << (byte) 3 -- vwuz1=vbuaa_rol_3 
+    sta q
+    lda #0
+    sta q+1
+    asl q
+    rol q+1
+    asl q
+    rol q+1
+    asl q
+    rol q+1
+  //SEG158 [77] (byte) draw_window::x#0 ← (byte) draw_window::x1#0 + (byte) 1 -- vbuxx=vbuz1_plus_1 
+    ldx x1
+    inx
+  //SEG159 [78] phi from draw_window draw_window::@1 to draw_window::@1 [phi:draw_window/draw_window::@1->draw_window::@1]
+  b1_from_draw_window:
+  b1_from_b1:
+  //SEG160 [78] phi (byte) draw_window::x#2 = (byte) draw_window::x#0 [phi:draw_window/draw_window::@1->draw_window::@1#0] -- register_copy 
+    jmp b1
+  // draw horizontal lines
+  //SEG161 draw_window::@1
+  b1:
+  //SEG162 [79] (word~) draw_window::$13 ← (word) draw_window::z#0 + (byte) draw_window::x#2 -- vwuz1=vwuz2_plus_vbuxx 
+    txa
+    clc
+    adc z
+    sta _13
+    lda #0
+    adc z+1
+    sta _13+1
+  //SEG163 [80] (byte*~) draw_window::$27 ← (const byte*) screen#0 + (word~) draw_window::$13 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _27
+    adc #<screen
+    sta _27
+    lda _27+1
+    adc #>screen
+    sta _27+1
+  //SEG164 [81] *((byte*~) draw_window::$27) ← (byte) $43 -- _deref_pbuz1=vbuc1 
+    lda #$43
+    ldy #0
+    sta (_27),y
+  //SEG165 [82] (word~) draw_window::$14 ← (word) draw_window::q#0 + (byte) draw_window::x#2 -- vwuz1=vwuz2_plus_vbuxx 
+    txa
+    clc
+    adc q
+    sta _14
+    lda #0
+    adc q+1
+    sta _14+1
+  //SEG166 [83] (byte*~) draw_window::$28 ← (const byte*) screen#0 + (word~) draw_window::$14 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _28
+    adc #<screen
+    sta _28
+    lda _28+1
+    adc #>screen
+    sta _28+1
+  //SEG167 [84] *((byte*~) draw_window::$28) ← (byte) $43 -- _deref_pbuz1=vbuc1 
+    lda #$43
+    ldy #0
+    sta (_28),y
+  //SEG168 [85] (byte) draw_window::x#1 ← ++ (byte) draw_window::x#2 -- vbuxx=_inc_vbuxx 
+    inx
+  //SEG169 [86] if((byte) draw_window::x#1<(byte) draw_window::x2#0) goto draw_window::@1 -- vbuxx_lt_vbuz1_then_la1 
+    cpx x2
+    bcc b1_from_b1
+    jmp b2
+  //SEG170 draw_window::@2
+  b2:
+  //SEG171 [87] (word~) draw_window::$2 ← (word) draw_window::z#0 + (byte) draw_window::x1#0 -- vwuz1=vwuz2_plus_vbuz3 
+    lda x1
+    clc
+    adc z
+    sta _2
+    lda #0
+    adc z+1
+    sta _2+1
+  //SEG172 [88] (byte*~) draw_window::$29 ← (const byte*) screen#0 + (word~) draw_window::$2 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _29
+    adc #<screen
+    sta _29
+    lda _29+1
+    adc #>screen
+    sta _29+1
+  //SEG173 [89] *((byte*~) draw_window::$29) ← (byte) $55 -- _deref_pbuz1=vbuc1 
+    // draw upper corners
+    lda #$55
+    ldy #0
+    sta (_29),y
+  //SEG174 [90] (word~) draw_window::$3 ← (word) draw_window::z#0 + (byte) draw_window::x2#0 -- vwuz1=vwuz1_plus_vbuz2 
+    lda x2
+    clc
+    adc _3
+    sta _3
+    bcc !+
+    inc _3+1
+  !:
+  //SEG175 [91] (byte*~) draw_window::$30 ← (const byte*) screen#0 + (word~) draw_window::$3 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _30
+    adc #<screen
+    sta _30
+    lda _30+1
+    adc #>screen
+    sta _30+1
+  //SEG176 [92] *((byte*~) draw_window::$30) ← (byte) $49 -- _deref_pbuz1=vbuc1 
+    lda #$49
+    ldy #0
+    sta (_30),y
+  //SEG177 [93] (byte) draw_window::y#0 ← (byte) draw_window::y1#0 + (byte) 1 -- vbuxx=vbuz1_plus_1 
+    ldx y1
+    inx
+  //SEG178 [94] phi from draw_window::@2 draw_window::@3 to draw_window::@3 [phi:draw_window::@2/draw_window::@3->draw_window::@3]
+  b3_from_b2:
+  b3_from_b3:
+  //SEG179 [94] phi (byte) draw_window::y#2 = (byte) draw_window::y#0 [phi:draw_window::@2/draw_window::@3->draw_window::@3#0] -- register_copy 
+    jmp b3
+  // draw vertical lines
+  //SEG180 draw_window::@3
+  b3:
+  //SEG181 [95] (byte) draw_window::$42 ← (byte) draw_window::y#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 
+    txa
+    asl
+    asl
+  //SEG182 [96] (byte) draw_window::$43 ← (byte) draw_window::$42 + (byte) draw_window::y#2 -- vbuaa=vbuaa_plus_vbuxx 
+    stx $ff
+    clc
+    adc $ff
+  //SEG183 [97] (word) draw_window::z#1 ← (byte) draw_window::$43 << (byte) 3 -- vwuz1=vbuaa_rol_3 
+    sta z_1
+    lda #0
+    sta z_1+1
+    asl z_1
+    rol z_1+1
+    asl z_1
+    rol z_1+1
+    asl z_1
+    rol z_1+1
+  //SEG184 [98] (word~) draw_window::$18 ← (word) draw_window::z#1 + (byte) draw_window::x1#0 -- vwuz1=vwuz2_plus_vbuz3 
+    lda x1
+    clc
+    adc z_1
+    sta _18
+    lda #0
+    adc z_1+1
+    sta _18+1
+  //SEG185 [99] (byte*~) draw_window::$31 ← (const byte*) screen#0 + (word~) draw_window::$18 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _31
+    adc #<screen
+    sta _31
+    lda _31+1
+    adc #>screen
+    sta _31+1
+  //SEG186 [100] *((byte*~) draw_window::$31) ← (byte) $42 -- _deref_pbuz1=vbuc1 
+    lda #$42
+    ldy #0
+    sta (_31),y
+  //SEG187 [101] (word~) draw_window::$19 ← (word) draw_window::z#1 + (byte) draw_window::x2#0 -- vwuz1=vwuz1_plus_vbuz2 
+    lda x2
+    clc
+    adc _19
+    sta _19
+    bcc !+
+    inc _19+1
+  !:
+  //SEG188 [102] (byte*~) draw_window::$32 ← (const byte*) screen#0 + (word~) draw_window::$19 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _32
+    adc #<screen
+    sta _32
+    lda _32+1
+    adc #>screen
+    sta _32+1
+  //SEG189 [103] *((byte*~) draw_window::$32) ← (byte) $42 -- _deref_pbuz1=vbuc1 
+    lda #$42
+    ldy #0
+    sta (_32),y
+  //SEG190 [104] (byte) draw_window::y#1 ← ++ (byte) draw_window::y#2 -- vbuxx=_inc_vbuxx 
+    inx
+  //SEG191 [105] if((byte) draw_window::y#1<(byte) draw_window::y2#0) goto draw_window::@3 -- vbuxx_lt_vbuz1_then_la1 
+    cpx y2
+    bcc b3_from_b3
+    jmp b4
+  //SEG192 draw_window::@4
+  b4:
+  //SEG193 [106] (word~) draw_window::$4 ← (word) draw_window::q#0 + (byte) draw_window::x1#0 -- vwuz1=vwuz2_plus_vbuz3 
+    lda x1
+    clc
+    adc q
+    sta _4
+    lda #0
+    adc q+1
+    sta _4+1
+  //SEG194 [107] (byte*~) draw_window::$33 ← (const byte*) screen#0 + (word~) draw_window::$4 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _33
+    adc #<screen
+    sta _33
+    lda _33+1
+    adc #>screen
+    sta _33+1
+  //SEG195 [108] *((byte*~) draw_window::$33) ← (byte) $4a -- _deref_pbuz1=vbuc1 
+    // draw lower corners
+    lda #$4a
+    ldy #0
+    sta (_33),y
+  //SEG196 [109] (word~) draw_window::$5 ← (word) draw_window::q#0 + (byte) draw_window::x2#0 -- vwuz1=vwuz1_plus_vbuz2 
+    lda x2
+    clc
+    adc _5
+    sta _5
+    bcc !+
+    inc _5+1
+  !:
+  //SEG197 [110] (byte*~) draw_window::$34 ← (const byte*) screen#0 + (word~) draw_window::$5 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _34
+    adc #<screen
+    sta _34
+    lda _34+1
+    adc #>screen
+    sta _34+1
+  //SEG198 [111] *((byte*~) draw_window::$34) ← (byte) $4b -- _deref_pbuz1=vbuc1 
+    lda #$4b
+    ldy #0
+    sta (_34),y
+  //SEG199 [112] (byte~) draw_window::$6 ← (byte) draw_window::x2#0 - (byte) draw_window::x1#0 -- vbuxx=vbuz1_minus_vbuz2 
+    lda x2
+    sec
+    sbc x1
+    tax
+  //SEG200 [113] (byte~) draw_window::$8 ← (byte) draw_window::y2#0 - (byte) draw_window::y1#0 -- vbuaa=vbuz1_minus_vbuz2 
+    lda y2
+    sec
+    sbc y1
+  //SEG201 [114] if((byte~) draw_window::$6<(byte) 1+(byte) 1) goto draw_window::@return -- vbuxx_lt_vbuc1_then_la1 
+    cpx #1+1
+    bcc breturn
+    jmp b9
+  //SEG202 draw_window::@9
+  b9:
+  //SEG203 [115] if((byte~) draw_window::$8>=(byte) 1+(byte) 1) goto draw_window::@5 -- vbuaa_ge_vbuc1_then_la1 
+    cmp #1+1
+    bcs b5
+    jmp breturn
+  //SEG204 draw_window::@return
+  breturn:
+  //SEG205 [116] return 
+    rts
+  //SEG206 draw_window::@5
+  b5:
+  //SEG207 [117] (byte) draw_window::y3#0 ← (byte) draw_window::y1#0 + (byte) 1 -- vbuz1=vbuz2_plus_1 
+    ldy y1
+    iny
+    sty y3
+  //SEG208 [118] phi from draw_window::@5 draw_window::@8 to draw_window::@6 [phi:draw_window::@5/draw_window::@8->draw_window::@6]
+  b6_from_b5:
+  b6_from_b8:
+  //SEG209 [118] phi (byte) draw_window::y3#2 = (byte) draw_window::y3#0 [phi:draw_window::@5/draw_window::@8->draw_window::@6#0] -- register_copy 
+    jmp b6
+  // blank inside
+  //SEG210 draw_window::@6
+  b6:
+  //SEG211 [119] (byte) draw_window::$45 ← (byte) draw_window::y3#2 << (byte) 2 -- vbuaa=vbuz1_rol_2 
+    lda y3
+    asl
+    asl
+  //SEG212 [120] (byte) draw_window::$46 ← (byte) draw_window::$45 + (byte) draw_window::y3#2 -- vbuaa=vbuaa_plus_vbuz1 
+    clc
+    adc y3
+  //SEG213 [121] (word) draw_window::z#2 ← (byte) draw_window::$46 << (byte) 3 -- vwuz1=vbuaa_rol_3 
+    sta z_2
+    lda #0
+    sta z_2+1
+    asl z_2
+    rol z_2+1
+    asl z_2
+    rol z_2+1
+    asl z_2
+    rol z_2+1
+  //SEG214 [122] (byte) draw_window::x3#0 ← (byte) draw_window::x1#0 + (byte) 1 -- vbuxx=vbuz1_plus_1 
+    ldx x1
+    inx
+  //SEG215 [123] phi from draw_window::@6 draw_window::@7 to draw_window::@7 [phi:draw_window::@6/draw_window::@7->draw_window::@7]
+  b7_from_b6:
+  b7_from_b7:
+  //SEG216 [123] phi (byte) draw_window::x3#2 = (byte) draw_window::x3#0 [phi:draw_window::@6/draw_window::@7->draw_window::@7#0] -- register_copy 
+    jmp b7
+  //SEG217 draw_window::@7
+  b7:
+  //SEG218 [124] (word~) draw_window::$24 ← (word) draw_window::z#2 + (byte) draw_window::x3#2 -- vwuz1=vwuz2_plus_vbuxx 
+    txa
+    clc
+    adc z_2
+    sta _24
+    lda #0
+    adc z_2+1
+    sta _24+1
+  //SEG219 [125] (byte*~) draw_window::$35 ← (const byte*) screen#0 + (word~) draw_window::$24 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _35
+    adc #<screen
+    sta _35
+    lda _35+1
+    adc #>screen
+    sta _35+1
+  //SEG220 [126] *((byte*~) draw_window::$35) ← (byte) $20 -- _deref_pbuz1=vbuc1 
+    lda #$20
+    ldy #0
+    sta (_35),y
+  //SEG221 [127] (byte) draw_window::x3#1 ← ++ (byte) draw_window::x3#2 -- vbuxx=_inc_vbuxx 
+    inx
+  //SEG222 [128] if((byte) draw_window::x3#1<(byte) draw_window::x2#0) goto draw_window::@7 -- vbuxx_lt_vbuz1_then_la1 
+    cpx x2
+    bcc b7_from_b7
+    jmp b8
+  //SEG223 draw_window::@8
+  b8:
+  //SEG224 [129] (byte) draw_window::y3#1 ← ++ (byte) draw_window::y3#2 -- vbuz1=_inc_vbuz1 
+    inc y3
+  //SEG225 [130] if((byte) draw_window::y3#1<(byte) draw_window::y2#0) goto draw_window::@6 -- vbuz1_lt_vbuz2_then_la1 
+    lda y3
+    cmp y2
+    bcc b6_from_b8
+    jmp breturn
+}
+  text: .text "this is a small test with word wrap, if a word is too long it moves it to the next line. isn't that supercalifragilisticexpialidocious? i think it's cool!@"
+  text2: .text "textbox by scan of desire@"
+
+ASSEMBLER OPTIMIZATIONS
+Removing instruction jmp b1
+Removing instruction jmp bend
+Removing instruction jmp b1
+Removing instruction jmp b2
+Removing instruction jmp b3
+Removing instruction jmp b4
+Removing instruction jmp b6
+Removing instruction jmp b7
+Removing instruction jmp b5
+Removing instruction jmp b12
+Removing instruction jmp b13
+Removing instruction jmp b1
+Removing instruction jmp b10
+Removing instruction jmp b3
+Removing instruction jmp b14
+Removing instruction jmp b5
+Removing instruction jmp b15
+Removing instruction jmp b2
+Removing instruction jmp b11
+Removing instruction jmp breturn
+Removing instruction jmp b8
+Removing instruction jmp b1
+Removing instruction jmp b2
+Removing instruction jmp b3
+Removing instruction jmp b4
+Removing instruction jmp b9
+Removing instruction jmp breturn
+Removing instruction jmp b6
+Removing instruction jmp b7
+Removing instruction jmp b8
+Succesful ASM optimization Pass5NextJumpElimination
+Removing instruction lda #0
+Removing instruction lda x
+Removing instruction lda #3
+Replacing instruction lda x with TYA
+Replacing instruction lda #0 with TYA
+Removing instruction ldy #0
+Succesful ASM optimization Pass5UnnecesaryLoadElimination
+Replacing label b2_from_b2 with b2
+Replacing label b2_from_b2 with b2
+Replacing label b1_from_b3 with b1
+Replacing label b5_from_b5 with b5
+Replacing label b2_from_b1 with b2
+Replacing label b2_from_b5 with b2
+Replacing label b8_from_b2 with b8
+Replacing label b1_from_b8 with b1
+Replacing label b2_from_b7 with b2
+Replacing label b7_from_b7 with b7
+Removing instruction b1_from_bbegin:
+Removing instruction b1:
+Removing instruction main_from_b1:
+Removing instruction bend_from_b1:
+Removing instruction b1_from_b3:
+Removing instruction b2_from_b2:
+Removing instruction b4_from_b3:
+Removing instruction textbox_from_b4:
+Removing instruction b6_from_b4:
+Removing instruction textbox_from_b6:
+Removing instruction b7_from_b6:
+Removing instruction textbox_from_b7:
+Removing instruction b5_from_b5:
+Removing instruction b5_from_b7:
+Removing instruction b1_from_b8:
+Removing instruction b2_from_b1:
+Removing instruction b2_from_b5:
+Removing instruction b2_from_b7:
+Removing instruction b8_from_b2:
+Removing instruction b8_from_b9:
+Removing instruction b1_from_draw_window:
+Removing instruction b3_from_b2:
+Removing instruction b6_from_b5:
+Removing instruction b7_from_b6:
+Removing instruction b7_from_b7:
+Succesful ASM optimization Pass5RedundantLabelElimination
+Removing instruction bend:
+Removing instruction b1_from_main:
+Removing instruction textbox_from_b1:
+Removing instruction b2_from_b1:
+Removing instruction b3:
+Removing instruction b4:
+Removing instruction b6:
+Removing instruction b7:
+Removing instruction b12:
+Removing instruction b13:
+Removing instruction b1_from_b13:
+Removing instruction b10:
+Removing instruction b3_from_b10:
+Removing instruction b14:
+Removing instruction b15:
+Removing instruction b2_from_b15:
+Removing instruction b11:
+Removing instruction b3_from_b4:
+Removing instruction b1:
+Removing instruction b2:
+Removing instruction b3:
+Removing instruction b4:
+Removing instruction b9:
+Removing instruction b6:
+Removing instruction b8:
+Succesful ASM optimization Pass5UnusedLabelElimination
+Updating BasicUpstart to call main directly
+Removing instruction jsr main
+Succesful ASM optimization Pass5SkipBegin
+Replacing jump to rts with rts in jmp breturn
+Replacing jump to rts with rts in jmp breturn
+Replacing jump to rts with rts in jmp breturn
+Succesful ASM optimization Pass5DoubleJumpElimination
+Relabelling long label b1_from_b1 to b1
+Relabelling long label b3_from_b3 to b2
+Relabelling long label b6_from_b8 to b3
+Succesful ASM optimization Pass5RelabelLongLabels
+Removing instruction jmp b1
+Removing instruction jmp b2
+Removing instruction jmp b1
+Removing instruction jmp b2
+Succesful ASM optimization Pass5NextJumpElimination
+Removing instruction ldy i
+Replacing instruction lda #0 with TYA
+Removing instruction ldy #0
+Replacing instruction lda #0 with TYA
+Removing instruction ldy #0
+Succesful ASM optimization Pass5UnnecesaryLoadElimination
+Removing instruction bbegin:
+Succesful ASM optimization Pass5UnusedLabelElimination
+Fixing long branch [209] bne b1 to beq
+
+FINAL SYMBOL TABLE
+(label) @1
+(label) @begin
+(label) @end
+(void()) draw_window((byte) draw_window::x1 , (byte) draw_window::y1 , (byte) draw_window::x2 , (byte) draw_window::y2)
+(word~) draw_window::$13 $13 zp ZP_WORD:22 202.0
+(word~) draw_window::$14 $14 zp ZP_WORD:24 202.0
+(word~) draw_window::$18 $18 zp ZP_WORD:30 202.0
+(word~) draw_window::$19 $19 zp ZP_WORD:28 202.0
+(word~) draw_window::$2 $2 zp ZP_WORD:26 4.0
+(word~) draw_window::$24 $24 zp ZP_WORD:36 2002.0
+(byte*~) draw_window::$27 $27 zp ZP_WORD:22 202.0
+(byte*~) draw_window::$28 $28 zp ZP_WORD:24 202.0
+(byte*~) draw_window::$29 $29 zp ZP_WORD:26 4.0
+(word~) draw_window::$3 $3 zp ZP_WORD:18 4.0
+(byte*~) draw_window::$30 $30 zp ZP_WORD:18 4.0
+(byte*~) draw_window::$31 $31 zp ZP_WORD:30 202.0
+(byte*~) draw_window::$32 $32 zp ZP_WORD:28 202.0
+(byte*~) draw_window::$33 $33 zp ZP_WORD:32 4.0
+(byte*~) draw_window::$34 $34 zp ZP_WORD:20 4.0
+(byte*~) draw_window::$35 $35 zp ZP_WORD:36 2002.0
+(byte) draw_window::$36 reg byte a 4.0
+(byte) draw_window::$37 reg byte a 4.0
+(byte) draw_window::$39 reg byte a 4.0
+(word~) draw_window::$4 $4 zp ZP_WORD:32 4.0
+(byte) draw_window::$40 reg byte a 4.0
+(byte) draw_window::$42 reg byte a 202.0
+(byte) draw_window::$43 reg byte a 202.0
+(byte) draw_window::$45 reg byte a 202.0
+(byte) draw_window::$46 reg byte a 202.0
+(word~) draw_window::$5 $5 zp ZP_WORD:20 4.0
+(byte~) draw_window::$6 reg byte x 2.0
+(byte~) draw_window::$8 reg byte a 2.0
+(label) draw_window::@1
+(label) draw_window::@2
+(label) draw_window::@3
+(label) draw_window::@4
+(label) draw_window::@5
+(label) draw_window::@6
+(label) draw_window::@7
+(label) draw_window::@8
+(label) draw_window::@9
+(label) draw_window::@return
+(word) draw_window::q
+(word) draw_window::q#0 q zp ZP_WORD:20 3.242424242424242
+(byte) draw_window::x
+(byte) draw_window::x#0 reg byte x 4.0
+(byte) draw_window::x#1 reg byte x 151.5
+(byte) draw_window::x#2 reg byte x 58.00000000000001
+(byte) draw_window::x1
+(byte) draw_window::x1#0 x1 zp ZP_BYTE:2 3.365079365079365
+(byte) draw_window::x2
+(byte) draw_window::x2#0 x2 zp ZP_BYTE:6 19.852459016393443
+(byte) draw_window::x3
+(byte) draw_window::x3#0 reg byte x 202.0
+(byte) draw_window::x3#1 reg byte x 1501.5
+(byte) draw_window::x3#2 reg byte x 776.0
+(byte) draw_window::y
+(byte) draw_window::y#0 reg byte x 4.0
+(byte) draw_window::y#1 reg byte x 151.5
+(byte) draw_window::y#2 reg byte x 40.6
+(byte) draw_window::y1
+(byte) draw_window::y1#0 y1 zp ZP_BYTE:5 0.24999999999999997
+(byte) draw_window::y2
+(byte) draw_window::y2#0 y2 zp ZP_BYTE:7 3.5
+(byte) draw_window::y3
+(byte) draw_window::y3#0 y3 zp ZP_BYTE:14 4.0
+(byte) draw_window::y3#1 y3 zp ZP_BYTE:14 151.5
+(byte) draw_window::y3#2 y3 zp ZP_BYTE:14 36.90909090909091
+(word) draw_window::z
+(word) draw_window::z#0 z zp ZP_WORD:18 6.2941176470588225
+(word) draw_window::z#1 z#1 zp ZP_WORD:28 75.75
+(word) draw_window::z#2 z#2 zp ZP_WORD:34 137.75
+(void()) main()
+(byte~) main::$3 reg byte a 22.0
+(label) main::@1
+(label) main::@2
+(label) main::@3
+(label) main::@4
+(label) main::@5
+(label) main::@6
+(label) main::@7
+(word) main::wait
+(word) main::wait#1 wait zp ZP_WORD:3 151.5
+(word) main::wait#2 wait zp ZP_WORD:3 202.0
+(byte) main::x
+(byte) main::x#1 x zp ZP_BYTE:2 16.5
+(byte) main::x#2 x zp ZP_BYTE:2 7.699999999999999
+(byte*) screen
+(const byte*) screen#0 screen = (byte*) 1024
+(byte[]) text
+(const byte[]) text#0 text = (string) "this is a small test with word wrap, if a word is too long it moves it to the next line. isn't that supercalifragilisticexpialidocious? i think it's cool!@"
+(byte[]) text2
+(const byte[]) text2#0 text2 = (string) "textbox by scan of desire@"
+(void()) textbox((byte) textbox::x1 , (byte) textbox::y1 , (byte) textbox::x2 , (byte) textbox::y2 , (byte*) textbox::text)
+(byte~) textbox::$15 reg byte y 101.0
+(byte~) textbox::$17 $17 zp ZP_BYTE:17 101.0
+(byte*~) textbox::$31 $31 zp ZP_WORD:15 202.0
+(byte) textbox::$32 reg byte a 4.0
+(byte) textbox::$33 reg byte a 4.0
+(byte) textbox::$35 reg byte a 202.0
+(byte) textbox::$36 reg byte a 202.0
+(byte) textbox::$38 reg byte a 202.0
+(byte) textbox::$39 reg byte a 202.0
+(word~) textbox::$8 $8 zp ZP_WORD:15 202.0
+(label) textbox::@1
+(label) textbox::@10
+(label) textbox::@11
+(label) textbox::@12
+(label) textbox::@13
+(label) textbox::@14
+(label) textbox::@15
+(label) textbox::@2
+(label) textbox::@3
+(label) textbox::@4
+(label) textbox::@5
+(label) textbox::@6
+(label) textbox::@7
+(label) textbox::@8
+(label) textbox::@9
+(label) textbox::@return
+(byte) textbox::c
+(byte) textbox::c#1 reg byte x 2002.0
+(byte) textbox::c#2 reg byte x 314.85714285714283
+(byte) textbox::i
+(byte) textbox::i#1 i zp ZP_BYTE:10 27.545454545454547
+(byte) textbox::i#2 i zp ZP_BYTE:10 22.954545454545453
+(byte) textbox::ls
+(byte) textbox::ls#0 reg byte y 202.0
+(byte) textbox::ls#1 reg byte y 1001.0
+(byte) textbox::ls#2 reg byte y 1368.3333333333335
+(byte*) textbox::text
+(byte*) textbox::text#12 text zp ZP_WORD:8 50.108695652173914
+(byte) textbox::x
+(byte) textbox::x#0 x zp ZP_BYTE:11 1.0
+(byte) textbox::x#1 x zp ZP_BYTE:11 151.5
+(byte) textbox::x#10 x zp ZP_BYTE:11 36.214285714285715
+(byte) textbox::x#12 x zp ZP_BYTE:11 33.666666666666664
+(byte~) textbox::x#15 x zp ZP_BYTE:11 202.0
+(byte) textbox::x#5 x zp ZP_BYTE:11 202.0
+(byte) textbox::x#7 x zp ZP_BYTE:11 151.5
+(byte) textbox::x1
+(byte) textbox::x1#0 x1 zp ZP_BYTE:2 11.0
+(byte) textbox::x1#4 x1 zp ZP_BYTE:2 6.913043478260869
+(byte) textbox::x2
+(byte) textbox::x2#0 x2 zp ZP_BYTE:6 5.5
+(byte) textbox::x2#4 x2 zp ZP_BYTE:6 6.913043478260869
+(byte) textbox::y
+(byte) textbox::y#0 y zp ZP_BYTE:5 1.4285714285714284
+(byte) textbox::y#1 y zp ZP_BYTE:5 84.16666666666666
+(byte) textbox::y#11 y zp ZP_BYTE:5 151.5
+(byte) textbox::y#12 y zp ZP_BYTE:5 27.06666666666667
+(byte) textbox::y#2 y zp ZP_BYTE:5 101.0
+(byte) textbox::y#5 y zp ZP_BYTE:5 101.0
+(byte) textbox::y1
+(byte) textbox::y1#0 y1 zp ZP_BYTE:5 22.0
+(byte) textbox::y1#4 y1 zp ZP_BYTE:5 2.5
+(byte) textbox::y2
+(byte) textbox::y2#0 y2 zp ZP_BYTE:7 7.333333333333333
+(byte) textbox::y2#4 y2 zp ZP_BYTE:7 4.717391304347826
+(word) textbox::z
+(word) textbox::z#0 z zp ZP_WORD:12 1.3333333333333333
+(word) textbox::z#1 z zp ZP_WORD:12 101.0
+(word) textbox::z#2 z zp ZP_WORD:12 202.0
+(word) textbox::z#3 z zp ZP_WORD:12 29.000000000000004
+(word) textbox::z#4 z zp ZP_WORD:12 151.5
+(word) textbox::z#5 z zp ZP_WORD:12 101.0
+
+zp ZP_BYTE:2 [ main::x#2 main::x#1 textbox::x1#4 textbox::x1#0 draw_window::x1#0 ]
+zp ZP_WORD:3 [ main::wait#2 main::wait#1 ]
+zp ZP_BYTE:5 [ textbox::y1#4 textbox::y1#0 textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 draw_window::y1#0 ]
+zp ZP_BYTE:6 [ textbox::x2#4 textbox::x2#0 draw_window::x2#0 ]
+zp ZP_BYTE:7 [ textbox::y2#4 textbox::y2#0 draw_window::y2#0 ]
+zp ZP_WORD:8 [ textbox::text#12 ]
+zp ZP_BYTE:10 [ textbox::i#2 textbox::i#1 ]
+reg byte y [ textbox::ls#2 textbox::ls#0 textbox::ls#1 ]
+reg byte x [ textbox::c#2 textbox::c#1 ]
+zp ZP_BYTE:11 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ]
+zp ZP_WORD:12 [ textbox::z#5 textbox::z#1 textbox::z#3 textbox::z#4 textbox::z#0 textbox::z#2 ]
+reg byte x [ draw_window::x#2 draw_window::x#0 draw_window::x#1 ]
+reg byte x [ draw_window::y#2 draw_window::y#0 draw_window::y#1 ]
+zp ZP_BYTE:14 [ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ]
+reg byte x [ draw_window::x3#2 draw_window::x3#0 draw_window::x3#1 ]
+reg byte a [ main::$3 ]
+reg byte a [ textbox::$32 ]
+reg byte a [ textbox::$33 ]
+zp ZP_WORD:15 [ textbox::$8 textbox::$31 ]
+reg byte y [ textbox::$15 ]
+zp ZP_BYTE:17 [ textbox::$17 ]
+reg byte a [ textbox::$38 ]
+reg byte a [ textbox::$39 ]
+reg byte a [ textbox::$35 ]
+reg byte a [ textbox::$36 ]
+reg byte a [ draw_window::$36 ]
+reg byte a [ draw_window::$37 ]
+zp ZP_WORD:18 [ draw_window::z#0 draw_window::$3 draw_window::$30 ]
+reg byte a [ draw_window::$39 ]
+reg byte a [ draw_window::$40 ]
+zp ZP_WORD:20 [ draw_window::q#0 draw_window::$5 draw_window::$34 ]
+zp ZP_WORD:22 [ draw_window::$13 draw_window::$27 ]
+zp ZP_WORD:24 [ draw_window::$14 draw_window::$28 ]
+zp ZP_WORD:26 [ draw_window::$2 draw_window::$29 ]
+reg byte a [ draw_window::$42 ]
+reg byte a [ draw_window::$43 ]
+zp ZP_WORD:28 [ draw_window::z#1 draw_window::$19 draw_window::$32 ]
+zp ZP_WORD:30 [ draw_window::$18 draw_window::$31 ]
+zp ZP_WORD:32 [ draw_window::$4 draw_window::$33 ]
+reg byte x [ draw_window::$6 ]
+reg byte a [ draw_window::$8 ]
+reg byte a [ draw_window::$45 ]
+reg byte a [ draw_window::$46 ]
+zp ZP_WORD:34 [ draw_window::z#2 ]
+zp ZP_WORD:36 [ draw_window::$24 draw_window::$35 ]
+
+
+FINAL ASSEMBLER
+Score: 149329
+
+//SEG0 File Comments
+/* Textbox routine with word wrap for KickC by Scan/Desire */
+//SEG1 Basic Upstart
+.pc = $801 "Basic"
+:BasicUpstart(main)
+.pc = $80d "Program"
+//SEG2 Global Constants & labels
+  .label screen = $400
+//SEG3 @begin
+//SEG4 [1] phi from @begin to @1 [phi:@begin->@1]
+//SEG5 @1
+//SEG6 [2] call main 
+//SEG7 [4] phi from @1 to main [phi:@1->main]
+//SEG8 [3] phi from @1 to @end [phi:@1->@end]
+//SEG9 @end
+//SEG10 main
+main: {
+    .label wait = 3
+    .label x = 2
+  //SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
+  //SEG12 [5] phi (byte) main::x#2 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 
+    lda #0
+    sta x
+  //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1]
+  //SEG14 [5] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@3->main::@1#0] -- register_copy 
+  //SEG15 main::@1
+  b1:
+  //SEG16 [6] (byte~) main::$3 ← (byte) main::x#2 + (byte) main::x#2 -- vbuaa=vbuz1_plus_vbuz1 
+    lda x
+    asl
+  //SEG17 [7] (byte) textbox::x2#0 ← (byte~) main::$3 + (byte) 1 -- vbuz1=vbuaa_plus_1 
+    clc
+    adc #1
+    sta textbox.x2
+  //SEG18 [8] (byte) textbox::y2#0 ← (byte) main::x#2 + (byte) $a -- vbuz1=vbuz2_plus_vbuc1 
+    lax x
+    axs #-[$a]
+    stx textbox.y2
+  //SEG19 [9] (byte) textbox::x1#0 ← (byte) main::x#2
+  //SEG20 [10] (byte) textbox::y1#0 ← (byte) main::x#2 -- vbuz1=vbuz2 
+    lda x
+    sta textbox.y1
+  //SEG21 [11] call textbox 
+  //SEG22 [24] phi from main::@1 to textbox [phi:main::@1->textbox]
+  //SEG23 [24] phi (byte*) textbox::text#12 = (const byte[]) text2#0 [phi:main::@1->textbox#0] -- pbuz1=pbuc1 
+    lda #<text2
+    sta textbox.text
+    lda #>text2
+    sta textbox.text+1
+  //SEG24 [24] phi (byte) textbox::y2#4 = (byte) textbox::y2#0 [phi:main::@1->textbox#1] -- register_copy 
+  //SEG25 [24] phi (byte) textbox::x2#4 = (byte) textbox::x2#0 [phi:main::@1->textbox#2] -- register_copy 
+  //SEG26 [24] phi (byte) textbox::y1#4 = (byte) textbox::y1#0 [phi:main::@1->textbox#3] -- register_copy 
+  //SEG27 [24] phi (byte) textbox::x1#4 = (byte) textbox::x1#0 [phi:main::@1->textbox#4] -- register_copy 
+    jsr textbox
+  //SEG28 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
+  //SEG29 [12] phi (word) main::wait#2 = (byte) 0 [phi:main::@1->main::@2#0] -- vwuz1=vbuc1 
+    lda #0
+    sta wait
+    sta wait+1
+  //SEG30 [12] phi from main::@2 to main::@2 [phi:main::@2->main::@2]
+  //SEG31 [12] phi (word) main::wait#2 = (word) main::wait#1 [phi:main::@2->main::@2#0] -- register_copy 
+  //SEG32 main::@2
+  b2:
+  //SEG33 [13] (word) main::wait#1 ← ++ (word) main::wait#2 -- vwuz1=_inc_vwuz1 
+    inc wait
+    bne !+
+    inc wait+1
+  !:
+  //SEG34 [14] if((word) main::wait#1<(word) $88b8) goto main::@2 -- vwuz1_lt_vwuc1_then_la1 
+    lda wait+1
+    cmp #>$88b8
+    bcc b2
+    bne !+
+    lda wait
+    cmp #<$88b8
+    bcc b2
+  !:
+  //SEG35 main::@3
+  //SEG36 [15] (byte) main::x#1 ← (byte) main::x#2 + (byte) 2 -- vbuz1=vbuz1_plus_2 
+    lda x
+    clc
+    adc #2
+    sta x
+  //SEG37 [16] if((byte) main::x#1<(byte) $f) goto main::@1 -- vbuz1_lt_vbuc1_then_la1 
+    cmp #$f
+    bcc b1
+  //SEG38 [17] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
+  //SEG39 main::@4
+  //SEG40 [18] call textbox 
+  //SEG41 [24] phi from main::@4 to textbox [phi:main::@4->textbox]
+  //SEG42 [24] phi (byte*) textbox::text#12 = (const byte[]) text#0 [phi:main::@4->textbox#0] -- pbuz1=pbuc1 
+    lda #<text
+    sta textbox.text
+    lda #>text
+    sta textbox.text+1
+  //SEG43 [24] phi (byte) textbox::y2#4 = (byte) $18 [phi:main::@4->textbox#1] -- vbuz1=vbuc1 
+    lda #$18
+    sta textbox.y2
+  //SEG44 [24] phi (byte) textbox::x2#4 = (byte) $14 [phi:main::@4->textbox#2] -- vbuz1=vbuc1 
+    lda #$14
+    sta textbox.x2
+  //SEG45 [24] phi (byte) textbox::y1#4 = (byte) $c [phi:main::@4->textbox#3] -- vbuz1=vbuc1 
+    lda #$c
+    sta textbox.y1
+  //SEG46 [24] phi (byte) textbox::x1#4 = (byte) 0 [phi:main::@4->textbox#4] -- vbuz1=vbuc1 
+    lda #0
+    sta textbox.x1
+    jsr textbox
+  //SEG47 [19] phi from main::@4 to main::@6 [phi:main::@4->main::@6]
+  //SEG48 main::@6
+  //SEG49 [20] call textbox 
+  //SEG50 [24] phi from main::@6 to textbox [phi:main::@6->textbox]
+  //SEG51 [24] phi (byte*) textbox::text#12 = (const byte[]) text#0 [phi:main::@6->textbox#0] -- pbuz1=pbuc1 
+    lda #<text
+    sta textbox.text
+    lda #>text
+    sta textbox.text+1
+  //SEG52 [24] phi (byte) textbox::y2#4 = (byte) 9 [phi:main::@6->textbox#1] -- vbuz1=vbuc1 
+    lda #9
+    sta textbox.y2
+  //SEG53 [24] phi (byte) textbox::x2#4 = (byte) $25 [phi:main::@6->textbox#2] -- vbuz1=vbuc1 
+    lda #$25
+    sta textbox.x2
+  //SEG54 [24] phi (byte) textbox::y1#4 = (byte) 3 [phi:main::@6->textbox#3] -- vbuz1=vbuc1 
+    lda #3
+    sta textbox.y1
+  //SEG55 [24] phi (byte) textbox::x1#4 = (byte) 3 [phi:main::@6->textbox#4] -- vbuz1=vbuc1 
+    sta textbox.x1
+    jsr textbox
+  //SEG56 [21] phi from main::@6 to main::@7 [phi:main::@6->main::@7]
+  //SEG57 main::@7
+  //SEG58 [22] call textbox 
+  //SEG59 [24] phi from main::@7 to textbox [phi:main::@7->textbox]
+  //SEG60 [24] phi (byte*) textbox::text#12 = (const byte[]) text#0 [phi:main::@7->textbox#0] -- pbuz1=pbuc1 
+    lda #<text
+    sta textbox.text
+    lda #>text
+    sta textbox.text+1
+  //SEG61 [24] phi (byte) textbox::y2#4 = (byte) $18 [phi:main::@7->textbox#1] -- vbuz1=vbuc1 
+    lda #$18
+    sta textbox.y2
+  //SEG62 [24] phi (byte) textbox::x2#4 = (byte) $27 [phi:main::@7->textbox#2] -- vbuz1=vbuc1 
+    lda #$27
+    sta textbox.x2
+  //SEG63 [24] phi (byte) textbox::y1#4 = (byte) 8 [phi:main::@7->textbox#3] -- vbuz1=vbuc1 
+    lda #8
+    sta textbox.y1
+  //SEG64 [24] phi (byte) textbox::x1#4 = (byte) $1e [phi:main::@7->textbox#4] -- vbuz1=vbuc1 
+    lda #$1e
+    sta textbox.x1
+    jsr textbox
+  //SEG65 [23] phi from main::@5 main::@7 to main::@5 [phi:main::@5/main::@7->main::@5]
+  //SEG66 main::@5
+  b5:
+    jmp b5
+}
+//SEG67 textbox
+// textbox(byte zeropage(2) x1, byte zeropage(5) y1, byte zeropage(6) x2, byte zeropage(7) y2, byte* zeropage(8) text)
+textbox: {
+    .label _8 = $f
+    .label _17 = $11
+    .label x1 = 2
+    .label y1 = 5
+    .label x2 = 6
+    .label y2 = 7
+    .label y = 5
+    .label x = $b
+    .label z = $c
+    .label i = $a
+    .label text = 8
+    .label _31 = $f
+  //SEG68 [25] (byte) draw_window::x1#0 ← (byte) textbox::x1#4
+  //SEG69 [26] (byte) draw_window::y1#0 ← (byte) textbox::y1#4
+  //SEG70 [27] (byte) draw_window::x2#0 ← (byte) textbox::x2#4
+  //SEG71 [28] (byte) draw_window::y2#0 ← (byte) textbox::y2#4
+  //SEG72 [29] call draw_window 
+    jsr draw_window
+  //SEG73 textbox::@12
+  //SEG74 [30] (byte) textbox::y#0 ← (byte) textbox::y1#4 + (byte) 1 -- vbuz1=vbuz1_plus_1 
+    inc y
+  //SEG75 [31] (byte) textbox::x#0 ← (byte) textbox::x1#4 + (byte) 1 -- vbuz1=vbuz2_plus_1 
+    ldy x1
+    iny
+    sty x
+  //SEG76 [32] (byte) textbox::$32 ← (byte) textbox::y#0 << (byte) 2 -- vbuaa=vbuz1_rol_2 
+    lda y
+    asl
+    asl
+  //SEG77 [33] (byte) textbox::$33 ← (byte) textbox::$32 + (byte) textbox::y#0 -- vbuaa=vbuaa_plus_vbuz1 
+    clc
+    adc y
+  //SEG78 [34] (word) textbox::z#0 ← (byte) textbox::$33 << (byte) 3 -- vwuz1=vbuaa_rol_3 
+    sta z
+    lda #0
+    sta z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+  //SEG79 [35] if((byte) textbox::x#0==(byte) textbox::x2#4) goto textbox::@return -- vbuz1_eq_vbuz2_then_la1 
+    tya
+    cmp x2
+    beq breturn
+  //SEG80 textbox::@13
+  //SEG81 [36] if((byte) textbox::y#0==(byte) textbox::y2#4) goto textbox::@return -- vbuz1_eq_vbuz2_then_la1 
+    lda y
+    cmp y2
+    beq breturn
+  //SEG82 [37] phi from textbox::@13 to textbox::@1 [phi:textbox::@13->textbox::@1]
+  //SEG83 [37] phi (byte) textbox::y#12 = (byte) textbox::y#0 [phi:textbox::@13->textbox::@1#0] -- register_copy 
+  //SEG84 [37] phi (byte) textbox::i#2 = (byte) 0 [phi:textbox::@13->textbox::@1#1] -- vbuz1=vbuc1 
+    lda #0
+    sta i
+  //SEG85 [37] phi (byte) textbox::x#10 = (byte) textbox::x#0 [phi:textbox::@13->textbox::@1#2] -- register_copy 
+  //SEG86 [37] phi (word) textbox::z#3 = (word) textbox::z#0 [phi:textbox::@13->textbox::@1#3] -- register_copy 
+  //SEG87 [37] phi from textbox::@8 to textbox::@1 [phi:textbox::@8->textbox::@1]
+  //SEG88 [37] phi (byte) textbox::y#12 = (byte) textbox::y#11 [phi:textbox::@8->textbox::@1#0] -- register_copy 
+  //SEG89 [37] phi (byte) textbox::i#2 = (byte) textbox::i#1 [phi:textbox::@8->textbox::@1#1] -- register_copy 
+  //SEG90 [37] phi (byte) textbox::x#10 = (byte) textbox::x#7 [phi:textbox::@8->textbox::@1#2] -- register_copy 
+  //SEG91 [37] phi (word) textbox::z#3 = (word) textbox::z#4 [phi:textbox::@8->textbox::@1#3] -- register_copy 
+  //SEG92 textbox::@1
+  b1:
+  //SEG93 [38] (word~) textbox::$8 ← (word) textbox::z#3 + (byte) textbox::x#10 -- vwuz1=vwuz2_plus_vbuz3 
+    lda x
+    clc
+    adc z
+    sta _8
+    lda #0
+    adc z+1
+    sta _8+1
+  //SEG94 [39] (byte*~) textbox::$31 ← (const byte*) screen#0 + (word~) textbox::$8 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _31
+    adc #<screen
+    sta _31
+    lda _31+1
+    adc #>screen
+    sta _31+1
+  //SEG95 [40] *((byte*~) textbox::$31) ← *((byte*) textbox::text#12 + (byte) textbox::i#2) -- _deref_pbuz1=pbuz2_derefidx_vbuz3 
+    ldy i
+    lda (text),y
+    ldy #0
+    sta (_31),y
+  //SEG96 [41] if(*((byte*) textbox::text#12 + (byte) textbox::i#2)!=(byte) $20) goto textbox::@2 -- pbuz1_derefidx_vbuz2_neq_vbuc1_then_la1 
+    ldy i
+    lda (text),y
+    cmp #$20
+    bne b2
+  //SEG97 textbox::@10
+  //SEG98 [42] (byte) textbox::ls#0 ← (byte) textbox::i#2 + (byte) 1 -- vbuyy=vbuz1_plus_1 
+    iny
+  //SEG99 [43] phi from textbox::@10 to textbox::@3 [phi:textbox::@10->textbox::@3]
+  //SEG100 [43] phi (byte) textbox::c#2 = (byte) 0 [phi:textbox::@10->textbox::@3#0] -- vbuxx=vbuc1 
+    ldx #0
+  //SEG101 [43] phi (byte) textbox::ls#2 = (byte) textbox::ls#0 [phi:textbox::@10->textbox::@3#1] -- register_copy 
+  //SEG102 textbox::@3
+  b3:
+  //SEG103 [44] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)==(byte) $20) goto textbox::@5 -- pbuz1_derefidx_vbuyy_eq_vbuc1_then_la1 
+    lda (text),y
+    cmp #$20
+    beq b5
+  //SEG104 textbox::@14
+  //SEG105 [45] if(*((byte*) textbox::text#12 + (byte) textbox::ls#2)!=(byte) 0) goto textbox::@4 -- pbuz1_derefidx_vbuyy_neq_0_then_la1 
+    lda (text),y
+    cmp #0
+    bne b4
+  //SEG106 textbox::@5
+  b5:
+  //SEG107 [46] (byte~) textbox::$15 ← (byte) textbox::c#2 + (byte) textbox::x#10 -- vbuyy=vbuxx_plus_vbuz1 
+    txa
+    clc
+    adc x
+    tay
+  //SEG108 [47] (byte~) textbox::$17 ← (byte) textbox::x2#4 - (byte) textbox::x1#4 -- vbuz1=vbuz2_minus_vbuz3 
+    lda x2
+    sec
+    sbc x1
+    sta _17
+  //SEG109 [48] if((byte~) textbox::$15<(byte) textbox::x2#4) goto textbox::@2 -- vbuyy_lt_vbuz1_then_la1 
+    cpy x2
+    bcc b2
+  //SEG110 textbox::@15
+  //SEG111 [49] if((byte) textbox::c#2<(byte~) textbox::$17) goto textbox::@6 -- vbuxx_lt_vbuz1_then_la1 
+    cpx _17
+    bcc b6
+  //SEG112 [50] phi from textbox::@15 to textbox::@2 [phi:textbox::@15->textbox::@2]
+  //SEG113 [50] phi from textbox::@1 textbox::@5 textbox::@7 to textbox::@2 [phi:textbox::@1/textbox::@5/textbox::@7->textbox::@2]
+  //SEG114 [50] phi (word) textbox::z#5 = (word) textbox::z#3 [phi:textbox::@1/textbox::@5/textbox::@7->textbox::@2#0] -- register_copy 
+  //SEG115 [50] phi (byte) textbox::y#5 = (byte) textbox::y#12 [phi:textbox::@1/textbox::@5/textbox::@7->textbox::@2#1] -- register_copy 
+  //SEG116 [50] phi (byte) textbox::x#5 = (byte) textbox::x#10 [phi:textbox::@1/textbox::@5/textbox::@7->textbox::@2#2] -- register_copy 
+  //SEG117 textbox::@2
+  b2:
+  //SEG118 [51] (byte) textbox::i#1 ← ++ (byte) textbox::i#2 -- vbuz1=_inc_vbuz1 
+    inc i
+  //SEG119 [52] (byte) textbox::x#1 ← ++ (byte) textbox::x#5 -- vbuz1=_inc_vbuz1 
+    inc x
+  //SEG120 [53] if((byte) textbox::x#1!=(byte) textbox::x2#4) goto textbox::@8 -- vbuz1_neq_vbuz2_then_la1 
+    lda x
+    cmp x2
+    bne b8
+  //SEG121 textbox::@11
+  //SEG122 [54] (byte) textbox::x#12 ← (byte) textbox::x1#4 + (byte) 1 -- vbuz1=vbuz2_plus_1 
+    ldy x1
+    iny
+    sty x
+  //SEG123 [55] (byte) textbox::y#2 ← ++ (byte) textbox::y#5 -- vbuz1=_inc_vbuz1 
+    inc y
+  //SEG124 [56] if((byte) textbox::y#2!=(byte) textbox::y2#4) goto textbox::@9 -- vbuz1_neq_vbuz2_then_la1 
+    lda y
+    cmp y2
+    bne b9
+  //SEG125 textbox::@return
+  breturn:
+  //SEG126 [57] return 
+    rts
+  //SEG127 textbox::@9
+  b9:
+  //SEG128 [58] (byte) textbox::$38 ← (byte) textbox::y#2 << (byte) 2 -- vbuaa=vbuz1_rol_2 
+    lda y
+    asl
+    asl
+  //SEG129 [59] (byte) textbox::$39 ← (byte) textbox::$38 + (byte) textbox::y#2 -- vbuaa=vbuaa_plus_vbuz1 
+    clc
+    adc y
+  //SEG130 [60] (word) textbox::z#2 ← (byte) textbox::$39 << (byte) 3 -- vwuz1=vbuaa_rol_3 
+    sta z
+    lda #0
+    sta z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+  //SEG131 [61] phi from textbox::@2 textbox::@9 to textbox::@8 [phi:textbox::@2/textbox::@9->textbox::@8]
+  //SEG132 [61] phi (byte) textbox::y#11 = (byte) textbox::y#5 [phi:textbox::@2/textbox::@9->textbox::@8#0] -- register_copy 
+  //SEG133 [61] phi (byte) textbox::x#7 = (byte) textbox::x#1 [phi:textbox::@2/textbox::@9->textbox::@8#1] -- register_copy 
+  //SEG134 [61] phi (word) textbox::z#4 = (word) textbox::z#5 [phi:textbox::@2/textbox::@9->textbox::@8#2] -- register_copy 
+  //SEG135 textbox::@8
+  b8:
+  //SEG136 [62] if(*((byte*) textbox::text#12 + (byte) textbox::i#1)!=(byte) 0) goto textbox::@1 -- pbuz1_derefidx_vbuz2_neq_0_then_la1 
+    ldy i
+    lda (text),y
+    cmp #0
+    beq !b1+
+    jmp b1
+  !b1:
+    rts
+  //SEG137 textbox::@6
+  b6:
+  //SEG138 [63] (byte) textbox::y#1 ← ++ (byte) textbox::y#12 -- vbuz1=_inc_vbuz1 
+    inc y
+  //SEG139 [64] if((byte) textbox::y#1!=(byte) textbox::y2#4) goto textbox::@7 -- vbuz1_neq_vbuz2_then_la1 
+    lda y
+    cmp y2
+    bne b7
+    rts
+  //SEG140 textbox::@7
+  b7:
+  //SEG141 [65] (byte) textbox::$35 ← (byte) textbox::y#1 << (byte) 2 -- vbuaa=vbuz1_rol_2 
+    lda y
+    asl
+    asl
+  //SEG142 [66] (byte) textbox::$36 ← (byte) textbox::$35 + (byte) textbox::y#1 -- vbuaa=vbuaa_plus_vbuz1 
+    clc
+    adc y
+  //SEG143 [67] (word) textbox::z#1 ← (byte) textbox::$36 << (byte) 3 -- vwuz1=vbuaa_rol_3 
+    sta z
+    lda #0
+    sta z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+  //SEG144 [68] (byte~) textbox::x#15 ← (byte) textbox::x1#4 -- vbuz1=vbuz2 
+    lda x1
+    sta x
+    jmp b2
+  //SEG145 textbox::@4
+  b4:
+  //SEG146 [69] (byte) textbox::ls#1 ← ++ (byte) textbox::ls#2 -- vbuyy=_inc_vbuyy 
+    iny
+  //SEG147 [70] (byte) textbox::c#1 ← ++ (byte) textbox::c#2 -- vbuxx=_inc_vbuxx 
+    inx
+  //SEG148 [43] phi from textbox::@4 to textbox::@3 [phi:textbox::@4->textbox::@3]
+  //SEG149 [43] phi (byte) textbox::c#2 = (byte) textbox::c#1 [phi:textbox::@4->textbox::@3#0] -- register_copy 
+  //SEG150 [43] phi (byte) textbox::ls#2 = (byte) textbox::ls#1 [phi:textbox::@4->textbox::@3#1] -- register_copy 
+    jmp b3
+}
+//SEG151 draw_window
+// draw_window(byte zeropage(2) x1, byte zeropage(5) y1, byte zeropage(6) x2, byte zeropage(7) y2)
+draw_window: {
+    .label _2 = $1a
+    .label _3 = $12
+    .label _4 = $20
+    .label _5 = $14
+    .label _13 = $16
+    .label _14 = $18
+    .label _18 = $1e
+    .label _19 = $1c
+    .label _24 = $24
+    .label x1 = 2
+    .label y1 = 5
+    .label x2 = 6
+    .label y2 = 7
+    .label z = $12
+    .label q = $14
+    .label z_1 = $1c
+    .label y3 = $e
+    .label z_2 = $22
+    .label _27 = $16
+    .label _28 = $18
+    .label _29 = $1a
+    .label _30 = $12
+    .label _31 = $1e
+    .label _32 = $1c
+    .label _33 = $20
+    .label _34 = $14
+    .label _35 = $24
+  //SEG152 [71] (byte) draw_window::$36 ← (byte) draw_window::y1#0 << (byte) 2 -- vbuaa=vbuz1_rol_2 
+    lda y1
+    asl
+    asl
+  //SEG153 [72] (byte) draw_window::$37 ← (byte) draw_window::$36 + (byte) draw_window::y1#0 -- vbuaa=vbuaa_plus_vbuz1 
+    clc
+    adc y1
+  //SEG154 [73] (word) draw_window::z#0 ← (byte) draw_window::$37 << (byte) 3 -- vwuz1=vbuaa_rol_3 
+    sta z
+    lda #0
+    sta z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+    asl z
+    rol z+1
+  //SEG155 [74] (byte) draw_window::$39 ← (byte) draw_window::y2#0 << (byte) 2 -- vbuaa=vbuz1_rol_2 
+    lda y2
+    asl
+    asl
+  //SEG156 [75] (byte) draw_window::$40 ← (byte) draw_window::$39 + (byte) draw_window::y2#0 -- vbuaa=vbuaa_plus_vbuz1 
+    clc
+    adc y2
+  //SEG157 [76] (word) draw_window::q#0 ← (byte) draw_window::$40 << (byte) 3 -- vwuz1=vbuaa_rol_3 
+    sta q
+    lda #0
+    sta q+1
+    asl q
+    rol q+1
+    asl q
+    rol q+1
+    asl q
+    rol q+1
+  //SEG158 [77] (byte) draw_window::x#0 ← (byte) draw_window::x1#0 + (byte) 1 -- vbuxx=vbuz1_plus_1 
+    ldx x1
+    inx
+  //SEG159 [78] phi from draw_window draw_window::@1 to draw_window::@1 [phi:draw_window/draw_window::@1->draw_window::@1]
+  b1:
+  //SEG160 [78] phi (byte) draw_window::x#2 = (byte) draw_window::x#0 [phi:draw_window/draw_window::@1->draw_window::@1#0] -- register_copy 
+  // draw horizontal lines
+  //SEG161 draw_window::@1
+  //SEG162 [79] (word~) draw_window::$13 ← (word) draw_window::z#0 + (byte) draw_window::x#2 -- vwuz1=vwuz2_plus_vbuxx 
+    txa
+    clc
+    adc z
+    sta _13
+    lda #0
+    adc z+1
+    sta _13+1
+  //SEG163 [80] (byte*~) draw_window::$27 ← (const byte*) screen#0 + (word~) draw_window::$13 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _27
+    adc #<screen
+    sta _27
+    lda _27+1
+    adc #>screen
+    sta _27+1
+  //SEG164 [81] *((byte*~) draw_window::$27) ← (byte) $43 -- _deref_pbuz1=vbuc1 
+    lda #$43
+    ldy #0
+    sta (_27),y
+  //SEG165 [82] (word~) draw_window::$14 ← (word) draw_window::q#0 + (byte) draw_window::x#2 -- vwuz1=vwuz2_plus_vbuxx 
+    txa
+    clc
+    adc q
+    sta _14
+    tya
+    adc q+1
+    sta _14+1
+  //SEG166 [83] (byte*~) draw_window::$28 ← (const byte*) screen#0 + (word~) draw_window::$14 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _28
+    adc #<screen
+    sta _28
+    lda _28+1
+    adc #>screen
+    sta _28+1
+  //SEG167 [84] *((byte*~) draw_window::$28) ← (byte) $43 -- _deref_pbuz1=vbuc1 
+    lda #$43
+    sta (_28),y
+  //SEG168 [85] (byte) draw_window::x#1 ← ++ (byte) draw_window::x#2 -- vbuxx=_inc_vbuxx 
+    inx
+  //SEG169 [86] if((byte) draw_window::x#1<(byte) draw_window::x2#0) goto draw_window::@1 -- vbuxx_lt_vbuz1_then_la1 
+    cpx x2
+    bcc b1
+  //SEG170 draw_window::@2
+  //SEG171 [87] (word~) draw_window::$2 ← (word) draw_window::z#0 + (byte) draw_window::x1#0 -- vwuz1=vwuz2_plus_vbuz3 
+    lda x1
+    clc
+    adc z
+    sta _2
+    tya
+    adc z+1
+    sta _2+1
+  //SEG172 [88] (byte*~) draw_window::$29 ← (const byte*) screen#0 + (word~) draw_window::$2 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _29
+    adc #<screen
+    sta _29
+    lda _29+1
+    adc #>screen
+    sta _29+1
+  //SEG173 [89] *((byte*~) draw_window::$29) ← (byte) $55 -- _deref_pbuz1=vbuc1 
+    // draw upper corners
+    lda #$55
+    sta (_29),y
+  //SEG174 [90] (word~) draw_window::$3 ← (word) draw_window::z#0 + (byte) draw_window::x2#0 -- vwuz1=vwuz1_plus_vbuz2 
+    lda x2
+    clc
+    adc _3
+    sta _3
+    bcc !+
+    inc _3+1
+  !:
+  //SEG175 [91] (byte*~) draw_window::$30 ← (const byte*) screen#0 + (word~) draw_window::$3 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _30
+    adc #<screen
+    sta _30
+    lda _30+1
+    adc #>screen
+    sta _30+1
+  //SEG176 [92] *((byte*~) draw_window::$30) ← (byte) $49 -- _deref_pbuz1=vbuc1 
+    lda #$49
+    ldy #0
+    sta (_30),y
+  //SEG177 [93] (byte) draw_window::y#0 ← (byte) draw_window::y1#0 + (byte) 1 -- vbuxx=vbuz1_plus_1 
+    ldx y1
+    inx
+  //SEG178 [94] phi from draw_window::@2 draw_window::@3 to draw_window::@3 [phi:draw_window::@2/draw_window::@3->draw_window::@3]
+  b2:
+  //SEG179 [94] phi (byte) draw_window::y#2 = (byte) draw_window::y#0 [phi:draw_window::@2/draw_window::@3->draw_window::@3#0] -- register_copy 
+  // draw vertical lines
+  //SEG180 draw_window::@3
+  //SEG181 [95] (byte) draw_window::$42 ← (byte) draw_window::y#2 << (byte) 2 -- vbuaa=vbuxx_rol_2 
+    txa
+    asl
+    asl
+  //SEG182 [96] (byte) draw_window::$43 ← (byte) draw_window::$42 + (byte) draw_window::y#2 -- vbuaa=vbuaa_plus_vbuxx 
+    stx $ff
+    clc
+    adc $ff
+  //SEG183 [97] (word) draw_window::z#1 ← (byte) draw_window::$43 << (byte) 3 -- vwuz1=vbuaa_rol_3 
+    sta z_1
+    lda #0
+    sta z_1+1
+    asl z_1
+    rol z_1+1
+    asl z_1
+    rol z_1+1
+    asl z_1
+    rol z_1+1
+  //SEG184 [98] (word~) draw_window::$18 ← (word) draw_window::z#1 + (byte) draw_window::x1#0 -- vwuz1=vwuz2_plus_vbuz3 
+    lda x1
+    clc
+    adc z_1
+    sta _18
+    lda #0
+    adc z_1+1
+    sta _18+1
+  //SEG185 [99] (byte*~) draw_window::$31 ← (const byte*) screen#0 + (word~) draw_window::$18 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _31
+    adc #<screen
+    sta _31
+    lda _31+1
+    adc #>screen
+    sta _31+1
+  //SEG186 [100] *((byte*~) draw_window::$31) ← (byte) $42 -- _deref_pbuz1=vbuc1 
+    lda #$42
+    ldy #0
+    sta (_31),y
+  //SEG187 [101] (word~) draw_window::$19 ← (word) draw_window::z#1 + (byte) draw_window::x2#0 -- vwuz1=vwuz1_plus_vbuz2 
+    lda x2
+    clc
+    adc _19
+    sta _19
+    bcc !+
+    inc _19+1
+  !:
+  //SEG188 [102] (byte*~) draw_window::$32 ← (const byte*) screen#0 + (word~) draw_window::$19 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _32
+    adc #<screen
+    sta _32
+    lda _32+1
+    adc #>screen
+    sta _32+1
+  //SEG189 [103] *((byte*~) draw_window::$32) ← (byte) $42 -- _deref_pbuz1=vbuc1 
+    lda #$42
+    ldy #0
+    sta (_32),y
+  //SEG190 [104] (byte) draw_window::y#1 ← ++ (byte) draw_window::y#2 -- vbuxx=_inc_vbuxx 
+    inx
+  //SEG191 [105] if((byte) draw_window::y#1<(byte) draw_window::y2#0) goto draw_window::@3 -- vbuxx_lt_vbuz1_then_la1 
+    cpx y2
+    bcc b2
+  //SEG192 draw_window::@4
+  //SEG193 [106] (word~) draw_window::$4 ← (word) draw_window::q#0 + (byte) draw_window::x1#0 -- vwuz1=vwuz2_plus_vbuz3 
+    lda x1
+    clc
+    adc q
+    sta _4
+    tya
+    adc q+1
+    sta _4+1
+  //SEG194 [107] (byte*~) draw_window::$33 ← (const byte*) screen#0 + (word~) draw_window::$4 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _33
+    adc #<screen
+    sta _33
+    lda _33+1
+    adc #>screen
+    sta _33+1
+  //SEG195 [108] *((byte*~) draw_window::$33) ← (byte) $4a -- _deref_pbuz1=vbuc1 
+    // draw lower corners
+    lda #$4a
+    sta (_33),y
+  //SEG196 [109] (word~) draw_window::$5 ← (word) draw_window::q#0 + (byte) draw_window::x2#0 -- vwuz1=vwuz1_plus_vbuz2 
+    lda x2
+    clc
+    adc _5
+    sta _5
+    bcc !+
+    inc _5+1
+  !:
+  //SEG197 [110] (byte*~) draw_window::$34 ← (const byte*) screen#0 + (word~) draw_window::$5 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _34
+    adc #<screen
+    sta _34
+    lda _34+1
+    adc #>screen
+    sta _34+1
+  //SEG198 [111] *((byte*~) draw_window::$34) ← (byte) $4b -- _deref_pbuz1=vbuc1 
+    lda #$4b
+    ldy #0
+    sta (_34),y
+  //SEG199 [112] (byte~) draw_window::$6 ← (byte) draw_window::x2#0 - (byte) draw_window::x1#0 -- vbuxx=vbuz1_minus_vbuz2 
+    lda x2
+    sec
+    sbc x1
+    tax
+  //SEG200 [113] (byte~) draw_window::$8 ← (byte) draw_window::y2#0 - (byte) draw_window::y1#0 -- vbuaa=vbuz1_minus_vbuz2 
+    lda y2
+    sec
+    sbc y1
+  //SEG201 [114] if((byte~) draw_window::$6<(byte) 1+(byte) 1) goto draw_window::@return -- vbuxx_lt_vbuc1_then_la1 
+    cpx #1+1
+    bcc breturn
+  //SEG202 draw_window::@9
+  //SEG203 [115] if((byte~) draw_window::$8>=(byte) 1+(byte) 1) goto draw_window::@5 -- vbuaa_ge_vbuc1_then_la1 
+    cmp #1+1
+    bcs b5
+  //SEG204 draw_window::@return
+  breturn:
+  //SEG205 [116] return 
+    rts
+  //SEG206 draw_window::@5
+  b5:
+  //SEG207 [117] (byte) draw_window::y3#0 ← (byte) draw_window::y1#0 + (byte) 1 -- vbuz1=vbuz2_plus_1 
+    ldy y1
+    iny
+    sty y3
+  //SEG208 [118] phi from draw_window::@5 draw_window::@8 to draw_window::@6 [phi:draw_window::@5/draw_window::@8->draw_window::@6]
+  b3:
+  //SEG209 [118] phi (byte) draw_window::y3#2 = (byte) draw_window::y3#0 [phi:draw_window::@5/draw_window::@8->draw_window::@6#0] -- register_copy 
+  // blank inside
+  //SEG210 draw_window::@6
+  //SEG211 [119] (byte) draw_window::$45 ← (byte) draw_window::y3#2 << (byte) 2 -- vbuaa=vbuz1_rol_2 
+    lda y3
+    asl
+    asl
+  //SEG212 [120] (byte) draw_window::$46 ← (byte) draw_window::$45 + (byte) draw_window::y3#2 -- vbuaa=vbuaa_plus_vbuz1 
+    clc
+    adc y3
+  //SEG213 [121] (word) draw_window::z#2 ← (byte) draw_window::$46 << (byte) 3 -- vwuz1=vbuaa_rol_3 
+    sta z_2
+    lda #0
+    sta z_2+1
+    asl z_2
+    rol z_2+1
+    asl z_2
+    rol z_2+1
+    asl z_2
+    rol z_2+1
+  //SEG214 [122] (byte) draw_window::x3#0 ← (byte) draw_window::x1#0 + (byte) 1 -- vbuxx=vbuz1_plus_1 
+    ldx x1
+    inx
+  //SEG215 [123] phi from draw_window::@6 draw_window::@7 to draw_window::@7 [phi:draw_window::@6/draw_window::@7->draw_window::@7]
+  //SEG216 [123] phi (byte) draw_window::x3#2 = (byte) draw_window::x3#0 [phi:draw_window::@6/draw_window::@7->draw_window::@7#0] -- register_copy 
+  //SEG217 draw_window::@7
+  b7:
+  //SEG218 [124] (word~) draw_window::$24 ← (word) draw_window::z#2 + (byte) draw_window::x3#2 -- vwuz1=vwuz2_plus_vbuxx 
+    txa
+    clc
+    adc z_2
+    sta _24
+    lda #0
+    adc z_2+1
+    sta _24+1
+  //SEG219 [125] (byte*~) draw_window::$35 ← (const byte*) screen#0 + (word~) draw_window::$24 -- pbuz1=pbuc1_plus_vwuz1 
+    clc
+    lda _35
+    adc #<screen
+    sta _35
+    lda _35+1
+    adc #>screen
+    sta _35+1
+  //SEG220 [126] *((byte*~) draw_window::$35) ← (byte) $20 -- _deref_pbuz1=vbuc1 
+    lda #$20
+    ldy #0
+    sta (_35),y
+  //SEG221 [127] (byte) draw_window::x3#1 ← ++ (byte) draw_window::x3#2 -- vbuxx=_inc_vbuxx 
+    inx
+  //SEG222 [128] if((byte) draw_window::x3#1<(byte) draw_window::x2#0) goto draw_window::@7 -- vbuxx_lt_vbuz1_then_la1 
+    cpx x2
+    bcc b7
+  //SEG223 draw_window::@8
+  //SEG224 [129] (byte) draw_window::y3#1 ← ++ (byte) draw_window::y3#2 -- vbuz1=_inc_vbuz1 
+    inc y3
+  //SEG225 [130] if((byte) draw_window::y3#1<(byte) draw_window::y2#0) goto draw_window::@6 -- vbuz1_lt_vbuz2_then_la1 
+    lda y3
+    cmp y2
+    bcc b3
+    rts
+}
+  text: .text "this is a small test with word wrap, if a word is too long it moves it to the next line. isn't that supercalifragilisticexpialidocious? i think it's cool!@"
+  text2: .text "textbox by scan of desire@"
+
diff --git a/src/test/ref/textbox.sym b/src/test/ref/textbox.sym
new file mode 100644
index 000000000..e62347ecb
--- /dev/null
+++ b/src/test/ref/textbox.sym
@@ -0,0 +1,212 @@
+(label) @1
+(label) @begin
+(label) @end
+(void()) draw_window((byte) draw_window::x1 , (byte) draw_window::y1 , (byte) draw_window::x2 , (byte) draw_window::y2)
+(word~) draw_window::$13 $13 zp ZP_WORD:22 202.0
+(word~) draw_window::$14 $14 zp ZP_WORD:24 202.0
+(word~) draw_window::$18 $18 zp ZP_WORD:30 202.0
+(word~) draw_window::$19 $19 zp ZP_WORD:28 202.0
+(word~) draw_window::$2 $2 zp ZP_WORD:26 4.0
+(word~) draw_window::$24 $24 zp ZP_WORD:36 2002.0
+(byte*~) draw_window::$27 $27 zp ZP_WORD:22 202.0
+(byte*~) draw_window::$28 $28 zp ZP_WORD:24 202.0
+(byte*~) draw_window::$29 $29 zp ZP_WORD:26 4.0
+(word~) draw_window::$3 $3 zp ZP_WORD:18 4.0
+(byte*~) draw_window::$30 $30 zp ZP_WORD:18 4.0
+(byte*~) draw_window::$31 $31 zp ZP_WORD:30 202.0
+(byte*~) draw_window::$32 $32 zp ZP_WORD:28 202.0
+(byte*~) draw_window::$33 $33 zp ZP_WORD:32 4.0
+(byte*~) draw_window::$34 $34 zp ZP_WORD:20 4.0
+(byte*~) draw_window::$35 $35 zp ZP_WORD:36 2002.0
+(byte) draw_window::$36 reg byte a 4.0
+(byte) draw_window::$37 reg byte a 4.0
+(byte) draw_window::$39 reg byte a 4.0
+(word~) draw_window::$4 $4 zp ZP_WORD:32 4.0
+(byte) draw_window::$40 reg byte a 4.0
+(byte) draw_window::$42 reg byte a 202.0
+(byte) draw_window::$43 reg byte a 202.0
+(byte) draw_window::$45 reg byte a 202.0
+(byte) draw_window::$46 reg byte a 202.0
+(word~) draw_window::$5 $5 zp ZP_WORD:20 4.0
+(byte~) draw_window::$6 reg byte x 2.0
+(byte~) draw_window::$8 reg byte a 2.0
+(label) draw_window::@1
+(label) draw_window::@2
+(label) draw_window::@3
+(label) draw_window::@4
+(label) draw_window::@5
+(label) draw_window::@6
+(label) draw_window::@7
+(label) draw_window::@8
+(label) draw_window::@9
+(label) draw_window::@return
+(word) draw_window::q
+(word) draw_window::q#0 q zp ZP_WORD:20 3.242424242424242
+(byte) draw_window::x
+(byte) draw_window::x#0 reg byte x 4.0
+(byte) draw_window::x#1 reg byte x 151.5
+(byte) draw_window::x#2 reg byte x 58.00000000000001
+(byte) draw_window::x1
+(byte) draw_window::x1#0 x1 zp ZP_BYTE:2 3.365079365079365
+(byte) draw_window::x2
+(byte) draw_window::x2#0 x2 zp ZP_BYTE:6 19.852459016393443
+(byte) draw_window::x3
+(byte) draw_window::x3#0 reg byte x 202.0
+(byte) draw_window::x3#1 reg byte x 1501.5
+(byte) draw_window::x3#2 reg byte x 776.0
+(byte) draw_window::y
+(byte) draw_window::y#0 reg byte x 4.0
+(byte) draw_window::y#1 reg byte x 151.5
+(byte) draw_window::y#2 reg byte x 40.6
+(byte) draw_window::y1
+(byte) draw_window::y1#0 y1 zp ZP_BYTE:5 0.24999999999999997
+(byte) draw_window::y2
+(byte) draw_window::y2#0 y2 zp ZP_BYTE:7 3.5
+(byte) draw_window::y3
+(byte) draw_window::y3#0 y3 zp ZP_BYTE:14 4.0
+(byte) draw_window::y3#1 y3 zp ZP_BYTE:14 151.5
+(byte) draw_window::y3#2 y3 zp ZP_BYTE:14 36.90909090909091
+(word) draw_window::z
+(word) draw_window::z#0 z zp ZP_WORD:18 6.2941176470588225
+(word) draw_window::z#1 z#1 zp ZP_WORD:28 75.75
+(word) draw_window::z#2 z#2 zp ZP_WORD:34 137.75
+(void()) main()
+(byte~) main::$3 reg byte a 22.0
+(label) main::@1
+(label) main::@2
+(label) main::@3
+(label) main::@4
+(label) main::@5
+(label) main::@6
+(label) main::@7
+(word) main::wait
+(word) main::wait#1 wait zp ZP_WORD:3 151.5
+(word) main::wait#2 wait zp ZP_WORD:3 202.0
+(byte) main::x
+(byte) main::x#1 x zp ZP_BYTE:2 16.5
+(byte) main::x#2 x zp ZP_BYTE:2 7.699999999999999
+(byte*) screen
+(const byte*) screen#0 screen = (byte*) 1024
+(byte[]) text
+(const byte[]) text#0 text = (string) "this is a small test with word wrap, if a word is too long it moves it to the next line. isn't that supercalifragilisticexpialidocious? i think it's cool!@"
+(byte[]) text2
+(const byte[]) text2#0 text2 = (string) "textbox by scan of desire@"
+(void()) textbox((byte) textbox::x1 , (byte) textbox::y1 , (byte) textbox::x2 , (byte) textbox::y2 , (byte*) textbox::text)
+(byte~) textbox::$15 reg byte y 101.0
+(byte~) textbox::$17 $17 zp ZP_BYTE:17 101.0
+(byte*~) textbox::$31 $31 zp ZP_WORD:15 202.0
+(byte) textbox::$32 reg byte a 4.0
+(byte) textbox::$33 reg byte a 4.0
+(byte) textbox::$35 reg byte a 202.0
+(byte) textbox::$36 reg byte a 202.0
+(byte) textbox::$38 reg byte a 202.0
+(byte) textbox::$39 reg byte a 202.0
+(word~) textbox::$8 $8 zp ZP_WORD:15 202.0
+(label) textbox::@1
+(label) textbox::@10
+(label) textbox::@11
+(label) textbox::@12
+(label) textbox::@13
+(label) textbox::@14
+(label) textbox::@15
+(label) textbox::@2
+(label) textbox::@3
+(label) textbox::@4
+(label) textbox::@5
+(label) textbox::@6
+(label) textbox::@7
+(label) textbox::@8
+(label) textbox::@9
+(label) textbox::@return
+(byte) textbox::c
+(byte) textbox::c#1 reg byte x 2002.0
+(byte) textbox::c#2 reg byte x 314.85714285714283
+(byte) textbox::i
+(byte) textbox::i#1 i zp ZP_BYTE:10 27.545454545454547
+(byte) textbox::i#2 i zp ZP_BYTE:10 22.954545454545453
+(byte) textbox::ls
+(byte) textbox::ls#0 reg byte y 202.0
+(byte) textbox::ls#1 reg byte y 1001.0
+(byte) textbox::ls#2 reg byte y 1368.3333333333335
+(byte*) textbox::text
+(byte*) textbox::text#12 text zp ZP_WORD:8 50.108695652173914
+(byte) textbox::x
+(byte) textbox::x#0 x zp ZP_BYTE:11 1.0
+(byte) textbox::x#1 x zp ZP_BYTE:11 151.5
+(byte) textbox::x#10 x zp ZP_BYTE:11 36.214285714285715
+(byte) textbox::x#12 x zp ZP_BYTE:11 33.666666666666664
+(byte~) textbox::x#15 x zp ZP_BYTE:11 202.0
+(byte) textbox::x#5 x zp ZP_BYTE:11 202.0
+(byte) textbox::x#7 x zp ZP_BYTE:11 151.5
+(byte) textbox::x1
+(byte) textbox::x1#0 x1 zp ZP_BYTE:2 11.0
+(byte) textbox::x1#4 x1 zp ZP_BYTE:2 6.913043478260869
+(byte) textbox::x2
+(byte) textbox::x2#0 x2 zp ZP_BYTE:6 5.5
+(byte) textbox::x2#4 x2 zp ZP_BYTE:6 6.913043478260869
+(byte) textbox::y
+(byte) textbox::y#0 y zp ZP_BYTE:5 1.4285714285714284
+(byte) textbox::y#1 y zp ZP_BYTE:5 84.16666666666666
+(byte) textbox::y#11 y zp ZP_BYTE:5 151.5
+(byte) textbox::y#12 y zp ZP_BYTE:5 27.06666666666667
+(byte) textbox::y#2 y zp ZP_BYTE:5 101.0
+(byte) textbox::y#5 y zp ZP_BYTE:5 101.0
+(byte) textbox::y1
+(byte) textbox::y1#0 y1 zp ZP_BYTE:5 22.0
+(byte) textbox::y1#4 y1 zp ZP_BYTE:5 2.5
+(byte) textbox::y2
+(byte) textbox::y2#0 y2 zp ZP_BYTE:7 7.333333333333333
+(byte) textbox::y2#4 y2 zp ZP_BYTE:7 4.717391304347826
+(word) textbox::z
+(word) textbox::z#0 z zp ZP_WORD:12 1.3333333333333333
+(word) textbox::z#1 z zp ZP_WORD:12 101.0
+(word) textbox::z#2 z zp ZP_WORD:12 202.0
+(word) textbox::z#3 z zp ZP_WORD:12 29.000000000000004
+(word) textbox::z#4 z zp ZP_WORD:12 151.5
+(word) textbox::z#5 z zp ZP_WORD:12 101.0
+
+zp ZP_BYTE:2 [ main::x#2 main::x#1 textbox::x1#4 textbox::x1#0 draw_window::x1#0 ]
+zp ZP_WORD:3 [ main::wait#2 main::wait#1 ]
+zp ZP_BYTE:5 [ textbox::y1#4 textbox::y1#0 textbox::y#5 textbox::y#1 textbox::y#12 textbox::y#11 textbox::y#0 textbox::y#2 draw_window::y1#0 ]
+zp ZP_BYTE:6 [ textbox::x2#4 textbox::x2#0 draw_window::x2#0 ]
+zp ZP_BYTE:7 [ textbox::y2#4 textbox::y2#0 draw_window::y2#0 ]
+zp ZP_WORD:8 [ textbox::text#12 ]
+zp ZP_BYTE:10 [ textbox::i#2 textbox::i#1 ]
+reg byte y [ textbox::ls#2 textbox::ls#0 textbox::ls#1 ]
+reg byte x [ textbox::c#2 textbox::c#1 ]
+zp ZP_BYTE:11 [ textbox::x#5 textbox::x#15 textbox::x#10 textbox::x#7 textbox::x#0 textbox::x#12 textbox::x#1 ]
+zp ZP_WORD:12 [ textbox::z#5 textbox::z#1 textbox::z#3 textbox::z#4 textbox::z#0 textbox::z#2 ]
+reg byte x [ draw_window::x#2 draw_window::x#0 draw_window::x#1 ]
+reg byte x [ draw_window::y#2 draw_window::y#0 draw_window::y#1 ]
+zp ZP_BYTE:14 [ draw_window::y3#2 draw_window::y3#0 draw_window::y3#1 ]
+reg byte x [ draw_window::x3#2 draw_window::x3#0 draw_window::x3#1 ]
+reg byte a [ main::$3 ]
+reg byte a [ textbox::$32 ]
+reg byte a [ textbox::$33 ]
+zp ZP_WORD:15 [ textbox::$8 textbox::$31 ]
+reg byte y [ textbox::$15 ]
+zp ZP_BYTE:17 [ textbox::$17 ]
+reg byte a [ textbox::$38 ]
+reg byte a [ textbox::$39 ]
+reg byte a [ textbox::$35 ]
+reg byte a [ textbox::$36 ]
+reg byte a [ draw_window::$36 ]
+reg byte a [ draw_window::$37 ]
+zp ZP_WORD:18 [ draw_window::z#0 draw_window::$3 draw_window::$30 ]
+reg byte a [ draw_window::$39 ]
+reg byte a [ draw_window::$40 ]
+zp ZP_WORD:20 [ draw_window::q#0 draw_window::$5 draw_window::$34 ]
+zp ZP_WORD:22 [ draw_window::$13 draw_window::$27 ]
+zp ZP_WORD:24 [ draw_window::$14 draw_window::$28 ]
+zp ZP_WORD:26 [ draw_window::$2 draw_window::$29 ]
+reg byte a [ draw_window::$42 ]
+reg byte a [ draw_window::$43 ]
+zp ZP_WORD:28 [ draw_window::z#1 draw_window::$19 draw_window::$32 ]
+zp ZP_WORD:30 [ draw_window::$18 draw_window::$31 ]
+zp ZP_WORD:32 [ draw_window::$4 draw_window::$33 ]
+reg byte x [ draw_window::$6 ]
+reg byte a [ draw_window::$8 ]
+reg byte a [ draw_window::$45 ]
+reg byte a [ draw_window::$46 ]
+zp ZP_WORD:34 [ draw_window::z#2 ]
+zp ZP_WORD:36 [ draw_window::$24 draw_window::$35 ]