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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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+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 ]