From dd8ccaf186c09c585661053480219db1c6675d16 Mon Sep 17 00:00:00 2001 From: Jesper Gravgaard Date: Mon, 15 Jul 2019 23:45:52 +0200 Subject: [PATCH] Added spline test, a bunch of missing fragments and special ror/rol 8 handling. --- src/main/fragment/vdsz1=_sdword_vwsz2.asm | 11 + src/main/fragment/vdsz1=vdsz1_rol_16.asm | 7 + src/main/fragment/vdsz1=vdsz1_rol_8.asm | 8 + src/main/fragment/vdsz1=vdsz2_rol_16.asm | 7 + src/main/fragment/vdsz1=vdsz2_rol_8.asm | 8 + src/main/fragment/vdsz1_lt_0_then_la1.asm | 2 + src/main/fragment/vduz1=vduc1_plus_vduz2.asm | 4 +- src/main/fragment/vwuz1=vwuz1_rol_8.asm | 4 + src/main/fragment/vwuz1=vwuz1_ror_8.asm | 4 + src/main/fragment/vwuz1=vwuz2_rol_8.asm | 4 + src/main/fragment/vwuz1=vwuz2_ror_8.asm | 4 + .../AsmFragmentInstanceSpecFactory.java | 6 + src/main/kc/stdlib/print.kc | 2 + .../dk/camelot64/kickc/test/TestPrograms.java | 12 + src/test/kc/complex/splines/splines.kc | 132 + src/test/kc/problem-inline-struct-return.kc | 21 + src/test/ref/c-types.asm | 32 +- src/test/ref/c-types.cfg | 282 +- src/test/ref/c-types.log | 3076 +++---- src/test/ref/c-types.sym | 35 +- src/test/ref/complex/splines/splines.asm | 850 ++ src/test/ref/complex/splines/splines.cfg | 273 + src/test/ref/complex/splines/splines.log | 7700 +++++++++++++++++ src/test/ref/complex/splines/splines.sym | 347 + src/test/ref/sandbox.asm | 38 +- src/test/ref/sandbox.log | 223 +- src/test/ref/test-multiply-16bit.asm | 32 +- src/test/ref/test-multiply-16bit.cfg | 549 +- src/test/ref/test-multiply-16bit.log | 5063 +++++------ src/test/ref/test-multiply-16bit.sym | 42 +- src/test/ref/word-array-2.asm | 13 +- src/test/ref/word-array-2.log | 57 +- 32 files changed, 14144 insertions(+), 4704 deletions(-) create mode 100644 src/main/fragment/vdsz1=_sdword_vwsz2.asm create mode 100644 src/main/fragment/vdsz1=vdsz1_rol_16.asm create mode 100644 src/main/fragment/vdsz1=vdsz1_rol_8.asm create mode 100644 src/main/fragment/vdsz1=vdsz2_rol_16.asm create mode 100644 src/main/fragment/vdsz1=vdsz2_rol_8.asm create mode 100644 src/main/fragment/vdsz1_lt_0_then_la1.asm create mode 100644 src/main/fragment/vwuz1=vwuz1_rol_8.asm create mode 100644 src/main/fragment/vwuz1=vwuz1_ror_8.asm create mode 100644 src/main/fragment/vwuz1=vwuz2_rol_8.asm create mode 100644 src/main/fragment/vwuz1=vwuz2_ror_8.asm create mode 100644 src/test/kc/complex/splines/splines.kc create mode 100644 src/test/kc/problem-inline-struct-return.kc create mode 100644 src/test/ref/complex/splines/splines.asm create mode 100644 src/test/ref/complex/splines/splines.cfg create mode 100644 src/test/ref/complex/splines/splines.log create mode 100644 src/test/ref/complex/splines/splines.sym diff --git a/src/main/fragment/vdsz1=_sdword_vwsz2.asm b/src/main/fragment/vdsz1=_sdword_vwsz2.asm new file mode 100644 index 000000000..5729993b5 --- /dev/null +++ b/src/main/fragment/vdsz1=_sdword_vwsz2.asm @@ -0,0 +1,11 @@ +// sign-extend the byte +lda {z2} +sta {z1} +lda {z2}+1 +sta {z1}+1 +ora #$7f +bmi !+ +lda #0 +!: +sta {z1}+2 +sta {z1}+3 diff --git a/src/main/fragment/vdsz1=vdsz1_rol_16.asm b/src/main/fragment/vdsz1=vdsz1_rol_16.asm new file mode 100644 index 000000000..95ae636f6 --- /dev/null +++ b/src/main/fragment/vdsz1=vdsz1_rol_16.asm @@ -0,0 +1,7 @@ +lda {z1}+1 +sta {z1}+3 +lda {z1} +sta {z1}+2 +lda #0 +sta {z1} +sta {z1}+1 diff --git a/src/main/fragment/vdsz1=vdsz1_rol_8.asm b/src/main/fragment/vdsz1=vdsz1_rol_8.asm new file mode 100644 index 000000000..60127d6e6 --- /dev/null +++ b/src/main/fragment/vdsz1=vdsz1_rol_8.asm @@ -0,0 +1,8 @@ +lda {z1}+2 +sta {z1}+3 +lda {z1}+1 +sta {z1}+2 +lda {z1} +sta {z1}+1 +lda #0 +sta {z1} diff --git a/src/main/fragment/vdsz1=vdsz2_rol_16.asm b/src/main/fragment/vdsz1=vdsz2_rol_16.asm new file mode 100644 index 000000000..0db530903 --- /dev/null +++ b/src/main/fragment/vdsz1=vdsz2_rol_16.asm @@ -0,0 +1,7 @@ +lda {z2}+1 +sta {z1}+3 +lda {z2} +sta {z1}+2 +lda #0 +sta {z1} +sta {z1}+1 diff --git a/src/main/fragment/vdsz1=vdsz2_rol_8.asm b/src/main/fragment/vdsz1=vdsz2_rol_8.asm new file mode 100644 index 000000000..41036f2f7 --- /dev/null +++ b/src/main/fragment/vdsz1=vdsz2_rol_8.asm @@ -0,0 +1,8 @@ +lda {z2}+2 +sta {z1}+3 +lda {z2}+1 +sta {z1}+2 +lda {z2} +sta {z1}+1 +lda #0 +sta {z1} diff --git a/src/main/fragment/vdsz1_lt_0_then_la1.asm b/src/main/fragment/vdsz1_lt_0_then_la1.asm new file mode 100644 index 000000000..e62500813 --- /dev/null +++ b/src/main/fragment/vdsz1_lt_0_then_la1.asm @@ -0,0 +1,2 @@ +lda {z1}+3 +bmi {la1} \ No newline at end of file diff --git a/src/main/fragment/vduz1=vduc1_plus_vduz2.asm b/src/main/fragment/vduz1=vduc1_plus_vduz2.asm index aee9842f5..421127508 100644 --- a/src/main/fragment/vduz1=vduc1_plus_vduz2.asm +++ b/src/main/fragment/vduz1=vduc1_plus_vduz2.asm @@ -6,8 +6,8 @@ lda {z2}+1 adc #>{c1} sta {z1}+1 lda {z2}+2 -adc #0 +adc #<{c1}>>$10 sta {z1}+2 lda {z2}+3 -adc #0 +adc #>{c1}>>$10 sta {z1}+3 \ No newline at end of file diff --git a/src/main/fragment/vwuz1=vwuz1_rol_8.asm b/src/main/fragment/vwuz1=vwuz1_rol_8.asm new file mode 100644 index 000000000..75e72ee66 --- /dev/null +++ b/src/main/fragment/vwuz1=vwuz1_rol_8.asm @@ -0,0 +1,4 @@ +lda {z1} +sta {z1}+1 +lda #0 +sta {z1} diff --git a/src/main/fragment/vwuz1=vwuz1_ror_8.asm b/src/main/fragment/vwuz1=vwuz1_ror_8.asm new file mode 100644 index 000000000..e33438deb --- /dev/null +++ b/src/main/fragment/vwuz1=vwuz1_ror_8.asm @@ -0,0 +1,4 @@ +lda {z1}+1 +sta {z1} +lda #0 +sta {z1}+1 \ No newline at end of file diff --git a/src/main/fragment/vwuz1=vwuz2_rol_8.asm b/src/main/fragment/vwuz1=vwuz2_rol_8.asm new file mode 100644 index 000000000..ff19ef29a --- /dev/null +++ b/src/main/fragment/vwuz1=vwuz2_rol_8.asm @@ -0,0 +1,4 @@ +lda {z2} +sta {z1}+1 +lda #0 +sta {z1} diff --git a/src/main/fragment/vwuz1=vwuz2_ror_8.asm b/src/main/fragment/vwuz1=vwuz2_ror_8.asm new file mode 100644 index 000000000..d58da9b9b --- /dev/null +++ b/src/main/fragment/vwuz1=vwuz2_ror_8.asm @@ -0,0 +1,4 @@ +lda {z2}+1 +sta {z1} +lda #0 +sta {z1}+1 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstanceSpecFactory.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstanceSpecFactory.java index 9d72b1f67..759b1c6ff 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstanceSpecFactory.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstanceSpecFactory.java @@ -156,6 +156,12 @@ public class AsmFragmentInstanceSpecFactory { operator != null && (operator.getOperator().equals(">>") || operator.getOperator().equals("<<"))) { signature.append(((ConstantInteger) rValue2).getValue()); + } else if( + rValue2 instanceof ConstantInteger && + ((((ConstantInteger) rValue2).getValue()) % 8 == 0) && + operator != null && + (operator.getOperator().equals(">>") || operator.getOperator().equals("<<"))) { + signature.append(((ConstantInteger) rValue2).getValue()); } else if( rValue2 instanceof ConstantInteger && ((ConstantInteger) rValue2).getValue() == 0 && diff --git a/src/main/kc/stdlib/print.kc b/src/main/kc/stdlib/print.kc index ed5e492e0..7d9d0e51f 100644 --- a/src/main/kc/stdlib/print.kc +++ b/src/main/kc/stdlib/print.kc @@ -112,6 +112,8 @@ void print_sdword(signed dword dw) { if(dw<0) { print_char('-'); dw = -dw; + } else { + print_char(' '); } print_dword((dword)dw); } diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index 78d301640..1d98fcc8f 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -35,6 +35,18 @@ public class TestPrograms { public TestPrograms() { } + /* + @Test + public void testProblemInlineStructReturn() throws IOException, URISyntaxException { + compileAndCompare("problem-inline-struct-return"); + } + */ + + @Test + public void testSplines() throws IOException, URISyntaxException { + compileAndCompare("complex/splines/splines"); + } + @Test public void testProblemNegativeWordConst() throws IOException, URISyntaxException { compileAndCompare("problem-negative-word-const"); diff --git a/src/test/kc/complex/splines/splines.kc b/src/test/kc/complex/splines/splines.kc new file mode 100644 index 000000000..17cbff123 --- /dev/null +++ b/src/test/kc/complex/splines/splines.kc @@ -0,0 +1,132 @@ + // Quadratic Spline Library for the C64 + // Implements an iterative algorithm using only addition for calculating quadratic splines + // + // A quadratic spline is a curve defined by 3 points: P0, P1 and P2. + // The curve connects P0 to P2 through a smooth curve that moves towards P1, but does usually not touch it. + // + // The general formula for the quadratic spline is as follows: + // A = P2 - 2*P1 + P0 + // B = 2*P1 - 2*P0 + // C = P0 + // P(t) = A*t*t + B*t + C + // for 0 <= t <= 1 + // + // This library implements a iterative algorithm using multiplications in the initialization and only additions for calculating each point on the spline. + // The iterative algorithm is based on the following: + // P(t+Dt) = P(t) + A*Dt*Dt + 2*A*t*Dt + B*Dt + // + // init: + // N = 16 (number of plots) + // Dt = 1/N + // P = C + // I = A*Dt*Dt + B*Dt + // J = 2*A*Dt*Dt + // loop(N times): + // plot(P) + // P = P + I + // I = I + J + + // NOTE: When N=16 then Dt[0.16] = $0.1000 Dt^2[0.16] = $0.0100 + // NOTE: When N=8 then Dt[0.16] = $0.2000 Dt^2[0.16] = $0.0400 + +import "time" +import "print" +import "bitmap2" +import "c64" + +// Vector that is part of a spline +struct SplineVector16 { + // x-position s[16.0] + signed int x; + // y-position s[16.0] + signed int y; +}; + +// Vector that is part of a spline +struct SplineVector32 { + // x-position s[16.16] + signed long x; + // y-position s[16.16] + signed long y; +}; + +const char* SCREEN = 0x0400; +const char* BITMAP_SCREEN = 0x5c00; +const char* BITMAP_GRAPHICS = 0x6000; + +void main() { + + bitmap_init(BITMAP_GRAPHICS, BITMAP_SCREEN); + bitmap_clear(BLACK, WHITE); + vicSelectGfxBank(BITMAP_SCREEN); + *D018 = toD018(BITMAP_SCREEN, BITMAP_GRAPHICS); + *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3; + + struct SplineVector16 p0 = { 50, 50 }; + struct SplineVector16 p1a = { 100, 50 }; + struct SplineVector16 p1b = { 50, 100}; + struct SplineVector16 p2 = { 100, 100 }; + struct SplineVector16 p3a = { 150, 100 }; + struct SplineVector16 p3b = { 100, 150 }; + struct SplineVector16 p4 = { 150, 150 }; + + clock_start(); + + splinePlot(p0, p1a, p2); + splinePlot(p2, p3a, p4); + splinePlot(p2, p1b, p0); + splinePlot(p4, p3b, p2); + + clock_t cyclecount = clock()-CLOCKS_PER_INIT; + + print_dword_at(cyclecount, SCREEN); + + //vicSelectGfxBank(SCREEN); + //*D018 = toD018(SCREEN, 0x1000); + //*D011 = VIC_DEN|VIC_RSEL|3; + +} + +void splinePlot(struct SplineVector16 p0, struct SplineVector16 p1, struct SplineVector16 p2) { + + + // A = P2 - 2*P1 + P0 + struct SplineVector16 a = { p2.x - p1.x*2 + p0.x, p2.y - p1.y*2 + p0.y}; + // B = 2*P1 - 2*P0 + struct SplineVector16 b = { p1.x*2 - p0.x*2, p1.y*2 - p0.y*2 }; + + // I = A*Dt*Dt + B*Dt + struct SplineVector32 i = { (signed long)a.x*0x100 + (signed long)b.x*0x100*0x10, (signed long)a.y*0x100 + (signed long)b.y*0x100*0x10 }; + // J = 2*A*Dt*Dt + struct SplineVector32 j = { (signed long)a.x*0x100*2, (signed long)a.y*0x100*2 }; + struct SplineVector32 p = { (signed long)p0.x*0x10000, (signed long)p0.y*0x10000 }; + + for( char n: 0..16) { + bitmap_plot( > p.x, < > p.y); + // p = p + i; + p = { p.x+i.x, p.y+i.y }; + // i = i + j; + i = { i.x+j.x, i.y+j.y }; + } + +} + + + +// Print a spline vector +void print_spline16(struct SplineVector16 p) { + print_char('('); + print_sword(p.x); + print_char(','); + print_sword(p.y); + print_char(')'); +} + +// Print a spline vector +void print_spline32(struct SplineVector32 p) { + print_char('('); + print_sdword(p.x); + print_char(','); + print_sdword(p.y); + print_char(')'); +} diff --git a/src/test/kc/problem-inline-struct-return.kc b/src/test/kc/problem-inline-struct-return.kc new file mode 100644 index 000000000..0132cbfc1 --- /dev/null +++ b/src/test/kc/problem-inline-struct-return.kc @@ -0,0 +1,21 @@ +// Illustrates problem with struct return values from inlined functions + +struct SplineVector { + char x; + char y; +}; + +void main() { + struct SplineVector p1 = { 12, 24}; + struct SplineVector p2 = splineDouble(p1); + + const char* SCREEN = 0x0400; + SCREEN[0] = p2.x; + SCREEN[1] = p2.y; + +} + +inline struct SplineVector splineDouble(struct SplineVector p) { + struct SplineVector pr = { p.x*2, p.y*2 }; + return pr; +} diff --git a/src/test/ref/c-types.asm b/src/test/ref/c-types.asm index 7b75a18f6..f1331d02b 100644 --- a/src/test/ref/c-types.asm +++ b/src/test/ref/c-types.asm @@ -85,7 +85,13 @@ print_ln: { print_sdword: { .label dw = 4 lda dw+3 - bpl b1 + bmi b1 + lda #' ' + jsr print_char + b2: + jsr print_dword + rts + b1: lda #'-' jsr print_char sec @@ -105,8 +111,17 @@ print_sdword: { eor #$ff adc #0 sta dw+3 - b1: - jsr print_dword + jmp b2 +} +// Print a single char +// print_char(byte register(A) ch) +print_char: { + ldy #0 + sta (print_char_cursor),y + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: rts } // Print a dword as HEX @@ -154,17 +169,6 @@ print_byte: { jsr print_char rts } -// Print a single char -// print_char(byte register(A) ch) -print_char: { - ldy #0 - sta (print_char_cursor),y - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - rts -} // Print a zero-terminated string // print_str(byte* zeropage($c) str) print_str: { diff --git a/src/test/ref/c-types.cfg b/src/test/ref/c-types.cfg index 8488e29d8..017c1b225 100644 --- a/src/test/ref/c-types.cfg +++ b/src/test/ref/c-types.cfg @@ -31,7 +31,7 @@ main::@return: scope:[main] from main::@4 [14] return to:@return testLong: scope:[testLong] from main::@4 - [15] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 + [15] (byte*~) print_char_cursor#162 ← (byte*) print_line_cursor#1 [16] call print_str to:testLong::@1 testLong::@1: scope:[testLong] from testLong @@ -67,236 +67,240 @@ print_ln: scope:[print_ln] from testChar::@6 testInt::@6 testLong::@6 testShort print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 [31] (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 ) [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 - [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#25) goto print_ln::@1 + [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 [34] return to:@return print_sdword: scope:[print_sdword] from testLong::@3 testLong::@5 [35] (signed dword) print_sdword::dw#3 ← phi( testLong::@3/(const signed dword) testLong::n#0 testLong::@5/(const signed dword) testLong::s#0 ) - [36] if((signed dword) print_sdword::dw#3>=(signed byte) 0) goto print_sdword::@1 - to:print_sdword::@2 -print_sdword::@2: scope:[print_sdword] from print_sdword + [36] if((signed dword) print_sdword::dw#3<(signed byte) 0) goto print_sdword::@1 + to:print_sdword::@3 +print_sdword::@3: scope:[print_sdword] from print_sdword [37] phi() [38] call print_char - to:print_sdword::@3 -print_sdword::@3: scope:[print_sdword] from print_sdword::@2 - [39] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 - to:print_sdword::@1 -print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@3 - [40] (signed dword) print_sdword::dw#4 ← phi( print_sdword/(signed dword) print_sdword::dw#3 print_sdword::@3/(signed dword) print_sdword::dw#0 ) - [41] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#4 - [42] call print_dword + to:print_sdword::@2 +print_sdword::@2: scope:[print_sdword] from print_sdword::@3 print_sdword::@4 + [39] (signed dword) print_sdword::dw#5 ← phi( print_sdword::@4/(signed dword) print_sdword::dw#0 print_sdword::@3/(signed dword) print_sdword::dw#3 ) + [40] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 + [41] call print_dword to:print_sdword::@return -print_sdword::@return: scope:[print_sdword] from print_sdword::@1 - [43] return +print_sdword::@return: scope:[print_sdword] from print_sdword::@2 + [42] return to:@return -print_dword: scope:[print_dword] from print_sdword::@1 testLong::@1 - [44] (byte*) print_char_cursor#143 ← phi( print_sdword::@1/(byte*) print_char_cursor#25 testLong::@1/(byte*) print_char_cursor#134 ) - [44] (dword) print_dword::dw#2 ← phi( print_sdword::@1/(dword) print_dword::dw#0 testLong::@1/(const dword) testLong::u#0 ) - [45] (word) print_word::w#1 ← > (dword) print_dword::dw#2 - [46] call print_word - to:print_dword::@1 -print_dword::@1: scope:[print_dword] from print_dword - [47] (word) print_word::w#2 ← < (dword) print_dword::dw#2 - [48] call print_word - to:print_dword::@return -print_dword::@return: scope:[print_dword] from print_dword::@1 - [49] return - to:@return -print_word: scope:[print_word] from print_dword print_dword::@1 print_sword::@2 testInt::@1 testShort::@1 - [50] (byte*) print_char_cursor#142 ← phi( print_dword/(byte*) print_char_cursor#143 print_dword::@1/(byte*) print_char_cursor#25 print_sword::@2/(byte*) print_char_cursor#25 testInt::@1/(byte*) print_char_cursor#134 testShort::@1/(byte*) print_char_cursor#134 ) - [50] (word) print_word::w#5 ← phi( print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 testInt::@1/(const word) testInt::u#0 testShort::@1/(const word) testShort::u#0 ) - [51] (byte) print_byte::b#1 ← > (word) print_word::w#5 - [52] call print_byte - to:print_word::@1 -print_word::@1: scope:[print_word] from print_word - [53] (byte) print_byte::b#2 ← < (word) print_word::w#5 - [54] call print_byte - to:print_word::@return -print_word::@return: scope:[print_word] from print_word::@1 - [55] return - to:@return -print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 testChar::@1 testChar::@3 - [56] (byte*) print_char_cursor#146 ← phi( print_sbyte::@2/(byte*) print_char_cursor#25 print_word/(byte*) print_char_cursor#142 print_word::@1/(byte*) print_char_cursor#25 testChar::@1/(byte*) print_char_cursor#134 testChar::@3/(byte*) print_char_cursor#25 ) - [56] (byte) print_byte::b#5 ← phi( print_sbyte::@2/(byte)(const signed byte) print_sbyte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 testChar::@1/(const byte) testChar::u#0 testChar::@3/(const byte) testChar::n#0 ) - [57] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 - [58] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [59] call print_char - to:print_byte::@1 -print_byte::@1: scope:[print_byte] from print_byte - [60] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f - [61] (byte) print_char::ch#6 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [62] call print_char - to:print_byte::@return -print_byte::@return: scope:[print_byte] from print_byte::@1 - [63] return - to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sdword::@2 print_sword::@1 print_sword::@3 testChar::@2 testChar::@4 testInt::@2 testInt::@4 testLong::@2 testLong::@4 testShort::@2 testShort::@4 - [64] (byte*) print_char_cursor#92 ← phi( print_byte/(byte*) print_char_cursor#146 print_byte::@1/(byte*) print_char_cursor#25 print_sbyte::@1/(byte*) print_char_cursor#25 print_sdword::@2/(byte*) print_char_cursor#25 print_sword::@1/(byte*) print_char_cursor#25 print_sword::@3/(byte*) print_char_cursor#25 testChar::@2/(byte*) print_char_cursor#25 testChar::@4/(byte*) print_char_cursor#25 testInt::@2/(byte*) print_char_cursor#25 testInt::@4/(byte*) print_char_cursor#25 testLong::@2/(byte*) print_char_cursor#25 testLong::@4/(byte*) print_char_cursor#25 testShort::@2/(byte*) print_char_cursor#25 testShort::@4/(byte*) print_char_cursor#25 ) - [64] (byte) print_char::ch#15 ← phi( print_byte/(byte) print_char::ch#5 print_byte::@1/(byte) print_char::ch#6 print_sbyte::@1/(byte) '-' print_sdword::@2/(byte) '-' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' testChar::@2/(byte) ' ' testChar::@4/(byte) ' ' testInt::@2/(byte) ' ' testInt::@4/(byte) ' ' testLong::@2/(byte) ' ' testLong::@4/(byte) ' ' testShort::@2/(byte) ' ' testShort::@4/(byte) ' ' ) - [65] *((byte*) print_char_cursor#92) ← (byte) print_char::ch#15 - [66] (byte*) print_char_cursor#25 ← ++ (byte*) print_char_cursor#92 +print_sdword::@1: scope:[print_sdword] from print_sdword + [43] phi() + [44] call print_char + to:print_sdword::@4 +print_sdword::@4: scope:[print_sdword] from print_sdword::@1 + [45] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 + to:print_sdword::@2 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sdword::@1 print_sdword::@3 print_sword::@1 print_sword::@3 testChar::@2 testChar::@4 testInt::@2 testInt::@4 testLong::@2 testLong::@4 testShort::@2 testShort::@4 + [46] (byte*) print_char_cursor#94 ← phi( print_byte/(byte*) print_char_cursor#149 print_byte::@1/(byte*) print_char_cursor#26 print_sbyte::@1/(byte*) print_char_cursor#26 print_sdword::@1/(byte*) print_char_cursor#26 print_sdword::@3/(byte*) print_char_cursor#26 print_sword::@1/(byte*) print_char_cursor#26 print_sword::@3/(byte*) print_char_cursor#26 testChar::@2/(byte*) print_char_cursor#26 testChar::@4/(byte*) print_char_cursor#26 testInt::@2/(byte*) print_char_cursor#26 testInt::@4/(byte*) print_char_cursor#26 testLong::@2/(byte*) print_char_cursor#26 testLong::@4/(byte*) print_char_cursor#26 testShort::@2/(byte*) print_char_cursor#26 testShort::@4/(byte*) print_char_cursor#26 ) + [46] (byte) print_char::ch#16 ← phi( print_byte/(byte) print_char::ch#6 print_byte::@1/(byte) print_char::ch#7 print_sbyte::@1/(byte) '-' print_sdword::@1/(byte) '-' print_sdword::@3/(byte) ' ' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' testChar::@2/(byte) ' ' testChar::@4/(byte) ' ' testInt::@2/(byte) ' ' testInt::@4/(byte) ' ' testLong::@2/(byte) ' ' testLong::@4/(byte) ' ' testShort::@2/(byte) ' ' testShort::@4/(byte) ' ' ) + [47] *((byte*) print_char_cursor#94) ← (byte) print_char::ch#16 + [48] (byte*) print_char_cursor#26 ← ++ (byte*) print_char_cursor#94 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [67] return + [49] return + to:@return +print_dword: scope:[print_dword] from print_sdword::@2 testLong::@1 + [50] (byte*) print_char_cursor#145 ← phi( print_sdword::@2/(byte*) print_char_cursor#26 testLong::@1/(byte*) print_char_cursor#136 ) + [50] (dword) print_dword::dw#2 ← phi( print_sdword::@2/(dword) print_dword::dw#0 testLong::@1/(const dword) testLong::u#0 ) + [51] (word) print_word::w#1 ← > (dword) print_dword::dw#2 + [52] call print_word + to:print_dword::@1 +print_dword::@1: scope:[print_dword] from print_dword + [53] (word) print_word::w#2 ← < (dword) print_dword::dw#2 + [54] call print_word + to:print_dword::@return +print_dword::@return: scope:[print_dword] from print_dword::@1 + [55] return + to:@return +print_word: scope:[print_word] from print_dword print_dword::@1 print_sword::@2 testInt::@1 testShort::@1 + [56] (byte*) print_char_cursor#144 ← phi( print_dword/(byte*) print_char_cursor#145 print_dword::@1/(byte*) print_char_cursor#26 print_sword::@2/(byte*) print_char_cursor#26 testInt::@1/(byte*) print_char_cursor#136 testShort::@1/(byte*) print_char_cursor#136 ) + [56] (word) print_word::w#5 ← phi( print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 testInt::@1/(const word) testInt::u#0 testShort::@1/(const word) testShort::u#0 ) + [57] (byte) print_byte::b#1 ← > (word) print_word::w#5 + [58] call print_byte + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [59] (byte) print_byte::b#2 ← < (word) print_word::w#5 + [60] call print_byte + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [61] return + to:@return +print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 testChar::@1 testChar::@3 + [62] (byte*) print_char_cursor#149 ← phi( print_sbyte::@2/(byte*) print_char_cursor#26 print_word/(byte*) print_char_cursor#144 print_word::@1/(byte*) print_char_cursor#26 testChar::@1/(byte*) print_char_cursor#136 testChar::@3/(byte*) print_char_cursor#26 ) + [62] (byte) print_byte::b#5 ← phi( print_sbyte::@2/(byte)(const signed byte) print_sbyte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 testChar::@1/(const byte) testChar::u#0 testChar::@3/(const byte) testChar::n#0 ) + [63] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 + [64] (byte) print_char::ch#6 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [65] call print_char + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [66] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f + [67] (byte) print_char::ch#7 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [68] call print_char + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [69] return to:@return print_str: scope:[print_str] from testChar testInt testLong testShort - [68] (byte*) print_char_cursor#153 ← phi( testChar/(byte*) 1024 testInt/(byte*~) print_char_cursor#158 testLong/(byte*~) print_char_cursor#159 testShort/(byte*~) print_char_cursor#160 ) - [68] (byte*) print_str::str#7 ← phi( testChar/(const string) testChar::str testInt/(const string) testInt::str testLong/(const string) testLong::str testShort/(const string) testShort::str ) + [70] (byte*) print_char_cursor#156 ← phi( testChar/(byte*) 1024 testInt/(byte*~) print_char_cursor#161 testLong/(byte*~) print_char_cursor#162 testShort/(byte*~) print_char_cursor#163 ) + [70] (byte*) print_str::str#7 ← phi( testChar/(const string) testChar::str testInt/(const string) testInt::str testLong/(const string) testLong::str testShort/(const string) testShort::str ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [69] (byte*) print_char_cursor#134 ← phi( print_str/(byte*) print_char_cursor#153 print_str::@2/(byte*) print_char_cursor#1 ) - [69] (byte*) print_str::str#5 ← phi( print_str/(byte*) print_str::str#7 print_str::@2/(byte*) print_str::str#0 ) - [70] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 + [71] (byte*) print_char_cursor#136 ← phi( print_str/(byte*) print_char_cursor#156 print_str::@2/(byte*) print_char_cursor#1 ) + [71] (byte*) print_str::str#5 ← phi( print_str/(byte*) print_str::str#7 print_str::@2/(byte*) print_str::str#0 ) + [72] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 - [71] return + [73] return to:@return print_str::@2: scope:[print_str] from print_str::@1 - [72] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#5) - [73] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134 - [74] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#5 + [74] *((byte*) print_char_cursor#136) ← *((byte*) print_str::str#5) + [75] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#136 + [76] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#5 to:print_str::@1 testInt: scope:[testInt] from main::@3 - [75] (byte*~) print_char_cursor#158 ← (byte*) print_line_cursor#1 - [76] call print_str + [77] (byte*~) print_char_cursor#161 ← (byte*) print_line_cursor#1 + [78] call print_str to:testInt::@1 testInt::@1: scope:[testInt] from testInt - [77] phi() - [78] call print_word + [79] phi() + [80] call print_word to:testInt::@2 testInt::@2: scope:[testInt] from testInt::@1 - [79] phi() - [80] call print_char + [81] phi() + [82] call print_char to:testInt::@3 testInt::@3: scope:[testInt] from testInt::@2 - [81] phi() - [82] call print_sword + [83] phi() + [84] call print_sword to:testInt::@4 testInt::@4: scope:[testInt] from testInt::@3 - [83] phi() - [84] call print_char + [85] phi() + [86] call print_char to:testInt::@5 testInt::@5: scope:[testInt] from testInt::@4 - [85] phi() - [86] call print_sword + [87] phi() + [88] call print_sword to:testInt::@6 testInt::@6: scope:[testInt] from testInt::@5 - [87] phi() - [88] call print_ln + [89] phi() + [90] call print_ln to:testInt::@return testInt::@return: scope:[testInt] from testInt::@6 - [89] return + [91] return to:@return print_sword: scope:[print_sword] from testInt::@3 testInt::@5 testShort::@3 testShort::@5 - [90] (signed word) print_sword::w#10 ← phi( testInt::@3/(const signed word) testInt::n#0 testInt::@5/(const signed word) testInt::s#0 testShort::@3/(const signed word) testShort::n#0 testShort::@5/(const signed word) testShort::s#0 ) - [91] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 + [92] (signed word) print_sword::w#10 ← phi( testInt::@3/(const signed word) testInt::n#0 testInt::@5/(const signed word) testInt::s#0 testShort::@3/(const signed word) testShort::n#0 testShort::@5/(const signed word) testShort::s#0 ) + [93] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 to:print_sword::@3 print_sword::@3: scope:[print_sword] from print_sword - [92] phi() - [93] call print_char + [94] phi() + [95] call print_char to:print_sword::@2 print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 - [94] (signed word) print_sword::w#7 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#10 ) - [95] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 - [96] call print_word + [96] (signed word) print_sword::w#7 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#10 ) + [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 + [98] call print_word to:print_sword::@return print_sword::@return: scope:[print_sword] from print_sword::@2 - [97] return + [99] return to:@return print_sword::@1: scope:[print_sword] from print_sword - [98] phi() - [99] call print_char + [100] phi() + [101] call print_char to:print_sword::@4 print_sword::@4: scope:[print_sword] from print_sword::@1 - [100] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 + [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 to:print_sword::@2 testShort: scope:[testShort] from main::@2 - [101] (byte*~) print_char_cursor#160 ← (byte*) print_line_cursor#1 - [102] call print_str + [103] (byte*~) print_char_cursor#163 ← (byte*) print_line_cursor#1 + [104] call print_str to:testShort::@1 testShort::@1: scope:[testShort] from testShort - [103] phi() - [104] call print_word + [105] phi() + [106] call print_word to:testShort::@2 testShort::@2: scope:[testShort] from testShort::@1 - [105] phi() - [106] call print_char + [107] phi() + [108] call print_char to:testShort::@3 testShort::@3: scope:[testShort] from testShort::@2 - [107] phi() - [108] call print_sword + [109] phi() + [110] call print_sword to:testShort::@4 testShort::@4: scope:[testShort] from testShort::@3 - [109] phi() - [110] call print_char + [111] phi() + [112] call print_char to:testShort::@5 testShort::@5: scope:[testShort] from testShort::@4 - [111] phi() - [112] call print_sword + [113] phi() + [114] call print_sword to:testShort::@6 testShort::@6: scope:[testShort] from testShort::@5 - [113] phi() - [114] call print_ln + [115] phi() + [116] call print_ln to:testShort::@return testShort::@return: scope:[testShort] from testShort::@6 - [115] return + [117] return to:@return testChar: scope:[testChar] from main::@1 - [116] phi() - [117] call print_str + [118] phi() + [119] call print_str to:testChar::@1 testChar::@1: scope:[testChar] from testChar - [118] phi() - [119] call print_byte + [120] phi() + [121] call print_byte to:testChar::@2 testChar::@2: scope:[testChar] from testChar::@1 - [120] phi() - [121] call print_char + [122] phi() + [123] call print_char to:testChar::@3 testChar::@3: scope:[testChar] from testChar::@2 - [122] phi() - [123] call print_byte + [124] phi() + [125] call print_byte to:testChar::@4 testChar::@4: scope:[testChar] from testChar::@3 - [124] phi() - [125] call print_char + [126] phi() + [127] call print_char to:testChar::@5 testChar::@5: scope:[testChar] from testChar::@4 - [126] phi() - [127] call print_sbyte + [128] phi() + [129] call print_sbyte to:testChar::@6 testChar::@6: scope:[testChar] from testChar::@5 - [128] phi() - [129] call print_ln + [130] phi() + [131] call print_ln to:testChar::@return testChar::@return: scope:[testChar] from testChar::@6 - [130] return + [132] return to:@return print_sbyte: scope:[print_sbyte] from testChar::@5 - [131] phi() + [133] phi() to:print_sbyte::@1 print_sbyte::@1: scope:[print_sbyte] from print_sbyte - [132] phi() - [133] call print_char + [134] phi() + [135] call print_char to:print_sbyte::@2 print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@1 - [134] phi() - [135] call print_byte + [136] phi() + [137] call print_byte to:print_sbyte::@return print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@2 - [136] return + [138] return to:@return print_cls: scope:[print_cls] from main - [137] phi() + [139] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [138] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [139] *((byte*) print_cls::sc#2) ← (byte) ' ' - [140] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [141] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [140] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [141] *((byte*) print_cls::sc#2) ← (byte) ' ' + [142] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [143] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [142] return + [144] return to:@return diff --git a/src/test/ref/c-types.log b/src/test/ref/c-types.log index d1c3dff14..72dde3165 100644 --- a/src/test/ref/c-types.log +++ b/src/test/ref/c-types.log @@ -29,6 +29,7 @@ Culled Empty Block (label) @10 Culled Empty Block (label) @11 Culled Empty Block (label) @12 Culled Empty Block (label) @13 +Culled Empty Block (label) print_sdword::@4 Culled Empty Block (label) @15 Culled Empty Block (label) @16 Culled Empty Block (label) @17 @@ -48,37 +49,37 @@ CONTROL FLOW GRAPH SSA (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 to:@14 print_str: scope:[print_str] from testChar testInt testLong testShort - (byte*) print_char_cursor#153 ← phi( testChar/(byte*) print_char_cursor#148 testInt/(byte*) print_char_cursor#150 testLong/(byte*) print_char_cursor#151 testShort/(byte*) print_char_cursor#149 ) + (byte*) print_char_cursor#156 ← phi( testChar/(byte*) print_char_cursor#151 testInt/(byte*) print_char_cursor#153 testLong/(byte*) print_char_cursor#154 testShort/(byte*) print_char_cursor#152 ) (byte*) print_str::str#7 ← phi( testChar/(byte*) print_str::str#1 testInt/(byte*) print_str::str#3 testLong/(byte*) print_str::str#4 testShort/(byte*) print_str::str#2 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - (byte*) print_char_cursor#134 ← phi( print_str/(byte*) print_char_cursor#153 print_str::@2/(byte*) print_char_cursor#1 ) + (byte*) print_char_cursor#136 ← phi( print_str/(byte*) print_char_cursor#156 print_str::@2/(byte*) print_char_cursor#1 ) (byte*) print_str::str#5 ← phi( print_str/(byte*) print_str::str#7 print_str::@2/(byte*) print_str::str#0 ) (bool~) print_str::$0 ← *((byte*) print_str::str#5) != (byte) '@' if((bool~) print_str::$0) goto print_str::@2 to:print_str::@return print_str::@2: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#68 ← phi( print_str::@1/(byte*) print_char_cursor#134 ) + (byte*) print_char_cursor#69 ← phi( print_str::@1/(byte*) print_char_cursor#136 ) (byte*) print_str::str#6 ← phi( print_str::@1/(byte*) print_str::str#5 ) - *((byte*) print_char_cursor#68) ← *((byte*) print_str::str#6) - (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#68 + *((byte*) print_char_cursor#69) ← *((byte*) print_str::str#6) + (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#69 (byte*) print_str::str#0 ← ++ (byte*) print_str::str#6 to:print_str::@1 print_str::@return: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#69 ← phi( print_str::@1/(byte*) print_char_cursor#134 ) - (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#69 + (byte*) print_char_cursor#70 ← phi( print_str::@1/(byte*) print_char_cursor#136 ) + (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#70 return to:@return print_ln: scope:[print_ln] from testChar::@6 testInt::@6 testLong::@6 testShort::@6 - (byte*) print_char_cursor#135 ← phi( testChar::@6/(byte*) print_char_cursor#40 testInt::@6/(byte*) print_char_cursor#56 testLong::@6/(byte*) print_char_cursor#64 testShort::@6/(byte*) print_char_cursor#48 ) + (byte*) print_char_cursor#137 ← phi( testChar::@6/(byte*) print_char_cursor#41 testInt::@6/(byte*) print_char_cursor#57 testLong::@6/(byte*) print_char_cursor#65 testShort::@6/(byte*) print_char_cursor#49 ) (byte*) print_line_cursor#39 ← phi( testChar::@6/(byte*) print_line_cursor#41 testInt::@6/(byte*) print_line_cursor#43 testLong::@6/(byte*) print_line_cursor#44 testShort::@6/(byte*) print_line_cursor#42 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - (byte*) print_char_cursor#70 ← phi( print_ln/(byte*) print_char_cursor#135 print_ln::@1/(byte*) print_char_cursor#70 ) + (byte*) print_char_cursor#71 ← phi( print_ln/(byte*) print_char_cursor#137 print_ln::@1/(byte*) print_char_cursor#71 ) (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 ) (byte*~) print_ln::$0 ← (byte*) print_line_cursor#20 + (number) $28 (byte*) print_line_cursor#1 ← (byte*~) print_ln::$0 - (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#70 + (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#71 if((bool~) print_ln::$1) goto print_ln::@1 to:print_ln::@2 print_ln::@2: scope:[print_ln] from print_ln::@1 @@ -86,106 +87,106 @@ print_ln::@2: scope:[print_ln] from print_ln::@1 (byte*) print_char_cursor#3 ← (byte*) print_line_cursor#21 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@2 - (byte*) print_char_cursor#71 ← phi( print_ln::@2/(byte*) print_char_cursor#3 ) + (byte*) print_char_cursor#72 ← phi( print_ln::@2/(byte*) print_char_cursor#3 ) (byte*) print_line_cursor#22 ← phi( print_ln::@2/(byte*) print_line_cursor#21 ) (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#22 - (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#71 + (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#72 return to:@return print_sword: scope:[print_sword] from testInt::@3 testInt::@5 testShort::@3 testShort::@5 - (byte*) print_char_cursor#154 ← phi( testInt::@3/(byte*) print_char_cursor#53 testInt::@5/(byte*) print_char_cursor#55 testShort::@3/(byte*) print_char_cursor#45 testShort::@5/(byte*) print_char_cursor#47 ) + (byte*) print_char_cursor#157 ← phi( testInt::@3/(byte*) print_char_cursor#54 testInt::@5/(byte*) print_char_cursor#56 testShort::@3/(byte*) print_char_cursor#46 testShort::@5/(byte*) print_char_cursor#48 ) (signed word) print_sword::w#5 ← phi( testInt::@3/(signed word) print_sword::w#3 testInt::@5/(signed word) print_sword::w#4 testShort::@3/(signed word) print_sword::w#1 testShort::@5/(signed word) print_sword::w#2 ) (bool~) print_sword::$0 ← (signed word) print_sword::w#5 < (number) 0 if((bool~) print_sword::$0) goto print_sword::@1 to:print_sword::@3 print_sword::@1: scope:[print_sword] from print_sword (signed word) print_sword::w#8 ← phi( print_sword/(signed word) print_sword::w#5 ) - (byte*) print_char_cursor#136 ← phi( print_sword/(byte*) print_char_cursor#154 ) + (byte*) print_char_cursor#138 ← phi( print_sword/(byte*) print_char_cursor#157 ) (byte) print_char::ch#0 ← (byte) '-' call print_char to:print_sword::@5 print_sword::@5: scope:[print_sword] from print_sword::@1 (signed word) print_sword::w#6 ← phi( print_sword::@1/(signed word) print_sword::w#8 ) - (byte*) print_char_cursor#72 ← phi( print_sword::@1/(byte*) print_char_cursor#26 ) - (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#72 + (byte*) print_char_cursor#73 ← phi( print_sword::@1/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#73 (signed word~) print_sword::$5 ← - (signed word) print_sword::w#6 (signed word) print_sword::w#0 ← (signed word~) print_sword::$5 to:print_sword::@2 print_sword::@3: scope:[print_sword] from print_sword (signed word) print_sword::w#10 ← phi( print_sword/(signed word) print_sword::w#5 ) - (byte*) print_char_cursor#137 ← phi( print_sword/(byte*) print_char_cursor#154 ) + (byte*) print_char_cursor#139 ← phi( print_sword/(byte*) print_char_cursor#157 ) (byte) print_char::ch#1 ← (byte) ' ' call print_char to:print_sword::@6 print_sword::@6: scope:[print_sword] from print_sword::@3 (signed word) print_sword::w#9 ← phi( print_sword::@3/(signed word) print_sword::w#10 ) - (byte*) print_char_cursor#73 ← phi( print_sword::@3/(byte*) print_char_cursor#26 ) - (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#73 + (byte*) print_char_cursor#74 ← phi( print_sword::@3/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#74 to:print_sword::@2 print_sword::@2: scope:[print_sword] from print_sword::@5 print_sword::@6 - (byte*) print_char_cursor#138 ← phi( print_sword::@5/(byte*) print_char_cursor#5 print_sword::@6/(byte*) print_char_cursor#6 ) + (byte*) print_char_cursor#140 ← phi( print_sword::@5/(byte*) print_char_cursor#5 print_sword::@6/(byte*) print_char_cursor#6 ) (signed word) print_sword::w#7 ← phi( print_sword::@5/(signed word) print_sword::w#0 print_sword::@6/(signed word) print_sword::w#9 ) (word~) print_sword::$1 ← ((word)) (signed word) print_sword::w#7 (word) print_word::w#0 ← (word~) print_sword::$1 call print_word to:print_sword::@7 print_sword::@7: scope:[print_sword] from print_sword::@2 - (byte*) print_char_cursor#74 ← phi( print_sword::@2/(byte*) print_char_cursor#15 ) - (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#74 + (byte*) print_char_cursor#75 ← phi( print_sword::@2/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#75 to:print_sword::@return print_sword::@return: scope:[print_sword] from print_sword::@7 - (byte*) print_char_cursor#75 ← phi( print_sword::@7/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#75 + (byte*) print_char_cursor#76 ← phi( print_sword::@7/(byte*) print_char_cursor#7 ) + (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#76 return to:@return print_sbyte: scope:[print_sbyte] from testChar::@5 - (byte*) print_char_cursor#155 ← phi( testChar::@5/(byte*) print_char_cursor#39 ) + (byte*) print_char_cursor#158 ← phi( testChar::@5/(byte*) print_char_cursor#40 ) (signed byte) print_sbyte::b#2 ← phi( testChar::@5/(signed byte) print_sbyte::b#1 ) (bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b#2 < (number) 0 if((bool~) print_sbyte::$0) goto print_sbyte::@1 to:print_sbyte::@3 print_sbyte::@1: scope:[print_sbyte] from print_sbyte (signed byte) print_sbyte::b#5 ← phi( print_sbyte/(signed byte) print_sbyte::b#2 ) - (byte*) print_char_cursor#139 ← phi( print_sbyte/(byte*) print_char_cursor#155 ) + (byte*) print_char_cursor#141 ← phi( print_sbyte/(byte*) print_char_cursor#158 ) (byte) print_char::ch#2 ← (byte) '-' call print_char to:print_sbyte::@5 print_sbyte::@5: scope:[print_sbyte] from print_sbyte::@1 (signed byte) print_sbyte::b#3 ← phi( print_sbyte::@1/(signed byte) print_sbyte::b#5 ) - (byte*) print_char_cursor#76 ← phi( print_sbyte::@1/(byte*) print_char_cursor#26 ) - (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#76 + (byte*) print_char_cursor#77 ← phi( print_sbyte::@1/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#77 (signed byte~) print_sbyte::$5 ← - (signed byte) print_sbyte::b#3 (signed byte) print_sbyte::b#0 ← (signed byte~) print_sbyte::$5 to:print_sbyte::@2 print_sbyte::@3: scope:[print_sbyte] from print_sbyte (signed byte) print_sbyte::b#7 ← phi( print_sbyte/(signed byte) print_sbyte::b#2 ) - (byte*) print_char_cursor#140 ← phi( print_sbyte/(byte*) print_char_cursor#155 ) + (byte*) print_char_cursor#142 ← phi( print_sbyte/(byte*) print_char_cursor#158 ) (byte) print_char::ch#3 ← (byte) ' ' call print_char to:print_sbyte::@6 print_sbyte::@6: scope:[print_sbyte] from print_sbyte::@3 (signed byte) print_sbyte::b#6 ← phi( print_sbyte::@3/(signed byte) print_sbyte::b#7 ) - (byte*) print_char_cursor#77 ← phi( print_sbyte::@3/(byte*) print_char_cursor#26 ) - (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#77 + (byte*) print_char_cursor#78 ← phi( print_sbyte::@3/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#78 to:print_sbyte::@2 print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@5 print_sbyte::@6 - (byte*) print_char_cursor#141 ← phi( print_sbyte::@5/(byte*) print_char_cursor#9 print_sbyte::@6/(byte*) print_char_cursor#10 ) + (byte*) print_char_cursor#143 ← phi( print_sbyte::@5/(byte*) print_char_cursor#9 print_sbyte::@6/(byte*) print_char_cursor#10 ) (signed byte) print_sbyte::b#4 ← phi( print_sbyte::@5/(signed byte) print_sbyte::b#0 print_sbyte::@6/(signed byte) print_sbyte::b#6 ) (byte~) print_sbyte::$1 ← ((byte)) (signed byte) print_sbyte::b#4 (byte) print_byte::b#0 ← (byte~) print_sbyte::$1 call print_byte to:print_sbyte::@7 print_sbyte::@7: scope:[print_sbyte] from print_sbyte::@2 - (byte*) print_char_cursor#78 ← phi( print_sbyte::@2/(byte*) print_char_cursor#24 ) - (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#78 + (byte*) print_char_cursor#79 ← phi( print_sbyte::@2/(byte*) print_char_cursor#25 ) + (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#79 to:print_sbyte::@return print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@7 - (byte*) print_char_cursor#79 ← phi( print_sbyte::@7/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#79 + (byte*) print_char_cursor#80 ← phi( print_sbyte::@7/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#80 return to:@return print_word: scope:[print_word] from print_dword print_dword::@1 print_sword::@2 testInt::@1 testShort::@1 - (byte*) print_char_cursor#142 ← phi( print_dword/(byte*) print_char_cursor#143 print_dword::@1/(byte*) print_char_cursor#16 print_sword::@2/(byte*) print_char_cursor#138 testInt::@1/(byte*) print_char_cursor#51 testShort::@1/(byte*) print_char_cursor#43 ) + (byte*) print_char_cursor#144 ← phi( print_dword/(byte*) print_char_cursor#145 print_dword::@1/(byte*) print_char_cursor#16 print_sword::@2/(byte*) print_char_cursor#140 testInt::@1/(byte*) print_char_cursor#52 testShort::@1/(byte*) print_char_cursor#44 ) (word) print_word::w#5 ← phi( print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 testInt::@1/(word) print_word::w#4 testShort::@1/(word) print_word::w#3 ) (byte~) print_word::$0 ← > (word) print_word::w#5 (byte) print_byte::b#1 ← (byte~) print_word::$0 @@ -193,120 +194,130 @@ print_word: scope:[print_word] from print_dword print_dword::@1 print_sword::@2 to:print_word::@1 print_word::@1: scope:[print_word] from print_word (word) print_word::w#6 ← phi( print_word/(word) print_word::w#5 ) - (byte*) print_char_cursor#80 ← phi( print_word/(byte*) print_char_cursor#24 ) - (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#80 + (byte*) print_char_cursor#81 ← phi( print_word/(byte*) print_char_cursor#25 ) + (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#81 (byte~) print_word::$2 ← < (word) print_word::w#6 (byte) print_byte::b#2 ← (byte~) print_word::$2 call print_byte to:print_word::@2 print_word::@2: scope:[print_word] from print_word::@1 - (byte*) print_char_cursor#81 ← phi( print_word::@1/(byte*) print_char_cursor#24 ) - (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#81 + (byte*) print_char_cursor#82 ← phi( print_word::@1/(byte*) print_char_cursor#25 ) + (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#82 to:print_word::@return print_word::@return: scope:[print_word] from print_word::@2 - (byte*) print_char_cursor#82 ← phi( print_word::@2/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#82 + (byte*) print_char_cursor#83 ← phi( print_word::@2/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#83 return to:@return -print_dword: scope:[print_dword] from print_sdword::@1 testLong::@1 - (byte*) print_char_cursor#143 ← phi( print_sdword::@1/(byte*) print_char_cursor#144 testLong::@1/(byte*) print_char_cursor#59 ) - (dword) print_dword::dw#2 ← phi( print_sdword::@1/(dword) print_dword::dw#0 testLong::@1/(dword) print_dword::dw#1 ) +print_dword: scope:[print_dword] from print_sdword::@2 testLong::@1 + (byte*) print_char_cursor#145 ← phi( print_sdword::@2/(byte*) print_char_cursor#148 testLong::@1/(byte*) print_char_cursor#60 ) + (dword) print_dword::dw#2 ← phi( print_sdword::@2/(dword) print_dword::dw#0 testLong::@1/(dword) print_dword::dw#1 ) (word~) print_dword::$0 ← > (dword) print_dword::dw#2 (word) print_word::w#1 ← (word~) print_dword::$0 call print_word to:print_dword::@1 print_dword::@1: scope:[print_dword] from print_dword (dword) print_dword::dw#3 ← phi( print_dword/(dword) print_dword::dw#2 ) - (byte*) print_char_cursor#83 ← phi( print_dword/(byte*) print_char_cursor#15 ) - (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#83 + (byte*) print_char_cursor#84 ← phi( print_dword/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#84 (word~) print_dword::$2 ← < (dword) print_dword::dw#3 (word) print_word::w#2 ← (word~) print_dword::$2 call print_word to:print_dword::@2 print_dword::@2: scope:[print_dword] from print_dword::@1 - (byte*) print_char_cursor#84 ← phi( print_dword::@1/(byte*) print_char_cursor#15 ) - (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#84 + (byte*) print_char_cursor#85 ← phi( print_dword::@1/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#85 to:print_dword::@return print_dword::@return: scope:[print_dword] from print_dword::@2 - (byte*) print_char_cursor#85 ← phi( print_dword::@2/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#85 + (byte*) print_char_cursor#86 ← phi( print_dword::@2/(byte*) print_char_cursor#17 ) + (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#86 return to:@return print_sdword: scope:[print_sdword] from testLong::@3 testLong::@5 - (byte*) print_char_cursor#156 ← phi( testLong::@3/(byte*) print_char_cursor#61 testLong::@5/(byte*) print_char_cursor#63 ) + (byte*) print_char_cursor#159 ← phi( testLong::@3/(byte*) print_char_cursor#62 testLong::@5/(byte*) print_char_cursor#64 ) (signed dword) print_sdword::dw#3 ← phi( testLong::@3/(signed dword) print_sdword::dw#1 testLong::@5/(signed dword) print_sdword::dw#2 ) (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw#3 < (number) 0 - (bool~) print_sdword::$1 ← ! (bool~) print_sdword::$0 - if((bool~) print_sdword::$1) goto print_sdword::@1 - to:print_sdword::@2 -print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@4 - (byte*) print_char_cursor#144 ← phi( print_sdword/(byte*) print_char_cursor#156 print_sdword::@4/(byte*) print_char_cursor#20 ) - (signed dword) print_sdword::dw#4 ← phi( print_sdword/(signed dword) print_sdword::dw#3 print_sdword::@4/(signed dword) print_sdword::dw#0 ) - (dword~) print_sdword::$2 ← ((dword)) (signed dword) print_sdword::dw#4 - (dword) print_dword::dw#0 ← (dword~) print_sdword::$2 - call print_dword + if((bool~) print_sdword::$0) goto print_sdword::@1 to:print_sdword::@3 -print_sdword::@3: scope:[print_sdword] from print_sdword::@1 - (byte*) print_char_cursor#86 ← phi( print_sdword::@1/(byte*) print_char_cursor#18 ) - (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#86 - to:print_sdword::@return -print_sdword::@2: scope:[print_sdword] from print_sdword +print_sdword::@1: scope:[print_sdword] from print_sdword (signed dword) print_sdword::dw#6 ← phi( print_sdword/(signed dword) print_sdword::dw#3 ) - (byte*) print_char_cursor#145 ← phi( print_sdword/(byte*) print_char_cursor#156 ) + (byte*) print_char_cursor#146 ← phi( print_sdword/(byte*) print_char_cursor#159 ) (byte) print_char::ch#4 ← (byte) '-' call print_char - to:print_sdword::@4 -print_sdword::@4: scope:[print_sdword] from print_sdword::@2 - (signed dword) print_sdword::dw#5 ← phi( print_sdword::@2/(signed dword) print_sdword::dw#6 ) - (byte*) print_char_cursor#87 ← phi( print_sdword::@2/(byte*) print_char_cursor#26 ) - (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#87 - (signed dword~) print_sdword::$5 ← - (signed dword) print_sdword::dw#5 + to:print_sdword::@5 +print_sdword::@5: scope:[print_sdword] from print_sdword::@1 + (signed dword) print_sdword::dw#4 ← phi( print_sdword::@1/(signed dword) print_sdword::dw#6 ) + (byte*) print_char_cursor#87 ← phi( print_sdword::@1/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#87 + (signed dword~) print_sdword::$5 ← - (signed dword) print_sdword::dw#4 (signed dword) print_sdword::dw#0 ← (signed dword~) print_sdword::$5 - to:print_sdword::@1 -print_sdword::@return: scope:[print_sdword] from print_sdword::@3 - (byte*) print_char_cursor#88 ← phi( print_sdword::@3/(byte*) print_char_cursor#19 ) - (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#88 + to:print_sdword::@2 +print_sdword::@3: scope:[print_sdword] from print_sdword + (signed dword) print_sdword::dw#8 ← phi( print_sdword/(signed dword) print_sdword::dw#3 ) + (byte*) print_char_cursor#147 ← phi( print_sdword/(byte*) print_char_cursor#159 ) + (byte) print_char::ch#5 ← (byte) ' ' + call print_char + to:print_sdword::@6 +print_sdword::@6: scope:[print_sdword] from print_sdword::@3 + (signed dword) print_sdword::dw#7 ← phi( print_sdword::@3/(signed dword) print_sdword::dw#8 ) + (byte*) print_char_cursor#88 ← phi( print_sdword::@3/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#88 + to:print_sdword::@2 +print_sdword::@2: scope:[print_sdword] from print_sdword::@5 print_sdword::@6 + (byte*) print_char_cursor#148 ← phi( print_sdword::@5/(byte*) print_char_cursor#19 print_sdword::@6/(byte*) print_char_cursor#20 ) + (signed dword) print_sdword::dw#5 ← phi( print_sdword::@5/(signed dword) print_sdword::dw#0 print_sdword::@6/(signed dword) print_sdword::dw#7 ) + (dword~) print_sdword::$1 ← ((dword)) (signed dword) print_sdword::dw#5 + (dword) print_dword::dw#0 ← (dword~) print_sdword::$1 + call print_dword + to:print_sdword::@7 +print_sdword::@7: scope:[print_sdword] from print_sdword::@2 + (byte*) print_char_cursor#89 ← phi( print_sdword::@2/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#89 + to:print_sdword::@return +print_sdword::@return: scope:[print_sdword] from print_sdword::@7 + (byte*) print_char_cursor#90 ← phi( print_sdword::@7/(byte*) print_char_cursor#21 ) + (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#90 return to:@return @14: scope:[] from @begin (byte*) print_screen#6 ← phi( @begin/(byte*) print_screen#0 ) - (byte*) print_char_cursor#157 ← phi( @begin/(byte*) print_char_cursor#0 ) + (byte*) print_char_cursor#160 ← phi( @begin/(byte*) print_char_cursor#0 ) (byte*) print_line_cursor#50 ← phi( @begin/(byte*) print_line_cursor#0 ) (byte[]) print_hextab#0 ← (const string) $0 to:@26 print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 testChar::@1 testChar::@3 - (byte*) print_char_cursor#146 ← phi( print_sbyte::@2/(byte*) print_char_cursor#141 print_word/(byte*) print_char_cursor#142 print_word::@1/(byte*) print_char_cursor#13 testChar::@1/(byte*) print_char_cursor#35 testChar::@3/(byte*) print_char_cursor#37 ) + (byte*) print_char_cursor#149 ← phi( print_sbyte::@2/(byte*) print_char_cursor#143 print_word/(byte*) print_char_cursor#144 print_word::@1/(byte*) print_char_cursor#13 testChar::@1/(byte*) print_char_cursor#36 testChar::@3/(byte*) print_char_cursor#38 ) (byte) print_byte::b#5 ← phi( print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 testChar::@1/(byte) print_byte::b#3 testChar::@3/(byte) print_byte::b#4 ) (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (number) 4 - (byte) print_char::ch#5 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) + (byte) print_char::ch#6 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte (byte) print_byte::b#6 ← phi( print_byte/(byte) print_byte::b#5 ) - (byte*) print_char_cursor#89 ← phi( print_byte/(byte*) print_char_cursor#26 ) - (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#89 + (byte*) print_char_cursor#91 ← phi( print_byte/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#91 (number~) print_byte::$2 ← (byte) print_byte::b#6 & (number) $f - (byte) print_char::ch#6 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) + (byte) print_char::ch#7 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) call print_char to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 - (byte*) print_char_cursor#90 ← phi( print_byte::@1/(byte*) print_char_cursor#26 ) - (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#90 + (byte*) print_char_cursor#92 ← phi( print_byte::@1/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#92 to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@2 - (byte*) print_char_cursor#91 ← phi( print_byte::@2/(byte*) print_char_cursor#23 ) - (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#91 + (byte*) print_char_cursor#93 ← phi( print_byte::@2/(byte*) print_char_cursor#24 ) + (byte*) print_char_cursor#25 ← (byte*) print_char_cursor#93 return to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sdword::@2 print_sword::@1 print_sword::@3 testChar::@2 testChar::@4 testInt::@2 testInt::@4 testLong::@2 testLong::@4 testShort::@2 testShort::@4 - (byte*) print_char_cursor#92 ← phi( print_byte/(byte*) print_char_cursor#146 print_byte::@1/(byte*) print_char_cursor#22 print_sbyte::@1/(byte*) print_char_cursor#139 print_sbyte::@3/(byte*) print_char_cursor#140 print_sdword::@2/(byte*) print_char_cursor#145 print_sword::@1/(byte*) print_char_cursor#136 print_sword::@3/(byte*) print_char_cursor#137 testChar::@2/(byte*) print_char_cursor#36 testChar::@4/(byte*) print_char_cursor#38 testInt::@2/(byte*) print_char_cursor#52 testInt::@4/(byte*) print_char_cursor#54 testLong::@2/(byte*) print_char_cursor#60 testLong::@4/(byte*) print_char_cursor#62 testShort::@2/(byte*) print_char_cursor#44 testShort::@4/(byte*) print_char_cursor#46 ) - (byte) print_char::ch#15 ← phi( print_byte/(byte) print_char::ch#5 print_byte::@1/(byte) print_char::ch#6 print_sbyte::@1/(byte) print_char::ch#2 print_sbyte::@3/(byte) print_char::ch#3 print_sdword::@2/(byte) print_char::ch#4 print_sword::@1/(byte) print_char::ch#0 print_sword::@3/(byte) print_char::ch#1 testChar::@2/(byte) print_char::ch#7 testChar::@4/(byte) print_char::ch#8 testInt::@2/(byte) print_char::ch#11 testInt::@4/(byte) print_char::ch#12 testLong::@2/(byte) print_char::ch#13 testLong::@4/(byte) print_char::ch#14 testShort::@2/(byte) print_char::ch#9 testShort::@4/(byte) print_char::ch#10 ) - *((byte*) print_char_cursor#92) ← (byte) print_char::ch#15 - (byte*) print_char_cursor#25 ← ++ (byte*) print_char_cursor#92 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sdword::@1 print_sdword::@3 print_sword::@1 print_sword::@3 testChar::@2 testChar::@4 testInt::@2 testInt::@4 testLong::@2 testLong::@4 testShort::@2 testShort::@4 + (byte*) print_char_cursor#94 ← phi( print_byte/(byte*) print_char_cursor#149 print_byte::@1/(byte*) print_char_cursor#23 print_sbyte::@1/(byte*) print_char_cursor#141 print_sbyte::@3/(byte*) print_char_cursor#142 print_sdword::@1/(byte*) print_char_cursor#146 print_sdword::@3/(byte*) print_char_cursor#147 print_sword::@1/(byte*) print_char_cursor#138 print_sword::@3/(byte*) print_char_cursor#139 testChar::@2/(byte*) print_char_cursor#37 testChar::@4/(byte*) print_char_cursor#39 testInt::@2/(byte*) print_char_cursor#53 testInt::@4/(byte*) print_char_cursor#55 testLong::@2/(byte*) print_char_cursor#61 testLong::@4/(byte*) print_char_cursor#63 testShort::@2/(byte*) print_char_cursor#45 testShort::@4/(byte*) print_char_cursor#47 ) + (byte) print_char::ch#16 ← phi( print_byte/(byte) print_char::ch#6 print_byte::@1/(byte) print_char::ch#7 print_sbyte::@1/(byte) print_char::ch#2 print_sbyte::@3/(byte) print_char::ch#3 print_sdword::@1/(byte) print_char::ch#4 print_sdword::@3/(byte) print_char::ch#5 print_sword::@1/(byte) print_char::ch#0 print_sword::@3/(byte) print_char::ch#1 testChar::@2/(byte) print_char::ch#8 testChar::@4/(byte) print_char::ch#9 testInt::@2/(byte) print_char::ch#12 testInt::@4/(byte) print_char::ch#13 testLong::@2/(byte) print_char::ch#14 testLong::@4/(byte) print_char::ch#15 testShort::@2/(byte) print_char::ch#10 testShort::@4/(byte) print_char::ch#11 ) + *((byte*) print_char_cursor#94) ← (byte) print_char::ch#16 + (byte*) print_char_cursor#26 ← ++ (byte*) print_char_cursor#94 to:print_char::@return print_char::@return: scope:[print_char] from print_char - (byte*) print_char_cursor#93 ← phi( print_char/(byte*) print_char_cursor#25 ) - (byte*) print_char_cursor#26 ← (byte*) print_char_cursor#93 + (byte*) print_char_cursor#95 ← phi( print_char/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#27 ← (byte*) print_char_cursor#95 return to:@return print_cls: scope:[print_cls] from main @@ -325,65 +336,65 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 print_cls::@2: scope:[print_cls] from print_cls::@1 (byte*) print_screen#3 ← phi( print_cls::@1/(byte*) print_screen#2 ) (byte*) print_line_cursor#3 ← (byte*) print_screen#3 - (byte*) print_char_cursor#27 ← (byte*) print_line_cursor#3 + (byte*) print_char_cursor#28 ← (byte*) print_line_cursor#3 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@2 - (byte*) print_char_cursor#94 ← phi( print_cls::@2/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#96 ← phi( print_cls::@2/(byte*) print_char_cursor#28 ) (byte*) print_line_cursor#23 ← phi( print_cls::@2/(byte*) print_line_cursor#3 ) (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#23 - (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#94 + (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#96 return to:@return main: scope:[main] from @26 - (byte*) print_char_cursor#147 ← phi( @26/(byte*) print_char_cursor#152 ) + (byte*) print_char_cursor#150 ← phi( @26/(byte*) print_char_cursor#155 ) (byte*) print_line_cursor#40 ← phi( @26/(byte*) print_line_cursor#45 ) (byte*) print_screen#4 ← phi( @26/(byte*) print_screen#5 ) call print_cls to:main::@1 main::@1: scope:[main] from main - (byte*) print_char_cursor#95 ← phi( main/(byte*) print_char_cursor#28 ) + (byte*) print_char_cursor#97 ← phi( main/(byte*) print_char_cursor#29 ) (byte*) print_line_cursor#24 ← phi( main/(byte*) print_line_cursor#4 ) (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#24 - (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#95 + (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#97 call testChar to:main::@2 main::@2: scope:[main] from main::@1 (byte*) print_line_cursor#25 ← phi( main::@1/(byte*) print_line_cursor#12 ) - (byte*) print_char_cursor#96 ← phi( main::@1/(byte*) print_char_cursor#42 ) - (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#96 + (byte*) print_char_cursor#98 ← phi( main::@1/(byte*) print_char_cursor#43 ) + (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#98 (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#25 call testShort to:main::@3 main::@3: scope:[main] from main::@2 (byte*) print_line_cursor#26 ← phi( main::@2/(byte*) print_line_cursor#14 ) - (byte*) print_char_cursor#97 ← phi( main::@2/(byte*) print_char_cursor#50 ) - (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#97 + (byte*) print_char_cursor#99 ← phi( main::@2/(byte*) print_char_cursor#51 ) + (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#99 (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#26 call testInt to:main::@4 main::@4: scope:[main] from main::@3 (byte*) print_line_cursor#27 ← phi( main::@3/(byte*) print_line_cursor#16 ) - (byte*) print_char_cursor#98 ← phi( main::@3/(byte*) print_char_cursor#58 ) - (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#98 + (byte*) print_char_cursor#100 ← phi( main::@3/(byte*) print_char_cursor#59 ) + (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#100 (byte*) print_line_cursor#8 ← (byte*) print_line_cursor#27 call testLong to:main::@5 main::@5: scope:[main] from main::@4 (byte*) print_line_cursor#28 ← phi( main::@4/(byte*) print_line_cursor#18 ) - (byte*) print_char_cursor#99 ← phi( main::@4/(byte*) print_char_cursor#66 ) - (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#99 + (byte*) print_char_cursor#101 ← phi( main::@4/(byte*) print_char_cursor#67 ) + (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#101 (byte*) print_line_cursor#9 ← (byte*) print_line_cursor#28 to:main::@return main::@return: scope:[main] from main::@5 - (byte*) print_char_cursor#100 ← phi( main::@5/(byte*) print_char_cursor#33 ) + (byte*) print_char_cursor#102 ← phi( main::@5/(byte*) print_char_cursor#34 ) (byte*) print_line_cursor#29 ← phi( main::@5/(byte*) print_line_cursor#9 ) (byte*) print_line_cursor#10 ← (byte*) print_line_cursor#29 - (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#100 + (byte*) print_char_cursor#35 ← (byte*) print_char_cursor#102 return to:@return testChar: scope:[testChar] from main::@1 (byte*) print_line_cursor#67 ← phi( main::@1/(byte*) print_line_cursor#5 ) - (byte*) print_char_cursor#148 ← phi( main::@1/(byte*) print_char_cursor#29 ) + (byte*) print_char_cursor#151 ← phi( main::@1/(byte*) print_char_cursor#30 ) (byte) testChar::u#0 ← (number) $e (byte) testChar::n#0 ← (number) $e (signed byte) testChar::s#0 ← (number) -$e @@ -392,61 +403,61 @@ testChar: scope:[testChar] from main::@1 to:testChar::@1 testChar::@1: scope:[testChar] from testChar (byte*) print_line_cursor#63 ← phi( testChar/(byte*) print_line_cursor#67 ) - (byte*) print_char_cursor#101 ← phi( testChar/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#35 ← (byte*) print_char_cursor#101 + (byte*) print_char_cursor#103 ← phi( testChar/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#36 ← (byte*) print_char_cursor#103 (byte) print_byte::b#3 ← (byte) testChar::u#0 call print_byte to:testChar::@2 testChar::@2: scope:[testChar] from testChar::@1 (byte*) print_line_cursor#59 ← phi( testChar::@1/(byte*) print_line_cursor#63 ) - (byte*) print_char_cursor#102 ← phi( testChar::@1/(byte*) print_char_cursor#24 ) - (byte*) print_char_cursor#36 ← (byte*) print_char_cursor#102 - (byte) print_char::ch#7 ← (byte) ' ' + (byte*) print_char_cursor#104 ← phi( testChar::@1/(byte*) print_char_cursor#25 ) + (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#104 + (byte) print_char::ch#8 ← (byte) ' ' call print_char to:testChar::@3 testChar::@3: scope:[testChar] from testChar::@2 (byte*) print_line_cursor#55 ← phi( testChar::@2/(byte*) print_line_cursor#59 ) - (byte*) print_char_cursor#103 ← phi( testChar::@2/(byte*) print_char_cursor#26 ) - (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#103 + (byte*) print_char_cursor#105 ← phi( testChar::@2/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#38 ← (byte*) print_char_cursor#105 (byte) print_byte::b#4 ← (byte) testChar::n#0 call print_byte to:testChar::@4 testChar::@4: scope:[testChar] from testChar::@3 (byte*) print_line_cursor#51 ← phi( testChar::@3/(byte*) print_line_cursor#55 ) - (byte*) print_char_cursor#104 ← phi( testChar::@3/(byte*) print_char_cursor#24 ) - (byte*) print_char_cursor#38 ← (byte*) print_char_cursor#104 - (byte) print_char::ch#8 ← (byte) ' ' + (byte*) print_char_cursor#106 ← phi( testChar::@3/(byte*) print_char_cursor#25 ) + (byte*) print_char_cursor#39 ← (byte*) print_char_cursor#106 + (byte) print_char::ch#9 ← (byte) ' ' call print_char to:testChar::@5 testChar::@5: scope:[testChar] from testChar::@4 (byte*) print_line_cursor#46 ← phi( testChar::@4/(byte*) print_line_cursor#51 ) - (byte*) print_char_cursor#105 ← phi( testChar::@4/(byte*) print_char_cursor#26 ) - (byte*) print_char_cursor#39 ← (byte*) print_char_cursor#105 + (byte*) print_char_cursor#107 ← phi( testChar::@4/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#107 (signed byte) print_sbyte::b#1 ← (signed byte) testChar::s#0 call print_sbyte to:testChar::@6 testChar::@6: scope:[testChar] from testChar::@5 (byte*) print_line_cursor#41 ← phi( testChar::@5/(byte*) print_line_cursor#46 ) - (byte*) print_char_cursor#106 ← phi( testChar::@5/(byte*) print_char_cursor#12 ) - (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#106 + (byte*) print_char_cursor#108 ← phi( testChar::@5/(byte*) print_char_cursor#12 ) + (byte*) print_char_cursor#41 ← (byte*) print_char_cursor#108 call print_ln to:testChar::@7 testChar::@7: scope:[testChar] from testChar::@6 - (byte*) print_char_cursor#107 ← phi( testChar::@6/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#109 ← phi( testChar::@6/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#30 ← phi( testChar::@6/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#11 ← (byte*) print_line_cursor#30 - (byte*) print_char_cursor#41 ← (byte*) print_char_cursor#107 + (byte*) print_char_cursor#42 ← (byte*) print_char_cursor#109 to:testChar::@return testChar::@return: scope:[testChar] from testChar::@7 (byte*) print_line_cursor#31 ← phi( testChar::@7/(byte*) print_line_cursor#11 ) - (byte*) print_char_cursor#108 ← phi( testChar::@7/(byte*) print_char_cursor#41 ) - (byte*) print_char_cursor#42 ← (byte*) print_char_cursor#108 + (byte*) print_char_cursor#110 ← phi( testChar::@7/(byte*) print_char_cursor#42 ) + (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#110 (byte*) print_line_cursor#12 ← (byte*) print_line_cursor#31 return to:@return testShort: scope:[testShort] from main::@2 (byte*) print_line_cursor#68 ← phi( main::@2/(byte*) print_line_cursor#6 ) - (byte*) print_char_cursor#149 ← phi( main::@2/(byte*) print_char_cursor#30 ) + (byte*) print_char_cursor#152 ← phi( main::@2/(byte*) print_char_cursor#31 ) (word) testShort::u#0 ← (number) $578 (signed word) testShort::n#0 ← (number) -$578 (signed word) testShort::s#0 ← (number) -$578 @@ -455,61 +466,61 @@ testShort: scope:[testShort] from main::@2 to:testShort::@1 testShort::@1: scope:[testShort] from testShort (byte*) print_line_cursor#64 ← phi( testShort/(byte*) print_line_cursor#68 ) - (byte*) print_char_cursor#109 ← phi( testShort/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#109 + (byte*) print_char_cursor#111 ← phi( testShort/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#111 (word) print_word::w#3 ← (word) testShort::u#0 call print_word to:testShort::@2 testShort::@2: scope:[testShort] from testShort::@1 (byte*) print_line_cursor#60 ← phi( testShort::@1/(byte*) print_line_cursor#64 ) - (byte*) print_char_cursor#110 ← phi( testShort::@1/(byte*) print_char_cursor#15 ) - (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#110 - (byte) print_char::ch#9 ← (byte) ' ' + (byte*) print_char_cursor#112 ← phi( testShort::@1/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#112 + (byte) print_char::ch#10 ← (byte) ' ' call print_char to:testShort::@3 testShort::@3: scope:[testShort] from testShort::@2 (byte*) print_line_cursor#56 ← phi( testShort::@2/(byte*) print_line_cursor#60 ) - (byte*) print_char_cursor#111 ← phi( testShort::@2/(byte*) print_char_cursor#26 ) - (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#111 + (byte*) print_char_cursor#113 ← phi( testShort::@2/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#113 (signed word) print_sword::w#1 ← (signed word) testShort::n#0 call print_sword to:testShort::@4 testShort::@4: scope:[testShort] from testShort::@3 (byte*) print_line_cursor#52 ← phi( testShort::@3/(byte*) print_line_cursor#56 ) - (byte*) print_char_cursor#112 ← phi( testShort::@3/(byte*) print_char_cursor#8 ) - (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#112 - (byte) print_char::ch#10 ← (byte) ' ' + (byte*) print_char_cursor#114 ← phi( testShort::@3/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#47 ← (byte*) print_char_cursor#114 + (byte) print_char::ch#11 ← (byte) ' ' call print_char to:testShort::@5 testShort::@5: scope:[testShort] from testShort::@4 (byte*) print_line_cursor#47 ← phi( testShort::@4/(byte*) print_line_cursor#52 ) - (byte*) print_char_cursor#113 ← phi( testShort::@4/(byte*) print_char_cursor#26 ) - (byte*) print_char_cursor#47 ← (byte*) print_char_cursor#113 + (byte*) print_char_cursor#115 ← phi( testShort::@4/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#48 ← (byte*) print_char_cursor#115 (signed word) print_sword::w#2 ← (signed word) testShort::s#0 call print_sword to:testShort::@6 testShort::@6: scope:[testShort] from testShort::@5 (byte*) print_line_cursor#42 ← phi( testShort::@5/(byte*) print_line_cursor#47 ) - (byte*) print_char_cursor#114 ← phi( testShort::@5/(byte*) print_char_cursor#8 ) - (byte*) print_char_cursor#48 ← (byte*) print_char_cursor#114 + (byte*) print_char_cursor#116 ← phi( testShort::@5/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#49 ← (byte*) print_char_cursor#116 call print_ln to:testShort::@7 testShort::@7: scope:[testShort] from testShort::@6 - (byte*) print_char_cursor#115 ← phi( testShort::@6/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#117 ← phi( testShort::@6/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#32 ← phi( testShort::@6/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#13 ← (byte*) print_line_cursor#32 - (byte*) print_char_cursor#49 ← (byte*) print_char_cursor#115 + (byte*) print_char_cursor#50 ← (byte*) print_char_cursor#117 to:testShort::@return testShort::@return: scope:[testShort] from testShort::@7 (byte*) print_line_cursor#33 ← phi( testShort::@7/(byte*) print_line_cursor#13 ) - (byte*) print_char_cursor#116 ← phi( testShort::@7/(byte*) print_char_cursor#49 ) - (byte*) print_char_cursor#50 ← (byte*) print_char_cursor#116 + (byte*) print_char_cursor#118 ← phi( testShort::@7/(byte*) print_char_cursor#50 ) + (byte*) print_char_cursor#51 ← (byte*) print_char_cursor#118 (byte*) print_line_cursor#14 ← (byte*) print_line_cursor#33 return to:@return testInt: scope:[testInt] from main::@3 (byte*) print_line_cursor#69 ← phi( main::@3/(byte*) print_line_cursor#7 ) - (byte*) print_char_cursor#150 ← phi( main::@3/(byte*) print_char_cursor#31 ) + (byte*) print_char_cursor#153 ← phi( main::@3/(byte*) print_char_cursor#32 ) (word) testInt::u#0 ← (number) $578 (signed word) testInt::n#0 ← (number) -$578 (signed word) testInt::s#0 ← (number) -$578 @@ -518,61 +529,61 @@ testInt: scope:[testInt] from main::@3 to:testInt::@1 testInt::@1: scope:[testInt] from testInt (byte*) print_line_cursor#65 ← phi( testInt/(byte*) print_line_cursor#69 ) - (byte*) print_char_cursor#117 ← phi( testInt/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#51 ← (byte*) print_char_cursor#117 + (byte*) print_char_cursor#119 ← phi( testInt/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#52 ← (byte*) print_char_cursor#119 (word) print_word::w#4 ← (word) testInt::u#0 call print_word to:testInt::@2 testInt::@2: scope:[testInt] from testInt::@1 (byte*) print_line_cursor#61 ← phi( testInt::@1/(byte*) print_line_cursor#65 ) - (byte*) print_char_cursor#118 ← phi( testInt::@1/(byte*) print_char_cursor#15 ) - (byte*) print_char_cursor#52 ← (byte*) print_char_cursor#118 - (byte) print_char::ch#11 ← (byte) ' ' + (byte*) print_char_cursor#120 ← phi( testInt::@1/(byte*) print_char_cursor#15 ) + (byte*) print_char_cursor#53 ← (byte*) print_char_cursor#120 + (byte) print_char::ch#12 ← (byte) ' ' call print_char to:testInt::@3 testInt::@3: scope:[testInt] from testInt::@2 (byte*) print_line_cursor#57 ← phi( testInt::@2/(byte*) print_line_cursor#61 ) - (byte*) print_char_cursor#119 ← phi( testInt::@2/(byte*) print_char_cursor#26 ) - (byte*) print_char_cursor#53 ← (byte*) print_char_cursor#119 + (byte*) print_char_cursor#121 ← phi( testInt::@2/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#54 ← (byte*) print_char_cursor#121 (signed word) print_sword::w#3 ← (signed word) testInt::n#0 call print_sword to:testInt::@4 testInt::@4: scope:[testInt] from testInt::@3 (byte*) print_line_cursor#53 ← phi( testInt::@3/(byte*) print_line_cursor#57 ) - (byte*) print_char_cursor#120 ← phi( testInt::@3/(byte*) print_char_cursor#8 ) - (byte*) print_char_cursor#54 ← (byte*) print_char_cursor#120 - (byte) print_char::ch#12 ← (byte) ' ' + (byte*) print_char_cursor#122 ← phi( testInt::@3/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#55 ← (byte*) print_char_cursor#122 + (byte) print_char::ch#13 ← (byte) ' ' call print_char to:testInt::@5 testInt::@5: scope:[testInt] from testInt::@4 (byte*) print_line_cursor#48 ← phi( testInt::@4/(byte*) print_line_cursor#53 ) - (byte*) print_char_cursor#121 ← phi( testInt::@4/(byte*) print_char_cursor#26 ) - (byte*) print_char_cursor#55 ← (byte*) print_char_cursor#121 + (byte*) print_char_cursor#123 ← phi( testInt::@4/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#56 ← (byte*) print_char_cursor#123 (signed word) print_sword::w#4 ← (signed word) testInt::s#0 call print_sword to:testInt::@6 testInt::@6: scope:[testInt] from testInt::@5 (byte*) print_line_cursor#43 ← phi( testInt::@5/(byte*) print_line_cursor#48 ) - (byte*) print_char_cursor#122 ← phi( testInt::@5/(byte*) print_char_cursor#8 ) - (byte*) print_char_cursor#56 ← (byte*) print_char_cursor#122 + (byte*) print_char_cursor#124 ← phi( testInt::@5/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#57 ← (byte*) print_char_cursor#124 call print_ln to:testInt::@7 testInt::@7: scope:[testInt] from testInt::@6 - (byte*) print_char_cursor#123 ← phi( testInt::@6/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#125 ← phi( testInt::@6/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#34 ← phi( testInt::@6/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#15 ← (byte*) print_line_cursor#34 - (byte*) print_char_cursor#57 ← (byte*) print_char_cursor#123 + (byte*) print_char_cursor#58 ← (byte*) print_char_cursor#125 to:testInt::@return testInt::@return: scope:[testInt] from testInt::@7 (byte*) print_line_cursor#35 ← phi( testInt::@7/(byte*) print_line_cursor#15 ) - (byte*) print_char_cursor#124 ← phi( testInt::@7/(byte*) print_char_cursor#57 ) - (byte*) print_char_cursor#58 ← (byte*) print_char_cursor#124 + (byte*) print_char_cursor#126 ← phi( testInt::@7/(byte*) print_char_cursor#58 ) + (byte*) print_char_cursor#59 ← (byte*) print_char_cursor#126 (byte*) print_line_cursor#16 ← (byte*) print_line_cursor#35 return to:@return testLong: scope:[testLong] from main::@4 (byte*) print_line_cursor#70 ← phi( main::@4/(byte*) print_line_cursor#8 ) - (byte*) print_char_cursor#151 ← phi( main::@4/(byte*) print_char_cursor#32 ) + (byte*) print_char_cursor#154 ← phi( main::@4/(byte*) print_char_cursor#33 ) (dword) testLong::u#0 ← (number) $222e0 (signed dword) testLong::n#0 ← (number) -$222e0 (signed dword) testLong::s#0 ← (number) -$222e0 @@ -581,69 +592,69 @@ testLong: scope:[testLong] from main::@4 to:testLong::@1 testLong::@1: scope:[testLong] from testLong (byte*) print_line_cursor#66 ← phi( testLong/(byte*) print_line_cursor#70 ) - (byte*) print_char_cursor#125 ← phi( testLong/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#59 ← (byte*) print_char_cursor#125 + (byte*) print_char_cursor#127 ← phi( testLong/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#60 ← (byte*) print_char_cursor#127 (dword) print_dword::dw#1 ← (dword) testLong::u#0 call print_dword to:testLong::@2 testLong::@2: scope:[testLong] from testLong::@1 (byte*) print_line_cursor#62 ← phi( testLong::@1/(byte*) print_line_cursor#66 ) - (byte*) print_char_cursor#126 ← phi( testLong::@1/(byte*) print_char_cursor#18 ) - (byte*) print_char_cursor#60 ← (byte*) print_char_cursor#126 - (byte) print_char::ch#13 ← (byte) ' ' + (byte*) print_char_cursor#128 ← phi( testLong::@1/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#61 ← (byte*) print_char_cursor#128 + (byte) print_char::ch#14 ← (byte) ' ' call print_char to:testLong::@3 testLong::@3: scope:[testLong] from testLong::@2 (byte*) print_line_cursor#58 ← phi( testLong::@2/(byte*) print_line_cursor#62 ) - (byte*) print_char_cursor#127 ← phi( testLong::@2/(byte*) print_char_cursor#26 ) - (byte*) print_char_cursor#61 ← (byte*) print_char_cursor#127 + (byte*) print_char_cursor#129 ← phi( testLong::@2/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#62 ← (byte*) print_char_cursor#129 (signed dword) print_sdword::dw#1 ← (signed dword) testLong::n#0 call print_sdword to:testLong::@4 testLong::@4: scope:[testLong] from testLong::@3 (byte*) print_line_cursor#54 ← phi( testLong::@3/(byte*) print_line_cursor#58 ) - (byte*) print_char_cursor#128 ← phi( testLong::@3/(byte*) print_char_cursor#21 ) - (byte*) print_char_cursor#62 ← (byte*) print_char_cursor#128 - (byte) print_char::ch#14 ← (byte) ' ' + (byte*) print_char_cursor#130 ← phi( testLong::@3/(byte*) print_char_cursor#22 ) + (byte*) print_char_cursor#63 ← (byte*) print_char_cursor#130 + (byte) print_char::ch#15 ← (byte) ' ' call print_char to:testLong::@5 testLong::@5: scope:[testLong] from testLong::@4 (byte*) print_line_cursor#49 ← phi( testLong::@4/(byte*) print_line_cursor#54 ) - (byte*) print_char_cursor#129 ← phi( testLong::@4/(byte*) print_char_cursor#26 ) - (byte*) print_char_cursor#63 ← (byte*) print_char_cursor#129 + (byte*) print_char_cursor#131 ← phi( testLong::@4/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#64 ← (byte*) print_char_cursor#131 (signed dword) print_sdword::dw#2 ← (signed dword) testLong::s#0 call print_sdword to:testLong::@6 testLong::@6: scope:[testLong] from testLong::@5 (byte*) print_line_cursor#44 ← phi( testLong::@5/(byte*) print_line_cursor#49 ) - (byte*) print_char_cursor#130 ← phi( testLong::@5/(byte*) print_char_cursor#21 ) - (byte*) print_char_cursor#64 ← (byte*) print_char_cursor#130 + (byte*) print_char_cursor#132 ← phi( testLong::@5/(byte*) print_char_cursor#22 ) + (byte*) print_char_cursor#65 ← (byte*) print_char_cursor#132 call print_ln to:testLong::@7 testLong::@7: scope:[testLong] from testLong::@6 - (byte*) print_char_cursor#131 ← phi( testLong::@6/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#133 ← phi( testLong::@6/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#36 ← phi( testLong::@6/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#17 ← (byte*) print_line_cursor#36 - (byte*) print_char_cursor#65 ← (byte*) print_char_cursor#131 + (byte*) print_char_cursor#66 ← (byte*) print_char_cursor#133 to:testLong::@return testLong::@return: scope:[testLong] from testLong::@7 (byte*) print_line_cursor#37 ← phi( testLong::@7/(byte*) print_line_cursor#17 ) - (byte*) print_char_cursor#132 ← phi( testLong::@7/(byte*) print_char_cursor#65 ) - (byte*) print_char_cursor#66 ← (byte*) print_char_cursor#132 + (byte*) print_char_cursor#134 ← phi( testLong::@7/(byte*) print_char_cursor#66 ) + (byte*) print_char_cursor#67 ← (byte*) print_char_cursor#134 (byte*) print_line_cursor#18 ← (byte*) print_line_cursor#37 return to:@return @26: scope:[] from @14 (byte*) print_screen#5 ← phi( @14/(byte*) print_screen#6 ) - (byte*) print_char_cursor#152 ← phi( @14/(byte*) print_char_cursor#157 ) + (byte*) print_char_cursor#155 ← phi( @14/(byte*) print_char_cursor#160 ) (byte*) print_line_cursor#45 ← phi( @14/(byte*) print_line_cursor#50 ) call main to:@27 @27: scope:[] from @26 - (byte*) print_char_cursor#133 ← phi( @26/(byte*) print_char_cursor#34 ) + (byte*) print_char_cursor#135 ← phi( @26/(byte*) print_char_cursor#35 ) (byte*) print_line_cursor#38 ← phi( @26/(byte*) print_line_cursor#10 ) (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#38 - (byte*) print_char_cursor#67 ← (byte*) print_char_cursor#133 + (byte*) print_char_cursor#68 ← (byte*) print_char_cursor#135 to:@end @end: scope:[] from @27 @@ -686,6 +697,7 @@ SYMBOL TABLE SSA (byte) print_char::ch#13 (byte) print_char::ch#14 (byte) print_char::ch#15 +(byte) print_char::ch#16 (byte) print_char::ch#2 (byte) print_char::ch#3 (byte) print_char::ch#4 @@ -761,7 +773,10 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#155 (byte*) print_char_cursor#156 (byte*) print_char_cursor#157 +(byte*) print_char_cursor#158 +(byte*) print_char_cursor#159 (byte*) print_char_cursor#16 +(byte*) print_char_cursor#160 (byte*) print_char_cursor#17 (byte*) print_char_cursor#18 (byte*) print_char_cursor#19 @@ -984,13 +999,14 @@ SYMBOL TABLE SSA (byte*) print_screen#6 (void()) print_sdword((signed dword) print_sdword::dw) (bool~) print_sdword::$0 -(bool~) print_sdword::$1 -(dword~) print_sdword::$2 +(dword~) print_sdword::$1 (signed dword~) print_sdword::$5 (label) print_sdword::@1 (label) print_sdword::@2 (label) print_sdword::@3 -(label) print_sdword::@4 +(label) print_sdword::@5 +(label) print_sdword::@6 +(label) print_sdword::@7 (label) print_sdword::@return (signed dword) print_sdword::dw (signed dword) print_sdword::dw#0 @@ -1000,6 +1016,8 @@ SYMBOL TABLE SSA (signed dword) print_sdword::dw#4 (signed dword) print_sdword::dw#5 (signed dword) print_sdword::dw#6 +(signed dword) print_sdword::dw#7 +(signed dword) print_sdword::dw#8 (void()) print_str((byte*) print_str::str) (bool~) print_str::$0 (label) print_str::@1 @@ -1140,7 +1158,7 @@ Successful SSA optimization PassNAddNumberTypeConversions Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 Inlining cast (word~) print_sword::$1 ← (word)(signed word) print_sword::w#7 Inlining cast (byte~) print_sbyte::$1 ← (byte)(signed byte) print_sbyte::b#4 -Inlining cast (dword~) print_sdword::$2 ← (dword)(signed dword) print_sdword::dw#4 +Inlining cast (dword~) print_sdword::$1 ← (dword)(signed dword) print_sdword::dw#5 Inlining cast (byte) testChar::u#0 ← (unumber)(number) $e Inlining cast (byte) testChar::n#0 ← (unumber)(number) $e Inlining cast (signed byte) testChar::s#0 ← (snumber)(number) -$e @@ -1196,188 +1214,187 @@ Finalized signed number type (signed dword) -$222e0 Finalized signed number type (signed dword) -$222e0 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#6 & (byte) $f -Inversing boolean not [104] (bool~) print_sdword::$1 ← (signed dword) print_sdword::dw#3 >= (signed byte) 0 from [103] (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw#3 < (signed byte) 0 -Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#50 (byte*) print_char_cursor#157 (byte*) print_screen#6 (byte*) print_line_cursor#45 (byte*) print_char_cursor#152 (byte*) print_screen#5 +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#50 (byte*) print_char_cursor#160 (byte*) print_screen#6 (byte*) print_line_cursor#45 (byte*) print_char_cursor#155 (byte*) print_screen#5 Alias (byte*) print_str::str#5 = (byte*) print_str::str#6 -Alias (byte*) print_char_cursor#134 = (byte*) print_char_cursor#68 (byte*) print_char_cursor#69 (byte*) print_char_cursor#2 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#21 (byte*) print_char_cursor#3 (byte*) print_line_cursor#22 (byte*) print_char_cursor#71 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte*) print_char_cursor#136 = (byte*) print_char_cursor#154 (byte*) print_char_cursor#137 +Alias (byte*) print_char_cursor#136 = (byte*) print_char_cursor#69 (byte*) print_char_cursor#70 (byte*) print_char_cursor#2 +Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#21 (byte*) print_char_cursor#3 (byte*) print_line_cursor#22 (byte*) print_char_cursor#72 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 +Alias (byte*) print_char_cursor#138 = (byte*) print_char_cursor#157 (byte*) print_char_cursor#139 Alias (signed word) print_sword::w#10 = (signed word) print_sword::w#8 (signed word) print_sword::w#5 (signed word) print_sword::w#6 (signed word) print_sword::w#9 -Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#72 +Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#73 Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 -Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#73 +Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#74 Alias (word) print_word::w#0 = (word~) print_sword::$1 -Alias (byte*) print_char_cursor#7 = (byte*) print_char_cursor#74 (byte*) print_char_cursor#75 (byte*) print_char_cursor#8 -Alias (byte*) print_char_cursor#139 = (byte*) print_char_cursor#155 (byte*) print_char_cursor#140 +Alias (byte*) print_char_cursor#7 = (byte*) print_char_cursor#75 (byte*) print_char_cursor#76 (byte*) print_char_cursor#8 +Alias (byte*) print_char_cursor#141 = (byte*) print_char_cursor#158 (byte*) print_char_cursor#142 Alias (signed byte) print_sbyte::b#2 = (signed byte) print_sbyte::b#5 (signed byte) print_sbyte::b#3 (signed byte) print_sbyte::b#7 (signed byte) print_sbyte::b#6 -Alias (byte*) print_char_cursor#76 = (byte*) print_char_cursor#9 +Alias (byte*) print_char_cursor#77 = (byte*) print_char_cursor#9 Alias (signed byte) print_sbyte::b#0 = (signed byte~) print_sbyte::$5 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#77 +Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#78 Alias (byte) print_byte::b#0 = (byte~) print_sbyte::$1 -Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#78 (byte*) print_char_cursor#79 (byte*) print_char_cursor#12 +Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#79 (byte*) print_char_cursor#80 (byte*) print_char_cursor#12 Alias (byte) print_byte::b#1 = (byte~) print_word::$0 Alias (word) print_word::w#5 = (word) print_word::w#6 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#80 +Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#81 Alias (byte) print_byte::b#2 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#81 (byte*) print_char_cursor#82 (byte*) print_char_cursor#15 +Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#82 (byte*) print_char_cursor#83 (byte*) print_char_cursor#15 Alias (word) print_word::w#1 = (word~) print_dword::$0 Alias (dword) print_dword::dw#2 = (dword) print_dword::dw#3 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#83 +Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#84 Alias (word) print_word::w#2 = (word~) print_dword::$2 -Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#84 (byte*) print_char_cursor#85 (byte*) print_char_cursor#18 -Alias (dword) print_dword::dw#0 = (dword~) print_sdword::$2 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#86 (byte*) print_char_cursor#88 (byte*) print_char_cursor#21 -Alias (byte*) print_char_cursor#145 = (byte*) print_char_cursor#156 -Alias (signed dword) print_sdword::dw#3 = (signed dword) print_sdword::dw#6 (signed dword) print_sdword::dw#5 -Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#87 +Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#85 (byte*) print_char_cursor#86 (byte*) print_char_cursor#18 +Alias (byte*) print_char_cursor#146 = (byte*) print_char_cursor#159 (byte*) print_char_cursor#147 +Alias (signed dword) print_sdword::dw#3 = (signed dword) print_sdword::dw#6 (signed dword) print_sdword::dw#4 (signed dword) print_sdword::dw#8 (signed dword) print_sdword::dw#7 +Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#87 Alias (signed dword) print_sdword::dw#0 = (signed dword~) print_sdword::$5 +Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#88 +Alias (dword) print_dword::dw#0 = (dword~) print_sdword::$1 +Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#89 (byte*) print_char_cursor#90 (byte*) print_char_cursor#22 Alias (byte) print_byte::b#5 = (byte) print_byte::b#6 -Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#89 -Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#90 (byte*) print_char_cursor#91 (byte*) print_char_cursor#24 -Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#93 (byte*) print_char_cursor#26 -Alias (byte*) print_line_cursor#23 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#27 (byte*) print_char_cursor#94 (byte*) print_line_cursor#4 (byte*) print_char_cursor#28 +Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#91 +Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#92 (byte*) print_char_cursor#93 (byte*) print_char_cursor#25 +Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#95 (byte*) print_char_cursor#27 +Alias (byte*) print_line_cursor#23 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#28 (byte*) print_char_cursor#96 (byte*) print_line_cursor#4 (byte*) print_char_cursor#29 Alias (byte*) print_line_cursor#24 = (byte*) print_line_cursor#5 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#95 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#96 +Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#97 +Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#98 Alias (byte*) print_line_cursor#25 = (byte*) print_line_cursor#6 -Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#97 +Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#99 Alias (byte*) print_line_cursor#26 = (byte*) print_line_cursor#7 -Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#98 +Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#33 Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#8 -Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#33 (byte*) print_char_cursor#99 (byte*) print_char_cursor#34 +Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#102 (byte*) print_char_cursor#35 Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#9 (byte*) print_line_cursor#28 (byte*) print_line_cursor#29 Alias (byte*) print_line_cursor#41 = (byte*) print_line_cursor#63 (byte*) print_line_cursor#67 (byte*) print_line_cursor#59 (byte*) print_line_cursor#55 (byte*) print_line_cursor#51 (byte*) print_line_cursor#46 -Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#35 -Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#36 -Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#37 -Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#38 -Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#39 -Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#40 +Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#36 +Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#37 +Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#38 +Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#39 +Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#40 +Alias (byte*) print_char_cursor#108 = (byte*) print_char_cursor#41 Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#30 (byte*) print_line_cursor#31 (byte*) print_line_cursor#12 -Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#41 (byte*) print_char_cursor#108 (byte*) print_char_cursor#42 +Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#42 (byte*) print_char_cursor#110 (byte*) print_char_cursor#43 Alias (byte*) print_line_cursor#42 = (byte*) print_line_cursor#64 (byte*) print_line_cursor#68 (byte*) print_line_cursor#60 (byte*) print_line_cursor#56 (byte*) print_line_cursor#52 (byte*) print_line_cursor#47 -Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#43 -Alias (byte*) print_char_cursor#110 = (byte*) print_char_cursor#44 -Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#45 -Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#46 -Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#47 -Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#48 +Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#44 +Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#45 +Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#46 +Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#47 +Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#48 +Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#49 Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#32 (byte*) print_line_cursor#33 (byte*) print_line_cursor#14 -Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#49 (byte*) print_char_cursor#116 (byte*) print_char_cursor#50 +Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#50 (byte*) print_char_cursor#118 (byte*) print_char_cursor#51 Alias (byte*) print_line_cursor#43 = (byte*) print_line_cursor#65 (byte*) print_line_cursor#69 (byte*) print_line_cursor#61 (byte*) print_line_cursor#57 (byte*) print_line_cursor#53 (byte*) print_line_cursor#48 -Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#51 -Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#52 -Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#53 -Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#54 -Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#55 -Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#56 +Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#52 +Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#53 +Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#54 +Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#55 +Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#56 +Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#57 Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#34 (byte*) print_line_cursor#35 (byte*) print_line_cursor#16 -Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#57 (byte*) print_char_cursor#124 (byte*) print_char_cursor#58 +Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#58 (byte*) print_char_cursor#126 (byte*) print_char_cursor#59 Alias (byte*) print_line_cursor#44 = (byte*) print_line_cursor#66 (byte*) print_line_cursor#70 (byte*) print_line_cursor#62 (byte*) print_line_cursor#58 (byte*) print_line_cursor#54 (byte*) print_line_cursor#49 -Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#59 -Alias (byte*) print_char_cursor#126 = (byte*) print_char_cursor#60 -Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#61 -Alias (byte*) print_char_cursor#128 = (byte*) print_char_cursor#62 -Alias (byte*) print_char_cursor#129 = (byte*) print_char_cursor#63 -Alias (byte*) print_char_cursor#130 = (byte*) print_char_cursor#64 +Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#60 +Alias (byte*) print_char_cursor#128 = (byte*) print_char_cursor#61 +Alias (byte*) print_char_cursor#129 = (byte*) print_char_cursor#62 +Alias (byte*) print_char_cursor#130 = (byte*) print_char_cursor#63 +Alias (byte*) print_char_cursor#131 = (byte*) print_char_cursor#64 +Alias (byte*) print_char_cursor#132 = (byte*) print_char_cursor#65 Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#36 (byte*) print_line_cursor#37 (byte*) print_line_cursor#18 -Alias (byte*) print_char_cursor#131 = (byte*) print_char_cursor#65 (byte*) print_char_cursor#132 (byte*) print_char_cursor#66 +Alias (byte*) print_char_cursor#133 = (byte*) print_char_cursor#66 (byte*) print_char_cursor#134 (byte*) print_char_cursor#67 Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#38 -Alias (byte*) print_char_cursor#133 = (byte*) print_char_cursor#67 +Alias (byte*) print_char_cursor#135 = (byte*) print_char_cursor#68 Successful SSA optimization Pass2AliasElimination -Self Phi Eliminated (byte*) print_char_cursor#70 +Self Phi Eliminated (byte*) print_char_cursor#71 Self Phi Eliminated (byte*) print_line_cursor#23 Successful SSA optimization Pass2SelfPhiElimination -Identical Phi Values (byte*) print_char_cursor#70 (byte*) print_char_cursor#135 -Identical Phi Values (byte*) print_char_cursor#5 (byte*) print_char_cursor#25 -Identical Phi Values (byte*) print_char_cursor#6 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#71 (byte*) print_char_cursor#137 +Identical Phi Values (byte*) print_char_cursor#5 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#6 (byte*) print_char_cursor#26 Identical Phi Values (byte*) print_char_cursor#7 (byte*) print_char_cursor#14 Identical Phi Values (signed byte) print_sbyte::b#2 (signed byte) print_sbyte::b#1 -Identical Phi Values (byte*) print_char_cursor#139 (byte*) print_char_cursor#105 -Identical Phi Values (byte*) print_char_cursor#76 (byte*) print_char_cursor#25 -Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#25 -Identical Phi Values (byte*) print_char_cursor#11 (byte*) print_char_cursor#23 -Identical Phi Values (byte*) print_char_cursor#13 (byte*) print_char_cursor#23 -Identical Phi Values (byte*) print_char_cursor#14 (byte*) print_char_cursor#23 +Identical Phi Values (byte*) print_char_cursor#141 (byte*) print_char_cursor#107 +Identical Phi Values (byte*) print_char_cursor#77 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#11 (byte*) print_char_cursor#24 +Identical Phi Values (byte*) print_char_cursor#13 (byte*) print_char_cursor#24 +Identical Phi Values (byte*) print_char_cursor#14 (byte*) print_char_cursor#24 Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_char_cursor#14 Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_char_cursor#14 -Identical Phi Values (byte*) print_char_cursor#19 (byte*) print_char_cursor#17 -Identical Phi Values (byte*) print_char_cursor#20 (byte*) print_char_cursor#25 -Identical Phi Values (byte*) print_char_cursor#22 (byte*) print_char_cursor#25 -Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#19 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#20 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#21 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#24 (byte*) print_char_cursor#26 Identical Phi Values (byte*) print_screen#1 (byte*) print_screen#4 Identical Phi Values (byte*) print_line_cursor#23 (byte*) print_screen#1 Identical Phi Values (byte*) print_screen#4 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#40 (byte*) print_line_cursor#0 -Identical Phi Values (byte*) print_char_cursor#147 (byte*) print_line_cursor#0 +Identical Phi Values (byte*) print_char_cursor#150 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#24 (byte*) print_line_cursor#23 -Identical Phi Values (byte*) print_char_cursor#29 (byte*) print_line_cursor#23 -Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#107 +Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_line_cursor#23 +Identical Phi Values (byte*) print_char_cursor#31 (byte*) print_char_cursor#109 Identical Phi Values (byte*) print_line_cursor#25 (byte*) print_line_cursor#11 -Identical Phi Values (byte*) print_char_cursor#31 (byte*) print_char_cursor#115 +Identical Phi Values (byte*) print_char_cursor#32 (byte*) print_char_cursor#117 Identical Phi Values (byte*) print_line_cursor#26 (byte*) print_line_cursor#13 -Identical Phi Values (byte*) print_char_cursor#32 (byte*) print_char_cursor#123 +Identical Phi Values (byte*) print_char_cursor#100 (byte*) print_char_cursor#125 Identical Phi Values (byte*) print_line_cursor#27 (byte*) print_line_cursor#15 -Identical Phi Values (byte*) print_char_cursor#100 (byte*) print_char_cursor#131 +Identical Phi Values (byte*) print_char_cursor#101 (byte*) print_char_cursor#133 Identical Phi Values (byte*) print_line_cursor#10 (byte*) print_line_cursor#17 -Identical Phi Values (byte*) print_char_cursor#148 (byte*) print_char_cursor#29 +Identical Phi Values (byte*) print_char_cursor#151 (byte*) print_char_cursor#30 Identical Phi Values (byte*) print_line_cursor#41 (byte*) print_line_cursor#24 -Identical Phi Values (byte*) print_char_cursor#101 (byte*) print_char_cursor#134 -Identical Phi Values (byte*) print_char_cursor#102 (byte*) print_char_cursor#23 -Identical Phi Values (byte*) print_char_cursor#103 (byte*) print_char_cursor#25 -Identical Phi Values (byte*) print_char_cursor#104 (byte*) print_char_cursor#23 -Identical Phi Values (byte*) print_char_cursor#105 (byte*) print_char_cursor#25 -Identical Phi Values (byte*) print_char_cursor#106 (byte*) print_char_cursor#11 +Identical Phi Values (byte*) print_char_cursor#103 (byte*) print_char_cursor#136 +Identical Phi Values (byte*) print_char_cursor#104 (byte*) print_char_cursor#24 +Identical Phi Values (byte*) print_char_cursor#105 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#106 (byte*) print_char_cursor#24 +Identical Phi Values (byte*) print_char_cursor#107 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#108 (byte*) print_char_cursor#11 Identical Phi Values (byte*) print_line_cursor#11 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#107 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#149 (byte*) print_char_cursor#30 +Identical Phi Values (byte*) print_char_cursor#109 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#152 (byte*) print_char_cursor#31 Identical Phi Values (byte*) print_line_cursor#42 (byte*) print_line_cursor#25 -Identical Phi Values (byte*) print_char_cursor#109 (byte*) print_char_cursor#134 -Identical Phi Values (byte*) print_char_cursor#110 (byte*) print_char_cursor#14 -Identical Phi Values (byte*) print_char_cursor#111 (byte*) print_char_cursor#25 -Identical Phi Values (byte*) print_char_cursor#112 (byte*) print_char_cursor#7 -Identical Phi Values (byte*) print_char_cursor#113 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#111 (byte*) print_char_cursor#136 +Identical Phi Values (byte*) print_char_cursor#112 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#113 (byte*) print_char_cursor#26 Identical Phi Values (byte*) print_char_cursor#114 (byte*) print_char_cursor#7 +Identical Phi Values (byte*) print_char_cursor#115 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#116 (byte*) print_char_cursor#7 Identical Phi Values (byte*) print_line_cursor#13 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#115 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#150 (byte*) print_char_cursor#31 +Identical Phi Values (byte*) print_char_cursor#117 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#153 (byte*) print_char_cursor#32 Identical Phi Values (byte*) print_line_cursor#43 (byte*) print_line_cursor#26 -Identical Phi Values (byte*) print_char_cursor#117 (byte*) print_char_cursor#134 -Identical Phi Values (byte*) print_char_cursor#118 (byte*) print_char_cursor#14 -Identical Phi Values (byte*) print_char_cursor#119 (byte*) print_char_cursor#25 -Identical Phi Values (byte*) print_char_cursor#120 (byte*) print_char_cursor#7 -Identical Phi Values (byte*) print_char_cursor#121 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#119 (byte*) print_char_cursor#136 +Identical Phi Values (byte*) print_char_cursor#120 (byte*) print_char_cursor#14 +Identical Phi Values (byte*) print_char_cursor#121 (byte*) print_char_cursor#26 Identical Phi Values (byte*) print_char_cursor#122 (byte*) print_char_cursor#7 +Identical Phi Values (byte*) print_char_cursor#123 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#124 (byte*) print_char_cursor#7 Identical Phi Values (byte*) print_line_cursor#15 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#123 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#151 (byte*) print_char_cursor#32 +Identical Phi Values (byte*) print_char_cursor#125 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#154 (byte*) print_char_cursor#100 Identical Phi Values (byte*) print_line_cursor#44 (byte*) print_line_cursor#27 -Identical Phi Values (byte*) print_char_cursor#125 (byte*) print_char_cursor#134 -Identical Phi Values (byte*) print_char_cursor#126 (byte*) print_char_cursor#17 -Identical Phi Values (byte*) print_char_cursor#127 (byte*) print_char_cursor#25 -Identical Phi Values (byte*) print_char_cursor#128 (byte*) print_char_cursor#19 -Identical Phi Values (byte*) print_char_cursor#129 (byte*) print_char_cursor#25 -Identical Phi Values (byte*) print_char_cursor#130 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#127 (byte*) print_char_cursor#136 +Identical Phi Values (byte*) print_char_cursor#128 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#129 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#130 (byte*) print_char_cursor#21 +Identical Phi Values (byte*) print_char_cursor#131 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#132 (byte*) print_char_cursor#21 Identical Phi Values (byte*) print_line_cursor#17 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#131 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#133 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#19 (byte*) print_line_cursor#10 -Identical Phi Values (byte*) print_char_cursor#133 (byte*) print_char_cursor#100 +Identical Phi Values (byte*) print_char_cursor#135 (byte*) print_char_cursor#101 Successful SSA optimization Pass2IdenticalPhiElimination -Identical Phi Values (byte*) print_char_cursor#135 (byte*) print_char_cursor#25 -Identical Phi Values (byte*) print_char_cursor#136 (byte*) print_char_cursor#25 -Identical Phi Values (byte*) print_char_cursor#138 (byte*) print_char_cursor#25 -Identical Phi Values (byte*) print_char_cursor#141 (byte*) print_char_cursor#25 -Identical Phi Values (byte*) print_char_cursor#145 (byte*) print_char_cursor#25 -Successful SSA optimization Pass2IdenticalPhiElimination -Identical Phi Values (byte*) print_char_cursor#144 (byte*) print_char_cursor#25 +Identical Phi Values (byte*) print_char_cursor#137 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#138 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#140 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#143 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#146 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#148 (byte*) print_char_cursor#26 Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) print_str::$0 [6] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 -Simple Condition (bool~) print_ln::$1 [19] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#25) goto print_ln::@1 +Simple Condition (bool~) print_ln::$1 [19] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1 Simple Condition (bool~) print_sword::$0 [28] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 Simple Condition (bool~) print_sbyte::$0 [52] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1 -Simple Condition (bool~) print_sdword::$1 [105] if((signed dword) print_sdword::dw#3>=(signed byte) 0) goto print_sdword::@1 -Simple Condition (bool~) print_cls::$1 [151] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 +Simple Condition (bool~) print_sdword::$0 [104] if((signed dword) print_sdword::dw#3<(signed byte) 0) goto print_sdword::@1 +Simple Condition (bool~) print_cls::$1 [155] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) print_char::ch#0 = '-' @@ -1385,31 +1402,32 @@ Constant (const byte) print_char::ch#1 = ' ' Constant (const byte) print_char::ch#2 = '-' Constant (const byte) print_char::ch#3 = ' ' Constant (const byte) print_char::ch#4 = '-' +Constant (const byte) print_char::ch#5 = ' ' Constant (const byte[]) print_hextab#0 = $0 Constant (const byte) testChar::u#0 = $e Constant (const byte) testChar::n#0 = $e Constant (const signed byte) testChar::s#0 = -$e Constant (const byte*) print_str::str#1 = testChar::str -Constant (const byte) print_char::ch#7 = ' ' Constant (const byte) print_char::ch#8 = ' ' +Constant (const byte) print_char::ch#9 = ' ' Constant (const word) testShort::u#0 = $578 Constant (const signed word) testShort::n#0 = -$578 Constant (const signed word) testShort::s#0 = -$578 Constant (const byte*) print_str::str#2 = testShort::str -Constant (const byte) print_char::ch#9 = ' ' Constant (const byte) print_char::ch#10 = ' ' +Constant (const byte) print_char::ch#11 = ' ' Constant (const word) testInt::u#0 = $578 Constant (const signed word) testInt::n#0 = -$578 Constant (const signed word) testInt::s#0 = -$578 Constant (const byte*) print_str::str#3 = testInt::str -Constant (const byte) print_char::ch#11 = ' ' Constant (const byte) print_char::ch#12 = ' ' +Constant (const byte) print_char::ch#13 = ' ' Constant (const dword) testLong::u#0 = $222e0 Constant (const signed dword) testLong::n#0 = -$222e0 Constant (const signed dword) testLong::s#0 = -$222e0 Constant (const byte*) print_str::str#4 = testLong::str -Constant (const byte) print_char::ch#13 = ' ' Constant (const byte) print_char::ch#14 = ' ' +Constant (const byte) print_char::ch#15 = ' ' Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 Constant (const byte) print_byte::b#3 = testChar::u#0 @@ -1436,7 +1454,7 @@ Successful SSA optimization Pass2EliminateUnusedBlocks Alias (signed byte) print_sbyte::b#0 = (signed byte) print_sbyte::b#4 Successful SSA optimization Pass2AliasElimination Constant right-side identified [22] (signed byte) print_sbyte::b#0 ← - (const signed byte) print_sbyte::b#1 -Constant right-side identified [62] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 +Constant right-side identified [63] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const signed byte) print_sbyte::b#0 = -print_sbyte::b#1 Constant (const byte*) print_cls::$0 = print_line_cursor#0+$3e8 @@ -1468,7 +1486,7 @@ Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#1 Inlining constant with var siblings (const byte) print_char::ch#2 Inlining constant with var siblings (const byte) print_char::ch#4 -Inlining constant with var siblings (const byte) print_char::ch#7 +Inlining constant with var siblings (const byte) print_char::ch#5 Inlining constant with var siblings (const byte) print_char::ch#8 Inlining constant with var siblings (const byte) print_char::ch#9 Inlining constant with var siblings (const byte) print_char::ch#10 @@ -1476,11 +1494,13 @@ Inlining constant with var siblings (const byte) print_char::ch#11 Inlining constant with var siblings (const byte) print_char::ch#12 Inlining constant with var siblings (const byte) print_char::ch#13 Inlining constant with var siblings (const byte) print_char::ch#14 +Inlining constant with var siblings (const byte) print_char::ch#15 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const byte*) print_line_cursor#0 Constant inlined print_cls::$0 = (byte*) 1024+(word) $3e8 Constant inlined print_char::ch#13 = (byte) ' ' Constant inlined print_char::ch#14 = (byte) ' ' +Constant inlined print_char::ch#15 = (byte) ' ' Constant inlined print_sbyte::b#1 = (const signed byte) testChar::s#0 Constant inlined print_char::ch#10 = (byte) ' ' Constant inlined print_sword::w#1 = (const signed word) testShort::n#0 @@ -1489,7 +1509,6 @@ Constant inlined print_sword::w#2 = (const signed word) testShort::s#0 Constant inlined print_char::ch#12 = (byte) ' ' Constant inlined print_sword::w#3 = (const signed word) testInt::n#0 Constant inlined $0 = (const byte[]) print_hextab#0 -Constant inlined print_char::ch#7 = (byte) ' ' Constant inlined print_sword::w#4 = (const signed word) testInt::s#0 Constant inlined print_dword::dw#1 = (const dword) testLong::u#0 Constant inlined print_char::ch#9 = (byte) ' ' @@ -1504,6 +1523,7 @@ Constant inlined print_word::w#3 = (const word) testShort::u#0 Constant inlined print_cls::sc#0 = (byte*) 1024 Constant inlined print_word::w#4 = (const word) testInt::u#0 Constant inlined print_char::ch#2 = (byte) '-' +Constant inlined print_char::ch#5 = (byte) ' ' Constant inlined print_char::ch#4 = (byte) '-' Constant inlined print_char::ch#1 = (byte) ' ' Constant inlined print_char::ch#0 = (byte) '-' @@ -1513,7 +1533,6 @@ Constant inlined print_str::str#2 = (const string) testShort::str Constant inlined print_str::str#1 = (const string) testChar::str Successful SSA optimization Pass2ConstantInlining Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) -Added new block during phi lifting print_sdword::@5(between print_sdword and print_sdword::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) Adding NOP phi() at start of @begin Adding NOP phi() at start of @14 @@ -1530,7 +1549,7 @@ Adding NOP phi() at start of testLong::@3 Adding NOP phi() at start of testLong::@5 Adding NOP phi() at start of testLong::@7 Adding NOP phi() at start of print_ln::@2 -Adding NOP phi() at start of print_sdword::@3 +Adding NOP phi() at start of print_sdword::@7 Adding NOP phi() at start of print_dword::@2 Adding NOP phi() at start of print_word::@2 Adding NOP phi() at start of print_byte::@2 @@ -1554,68 +1573,69 @@ CALL GRAPH Calls in [] to main:3 Calls in [main] to print_cls:7 testChar:9 testShort:11 testInt:13 testLong:15 Calls in [testLong] to print_str:19 print_dword:21 print_char:23 print_sdword:25 print_char:27 print_sdword:29 print_ln:31 -Calls in [print_sdword] to print_char:45 print_dword:52 -Calls in [print_dword] to print_word:60 print_word:64 -Calls in [print_word] to print_byte:71 print_byte:75 -Calls in [print_byte] to print_char:83 print_char:88 -Calls in [testInt] to print_str:107 print_word:109 print_char:111 print_sword:113 print_char:115 print_sword:117 print_ln:119 -Calls in [print_sword] to print_char:125 print_word:131 print_char:135 -Calls in [testShort] to print_str:139 print_word:141 print_char:143 print_sword:145 print_char:147 print_sword:149 print_ln:151 -Calls in [testChar] to print_str:155 print_byte:157 print_char:159 print_byte:161 print_char:163 print_sbyte:165 print_ln:167 -Calls in [print_sbyte] to print_char:172 print_byte:175 +Calls in [print_sdword] to print_char:45 print_dword:51 print_char:55 +Calls in [print_dword] to print_word:66 print_word:70 +Calls in [print_word] to print_byte:77 print_byte:81 +Calls in [print_byte] to print_char:89 print_char:94 +Calls in [testInt] to print_str:109 print_word:111 print_char:113 print_sword:115 print_char:117 print_sword:119 print_ln:121 +Calls in [print_sword] to print_char:127 print_word:133 print_char:137 +Calls in [testShort] to print_str:141 print_word:143 print_char:145 print_sword:147 print_char:149 print_sword:151 print_ln:153 +Calls in [testChar] to print_str:157 print_byte:159 print_char:161 print_byte:163 print_char:165 print_sbyte:167 print_ln:169 +Calls in [print_sbyte] to print_char:174 print_byte:177 Created 19 initial phi equivalence classes -Not coalescing [18] print_char_cursor#159 ← print_line_cursor#1 -Coalesced [20] print_char_cursor#169 ← print_char_cursor#134 -Coalesced [22] print_char_cursor#185 ← print_char_cursor#25 -Coalesced (already) [26] print_char_cursor#186 ← print_char_cursor#25 +Not coalescing [18] print_char_cursor#162 ← print_line_cursor#1 +Coalesced [20] print_char_cursor#172 ← print_char_cursor#136 +Coalesced [22] print_char_cursor#189 ← print_char_cursor#26 +Coalesced (already) [26] print_char_cursor#190 ← print_char_cursor#26 Coalesced [30] print_line_cursor#72 ← print_line_cursor#1 Coalesced [35] print_line_cursor#74 ← print_line_cursor#39 Coalesced (already) [41] print_line_cursor#75 ← print_line_cursor#1 -Coalesced (already) [44] print_char_cursor#178 ← print_char_cursor#25 -Coalesced [47] print_sdword::dw#8 ← print_sdword::dw#0 -Coalesced [50] print_dword::dw#4 ← print_dword::dw#0 -Coalesced [51] print_char_cursor#168 ← print_char_cursor#25 -Coalesced [55] print_sdword::dw#7 ← print_sdword::dw#3 -Coalesced [58] print_word::w#7 ← print_word::w#1 -Coalesced [59] print_char_cursor#163 ← print_char_cursor#143 -Coalesced [62] print_word::w#8 ← print_word::w#2 -Coalesced (already) [63] print_char_cursor#164 ← print_char_cursor#25 -Coalesced [69] print_byte::b#7 ← print_byte::b#1 -Coalesced [70] print_char_cursor#171 ← print_char_cursor#142 -Coalesced [73] print_byte::b#8 ← print_byte::b#2 -Coalesced (already) [74] print_char_cursor#172 ← print_char_cursor#25 -Coalesced [81] print_char::ch#16 ← print_char::ch#5 -Coalesced (already) [82] print_char_cursor#175 ← print_char_cursor#146 -Coalesced [86] print_char::ch#17 ← print_char::ch#6 -Coalesced (already) [87] print_char_cursor#176 ← print_char_cursor#25 -Coalesced [96] print_str::str#8 ← print_str::str#7 -Coalesced [97] print_char_cursor#161 ← print_char_cursor#153 -Coalesced [104] print_str::str#9 ← print_str::str#0 -Coalesced [105] print_char_cursor#162 ← print_char_cursor#1 -Not coalescing [106] print_char_cursor#158 ← print_line_cursor#1 -Coalesced (already) [108] print_char_cursor#166 ← print_char_cursor#134 -Coalesced (already) [110] print_char_cursor#183 ← print_char_cursor#25 -Coalesced (already) [114] print_char_cursor#184 ← print_char_cursor#25 -Coalesced (already) [118] print_line_cursor#71 ← print_line_cursor#1 -Coalesced (already) [124] print_char_cursor#180 ← print_char_cursor#25 -Coalesced [126] print_sword::w#12 ← print_sword::w#10 -Coalesced [129] print_word::w#9 ← print_word::w#0 -Coalesced (already) [130] print_char_cursor#165 ← print_char_cursor#25 -Coalesced (already) [134] print_char_cursor#179 ← print_char_cursor#25 -Coalesced [137] print_sword::w#11 ← print_sword::w#0 -Not coalescing [138] print_char_cursor#160 ← print_line_cursor#1 -Coalesced (already) [140] print_char_cursor#167 ← print_char_cursor#134 -Coalesced (already) [142] print_char_cursor#187 ← print_char_cursor#25 -Coalesced (already) [146] print_char_cursor#188 ← print_char_cursor#25 -Coalesced (already) [150] print_line_cursor#73 ← print_line_cursor#1 -Coalesced (already) [156] print_char_cursor#173 ← print_char_cursor#134 -Coalesced (already) [158] print_char_cursor#181 ← print_char_cursor#25 -Coalesced (already) [160] print_char_cursor#174 ← print_char_cursor#25 -Coalesced (already) [162] print_char_cursor#182 ← print_char_cursor#25 -Coalesced (already) [171] print_char_cursor#177 ← print_char_cursor#25 -Coalesced (already) [174] print_char_cursor#170 ← print_char_cursor#25 -Coalesced [185] print_cls::sc#3 ← print_cls::sc#1 +Coalesced (already) [44] print_char_cursor#182 ← print_char_cursor#26 +Coalesced [46] print_sdword::dw#10 ← print_sdword::dw#3 +Coalesced [49] print_dword::dw#4 ← print_dword::dw#0 +Coalesced [50] print_char_cursor#171 ← print_char_cursor#26 +Coalesced (already) [54] print_char_cursor#181 ← print_char_cursor#26 +Coalesced [57] print_sdword::dw#9 ← print_sdword::dw#0 +Coalesced [64] print_word::w#7 ← print_word::w#1 +Coalesced [65] print_char_cursor#166 ← print_char_cursor#145 +Coalesced [68] print_word::w#8 ← print_word::w#2 +Coalesced (already) [69] print_char_cursor#167 ← print_char_cursor#26 +Coalesced [75] print_byte::b#7 ← print_byte::b#1 +Coalesced [76] print_char_cursor#174 ← print_char_cursor#144 +Coalesced [79] print_byte::b#8 ← print_byte::b#2 +Coalesced (already) [80] print_char_cursor#175 ← print_char_cursor#26 +Coalesced [87] print_char::ch#17 ← print_char::ch#6 +Coalesced (already) [88] print_char_cursor#178 ← print_char_cursor#149 +Coalesced [92] print_char::ch#18 ← print_char::ch#7 +Coalesced (already) [93] print_char_cursor#179 ← print_char_cursor#26 +Coalesced [98] print_str::str#8 ← print_str::str#7 +Coalesced [99] print_char_cursor#164 ← print_char_cursor#156 +Coalesced [106] print_str::str#9 ← print_str::str#0 +Coalesced [107] print_char_cursor#165 ← print_char_cursor#1 +Not coalescing [108] print_char_cursor#161 ← print_line_cursor#1 +Coalesced (already) [110] print_char_cursor#169 ← print_char_cursor#136 +Coalesced (already) [112] print_char_cursor#187 ← print_char_cursor#26 +Coalesced (already) [116] print_char_cursor#188 ← print_char_cursor#26 +Coalesced (already) [120] print_line_cursor#71 ← print_line_cursor#1 +Coalesced (already) [126] print_char_cursor#184 ← print_char_cursor#26 +Coalesced [128] print_sword::w#12 ← print_sword::w#10 +Coalesced [131] print_word::w#9 ← print_word::w#0 +Coalesced (already) [132] print_char_cursor#168 ← print_char_cursor#26 +Coalesced (already) [136] print_char_cursor#183 ← print_char_cursor#26 +Coalesced [139] print_sword::w#11 ← print_sword::w#0 +Not coalescing [140] print_char_cursor#163 ← print_line_cursor#1 +Coalesced (already) [142] print_char_cursor#170 ← print_char_cursor#136 +Coalesced (already) [144] print_char_cursor#191 ← print_char_cursor#26 +Coalesced (already) [148] print_char_cursor#192 ← print_char_cursor#26 +Coalesced (already) [152] print_line_cursor#73 ← print_line_cursor#1 +Coalesced (already) [158] print_char_cursor#176 ← print_char_cursor#136 +Coalesced (already) [160] print_char_cursor#185 ← print_char_cursor#26 +Coalesced (already) [162] print_char_cursor#177 ← print_char_cursor#26 +Coalesced (already) [164] print_char_cursor#186 ← print_char_cursor#26 +Coalesced (already) [173] print_char_cursor#180 ← print_char_cursor#26 +Coalesced (already) [176] print_char_cursor#173 ← print_char_cursor#26 +Coalesced [187] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 10 phi equivalence classes Culled Empty Block (label) @14 Culled Empty Block (label) @27 @@ -1623,8 +1643,8 @@ Culled Empty Block (label) main::@5 Culled Empty Block (label) testLong::@7 Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) print_ln::@3 -Culled Empty Block (label) print_sdword::@3 -Culled Empty Block (label) print_sdword::@5 +Culled Empty Block (label) print_sdword::@6 +Culled Empty Block (label) print_sdword::@7 Culled Empty Block (label) print_dword::@2 Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_byte::@2 @@ -1639,7 +1659,7 @@ Culled Empty Block (label) print_cls::@2 Culled Empty Block (label) print_cls::@3 Renumbering block @26 to @1 Renumbering block print_sword::@5 to print_sword::@4 -Renumbering block print_sdword::@4 to print_sdword::@3 +Renumbering block print_sdword::@5 to print_sdword::@4 Adding NOP phi() at start of @begin Adding NOP phi() at start of @1 Adding NOP phi() at start of @end @@ -1654,7 +1674,8 @@ Adding NOP phi() at start of testLong::@3 Adding NOP phi() at start of testLong::@4 Adding NOP phi() at start of testLong::@5 Adding NOP phi() at start of testLong::@6 -Adding NOP phi() at start of print_sdword::@2 +Adding NOP phi() at start of print_sdword::@3 +Adding NOP phi() at start of print_sdword::@1 Adding NOP phi() at start of testInt::@1 Adding NOP phi() at start of testInt::@2 Adding NOP phi() at start of testInt::@3 @@ -1715,7 +1736,7 @@ main::@return: scope:[main] from main::@4 [14] return to:@return testLong: scope:[testLong] from main::@4 - [15] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 + [15] (byte*~) print_char_cursor#162 ← (byte*) print_line_cursor#1 [16] call print_str to:testLong::@1 testLong::@1: scope:[testLong] from testLong @@ -1751,238 +1772,242 @@ print_ln: scope:[print_ln] from testChar::@6 testInt::@6 testLong::@6 testShort print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 [31] (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 ) [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 - [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#25) goto print_ln::@1 + [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 [34] return to:@return print_sdword: scope:[print_sdword] from testLong::@3 testLong::@5 [35] (signed dword) print_sdword::dw#3 ← phi( testLong::@3/(const signed dword) testLong::n#0 testLong::@5/(const signed dword) testLong::s#0 ) - [36] if((signed dword) print_sdword::dw#3>=(signed byte) 0) goto print_sdword::@1 - to:print_sdword::@2 -print_sdword::@2: scope:[print_sdword] from print_sdword + [36] if((signed dword) print_sdword::dw#3<(signed byte) 0) goto print_sdword::@1 + to:print_sdword::@3 +print_sdword::@3: scope:[print_sdword] from print_sdword [37] phi() [38] call print_char - to:print_sdword::@3 -print_sdword::@3: scope:[print_sdword] from print_sdword::@2 - [39] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 - to:print_sdword::@1 -print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@3 - [40] (signed dword) print_sdword::dw#4 ← phi( print_sdword/(signed dword) print_sdword::dw#3 print_sdword::@3/(signed dword) print_sdword::dw#0 ) - [41] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#4 - [42] call print_dword + to:print_sdword::@2 +print_sdword::@2: scope:[print_sdword] from print_sdword::@3 print_sdword::@4 + [39] (signed dword) print_sdword::dw#5 ← phi( print_sdword::@4/(signed dword) print_sdword::dw#0 print_sdword::@3/(signed dword) print_sdword::dw#3 ) + [40] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 + [41] call print_dword to:print_sdword::@return -print_sdword::@return: scope:[print_sdword] from print_sdword::@1 - [43] return +print_sdword::@return: scope:[print_sdword] from print_sdword::@2 + [42] return to:@return -print_dword: scope:[print_dword] from print_sdword::@1 testLong::@1 - [44] (byte*) print_char_cursor#143 ← phi( print_sdword::@1/(byte*) print_char_cursor#25 testLong::@1/(byte*) print_char_cursor#134 ) - [44] (dword) print_dword::dw#2 ← phi( print_sdword::@1/(dword) print_dword::dw#0 testLong::@1/(const dword) testLong::u#0 ) - [45] (word) print_word::w#1 ← > (dword) print_dword::dw#2 - [46] call print_word - to:print_dword::@1 -print_dword::@1: scope:[print_dword] from print_dword - [47] (word) print_word::w#2 ← < (dword) print_dword::dw#2 - [48] call print_word - to:print_dword::@return -print_dword::@return: scope:[print_dword] from print_dword::@1 - [49] return - to:@return -print_word: scope:[print_word] from print_dword print_dword::@1 print_sword::@2 testInt::@1 testShort::@1 - [50] (byte*) print_char_cursor#142 ← phi( print_dword/(byte*) print_char_cursor#143 print_dword::@1/(byte*) print_char_cursor#25 print_sword::@2/(byte*) print_char_cursor#25 testInt::@1/(byte*) print_char_cursor#134 testShort::@1/(byte*) print_char_cursor#134 ) - [50] (word) print_word::w#5 ← phi( print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 testInt::@1/(const word) testInt::u#0 testShort::@1/(const word) testShort::u#0 ) - [51] (byte) print_byte::b#1 ← > (word) print_word::w#5 - [52] call print_byte - to:print_word::@1 -print_word::@1: scope:[print_word] from print_word - [53] (byte) print_byte::b#2 ← < (word) print_word::w#5 - [54] call print_byte - to:print_word::@return -print_word::@return: scope:[print_word] from print_word::@1 - [55] return - to:@return -print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 testChar::@1 testChar::@3 - [56] (byte*) print_char_cursor#146 ← phi( print_sbyte::@2/(byte*) print_char_cursor#25 print_word/(byte*) print_char_cursor#142 print_word::@1/(byte*) print_char_cursor#25 testChar::@1/(byte*) print_char_cursor#134 testChar::@3/(byte*) print_char_cursor#25 ) - [56] (byte) print_byte::b#5 ← phi( print_sbyte::@2/(byte)(const signed byte) print_sbyte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 testChar::@1/(const byte) testChar::u#0 testChar::@3/(const byte) testChar::n#0 ) - [57] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 - [58] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [59] call print_char - to:print_byte::@1 -print_byte::@1: scope:[print_byte] from print_byte - [60] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f - [61] (byte) print_char::ch#6 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [62] call print_char - to:print_byte::@return -print_byte::@return: scope:[print_byte] from print_byte::@1 - [63] return - to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sdword::@2 print_sword::@1 print_sword::@3 testChar::@2 testChar::@4 testInt::@2 testInt::@4 testLong::@2 testLong::@4 testShort::@2 testShort::@4 - [64] (byte*) print_char_cursor#92 ← phi( print_byte/(byte*) print_char_cursor#146 print_byte::@1/(byte*) print_char_cursor#25 print_sbyte::@1/(byte*) print_char_cursor#25 print_sdword::@2/(byte*) print_char_cursor#25 print_sword::@1/(byte*) print_char_cursor#25 print_sword::@3/(byte*) print_char_cursor#25 testChar::@2/(byte*) print_char_cursor#25 testChar::@4/(byte*) print_char_cursor#25 testInt::@2/(byte*) print_char_cursor#25 testInt::@4/(byte*) print_char_cursor#25 testLong::@2/(byte*) print_char_cursor#25 testLong::@4/(byte*) print_char_cursor#25 testShort::@2/(byte*) print_char_cursor#25 testShort::@4/(byte*) print_char_cursor#25 ) - [64] (byte) print_char::ch#15 ← phi( print_byte/(byte) print_char::ch#5 print_byte::@1/(byte) print_char::ch#6 print_sbyte::@1/(byte) '-' print_sdword::@2/(byte) '-' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' testChar::@2/(byte) ' ' testChar::@4/(byte) ' ' testInt::@2/(byte) ' ' testInt::@4/(byte) ' ' testLong::@2/(byte) ' ' testLong::@4/(byte) ' ' testShort::@2/(byte) ' ' testShort::@4/(byte) ' ' ) - [65] *((byte*) print_char_cursor#92) ← (byte) print_char::ch#15 - [66] (byte*) print_char_cursor#25 ← ++ (byte*) print_char_cursor#92 +print_sdword::@1: scope:[print_sdword] from print_sdword + [43] phi() + [44] call print_char + to:print_sdword::@4 +print_sdword::@4: scope:[print_sdword] from print_sdword::@1 + [45] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 + to:print_sdword::@2 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sdword::@1 print_sdword::@3 print_sword::@1 print_sword::@3 testChar::@2 testChar::@4 testInt::@2 testInt::@4 testLong::@2 testLong::@4 testShort::@2 testShort::@4 + [46] (byte*) print_char_cursor#94 ← phi( print_byte/(byte*) print_char_cursor#149 print_byte::@1/(byte*) print_char_cursor#26 print_sbyte::@1/(byte*) print_char_cursor#26 print_sdword::@1/(byte*) print_char_cursor#26 print_sdword::@3/(byte*) print_char_cursor#26 print_sword::@1/(byte*) print_char_cursor#26 print_sword::@3/(byte*) print_char_cursor#26 testChar::@2/(byte*) print_char_cursor#26 testChar::@4/(byte*) print_char_cursor#26 testInt::@2/(byte*) print_char_cursor#26 testInt::@4/(byte*) print_char_cursor#26 testLong::@2/(byte*) print_char_cursor#26 testLong::@4/(byte*) print_char_cursor#26 testShort::@2/(byte*) print_char_cursor#26 testShort::@4/(byte*) print_char_cursor#26 ) + [46] (byte) print_char::ch#16 ← phi( print_byte/(byte) print_char::ch#6 print_byte::@1/(byte) print_char::ch#7 print_sbyte::@1/(byte) '-' print_sdword::@1/(byte) '-' print_sdword::@3/(byte) ' ' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' testChar::@2/(byte) ' ' testChar::@4/(byte) ' ' testInt::@2/(byte) ' ' testInt::@4/(byte) ' ' testLong::@2/(byte) ' ' testLong::@4/(byte) ' ' testShort::@2/(byte) ' ' testShort::@4/(byte) ' ' ) + [47] *((byte*) print_char_cursor#94) ← (byte) print_char::ch#16 + [48] (byte*) print_char_cursor#26 ← ++ (byte*) print_char_cursor#94 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [67] return + [49] return + to:@return +print_dword: scope:[print_dword] from print_sdword::@2 testLong::@1 + [50] (byte*) print_char_cursor#145 ← phi( print_sdword::@2/(byte*) print_char_cursor#26 testLong::@1/(byte*) print_char_cursor#136 ) + [50] (dword) print_dword::dw#2 ← phi( print_sdword::@2/(dword) print_dword::dw#0 testLong::@1/(const dword) testLong::u#0 ) + [51] (word) print_word::w#1 ← > (dword) print_dword::dw#2 + [52] call print_word + to:print_dword::@1 +print_dword::@1: scope:[print_dword] from print_dword + [53] (word) print_word::w#2 ← < (dword) print_dword::dw#2 + [54] call print_word + to:print_dword::@return +print_dword::@return: scope:[print_dword] from print_dword::@1 + [55] return + to:@return +print_word: scope:[print_word] from print_dword print_dword::@1 print_sword::@2 testInt::@1 testShort::@1 + [56] (byte*) print_char_cursor#144 ← phi( print_dword/(byte*) print_char_cursor#145 print_dword::@1/(byte*) print_char_cursor#26 print_sword::@2/(byte*) print_char_cursor#26 testInt::@1/(byte*) print_char_cursor#136 testShort::@1/(byte*) print_char_cursor#136 ) + [56] (word) print_word::w#5 ← phi( print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 testInt::@1/(const word) testInt::u#0 testShort::@1/(const word) testShort::u#0 ) + [57] (byte) print_byte::b#1 ← > (word) print_word::w#5 + [58] call print_byte + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [59] (byte) print_byte::b#2 ← < (word) print_word::w#5 + [60] call print_byte + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [61] return + to:@return +print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 testChar::@1 testChar::@3 + [62] (byte*) print_char_cursor#149 ← phi( print_sbyte::@2/(byte*) print_char_cursor#26 print_word/(byte*) print_char_cursor#144 print_word::@1/(byte*) print_char_cursor#26 testChar::@1/(byte*) print_char_cursor#136 testChar::@3/(byte*) print_char_cursor#26 ) + [62] (byte) print_byte::b#5 ← phi( print_sbyte::@2/(byte)(const signed byte) print_sbyte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 testChar::@1/(const byte) testChar::u#0 testChar::@3/(const byte) testChar::n#0 ) + [63] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 + [64] (byte) print_char::ch#6 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [65] call print_char + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [66] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f + [67] (byte) print_char::ch#7 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [68] call print_char + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [69] return to:@return print_str: scope:[print_str] from testChar testInt testLong testShort - [68] (byte*) print_char_cursor#153 ← phi( testChar/(byte*) 1024 testInt/(byte*~) print_char_cursor#158 testLong/(byte*~) print_char_cursor#159 testShort/(byte*~) print_char_cursor#160 ) - [68] (byte*) print_str::str#7 ← phi( testChar/(const string) testChar::str testInt/(const string) testInt::str testLong/(const string) testLong::str testShort/(const string) testShort::str ) + [70] (byte*) print_char_cursor#156 ← phi( testChar/(byte*) 1024 testInt/(byte*~) print_char_cursor#161 testLong/(byte*~) print_char_cursor#162 testShort/(byte*~) print_char_cursor#163 ) + [70] (byte*) print_str::str#7 ← phi( testChar/(const string) testChar::str testInt/(const string) testInt::str testLong/(const string) testLong::str testShort/(const string) testShort::str ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [69] (byte*) print_char_cursor#134 ← phi( print_str/(byte*) print_char_cursor#153 print_str::@2/(byte*) print_char_cursor#1 ) - [69] (byte*) print_str::str#5 ← phi( print_str/(byte*) print_str::str#7 print_str::@2/(byte*) print_str::str#0 ) - [70] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 + [71] (byte*) print_char_cursor#136 ← phi( print_str/(byte*) print_char_cursor#156 print_str::@2/(byte*) print_char_cursor#1 ) + [71] (byte*) print_str::str#5 ← phi( print_str/(byte*) print_str::str#7 print_str::@2/(byte*) print_str::str#0 ) + [72] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 - [71] return + [73] return to:@return print_str::@2: scope:[print_str] from print_str::@1 - [72] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#5) - [73] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134 - [74] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#5 + [74] *((byte*) print_char_cursor#136) ← *((byte*) print_str::str#5) + [75] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#136 + [76] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#5 to:print_str::@1 testInt: scope:[testInt] from main::@3 - [75] (byte*~) print_char_cursor#158 ← (byte*) print_line_cursor#1 - [76] call print_str + [77] (byte*~) print_char_cursor#161 ← (byte*) print_line_cursor#1 + [78] call print_str to:testInt::@1 testInt::@1: scope:[testInt] from testInt - [77] phi() - [78] call print_word + [79] phi() + [80] call print_word to:testInt::@2 testInt::@2: scope:[testInt] from testInt::@1 - [79] phi() - [80] call print_char + [81] phi() + [82] call print_char to:testInt::@3 testInt::@3: scope:[testInt] from testInt::@2 - [81] phi() - [82] call print_sword + [83] phi() + [84] call print_sword to:testInt::@4 testInt::@4: scope:[testInt] from testInt::@3 - [83] phi() - [84] call print_char + [85] phi() + [86] call print_char to:testInt::@5 testInt::@5: scope:[testInt] from testInt::@4 - [85] phi() - [86] call print_sword + [87] phi() + [88] call print_sword to:testInt::@6 testInt::@6: scope:[testInt] from testInt::@5 - [87] phi() - [88] call print_ln + [89] phi() + [90] call print_ln to:testInt::@return testInt::@return: scope:[testInt] from testInt::@6 - [89] return + [91] return to:@return print_sword: scope:[print_sword] from testInt::@3 testInt::@5 testShort::@3 testShort::@5 - [90] (signed word) print_sword::w#10 ← phi( testInt::@3/(const signed word) testInt::n#0 testInt::@5/(const signed word) testInt::s#0 testShort::@3/(const signed word) testShort::n#0 testShort::@5/(const signed word) testShort::s#0 ) - [91] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 + [92] (signed word) print_sword::w#10 ← phi( testInt::@3/(const signed word) testInt::n#0 testInt::@5/(const signed word) testInt::s#0 testShort::@3/(const signed word) testShort::n#0 testShort::@5/(const signed word) testShort::s#0 ) + [93] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 to:print_sword::@3 print_sword::@3: scope:[print_sword] from print_sword - [92] phi() - [93] call print_char + [94] phi() + [95] call print_char to:print_sword::@2 print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 - [94] (signed word) print_sword::w#7 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#10 ) - [95] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 - [96] call print_word + [96] (signed word) print_sword::w#7 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#10 ) + [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 + [98] call print_word to:print_sword::@return print_sword::@return: scope:[print_sword] from print_sword::@2 - [97] return + [99] return to:@return print_sword::@1: scope:[print_sword] from print_sword - [98] phi() - [99] call print_char + [100] phi() + [101] call print_char to:print_sword::@4 print_sword::@4: scope:[print_sword] from print_sword::@1 - [100] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 + [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 to:print_sword::@2 testShort: scope:[testShort] from main::@2 - [101] (byte*~) print_char_cursor#160 ← (byte*) print_line_cursor#1 - [102] call print_str + [103] (byte*~) print_char_cursor#163 ← (byte*) print_line_cursor#1 + [104] call print_str to:testShort::@1 testShort::@1: scope:[testShort] from testShort - [103] phi() - [104] call print_word + [105] phi() + [106] call print_word to:testShort::@2 testShort::@2: scope:[testShort] from testShort::@1 - [105] phi() - [106] call print_char + [107] phi() + [108] call print_char to:testShort::@3 testShort::@3: scope:[testShort] from testShort::@2 - [107] phi() - [108] call print_sword + [109] phi() + [110] call print_sword to:testShort::@4 testShort::@4: scope:[testShort] from testShort::@3 - [109] phi() - [110] call print_char + [111] phi() + [112] call print_char to:testShort::@5 testShort::@5: scope:[testShort] from testShort::@4 - [111] phi() - [112] call print_sword + [113] phi() + [114] call print_sword to:testShort::@6 testShort::@6: scope:[testShort] from testShort::@5 - [113] phi() - [114] call print_ln + [115] phi() + [116] call print_ln to:testShort::@return testShort::@return: scope:[testShort] from testShort::@6 - [115] return + [117] return to:@return testChar: scope:[testChar] from main::@1 - [116] phi() - [117] call print_str + [118] phi() + [119] call print_str to:testChar::@1 testChar::@1: scope:[testChar] from testChar - [118] phi() - [119] call print_byte + [120] phi() + [121] call print_byte to:testChar::@2 testChar::@2: scope:[testChar] from testChar::@1 - [120] phi() - [121] call print_char + [122] phi() + [123] call print_char to:testChar::@3 testChar::@3: scope:[testChar] from testChar::@2 - [122] phi() - [123] call print_byte + [124] phi() + [125] call print_byte to:testChar::@4 testChar::@4: scope:[testChar] from testChar::@3 - [124] phi() - [125] call print_char + [126] phi() + [127] call print_char to:testChar::@5 testChar::@5: scope:[testChar] from testChar::@4 - [126] phi() - [127] call print_sbyte + [128] phi() + [129] call print_sbyte to:testChar::@6 testChar::@6: scope:[testChar] from testChar::@5 - [128] phi() - [129] call print_ln + [130] phi() + [131] call print_ln to:testChar::@return testChar::@return: scope:[testChar] from testChar::@6 - [130] return + [132] return to:@return print_sbyte: scope:[print_sbyte] from testChar::@5 - [131] phi() + [133] phi() to:print_sbyte::@1 print_sbyte::@1: scope:[print_sbyte] from print_sbyte - [132] phi() - [133] call print_char + [134] phi() + [135] call print_char to:print_sbyte::@2 print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@1 - [134] phi() - [135] call print_byte + [136] phi() + [137] call print_byte to:print_sbyte::@return print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@2 - [136] return + [138] return to:@return print_cls: scope:[print_cls] from main - [137] phi() + [139] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [138] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [139] *((byte*) print_cls::sc#2) ← (byte) ' ' - [140] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [141] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [140] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [141] *((byte*) print_cls::sc#2) ← (byte) ' ' + [142] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [143] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [142] return + [144] return to:@return @@ -1997,21 +2022,21 @@ VARIABLE REGISTER WEIGHTS (byte) print_byte::b#5 2.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#15 6.0 -(byte) print_char::ch#5 4.0 +(byte) print_char::ch#16 6.0 (byte) print_char::ch#6 4.0 +(byte) print_char::ch#7 4.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 11.0 -(byte*) print_char_cursor#134 3.583333333333333 -(byte*) print_char_cursor#142 6.0 -(byte*) print_char_cursor#143 3.0 -(byte*) print_char_cursor#146 3.9999999999999996 -(byte*) print_char_cursor#153 8.0 -(byte*~) print_char_cursor#158 4.0 -(byte*~) print_char_cursor#159 4.0 -(byte*~) print_char_cursor#160 4.0 -(byte*) print_char_cursor#25 0.6000000000000004 -(byte*) print_char_cursor#92 16.0 +(byte*) print_char_cursor#136 3.583333333333333 +(byte*) print_char_cursor#144 6.0 +(byte*) print_char_cursor#145 3.0 +(byte*) print_char_cursor#149 3.9999999999999996 +(byte*) print_char_cursor#156 8.0 +(byte*~) print_char_cursor#161 4.0 +(byte*~) print_char_cursor#162 4.0 +(byte*~) print_char_cursor#163 4.0 +(byte*) print_char_cursor#26 0.6091954022988502 +(byte*) print_char_cursor#94 17.0 (void()) print_cls() (byte*) print_cls::sc (byte*) print_cls::sc#1 16.5 @@ -2032,8 +2057,8 @@ VARIABLE REGISTER WEIGHTS (void()) print_sdword((signed dword) print_sdword::dw) (signed dword) print_sdword::dw (signed dword) print_sdword::dw#0 4.0 -(signed dword) print_sdword::dw#3 1.5 -(signed dword) print_sdword::dw#4 4.0 +(signed dword) print_sdword::dw#3 1.0 +(signed dword) print_sdword::dw#5 4.0 (void()) print_str((byte*) print_str::str) (byte*) print_str::str (byte*) print_str::str#0 22.0 @@ -2069,12 +2094,12 @@ VARIABLE REGISTER WEIGHTS Initial phi equivalence classes [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] -[ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 ] +[ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] +[ print_char::ch#16 print_char::ch#6 print_char::ch#7 ] [ print_dword::dw#2 print_dword::dw#0 ] [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] +[ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#161 print_char_cursor#162 print_char_cursor#163 print_char_cursor#1 ] [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] -[ print_char::ch#15 print_char::ch#5 print_char::ch#6 ] -[ print_char_cursor#92 print_char_cursor#146 print_char_cursor#142 print_char_cursor#143 print_char_cursor#25 print_char_cursor#134 print_char_cursor#153 print_char_cursor#158 print_char_cursor#159 print_char_cursor#160 print_char_cursor#1 ] [ print_str::str#5 print_str::str#7 print_str::str#0 ] [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] [ print_cls::sc#2 print_cls::sc#1 ] @@ -2082,24 +2107,24 @@ Added variable print_byte::$0 to zero page equivalence class [ print_byte::$0 ] Added variable print_byte::$2 to zero page equivalence class [ print_byte::$2 ] Complete equivalence classes [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] -[ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 ] +[ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] +[ print_char::ch#16 print_char::ch#6 print_char::ch#7 ] [ print_dword::dw#2 print_dword::dw#0 ] [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] +[ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#161 print_char_cursor#162 print_char_cursor#163 print_char_cursor#1 ] [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] -[ print_char::ch#15 print_char::ch#5 print_char::ch#6 ] -[ print_char_cursor#92 print_char_cursor#146 print_char_cursor#142 print_char_cursor#143 print_char_cursor#25 print_char_cursor#134 print_char_cursor#153 print_char_cursor#158 print_char_cursor#159 print_char_cursor#160 print_char_cursor#1 ] [ print_str::str#5 print_str::str#7 print_str::str#0 ] [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] [ print_cls::sc#2 print_cls::sc#1 ] [ print_byte::$0 ] [ print_byte::$2 ] Allocated zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] -Allocated zp ZP_DWORD:4 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 ] -Allocated zp ZP_DWORD:8 [ print_dword::dw#2 print_dword::dw#0 ] -Allocated zp ZP_WORD:12 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] -Allocated zp ZP_BYTE:14 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] -Allocated zp ZP_BYTE:15 [ print_char::ch#15 print_char::ch#5 print_char::ch#6 ] -Allocated zp ZP_WORD:16 [ print_char_cursor#92 print_char_cursor#146 print_char_cursor#142 print_char_cursor#143 print_char_cursor#25 print_char_cursor#134 print_char_cursor#153 print_char_cursor#158 print_char_cursor#159 print_char_cursor#160 print_char_cursor#1 ] +Allocated zp ZP_DWORD:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] +Allocated zp ZP_BYTE:8 [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ] +Allocated zp ZP_DWORD:9 [ print_dword::dw#2 print_dword::dw#0 ] +Allocated zp ZP_WORD:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] +Allocated zp ZP_WORD:15 [ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#161 print_char_cursor#162 print_char_cursor#163 print_char_cursor#1 ] +Allocated zp ZP_BYTE:17 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] Allocated zp ZP_WORD:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] Allocated zp ZP_WORD:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] Allocated zp ZP_WORD:22 [ print_cls::sc#2 print_cls::sc#1 ] @@ -2114,7 +2139,7 @@ INITIAL ASM :BasicUpstart(bbegin) .pc = $80d "Program" // Global Constants & labels - .label print_char_cursor = $10 + .label print_char_cursor = $f .label print_line_cursor = 2 // @begin bbegin: @@ -2135,7 +2160,7 @@ bend: // main main: { // [5] call print_cls - // [137] phi from main to print_cls [phi:main->print_cls] + // [139] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls // [6] phi from main to main::@1 [phi:main->main::@1] @@ -2144,7 +2169,7 @@ main: { // main::@1 b1: // [7] call testChar - // [116] phi from main::@1 to testChar [phi:main::@1->testChar] + // [118] phi from main::@1 to testChar [phi:main::@1->testChar] testChar_from_b1: jsr testChar // [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -2179,16 +2204,16 @@ testLong: { .const u = $222e0 .const n = -$222e0 .const s = -$222e0 - // [15] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [15] (byte*~) print_char_cursor#162 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 // [16] call print_str - // [68] phi from testLong to print_str [phi:testLong->print_str] + // [70] phi from testLong to print_str [phi:testLong->print_str] print_str_from_testLong: - // [68] phi (byte*) print_char_cursor#153 = (byte*~) print_char_cursor#159 [phi:testLong->print_str#0] -- register_copy - // [68] phi (byte*) print_str::str#7 = (const string) testLong::str [phi:testLong->print_str#1] -- pbuz1=pbuc1 + // [70] phi (byte*) print_char_cursor#156 = (byte*~) print_char_cursor#162 [phi:testLong->print_str#0] -- register_copy + // [70] phi (byte*) print_str::str#7 = (const string) testLong::str [phi:testLong->print_str#1] -- pbuz1=pbuc1 lda #str @@ -2200,10 +2225,10 @@ testLong: { // testLong::@1 b1: // [18] call print_dword - // [44] phi from testLong::@1 to print_dword [phi:testLong::@1->print_dword] + // [50] phi from testLong::@1 to print_dword [phi:testLong::@1->print_dword] print_dword_from_b1: - // [44] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:testLong::@1->print_dword#0] -- register_copy - // [44] phi (dword) print_dword::dw#2 = (const dword) testLong::u#0 [phi:testLong::@1->print_dword#1] -- vduz1=vduc1 + // [50] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#136 [phi:testLong::@1->print_dword#0] -- register_copy + // [50] phi (dword) print_dword::dw#2 = (const dword) testLong::u#0 [phi:testLong::@1->print_dword#1] -- vduz1=vduc1 lda #u @@ -2219,10 +2244,10 @@ testLong: { // testLong::@2 b2: // [20] call print_char - // [64] phi from testLong::@2 to print_char [phi:testLong::@2->print_char] + // [46] phi from testLong::@2 to print_char [phi:testLong::@2->print_char] print_char_from_b2: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testLong::@2->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testLong::@2->print_char#1] -- vbuz1=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testLong::@2->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testLong::@2->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char @@ -2250,10 +2275,10 @@ testLong: { // testLong::@4 b4: // [24] call print_char - // [64] phi from testLong::@4 to print_char [phi:testLong::@4->print_char] + // [46] phi from testLong::@4 to print_char [phi:testLong::@4->print_char] print_char_from_b4: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testLong::@4->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testLong::@4->print_char#1] -- vbuz1=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testLong::@4->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testLong::@4->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char @@ -2310,7 +2335,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - // [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#25) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + // [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -2330,26 +2355,66 @@ print_ln: { // print_sdword(signed dword zeropage(4) dw) print_sdword: { .label dw = 4 - // [36] if((signed dword) print_sdword::dw#3>=(signed byte) 0) goto print_sdword::@1 -- vdsz1_ge_0_then_la1 + // [36] if((signed dword) print_sdword::dw#3<(signed byte) 0) goto print_sdword::@1 -- vdsz1_lt_0_then_la1 lda dw+3 - bpl b1_from_print_sdword - // [37] phi from print_sdword to print_sdword::@2 [phi:print_sdword->print_sdword::@2] - b2_from_print_sdword: - jmp b2 - // print_sdword::@2 - b2: - // [38] call print_char - // [64] phi from print_sdword::@2 to print_char [phi:print_sdword::@2->print_char] - print_char_from_b2: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sdword::@2->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuz1=vbuc1 - lda #'-' - sta print_char.ch - jsr print_char + bmi b1_from_print_sdword + // [37] phi from print_sdword to print_sdword::@3 [phi:print_sdword->print_sdword::@3] + b3_from_print_sdword: jmp b3 // print_sdword::@3 b3: - // [39] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 -- vdsz1=_neg_vdsz1 + // [38] call print_char + // [46] phi from print_sdword::@3 to print_char [phi:print_sdword::@3->print_char] + print_char_from_b3: + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sdword::@3->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:print_sdword::@3->print_char#1] -- vbuz1=vbuc1 + lda #' ' + sta print_char.ch + jsr print_char + // [39] phi from print_sdword::@3 print_sdword::@4 to print_sdword::@2 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2] + b2_from_b3: + b2_from_b4: + // [39] phi (signed dword) print_sdword::dw#5 = (signed dword) print_sdword::dw#3 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2#0] -- register_copy + jmp b2 + // print_sdword::@2 + b2: + // [40] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 -- vduz1=vduz2 + lda dw + sta print_dword.dw + lda dw+1 + sta print_dword.dw+1 + lda dw+2 + sta print_dword.dw+2 + lda dw+3 + sta print_dword.dw+3 + // [41] call print_dword + // [50] phi from print_sdword::@2 to print_dword [phi:print_sdword::@2->print_dword] + print_dword_from_b2: + // [50] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#26 [phi:print_sdword::@2->print_dword#0] -- register_copy + // [50] phi (dword) print_dword::dw#2 = (dword) print_dword::dw#0 [phi:print_sdword::@2->print_dword#1] -- register_copy + jsr print_dword + jmp breturn + // print_sdword::@return + breturn: + // [42] return + rts + // [43] phi from print_sdword to print_sdword::@1 [phi:print_sdword->print_sdword::@1] + b1_from_print_sdword: + jmp b1 + // print_sdword::@1 + b1: + // [44] call print_char + // [46] phi from print_sdword::@1 to print_char [phi:print_sdword::@1->print_char] + print_char_from_b1: + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sdword::@1->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) '-' [phi:print_sdword::@1->print_char#1] -- vbuz1=vbuc1 + lda #'-' + sta print_char.ch + jsr print_char + jmp b4 + // print_sdword::@4 + b4: + // [45] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 -- vdsz1=_neg_vdsz1 sec lda dw eor #$ff @@ -2367,159 +2432,18 @@ print_sdword: { eor #$ff adc #0 sta dw+3 - // [40] phi from print_sdword print_sdword::@3 to print_sdword::@1 [phi:print_sdword/print_sdword::@3->print_sdword::@1] - b1_from_print_sdword: - b1_from_b3: - // [40] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#3 [phi:print_sdword/print_sdword::@3->print_sdword::@1#0] -- register_copy - jmp b1 - // print_sdword::@1 - b1: - // [41] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#4 -- vduz1=vduz2 - lda dw - sta print_dword.dw - lda dw+1 - sta print_dword.dw+1 - lda dw+2 - sta print_dword.dw+2 - lda dw+3 - sta print_dword.dw+3 - // [42] call print_dword - // [44] phi from print_sdword::@1 to print_dword [phi:print_sdword::@1->print_dword] - print_dword_from_b1: - // [44] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#25 [phi:print_sdword::@1->print_dword#0] -- register_copy - // [44] phi (dword) print_dword::dw#2 = (dword) print_dword::dw#0 [phi:print_sdword::@1->print_dword#1] -- register_copy - jsr print_dword - jmp breturn - // print_sdword::@return - breturn: - // [43] return - rts -} - // print_dword -// Print a dword as HEX -// print_dword(dword zeropage(8) dw) -print_dword: { - .label dw = 8 - // [45] (word) print_word::w#1 ← > (dword) print_dword::dw#2 -- vwuz1=_hi_vduz2 - lda dw+2 - sta print_word.w - lda dw+3 - sta print_word.w+1 - // [46] call print_word - // [50] phi from print_dword to print_word [phi:print_dword->print_word] - print_word_from_print_dword: - // [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#143 [phi:print_dword->print_word#0] -- register_copy - // [50] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy - jsr print_word - jmp b1 - // print_dword::@1 - b1: - // [47] (word) print_word::w#2 ← < (dword) print_dword::dw#2 -- vwuz1=_lo_vduz2 - lda dw - sta print_word.w - lda dw+1 - sta print_word.w+1 - // [48] call print_word - // [50] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] - print_word_from_b1: - // [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#25 [phi:print_dword::@1->print_word#0] -- register_copy - // [50] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy - jsr print_word - jmp breturn - // print_dword::@return - breturn: - // [49] return - rts -} - // print_word -// Print a word as HEX -// print_word(word zeropage($c) w) -print_word: { - .label w = $c - // [51] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 - lda w+1 - sta print_byte.b - // [52] call print_byte - // [56] phi from print_word to print_byte [phi:print_word->print_byte] - print_byte_from_print_word: - // [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#142 [phi:print_word->print_byte#0] -- register_copy - // [56] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy - jsr print_byte - jmp b1 - // print_word::@1 - b1: - // [53] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 - lda w - sta print_byte.b - // [54] call print_byte - // [56] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - print_byte_from_b1: - // [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#25 [phi:print_word::@1->print_byte#0] -- register_copy - // [56] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy - jsr print_byte - jmp breturn - // print_word::@return - breturn: - // [55] return - rts -} - // print_byte -// Print a byte as HEX -// print_byte(byte zeropage($e) b) -print_byte: { - .label _0 = $18 - .label _2 = $19 - .label b = $e - // [57] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 -- vbuz1=vbuz2_ror_4 - lda b - lsr - lsr - lsr - lsr - sta _0 - // [58] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 - ldy _0 - lda print_hextab,y - sta print_char.ch - // [59] call print_char - // [64] phi from print_byte to print_char [phi:print_byte->print_char] - print_char_from_print_byte: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#146 [phi:print_byte->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) print_char::ch#5 [phi:print_byte->print_char#1] -- register_copy - jsr print_char - jmp b1 - // print_byte::@1 - b1: - // [60] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 - lda #$f - and b - sta _2 - // [61] (byte) print_char::ch#6 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 - ldy _2 - lda print_hextab,y - sta print_char.ch - // [62] call print_char - // [64] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - print_char_from_b1: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_byte::@1->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) print_char::ch#6 [phi:print_byte::@1->print_char#1] -- register_copy - jsr print_char - jmp breturn - // print_byte::@return - breturn: - // [63] return - rts + jmp b2_from_b4 } // print_char // Print a single char -// print_char(byte zeropage($f) ch) +// print_char(byte zeropage(8) ch) print_char: { - .label ch = $f - // [65] *((byte*) print_char_cursor#92) ← (byte) print_char::ch#15 -- _deref_pbuz1=vbuz2 + .label ch = 8 + // [47] *((byte*) print_char_cursor#94) ← (byte) print_char::ch#16 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - // [66] (byte*) print_char_cursor#25 ← ++ (byte*) print_char_cursor#92 -- pbuz1=_inc_pbuz1 + // [48] (byte*) print_char_cursor#26 ← ++ (byte*) print_char_cursor#94 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -2527,7 +2451,122 @@ print_char: { jmp breturn // print_char::@return breturn: - // [67] return + // [49] return + rts +} + // print_dword +// Print a dword as HEX +// print_dword(dword zeropage(9) dw) +print_dword: { + .label dw = 9 + // [51] (word) print_word::w#1 ← > (dword) print_dword::dw#2 -- vwuz1=_hi_vduz2 + lda dw+2 + sta print_word.w + lda dw+3 + sta print_word.w+1 + // [52] call print_word + // [56] phi from print_dword to print_word [phi:print_dword->print_word] + print_word_from_print_dword: + // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#145 [phi:print_dword->print_word#0] -- register_copy + // [56] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy + jsr print_word + jmp b1 + // print_dword::@1 + b1: + // [53] (word) print_word::w#2 ← < (dword) print_dword::dw#2 -- vwuz1=_lo_vduz2 + lda dw + sta print_word.w + lda dw+1 + sta print_word.w+1 + // [54] call print_word + // [56] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + print_word_from_b1: + // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#26 [phi:print_dword::@1->print_word#0] -- register_copy + // [56] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy + jsr print_word + jmp breturn + // print_dword::@return + breturn: + // [55] return + rts +} + // print_word +// Print a word as HEX +// print_word(word zeropage($d) w) +print_word: { + .label w = $d + // [57] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 + lda w+1 + sta print_byte.b + // [58] call print_byte + // [62] phi from print_word to print_byte [phi:print_word->print_byte] + print_byte_from_print_word: + // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#144 [phi:print_word->print_byte#0] -- register_copy + // [62] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + jsr print_byte + jmp b1 + // print_word::@1 + b1: + // [59] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 + lda w + sta print_byte.b + // [60] call print_byte + // [62] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + print_byte_from_b1: + // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#26 [phi:print_word::@1->print_byte#0] -- register_copy + // [62] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + jsr print_byte + jmp breturn + // print_word::@return + breturn: + // [61] return + rts +} + // print_byte +// Print a byte as HEX +// print_byte(byte zeropage($11) b) +print_byte: { + .label _0 = $18 + .label _2 = $19 + .label b = $11 + // [63] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 -- vbuz1=vbuz2_ror_4 + lda b + lsr + lsr + lsr + lsr + sta _0 + // [64] (byte) print_char::ch#6 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy _0 + lda print_hextab,y + sta print_char.ch + // [65] call print_char + // [46] phi from print_byte to print_char [phi:print_byte->print_char] + print_char_from_print_byte: + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#149 [phi:print_byte->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) print_char::ch#6 [phi:print_byte->print_char#1] -- register_copy + jsr print_char + jmp b1 + // print_byte::@1 + b1: + // [66] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 + lda #$f + and b + sta _2 + // [67] (byte) print_char::ch#7 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy _2 + lda print_hextab,y + sta print_char.ch + // [68] call print_char + // [46] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + print_char_from_b1: + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_byte::@1->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) print_char::ch#7 [phi:print_byte::@1->print_char#1] -- register_copy + jsr print_char + jmp breturn + // print_byte::@return + breturn: + // [69] return rts } // print_str @@ -2535,15 +2574,15 @@ print_char: { // print_str(byte* zeropage($12) str) print_str: { .label str = $12 - // [69] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + // [71] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - // [69] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#153 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - // [69] phi (byte*) print_str::str#5 = (byte*) print_str::str#7 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + // [71] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#156 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + // [71] phi (byte*) print_str::str#5 = (byte*) print_str::str#7 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 // print_str::@1 b1: - // [70] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + // [72] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' @@ -2551,21 +2590,21 @@ print_str: { jmp breturn // print_str::@return breturn: - // [71] return + // [73] return rts // print_str::@2 b2: - // [72] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#5) -- _deref_pbuz1=_deref_pbuz2 + // [74] *((byte*) print_char_cursor#136) ← *((byte*) print_str::str#5) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - // [73] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134 -- pbuz1=_inc_pbuz1 + // [75] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#136 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - // [74] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#5 -- pbuz1=_inc_pbuz1 + // [76] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#5 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 @@ -2577,96 +2616,96 @@ testInt: { .const u = $578 .const n = -$578 .const s = -$578 - // [75] (byte*~) print_char_cursor#158 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [77] (byte*~) print_char_cursor#161 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - // [76] call print_str - // [68] phi from testInt to print_str [phi:testInt->print_str] + // [78] call print_str + // [70] phi from testInt to print_str [phi:testInt->print_str] print_str_from_testInt: - // [68] phi (byte*) print_char_cursor#153 = (byte*~) print_char_cursor#158 [phi:testInt->print_str#0] -- register_copy - // [68] phi (byte*) print_str::str#7 = (const string) testInt::str [phi:testInt->print_str#1] -- pbuz1=pbuc1 + // [70] phi (byte*) print_char_cursor#156 = (byte*~) print_char_cursor#161 [phi:testInt->print_str#0] -- register_copy + // [70] phi (byte*) print_str::str#7 = (const string) testInt::str [phi:testInt->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - // [77] phi from testInt to testInt::@1 [phi:testInt->testInt::@1] + // [79] phi from testInt to testInt::@1 [phi:testInt->testInt::@1] b1_from_testInt: jmp b1 // testInt::@1 b1: - // [78] call print_word - // [50] phi from testInt::@1 to print_word [phi:testInt::@1->print_word] + // [80] call print_word + // [56] phi from testInt::@1 to print_word [phi:testInt::@1->print_word] print_word_from_b1: - // [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:testInt::@1->print_word#0] -- register_copy - // [50] phi (word) print_word::w#5 = (const word) testInt::u#0 [phi:testInt::@1->print_word#1] -- vwuz1=vwuc1 + // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#136 [phi:testInt::@1->print_word#0] -- register_copy + // [56] phi (word) print_word::w#5 = (const word) testInt::u#0 [phi:testInt::@1->print_word#1] -- vwuz1=vwuc1 lda #u sta print_word.w+1 jsr print_word - // [79] phi from testInt::@1 to testInt::@2 [phi:testInt::@1->testInt::@2] + // [81] phi from testInt::@1 to testInt::@2 [phi:testInt::@1->testInt::@2] b2_from_b1: jmp b2 // testInt::@2 b2: - // [80] call print_char - // [64] phi from testInt::@2 to print_char [phi:testInt::@2->print_char] + // [82] call print_char + // [46] phi from testInt::@2 to print_char [phi:testInt::@2->print_char] print_char_from_b2: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testInt::@2->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testInt::@2->print_char#1] -- vbuz1=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testInt::@2->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testInt::@2->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - // [81] phi from testInt::@2 to testInt::@3 [phi:testInt::@2->testInt::@3] + // [83] phi from testInt::@2 to testInt::@3 [phi:testInt::@2->testInt::@3] b3_from_b2: jmp b3 // testInt::@3 b3: - // [82] call print_sword - // [90] phi from testInt::@3 to print_sword [phi:testInt::@3->print_sword] + // [84] call print_sword + // [92] phi from testInt::@3 to print_sword [phi:testInt::@3->print_sword] print_sword_from_b3: - // [90] phi (signed word) print_sword::w#10 = (const signed word) testInt::n#0 [phi:testInt::@3->print_sword#0] -- vwsz1=vwsc1 + // [92] phi (signed word) print_sword::w#10 = (const signed word) testInt::n#0 [phi:testInt::@3->print_sword#0] -- vwsz1=vwsc1 lda #n sta print_sword.w+1 jsr print_sword - // [83] phi from testInt::@3 to testInt::@4 [phi:testInt::@3->testInt::@4] + // [85] phi from testInt::@3 to testInt::@4 [phi:testInt::@3->testInt::@4] b4_from_b3: jmp b4 // testInt::@4 b4: - // [84] call print_char - // [64] phi from testInt::@4 to print_char [phi:testInt::@4->print_char] + // [86] call print_char + // [46] phi from testInt::@4 to print_char [phi:testInt::@4->print_char] print_char_from_b4: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testInt::@4->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testInt::@4->print_char#1] -- vbuz1=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testInt::@4->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testInt::@4->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - // [85] phi from testInt::@4 to testInt::@5 [phi:testInt::@4->testInt::@5] + // [87] phi from testInt::@4 to testInt::@5 [phi:testInt::@4->testInt::@5] b5_from_b4: jmp b5 // testInt::@5 b5: - // [86] call print_sword - // [90] phi from testInt::@5 to print_sword [phi:testInt::@5->print_sword] + // [88] call print_sword + // [92] phi from testInt::@5 to print_sword [phi:testInt::@5->print_sword] print_sword_from_b5: - // [90] phi (signed word) print_sword::w#10 = (const signed word) testInt::s#0 [phi:testInt::@5->print_sword#0] -- vwsz1=vwsc1 + // [92] phi (signed word) print_sword::w#10 = (const signed word) testInt::s#0 [phi:testInt::@5->print_sword#0] -- vwsz1=vwsc1 lda #s sta print_sword.w+1 jsr print_sword - // [87] phi from testInt::@5 to testInt::@6 [phi:testInt::@5->testInt::@6] + // [89] phi from testInt::@5 to testInt::@6 [phi:testInt::@5->testInt::@6] b6_from_b5: jmp b6 // testInt::@6 b6: - // [88] call print_ln + // [90] call print_ln // [30] phi from testInt::@6 to print_ln [phi:testInt::@6->print_ln] print_ln_from_b6: // [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testInt::@6->print_ln#0] -- register_copy @@ -2674,7 +2713,7 @@ testInt: { jmp breturn // testInt::@return breturn: - // [89] return + // [91] return rts str: .text "int: @" } @@ -2683,62 +2722,62 @@ testInt: { // print_sword(signed word zeropage($14) w) print_sword: { .label w = $14 - // [91] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 + // [93] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 bmi b1_from_print_sword - // [92] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + // [94] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] b3_from_print_sword: jmp b3 // print_sword::@3 b3: - // [93] call print_char - // [64] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + // [95] call print_char + // [46] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] print_char_from_b3: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sword::@3->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuz1=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sword::@3->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - // [94] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + // [96] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] b2_from_b3: b2_from_b4: - // [94] phi (signed word) print_sword::w#7 = (signed word) print_sword::w#10 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + // [96] phi (signed word) print_sword::w#7 = (signed word) print_sword::w#10 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy jmp b2 // print_sword::@2 b2: - // [95] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 -- vwuz1=vwuz2 + // [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 -- vwuz1=vwuz2 lda w sta print_word.w lda w+1 sta print_word.w+1 - // [96] call print_word - // [50] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + // [98] call print_word + // [56] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] print_word_from_b2: - // [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#25 [phi:print_sword::@2->print_word#0] -- register_copy - // [50] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#26 [phi:print_sword::@2->print_word#0] -- register_copy + // [56] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy jsr print_word jmp breturn // print_sword::@return breturn: - // [97] return + // [99] return rts - // [98] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + // [100] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] b1_from_print_sword: jmp b1 // print_sword::@1 b1: - // [99] call print_char - // [64] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + // [101] call print_char + // [46] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] print_char_from_b1: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sword::@1->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuz1=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sword::@1->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b4 // print_sword::@4 b4: - // [100] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 -- vwsz1=_neg_vwsz1 + // [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -2753,96 +2792,96 @@ testShort: { .const u = $578 .const n = -$578 .const s = -$578 - // [101] (byte*~) print_char_cursor#160 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [103] (byte*~) print_char_cursor#163 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - // [102] call print_str - // [68] phi from testShort to print_str [phi:testShort->print_str] + // [104] call print_str + // [70] phi from testShort to print_str [phi:testShort->print_str] print_str_from_testShort: - // [68] phi (byte*) print_char_cursor#153 = (byte*~) print_char_cursor#160 [phi:testShort->print_str#0] -- register_copy - // [68] phi (byte*) print_str::str#7 = (const string) testShort::str [phi:testShort->print_str#1] -- pbuz1=pbuc1 + // [70] phi (byte*) print_char_cursor#156 = (byte*~) print_char_cursor#163 [phi:testShort->print_str#0] -- register_copy + // [70] phi (byte*) print_str::str#7 = (const string) testShort::str [phi:testShort->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - // [103] phi from testShort to testShort::@1 [phi:testShort->testShort::@1] + // [105] phi from testShort to testShort::@1 [phi:testShort->testShort::@1] b1_from_testShort: jmp b1 // testShort::@1 b1: - // [104] call print_word - // [50] phi from testShort::@1 to print_word [phi:testShort::@1->print_word] + // [106] call print_word + // [56] phi from testShort::@1 to print_word [phi:testShort::@1->print_word] print_word_from_b1: - // [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:testShort::@1->print_word#0] -- register_copy - // [50] phi (word) print_word::w#5 = (const word) testShort::u#0 [phi:testShort::@1->print_word#1] -- vwuz1=vwuc1 + // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#136 [phi:testShort::@1->print_word#0] -- register_copy + // [56] phi (word) print_word::w#5 = (const word) testShort::u#0 [phi:testShort::@1->print_word#1] -- vwuz1=vwuc1 lda #u sta print_word.w+1 jsr print_word - // [105] phi from testShort::@1 to testShort::@2 [phi:testShort::@1->testShort::@2] + // [107] phi from testShort::@1 to testShort::@2 [phi:testShort::@1->testShort::@2] b2_from_b1: jmp b2 // testShort::@2 b2: - // [106] call print_char - // [64] phi from testShort::@2 to print_char [phi:testShort::@2->print_char] + // [108] call print_char + // [46] phi from testShort::@2 to print_char [phi:testShort::@2->print_char] print_char_from_b2: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testShort::@2->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testShort::@2->print_char#1] -- vbuz1=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testShort::@2->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testShort::@2->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - // [107] phi from testShort::@2 to testShort::@3 [phi:testShort::@2->testShort::@3] + // [109] phi from testShort::@2 to testShort::@3 [phi:testShort::@2->testShort::@3] b3_from_b2: jmp b3 // testShort::@3 b3: - // [108] call print_sword - // [90] phi from testShort::@3 to print_sword [phi:testShort::@3->print_sword] + // [110] call print_sword + // [92] phi from testShort::@3 to print_sword [phi:testShort::@3->print_sword] print_sword_from_b3: - // [90] phi (signed word) print_sword::w#10 = (const signed word) testShort::n#0 [phi:testShort::@3->print_sword#0] -- vwsz1=vwsc1 + // [92] phi (signed word) print_sword::w#10 = (const signed word) testShort::n#0 [phi:testShort::@3->print_sword#0] -- vwsz1=vwsc1 lda #n sta print_sword.w+1 jsr print_sword - // [109] phi from testShort::@3 to testShort::@4 [phi:testShort::@3->testShort::@4] + // [111] phi from testShort::@3 to testShort::@4 [phi:testShort::@3->testShort::@4] b4_from_b3: jmp b4 // testShort::@4 b4: - // [110] call print_char - // [64] phi from testShort::@4 to print_char [phi:testShort::@4->print_char] + // [112] call print_char + // [46] phi from testShort::@4 to print_char [phi:testShort::@4->print_char] print_char_from_b4: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testShort::@4->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testShort::@4->print_char#1] -- vbuz1=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testShort::@4->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testShort::@4->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - // [111] phi from testShort::@4 to testShort::@5 [phi:testShort::@4->testShort::@5] + // [113] phi from testShort::@4 to testShort::@5 [phi:testShort::@4->testShort::@5] b5_from_b4: jmp b5 // testShort::@5 b5: - // [112] call print_sword - // [90] phi from testShort::@5 to print_sword [phi:testShort::@5->print_sword] + // [114] call print_sword + // [92] phi from testShort::@5 to print_sword [phi:testShort::@5->print_sword] print_sword_from_b5: - // [90] phi (signed word) print_sword::w#10 = (const signed word) testShort::s#0 [phi:testShort::@5->print_sword#0] -- vwsz1=vwsc1 + // [92] phi (signed word) print_sword::w#10 = (const signed word) testShort::s#0 [phi:testShort::@5->print_sword#0] -- vwsz1=vwsc1 lda #s sta print_sword.w+1 jsr print_sword - // [113] phi from testShort::@5 to testShort::@6 [phi:testShort::@5->testShort::@6] + // [115] phi from testShort::@5 to testShort::@6 [phi:testShort::@5->testShort::@6] b6_from_b5: jmp b6 // testShort::@6 b6: - // [114] call print_ln + // [116] call print_ln // [30] phi from testShort::@6 to print_ln [phi:testShort::@6->print_ln] print_ln_from_b6: // [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testShort::@6->print_ln#0] -- register_copy @@ -2850,7 +2889,7 @@ testShort: { jmp breturn // testShort::@return breturn: - // [115] return + // [117] return rts str: .text "short: @" } @@ -2859,87 +2898,87 @@ testChar: { .const u = $e .const n = $e .label s = -$e - // [117] call print_str - // [68] phi from testChar to print_str [phi:testChar->print_str] + // [119] call print_str + // [70] phi from testChar to print_str [phi:testChar->print_str] print_str_from_testChar: - // [68] phi (byte*) print_char_cursor#153 = (byte*) 1024 [phi:testChar->print_str#0] -- pbuz1=pbuc1 + // [70] phi (byte*) print_char_cursor#156 = (byte*) 1024 [phi:testChar->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - // [68] phi (byte*) print_str::str#7 = (const string) testChar::str [phi:testChar->print_str#1] -- pbuz1=pbuc1 + // [70] phi (byte*) print_str::str#7 = (const string) testChar::str [phi:testChar->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - // [118] phi from testChar to testChar::@1 [phi:testChar->testChar::@1] + // [120] phi from testChar to testChar::@1 [phi:testChar->testChar::@1] b1_from_testChar: jmp b1 // testChar::@1 b1: - // [119] call print_byte - // [56] phi from testChar::@1 to print_byte [phi:testChar::@1->print_byte] + // [121] call print_byte + // [62] phi from testChar::@1 to print_byte [phi:testChar::@1->print_byte] print_byte_from_b1: - // [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#134 [phi:testChar::@1->print_byte#0] -- register_copy - // [56] phi (byte) print_byte::b#5 = (const byte) testChar::u#0 [phi:testChar::@1->print_byte#1] -- vbuz1=vbuc1 + // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#136 [phi:testChar::@1->print_byte#0] -- register_copy + // [62] phi (byte) print_byte::b#5 = (const byte) testChar::u#0 [phi:testChar::@1->print_byte#1] -- vbuz1=vbuc1 lda #u sta print_byte.b jsr print_byte - // [120] phi from testChar::@1 to testChar::@2 [phi:testChar::@1->testChar::@2] + // [122] phi from testChar::@1 to testChar::@2 [phi:testChar::@1->testChar::@2] b2_from_b1: jmp b2 // testChar::@2 b2: - // [121] call print_char - // [64] phi from testChar::@2 to print_char [phi:testChar::@2->print_char] + // [123] call print_char + // [46] phi from testChar::@2 to print_char [phi:testChar::@2->print_char] print_char_from_b2: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testChar::@2->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testChar::@2->print_char#1] -- vbuz1=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testChar::@2->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testChar::@2->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - // [122] phi from testChar::@2 to testChar::@3 [phi:testChar::@2->testChar::@3] + // [124] phi from testChar::@2 to testChar::@3 [phi:testChar::@2->testChar::@3] b3_from_b2: jmp b3 // testChar::@3 b3: - // [123] call print_byte - // [56] phi from testChar::@3 to print_byte [phi:testChar::@3->print_byte] + // [125] call print_byte + // [62] phi from testChar::@3 to print_byte [phi:testChar::@3->print_byte] print_byte_from_b3: - // [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#25 [phi:testChar::@3->print_byte#0] -- register_copy - // [56] phi (byte) print_byte::b#5 = (const byte) testChar::n#0 [phi:testChar::@3->print_byte#1] -- vbuz1=vbuc1 + // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#26 [phi:testChar::@3->print_byte#0] -- register_copy + // [62] phi (byte) print_byte::b#5 = (const byte) testChar::n#0 [phi:testChar::@3->print_byte#1] -- vbuz1=vbuc1 lda #n sta print_byte.b jsr print_byte - // [124] phi from testChar::@3 to testChar::@4 [phi:testChar::@3->testChar::@4] + // [126] phi from testChar::@3 to testChar::@4 [phi:testChar::@3->testChar::@4] b4_from_b3: jmp b4 // testChar::@4 b4: - // [125] call print_char - // [64] phi from testChar::@4 to print_char [phi:testChar::@4->print_char] + // [127] call print_char + // [46] phi from testChar::@4 to print_char [phi:testChar::@4->print_char] print_char_from_b4: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testChar::@4->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testChar::@4->print_char#1] -- vbuz1=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testChar::@4->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testChar::@4->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - // [126] phi from testChar::@4 to testChar::@5 [phi:testChar::@4->testChar::@5] + // [128] phi from testChar::@4 to testChar::@5 [phi:testChar::@4->testChar::@5] b5_from_b4: jmp b5 // testChar::@5 b5: - // [127] call print_sbyte - // [131] phi from testChar::@5 to print_sbyte [phi:testChar::@5->print_sbyte] + // [129] call print_sbyte + // [133] phi from testChar::@5 to print_sbyte [phi:testChar::@5->print_sbyte] print_sbyte_from_b5: jsr print_sbyte - // [128] phi from testChar::@5 to testChar::@6 [phi:testChar::@5->testChar::@6] + // [130] phi from testChar::@5 to testChar::@6 [phi:testChar::@5->testChar::@6] b6_from_b5: jmp b6 // testChar::@6 b6: - // [129] call print_ln + // [131] call print_ln // [30] phi from testChar::@6 to print_ln [phi:testChar::@6->print_ln] print_ln_from_b6: // [30] phi (byte*) print_line_cursor#39 = (byte*) 1024 [phi:testChar::@6->print_ln#0] -- pbuz1=pbuc1 @@ -2951,7 +2990,7 @@ testChar: { jmp breturn // testChar::@return breturn: - // [130] return + // [132] return rts str: .text "char: @" } @@ -2959,66 +2998,66 @@ testChar: { // Print a signed byte as HEX print_sbyte: { .const b = -testChar.s - // [132] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + // [134] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 // print_sbyte::@1 b1: - // [133] call print_char - // [64] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + // [135] call print_char + // [46] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sbyte::@1->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sbyte::@1->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char - // [134] phi from print_sbyte::@1 to print_sbyte::@2 [phi:print_sbyte::@1->print_sbyte::@2] + // [136] phi from print_sbyte::@1 to print_sbyte::@2 [phi:print_sbyte::@1->print_sbyte::@2] b2_from_b1: jmp b2 // print_sbyte::@2 b2: - // [135] call print_byte - // [56] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + // [137] call print_byte + // [62] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - // [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#25 [phi:print_sbyte::@2->print_byte#0] -- register_copy - // [56] phi (byte) print_byte::b#5 = (byte)(const signed byte) print_sbyte::b#0 [phi:print_sbyte::@2->print_byte#1] -- vbuz1=vbuc1 + // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#26 [phi:print_sbyte::@2->print_byte#0] -- register_copy + // [62] phi (byte) print_byte::b#5 = (byte)(const signed byte) print_sbyte::b#0 [phi:print_sbyte::@2->print_byte#1] -- vbuz1=vbuc1 lda #b sta print_byte.b jsr print_byte jmp breturn // print_sbyte::@return breturn: - // [136] return + // [138] return rts } // print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $16 - // [138] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + // [140] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - // [138] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + // [140] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - // [138] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + // [140] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - // [138] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + // [140] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 // print_cls::@1 b1: - // [139] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + // [141] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - // [140] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + // [142] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - // [141] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + // [143] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -3028,66 +3067,66 @@ print_cls: { jmp breturn // print_cls::@return breturn: - // [142] return + // [144] return rts } // File Data print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [15] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ print_char_cursor#159 print_line_cursor#1 ] ( main:2::testLong:13 [ print_char_cursor#159 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#25 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testInt:11::print_ln:88 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testShort:9::print_ln:114 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testChar:7::print_ln:129 [ print_line_cursor#1 print_char_cursor#25 ] ) always clobbers reg byte a -Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#25) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#25 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testInt:11::print_ln:88 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testShort:9::print_ln:114 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testChar:7::print_ln:129 [ print_line_cursor#1 print_char_cursor#25 ] ) always clobbers reg byte a -Statement [36] if((signed dword) print_sdword::dw#3>=(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#25 print_sdword::dw#3 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#25 print_sdword::dw#3 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#25 print_sdword::dw#3 ] ) always clobbers reg byte a -Statement [39] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 [ print_char_cursor#25 print_sdword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#25 print_sdword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#25 print_sdword::dw#0 ] ) always clobbers reg byte a -Statement [41] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#4 [ print_char_cursor#25 print_dword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#25 print_dword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#25 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [45] (word) print_word::w#1 ← > (dword) print_dword::dw#2 [ print_dword::dw#2 print_char_cursor#143 print_word::w#1 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#143 print_word::w#1 ] main:2::testLong:13::print_sdword:22::print_dword:42 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#143 print_word::w#1 ] main:2::testLong:13::print_sdword:26::print_dword:42 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#143 print_word::w#1 ] ) always clobbers reg byte a -Statement [47] (word) print_word::w#2 ← < (dword) print_dword::dw#2 [ print_char_cursor#25 print_word::w#2 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_char_cursor#25 print_word::w#2 ] main:2::testLong:13::print_sdword:22::print_dword:42 [ print_line_cursor#1 print_char_cursor#25 print_word::w#2 ] main:2::testLong:13::print_sdword:26::print_dword:42 [ print_line_cursor#1 print_char_cursor#25 print_word::w#2 ] ) always clobbers reg byte a -Statement [51] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#142 print_byte::b#1 ] ( main:2::testLong:13::print_dword:18::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_dword:18::print_word:48 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testInt:11::print_word:78 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testInt:11::print_sword:82::print_word:96 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testInt:11::print_sword:86::print_word:96 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testShort:9::print_sword:108::print_word:96 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testShort:9::print_sword:112::print_word:96 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testShort:9::print_word:104 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] ) always clobbers reg byte a -Statement [53] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#25 print_byte::b#2 ] ( main:2::testLong:13::print_dword:18::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_dword:18::print_word:48 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testInt:11::print_word:78 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testInt:11::print_sword:82::print_word:96 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testInt:11::print_sword:86::print_word:96 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testShort:9::print_sword:108::print_word:96 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testShort:9::print_sword:112::print_word:96 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testShort:9::print_word:104 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] ) always clobbers reg byte a -Statement [57] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_byte::b#5 print_char_cursor#146 print_byte::$0 ] ( main:2::testLong:13::print_dword:18::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_word:78::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_word:104::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_word:78::print_byte:54 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:54 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:54 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:54 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:54 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_word:104::print_byte:54 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testChar:7::print_byte:119 [ print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testChar:7::print_byte:123 [ print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testChar:7::print_sbyte:127::print_byte:135 [ print_byte::b#5 print_char_cursor#146 print_byte::$0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] -Statement [60] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#25 print_byte::$2 ] ( main:2::testLong:13::print_dword:18::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_word:78::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_word:104::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_word:78::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_word:104::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testChar:7::print_byte:119 [ print_char_cursor#25 print_byte::$2 ] main:2::testChar:7::print_byte:123 [ print_char_cursor#25 print_byte::$2 ] main:2::testChar:7::print_sbyte:127::print_byte:135 [ print_char_cursor#25 print_byte::$2 ] ) always clobbers reg byte a -Statement [65] *((byte*) print_char_cursor#92) ← (byte) print_char::ch#15 [ print_char_cursor#92 ] ( main:2::testLong:13::print_char:20 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testLong:13::print_char:24 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:52::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testInt:11::print_word:78::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testShort:9::print_word:104::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#92 ] main:2::testInt:11::print_word:78::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#92 ] main:2::testShort:9::print_word:104::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#92 ] main:2::testChar:7::print_byte:119::print_char:59 [ print_byte::b#5 print_char_cursor#92 ] main:2::testChar:7::print_byte:123::print_char:59 [ print_byte::b#5 print_char_cursor#92 ] main:2::testChar:7::print_sbyte:127::print_byte:135::print_char:59 [ print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:52::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testInt:11::print_word:78::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testShort:9::print_word:104::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_word:78::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testShort:9::print_word:104::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testChar:7::print_byte:119::print_char:62 [ print_char_cursor#92 ] main:2::testChar:7::print_byte:123::print_char:62 [ print_char_cursor#92 ] main:2::testChar:7::print_sbyte:127::print_byte:135::print_char:62 [ print_char_cursor#92 ] main:2::testInt:11::print_char:80 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_char:84 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_char:93 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_char:93 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_char:93 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_char:93 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_char:99 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_char:99 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_char:99 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_char:99 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_char:106 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testShort:9::print_char:110 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testChar:7::print_char:121 [ print_char_cursor#92 ] main:2::testChar:7::print_char:125 [ print_char_cursor#92 ] main:2::testChar:7::print_sbyte:127::print_char:133 [ print_char_cursor#92 ] ) always clobbers reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:14 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] -Statement [70] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 [ print_char_cursor#134 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testInt:11::print_str:76 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testShort:9::print_str:102 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testChar:7::print_str:117 [ print_char_cursor#134 print_str::str#5 ] ) always clobbers reg byte a reg byte y -Statement [72] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#5) [ print_char_cursor#134 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testInt:11::print_str:76 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testShort:9::print_str:102 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testChar:7::print_str:117 [ print_char_cursor#134 print_str::str#5 ] ) always clobbers reg byte a reg byte y -Statement [75] (byte*~) print_char_cursor#158 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#158 ] ( main:2::testInt:11 [ print_line_cursor#1 print_char_cursor#158 ] ) always clobbers reg byte a -Statement [91] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#25 print_sword::w#10 ] ( main:2::testInt:11::print_sword:82 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#10 ] main:2::testInt:11::print_sword:86 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#10 ] main:2::testShort:9::print_sword:108 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#10 ] main:2::testShort:9::print_sword:112 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#10 ] ) always clobbers reg byte a -Statement [95] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#25 print_word::w#0 ] ( main:2::testInt:11::print_sword:82 [ print_line_cursor#1 print_char_cursor#25 print_word::w#0 ] main:2::testInt:11::print_sword:86 [ print_line_cursor#1 print_char_cursor#25 print_word::w#0 ] main:2::testShort:9::print_sword:108 [ print_line_cursor#1 print_char_cursor#25 print_word::w#0 ] main:2::testShort:9::print_sword:112 [ print_line_cursor#1 print_char_cursor#25 print_word::w#0 ] ) always clobbers reg byte a -Statement [100] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#25 print_sword::w#0 ] ( main:2::testInt:11::print_sword:82 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#0 ] main:2::testInt:11::print_sword:86 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#0 ] main:2::testShort:9::print_sword:108 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#0 ] main:2::testShort:9::print_sword:112 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#0 ] ) always clobbers reg byte a -Statement [101] (byte*~) print_char_cursor#160 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#160 ] ( main:2::testShort:9 [ print_line_cursor#1 print_char_cursor#160 ] ) always clobbers reg byte a -Statement [139] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [141] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [15] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ print_char_cursor#159 print_line_cursor#1 ] ( main:2::testLong:13 [ print_char_cursor#159 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#25 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testInt:11::print_ln:88 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testShort:9::print_ln:114 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testChar:7::print_ln:129 [ print_line_cursor#1 print_char_cursor#25 ] ) always clobbers reg byte a -Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#25) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#25 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testInt:11::print_ln:88 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testShort:9::print_ln:114 [ print_line_cursor#1 print_char_cursor#25 ] main:2::testChar:7::print_ln:129 [ print_line_cursor#1 print_char_cursor#25 ] ) always clobbers reg byte a -Statement [36] if((signed dword) print_sdword::dw#3>=(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#25 print_sdword::dw#3 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#25 print_sdword::dw#3 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#25 print_sdword::dw#3 ] ) always clobbers reg byte a -Statement [39] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 [ print_char_cursor#25 print_sdword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#25 print_sdword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#25 print_sdword::dw#0 ] ) always clobbers reg byte a -Statement [41] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#4 [ print_char_cursor#25 print_dword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#25 print_dword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#25 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [45] (word) print_word::w#1 ← > (dword) print_dword::dw#2 [ print_dword::dw#2 print_char_cursor#143 print_word::w#1 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#143 print_word::w#1 ] main:2::testLong:13::print_sdword:22::print_dword:42 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#143 print_word::w#1 ] main:2::testLong:13::print_sdword:26::print_dword:42 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#143 print_word::w#1 ] ) always clobbers reg byte a -Statement [47] (word) print_word::w#2 ← < (dword) print_dword::dw#2 [ print_char_cursor#25 print_word::w#2 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_char_cursor#25 print_word::w#2 ] main:2::testLong:13::print_sdword:22::print_dword:42 [ print_line_cursor#1 print_char_cursor#25 print_word::w#2 ] main:2::testLong:13::print_sdword:26::print_dword:42 [ print_line_cursor#1 print_char_cursor#25 print_word::w#2 ] ) always clobbers reg byte a -Statement [51] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#142 print_byte::b#1 ] ( main:2::testLong:13::print_dword:18::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_dword:18::print_word:48 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testInt:11::print_word:78 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testInt:11::print_sword:82::print_word:96 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testInt:11::print_sword:86::print_word:96 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testShort:9::print_sword:108::print_word:96 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testShort:9::print_sword:112::print_word:96 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] main:2::testShort:9::print_word:104 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#1 ] ) always clobbers reg byte a -Statement [53] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#25 print_byte::b#2 ] ( main:2::testLong:13::print_dword:18::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_dword:18::print_word:48 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testInt:11::print_word:78 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testInt:11::print_sword:82::print_word:96 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testInt:11::print_sword:86::print_word:96 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testShort:9::print_sword:108::print_word:96 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testShort:9::print_sword:112::print_word:96 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] main:2::testShort:9::print_word:104 [ print_line_cursor#1 print_char_cursor#25 print_byte::b#2 ] ) always clobbers reg byte a -Statement [57] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_byte::b#5 print_char_cursor#146 print_byte::$0 ] ( main:2::testLong:13::print_dword:18::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_word:78::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_word:104::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_word:78::print_byte:54 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:54 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:54 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:54 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:54 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testShort:9::print_word:104::print_byte:54 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testChar:7::print_byte:119 [ print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testChar:7::print_byte:123 [ print_byte::b#5 print_char_cursor#146 print_byte::$0 ] main:2::testChar:7::print_sbyte:127::print_byte:135 [ print_byte::b#5 print_char_cursor#146 print_byte::$0 ] ) always clobbers reg byte a -Statement [60] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#25 print_byte::$2 ] ( main:2::testLong:13::print_dword:18::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_word:78::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_word:104::print_byte:52 [ print_line_cursor#1 print_word::w#5 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_word:78::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testShort:9::print_word:104::print_byte:54 [ print_line_cursor#1 print_char_cursor#25 print_byte::$2 ] main:2::testChar:7::print_byte:119 [ print_char_cursor#25 print_byte::$2 ] main:2::testChar:7::print_byte:123 [ print_char_cursor#25 print_byte::$2 ] main:2::testChar:7::print_sbyte:127::print_byte:135 [ print_char_cursor#25 print_byte::$2 ] ) always clobbers reg byte a -Statement [65] *((byte*) print_char_cursor#92) ← (byte) print_char::ch#15 [ print_char_cursor#92 ] ( main:2::testLong:13::print_char:20 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testLong:13::print_char:24 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:52::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testInt:11::print_word:78::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testShort:9::print_word:104::print_byte:52::print_char:59 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54::print_char:59 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#92 ] main:2::testInt:11::print_word:78::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#92 ] main:2::testShort:9::print_word:104::print_byte:54::print_char:59 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#92 ] main:2::testChar:7::print_byte:119::print_char:59 [ print_byte::b#5 print_char_cursor#92 ] main:2::testChar:7::print_byte:123::print_char:59 [ print_byte::b#5 print_char_cursor#92 ] main:2::testChar:7::print_sbyte:127::print_byte:135::print_char:59 [ print_byte::b#5 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:52::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:52::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:52::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testInt:11::print_word:78::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testShort:9::print_word:104::print_byte:52::print_char:62 [ print_line_cursor#1 print_word::w#5 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:46::print_byte:54::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:46::print_byte:54::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:46::print_byte:54::print_char:62 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#92 ] main:2::testLong:13::print_dword:18::print_word:48::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testLong:13::print_sdword:22::print_dword:42::print_word:48::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testLong:13::print_sdword:26::print_dword:42::print_word:48::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_word:78::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_word:96::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_word:96::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_word:96::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_word:96::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testShort:9::print_word:104::print_byte:54::print_char:62 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testChar:7::print_byte:119::print_char:62 [ print_char_cursor#92 ] main:2::testChar:7::print_byte:123::print_char:62 [ print_char_cursor#92 ] main:2::testChar:7::print_sbyte:127::print_byte:135::print_char:62 [ print_char_cursor#92 ] main:2::testInt:11::print_char:80 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_char:84 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_char:93 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_char:93 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_char:93 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_char:93 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testInt:11::print_sword:82::print_char:99 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testInt:11::print_sword:86::print_char:99 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_sword:108::print_char:99 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_sword:112::print_char:99 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#92 ] main:2::testShort:9::print_char:106 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testShort:9::print_char:110 [ print_line_cursor#1 print_char_cursor#92 ] main:2::testChar:7::print_char:121 [ print_char_cursor#92 ] main:2::testChar:7::print_char:125 [ print_char_cursor#92 ] main:2::testChar:7::print_sbyte:127::print_char:133 [ print_char_cursor#92 ] ) always clobbers reg byte y -Statement [70] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 [ print_char_cursor#134 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testInt:11::print_str:76 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testShort:9::print_str:102 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testChar:7::print_str:117 [ print_char_cursor#134 print_str::str#5 ] ) always clobbers reg byte a reg byte y -Statement [72] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#5) [ print_char_cursor#134 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testInt:11::print_str:76 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testShort:9::print_str:102 [ print_line_cursor#1 print_char_cursor#134 print_str::str#5 ] main:2::testChar:7::print_str:117 [ print_char_cursor#134 print_str::str#5 ] ) always clobbers reg byte a reg byte y -Statement [75] (byte*~) print_char_cursor#158 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#158 ] ( main:2::testInt:11 [ print_line_cursor#1 print_char_cursor#158 ] ) always clobbers reg byte a -Statement [91] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#25 print_sword::w#10 ] ( main:2::testInt:11::print_sword:82 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#10 ] main:2::testInt:11::print_sword:86 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#10 ] main:2::testShort:9::print_sword:108 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#10 ] main:2::testShort:9::print_sword:112 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#10 ] ) always clobbers reg byte a -Statement [95] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#25 print_word::w#0 ] ( main:2::testInt:11::print_sword:82 [ print_line_cursor#1 print_char_cursor#25 print_word::w#0 ] main:2::testInt:11::print_sword:86 [ print_line_cursor#1 print_char_cursor#25 print_word::w#0 ] main:2::testShort:9::print_sword:108 [ print_line_cursor#1 print_char_cursor#25 print_word::w#0 ] main:2::testShort:9::print_sword:112 [ print_line_cursor#1 print_char_cursor#25 print_word::w#0 ] ) always clobbers reg byte a -Statement [100] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#25 print_sword::w#0 ] ( main:2::testInt:11::print_sword:82 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#0 ] main:2::testInt:11::print_sword:86 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#0 ] main:2::testShort:9::print_sword:108 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#0 ] main:2::testShort:9::print_sword:112 [ print_line_cursor#1 print_char_cursor#25 print_sword::w#0 ] ) always clobbers reg byte a -Statement [101] (byte*~) print_char_cursor#160 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#160 ] ( main:2::testShort:9 [ print_line_cursor#1 print_char_cursor#160 ] ) always clobbers reg byte a -Statement [139] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [141] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [15] (byte*~) print_char_cursor#162 ← (byte*) print_line_cursor#1 [ print_char_cursor#162 print_line_cursor#1 ] ( main:2::testLong:13 [ print_char_cursor#162 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#26 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testInt:11::print_ln:90 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testShort:9::print_ln:116 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testChar:7::print_ln:131 [ print_line_cursor#1 print_char_cursor#26 ] ) always clobbers reg byte a +Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#26 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testInt:11::print_ln:90 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testShort:9::print_ln:116 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testChar:7::print_ln:131 [ print_line_cursor#1 print_char_cursor#26 ] ) always clobbers reg byte a +Statement [36] if((signed dword) print_sdword::dw#3<(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#26 print_sdword::dw#3 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#3 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#3 ] ) always clobbers reg byte a +Statement [40] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 [ print_char_cursor#26 print_dword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_dword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_dword::dw#0 ] ) always clobbers reg byte a +Statement [45] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 [ print_char_cursor#26 print_sdword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#0 ] ) always clobbers reg byte a +Statement [47] *((byte*) print_char_cursor#94) ← (byte) print_char::ch#16 [ print_char_cursor#94 ] ( main:2::testLong:13::print_char:20 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_char:24 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_char:44 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_char:44 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testChar:7::print_byte:121::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] main:2::testChar:7::print_byte:125::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] main:2::testChar:7::print_sbyte:129::print_byte:137::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testChar:7::print_byte:121::print_char:68 [ print_char_cursor#94 ] main:2::testChar:7::print_byte:125::print_char:68 [ print_char_cursor#94 ] main:2::testChar:7::print_sbyte:129::print_byte:137::print_char:68 [ print_char_cursor#94 ] main:2::testInt:11::print_char:82 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_char:86 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_char:108 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_char:112 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testChar:7::print_char:123 [ print_char_cursor#94 ] main:2::testChar:7::print_char:127 [ print_char_cursor#94 ] main:2::testChar:7::print_sbyte:129::print_char:135 [ print_char_cursor#94 ] ) always clobbers reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:17 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] +Statement [51] (word) print_word::w#1 ← > (dword) print_dword::dw#2 [ print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] main:2::testLong:13::print_sdword:22::print_dword:41 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] main:2::testLong:13::print_sdword:26::print_dword:41 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] ) always clobbers reg byte a +Statement [53] (word) print_word::w#2 ← < (dword) print_dword::dw#2 [ print_char_cursor#26 print_word::w#2 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] main:2::testLong:13::print_sdword:22::print_dword:41 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] main:2::testLong:13::print_sdword:26::print_dword:41 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] ) always clobbers reg byte a +Statement [57] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#144 print_byte::b#1 ] ( main:2::testLong:13::print_dword:18::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_dword:18::print_word:54 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testInt:11::print_word:80 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testInt:11::print_sword:84::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testInt:11::print_sword:88::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testShort:9::print_sword:110::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testShort:9::print_sword:114::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testShort:9::print_word:106 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] ) always clobbers reg byte a +Statement [59] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#26 print_byte::b#2 ] ( main:2::testLong:13::print_dword:18::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_dword:18::print_word:54 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testInt:11::print_word:80 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testInt:11::print_sword:84::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testInt:11::print_sword:88::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testShort:9::print_sword:110::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testShort:9::print_sword:114::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testShort:9::print_word:106 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] ) always clobbers reg byte a +Statement [63] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] ( main:2::testLong:13::print_dword:18::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_word:80::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_word:106::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_word:80::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_word:106::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testChar:7::print_byte:121 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testChar:7::print_byte:125 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testChar:7::print_sbyte:129::print_byte:137 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:17 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] +Statement [66] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#26 print_byte::$2 ] ( main:2::testLong:13::print_dword:18::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_word:80::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_word:106::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_word:80::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_word:106::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testChar:7::print_byte:121 [ print_char_cursor#26 print_byte::$2 ] main:2::testChar:7::print_byte:125 [ print_char_cursor#26 print_byte::$2 ] main:2::testChar:7::print_sbyte:129::print_byte:137 [ print_char_cursor#26 print_byte::$2 ] ) always clobbers reg byte a +Statement [72] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 [ print_char_cursor#136 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testInt:11::print_str:78 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testShort:9::print_str:104 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testChar:7::print_str:119 [ print_char_cursor#136 print_str::str#5 ] ) always clobbers reg byte a reg byte y +Statement [74] *((byte*) print_char_cursor#136) ← *((byte*) print_str::str#5) [ print_char_cursor#136 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testInt:11::print_str:78 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testShort:9::print_str:104 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testChar:7::print_str:119 [ print_char_cursor#136 print_str::str#5 ] ) always clobbers reg byte a reg byte y +Statement [77] (byte*~) print_char_cursor#161 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#161 ] ( main:2::testInt:11 [ print_line_cursor#1 print_char_cursor#161 ] ) always clobbers reg byte a +Statement [93] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#26 print_sword::w#10 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] ) always clobbers reg byte a +Statement [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#26 print_word::w#0 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] ) always clobbers reg byte a +Statement [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#26 print_sword::w#0 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] ) always clobbers reg byte a +Statement [103] (byte*~) print_char_cursor#163 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#163 ] ( main:2::testShort:9 [ print_line_cursor#1 print_char_cursor#163 ] ) always clobbers reg byte a +Statement [141] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [143] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [15] (byte*~) print_char_cursor#162 ← (byte*) print_line_cursor#1 [ print_char_cursor#162 print_line_cursor#1 ] ( main:2::testLong:13 [ print_char_cursor#162 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [32] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte) $28 [ print_line_cursor#1 print_char_cursor#26 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testInt:11::print_ln:90 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testShort:9::print_ln:116 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testChar:7::print_ln:131 [ print_line_cursor#1 print_char_cursor#26 ] ) always clobbers reg byte a +Statement [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#26 ] ( main:2::testLong:13::print_ln:28 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testInt:11::print_ln:90 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testShort:9::print_ln:116 [ print_line_cursor#1 print_char_cursor#26 ] main:2::testChar:7::print_ln:131 [ print_line_cursor#1 print_char_cursor#26 ] ) always clobbers reg byte a +Statement [36] if((signed dword) print_sdword::dw#3<(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#26 print_sdword::dw#3 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#3 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#3 ] ) always clobbers reg byte a +Statement [40] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 [ print_char_cursor#26 print_dword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_dword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_dword::dw#0 ] ) always clobbers reg byte a +Statement [45] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 [ print_char_cursor#26 print_sdword::dw#0 ] ( main:2::testLong:13::print_sdword:22 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#0 ] main:2::testLong:13::print_sdword:26 [ print_line_cursor#1 print_char_cursor#26 print_sdword::dw#0 ] ) always clobbers reg byte a +Statement [47] *((byte*) print_char_cursor#94) ← (byte) print_char::ch#16 [ print_char_cursor#94 ] ( main:2::testLong:13::print_char:20 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_char:24 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_char:38 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_char:44 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_char:44 [ print_line_cursor#1 print_sdword::dw#3 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:58::print_char:65 [ print_line_cursor#1 print_word::w#5 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60::print_char:65 [ print_line_cursor#1 print_dword::dw#2 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:60::print_char:65 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#94 ] main:2::testChar:7::print_byte:121::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] main:2::testChar:7::print_byte:125::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] main:2::testChar:7::print_sbyte:129::print_byte:137::print_char:65 [ print_byte::b#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:58::print_char:68 [ print_line_cursor#1 print_word::w#5 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60::print_char:68 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#94 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_word:80::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_word:106::print_byte:60::print_char:68 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testChar:7::print_byte:121::print_char:68 [ print_char_cursor#94 ] main:2::testChar:7::print_byte:125::print_char:68 [ print_char_cursor#94 ] main:2::testChar:7::print_sbyte:129::print_byte:137::print_char:68 [ print_char_cursor#94 ] main:2::testInt:11::print_char:82 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_char:86 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_char:95 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testInt:11::print_sword:84::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testInt:11::print_sword:88::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:110::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_sword:114::print_char:101 [ print_line_cursor#1 print_sword::w#10 print_char_cursor#94 ] main:2::testShort:9::print_char:108 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testShort:9::print_char:112 [ print_line_cursor#1 print_char_cursor#94 ] main:2::testChar:7::print_char:123 [ print_char_cursor#94 ] main:2::testChar:7::print_char:127 [ print_char_cursor#94 ] main:2::testChar:7::print_sbyte:129::print_char:135 [ print_char_cursor#94 ] ) always clobbers reg byte y +Statement [51] (word) print_word::w#1 ← > (dword) print_dword::dw#2 [ print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] main:2::testLong:13::print_sdword:22::print_dword:41 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] main:2::testLong:13::print_sdword:26::print_dword:41 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#145 print_word::w#1 ] ) always clobbers reg byte a +Statement [53] (word) print_word::w#2 ← < (dword) print_dword::dw#2 [ print_char_cursor#26 print_word::w#2 ] ( main:2::testLong:13::print_dword:18 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] main:2::testLong:13::print_sdword:22::print_dword:41 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] main:2::testLong:13::print_sdword:26::print_dword:41 [ print_line_cursor#1 print_char_cursor#26 print_word::w#2 ] ) always clobbers reg byte a +Statement [57] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#144 print_byte::b#1 ] ( main:2::testLong:13::print_dword:18::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_dword:18::print_word:54 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testInt:11::print_word:80 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testInt:11::print_sword:84::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testInt:11::print_sword:88::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testShort:9::print_sword:110::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testShort:9::print_sword:114::print_word:98 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] main:2::testShort:9::print_word:106 [ print_line_cursor#1 print_word::w#5 print_char_cursor#144 print_byte::b#1 ] ) always clobbers reg byte a +Statement [59] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#26 print_byte::b#2 ] ( main:2::testLong:13::print_dword:18::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_dword:18::print_word:54 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testInt:11::print_word:80 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testInt:11::print_sword:84::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testInt:11::print_sword:88::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testShort:9::print_sword:110::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testShort:9::print_sword:114::print_word:98 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] main:2::testShort:9::print_word:106 [ print_line_cursor#1 print_char_cursor#26 print_byte::b#2 ] ) always clobbers reg byte a +Statement [63] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] ( main:2::testLong:13::print_dword:18::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_word:80::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_word:106::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_word:80::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testShort:9::print_word:106::print_byte:60 [ print_line_cursor#1 print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testChar:7::print_byte:121 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testChar:7::print_byte:125 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] main:2::testChar:7::print_sbyte:129::print_byte:137 [ print_char_cursor#149 print_byte::b#5 print_byte::$0 ] ) always clobbers reg byte a +Statement [66] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f [ print_char_cursor#26 print_byte::$2 ] ( main:2::testLong:13::print_dword:18::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:58 [ print_line_cursor#1 print_dword::dw#2 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_word:80::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_word:106::print_byte:58 [ print_line_cursor#1 print_word::w#5 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:52::print_byte:60 [ print_line_cursor#1 print_dword::dw#2 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_dword:18::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:22::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testLong:13::print_sdword:26::print_dword:41::print_word:54::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_word:80::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:84::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testInt:11::print_sword:88::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:110::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_sword:114::print_word:98::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testShort:9::print_word:106::print_byte:60 [ print_line_cursor#1 print_char_cursor#26 print_byte::$2 ] main:2::testChar:7::print_byte:121 [ print_char_cursor#26 print_byte::$2 ] main:2::testChar:7::print_byte:125 [ print_char_cursor#26 print_byte::$2 ] main:2::testChar:7::print_sbyte:129::print_byte:137 [ print_char_cursor#26 print_byte::$2 ] ) always clobbers reg byte a +Statement [72] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 [ print_char_cursor#136 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testInt:11::print_str:78 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testShort:9::print_str:104 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testChar:7::print_str:119 [ print_char_cursor#136 print_str::str#5 ] ) always clobbers reg byte a reg byte y +Statement [74] *((byte*) print_char_cursor#136) ← *((byte*) print_str::str#5) [ print_char_cursor#136 print_str::str#5 ] ( main:2::testLong:13::print_str:16 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testInt:11::print_str:78 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testShort:9::print_str:104 [ print_line_cursor#1 print_char_cursor#136 print_str::str#5 ] main:2::testChar:7::print_str:119 [ print_char_cursor#136 print_str::str#5 ] ) always clobbers reg byte a reg byte y +Statement [77] (byte*~) print_char_cursor#161 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#161 ] ( main:2::testInt:11 [ print_line_cursor#1 print_char_cursor#161 ] ) always clobbers reg byte a +Statement [93] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#26 print_sword::w#10 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#10 ] ) always clobbers reg byte a +Statement [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 [ print_char_cursor#26 print_word::w#0 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_word::w#0 ] ) always clobbers reg byte a +Statement [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 [ print_char_cursor#26 print_sword::w#0 ] ( main:2::testInt:11::print_sword:84 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] main:2::testInt:11::print_sword:88 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] main:2::testShort:9::print_sword:110 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] main:2::testShort:9::print_sword:114 [ print_line_cursor#1 print_char_cursor#26 print_sword::w#0 ] ) always clobbers reg byte a +Statement [103] (byte*~) print_char_cursor#163 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#163 ] ( main:2::testShort:9 [ print_line_cursor#1 print_char_cursor#163 ] ) always clobbers reg byte a +Statement [141] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [143] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Potential registers zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] : zp ZP_WORD:2 , -Potential registers zp ZP_DWORD:4 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 ] : zp ZP_DWORD:4 , -Potential registers zp ZP_DWORD:8 [ print_dword::dw#2 print_dword::dw#0 ] : zp ZP_DWORD:8 , -Potential registers zp ZP_WORD:12 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] : zp ZP_WORD:12 , -Potential registers zp ZP_BYTE:14 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] : zp ZP_BYTE:14 , reg byte x , -Potential registers zp ZP_BYTE:15 [ print_char::ch#15 print_char::ch#5 print_char::ch#6 ] : zp ZP_BYTE:15 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:16 [ print_char_cursor#92 print_char_cursor#146 print_char_cursor#142 print_char_cursor#143 print_char_cursor#25 print_char_cursor#134 print_char_cursor#153 print_char_cursor#158 print_char_cursor#159 print_char_cursor#160 print_char_cursor#1 ] : zp ZP_WORD:16 , +Potential registers zp ZP_DWORD:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] : zp ZP_DWORD:4 , +Potential registers zp ZP_BYTE:8 [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_DWORD:9 [ print_dword::dw#2 print_dword::dw#0 ] : zp ZP_DWORD:9 , +Potential registers zp ZP_WORD:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] : zp ZP_WORD:13 , +Potential registers zp ZP_WORD:15 [ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#161 print_char_cursor#162 print_char_cursor#163 print_char_cursor#1 ] : zp ZP_WORD:15 , +Potential registers zp ZP_BYTE:17 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] : zp ZP_BYTE:17 , reg byte x , Potential registers zp ZP_WORD:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] : zp ZP_WORD:18 , Potential registers zp ZP_WORD:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] : zp ZP_WORD:20 , Potential registers zp ZP_WORD:22 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:22 , @@ -3095,15 +3134,15 @@ Potential registers zp ZP_BYTE:24 [ print_byte::$0 ] : zp ZP_BYTE:24 , reg byte Potential registers zp ZP_BYTE:25 [ print_byte::$2 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 64.18: zp ZP_WORD:16 [ print_char_cursor#92 print_char_cursor#146 print_char_cursor#142 print_char_cursor#143 print_char_cursor#25 print_char_cursor#134 print_char_cursor#153 print_char_cursor#158 print_char_cursor#159 print_char_cursor#160 print_char_cursor#1 ] 32.83: zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] +Uplift Scope [] 65.19: zp ZP_WORD:15 [ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#161 print_char_cursor#162 print_char_cursor#163 print_char_cursor#1 ] 32.83: zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] Uplift Scope [print_str] 35.5: zp ZP_WORD:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] Uplift Scope [print_cls] 33: zp ZP_WORD:22 [ print_cls::sc#2 print_cls::sc#1 ] -Uplift Scope [print_byte] 10: zp ZP_BYTE:14 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] 4: zp ZP_BYTE:24 [ print_byte::$0 ] 4: zp ZP_BYTE:25 [ print_byte::$2 ] -Uplift Scope [print_word] 15.33: zp ZP_WORD:12 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] -Uplift Scope [print_char] 14: zp ZP_BYTE:15 [ print_char::ch#15 print_char::ch#5 print_char::ch#6 ] -Uplift Scope [print_sdword] 9.5: zp ZP_DWORD:4 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 ] +Uplift Scope [print_byte] 10: zp ZP_BYTE:17 [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] 4: zp ZP_BYTE:24 [ print_byte::$0 ] 4: zp ZP_BYTE:25 [ print_byte::$2 ] +Uplift Scope [print_word] 15.33: zp ZP_WORD:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] +Uplift Scope [print_char] 14: zp ZP_BYTE:8 [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ] Uplift Scope [print_sword] 9: zp ZP_WORD:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] -Uplift Scope [print_dword] 6: zp ZP_DWORD:8 [ print_dword::dw#2 print_dword::dw#0 ] +Uplift Scope [print_sdword] 9: zp ZP_DWORD:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] +Uplift Scope [print_dword] 6: zp ZP_DWORD:9 [ print_dword::dw#2 print_dword::dw#0 ] Uplift Scope [print_ln] Uplift Scope [print_sbyte] Uplift Scope [main] @@ -3112,26 +3151,26 @@ Uplift Scope [testShort] Uplift Scope [testInt] Uplift Scope [testLong] -Uplifting [] best 2645 combination zp ZP_WORD:16 [ print_char_cursor#92 print_char_cursor#146 print_char_cursor#142 print_char_cursor#143 print_char_cursor#25 print_char_cursor#134 print_char_cursor#153 print_char_cursor#158 print_char_cursor#159 print_char_cursor#160 print_char_cursor#1 ] zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] -Uplifting [print_str] best 2645 combination zp ZP_WORD:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] -Uplifting [print_cls] best 2645 combination zp ZP_WORD:22 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_byte] best 2622 combination reg byte x [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_word] best 2622 combination zp ZP_WORD:12 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] -Uplifting [print_char] best 2577 combination reg byte a [ print_char::ch#15 print_char::ch#5 print_char::ch#6 ] -Uplifting [print_sdword] best 2577 combination zp ZP_DWORD:4 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 ] -Uplifting [print_sword] best 2577 combination zp ZP_WORD:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] -Uplifting [print_dword] best 2577 combination zp ZP_DWORD:8 [ print_dword::dw#2 print_dword::dw#0 ] -Uplifting [print_ln] best 2577 combination -Uplifting [print_sbyte] best 2577 combination -Uplifting [main] best 2577 combination -Uplifting [testChar] best 2577 combination -Uplifting [testShort] best 2577 combination -Uplifting [testInt] best 2577 combination -Uplifting [testLong] best 2577 combination -Coalescing zero page register with common assignment [ zp ZP_DWORD:4 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 ] ] with [ zp ZP_DWORD:8 [ print_dword::dw#2 print_dword::dw#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:12 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] ] with [ zp ZP_WORD:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] ] - score: 1 -Allocated (was zp ZP_WORD:12) zp ZP_WORD:8 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#7 print_sword::w#0 print_sword::w#10 ] -Allocated (was zp ZP_WORD:16) zp ZP_WORD:10 [ print_char_cursor#92 print_char_cursor#146 print_char_cursor#142 print_char_cursor#143 print_char_cursor#25 print_char_cursor#134 print_char_cursor#153 print_char_cursor#158 print_char_cursor#159 print_char_cursor#160 print_char_cursor#1 ] +Uplifting [] best 2662 combination zp ZP_WORD:15 [ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#161 print_char_cursor#162 print_char_cursor#163 print_char_cursor#1 ] zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] +Uplifting [print_str] best 2662 combination zp ZP_WORD:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ] +Uplifting [print_cls] best 2662 combination zp ZP_WORD:22 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_byte] best 2639 combination reg byte x [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] +Uplifting [print_word] best 2639 combination zp ZP_WORD:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] +Uplifting [print_char] best 2591 combination reg byte a [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ] +Uplifting [print_sword] best 2591 combination zp ZP_WORD:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] +Uplifting [print_sdword] best 2591 combination zp ZP_DWORD:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] +Uplifting [print_dword] best 2591 combination zp ZP_DWORD:9 [ print_dword::dw#2 print_dword::dw#0 ] +Uplifting [print_ln] best 2591 combination +Uplifting [print_sbyte] best 2591 combination +Uplifting [main] best 2591 combination +Uplifting [testChar] best 2591 combination +Uplifting [testShort] best 2591 combination +Uplifting [testInt] best 2591 combination +Uplifting [testLong] best 2591 combination +Coalescing zero page register with common assignment [ zp ZP_DWORD:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 ] ] with [ zp ZP_DWORD:9 [ print_dword::dw#2 print_dword::dw#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:13 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 ] ] with [ zp ZP_WORD:20 [ print_sword::w#7 print_sword::w#0 print_sword::w#10 ] ] - score: 1 +Allocated (was zp ZP_WORD:13) zp ZP_WORD:8 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#7 print_sword::w#0 print_sword::w#10 ] +Allocated (was zp ZP_WORD:15) zp ZP_WORD:10 [ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#161 print_char_cursor#162 print_char_cursor#163 print_char_cursor#1 ] Allocated (was zp ZP_WORD:18) zp ZP_WORD:12 [ print_str::str#5 print_str::str#7 print_str::str#0 ] Allocated (was zp ZP_WORD:22) zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] @@ -3164,7 +3203,7 @@ bend: // main main: { // [5] call print_cls - // [137] phi from main to print_cls [phi:main->print_cls] + // [139] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls // [6] phi from main to main::@1 [phi:main->main::@1] @@ -3173,7 +3212,7 @@ main: { // main::@1 b1: // [7] call testChar - // [116] phi from main::@1 to testChar [phi:main::@1->testChar] + // [118] phi from main::@1 to testChar [phi:main::@1->testChar] testChar_from_b1: jsr testChar // [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -3208,16 +3247,16 @@ testLong: { .const u = $222e0 .const n = -$222e0 .const s = -$222e0 - // [15] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [15] (byte*~) print_char_cursor#162 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 // [16] call print_str - // [68] phi from testLong to print_str [phi:testLong->print_str] + // [70] phi from testLong to print_str [phi:testLong->print_str] print_str_from_testLong: - // [68] phi (byte*) print_char_cursor#153 = (byte*~) print_char_cursor#159 [phi:testLong->print_str#0] -- register_copy - // [68] phi (byte*) print_str::str#7 = (const string) testLong::str [phi:testLong->print_str#1] -- pbuz1=pbuc1 + // [70] phi (byte*) print_char_cursor#156 = (byte*~) print_char_cursor#162 [phi:testLong->print_str#0] -- register_copy + // [70] phi (byte*) print_str::str#7 = (const string) testLong::str [phi:testLong->print_str#1] -- pbuz1=pbuc1 lda #str @@ -3229,10 +3268,10 @@ testLong: { // testLong::@1 b1: // [18] call print_dword - // [44] phi from testLong::@1 to print_dword [phi:testLong::@1->print_dword] + // [50] phi from testLong::@1 to print_dword [phi:testLong::@1->print_dword] print_dword_from_b1: - // [44] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:testLong::@1->print_dword#0] -- register_copy - // [44] phi (dword) print_dword::dw#2 = (const dword) testLong::u#0 [phi:testLong::@1->print_dword#1] -- vduz1=vduc1 + // [50] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#136 [phi:testLong::@1->print_dword#0] -- register_copy + // [50] phi (dword) print_dword::dw#2 = (const dword) testLong::u#0 [phi:testLong::@1->print_dword#1] -- vduz1=vduc1 lda #u @@ -3248,10 +3287,10 @@ testLong: { // testLong::@2 b2: // [20] call print_char - // [64] phi from testLong::@2 to print_char [phi:testLong::@2->print_char] + // [46] phi from testLong::@2 to print_char [phi:testLong::@2->print_char] print_char_from_b2: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testLong::@2->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testLong::@2->print_char#1] -- vbuaa=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testLong::@2->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testLong::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char // [21] phi from testLong::@2 to testLong::@3 [phi:testLong::@2->testLong::@3] @@ -3278,10 +3317,10 @@ testLong: { // testLong::@4 b4: // [24] call print_char - // [64] phi from testLong::@4 to print_char [phi:testLong::@4->print_char] + // [46] phi from testLong::@4 to print_char [phi:testLong::@4->print_char] print_char_from_b4: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testLong::@4->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testLong::@4->print_char#1] -- vbuaa=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testLong::@4->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testLong::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char // [25] phi from testLong::@4 to testLong::@5 [phi:testLong::@4->testLong::@5] @@ -3337,7 +3376,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - // [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#25) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + // [33] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#26) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -3357,25 +3396,56 @@ print_ln: { // print_sdword(signed dword zeropage(4) dw) print_sdword: { .label dw = 4 - // [36] if((signed dword) print_sdword::dw#3>=(signed byte) 0) goto print_sdword::@1 -- vdsz1_ge_0_then_la1 + // [36] if((signed dword) print_sdword::dw#3<(signed byte) 0) goto print_sdword::@1 -- vdsz1_lt_0_then_la1 lda dw+3 - bpl b1_from_print_sdword - // [37] phi from print_sdword to print_sdword::@2 [phi:print_sdword->print_sdword::@2] - b2_from_print_sdword: - jmp b2 - // print_sdword::@2 - b2: - // [38] call print_char - // [64] phi from print_sdword::@2 to print_char [phi:print_sdword::@2->print_char] - print_char_from_b2: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sdword::@2->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuaa=vbuc1 - lda #'-' - jsr print_char + bmi b1_from_print_sdword + // [37] phi from print_sdword to print_sdword::@3 [phi:print_sdword->print_sdword::@3] + b3_from_print_sdword: jmp b3 // print_sdword::@3 b3: - // [39] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 -- vdsz1=_neg_vdsz1 + // [38] call print_char + // [46] phi from print_sdword::@3 to print_char [phi:print_sdword::@3->print_char] + print_char_from_b3: + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sdword::@3->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:print_sdword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + // [39] phi from print_sdword::@3 print_sdword::@4 to print_sdword::@2 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2] + b2_from_b3: + b2_from_b4: + // [39] phi (signed dword) print_sdword::dw#5 = (signed dword) print_sdword::dw#3 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2#0] -- register_copy + jmp b2 + // print_sdword::@2 + b2: + // [40] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 + // [41] call print_dword + // [50] phi from print_sdword::@2 to print_dword [phi:print_sdword::@2->print_dword] + print_dword_from_b2: + // [50] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#26 [phi:print_sdword::@2->print_dword#0] -- register_copy + // [50] phi (dword) print_dword::dw#2 = (dword) print_dword::dw#0 [phi:print_sdword::@2->print_dword#1] -- register_copy + jsr print_dword + jmp breturn + // print_sdword::@return + breturn: + // [42] return + rts + // [43] phi from print_sdword to print_sdword::@1 [phi:print_sdword->print_sdword::@1] + b1_from_print_sdword: + jmp b1 + // print_sdword::@1 + b1: + // [44] call print_char + // [46] phi from print_sdword::@1 to print_char [phi:print_sdword::@1->print_char] + print_char_from_b1: + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sdword::@1->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) '-' [phi:print_sdword::@1->print_char#1] -- vbuaa=vbuc1 + lda #'-' + jsr print_char + jmp b4 + // print_sdword::@4 + b4: + // [45] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 -- vdsz1=_neg_vdsz1 sec lda dw eor #$ff @@ -3393,141 +3463,16 @@ print_sdword: { eor #$ff adc #0 sta dw+3 - // [40] phi from print_sdword print_sdword::@3 to print_sdword::@1 [phi:print_sdword/print_sdword::@3->print_sdword::@1] - b1_from_print_sdword: - b1_from_b3: - // [40] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#3 [phi:print_sdword/print_sdword::@3->print_sdword::@1#0] -- register_copy - jmp b1 - // print_sdword::@1 - b1: - // [41] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#4 - // [42] call print_dword - // [44] phi from print_sdword::@1 to print_dword [phi:print_sdword::@1->print_dword] - print_dword_from_b1: - // [44] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#25 [phi:print_sdword::@1->print_dword#0] -- register_copy - // [44] phi (dword) print_dword::dw#2 = (dword) print_dword::dw#0 [phi:print_sdword::@1->print_dword#1] -- register_copy - jsr print_dword - jmp breturn - // print_sdword::@return - breturn: - // [43] return - rts -} - // print_dword -// Print a dword as HEX -// print_dword(dword zeropage(4) dw) -print_dword: { - .label dw = 4 - // [45] (word) print_word::w#1 ← > (dword) print_dword::dw#2 -- vwuz1=_hi_vduz2 - lda dw+2 - sta print_word.w - lda dw+3 - sta print_word.w+1 - // [46] call print_word - // [50] phi from print_dword to print_word [phi:print_dword->print_word] - print_word_from_print_dword: - // [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#143 [phi:print_dword->print_word#0] -- register_copy - // [50] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy - jsr print_word - jmp b1 - // print_dword::@1 - b1: - // [47] (word) print_word::w#2 ← < (dword) print_dword::dw#2 -- vwuz1=_lo_vduz2 - lda dw - sta print_word.w - lda dw+1 - sta print_word.w+1 - // [48] call print_word - // [50] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] - print_word_from_b1: - // [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#25 [phi:print_dword::@1->print_word#0] -- register_copy - // [50] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy - jsr print_word - jmp breturn - // print_dword::@return - breturn: - // [49] return - rts -} - // print_word -// Print a word as HEX -// print_word(word zeropage(8) w) -print_word: { - .label w = 8 - // [51] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 - lda w+1 - tax - // [52] call print_byte - // [56] phi from print_word to print_byte [phi:print_word->print_byte] - print_byte_from_print_word: - // [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#142 [phi:print_word->print_byte#0] -- register_copy - // [56] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy - jsr print_byte - jmp b1 - // print_word::@1 - b1: - // [53] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuxx=_lo_vwuz1 - lda w - tax - // [54] call print_byte - // [56] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - print_byte_from_b1: - // [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#25 [phi:print_word::@1->print_byte#0] -- register_copy - // [56] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy - jsr print_byte - jmp breturn - // print_word::@return - breturn: - // [55] return - rts -} - // print_byte -// Print a byte as HEX -// print_byte(byte register(X) b) -print_byte: { - // [57] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 -- vbuaa=vbuxx_ror_4 - txa - lsr - lsr - lsr - lsr - // [58] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y - // [59] call print_char - // [64] phi from print_byte to print_char [phi:print_byte->print_char] - print_char_from_print_byte: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#146 [phi:print_byte->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) print_char::ch#5 [phi:print_byte->print_char#1] -- register_copy - jsr print_char - jmp b1 - // print_byte::@1 - b1: - // [60] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 - lda #$f - axs #0 - // [61] (byte) print_char::ch#6 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx - lda print_hextab,x - // [62] call print_char - // [64] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - print_char_from_b1: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_byte::@1->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) print_char::ch#6 [phi:print_byte::@1->print_char#1] -- register_copy - jsr print_char - jmp breturn - // print_byte::@return - breturn: - // [63] return - rts + jmp b2_from_b4 } // print_char // Print a single char // print_char(byte register(A) ch) print_char: { - // [65] *((byte*) print_char_cursor#92) ← (byte) print_char::ch#15 -- _deref_pbuz1=vbuaa + // [47] *((byte*) print_char_cursor#94) ← (byte) print_char::ch#16 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - // [66] (byte*) print_char_cursor#25 ← ++ (byte*) print_char_cursor#92 -- pbuz1=_inc_pbuz1 + // [48] (byte*) print_char_cursor#26 ← ++ (byte*) print_char_cursor#94 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -3535,7 +3480,114 @@ print_char: { jmp breturn // print_char::@return breturn: - // [67] return + // [49] return + rts +} + // print_dword +// Print a dword as HEX +// print_dword(dword zeropage(4) dw) +print_dword: { + .label dw = 4 + // [51] (word) print_word::w#1 ← > (dword) print_dword::dw#2 -- vwuz1=_hi_vduz2 + lda dw+2 + sta print_word.w + lda dw+3 + sta print_word.w+1 + // [52] call print_word + // [56] phi from print_dword to print_word [phi:print_dword->print_word] + print_word_from_print_dword: + // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#145 [phi:print_dword->print_word#0] -- register_copy + // [56] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy + jsr print_word + jmp b1 + // print_dword::@1 + b1: + // [53] (word) print_word::w#2 ← < (dword) print_dword::dw#2 -- vwuz1=_lo_vduz2 + lda dw + sta print_word.w + lda dw+1 + sta print_word.w+1 + // [54] call print_word + // [56] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + print_word_from_b1: + // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#26 [phi:print_dword::@1->print_word#0] -- register_copy + // [56] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy + jsr print_word + jmp breturn + // print_dword::@return + breturn: + // [55] return + rts +} + // print_word +// Print a word as HEX +// print_word(word zeropage(8) w) +print_word: { + .label w = 8 + // [57] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 + lda w+1 + tax + // [58] call print_byte + // [62] phi from print_word to print_byte [phi:print_word->print_byte] + print_byte_from_print_word: + // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#144 [phi:print_word->print_byte#0] -- register_copy + // [62] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + jsr print_byte + jmp b1 + // print_word::@1 + b1: + // [59] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuxx=_lo_vwuz1 + lda w + tax + // [60] call print_byte + // [62] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + print_byte_from_b1: + // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#26 [phi:print_word::@1->print_byte#0] -- register_copy + // [62] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + jsr print_byte + jmp breturn + // print_word::@return + breturn: + // [61] return + rts +} + // print_byte +// Print a byte as HEX +// print_byte(byte register(X) b) +print_byte: { + // [63] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa + lsr + lsr + lsr + lsr + // [64] (byte) print_char::ch#6 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + tay + lda print_hextab,y + // [65] call print_char + // [46] phi from print_byte to print_char [phi:print_byte->print_char] + print_char_from_print_byte: + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#149 [phi:print_byte->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) print_char::ch#6 [phi:print_byte->print_char#1] -- register_copy + jsr print_char + jmp b1 + // print_byte::@1 + b1: + // [66] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 + lda #$f + axs #0 + // [67] (byte) print_char::ch#7 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x + // [68] call print_char + // [46] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + print_char_from_b1: + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_byte::@1->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) print_char::ch#7 [phi:print_byte::@1->print_char#1] -- register_copy + jsr print_char + jmp breturn + // print_byte::@return + breturn: + // [69] return rts } // print_str @@ -3543,15 +3595,15 @@ print_char: { // print_str(byte* zeropage($c) str) print_str: { .label str = $c - // [69] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + // [71] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - // [69] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#153 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - // [69] phi (byte*) print_str::str#5 = (byte*) print_str::str#7 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + // [71] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#156 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + // [71] phi (byte*) print_str::str#5 = (byte*) print_str::str#7 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 // print_str::@1 b1: - // [70] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + // [72] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' @@ -3559,21 +3611,21 @@ print_str: { jmp breturn // print_str::@return breturn: - // [71] return + // [73] return rts // print_str::@2 b2: - // [72] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#5) -- _deref_pbuz1=_deref_pbuz2 + // [74] *((byte*) print_char_cursor#136) ← *((byte*) print_str::str#5) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - // [73] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134 -- pbuz1=_inc_pbuz1 + // [75] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#136 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - // [74] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#5 -- pbuz1=_inc_pbuz1 + // [76] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#5 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 @@ -3585,94 +3637,94 @@ testInt: { .const u = $578 .const n = -$578 .const s = -$578 - // [75] (byte*~) print_char_cursor#158 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [77] (byte*~) print_char_cursor#161 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - // [76] call print_str - // [68] phi from testInt to print_str [phi:testInt->print_str] + // [78] call print_str + // [70] phi from testInt to print_str [phi:testInt->print_str] print_str_from_testInt: - // [68] phi (byte*) print_char_cursor#153 = (byte*~) print_char_cursor#158 [phi:testInt->print_str#0] -- register_copy - // [68] phi (byte*) print_str::str#7 = (const string) testInt::str [phi:testInt->print_str#1] -- pbuz1=pbuc1 + // [70] phi (byte*) print_char_cursor#156 = (byte*~) print_char_cursor#161 [phi:testInt->print_str#0] -- register_copy + // [70] phi (byte*) print_str::str#7 = (const string) testInt::str [phi:testInt->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - // [77] phi from testInt to testInt::@1 [phi:testInt->testInt::@1] + // [79] phi from testInt to testInt::@1 [phi:testInt->testInt::@1] b1_from_testInt: jmp b1 // testInt::@1 b1: - // [78] call print_word - // [50] phi from testInt::@1 to print_word [phi:testInt::@1->print_word] + // [80] call print_word + // [56] phi from testInt::@1 to print_word [phi:testInt::@1->print_word] print_word_from_b1: - // [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:testInt::@1->print_word#0] -- register_copy - // [50] phi (word) print_word::w#5 = (const word) testInt::u#0 [phi:testInt::@1->print_word#1] -- vwuz1=vwuc1 + // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#136 [phi:testInt::@1->print_word#0] -- register_copy + // [56] phi (word) print_word::w#5 = (const word) testInt::u#0 [phi:testInt::@1->print_word#1] -- vwuz1=vwuc1 lda #u sta print_word.w+1 jsr print_word - // [79] phi from testInt::@1 to testInt::@2 [phi:testInt::@1->testInt::@2] + // [81] phi from testInt::@1 to testInt::@2 [phi:testInt::@1->testInt::@2] b2_from_b1: jmp b2 // testInt::@2 b2: - // [80] call print_char - // [64] phi from testInt::@2 to print_char [phi:testInt::@2->print_char] + // [82] call print_char + // [46] phi from testInt::@2 to print_char [phi:testInt::@2->print_char] print_char_from_b2: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testInt::@2->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testInt::@2->print_char#1] -- vbuaa=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testInt::@2->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testInt::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - // [81] phi from testInt::@2 to testInt::@3 [phi:testInt::@2->testInt::@3] + // [83] phi from testInt::@2 to testInt::@3 [phi:testInt::@2->testInt::@3] b3_from_b2: jmp b3 // testInt::@3 b3: - // [82] call print_sword - // [90] phi from testInt::@3 to print_sword [phi:testInt::@3->print_sword] + // [84] call print_sword + // [92] phi from testInt::@3 to print_sword [phi:testInt::@3->print_sword] print_sword_from_b3: - // [90] phi (signed word) print_sword::w#10 = (const signed word) testInt::n#0 [phi:testInt::@3->print_sword#0] -- vwsz1=vwsc1 + // [92] phi (signed word) print_sword::w#10 = (const signed word) testInt::n#0 [phi:testInt::@3->print_sword#0] -- vwsz1=vwsc1 lda #n sta print_sword.w+1 jsr print_sword - // [83] phi from testInt::@3 to testInt::@4 [phi:testInt::@3->testInt::@4] + // [85] phi from testInt::@3 to testInt::@4 [phi:testInt::@3->testInt::@4] b4_from_b3: jmp b4 // testInt::@4 b4: - // [84] call print_char - // [64] phi from testInt::@4 to print_char [phi:testInt::@4->print_char] + // [86] call print_char + // [46] phi from testInt::@4 to print_char [phi:testInt::@4->print_char] print_char_from_b4: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testInt::@4->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testInt::@4->print_char#1] -- vbuaa=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testInt::@4->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testInt::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - // [85] phi from testInt::@4 to testInt::@5 [phi:testInt::@4->testInt::@5] + // [87] phi from testInt::@4 to testInt::@5 [phi:testInt::@4->testInt::@5] b5_from_b4: jmp b5 // testInt::@5 b5: - // [86] call print_sword - // [90] phi from testInt::@5 to print_sword [phi:testInt::@5->print_sword] + // [88] call print_sword + // [92] phi from testInt::@5 to print_sword [phi:testInt::@5->print_sword] print_sword_from_b5: - // [90] phi (signed word) print_sword::w#10 = (const signed word) testInt::s#0 [phi:testInt::@5->print_sword#0] -- vwsz1=vwsc1 + // [92] phi (signed word) print_sword::w#10 = (const signed word) testInt::s#0 [phi:testInt::@5->print_sword#0] -- vwsz1=vwsc1 lda #s sta print_sword.w+1 jsr print_sword - // [87] phi from testInt::@5 to testInt::@6 [phi:testInt::@5->testInt::@6] + // [89] phi from testInt::@5 to testInt::@6 [phi:testInt::@5->testInt::@6] b6_from_b5: jmp b6 // testInt::@6 b6: - // [88] call print_ln + // [90] call print_ln // [30] phi from testInt::@6 to print_ln [phi:testInt::@6->print_ln] print_ln_from_b6: // [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testInt::@6->print_ln#0] -- register_copy @@ -3680,7 +3732,7 @@ testInt: { jmp breturn // testInt::@return breturn: - // [89] return + // [91] return rts str: .text "int: @" } @@ -3689,56 +3741,56 @@ testInt: { // print_sword(signed word zeropage(8) w) print_sword: { .label w = 8 - // [91] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 + // [93] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 bmi b1_from_print_sword - // [92] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + // [94] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] b3_from_print_sword: jmp b3 // print_sword::@3 b3: - // [93] call print_char - // [64] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + // [95] call print_char + // [46] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] print_char_from_b3: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sword::@3->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sword::@3->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - // [94] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + // [96] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] b2_from_b3: b2_from_b4: - // [94] phi (signed word) print_sword::w#7 = (signed word) print_sword::w#10 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + // [96] phi (signed word) print_sword::w#7 = (signed word) print_sword::w#10 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy jmp b2 // print_sword::@2 b2: - // [95] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 - // [96] call print_word - // [50] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + // [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 + // [98] call print_word + // [56] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] print_word_from_b2: - // [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#25 [phi:print_sword::@2->print_word#0] -- register_copy - // [50] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#26 [phi:print_sword::@2->print_word#0] -- register_copy + // [56] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy jsr print_word jmp breturn // print_sword::@return breturn: - // [97] return + // [99] return rts - // [98] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + // [100] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] b1_from_print_sword: jmp b1 // print_sword::@1 b1: - // [99] call print_char - // [64] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + // [101] call print_char + // [46] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] print_char_from_b1: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sword::@1->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sword::@1->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b4 // print_sword::@4 b4: - // [100] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 -- vwsz1=_neg_vwsz1 + // [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -3753,94 +3805,94 @@ testShort: { .const u = $578 .const n = -$578 .const s = -$578 - // [101] (byte*~) print_char_cursor#160 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [103] (byte*~) print_char_cursor#163 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - // [102] call print_str - // [68] phi from testShort to print_str [phi:testShort->print_str] + // [104] call print_str + // [70] phi from testShort to print_str [phi:testShort->print_str] print_str_from_testShort: - // [68] phi (byte*) print_char_cursor#153 = (byte*~) print_char_cursor#160 [phi:testShort->print_str#0] -- register_copy - // [68] phi (byte*) print_str::str#7 = (const string) testShort::str [phi:testShort->print_str#1] -- pbuz1=pbuc1 + // [70] phi (byte*) print_char_cursor#156 = (byte*~) print_char_cursor#163 [phi:testShort->print_str#0] -- register_copy + // [70] phi (byte*) print_str::str#7 = (const string) testShort::str [phi:testShort->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - // [103] phi from testShort to testShort::@1 [phi:testShort->testShort::@1] + // [105] phi from testShort to testShort::@1 [phi:testShort->testShort::@1] b1_from_testShort: jmp b1 // testShort::@1 b1: - // [104] call print_word - // [50] phi from testShort::@1 to print_word [phi:testShort::@1->print_word] + // [106] call print_word + // [56] phi from testShort::@1 to print_word [phi:testShort::@1->print_word] print_word_from_b1: - // [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:testShort::@1->print_word#0] -- register_copy - // [50] phi (word) print_word::w#5 = (const word) testShort::u#0 [phi:testShort::@1->print_word#1] -- vwuz1=vwuc1 + // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#136 [phi:testShort::@1->print_word#0] -- register_copy + // [56] phi (word) print_word::w#5 = (const word) testShort::u#0 [phi:testShort::@1->print_word#1] -- vwuz1=vwuc1 lda #u sta print_word.w+1 jsr print_word - // [105] phi from testShort::@1 to testShort::@2 [phi:testShort::@1->testShort::@2] + // [107] phi from testShort::@1 to testShort::@2 [phi:testShort::@1->testShort::@2] b2_from_b1: jmp b2 // testShort::@2 b2: - // [106] call print_char - // [64] phi from testShort::@2 to print_char [phi:testShort::@2->print_char] + // [108] call print_char + // [46] phi from testShort::@2 to print_char [phi:testShort::@2->print_char] print_char_from_b2: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testShort::@2->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testShort::@2->print_char#1] -- vbuaa=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testShort::@2->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testShort::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - // [107] phi from testShort::@2 to testShort::@3 [phi:testShort::@2->testShort::@3] + // [109] phi from testShort::@2 to testShort::@3 [phi:testShort::@2->testShort::@3] b3_from_b2: jmp b3 // testShort::@3 b3: - // [108] call print_sword - // [90] phi from testShort::@3 to print_sword [phi:testShort::@3->print_sword] + // [110] call print_sword + // [92] phi from testShort::@3 to print_sword [phi:testShort::@3->print_sword] print_sword_from_b3: - // [90] phi (signed word) print_sword::w#10 = (const signed word) testShort::n#0 [phi:testShort::@3->print_sword#0] -- vwsz1=vwsc1 + // [92] phi (signed word) print_sword::w#10 = (const signed word) testShort::n#0 [phi:testShort::@3->print_sword#0] -- vwsz1=vwsc1 lda #n sta print_sword.w+1 jsr print_sword - // [109] phi from testShort::@3 to testShort::@4 [phi:testShort::@3->testShort::@4] + // [111] phi from testShort::@3 to testShort::@4 [phi:testShort::@3->testShort::@4] b4_from_b3: jmp b4 // testShort::@4 b4: - // [110] call print_char - // [64] phi from testShort::@4 to print_char [phi:testShort::@4->print_char] + // [112] call print_char + // [46] phi from testShort::@4 to print_char [phi:testShort::@4->print_char] print_char_from_b4: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testShort::@4->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testShort::@4->print_char#1] -- vbuaa=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testShort::@4->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testShort::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - // [111] phi from testShort::@4 to testShort::@5 [phi:testShort::@4->testShort::@5] + // [113] phi from testShort::@4 to testShort::@5 [phi:testShort::@4->testShort::@5] b5_from_b4: jmp b5 // testShort::@5 b5: - // [112] call print_sword - // [90] phi from testShort::@5 to print_sword [phi:testShort::@5->print_sword] + // [114] call print_sword + // [92] phi from testShort::@5 to print_sword [phi:testShort::@5->print_sword] print_sword_from_b5: - // [90] phi (signed word) print_sword::w#10 = (const signed word) testShort::s#0 [phi:testShort::@5->print_sword#0] -- vwsz1=vwsc1 + // [92] phi (signed word) print_sword::w#10 = (const signed word) testShort::s#0 [phi:testShort::@5->print_sword#0] -- vwsz1=vwsc1 lda #s sta print_sword.w+1 jsr print_sword - // [113] phi from testShort::@5 to testShort::@6 [phi:testShort::@5->testShort::@6] + // [115] phi from testShort::@5 to testShort::@6 [phi:testShort::@5->testShort::@6] b6_from_b5: jmp b6 // testShort::@6 b6: - // [114] call print_ln + // [116] call print_ln // [30] phi from testShort::@6 to print_ln [phi:testShort::@6->print_ln] print_ln_from_b6: // [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testShort::@6->print_ln#0] -- register_copy @@ -3848,7 +3900,7 @@ testShort: { jmp breturn // testShort::@return breturn: - // [115] return + // [117] return rts str: .text "short: @" } @@ -3857,83 +3909,83 @@ testChar: { .const u = $e .const n = $e .label s = -$e - // [117] call print_str - // [68] phi from testChar to print_str [phi:testChar->print_str] + // [119] call print_str + // [70] phi from testChar to print_str [phi:testChar->print_str] print_str_from_testChar: - // [68] phi (byte*) print_char_cursor#153 = (byte*) 1024 [phi:testChar->print_str#0] -- pbuz1=pbuc1 + // [70] phi (byte*) print_char_cursor#156 = (byte*) 1024 [phi:testChar->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - // [68] phi (byte*) print_str::str#7 = (const string) testChar::str [phi:testChar->print_str#1] -- pbuz1=pbuc1 + // [70] phi (byte*) print_str::str#7 = (const string) testChar::str [phi:testChar->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - // [118] phi from testChar to testChar::@1 [phi:testChar->testChar::@1] + // [120] phi from testChar to testChar::@1 [phi:testChar->testChar::@1] b1_from_testChar: jmp b1 // testChar::@1 b1: - // [119] call print_byte - // [56] phi from testChar::@1 to print_byte [phi:testChar::@1->print_byte] + // [121] call print_byte + // [62] phi from testChar::@1 to print_byte [phi:testChar::@1->print_byte] print_byte_from_b1: - // [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#134 [phi:testChar::@1->print_byte#0] -- register_copy - // [56] phi (byte) print_byte::b#5 = (const byte) testChar::u#0 [phi:testChar::@1->print_byte#1] -- vbuxx=vbuc1 + // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#136 [phi:testChar::@1->print_byte#0] -- register_copy + // [62] phi (byte) print_byte::b#5 = (const byte) testChar::u#0 [phi:testChar::@1->print_byte#1] -- vbuxx=vbuc1 ldx #u jsr print_byte - // [120] phi from testChar::@1 to testChar::@2 [phi:testChar::@1->testChar::@2] + // [122] phi from testChar::@1 to testChar::@2 [phi:testChar::@1->testChar::@2] b2_from_b1: jmp b2 // testChar::@2 b2: - // [121] call print_char - // [64] phi from testChar::@2 to print_char [phi:testChar::@2->print_char] + // [123] call print_char + // [46] phi from testChar::@2 to print_char [phi:testChar::@2->print_char] print_char_from_b2: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testChar::@2->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testChar::@2->print_char#1] -- vbuaa=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testChar::@2->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testChar::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - // [122] phi from testChar::@2 to testChar::@3 [phi:testChar::@2->testChar::@3] + // [124] phi from testChar::@2 to testChar::@3 [phi:testChar::@2->testChar::@3] b3_from_b2: jmp b3 // testChar::@3 b3: - // [123] call print_byte - // [56] phi from testChar::@3 to print_byte [phi:testChar::@3->print_byte] + // [125] call print_byte + // [62] phi from testChar::@3 to print_byte [phi:testChar::@3->print_byte] print_byte_from_b3: - // [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#25 [phi:testChar::@3->print_byte#0] -- register_copy - // [56] phi (byte) print_byte::b#5 = (const byte) testChar::n#0 [phi:testChar::@3->print_byte#1] -- vbuxx=vbuc1 + // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#26 [phi:testChar::@3->print_byte#0] -- register_copy + // [62] phi (byte) print_byte::b#5 = (const byte) testChar::n#0 [phi:testChar::@3->print_byte#1] -- vbuxx=vbuc1 ldx #n jsr print_byte - // [124] phi from testChar::@3 to testChar::@4 [phi:testChar::@3->testChar::@4] + // [126] phi from testChar::@3 to testChar::@4 [phi:testChar::@3->testChar::@4] b4_from_b3: jmp b4 // testChar::@4 b4: - // [125] call print_char - // [64] phi from testChar::@4 to print_char [phi:testChar::@4->print_char] + // [127] call print_char + // [46] phi from testChar::@4 to print_char [phi:testChar::@4->print_char] print_char_from_b4: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testChar::@4->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testChar::@4->print_char#1] -- vbuaa=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testChar::@4->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testChar::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - // [126] phi from testChar::@4 to testChar::@5 [phi:testChar::@4->testChar::@5] + // [128] phi from testChar::@4 to testChar::@5 [phi:testChar::@4->testChar::@5] b5_from_b4: jmp b5 // testChar::@5 b5: - // [127] call print_sbyte - // [131] phi from testChar::@5 to print_sbyte [phi:testChar::@5->print_sbyte] + // [129] call print_sbyte + // [133] phi from testChar::@5 to print_sbyte [phi:testChar::@5->print_sbyte] print_sbyte_from_b5: jsr print_sbyte - // [128] phi from testChar::@5 to testChar::@6 [phi:testChar::@5->testChar::@6] + // [130] phi from testChar::@5 to testChar::@6 [phi:testChar::@5->testChar::@6] b6_from_b5: jmp b6 // testChar::@6 b6: - // [129] call print_ln + // [131] call print_ln // [30] phi from testChar::@6 to print_ln [phi:testChar::@6->print_ln] print_ln_from_b6: // [30] phi (byte*) print_line_cursor#39 = (byte*) 1024 [phi:testChar::@6->print_ln#0] -- pbuz1=pbuc1 @@ -3945,7 +3997,7 @@ testChar: { jmp breturn // testChar::@return breturn: - // [130] return + // [132] return rts str: .text "char: @" } @@ -3953,64 +4005,64 @@ testChar: { // Print a signed byte as HEX print_sbyte: { .const b = -testChar.s - // [132] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + // [134] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 // print_sbyte::@1 b1: - // [133] call print_char - // [64] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + // [135] call print_char + // [46] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sbyte::@1->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sbyte::@1->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - // [134] phi from print_sbyte::@1 to print_sbyte::@2 [phi:print_sbyte::@1->print_sbyte::@2] + // [136] phi from print_sbyte::@1 to print_sbyte::@2 [phi:print_sbyte::@1->print_sbyte::@2] b2_from_b1: jmp b2 // print_sbyte::@2 b2: - // [135] call print_byte - // [56] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + // [137] call print_byte + // [62] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - // [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#25 [phi:print_sbyte::@2->print_byte#0] -- register_copy - // [56] phi (byte) print_byte::b#5 = (byte)(const signed byte) print_sbyte::b#0 [phi:print_sbyte::@2->print_byte#1] -- vbuxx=vbuc1 + // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#26 [phi:print_sbyte::@2->print_byte#0] -- register_copy + // [62] phi (byte) print_byte::b#5 = (byte)(const signed byte) print_sbyte::b#0 [phi:print_sbyte::@2->print_byte#1] -- vbuxx=vbuc1 ldx #b jsr print_byte jmp breturn // print_sbyte::@return breturn: - // [136] return + // [138] return rts } // print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $e - // [138] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + // [140] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - // [138] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + // [140] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - // [138] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + // [140] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - // [138] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + // [140] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 // print_cls::@1 b1: - // [139] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + // [141] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - // [140] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + // [142] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - // [141] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + // [143] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -4020,7 +4072,7 @@ print_cls: { jmp breturn // print_cls::@return breturn: - // [142] return + // [144] return rts } // File Data @@ -4043,9 +4095,11 @@ Removing instruction jmp b6 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn -Removing instruction jmp b2 Removing instruction jmp b3 +Removing instruction jmp b2 +Removing instruction jmp breturn Removing instruction jmp b1 +Removing instruction jmp b4 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn @@ -4053,7 +4107,6 @@ Removing instruction jmp b1 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn -Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn Removing instruction jmp b1 @@ -4093,6 +4146,7 @@ Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_print_sdword with b1 +Replacing label b2_from_b4 with b2 Replacing label b1_from_b2 with b1 Replacing label b1_from_print_sword with b1 Replacing label b2_from_b4 with b2 @@ -4121,11 +4175,13 @@ Removing instruction b6_from_b5: Removing instruction print_ln_from_b6: Removing instruction b1_from_print_ln: Removing instruction b1_from_b1: -Removing instruction b2_from_print_sdword: -Removing instruction print_char_from_b2: +Removing instruction b3_from_print_sdword: +Removing instruction print_char_from_b3: +Removing instruction b2_from_b3: +Removing instruction b2_from_b4: +Removing instruction print_dword_from_b2: Removing instruction b1_from_print_sdword: -Removing instruction b1_from_b3: -Removing instruction print_dword_from_b1: +Removing instruction print_char_from_b1: Removing instruction b1_from_print_str: Removing instruction b1_from_b2: Removing instruction b1_from_testInt: @@ -4193,9 +4249,10 @@ Removing instruction b5: Removing instruction b6: Removing instruction breturn: Removing instruction breturn: -Removing instruction b2: Removing instruction b3: Removing instruction breturn: +Removing instruction b4: +Removing instruction breturn: Removing instruction print_word_from_print_dword: Removing instruction b1: Removing instruction print_word_from_b1: @@ -4209,7 +4266,6 @@ Removing instruction b1: Removing instruction print_char_from_b1: Removing instruction breturn: Removing instruction breturn: -Removing instruction breturn: Removing instruction print_str_from_testInt: Removing instruction b1: Removing instruction b2: @@ -4273,21 +4329,21 @@ FINAL SYMBOL TABLE (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#15 reg byte a 6.0 -(byte) print_char::ch#5 reg byte a 4.0 +(byte) print_char::ch#16 reg byte a 6.0 (byte) print_char::ch#6 reg byte a 4.0 +(byte) print_char::ch#7 reg byte a 4.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:10 11.0 -(byte*) print_char_cursor#134 print_char_cursor zp ZP_WORD:10 3.583333333333333 -(byte*) print_char_cursor#142 print_char_cursor zp ZP_WORD:10 6.0 -(byte*) print_char_cursor#143 print_char_cursor zp ZP_WORD:10 3.0 -(byte*) print_char_cursor#146 print_char_cursor zp ZP_WORD:10 3.9999999999999996 -(byte*) print_char_cursor#153 print_char_cursor zp ZP_WORD:10 8.0 -(byte*~) print_char_cursor#158 print_char_cursor zp ZP_WORD:10 4.0 -(byte*~) print_char_cursor#159 print_char_cursor zp ZP_WORD:10 4.0 -(byte*~) print_char_cursor#160 print_char_cursor zp ZP_WORD:10 4.0 -(byte*) print_char_cursor#25 print_char_cursor zp ZP_WORD:10 0.6000000000000004 -(byte*) print_char_cursor#92 print_char_cursor zp ZP_WORD:10 16.0 +(byte*) print_char_cursor#136 print_char_cursor zp ZP_WORD:10 3.583333333333333 +(byte*) print_char_cursor#144 print_char_cursor zp ZP_WORD:10 6.0 +(byte*) print_char_cursor#145 print_char_cursor zp ZP_WORD:10 3.0 +(byte*) print_char_cursor#149 print_char_cursor zp ZP_WORD:10 3.9999999999999996 +(byte*) print_char_cursor#156 print_char_cursor zp ZP_WORD:10 8.0 +(byte*~) print_char_cursor#161 print_char_cursor zp ZP_WORD:10 4.0 +(byte*~) print_char_cursor#162 print_char_cursor zp ZP_WORD:10 4.0 +(byte*~) print_char_cursor#163 print_char_cursor zp ZP_WORD:10 4.0 +(byte*) print_char_cursor#26 print_char_cursor zp ZP_WORD:10 0.6091954022988502 +(byte*) print_char_cursor#94 print_char_cursor zp ZP_WORD:10 17.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -4320,11 +4376,12 @@ FINAL SYMBOL TABLE (label) print_sdword::@1 (label) print_sdword::@2 (label) print_sdword::@3 +(label) print_sdword::@4 (label) print_sdword::@return (signed dword) print_sdword::dw (signed dword) print_sdword::dw#0 dw zp ZP_DWORD:4 4.0 -(signed dword) print_sdword::dw#3 dw zp ZP_DWORD:4 1.5 -(signed dword) print_sdword::dw#4 dw zp ZP_DWORD:4 4.0 +(signed dword) print_sdword::dw#3 dw zp ZP_DWORD:4 1.0 +(signed dword) print_sdword::dw#5 dw zp ZP_DWORD:4 4.0 (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 @@ -4413,11 +4470,11 @@ FINAL SYMBOL TABLE (const word) testShort::u#0 u = (word) $578 zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] -zp ZP_DWORD:4 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#2 print_dword::dw#0 ] +zp ZP_DWORD:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 print_dword::dw#2 print_dword::dw#0 ] +reg byte a [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ] zp ZP_WORD:8 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#7 print_sword::w#0 print_sword::w#10 ] +zp ZP_WORD:10 [ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#161 print_char_cursor#162 print_char_cursor#163 print_char_cursor#1 ] reg byte x [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] -reg byte a [ print_char::ch#15 print_char::ch#5 print_char::ch#6 ] -zp ZP_WORD:10 [ print_char_cursor#92 print_char_cursor#146 print_char_cursor#142 print_char_cursor#143 print_char_cursor#25 print_char_cursor#134 print_char_cursor#153 print_char_cursor#158 print_char_cursor#159 print_char_cursor#160 print_char_cursor#1 ] zp ZP_WORD:12 [ print_str::str#5 print_str::str#7 print_str::str#0 ] zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] reg byte a [ print_byte::$0 ] @@ -4425,7 +4482,7 @@ reg byte x [ print_byte::$2 ] FINAL ASSEMBLER -Score: 2143 +Score: 2154 // File Comments // Tests the different standard C types @@ -4447,13 +4504,13 @@ Score: 2143 main: { // print_cls() // [5] call print_cls - // [137] phi from main to print_cls [phi:main->print_cls] + // [139] phi from main to print_cls [phi:main->print_cls] jsr print_cls // [6] phi from main to main::@1 [phi:main->main::@1] // main::@1 // testChar() // [7] call testChar - // [116] phi from main::@1 to testChar [phi:main::@1->testChar] + // [118] phi from main::@1 to testChar [phi:main::@1->testChar] jsr testChar // [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] // main::@2 @@ -4480,16 +4537,16 @@ testLong: { .const u = $222e0 .const n = -$222e0 .const s = -$222e0 - // [15] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [15] (byte*~) print_char_cursor#162 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 // print_str("long: ") // [16] call print_str - // [68] phi from testLong to print_str [phi:testLong->print_str] - // [68] phi (byte*) print_char_cursor#153 = (byte*~) print_char_cursor#159 [phi:testLong->print_str#0] -- register_copy - // [68] phi (byte*) print_str::str#7 = (const string) testLong::str [phi:testLong->print_str#1] -- pbuz1=pbuc1 + // [70] phi from testLong to print_str [phi:testLong->print_str] + // [70] phi (byte*) print_char_cursor#156 = (byte*~) print_char_cursor#162 [phi:testLong->print_str#0] -- register_copy + // [70] phi (byte*) print_str::str#7 = (const string) testLong::str [phi:testLong->print_str#1] -- pbuz1=pbuc1 lda #str @@ -4499,9 +4556,9 @@ testLong: { // testLong::@1 // print_dword(u) // [18] call print_dword - // [44] phi from testLong::@1 to print_dword [phi:testLong::@1->print_dword] - // [44] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#134 [phi:testLong::@1->print_dword#0] -- register_copy - // [44] phi (dword) print_dword::dw#2 = (const dword) testLong::u#0 [phi:testLong::@1->print_dword#1] -- vduz1=vduc1 + // [50] phi from testLong::@1 to print_dword [phi:testLong::@1->print_dword] + // [50] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#136 [phi:testLong::@1->print_dword#0] -- register_copy + // [50] phi (dword) print_dword::dw#2 = (const dword) testLong::u#0 [phi:testLong::@1->print_dword#1] -- vduz1=vduc1 lda #u @@ -4515,9 +4572,9 @@ testLong: { // testLong::@2 // print_char(' ') // [20] call print_char - // [64] phi from testLong::@2 to print_char [phi:testLong::@2->print_char] - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testLong::@2->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testLong::@2->print_char#1] -- vbuaa=vbuc1 + // [46] phi from testLong::@2 to print_char [phi:testLong::@2->print_char] + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testLong::@2->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testLong::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char // [21] phi from testLong::@2 to testLong::@3 [phi:testLong::@2->testLong::@3] @@ -4539,9 +4596,9 @@ testLong: { // testLong::@4 // print_char(' ') // [24] call print_char - // [64] phi from testLong::@4 to print_char [phi:testLong::@4->print_char] - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testLong::@4->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testLong::@4->print_char#1] -- vbuaa=vbuc1 + // [46] phi from testLong::@4 to print_char [phi:testLong::@4->print_char] + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testLong::@4->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testLong::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char // [25] phi from testLong::@4 to testLong::@5 [phi:testLong::@4->testLong::@5] @@ -4589,7 +4646,7 @@ print_ln: { inc print_line_cursor+1 !: // while (print_line_cursor=(signed byte) 0) goto print_sdword::@1 -- vdsz1_ge_0_then_la1 + // [36] if((signed dword) print_sdword::dw#3<(signed byte) 0) goto print_sdword::@1 -- vdsz1_lt_0_then_la1 lda dw+3 - bpl b1 - // [37] phi from print_sdword to print_sdword::@2 [phi:print_sdword->print_sdword::@2] - // print_sdword::@2 - // print_char('-') + bmi b1 + // [37] phi from print_sdword to print_sdword::@3 [phi:print_sdword->print_sdword::@3] + // print_sdword::@3 + // print_char(' ') // [38] call print_char - // [64] phi from print_sdword::@2 to print_char [phi:print_sdword::@2->print_char] - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sdword::@2->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuaa=vbuc1 + // [46] phi from print_sdword::@3 to print_char [phi:print_sdword::@3->print_char] + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sdword::@3->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:print_sdword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + // [39] phi from print_sdword::@3 print_sdword::@4 to print_sdword::@2 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2] + // [39] phi (signed dword) print_sdword::dw#5 = (signed dword) print_sdword::dw#3 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2#0] -- register_copy + // print_sdword::@2 + b2: + // print_dword((dword)dw) + // [40] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 + // [41] call print_dword + // [50] phi from print_sdword::@2 to print_dword [phi:print_sdword::@2->print_dword] + // [50] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#26 [phi:print_sdword::@2->print_dword#0] -- register_copy + // [50] phi (dword) print_dword::dw#2 = (dword) print_dword::dw#0 [phi:print_sdword::@2->print_dword#1] -- register_copy + jsr print_dword + // print_sdword::@return + // } + // [42] return + rts + // [43] phi from print_sdword to print_sdword::@1 [phi:print_sdword->print_sdword::@1] + // print_sdword::@1 + b1: + // print_char('-') + // [44] call print_char + // [46] phi from print_sdword::@1 to print_char [phi:print_sdword::@1->print_char] + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sdword::@1->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) '-' [phi:print_sdword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - // print_sdword::@3 + // print_sdword::@4 // dw = -dw - // [39] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 -- vdsz1=_neg_vdsz1 + // [45] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#3 -- vdsz1=_neg_vdsz1 sec lda dw eor #$ff @@ -4641,20 +4723,25 @@ print_sdword: { eor #$ff adc #0 sta dw+3 - // [40] phi from print_sdword print_sdword::@3 to print_sdword::@1 [phi:print_sdword/print_sdword::@3->print_sdword::@1] - // [40] phi (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#3 [phi:print_sdword/print_sdword::@3->print_sdword::@1#0] -- register_copy - // print_sdword::@1 - b1: - // print_dword((dword)dw) - // [41] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#4 - // [42] call print_dword - // [44] phi from print_sdword::@1 to print_dword [phi:print_sdword::@1->print_dword] - // [44] phi (byte*) print_char_cursor#143 = (byte*) print_char_cursor#25 [phi:print_sdword::@1->print_dword#0] -- register_copy - // [44] phi (dword) print_dword::dw#2 = (dword) print_dword::dw#0 [phi:print_sdword::@1->print_dword#1] -- register_copy - jsr print_dword - // print_sdword::@return + jmp b2 +} + // print_char +// Print a single char +// print_char(byte register(A) ch) +print_char: { + // *(print_char_cursor++) = ch + // [47] *((byte*) print_char_cursor#94) ← (byte) print_char::ch#16 -- _deref_pbuz1=vbuaa + ldy #0 + sta (print_char_cursor),y + // *(print_char_cursor++) = ch; + // [48] (byte*) print_char_cursor#26 ← ++ (byte*) print_char_cursor#94 -- pbuz1=_inc_pbuz1 + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: + // print_char::@return // } - // [43] return + // [49] return rts } // print_dword @@ -4663,31 +4750,31 @@ print_sdword: { print_dword: { .label dw = 4 // print_word(>dw) - // [45] (word) print_word::w#1 ← > (dword) print_dword::dw#2 -- vwuz1=_hi_vduz2 + // [51] (word) print_word::w#1 ← > (dword) print_dword::dw#2 -- vwuz1=_hi_vduz2 lda dw+2 sta print_word.w lda dw+3 sta print_word.w+1 - // [46] call print_word - // [50] phi from print_dword to print_word [phi:print_dword->print_word] - // [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#143 [phi:print_dword->print_word#0] -- register_copy - // [50] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy + // [52] call print_word + // [56] phi from print_dword to print_word [phi:print_dword->print_word] + // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#145 [phi:print_dword->print_word#0] -- register_copy + // [56] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy jsr print_word // print_dword::@1 // print_word(print_word] - // [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#25 [phi:print_dword::@1->print_word#0] -- register_copy - // [50] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy + // [54] call print_word + // [56] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#26 [phi:print_dword::@1->print_word#0] -- register_copy + // [56] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word // print_dword::@return // } - // [49] return + // [55] return rts } // print_word @@ -4696,27 +4783,27 @@ print_dword: { print_word: { .label w = 8 // print_byte(>w) - // [51] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 + // [57] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 lda w+1 tax - // [52] call print_byte - // [56] phi from print_word to print_byte [phi:print_word->print_byte] - // [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#142 [phi:print_word->print_byte#0] -- register_copy - // [56] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + // [58] call print_byte + // [62] phi from print_word to print_byte [phi:print_word->print_byte] + // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#144 [phi:print_word->print_byte#0] -- register_copy + // [62] phi (byte) print_byte::b#5 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte // print_word::@1 // print_byte(print_byte] - // [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#25 [phi:print_word::@1->print_byte#0] -- register_copy - // [56] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + // [60] call print_byte + // [62] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#26 [phi:print_word::@1->print_byte#0] -- register_copy + // [62] phi (byte) print_byte::b#5 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte // print_word::@return // } - // [55] return + // [61] return rts } // print_byte @@ -4724,56 +4811,37 @@ print_word: { // print_byte(byte register(X) b) print_byte: { // b>>4 - // [57] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + // [63] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr // print_char(print_hextab[b>>4]) - // [58] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + // [64] (byte) print_char::ch#6 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - // [59] call print_char - // [64] phi from print_byte to print_char [phi:print_byte->print_char] - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#146 [phi:print_byte->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) print_char::ch#5 [phi:print_byte->print_char#1] -- register_copy + // [65] call print_char + // [46] phi from print_byte to print_char [phi:print_byte->print_char] + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#149 [phi:print_byte->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) print_char::ch#6 [phi:print_byte->print_char#1] -- register_copy jsr print_char // print_byte::@1 // b&$f - // [60] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 + // [66] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f axs #0 // print_char(print_hextab[b&$f]) - // [61] (byte) print_char::ch#6 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + // [67] (byte) print_char::ch#7 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx lda print_hextab,x - // [62] call print_char - // [64] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_byte::@1->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) print_char::ch#6 [phi:print_byte::@1->print_char#1] -- register_copy + // [68] call print_char + // [46] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_byte::@1->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) print_char::ch#7 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char // print_byte::@return // } - // [63] return - rts -} - // print_char -// Print a single char -// print_char(byte register(A) ch) -print_char: { - // *(print_char_cursor++) = ch - // [65] *((byte*) print_char_cursor#92) ← (byte) print_char::ch#15 -- _deref_pbuz1=vbuaa - ldy #0 - sta (print_char_cursor),y - // *(print_char_cursor++) = ch; - // [66] (byte*) print_char_cursor#25 ← ++ (byte*) print_char_cursor#92 -- pbuz1=_inc_pbuz1 - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - // print_char::@return - // } - // [67] return + // [69] return rts } // print_str @@ -4781,35 +4849,35 @@ print_char: { // print_str(byte* zeropage($c) str) print_str: { .label str = $c - // [69] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - // [69] phi (byte*) print_char_cursor#134 = (byte*) print_char_cursor#153 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - // [69] phi (byte*) print_str::str#5 = (byte*) print_str::str#7 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + // [71] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + // [71] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#156 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + // [71] phi (byte*) print_str::str#5 = (byte*) print_str::str#7 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy // print_str::@1 b1: // while(*str!='@') - // [70] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + // [72] if(*((byte*) print_str::str#5)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 // print_str::@return // } - // [71] return + // [73] return rts // print_str::@2 b2: // *(print_char_cursor++) = *(str++) - // [72] *((byte*) print_char_cursor#134) ← *((byte*) print_str::str#5) -- _deref_pbuz1=_deref_pbuz2 + // [74] *((byte*) print_char_cursor#136) ← *((byte*) print_str::str#5) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y // *(print_char_cursor++) = *(str++); - // [73] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#134 -- pbuz1=_inc_pbuz1 + // [75] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#136 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - // [74] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#5 -- pbuz1=_inc_pbuz1 + // [76] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#5 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 @@ -4821,83 +4889,83 @@ testInt: { .const u = $578 .const n = -$578 .const s = -$578 - // [75] (byte*~) print_char_cursor#158 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [77] (byte*~) print_char_cursor#161 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 // print_str("int: ") - // [76] call print_str - // [68] phi from testInt to print_str [phi:testInt->print_str] - // [68] phi (byte*) print_char_cursor#153 = (byte*~) print_char_cursor#158 [phi:testInt->print_str#0] -- register_copy - // [68] phi (byte*) print_str::str#7 = (const string) testInt::str [phi:testInt->print_str#1] -- pbuz1=pbuc1 + // [78] call print_str + // [70] phi from testInt to print_str [phi:testInt->print_str] + // [70] phi (byte*) print_char_cursor#156 = (byte*~) print_char_cursor#161 [phi:testInt->print_str#0] -- register_copy + // [70] phi (byte*) print_str::str#7 = (const string) testInt::str [phi:testInt->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - // [77] phi from testInt to testInt::@1 [phi:testInt->testInt::@1] + // [79] phi from testInt to testInt::@1 [phi:testInt->testInt::@1] // testInt::@1 // print_word(u) - // [78] call print_word - // [50] phi from testInt::@1 to print_word [phi:testInt::@1->print_word] - // [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:testInt::@1->print_word#0] -- register_copy - // [50] phi (word) print_word::w#5 = (const word) testInt::u#0 [phi:testInt::@1->print_word#1] -- vwuz1=vwuc1 + // [80] call print_word + // [56] phi from testInt::@1 to print_word [phi:testInt::@1->print_word] + // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#136 [phi:testInt::@1->print_word#0] -- register_copy + // [56] phi (word) print_word::w#5 = (const word) testInt::u#0 [phi:testInt::@1->print_word#1] -- vwuz1=vwuc1 lda #u sta print_word.w+1 jsr print_word - // [79] phi from testInt::@1 to testInt::@2 [phi:testInt::@1->testInt::@2] + // [81] phi from testInt::@1 to testInt::@2 [phi:testInt::@1->testInt::@2] // testInt::@2 // print_char(' ') - // [80] call print_char - // [64] phi from testInt::@2 to print_char [phi:testInt::@2->print_char] - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testInt::@2->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testInt::@2->print_char#1] -- vbuaa=vbuc1 + // [82] call print_char + // [46] phi from testInt::@2 to print_char [phi:testInt::@2->print_char] + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testInt::@2->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testInt::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - // [81] phi from testInt::@2 to testInt::@3 [phi:testInt::@2->testInt::@3] + // [83] phi from testInt::@2 to testInt::@3 [phi:testInt::@2->testInt::@3] // testInt::@3 // print_sword(n) - // [82] call print_sword - // [90] phi from testInt::@3 to print_sword [phi:testInt::@3->print_sword] - // [90] phi (signed word) print_sword::w#10 = (const signed word) testInt::n#0 [phi:testInt::@3->print_sword#0] -- vwsz1=vwsc1 + // [84] call print_sword + // [92] phi from testInt::@3 to print_sword [phi:testInt::@3->print_sword] + // [92] phi (signed word) print_sword::w#10 = (const signed word) testInt::n#0 [phi:testInt::@3->print_sword#0] -- vwsz1=vwsc1 lda #n sta print_sword.w+1 jsr print_sword - // [83] phi from testInt::@3 to testInt::@4 [phi:testInt::@3->testInt::@4] + // [85] phi from testInt::@3 to testInt::@4 [phi:testInt::@3->testInt::@4] // testInt::@4 // print_char(' ') - // [84] call print_char - // [64] phi from testInt::@4 to print_char [phi:testInt::@4->print_char] - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testInt::@4->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testInt::@4->print_char#1] -- vbuaa=vbuc1 + // [86] call print_char + // [46] phi from testInt::@4 to print_char [phi:testInt::@4->print_char] + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testInt::@4->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testInt::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - // [85] phi from testInt::@4 to testInt::@5 [phi:testInt::@4->testInt::@5] + // [87] phi from testInt::@4 to testInt::@5 [phi:testInt::@4->testInt::@5] // testInt::@5 // print_sword(s) - // [86] call print_sword - // [90] phi from testInt::@5 to print_sword [phi:testInt::@5->print_sword] - // [90] phi (signed word) print_sword::w#10 = (const signed word) testInt::s#0 [phi:testInt::@5->print_sword#0] -- vwsz1=vwsc1 + // [88] call print_sword + // [92] phi from testInt::@5 to print_sword [phi:testInt::@5->print_sword] + // [92] phi (signed word) print_sword::w#10 = (const signed word) testInt::s#0 [phi:testInt::@5->print_sword#0] -- vwsz1=vwsc1 lda #s sta print_sword.w+1 jsr print_sword - // [87] phi from testInt::@5 to testInt::@6 [phi:testInt::@5->testInt::@6] + // [89] phi from testInt::@5 to testInt::@6 [phi:testInt::@5->testInt::@6] // testInt::@6 // print_ln() - // [88] call print_ln + // [90] call print_ln // [30] phi from testInt::@6 to print_ln [phi:testInt::@6->print_ln] // [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testInt::@6->print_ln#0] -- register_copy jsr print_ln // testInt::@return // } - // [89] return + // [91] return rts str: .text "int: @" } @@ -4907,46 +4975,46 @@ testInt: { print_sword: { .label w = 8 // if(w<0) - // [91] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 + // [93] if((signed word) print_sword::w#10<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 bmi b1 - // [92] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + // [94] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] // print_sword::@3 // print_char(' ') - // [93] call print_char - // [64] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sword::@3->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + // [95] call print_char + // [46] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sword::@3->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - // [94] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] - // [94] phi (signed word) print_sword::w#7 = (signed word) print_sword::w#10 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + // [96] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + // [96] phi (signed word) print_sword::w#7 = (signed word) print_sword::w#10 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy // print_sword::@2 b2: // print_word((word)w) - // [95] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 - // [96] call print_word - // [50] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] - // [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#25 [phi:print_sword::@2->print_word#0] -- register_copy - // [50] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + // [97] (word) print_word::w#0 ← (word)(signed word) print_sword::w#7 + // [98] call print_word + // [56] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#26 [phi:print_sword::@2->print_word#0] -- register_copy + // [56] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy jsr print_word // print_sword::@return // } - // [97] return + // [99] return rts - // [98] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + // [100] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] // print_sword::@1 b1: // print_char('-') - // [99] call print_char - // [64] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sword::@1->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 + // [101] call print_char + // [46] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sword::@1->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char // print_sword::@4 // w = -w - // [100] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 -- vwsz1=_neg_vwsz1 + // [102] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#10 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -4961,83 +5029,83 @@ testShort: { .const u = $578 .const n = -$578 .const s = -$578 - // [101] (byte*~) print_char_cursor#160 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [103] (byte*~) print_char_cursor#163 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 // print_str("short: ") - // [102] call print_str - // [68] phi from testShort to print_str [phi:testShort->print_str] - // [68] phi (byte*) print_char_cursor#153 = (byte*~) print_char_cursor#160 [phi:testShort->print_str#0] -- register_copy - // [68] phi (byte*) print_str::str#7 = (const string) testShort::str [phi:testShort->print_str#1] -- pbuz1=pbuc1 + // [104] call print_str + // [70] phi from testShort to print_str [phi:testShort->print_str] + // [70] phi (byte*) print_char_cursor#156 = (byte*~) print_char_cursor#163 [phi:testShort->print_str#0] -- register_copy + // [70] phi (byte*) print_str::str#7 = (const string) testShort::str [phi:testShort->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - // [103] phi from testShort to testShort::@1 [phi:testShort->testShort::@1] + // [105] phi from testShort to testShort::@1 [phi:testShort->testShort::@1] // testShort::@1 // print_word(u) - // [104] call print_word - // [50] phi from testShort::@1 to print_word [phi:testShort::@1->print_word] - // [50] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#134 [phi:testShort::@1->print_word#0] -- register_copy - // [50] phi (word) print_word::w#5 = (const word) testShort::u#0 [phi:testShort::@1->print_word#1] -- vwuz1=vwuc1 + // [106] call print_word + // [56] phi from testShort::@1 to print_word [phi:testShort::@1->print_word] + // [56] phi (byte*) print_char_cursor#144 = (byte*) print_char_cursor#136 [phi:testShort::@1->print_word#0] -- register_copy + // [56] phi (word) print_word::w#5 = (const word) testShort::u#0 [phi:testShort::@1->print_word#1] -- vwuz1=vwuc1 lda #u sta print_word.w+1 jsr print_word - // [105] phi from testShort::@1 to testShort::@2 [phi:testShort::@1->testShort::@2] + // [107] phi from testShort::@1 to testShort::@2 [phi:testShort::@1->testShort::@2] // testShort::@2 // print_char(' ') - // [106] call print_char - // [64] phi from testShort::@2 to print_char [phi:testShort::@2->print_char] - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testShort::@2->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testShort::@2->print_char#1] -- vbuaa=vbuc1 + // [108] call print_char + // [46] phi from testShort::@2 to print_char [phi:testShort::@2->print_char] + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testShort::@2->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testShort::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - // [107] phi from testShort::@2 to testShort::@3 [phi:testShort::@2->testShort::@3] + // [109] phi from testShort::@2 to testShort::@3 [phi:testShort::@2->testShort::@3] // testShort::@3 // print_sword(n) - // [108] call print_sword - // [90] phi from testShort::@3 to print_sword [phi:testShort::@3->print_sword] - // [90] phi (signed word) print_sword::w#10 = (const signed word) testShort::n#0 [phi:testShort::@3->print_sword#0] -- vwsz1=vwsc1 + // [110] call print_sword + // [92] phi from testShort::@3 to print_sword [phi:testShort::@3->print_sword] + // [92] phi (signed word) print_sword::w#10 = (const signed word) testShort::n#0 [phi:testShort::@3->print_sword#0] -- vwsz1=vwsc1 lda #n sta print_sword.w+1 jsr print_sword - // [109] phi from testShort::@3 to testShort::@4 [phi:testShort::@3->testShort::@4] + // [111] phi from testShort::@3 to testShort::@4 [phi:testShort::@3->testShort::@4] // testShort::@4 // print_char(' ') - // [110] call print_char - // [64] phi from testShort::@4 to print_char [phi:testShort::@4->print_char] - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testShort::@4->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testShort::@4->print_char#1] -- vbuaa=vbuc1 + // [112] call print_char + // [46] phi from testShort::@4 to print_char [phi:testShort::@4->print_char] + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testShort::@4->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testShort::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - // [111] phi from testShort::@4 to testShort::@5 [phi:testShort::@4->testShort::@5] + // [113] phi from testShort::@4 to testShort::@5 [phi:testShort::@4->testShort::@5] // testShort::@5 // print_sword(s) - // [112] call print_sword - // [90] phi from testShort::@5 to print_sword [phi:testShort::@5->print_sword] - // [90] phi (signed word) print_sword::w#10 = (const signed word) testShort::s#0 [phi:testShort::@5->print_sword#0] -- vwsz1=vwsc1 + // [114] call print_sword + // [92] phi from testShort::@5 to print_sword [phi:testShort::@5->print_sword] + // [92] phi (signed word) print_sword::w#10 = (const signed word) testShort::s#0 [phi:testShort::@5->print_sword#0] -- vwsz1=vwsc1 lda #s sta print_sword.w+1 jsr print_sword - // [113] phi from testShort::@5 to testShort::@6 [phi:testShort::@5->testShort::@6] + // [115] phi from testShort::@5 to testShort::@6 [phi:testShort::@5->testShort::@6] // testShort::@6 // print_ln() - // [114] call print_ln + // [116] call print_ln // [30] phi from testShort::@6 to print_ln [phi:testShort::@6->print_ln] // [30] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:testShort::@6->print_ln#0] -- register_copy jsr print_ln // testShort::@return // } - // [115] return + // [117] return rts str: .text "short: @" } @@ -5047,65 +5115,65 @@ testChar: { .const n = $e .label s = -$e // print_str("char: ") - // [117] call print_str - // [68] phi from testChar to print_str [phi:testChar->print_str] - // [68] phi (byte*) print_char_cursor#153 = (byte*) 1024 [phi:testChar->print_str#0] -- pbuz1=pbuc1 + // [119] call print_str + // [70] phi from testChar to print_str [phi:testChar->print_str] + // [70] phi (byte*) print_char_cursor#156 = (byte*) 1024 [phi:testChar->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - // [68] phi (byte*) print_str::str#7 = (const string) testChar::str [phi:testChar->print_str#1] -- pbuz1=pbuc1 + // [70] phi (byte*) print_str::str#7 = (const string) testChar::str [phi:testChar->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - // [118] phi from testChar to testChar::@1 [phi:testChar->testChar::@1] + // [120] phi from testChar to testChar::@1 [phi:testChar->testChar::@1] // testChar::@1 // print_byte(u) - // [119] call print_byte - // [56] phi from testChar::@1 to print_byte [phi:testChar::@1->print_byte] - // [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#134 [phi:testChar::@1->print_byte#0] -- register_copy - // [56] phi (byte) print_byte::b#5 = (const byte) testChar::u#0 [phi:testChar::@1->print_byte#1] -- vbuxx=vbuc1 + // [121] call print_byte + // [62] phi from testChar::@1 to print_byte [phi:testChar::@1->print_byte] + // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#136 [phi:testChar::@1->print_byte#0] -- register_copy + // [62] phi (byte) print_byte::b#5 = (const byte) testChar::u#0 [phi:testChar::@1->print_byte#1] -- vbuxx=vbuc1 ldx #u jsr print_byte - // [120] phi from testChar::@1 to testChar::@2 [phi:testChar::@1->testChar::@2] + // [122] phi from testChar::@1 to testChar::@2 [phi:testChar::@1->testChar::@2] // testChar::@2 // print_char(' ') - // [121] call print_char - // [64] phi from testChar::@2 to print_char [phi:testChar::@2->print_char] - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testChar::@2->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testChar::@2->print_char#1] -- vbuaa=vbuc1 + // [123] call print_char + // [46] phi from testChar::@2 to print_char [phi:testChar::@2->print_char] + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testChar::@2->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testChar::@2->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - // [122] phi from testChar::@2 to testChar::@3 [phi:testChar::@2->testChar::@3] + // [124] phi from testChar::@2 to testChar::@3 [phi:testChar::@2->testChar::@3] // testChar::@3 // print_byte(n) - // [123] call print_byte - // [56] phi from testChar::@3 to print_byte [phi:testChar::@3->print_byte] - // [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#25 [phi:testChar::@3->print_byte#0] -- register_copy - // [56] phi (byte) print_byte::b#5 = (const byte) testChar::n#0 [phi:testChar::@3->print_byte#1] -- vbuxx=vbuc1 + // [125] call print_byte + // [62] phi from testChar::@3 to print_byte [phi:testChar::@3->print_byte] + // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#26 [phi:testChar::@3->print_byte#0] -- register_copy + // [62] phi (byte) print_byte::b#5 = (const byte) testChar::n#0 [phi:testChar::@3->print_byte#1] -- vbuxx=vbuc1 ldx #n jsr print_byte - // [124] phi from testChar::@3 to testChar::@4 [phi:testChar::@3->testChar::@4] + // [126] phi from testChar::@3 to testChar::@4 [phi:testChar::@3->testChar::@4] // testChar::@4 // print_char(' ') - // [125] call print_char - // [64] phi from testChar::@4 to print_char [phi:testChar::@4->print_char] - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:testChar::@4->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) ' ' [phi:testChar::@4->print_char#1] -- vbuaa=vbuc1 + // [127] call print_char + // [46] phi from testChar::@4 to print_char [phi:testChar::@4->print_char] + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:testChar::@4->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) ' ' [phi:testChar::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - // [126] phi from testChar::@4 to testChar::@5 [phi:testChar::@4->testChar::@5] + // [128] phi from testChar::@4 to testChar::@5 [phi:testChar::@4->testChar::@5] // testChar::@5 // print_sbyte(s) - // [127] call print_sbyte - // [131] phi from testChar::@5 to print_sbyte [phi:testChar::@5->print_sbyte] + // [129] call print_sbyte + // [133] phi from testChar::@5 to print_sbyte [phi:testChar::@5->print_sbyte] jsr print_sbyte - // [128] phi from testChar::@5 to testChar::@6 [phi:testChar::@5->testChar::@6] + // [130] phi from testChar::@5 to testChar::@6 [phi:testChar::@5->testChar::@6] // testChar::@6 // print_ln() - // [129] call print_ln + // [131] call print_ln // [30] phi from testChar::@6 to print_ln [phi:testChar::@6->print_ln] // [30] phi (byte*) print_line_cursor#39 = (byte*) 1024 [phi:testChar::@6->print_ln#0] -- pbuz1=pbuc1 lda #<$400 @@ -5115,7 +5183,7 @@ testChar: { jsr print_ln // testChar::@return // } - // [130] return + // [132] return rts str: .text "char: @" } @@ -5123,55 +5191,55 @@ testChar: { // Print a signed byte as HEX print_sbyte: { .const b = -testChar.s - // [132] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + // [134] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] // print_sbyte::@1 // print_char('-') - // [133] call print_char - // [64] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] - // [64] phi (byte*) print_char_cursor#92 = (byte*) print_char_cursor#25 [phi:print_sbyte::@1->print_char#0] -- register_copy - // [64] phi (byte) print_char::ch#15 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + // [135] call print_char + // [46] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + // [46] phi (byte*) print_char_cursor#94 = (byte*) print_char_cursor#26 [phi:print_sbyte::@1->print_char#0] -- register_copy + // [46] phi (byte) print_char::ch#16 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - // [134] phi from print_sbyte::@1 to print_sbyte::@2 [phi:print_sbyte::@1->print_sbyte::@2] + // [136] phi from print_sbyte::@1 to print_sbyte::@2 [phi:print_sbyte::@1->print_sbyte::@2] // print_sbyte::@2 // print_byte((byte)b) - // [135] call print_byte - // [56] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] - // [56] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#25 [phi:print_sbyte::@2->print_byte#0] -- register_copy - // [56] phi (byte) print_byte::b#5 = (byte)(const signed byte) print_sbyte::b#0 [phi:print_sbyte::@2->print_byte#1] -- vbuxx=vbuc1 + // [137] call print_byte + // [62] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + // [62] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#26 [phi:print_sbyte::@2->print_byte#0] -- register_copy + // [62] phi (byte) print_byte::b#5 = (byte)(const signed byte) print_sbyte::b#0 [phi:print_sbyte::@2->print_byte#1] -- vbuxx=vbuc1 ldx #b jsr print_byte // print_sbyte::@return // } - // [136] return + // [138] return rts } // print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $e - // [138] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - // [138] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + // [140] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + // [140] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - // [138] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - // [138] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + // [140] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + // [140] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy // print_cls::@1 b1: // *sc = ' ' - // [139] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + // [141] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y // for(byte* sc=print_screen; sc!=print_screen+1000; sc++) - // [140] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + // [142] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - // [141] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + // [143] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 @@ -5180,7 +5248,7 @@ print_cls: { bne b1 // print_cls::@return // } - // [142] return + // [144] return rts } // File Data diff --git a/src/test/ref/c-types.sym b/src/test/ref/c-types.sym index 2e2d87238..53add204a 100644 --- a/src/test/ref/c-types.sym +++ b/src/test/ref/c-types.sym @@ -19,21 +19,21 @@ (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#15 reg byte a 6.0 -(byte) print_char::ch#5 reg byte a 4.0 +(byte) print_char::ch#16 reg byte a 6.0 (byte) print_char::ch#6 reg byte a 4.0 +(byte) print_char::ch#7 reg byte a 4.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:10 11.0 -(byte*) print_char_cursor#134 print_char_cursor zp ZP_WORD:10 3.583333333333333 -(byte*) print_char_cursor#142 print_char_cursor zp ZP_WORD:10 6.0 -(byte*) print_char_cursor#143 print_char_cursor zp ZP_WORD:10 3.0 -(byte*) print_char_cursor#146 print_char_cursor zp ZP_WORD:10 3.9999999999999996 -(byte*) print_char_cursor#153 print_char_cursor zp ZP_WORD:10 8.0 -(byte*~) print_char_cursor#158 print_char_cursor zp ZP_WORD:10 4.0 -(byte*~) print_char_cursor#159 print_char_cursor zp ZP_WORD:10 4.0 -(byte*~) print_char_cursor#160 print_char_cursor zp ZP_WORD:10 4.0 -(byte*) print_char_cursor#25 print_char_cursor zp ZP_WORD:10 0.6000000000000004 -(byte*) print_char_cursor#92 print_char_cursor zp ZP_WORD:10 16.0 +(byte*) print_char_cursor#136 print_char_cursor zp ZP_WORD:10 3.583333333333333 +(byte*) print_char_cursor#144 print_char_cursor zp ZP_WORD:10 6.0 +(byte*) print_char_cursor#145 print_char_cursor zp ZP_WORD:10 3.0 +(byte*) print_char_cursor#149 print_char_cursor zp ZP_WORD:10 3.9999999999999996 +(byte*) print_char_cursor#156 print_char_cursor zp ZP_WORD:10 8.0 +(byte*~) print_char_cursor#161 print_char_cursor zp ZP_WORD:10 4.0 +(byte*~) print_char_cursor#162 print_char_cursor zp ZP_WORD:10 4.0 +(byte*~) print_char_cursor#163 print_char_cursor zp ZP_WORD:10 4.0 +(byte*) print_char_cursor#26 print_char_cursor zp ZP_WORD:10 0.6091954022988502 +(byte*) print_char_cursor#94 print_char_cursor zp ZP_WORD:10 17.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -66,11 +66,12 @@ (label) print_sdword::@1 (label) print_sdword::@2 (label) print_sdword::@3 +(label) print_sdword::@4 (label) print_sdword::@return (signed dword) print_sdword::dw (signed dword) print_sdword::dw#0 dw zp ZP_DWORD:4 4.0 -(signed dword) print_sdword::dw#3 dw zp ZP_DWORD:4 1.5 -(signed dword) print_sdword::dw#4 dw zp ZP_DWORD:4 4.0 +(signed dword) print_sdword::dw#3 dw zp ZP_DWORD:4 1.0 +(signed dword) print_sdword::dw#5 dw zp ZP_DWORD:4 4.0 (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 @@ -159,11 +160,11 @@ (const word) testShort::u#0 u = (word) $578 zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ] -zp ZP_DWORD:4 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#2 print_dword::dw#0 ] +zp ZP_DWORD:4 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 print_dword::dw#2 print_dword::dw#0 ] +reg byte a [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ] zp ZP_WORD:8 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#7 print_sword::w#0 print_sword::w#10 ] +zp ZP_WORD:10 [ print_char_cursor#144 print_char_cursor#145 print_char_cursor#94 print_char_cursor#149 print_char_cursor#26 print_char_cursor#136 print_char_cursor#156 print_char_cursor#161 print_char_cursor#162 print_char_cursor#163 print_char_cursor#1 ] reg byte x [ print_byte::b#5 print_byte::b#1 print_byte::b#2 ] -reg byte a [ print_char::ch#15 print_char::ch#5 print_char::ch#6 ] -zp ZP_WORD:10 [ print_char_cursor#92 print_char_cursor#146 print_char_cursor#142 print_char_cursor#143 print_char_cursor#25 print_char_cursor#134 print_char_cursor#153 print_char_cursor#158 print_char_cursor#159 print_char_cursor#160 print_char_cursor#1 ] zp ZP_WORD:12 [ print_str::str#5 print_str::str#7 print_str::str#0 ] zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] reg byte a [ print_byte::$0 ] diff --git a/src/test/ref/complex/splines/splines.asm b/src/test/ref/complex/splines/splines.asm new file mode 100644 index 000000000..fb8eb5cea --- /dev/null +++ b/src/test/ref/complex/splines/splines.asm @@ -0,0 +1,850 @@ +// Quadratic Spline Library for the C64 +// Implements an iterative algorithm using only addition for calculating quadratic splines +// +// A quadratic spline is a curve defined by 3 points: P0, P1 and P2. +// The curve connects P0 to P2 through a smooth curve that moves towards P1, but does usually not touch it. +// +// The general formula for the quadratic spline is as follows: +// A = P2 - 2*P1 + P0 +// B = 2*P1 - 2*P0 +// C = P0 +// P(t) = A*t*t + B*t + C +// for 0 <= t <= 1 +// +// This library implements a iterative algorithm using multiplications in the initialization and only additions for calculating each point on the spline. +// The iterative algorithm is based on the following: +// P(t+Dt) = P(t) + A*Dt*Dt + 2*A*t*Dt + B*Dt +// +// init: +// N = 16 (number of plots) +// Dt = 1/N +// P = C +// I = A*Dt*Dt + B*Dt +// J = 2*A*Dt*Dt +// loop(N times): +// plot(P) +// P = P + I +// I = I + J +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .label D011 = $d011 + .const VIC_BMM = $20 + .const VIC_DEN = $10 + .const VIC_RSEL = 8 + .label D018 = $d018 + // CIA#2 Port A: Serial bus, RS-232, VIC memory bank + .label CIA2_PORT_A = $dd00 + // CIA #2 Port A data direction register. + .label CIA2_PORT_A_DDR = $dd02 + // CIA #2 Timer A+B Value (32-bit) + .label CIA2_TIMER_AB = $dd04 + // CIA #2 Timer A Control Register + .label CIA2_TIMER_A_CONTROL = $dd0e + // CIA #2 Timer B Control Register + .label CIA2_TIMER_B_CONTROL = $dd0f + // Timer Control - Start/stop timer (0:stop, 1: start) + .const CIA_TIMER_CONTROL_START = 1 + // Timer Control - Time CONTINUOUS/ONE-SHOT (0:CONTINUOUS, 1: ONE-SHOT) + .const CIA_TIMER_CONTROL_CONTINUOUS = 0 + // Timer B Control - Timer counts (00:system cycles, 01: CNT pulses, 10: timer A underflow, 11: time A underflow while CNT is high) + .const CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = $40 + .const WHITE = 1 + // Clock cycles used to start & read the cycle clock by calling clock_start() and clock() once. Can be subtracted when calculating the number of cycles used by a routine. + // To make precise cycle measurements interrupts and the display must be disabled so neither steals any cycles from the code. + .const CLOCKS_PER_INIT = $12 + .label SCREEN = $400 + .label BITMAP_SCREEN = $5c00 + .label BITMAP_GRAPHICS = $6000 +main: { + .const p0_x = $32 + .const p0_y = $32 + .const p1a_x = $64 + .const p1a_y = $32 + .const p1b_x = $32 + .const p1b_y = $64 + .const p2_x = $64 + .const p2_y = $64 + .const p3a_x = $96 + .const p3a_y = $64 + .const p3b_x = $64 + .const p3b_y = $96 + .const p4_x = $96 + .const p4_y = $96 + .const vicSelectGfxBank1_toDd001_return = 3^(>BITMAP_SCREEN)/$40 + .const toD0181_return = (>(BITMAP_SCREEN&$3fff)*4)|(>BITMAP_GRAPHICS)/4&$f + .label _12 = $2b + .label cyclecount = $2b + jsr bitmap_init + jsr bitmap_clear + lda #3 + sta CIA2_PORT_A_DDR + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + lda #toD0181_return + sta D018 + lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 + sta D011 + jsr clock_start + lda #p0_y + sta splinePlot.p0_y+1 + lda #p2_y + sta splinePlot.p2_y+1 + lda #p1a_y + sta splinePlot.p1_y+1 + lda #p0_x + sta splinePlot.p0_x+1 + lda #p2_x + sta splinePlot.p2_x+1 + lda #p1a_x + sta splinePlot.p1_x+1 + jsr splinePlot + lda #p2_y + sta splinePlot.p0_y+1 + lda #p4_y + sta splinePlot.p2_y+1 + lda #p3a_y + sta splinePlot.p1_y+1 + lda #p2_x + sta splinePlot.p0_x+1 + lda #p4_x + sta splinePlot.p2_x+1 + lda #p3a_x + sta splinePlot.p1_x+1 + jsr splinePlot + lda #p2_y + sta splinePlot.p0_y+1 + lda #p0_y + sta splinePlot.p2_y+1 + lda #p1b_y + sta splinePlot.p1_y+1 + lda #p2_x + sta splinePlot.p0_x+1 + lda #p0_x + sta splinePlot.p2_x+1 + lda #p1b_x + sta splinePlot.p1_x+1 + jsr splinePlot + lda #p4_y + sta splinePlot.p0_y+1 + lda #p2_y + sta splinePlot.p2_y+1 + lda #p3b_y + sta splinePlot.p1_y+1 + lda #p4_x + sta splinePlot.p0_x+1 + lda #p2_x + sta splinePlot.p2_x+1 + lda #p3b_x + sta splinePlot.p1_x+1 + jsr splinePlot + jsr clock + lda cyclecount + sec + sbc #CLOCKS_PER_INIT + sta cyclecount+1 + lda cyclecount+2 + sbc #>$10 + sta cyclecount+2 + lda cyclecount+3 + sbc #>CLOCKS_PER_INIT>>$10 + sta cyclecount+3 + jsr print_dword_at + rts +} +// Print a dword as HEX at a specific position +// print_dword_at(dword zeropage($2b) dw) +print_dword_at: { + .label dw = $2b + lda dw+2 + sta print_word_at.w + lda dw+3 + sta print_word_at.w+1 + lda #SCREEN + sta print_word_at.at+1 + jsr print_word_at + lda dw + sta print_word_at.w + lda dw+1 + sta print_word_at.w+1 + lda #SCREEN+4 + sta print_word_at.at+1 + jsr print_word_at + rts +} +// Print a word as HEX at a specific position +// print_word_at(word zeropage(2) w, byte* zeropage(4) at) +print_word_at: { + .label w = 2 + .label at = 4 + lda w+1 + sta print_byte_at.b + jsr print_byte_at + lda w + sta print_byte_at.b + lda print_byte_at.at + clc + adc #2 + sta print_byte_at.at + bcc !+ + inc print_byte_at.at+1 + !: + jsr print_byte_at + rts +} +// Print a byte as HEX at a specific position +// print_byte_at(byte zeropage(6) b, byte* zeropage(4) at) +print_byte_at: { + .label b = 6 + .label at = 4 + lda b + lsr + lsr + lsr + lsr + tay + ldx print_hextab,y + lda at + sta print_char_at.at + lda at+1 + sta print_char_at.at+1 + jsr print_char_at + lda #$f + and b + tay + lda at + clc + adc #1 + sta print_char_at.at + lda at+1 + adc #0 + sta print_char_at.at+1 + ldx print_hextab,y + jsr print_char_at + rts +} +// Print a single char +// print_char_at(byte register(X) ch, byte* zeropage(7) at) +print_char_at: { + .label at = 7 + txa + ldy #0 + sta (at),y + rts +} +// Returns the processor clock time used since the beginning of an implementation defined era (normally the beginning of the program). +// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start() +clock: { + .label return = $2b + lda #<$ffffffff + sec + sbc CIA2_TIMER_AB + sta return + lda #>$ffffffff + sbc CIA2_TIMER_AB+1 + sta return+1 + lda #<$ffffffff>>$10 + sbc CIA2_TIMER_AB+2 + sta return+2 + lda #>$ffffffff>>$10 + sbc CIA2_TIMER_AB+3 + sta return+3 + rts +} +// splinePlot(signed word zeropage($d) p0_x, signed word zeropage($13) p0_y, signed word zeropage(9) p1_x, signed word zeropage($f) p1_y, signed word zeropage($b) p2_x, signed word zeropage($11) p2_y) +splinePlot: { + .label _1 = $b + .label _4 = $11 + .label _6 = 9 + .label _7 = $2f + .label _9 = $f + .label _10 = $31 + .label _12 = $1d + .label _13 = $1d + .label _14 = $33 + .label _15 = $33 + .label _16 = $33 + .label _18 = $21 + .label _19 = $21 + .label _20 = $37 + .label _21 = $37 + .label _22 = $37 + .label _24 = $3b + .label _25 = $3b + .label _27 = $3f + .label _28 = $3f + .label _30 = $15 + .label _32 = $19 + .label _35 = $45 + .label a_x = $b + .label a_y = $11 + .label b_x = $2f + .label b_y = $31 + .label i_x = $1d + .label i_y = $21 + .label j_x = $3b + .label j_y = $3f + .label p_x = $15 + .label p_y = $19 + .label p1_x = 9 + .label p2_x = $b + .label p0_x = $d + .label p1_y = $f + .label p2_y = $11 + .label p0_y = $13 + asl _6 + rol _6+1 + lda _1 + sec + sbc _6 + sta _1 + lda _1+1 + sbc _6+1 + sta _1+1 + lda a_x + clc + adc p0_x + sta a_x + lda a_x+1 + adc p0_x+1 + sta a_x+1 + asl _9 + rol _9+1 + lda _4 + sec + sbc _9 + sta _4 + lda _4+1 + sbc _9+1 + sta _4+1 + lda a_y + clc + adc p0_y + sta a_y + lda a_y+1 + adc p0_y+1 + sta a_y+1 + lda p0_x + asl + sta _7 + lda p0_x+1 + rol + sta _7+1 + lda _6 + sec + sbc b_x + sta b_x + lda _6+1 + sbc b_x+1 + sta b_x+1 + lda p0_y + asl + sta _10 + lda p0_y+1 + rol + sta _10+1 + lda _9 + sec + sbc b_y + sta b_y + lda _9+1 + sbc b_y+1 + sta b_y+1 + lda a_x + sta _12 + lda a_x+1 + sta _12+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _12+2 + sta _12+3 + lda _13+2 + sta _13+3 + lda _13+1 + sta _13+2 + lda _13 + sta _13+1 + lda #0 + sta _13 + lda b_x + sta _14 + lda b_x+1 + sta _14+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _14+2 + sta _14+3 + lda _15+2 + sta _15+3 + lda _15+1 + sta _15+2 + lda _15 + sta _15+1 + lda #0 + sta _15 + asl _16 + rol _16+1 + rol _16+2 + rol _16+3 + asl _16 + rol _16+1 + rol _16+2 + rol _16+3 + asl _16 + rol _16+1 + rol _16+2 + rol _16+3 + asl _16 + rol _16+1 + rol _16+2 + rol _16+3 + lda i_x + clc + adc _16 + sta i_x + lda i_x+1 + adc _16+1 + sta i_x+1 + lda i_x+2 + adc _16+2 + sta i_x+2 + lda i_x+3 + adc _16+3 + sta i_x+3 + lda a_y + sta _18 + lda a_y+1 + sta _18+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _18+2 + sta _18+3 + lda _19+2 + sta _19+3 + lda _19+1 + sta _19+2 + lda _19 + sta _19+1 + lda #0 + sta _19 + lda b_y + sta _20 + lda b_y+1 + sta _20+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _20+2 + sta _20+3 + lda _21+2 + sta _21+3 + lda _21+1 + sta _21+2 + lda _21 + sta _21+1 + lda #0 + sta _21 + asl _22 + rol _22+1 + rol _22+2 + rol _22+3 + asl _22 + rol _22+1 + rol _22+2 + rol _22+3 + asl _22 + rol _22+1 + rol _22+2 + rol _22+3 + asl _22 + rol _22+1 + rol _22+2 + rol _22+3 + lda i_y + clc + adc _22 + sta i_y + lda i_y+1 + adc _22+1 + sta i_y+1 + lda i_y+2 + adc _22+2 + sta i_y+2 + lda i_y+3 + adc _22+3 + sta i_y+3 + lda a_x + sta _24 + lda a_x+1 + sta _24+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _24+2 + sta _24+3 + lda _25+2 + sta _25+3 + lda _25+1 + sta _25+2 + lda _25 + sta _25+1 + lda #0 + sta _25 + asl j_x + rol j_x+1 + rol j_x+2 + rol j_x+3 + lda a_y + sta _27 + lda a_y+1 + sta _27+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _27+2 + sta _27+3 + lda _28+2 + sta _28+3 + lda _28+1 + sta _28+2 + lda _28 + sta _28+1 + lda #0 + sta _28 + asl j_y + rol j_y+1 + rol j_y+2 + rol j_y+3 + lda p0_x + sta _30 + lda p0_x+1 + sta _30+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _30+2 + sta _30+3 + lda p_x+1 + sta p_x+3 + lda p_x + sta p_x+2 + lda #0 + sta p_x + sta p_x+1 + lda p0_y + sta _32 + lda p0_y+1 + sta _32+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _32+2 + sta _32+3 + lda p_y+1 + sta p_y+3 + lda p_y + sta p_y+2 + lda #0 + sta p_y + sta p_y+1 + tax + b1: + lda p_x+2 + sta bitmap_plot.x + lda p_x+3 + sta bitmap_plot.x+1 + lda p_y+2 + sta _35 + lda p_y+3 + sta _35+1 + lda _35 + jsr bitmap_plot + lda p_x + clc + adc i_x + sta p_x + lda p_x+1 + adc i_x+1 + sta p_x+1 + lda p_x+2 + adc i_x+2 + sta p_x+2 + lda p_x+3 + adc i_x+3 + sta p_x+3 + lda p_y + clc + adc i_y + sta p_y + lda p_y+1 + adc i_y+1 + sta p_y+1 + lda p_y+2 + adc i_y+2 + sta p_y+2 + lda p_y+3 + adc i_y+3 + sta p_y+3 + lda i_x + clc + adc j_x + sta i_x + lda i_x+1 + adc j_x+1 + sta i_x+1 + lda i_x+2 + adc j_x+2 + sta i_x+2 + lda i_x+3 + adc j_x+3 + sta i_x+3 + lda i_y + clc + adc j_y + sta i_y + lda i_y+1 + adc j_y+1 + sta i_y+1 + lda i_y+2 + adc j_y+2 + sta i_y+2 + lda i_y+3 + adc j_y+3 + sta i_y+3 + inx + cpx #$11 + bne b1 + rts +} +// Plot a single dot in the bitmap +// bitmap_plot(word zeropage($43) x, byte register(A) y) +bitmap_plot: { + .label _1 = $49 + .label plotter = $47 + .label x = $43 + tay + lda bitmap_plot_yhi,y + sta plotter+1 + lda bitmap_plot_ylo,y + sta plotter + lda x + and #<$fff8 + sta _1 + lda x+1 + and #>$fff8 + sta _1+1 + lda plotter + clc + adc _1 + sta plotter + lda plotter+1 + adc _1+1 + sta plotter+1 + lda x + tay + lda bitmap_plot_bit,y + ldy #0 + ora (plotter),y + sta (plotter),y + rts +} +// Reset & start the processor clock time. The value can be read using clock(). +// This uses CIA #2 Timer A+B on the C64 +clock_start: { + // Setup CIA#2 timer A to count (down) CPU cycles + lda #CIA_TIMER_CONTROL_CONTINUOUS + sta CIA2_TIMER_A_CONTROL + lda #CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A + sta CIA2_TIMER_B_CONTROL + lda #<$ffffffff + sta CIA2_TIMER_AB + lda #>$ffffffff + sta CIA2_TIMER_AB+1 + lda #<$ffffffff>>$10 + sta CIA2_TIMER_AB+2 + lda #>$ffffffff>>$10 + sta CIA2_TIMER_AB+3 + lda #CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A + sta CIA2_TIMER_B_CONTROL + lda #CIA_TIMER_CONTROL_START + sta CIA2_TIMER_A_CONTROL + rts +} +// Clear all graphics on the bitmap +// bgcol - the background color to fill the screen with +// fgcol - the foreground color to fill the screen with +bitmap_clear: { + .const col = WHITE*$10 + ldx #col + lda #BITMAP_SCREEN + sta memset.str+1 + lda #<$3e8 + sta memset.num + lda #>$3e8 + sta memset.num+1 + jsr memset + ldx #0 + lda #BITMAP_GRAPHICS + sta memset.str+1 + lda #<$1f40 + sta memset.num + lda #>$1f40 + sta memset.num+1 + jsr memset + rts +} +// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. +// memset(void* zeropage($27) str, byte register(X) c, word zeropage($25) num) +memset: { + .label end = $25 + .label dst = $27 + .label num = $25 + .label str = $27 + lda num + beq breturn + lda num+1 + beq breturn + lda end + clc + adc str + sta end + lda end+1 + adc str+1 + sta end+1 + b2: + txa + ldy #0 + sta (dst),y + inc dst + bne !+ + inc dst+1 + !: + lda dst+1 + cmp end+1 + bne b2 + lda dst + cmp end + bne b2 + breturn: + rts +} +// Initialize bitmap plotting tables +bitmap_init: { + .label _7 = $4b + .label yoffs = $29 + ldx #0 + lda #$80 + b1: + sta bitmap_plot_bit,x + lsr + cmp #0 + bne b2 + lda #$80 + b2: + inx + cpx #0 + bne b1 + lda #BITMAP_GRAPHICS + sta yoffs+1 + ldx #0 + b3: + lda #7 + sax _7 + lda yoffs + ora _7 + sta bitmap_plot_ylo,x + lda yoffs+1 + sta bitmap_plot_yhi,x + lda #7 + cmp _7 + bne b4 + clc + lda yoffs + adc #<$28*8 + sta yoffs + lda yoffs+1 + adc #>$28*8 + sta yoffs+1 + b4: + inx + cpx #0 + bne b3 + rts +} + print_hextab: .text "0123456789abcdef" + // Tables for the plotter - initialized by calling bitmap_init(); + bitmap_plot_ylo: .fill $100, 0 + bitmap_plot_yhi: .fill $100, 0 + bitmap_plot_bit: .fill $100, 0 diff --git a/src/test/ref/complex/splines/splines.cfg b/src/test/ref/complex/splines/splines.cfg new file mode 100644 index 000000000..23cb27183 --- /dev/null +++ b/src/test/ref/complex/splines/splines.cfg @@ -0,0 +1,273 @@ +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() +main: scope:[main] from @1 + [4] phi() + [5] call bitmap_init + to:main::@2 +main::@2: scope:[main] from main + [6] phi() + [7] call bitmap_clear + to:main::vicSelectGfxBank1 +main::vicSelectGfxBank1: scope:[main] from main::@2 + [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 + to:main::vicSelectGfxBank1_toDd001 +main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 + [9] phi() + to:main::vicSelectGfxBank1_@1 +main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001 + [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 + to:main::toD0181 +main::toD0181: scope:[main] from main::vicSelectGfxBank1_@1 + [11] phi() + to:main::@1 +main::@1: scope:[main] from main::toD0181 + [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 + [13] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 + [14] call clock_start + to:main::@3 +main::@3: scope:[main] from main::@1 + [15] phi() + [16] call splinePlot + to:main::@4 +main::@4: scope:[main] from main::@3 + [17] phi() + [18] call splinePlot + to:main::@5 +main::@5: scope:[main] from main::@4 + [19] phi() + [20] call splinePlot + to:main::@6 +main::@6: scope:[main] from main::@5 + [21] phi() + [22] call splinePlot + to:main::@7 +main::@7: scope:[main] from main::@6 + [23] phi() + [24] call clock + [25] (dword) clock::return#2 ← (dword) clock::return#0 + to:main::@8 +main::@8: scope:[main] from main::@7 + [26] (dword~) main::$12 ← (dword) clock::return#2 + [27] (dword) main::cyclecount#0 ← (dword~) main::$12 - (const dword) CLOCKS_PER_INIT#0 + [28] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 + [29] call print_dword_at + to:main::@return +main::@return: scope:[main] from main::@8 + [30] return + to:@return +print_dword_at: scope:[print_dword_at] from main::@8 + [31] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 + [32] call print_word_at + to:print_dword_at::@1 +print_dword_at::@1: scope:[print_dword_at] from print_dword_at + [33] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 + [34] call print_word_at + to:print_dword_at::@return +print_dword_at::@return: scope:[print_dword_at] from print_dword_at::@1 + [35] return + to:@return +print_word_at: scope:[print_word_at] from print_dword_at print_dword_at::@1 + [36] (byte*) print_word_at::at#2 ← phi( print_dword_at/(const byte*) SCREEN#0 print_dword_at::@1/(const byte*) SCREEN#0+(byte) 4 ) + [36] (word) print_word_at::w#2 ← phi( print_dword_at/(word) print_word_at::w#0 print_dword_at::@1/(word) print_word_at::w#1 ) + [37] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2 + [38] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 + [39] call print_byte_at + to:print_word_at::@1 +print_word_at::@1: scope:[print_word_at] from print_word_at + [40] (byte) print_byte_at::b#1 ← < (word) print_word_at::w#2 + [41] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 + [42] call print_byte_at + to:print_word_at::@return +print_word_at::@return: scope:[print_word_at] from print_word_at::@1 + [43] return + to:@return +print_byte_at: scope:[print_byte_at] from print_word_at print_word_at::@1 + [44] (byte*) print_byte_at::at#2 ← phi( print_word_at/(byte*) print_byte_at::at#0 print_word_at::@1/(byte*) print_byte_at::at#1 ) + [44] (byte) print_byte_at::b#2 ← phi( print_word_at/(byte) print_byte_at::b#0 print_word_at::@1/(byte) print_byte_at::b#1 ) + [45] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 + [46] (byte) print_char_at::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) + [47] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 + [48] call print_char_at + to:print_byte_at::@1 +print_byte_at::@1: scope:[print_byte_at] from print_byte_at + [49] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f + [50] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 + [51] (byte) print_char_at::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) + [52] call print_char_at + to:print_byte_at::@return +print_byte_at::@return: scope:[print_byte_at] from print_byte_at::@1 + [53] return + to:@return +print_char_at: scope:[print_char_at] from print_byte_at print_byte_at::@1 + [54] (byte*) print_char_at::at#2 ← phi( print_byte_at/(byte*) print_char_at::at#0 print_byte_at::@1/(byte*) print_char_at::at#1 ) + [54] (byte) print_char_at::ch#2 ← phi( print_byte_at/(byte) print_char_at::ch#0 print_byte_at::@1/(byte) print_char_at::ch#1 ) + [55] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 + to:print_char_at::@return +print_char_at::@return: scope:[print_char_at] from print_char_at + [56] return + to:@return +clock: scope:[clock] from main::@7 + [57] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB#0) + to:clock::@return +clock::@return: scope:[clock] from clock + [58] return + to:@return +splinePlot: scope:[splinePlot] from main::@3 main::@4 main::@5 main::@6 + [59] (signed word) splinePlot::p0_y#4 ← phi( main::@3/(const signed word) main::p0_y#0 main::@4/(const signed word) main::p2_y#0 main::@5/(const signed word) main::p2_y#0 main::@6/(const signed word) main::p4_y#0 ) + [59] (signed word) splinePlot::p2_y#4 ← phi( main::@3/(const signed word) main::p2_y#0 main::@4/(const signed word) main::p4_y#0 main::@5/(const signed word) main::p0_y#0 main::@6/(const signed word) main::p2_y#0 ) + [59] (signed word) splinePlot::p1_y#4 ← phi( main::@3/(const signed word) main::p1a_y#0 main::@4/(const signed word) main::p3a_y#0 main::@5/(const signed word) main::p1b_y#0 main::@6/(const signed word) main::p3b_y#0 ) + [59] (signed word) splinePlot::p0_x#4 ← phi( main::@3/(const signed word) main::p0_x#0 main::@4/(const signed word) main::p2_x#0 main::@5/(const signed word) main::p2_x#0 main::@6/(const signed word) main::p4_x#0 ) + [59] (signed word) splinePlot::p2_x#4 ← phi( main::@3/(const signed word) main::p2_x#0 main::@4/(const signed word) main::p4_x#0 main::@5/(const signed word) main::p0_x#0 main::@6/(const signed word) main::p2_x#0 ) + [59] (signed word) splinePlot::p1_x#4 ← phi( main::@3/(const signed word) main::p1a_x#0 main::@4/(const signed word) main::p3a_x#0 main::@5/(const signed word) main::p1b_x#0 main::@6/(const signed word) main::p3b_x#0 ) + [60] (signed word~) splinePlot::$6 ← (signed word) splinePlot::p1_x#4 << (byte) 1 + [61] (signed word~) splinePlot::$1 ← (signed word) splinePlot::p2_x#4 - (signed word~) splinePlot::$6 + [62] (signed word) splinePlot::a_x#0 ← (signed word~) splinePlot::$1 + (signed word) splinePlot::p0_x#4 + [63] (signed word~) splinePlot::$9 ← (signed word) splinePlot::p1_y#4 << (byte) 1 + [64] (signed word~) splinePlot::$4 ← (signed word) splinePlot::p2_y#4 - (signed word~) splinePlot::$9 + [65] (signed word) splinePlot::a_y#0 ← (signed word~) splinePlot::$4 + (signed word) splinePlot::p0_y#4 + [66] (signed word~) splinePlot::$7 ← (signed word) splinePlot::p0_x#4 << (byte) 1 + [67] (signed word) splinePlot::b_x#0 ← (signed word~) splinePlot::$6 - (signed word~) splinePlot::$7 + [68] (signed word~) splinePlot::$10 ← (signed word) splinePlot::p0_y#4 << (byte) 1 + [69] (signed word) splinePlot::b_y#0 ← (signed word~) splinePlot::$9 - (signed word~) splinePlot::$10 + [70] (signed dword~) splinePlot::$12 ← (signed dword)(signed word) splinePlot::a_x#0 + [71] (signed dword~) splinePlot::$13 ← (signed dword~) splinePlot::$12 << (byte) 8 + [72] (signed dword~) splinePlot::$14 ← (signed dword)(signed word) splinePlot::b_x#0 + [73] (signed dword~) splinePlot::$15 ← (signed dword~) splinePlot::$14 << (byte) 8 + [74] (signed dword~) splinePlot::$16 ← (signed dword~) splinePlot::$15 << (byte) 4 + [75] (signed dword) splinePlot::i_x#0 ← (signed dword~) splinePlot::$13 + (signed dword~) splinePlot::$16 + [76] (signed dword~) splinePlot::$18 ← (signed dword)(signed word) splinePlot::a_y#0 + [77] (signed dword~) splinePlot::$19 ← (signed dword~) splinePlot::$18 << (byte) 8 + [78] (signed dword~) splinePlot::$20 ← (signed dword)(signed word) splinePlot::b_y#0 + [79] (signed dword~) splinePlot::$21 ← (signed dword~) splinePlot::$20 << (byte) 8 + [80] (signed dword~) splinePlot::$22 ← (signed dword~) splinePlot::$21 << (byte) 4 + [81] (signed dword) splinePlot::i_y#0 ← (signed dword~) splinePlot::$19 + (signed dword~) splinePlot::$22 + [82] (signed dword~) splinePlot::$24 ← (signed dword)(signed word) splinePlot::a_x#0 + [83] (signed dword~) splinePlot::$25 ← (signed dword~) splinePlot::$24 << (byte) 8 + [84] (signed dword) splinePlot::j_x#0 ← (signed dword~) splinePlot::$25 << (byte) 1 + [85] (signed dword~) splinePlot::$27 ← (signed dword)(signed word) splinePlot::a_y#0 + [86] (signed dword~) splinePlot::$28 ← (signed dword~) splinePlot::$27 << (byte) 8 + [87] (signed dword) splinePlot::j_y#0 ← (signed dword~) splinePlot::$28 << (byte) 1 + [88] (signed dword~) splinePlot::$30 ← (signed dword)(signed word) splinePlot::p0_x#4 + [89] (signed dword) splinePlot::p_x#0 ← (signed dword~) splinePlot::$30 << (byte) $10 + [90] (signed dword~) splinePlot::$32 ← (signed dword)(signed word) splinePlot::p0_y#4 + [91] (signed dword) splinePlot::p_y#0 ← (signed dword~) splinePlot::$32 << (byte) $10 + to:splinePlot::@1 +splinePlot::@1: scope:[splinePlot] from splinePlot splinePlot::@2 + [92] (byte) splinePlot::n#2 ← phi( splinePlot/(byte) 0 splinePlot::@2/(byte) splinePlot::n#1 ) + [92] (signed dword) splinePlot::i_y#2 ← phi( splinePlot/(signed dword) splinePlot::i_y#0 splinePlot::@2/(signed dword) splinePlot::i_y#1 ) + [92] (signed dword) splinePlot::i_x#2 ← phi( splinePlot/(signed dword) splinePlot::i_x#0 splinePlot::@2/(signed dword) splinePlot::i_x#1 ) + [92] (signed dword) splinePlot::p_y#2 ← phi( splinePlot/(signed dword) splinePlot::p_y#0 splinePlot::@2/(signed dword) splinePlot::p_y#1 ) + [92] (signed dword) splinePlot::p_x#2 ← phi( splinePlot/(signed dword) splinePlot::p_x#0 splinePlot::@2/(signed dword) splinePlot::p_x#1 ) + [93] (word) bitmap_plot::x#0 ← > (signed dword) splinePlot::p_x#2 + [94] (word~) splinePlot::$35 ← > (signed dword) splinePlot::p_y#2 + [95] (byte) bitmap_plot::y#0 ← < (word~) splinePlot::$35 + [96] call bitmap_plot + to:splinePlot::@2 +splinePlot::@2: scope:[splinePlot] from splinePlot::@1 + [97] (signed dword) splinePlot::p_x#1 ← (signed dword) splinePlot::p_x#2 + (signed dword) splinePlot::i_x#2 + [98] (signed dword) splinePlot::p_y#1 ← (signed dword) splinePlot::p_y#2 + (signed dword) splinePlot::i_y#2 + [99] (signed dword) splinePlot::i_x#1 ← (signed dword) splinePlot::i_x#2 + (signed dword) splinePlot::j_x#0 + [100] (signed dword) splinePlot::i_y#1 ← (signed dword) splinePlot::i_y#2 + (signed dword) splinePlot::j_y#0 + [101] (byte) splinePlot::n#1 ← ++ (byte) splinePlot::n#2 + [102] if((byte) splinePlot::n#1!=(byte) $11) goto splinePlot::@1 + to:splinePlot::@return +splinePlot::@return: scope:[splinePlot] from splinePlot::@2 + [103] return + to:@return +bitmap_plot: scope:[bitmap_plot] from splinePlot::@1 + [104] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) + [105] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 + [106] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 + [107] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 + [108] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) + to:bitmap_plot::@return +bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot + [109] return + to:@return +clock_start: scope:[clock_start] from main::@1 + [110] *((const byte*) CIA2_TIMER_A_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_CONTINUOUS#0 + [111] *((const byte*) CIA2_TIMER_B_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 + [112] *((const dword*) CIA2_TIMER_AB#0) ← (dword) $ffffffff + [113] *((const byte*) CIA2_TIMER_B_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_START#0|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 + [114] *((const byte*) CIA2_TIMER_A_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_START#0 + to:clock_start::@return +clock_start::@return: scope:[clock_start] from clock_start + [115] return + to:@return +bitmap_clear: scope:[bitmap_clear] from main::@2 + [116] phi() + [117] call memset + to:bitmap_clear::@1 +bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear + [118] phi() + [119] call memset + to:bitmap_clear::@return +bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1 + [120] return + to:@return +memset: scope:[memset] from bitmap_clear bitmap_clear::@1 + [121] (byte) memset::c#3 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) + [121] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) BITMAP_SCREEN#0 bitmap_clear::@1/(void*)(const byte*) BITMAP_GRAPHICS#0 ) + [121] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) + [122] if((word) memset::num#2<=(byte) 0) goto memset::@return + to:memset::@1 +memset::@1: scope:[memset] from memset + [123] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 + [124] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 + to:memset::@2 +memset::@2: scope:[memset] from memset::@1 memset::@2 + [125] (byte*) memset::dst#2 ← phi( memset::@1/(byte*~) memset::dst#3 memset::@2/(byte*) memset::dst#1 ) + [126] *((byte*) memset::dst#2) ← (byte) memset::c#3 + [127] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 + [128] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 + to:memset::@return +memset::@return: scope:[memset] from memset memset::@2 + [129] return + to:@return +bitmap_init: scope:[bitmap_init] from main + [130] phi() + to:bitmap_init::@1 +bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 + [131] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + [131] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + [132] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 + [134] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 + to:bitmap_init::@2 +bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1 + [135] phi() + to:bitmap_init::@2 +bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6 + [136] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 ) + [137] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 + [138] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 + to:bitmap_init::@3 +bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 + [139] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP_GRAPHICS#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 ) + [139] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 ) + [140] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 + [141] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 + [142] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 + [143] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 + [144] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 + [145] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 + [146] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 + to:bitmap_init::@5 +bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3 + [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 + to:bitmap_init::@4 +bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5 + [148] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 ) + [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 + [150] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 + to:bitmap_init::@return +bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 + [151] return + to:@return diff --git a/src/test/ref/complex/splines/splines.log b/src/test/ref/complex/splines/splines.log new file mode 100644 index 000000000..a88ccb490 --- /dev/null +++ b/src/test/ref/complex/splines/splines.log @@ -0,0 +1,7700 @@ +Created struct value member variable (signed word) main::p0_x +Created struct value member variable (signed word) main::p0_y +Converted struct value to member variables (struct SplineVector16) main::p0 +Created struct value member variable (signed word) main::p1a_x +Created struct value member variable (signed word) main::p1a_y +Converted struct value to member variables (struct SplineVector16) main::p1a +Created struct value member variable (signed word) main::p1b_x +Created struct value member variable (signed word) main::p1b_y +Converted struct value to member variables (struct SplineVector16) main::p1b +Created struct value member variable (signed word) main::p2_x +Created struct value member variable (signed word) main::p2_y +Converted struct value to member variables (struct SplineVector16) main::p2 +Created struct value member variable (signed word) main::p3a_x +Created struct value member variable (signed word) main::p3a_y +Converted struct value to member variables (struct SplineVector16) main::p3a +Created struct value member variable (signed word) main::p3b_x +Created struct value member variable (signed word) main::p3b_y +Converted struct value to member variables (struct SplineVector16) main::p3b +Created struct value member variable (signed word) main::p4_x +Created struct value member variable (signed word) main::p4_y +Converted struct value to member variables (struct SplineVector16) main::p4 +Created struct value member variable (signed word) splinePlot::p0_x +Created struct value member variable (signed word) splinePlot::p0_y +Converted struct value to member variables (struct SplineVector16) splinePlot::p0 +Created struct value member variable (signed word) splinePlot::p1_x +Created struct value member variable (signed word) splinePlot::p1_y +Converted struct value to member variables (struct SplineVector16) splinePlot::p1 +Created struct value member variable (signed word) splinePlot::p2_x +Created struct value member variable (signed word) splinePlot::p2_y +Converted struct value to member variables (struct SplineVector16) splinePlot::p2 +Created struct value member variable (signed word) splinePlot::a_x +Created struct value member variable (signed word) splinePlot::a_y +Converted struct value to member variables (struct SplineVector16) splinePlot::a +Created struct value member variable (signed word) splinePlot::b_x +Created struct value member variable (signed word) splinePlot::b_y +Converted struct value to member variables (struct SplineVector16) splinePlot::b +Created struct value member variable (signed dword) splinePlot::i_x +Created struct value member variable (signed dword) splinePlot::i_y +Converted struct value to member variables (struct SplineVector32) splinePlot::i +Created struct value member variable (signed dword) splinePlot::j_x +Created struct value member variable (signed dword) splinePlot::j_y +Converted struct value to member variables (struct SplineVector32) splinePlot::j +Created struct value member variable (signed dword) splinePlot::p_x +Created struct value member variable (signed dword) splinePlot::p_y +Converted struct value to member variables (struct SplineVector32) splinePlot::p +Created struct value member variable (signed word) print_spline16::p_x +Created struct value member variable (signed word) print_spline16::p_y +Converted struct value to member variables (struct SplineVector16) print_spline16::p +Created struct value member variable (signed dword) print_spline32::p_x +Created struct value member variable (signed dword) print_spline32::p_y +Converted struct value to member variables (struct SplineVector32) print_spline32::p +Converted procedure struct value parameter to member variables (void()) splinePlot((signed word) splinePlot::p0_x , (signed word) splinePlot::p0_y , (signed word) splinePlot::p1_x , (signed word) splinePlot::p1_y , (signed word) splinePlot::p2_x , (signed word) splinePlot::p2_y) +Converted procedure struct value parameter to member variables (void()) print_spline16((signed word) print_spline16::p_x , (signed word) print_spline16::p_y) +Converted procedure struct value parameter to member variables (void()) print_spline32((signed dword) print_spline32::p_x , (signed dword) print_spline32::p_y) +Adding struct value list initializer (signed word) main::p0_x ← (number) $32 +Adding struct value list initializer (signed word) main::p0_y ← (number) $32 +Adding struct value list initializer (signed word) main::p1a_x ← (number) $64 +Adding struct value list initializer (signed word) main::p1a_y ← (number) $32 +Adding struct value list initializer (signed word) main::p1b_x ← (number) $32 +Adding struct value list initializer (signed word) main::p1b_y ← (number) $64 +Adding struct value list initializer (signed word) main::p2_x ← (number) $64 +Adding struct value list initializer (signed word) main::p2_y ← (number) $64 +Adding struct value list initializer (signed word) main::p3a_x ← (number) $96 +Adding struct value list initializer (signed word) main::p3a_y ← (number) $64 +Adding struct value list initializer (signed word) main::p3b_x ← (number) $64 +Adding struct value list initializer (signed word) main::p3b_y ← (number) $96 +Adding struct value list initializer (signed word) main::p4_x ← (number) $96 +Adding struct value list initializer (signed word) main::p4_y ← (number) $96 +Converted procedure struct value parameter to member variables in call (void~) main::$8 ← call splinePlot (signed word) main::p0_x (signed word) main::p0_y (signed word) main::p1a_x (signed word) main::p1a_y (signed word) main::p2_x (signed word) main::p2_y +Converted procedure struct value parameter to member variables in call (void~) main::$9 ← call splinePlot (signed word) main::p2_x (signed word) main::p2_y (signed word) main::p3a_x (signed word) main::p3a_y (signed word) main::p4_x (signed word) main::p4_y +Converted procedure struct value parameter to member variables in call (void~) main::$10 ← call splinePlot (signed word) main::p2_x (signed word) main::p2_y (signed word) main::p1b_x (signed word) main::p1b_y (signed word) main::p0_x (signed word) main::p0_y +Converted procedure struct value parameter to member variables in call (void~) main::$11 ← call splinePlot (signed word) main::p4_x (signed word) main::p4_y (signed word) main::p3b_x (signed word) main::p3b_y (signed word) main::p2_x (signed word) main::p2_y +Adding struct value list initializer (signed word) splinePlot::a_x ← (number~) splinePlot::$2 +Adding struct value list initializer (signed word) splinePlot::a_y ← (number~) splinePlot::$5 +Adding struct value list initializer (signed word) splinePlot::b_x ← (number~) splinePlot::$8 +Adding struct value list initializer (signed word) splinePlot::b_y ← (number~) splinePlot::$11 +Adding struct value list initializer (signed dword) splinePlot::i_x ← (number~) splinePlot::$17 +Adding struct value list initializer (signed dword) splinePlot::i_y ← (number~) splinePlot::$23 +Adding struct value list initializer (signed dword) splinePlot::j_x ← (number~) splinePlot::$26 +Adding struct value list initializer (signed dword) splinePlot::j_y ← (number~) splinePlot::$29 +Adding struct value list initializer (signed dword) splinePlot::p_x ← (number~) splinePlot::$31 +Adding struct value list initializer (signed dword) splinePlot::p_y ← (number~) splinePlot::$33 +Adding struct value list initializer (signed dword) splinePlot::p_x ← (signed dword~) splinePlot::$38 +Adding struct value list initializer (signed dword) splinePlot::p_y ← (signed dword~) splinePlot::$39 +Adding struct value list initializer (signed dword) splinePlot::i_x ← (signed dword~) splinePlot::$40 +Adding struct value list initializer (signed dword) splinePlot::i_y ← (signed dword~) splinePlot::$41 +Replacing struct member reference (struct SplineVector16) splinePlot::p1.x with member variable reference (signed word) splinePlot::p1_x +Replacing struct member reference (struct SplineVector16) splinePlot::p2.x with member variable reference (signed word) splinePlot::p2_x +Replacing struct member reference (struct SplineVector16) splinePlot::p0.x with member variable reference (signed word) splinePlot::p0_x +Replacing struct member reference (struct SplineVector16) splinePlot::p1.y with member variable reference (signed word) splinePlot::p1_y +Replacing struct member reference (struct SplineVector16) splinePlot::p2.y with member variable reference (signed word) splinePlot::p2_y +Replacing struct member reference (struct SplineVector16) splinePlot::p0.y with member variable reference (signed word) splinePlot::p0_y +Replacing struct member reference (struct SplineVector16) splinePlot::p1.x with member variable reference (signed word) splinePlot::p1_x +Replacing struct member reference (struct SplineVector16) splinePlot::p0.x with member variable reference (signed word) splinePlot::p0_x +Replacing struct member reference (struct SplineVector16) splinePlot::p1.y with member variable reference (signed word) splinePlot::p1_y +Replacing struct member reference (struct SplineVector16) splinePlot::p0.y with member variable reference (signed word) splinePlot::p0_y +Replacing struct member reference (struct SplineVector16) splinePlot::a.x with member variable reference (signed word) splinePlot::a_x +Replacing struct member reference (struct SplineVector16) splinePlot::b.x with member variable reference (signed word) splinePlot::b_x +Replacing struct member reference (struct SplineVector16) splinePlot::a.y with member variable reference (signed word) splinePlot::a_y +Replacing struct member reference (struct SplineVector16) splinePlot::b.y with member variable reference (signed word) splinePlot::b_y +Replacing struct member reference (struct SplineVector16) splinePlot::a.x with member variable reference (signed word) splinePlot::a_x +Replacing struct member reference (struct SplineVector16) splinePlot::a.y with member variable reference (signed word) splinePlot::a_y +Replacing struct member reference (struct SplineVector16) splinePlot::p0.x with member variable reference (signed word) splinePlot::p0_x +Replacing struct member reference (struct SplineVector16) splinePlot::p0.y with member variable reference (signed word) splinePlot::p0_y +Replacing struct member reference (struct SplineVector32) splinePlot::p.x with member variable reference (signed dword) splinePlot::p_x +Replacing struct member reference (struct SplineVector32) splinePlot::p.y with member variable reference (signed dword) splinePlot::p_y +Replacing struct member reference (struct SplineVector32) splinePlot::p.x with member variable reference (signed dword) splinePlot::p_x +Replacing struct member reference (struct SplineVector32) splinePlot::i.x with member variable reference (signed dword) splinePlot::i_x +Replacing struct member reference (struct SplineVector32) splinePlot::p.y with member variable reference (signed dword) splinePlot::p_y +Replacing struct member reference (struct SplineVector32) splinePlot::i.y with member variable reference (signed dword) splinePlot::i_y +Replacing struct member reference (struct SplineVector32) splinePlot::i.x with member variable reference (signed dword) splinePlot::i_x +Replacing struct member reference (struct SplineVector32) splinePlot::j.x with member variable reference (signed dword) splinePlot::j_x +Replacing struct member reference (struct SplineVector32) splinePlot::i.y with member variable reference (signed dword) splinePlot::i_y +Replacing struct member reference (struct SplineVector32) splinePlot::j.y with member variable reference (signed dword) splinePlot::j_y +Replacing struct member reference (struct SplineVector16) print_spline16::p.x with member variable reference (signed word) print_spline16::p_x +Replacing struct member reference (struct SplineVector16) print_spline16::p.y with member variable reference (signed word) print_spline16::p_y +Replacing struct member reference (struct SplineVector32) print_spline32::p.x with member variable reference (signed dword) print_spline32::p_x +Replacing struct member reference (struct SplineVector32) print_spline32::p.y with member variable reference (signed dword) print_spline32::p_y +Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src) +Warning! Adding boolean cast to non-boolean condition (number~) abs_u16::$1 +Warning! Adding boolean cast to non-boolean condition (number~) sgn_u16::$1 +Identified constant variable (signed word) main::p0_x +Identified constant variable (signed word) main::p0_y +Identified constant variable (signed word) main::p1a_x +Identified constant variable (signed word) main::p1a_y +Identified constant variable (signed word) main::p1b_x +Identified constant variable (signed word) main::p1b_y +Identified constant variable (signed word) main::p2_x +Identified constant variable (signed word) main::p2_y +Identified constant variable (signed word) main::p3a_x +Identified constant variable (signed word) main::p3a_y +Identified constant variable (signed word) main::p3b_x +Identified constant variable (signed word) main::p3b_y +Identified constant variable (signed word) main::p4_x +Identified constant variable (signed word) main::p4_y +Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx +Inlined call call vicSelectGfxBank (byte*) BITMAP_SCREEN +Inlined call (byte~) main::$3 ← call toD018 (byte*) BITMAP_SCREEN (byte*) BITMAP_GRAPHICS +Culled Empty Block (label) @1 +Culled Empty Block (label) @2 +Culled Empty Block (label) @3 +Culled Empty Block (label) clock::@1 +Culled Empty Block (label) @5 +Culled Empty Block (label) @6 +Culled Empty Block (label) @7 +Culled Empty Block (label) @8 +Culled Empty Block (label) @9 +Culled Empty Block (label) @10 +Culled Empty Block (label) @11 +Culled Empty Block (label) @12 +Culled Empty Block (label) @13 +Culled Empty Block (label) @14 +Culled Empty Block (label) @15 +Culled Empty Block (label) @16 +Culled Empty Block (label) @17 +Culled Empty Block (label) @18 +Culled Empty Block (label) @19 +Culled Empty Block (label) @21 +Culled Empty Block (label) @22 +Culled Empty Block (label) @23 +Culled Empty Block (label) @24 +Culled Empty Block (label) @25 +Culled Empty Block (label) @26 +Culled Empty Block (label) @27 +Culled Empty Block (label) @28 +Culled Empty Block (label) @29 +Culled Empty Block (label) memset::@5 +Culled Empty Block (label) memset::@3 +Culled Empty Block (label) @30 +Culled Empty Block (label) bitmap_init::@8 +Culled Empty Block (label) @32 +Culled Empty Block (label) @33 +Culled Empty Block (label) @34 +Culled Empty Block (label) @35 +Culled Empty Block (label) @36 +Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@1 +Culled Empty Block (label) main::vicSelectGfxBank1_@return +Culled Empty Block (label) main::toD0181_@1 +Culled Empty Block (label) @38 +Culled Empty Block (label) splinePlot::@2 +Culled Empty Block (label) @39 +Culled Empty Block (label) @40 + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + (byte*) D011#0 ← ((byte*)) (number) $d011 + (byte) VIC_BMM#0 ← (number) $20 + (byte) VIC_DEN#0 ← (number) $10 + (byte) VIC_RSEL#0 ← (number) 8 + (byte*) D018#0 ← ((byte*)) (number) $d018 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (number) $dd00 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (number) $dd02 + (dword*) CIA2_TIMER_AB#0 ← ((dword*)) (number) $dd04 + (byte*) CIA2_TIMER_A_CONTROL#0 ← ((byte*)) (number) $dd0e + (byte*) CIA2_TIMER_B_CONTROL#0 ← ((byte*)) (number) $dd0f + (byte) CIA_TIMER_CONTROL_STOP#0 ← (number) 0 + (byte) CIA_TIMER_CONTROL_START#0 ← (number) 1 + (byte) CIA_TIMER_CONTROL_CONTINUOUS#0 ← (number) 0 + (byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES#0 ← (number) 0 + (byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 ← (number) $40 + (byte) BLACK#0 ← (number) 0 + (byte) WHITE#0 ← (number) 1 + to:@4 +@4: scope:[] from @begin + (dword) CLOCKS_PER_INIT#0 ← (number) $12 + to:@20 +clock: scope:[clock] from main::@9 + (number~) clock::$0 ← (number) $ffffffff - *((dword*) CIA2_TIMER_AB#0) + (dword) clock::return#0 ← (number~) clock::$0 + to:clock::@return +clock::@return: scope:[clock] from clock + (dword) clock::return#3 ← phi( clock/(dword) clock::return#0 ) + (dword) clock::return#1 ← (dword) clock::return#3 + return + to:@return +clock_start: scope:[clock_start] from main::@2 + (byte~) clock_start::$0 ← (byte) CIA_TIMER_CONTROL_STOP#0 | (byte) CIA_TIMER_CONTROL_CONTINUOUS#0 + (byte~) clock_start::$1 ← (byte~) clock_start::$0 | (byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES#0 + *((byte*) CIA2_TIMER_A_CONTROL#0) ← (byte~) clock_start::$1 + (byte~) clock_start::$2 ← (byte) CIA_TIMER_CONTROL_STOP#0 | (byte) CIA_TIMER_CONTROL_CONTINUOUS#0 + (byte~) clock_start::$3 ← (byte~) clock_start::$2 | (byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 + *((byte*) CIA2_TIMER_B_CONTROL#0) ← (byte~) clock_start::$3 + *((dword*) CIA2_TIMER_AB#0) ← (number) $ffffffff + (byte~) clock_start::$4 ← (byte) CIA_TIMER_CONTROL_START#0 | (byte) CIA_TIMER_CONTROL_CONTINUOUS#0 + (byte~) clock_start::$5 ← (byte~) clock_start::$4 | (byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 + *((byte*) CIA2_TIMER_B_CONTROL#0) ← (byte~) clock_start::$5 + (byte~) clock_start::$6 ← (byte) CIA_TIMER_CONTROL_START#0 | (byte) CIA_TIMER_CONTROL_CONTINUOUS#0 + (byte~) clock_start::$7 ← (byte~) clock_start::$6 | (byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES#0 + *((byte*) CIA2_TIMER_A_CONTROL#0) ← (byte~) clock_start::$7 + to:clock_start::@return +clock_start::@return: scope:[clock_start] from clock_start + return + to:@return +print_word_at: scope:[print_word_at] from print_dword_at print_dword_at::@1 + (byte*) print_word_at::at#2 ← phi( print_dword_at/(byte*) print_word_at::at#0 print_dword_at::@1/(byte*) print_word_at::at#1 ) + (word) print_word_at::w#2 ← phi( print_dword_at/(word) print_word_at::w#0 print_dword_at::@1/(word) print_word_at::w#1 ) + (byte~) print_word_at::$0 ← > (word) print_word_at::w#2 + (byte) print_byte_at::b#0 ← (byte~) print_word_at::$0 + (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 + call print_byte_at + to:print_word_at::@1 +print_word_at::@1: scope:[print_word_at] from print_word_at + (byte*) print_word_at::at#3 ← phi( print_word_at/(byte*) print_word_at::at#2 ) + (word) print_word_at::w#3 ← phi( print_word_at/(word) print_word_at::w#2 ) + (byte~) print_word_at::$2 ← < (word) print_word_at::w#3 + (byte*~) print_word_at::$3 ← (byte*) print_word_at::at#3 + (number) 2 + (byte) print_byte_at::b#1 ← (byte~) print_word_at::$2 + (byte*) print_byte_at::at#1 ← (byte*~) print_word_at::$3 + call print_byte_at + to:print_word_at::@2 +print_word_at::@2: scope:[print_word_at] from print_word_at::@1 + to:print_word_at::@return +print_word_at::@return: scope:[print_word_at] from print_word_at::@2 + return + to:@return +print_dword_at: scope:[print_dword_at] from main::@10 + (byte*) print_dword_at::at#1 ← phi( main::@10/(byte*) print_dword_at::at#0 ) + (dword) print_dword_at::dw#1 ← phi( main::@10/(dword) print_dword_at::dw#0 ) + (word~) print_dword_at::$0 ← > (dword) print_dword_at::dw#1 + (word) print_word_at::w#0 ← (word~) print_dword_at::$0 + (byte*) print_word_at::at#0 ← (byte*) print_dword_at::at#1 + call print_word_at + to:print_dword_at::@1 +print_dword_at::@1: scope:[print_dword_at] from print_dword_at + (byte*) print_dword_at::at#2 ← phi( print_dword_at/(byte*) print_dword_at::at#1 ) + (dword) print_dword_at::dw#2 ← phi( print_dword_at/(dword) print_dword_at::dw#1 ) + (word~) print_dword_at::$2 ← < (dword) print_dword_at::dw#2 + (byte*~) print_dword_at::$3 ← (byte*) print_dword_at::at#2 + (number) 4 + (word) print_word_at::w#1 ← (word~) print_dword_at::$2 + (byte*) print_word_at::at#1 ← (byte*~) print_dword_at::$3 + call print_word_at + to:print_dword_at::@2 +print_dword_at::@2: scope:[print_dword_at] from print_dword_at::@1 + to:print_dword_at::@return +print_dword_at::@return: scope:[print_dword_at] from print_dword_at::@2 + return + to:@return +@20: scope:[] from @4 + (byte[]) print_hextab#0 ← (const string) $0 + to:@31 +print_byte_at: scope:[print_byte_at] from print_word_at print_word_at::@1 + (byte*) print_byte_at::at#2 ← phi( print_word_at/(byte*) print_byte_at::at#0 print_word_at::@1/(byte*) print_byte_at::at#1 ) + (byte) print_byte_at::b#2 ← phi( print_word_at/(byte) print_byte_at::b#0 print_word_at::@1/(byte) print_byte_at::b#1 ) + (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (number) 4 + (byte) print_char_at::ch#0 ← *((byte[]) print_hextab#0 + (byte~) print_byte_at::$0) + (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 + call print_char_at + to:print_byte_at::@1 +print_byte_at::@1: scope:[print_byte_at] from print_byte_at + (byte*) print_byte_at::at#3 ← phi( print_byte_at/(byte*) print_byte_at::at#2 ) + (byte) print_byte_at::b#3 ← phi( print_byte_at/(byte) print_byte_at::b#2 ) + (number~) print_byte_at::$2 ← (byte) print_byte_at::b#3 & (number) $f + (byte*~) print_byte_at::$3 ← (byte*) print_byte_at::at#3 + (number) 1 + (byte) print_char_at::ch#1 ← *((byte[]) print_hextab#0 + (number~) print_byte_at::$2) + (byte*) print_char_at::at#1 ← (byte*~) print_byte_at::$3 + call print_char_at + to:print_byte_at::@2 +print_byte_at::@2: scope:[print_byte_at] from print_byte_at::@1 + to:print_byte_at::@return +print_byte_at::@return: scope:[print_byte_at] from print_byte_at::@2 + return + to:@return +print_char_at: scope:[print_char_at] from print_byte_at print_byte_at::@1 + (byte*) print_char_at::at#2 ← phi( print_byte_at/(byte*) print_char_at::at#0 print_byte_at::@1/(byte*) print_char_at::at#1 ) + (byte) print_char_at::ch#2 ← phi( print_byte_at/(byte) print_char_at::ch#0 print_byte_at::@1/(byte) print_char_at::ch#1 ) + *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 + to:print_char_at::@return +print_char_at::@return: scope:[print_char_at] from print_char_at + return + to:@return +memset: scope:[memset] from bitmap_clear bitmap_clear::@1 + (byte) memset::c#4 ← phi( bitmap_clear/(byte) memset::c#0 bitmap_clear::@1/(byte) memset::c#1 ) + (void*) memset::str#4 ← phi( bitmap_clear/(void*) memset::str#0 bitmap_clear::@1/(void*) memset::str#1 ) + (word) memset::num#2 ← phi( bitmap_clear/(word) memset::num#0 bitmap_clear::@1/(word) memset::num#1 ) + (bool~) memset::$0 ← (word) memset::num#2 > (number) 0 + (bool~) memset::$1 ← ! (bool~) memset::$0 + if((bool~) memset::$1) goto memset::@1 + to:memset::@2 +memset::@1: scope:[memset] from memset memset::@4 + (void*) memset::str#2 ← phi( memset/(void*) memset::str#4 memset::@4/(void*) memset::str#5 ) + (void*) memset::return#0 ← (void*) memset::str#2 + to:memset::@return +memset::@2: scope:[memset] from memset + (byte) memset::c#3 ← phi( memset/(byte) memset::c#4 ) + (word) memset::num#3 ← phi( memset/(word) memset::num#2 ) + (void*) memset::str#3 ← phi( memset/(void*) memset::str#4 ) + (byte*~) memset::$2 ← ((byte*)) (void*) memset::str#3 + (byte*~) memset::$3 ← (byte*~) memset::$2 + (word) memset::num#3 + (byte*) memset::end#0 ← (byte*~) memset::$3 + (byte*) memset::dst#0 ← ((byte*)) (void*) memset::str#3 + to:memset::@4 +memset::@4: scope:[memset] from memset::@2 memset::@4 + (void*) memset::str#5 ← phi( memset::@2/(void*) memset::str#3 memset::@4/(void*) memset::str#5 ) + (byte*) memset::end#1 ← phi( memset::@2/(byte*) memset::end#0 memset::@4/(byte*) memset::end#1 ) + (byte*) memset::dst#2 ← phi( memset::@2/(byte*) memset::dst#0 memset::@4/(byte*) memset::dst#1 ) + (byte) memset::c#2 ← phi( memset::@2/(byte) memset::c#3 memset::@4/(byte) memset::c#2 ) + *((byte*) memset::dst#2) ← (byte) memset::c#2 + (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 + (bool~) memset::$4 ← (byte*) memset::dst#1 != (byte*) memset::end#1 + if((bool~) memset::$4) goto memset::@4 + to:memset::@1 +memset::@return: scope:[memset] from memset::@1 + (void*) memset::return#4 ← phi( memset::@1/(void*) memset::return#0 ) + (void*) memset::return#1 ← (void*) memset::return#4 + return + to:@return +@31: scope:[] from @20 + (byte*) bitmap_screen#0 ← (byte*) 0 + (byte*) bitmap_gfx#0 ← (byte*) 0 + (byte[$100]) bitmap_plot_ylo#0 ← { fill( $100, 0) } + (byte[$100]) bitmap_plot_yhi#0 ← { fill( $100, 0) } + (byte[$100]) bitmap_plot_bit#0 ← { fill( $100, 0) } + to:@37 +bitmap_init: scope:[bitmap_init] from main + (byte*) bitmap_init::screen#1 ← phi( main/(byte*) bitmap_init::screen#0 ) + (byte*) bitmap_init::gfx#1 ← phi( main/(byte*) bitmap_init::gfx#0 ) + (byte*) bitmap_gfx#1 ← (byte*) bitmap_init::gfx#1 + (byte*) bitmap_screen#1 ← (byte*) bitmap_init::screen#1 + (byte) bitmap_init::bits#0 ← (number) $80 + (byte) bitmap_init::x#0 ← (byte) 0 + to:bitmap_init::@1 +bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 + (byte*) bitmap_screen#23 ← phi( bitmap_init/(byte*) bitmap_screen#1 bitmap_init::@2/(byte*) bitmap_screen#21 ) + (byte*) bitmap_gfx#24 ← phi( bitmap_init/(byte*) bitmap_gfx#1 bitmap_init::@2/(byte*) bitmap_gfx#22 ) + (byte*) bitmap_init::gfx#4 ← phi( bitmap_init/(byte*) bitmap_init::gfx#1 bitmap_init::@2/(byte*) bitmap_init::gfx#3 ) + (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) bitmap_init::x#0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) bitmap_init::bits#0 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + *((byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (number) 1 + (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (number) 0 + (bool~) bitmap_init::$1 ← ! (bool~) bitmap_init::$0 + if((bool~) bitmap_init::$1) goto bitmap_init::@2 + to:bitmap_init::@3 +bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@3 + (byte*) bitmap_screen#21 ← phi( bitmap_init::@1/(byte*) bitmap_screen#23 bitmap_init::@3/(byte*) bitmap_screen#24 ) + (byte*) bitmap_gfx#22 ← phi( bitmap_init::@1/(byte*) bitmap_gfx#24 bitmap_init::@3/(byte*) bitmap_gfx#25 ) + (byte*) bitmap_init::gfx#3 ← phi( bitmap_init::@1/(byte*) bitmap_init::gfx#4 bitmap_init::@3/(byte*) bitmap_init::gfx#5 ) + (byte) bitmap_init::bits#4 ← phi( bitmap_init::@1/(byte) bitmap_init::bits#1 bitmap_init::@3/(byte) bitmap_init::bits#2 ) + (byte) bitmap_init::x#3 ← phi( bitmap_init::@1/(byte) bitmap_init::x#2 bitmap_init::@3/(byte) bitmap_init::x#4 ) + (byte) bitmap_init::x#1 ← (byte) bitmap_init::x#3 + rangenext(0,$ff) + (bool~) bitmap_init::$2 ← (byte) bitmap_init::x#1 != rangelast(0,$ff) + if((bool~) bitmap_init::$2) goto bitmap_init::@1 + to:bitmap_init::@4 +bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@1 + (byte*) bitmap_screen#24 ← phi( bitmap_init::@1/(byte*) bitmap_screen#23 ) + (byte*) bitmap_gfx#25 ← phi( bitmap_init::@1/(byte*) bitmap_gfx#24 ) + (byte*) bitmap_init::gfx#5 ← phi( bitmap_init::@1/(byte*) bitmap_init::gfx#4 ) + (byte) bitmap_init::x#4 ← phi( bitmap_init::@1/(byte) bitmap_init::x#2 ) + (byte) bitmap_init::bits#2 ← (number) $80 + to:bitmap_init::@2 +bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@2 + (byte*) bitmap_screen#19 ← phi( bitmap_init::@2/(byte*) bitmap_screen#21 ) + (byte*) bitmap_gfx#20 ← phi( bitmap_init::@2/(byte*) bitmap_gfx#22 ) + (byte*) bitmap_init::gfx#2 ← phi( bitmap_init::@2/(byte*) bitmap_init::gfx#3 ) + (byte*) bitmap_init::yoffs#0 ← (byte*) bitmap_init::gfx#2 + (byte) bitmap_init::y#0 ← (byte) 0 + to:bitmap_init::@5 +bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@4 bitmap_init::@6 + (byte*) bitmap_screen#15 ← phi( bitmap_init::@4/(byte*) bitmap_screen#19 bitmap_init::@6/(byte*) bitmap_screen#11 ) + (byte*) bitmap_gfx#16 ← phi( bitmap_init::@4/(byte*) bitmap_gfx#20 bitmap_init::@6/(byte*) bitmap_gfx#11 ) + (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#0 bitmap_init::@6/(byte*) bitmap_init::yoffs#4 ) + (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#0 bitmap_init::@6/(byte) bitmap_init::y#1 ) + (number~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (number) 7 + (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 + (number~) bitmap_init::$5 ← (number~) bitmap_init::$3 | (byte~) bitmap_init::$4 + *((byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (number~) bitmap_init::$5 + (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 + *((byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 + (number~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (number) 7 + (bool~) bitmap_init::$8 ← (number~) bitmap_init::$7 == (number) 7 + (bool~) bitmap_init::$9 ← ! (bool~) bitmap_init::$8 + if((bool~) bitmap_init::$9) goto bitmap_init::@6 + to:bitmap_init::@7 +bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@5 bitmap_init::@7 + (byte*) bitmap_screen#11 ← phi( bitmap_init::@5/(byte*) bitmap_screen#15 bitmap_init::@7/(byte*) bitmap_screen#16 ) + (byte*) bitmap_gfx#11 ← phi( bitmap_init::@5/(byte*) bitmap_gfx#16 bitmap_init::@7/(byte*) bitmap_gfx#17 ) + (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@5/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) + (byte) bitmap_init::y#3 ← phi( bitmap_init::@5/(byte) bitmap_init::y#2 bitmap_init::@7/(byte) bitmap_init::y#4 ) + (byte) bitmap_init::y#1 ← (byte) bitmap_init::y#3 + rangenext(0,$ff) + (bool~) bitmap_init::$11 ← (byte) bitmap_init::y#1 != rangelast(0,$ff) + if((bool~) bitmap_init::$11) goto bitmap_init::@5 + to:bitmap_init::@return +bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@5 + (byte*) bitmap_screen#16 ← phi( bitmap_init::@5/(byte*) bitmap_screen#15 ) + (byte*) bitmap_gfx#17 ← phi( bitmap_init::@5/(byte*) bitmap_gfx#16 ) + (byte) bitmap_init::y#4 ← phi( bitmap_init::@5/(byte) bitmap_init::y#2 ) + (byte*) bitmap_init::yoffs#3 ← phi( bitmap_init::@5/(byte*) bitmap_init::yoffs#2 ) + (byte*~) bitmap_init::$10 ← (byte*) bitmap_init::yoffs#3 + (number) $28*(number) 8 + (byte*) bitmap_init::yoffs#1 ← (byte*~) bitmap_init::$10 + to:bitmap_init::@6 +bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@6 + (byte*) bitmap_screen#6 ← phi( bitmap_init::@6/(byte*) bitmap_screen#11 ) + (byte*) bitmap_gfx#6 ← phi( bitmap_init::@6/(byte*) bitmap_gfx#11 ) + (byte*) bitmap_gfx#2 ← (byte*) bitmap_gfx#6 + (byte*) bitmap_screen#2 ← (byte*) bitmap_screen#6 + return + to:@return +bitmap_clear: scope:[bitmap_clear] from main::@3 + (byte*) bitmap_gfx#12 ← phi( main::@3/(byte*) bitmap_gfx#3 ) + (byte*) bitmap_screen#7 ← phi( main::@3/(byte*) bitmap_screen#3 ) + (byte) bitmap_clear::bgcol#1 ← phi( main::@3/(byte) bitmap_clear::bgcol#0 ) + (byte) bitmap_clear::fgcol#1 ← phi( main::@3/(byte) bitmap_clear::fgcol#0 ) + (number~) bitmap_clear::$0 ← (byte) bitmap_clear::fgcol#1 * (number) $10 + (number~) bitmap_clear::$1 ← (number~) bitmap_clear::$0 + (byte) bitmap_clear::bgcol#1 + (byte) bitmap_clear::col#0 ← (number~) bitmap_clear::$1 + (void*) memset::str#0 ← (void*)(byte*) bitmap_screen#7 + (byte) memset::c#0 ← (byte) bitmap_clear::col#0 + (word) memset::num#0 ← (word) $3e8 + call memset + (void*) memset::return#2 ← (void*) memset::return#1 + to:bitmap_clear::@1 +bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear + (byte*) bitmap_gfx#7 ← phi( bitmap_clear/(byte*) bitmap_gfx#12 ) + (void*) memset::str#1 ← (void*)(byte*) bitmap_gfx#7 + (byte) memset::c#1 ← (number) 0 + (word) memset::num#1 ← (word) $1f40 + call memset + (void*) memset::return#3 ← (void*) memset::return#1 + to:bitmap_clear::@2 +bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 + to:bitmap_clear::@return +bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@2 + return + to:@return +bitmap_plot: scope:[bitmap_plot] from splinePlot::@1 + (word) bitmap_plot::x#1 ← phi( splinePlot::@1/(word) bitmap_plot::x#0 ) + (byte) bitmap_plot::y#1 ← phi( splinePlot::@1/(byte) bitmap_plot::y#0 ) + (byte*~) bitmap_plot::$0 ← ((byte*)) { *((byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#1), *((byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#1) } + (byte*) bitmap_plot::plotter#0 ← (byte*~) bitmap_plot::$0 + (number~) bitmap_plot::$1 ← (word) bitmap_plot::x#1 & (number) $fff8 + (byte*) bitmap_plot::plotter#1 ← (byte*) bitmap_plot::plotter#0 + (number~) bitmap_plot::$1 + (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#1 + *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) + to:bitmap_plot::@return +bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot + return + to:@return +@37: scope:[] from @31 + (byte*) bitmap_screen#18 ← phi( @31/(byte*) bitmap_screen#0 ) + (byte*) bitmap_gfx#19 ← phi( @31/(byte*) bitmap_gfx#0 ) + (byte*) SCREEN#0 ← ((byte*)) (number) $400 + (byte*) BITMAP_SCREEN#0 ← ((byte*)) (number) $5c00 + (byte*) BITMAP_GRAPHICS#0 ← ((byte*)) (number) $6000 + to:@41 +main: scope:[main] from @41 + (byte*) bitmap_screen#12 ← phi( @41/(byte*) bitmap_screen#14 ) + (byte*) bitmap_gfx#13 ← phi( @41/(byte*) bitmap_gfx#15 ) + (byte*) bitmap_init::gfx#0 ← (byte*) BITMAP_GRAPHICS#0 + (byte*) bitmap_init::screen#0 ← (byte*) BITMAP_SCREEN#0 + call bitmap_init + to:main::@3 +main::@3: scope:[main] from main + (byte*) bitmap_screen#8 ← phi( main/(byte*) bitmap_screen#2 ) + (byte*) bitmap_gfx#8 ← phi( main/(byte*) bitmap_gfx#2 ) + (byte*) bitmap_gfx#3 ← (byte*) bitmap_gfx#8 + (byte*) bitmap_screen#3 ← (byte*) bitmap_screen#8 + (byte) bitmap_clear::bgcol#0 ← (byte) BLACK#0 + (byte) bitmap_clear::fgcol#0 ← (byte) WHITE#0 + call bitmap_clear + to:main::@4 +main::@4: scope:[main] from main::@3 + (byte*) bitmap_screen#36 ← phi( main::@3/(byte*) bitmap_screen#3 ) + (byte*) bitmap_gfx#37 ← phi( main::@3/(byte*) bitmap_gfx#3 ) + (byte*) main::vicSelectGfxBank1_gfx#0 ← (byte*) BITMAP_SCREEN#0 + to:main::vicSelectGfxBank1 +main::vicSelectGfxBank1: scope:[main] from main::@4 + (byte*) bitmap_screen#35 ← phi( main::@4/(byte*) bitmap_screen#36 ) + (byte*) bitmap_gfx#36 ← phi( main::@4/(byte*) bitmap_gfx#37 ) + (byte*) main::vicSelectGfxBank1_gfx#1 ← phi( main::@4/(byte*) main::vicSelectGfxBank1_gfx#0 ) + *((byte*) CIA2_PORT_A_DDR#0) ← (number) 3 + (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 ← (byte*) main::vicSelectGfxBank1_gfx#1 + to:main::vicSelectGfxBank1_toDd001 +main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 + (byte*) bitmap_screen#34 ← phi( main::vicSelectGfxBank1/(byte*) bitmap_screen#35 ) + (byte*) bitmap_gfx#35 ← phi( main::vicSelectGfxBank1/(byte*) bitmap_gfx#36 ) + (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 ← phi( main::vicSelectGfxBank1/(byte*) main::vicSelectGfxBank1_toDd001_gfx#0 ) + (word~) main::vicSelectGfxBank1_toDd001_$0#0 ← ((word)) (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 + (byte~) main::vicSelectGfxBank1_toDd001_$1#0 ← > (word~) main::vicSelectGfxBank1_toDd001_$0#0 + (number~) main::vicSelectGfxBank1_toDd001_$2#0 ← (byte~) main::vicSelectGfxBank1_toDd001_$1#0 / (number) $40 + (number~) main::vicSelectGfxBank1_toDd001_$3#0 ← (number) 3 ^ (number~) main::vicSelectGfxBank1_toDd001_$2#0 + (byte) main::vicSelectGfxBank1_toDd001_return#0 ← (number~) main::vicSelectGfxBank1_toDd001_$3#0 + to:main::vicSelectGfxBank1_toDd001_@return +main::vicSelectGfxBank1_toDd001_@return: scope:[main] from main::vicSelectGfxBank1_toDd001 + (byte*) bitmap_screen#33 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) bitmap_screen#34 ) + (byte*) bitmap_gfx#34 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) bitmap_gfx#35 ) + (byte) main::vicSelectGfxBank1_toDd001_return#2 ← phi( main::vicSelectGfxBank1_toDd001/(byte) main::vicSelectGfxBank1_toDd001_return#0 ) + (byte) main::vicSelectGfxBank1_toDd001_return#1 ← (byte) main::vicSelectGfxBank1_toDd001_return#2 + to:main::vicSelectGfxBank1_@1 +main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001_@return + (byte*) bitmap_screen#32 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) bitmap_screen#33 ) + (byte*) bitmap_gfx#33 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) bitmap_gfx#34 ) + (byte) main::vicSelectGfxBank1_toDd001_return#3 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte) main::vicSelectGfxBank1_toDd001_return#1 ) + (byte~) main::vicSelectGfxBank1_$0#0 ← (byte) main::vicSelectGfxBank1_toDd001_return#3 + *((byte*) CIA2_PORT_A#0) ← (byte~) main::vicSelectGfxBank1_$0#0 + to:main::@1 +main::@1: scope:[main] from main::vicSelectGfxBank1_@1 + (byte*) bitmap_screen#31 ← phi( main::vicSelectGfxBank1_@1/(byte*) bitmap_screen#32 ) + (byte*) bitmap_gfx#32 ← phi( main::vicSelectGfxBank1_@1/(byte*) bitmap_gfx#33 ) + (byte*) main::toD0181_screen#0 ← (byte*) BITMAP_SCREEN#0 + (byte*) main::toD0181_gfx#0 ← (byte*) BITMAP_GRAPHICS#0 + to:main::toD0181 +main::toD0181: scope:[main] from main::@1 + (byte*) bitmap_screen#30 ← phi( main::@1/(byte*) bitmap_screen#31 ) + (byte*) bitmap_gfx#31 ← phi( main::@1/(byte*) bitmap_gfx#32 ) + (byte*) main::toD0181_gfx#1 ← phi( main::@1/(byte*) main::toD0181_gfx#0 ) + (byte*) main::toD0181_screen#1 ← phi( main::@1/(byte*) main::toD0181_screen#0 ) + (word~) main::toD0181_$0#0 ← ((word)) (byte*) main::toD0181_screen#1 + (number~) main::toD0181_$1#0 ← (word~) main::toD0181_$0#0 & (number) $3fff + (number~) main::toD0181_$2#0 ← (number~) main::toD0181_$1#0 * (number) 4 + (number~) main::toD0181_$3#0 ← > (number~) main::toD0181_$2#0 + (word~) main::toD0181_$4#0 ← ((word)) (byte*) main::toD0181_gfx#1 + (byte~) main::toD0181_$5#0 ← > (word~) main::toD0181_$4#0 + (number~) main::toD0181_$6#0 ← (byte~) main::toD0181_$5#0 / (number) 4 + (number~) main::toD0181_$7#0 ← (number~) main::toD0181_$6#0 & (number) $f + (number~) main::toD0181_$8#0 ← (number~) main::toD0181_$3#0 | (number~) main::toD0181_$7#0 + (byte) main::toD0181_return#0 ← (number~) main::toD0181_$8#0 + to:main::toD0181_@return +main::toD0181_@return: scope:[main] from main::toD0181 + (byte*) bitmap_screen#29 ← phi( main::toD0181/(byte*) bitmap_screen#30 ) + (byte*) bitmap_gfx#30 ← phi( main::toD0181/(byte*) bitmap_gfx#31 ) + (byte) main::toD0181_return#2 ← phi( main::toD0181/(byte) main::toD0181_return#0 ) + (byte) main::toD0181_return#1 ← (byte) main::toD0181_return#2 + to:main::@2 +main::@2: scope:[main] from main::toD0181_@return + (byte*) bitmap_screen#28 ← phi( main::toD0181_@return/(byte*) bitmap_screen#29 ) + (byte*) bitmap_gfx#29 ← phi( main::toD0181_@return/(byte*) bitmap_gfx#30 ) + (byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 ) + (byte~) main::$3 ← (byte) main::toD0181_return#3 + *((byte*) D018#0) ← (byte~) main::$3 + (byte~) main::$4 ← (byte) VIC_BMM#0 | (byte) VIC_DEN#0 + (byte~) main::$5 ← (byte~) main::$4 | (byte) VIC_RSEL#0 + (number~) main::$6 ← (byte~) main::$5 | (number) 3 + *((byte*) D011#0) ← (number~) main::$6 + (signed word) main::p0_x#0 ← (number) $32 + (signed word) main::p0_y#0 ← (number) $32 + (signed word) main::p1a_x#0 ← (number) $64 + (signed word) main::p1a_y#0 ← (number) $32 + (signed word) main::p1b_x#0 ← (number) $32 + (signed word) main::p1b_y#0 ← (number) $64 + (signed word) main::p2_x#0 ← (number) $64 + (signed word) main::p2_y#0 ← (number) $64 + (signed word) main::p3a_x#0 ← (number) $96 + (signed word) main::p3a_y#0 ← (number) $64 + (signed word) main::p3b_x#0 ← (number) $64 + (signed word) main::p3b_y#0 ← (number) $96 + (signed word) main::p4_x#0 ← (number) $96 + (signed word) main::p4_y#0 ← (number) $96 + call clock_start + to:main::@5 +main::@5: scope:[main] from main::@2 + (byte*) bitmap_screen#27 ← phi( main::@2/(byte*) bitmap_screen#28 ) + (byte*) bitmap_gfx#28 ← phi( main::@2/(byte*) bitmap_gfx#29 ) + (signed word) splinePlot::p0_x#0 ← (signed word) main::p0_x#0 + (signed word) splinePlot::p0_y#0 ← (signed word) main::p0_y#0 + (signed word) splinePlot::p1_x#0 ← (signed word) main::p1a_x#0 + (signed word) splinePlot::p1_y#0 ← (signed word) main::p1a_y#0 + (signed word) splinePlot::p2_x#0 ← (signed word) main::p2_x#0 + (signed word) splinePlot::p2_y#0 ← (signed word) main::p2_y#0 + call splinePlot + to:main::@6 +main::@6: scope:[main] from main::@5 + (byte*) bitmap_screen#26 ← phi( main::@5/(byte*) bitmap_screen#27 ) + (byte*) bitmap_gfx#27 ← phi( main::@5/(byte*) bitmap_gfx#28 ) + (signed word) splinePlot::p0_x#1 ← (signed word) main::p2_x#0 + (signed word) splinePlot::p0_y#1 ← (signed word) main::p2_y#0 + (signed word) splinePlot::p1_x#1 ← (signed word) main::p3a_x#0 + (signed word) splinePlot::p1_y#1 ← (signed word) main::p3a_y#0 + (signed word) splinePlot::p2_x#1 ← (signed word) main::p4_x#0 + (signed word) splinePlot::p2_y#1 ← (signed word) main::p4_y#0 + call splinePlot + to:main::@7 +main::@7: scope:[main] from main::@6 + (byte*) bitmap_screen#25 ← phi( main::@6/(byte*) bitmap_screen#26 ) + (byte*) bitmap_gfx#26 ← phi( main::@6/(byte*) bitmap_gfx#27 ) + (signed word) splinePlot::p0_x#2 ← (signed word) main::p2_x#0 + (signed word) splinePlot::p0_y#2 ← (signed word) main::p2_y#0 + (signed word) splinePlot::p1_x#2 ← (signed word) main::p1b_x#0 + (signed word) splinePlot::p1_y#2 ← (signed word) main::p1b_y#0 + (signed word) splinePlot::p2_x#2 ← (signed word) main::p0_x#0 + (signed word) splinePlot::p2_y#2 ← (signed word) main::p0_y#0 + call splinePlot + to:main::@8 +main::@8: scope:[main] from main::@7 + (byte*) bitmap_screen#22 ← phi( main::@7/(byte*) bitmap_screen#25 ) + (byte*) bitmap_gfx#23 ← phi( main::@7/(byte*) bitmap_gfx#26 ) + (signed word) splinePlot::p0_x#3 ← (signed word) main::p4_x#0 + (signed word) splinePlot::p0_y#3 ← (signed word) main::p4_y#0 + (signed word) splinePlot::p1_x#3 ← (signed word) main::p3b_x#0 + (signed word) splinePlot::p1_y#3 ← (signed word) main::p3b_y#0 + (signed word) splinePlot::p2_x#3 ← (signed word) main::p2_x#0 + (signed word) splinePlot::p2_y#3 ← (signed word) main::p2_y#0 + call splinePlot + to:main::@9 +main::@9: scope:[main] from main::@8 + (byte*) bitmap_screen#20 ← phi( main::@8/(byte*) bitmap_screen#22 ) + (byte*) bitmap_gfx#21 ← phi( main::@8/(byte*) bitmap_gfx#23 ) + call clock + (dword) clock::return#2 ← (dword) clock::return#1 + to:main::@10 +main::@10: scope:[main] from main::@9 + (byte*) bitmap_screen#17 ← phi( main::@9/(byte*) bitmap_screen#20 ) + (byte*) bitmap_gfx#18 ← phi( main::@9/(byte*) bitmap_gfx#21 ) + (dword) clock::return#4 ← phi( main::@9/(dword) clock::return#2 ) + (dword~) main::$12 ← (dword) clock::return#4 + (dword~) main::$13 ← (dword~) main::$12 - (dword) CLOCKS_PER_INIT#0 + (dword) main::cyclecount#0 ← (dword~) main::$13 + (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 + (byte*) print_dword_at::at#0 ← (byte*) SCREEN#0 + call print_dword_at + to:main::@11 +main::@11: scope:[main] from main::@10 + (byte*) bitmap_screen#13 ← phi( main::@10/(byte*) bitmap_screen#17 ) + (byte*) bitmap_gfx#14 ← phi( main::@10/(byte*) bitmap_gfx#18 ) + to:main::@return +main::@return: scope:[main] from main::@11 + (byte*) bitmap_screen#9 ← phi( main::@11/(byte*) bitmap_screen#13 ) + (byte*) bitmap_gfx#9 ← phi( main::@11/(byte*) bitmap_gfx#14 ) + (byte*) bitmap_gfx#4 ← (byte*) bitmap_gfx#9 + (byte*) bitmap_screen#4 ← (byte*) bitmap_screen#9 + return + to:@return +splinePlot: scope:[splinePlot] from main::@5 main::@6 main::@7 main::@8 + (signed word) splinePlot::p0_y#4 ← phi( main::@5/(signed word) splinePlot::p0_y#0 main::@6/(signed word) splinePlot::p0_y#1 main::@7/(signed word) splinePlot::p0_y#2 main::@8/(signed word) splinePlot::p0_y#3 ) + (signed word) splinePlot::p2_y#4 ← phi( main::@5/(signed word) splinePlot::p2_y#0 main::@6/(signed word) splinePlot::p2_y#1 main::@7/(signed word) splinePlot::p2_y#2 main::@8/(signed word) splinePlot::p2_y#3 ) + (signed word) splinePlot::p1_y#4 ← phi( main::@5/(signed word) splinePlot::p1_y#0 main::@6/(signed word) splinePlot::p1_y#1 main::@7/(signed word) splinePlot::p1_y#2 main::@8/(signed word) splinePlot::p1_y#3 ) + (signed word) splinePlot::p0_x#4 ← phi( main::@5/(signed word) splinePlot::p0_x#0 main::@6/(signed word) splinePlot::p0_x#1 main::@7/(signed word) splinePlot::p0_x#2 main::@8/(signed word) splinePlot::p0_x#3 ) + (signed word) splinePlot::p2_x#4 ← phi( main::@5/(signed word) splinePlot::p2_x#0 main::@6/(signed word) splinePlot::p2_x#1 main::@7/(signed word) splinePlot::p2_x#2 main::@8/(signed word) splinePlot::p2_x#3 ) + (signed word) splinePlot::p1_x#4 ← phi( main::@5/(signed word) splinePlot::p1_x#0 main::@6/(signed word) splinePlot::p1_x#1 main::@7/(signed word) splinePlot::p1_x#2 main::@8/(signed word) splinePlot::p1_x#3 ) + (number~) splinePlot::$0 ← (signed word) splinePlot::p1_x#4 * (number) 2 + (number~) splinePlot::$1 ← (signed word) splinePlot::p2_x#4 - (number~) splinePlot::$0 + (number~) splinePlot::$2 ← (number~) splinePlot::$1 + (signed word) splinePlot::p0_x#4 + (number~) splinePlot::$3 ← (signed word) splinePlot::p1_y#4 * (number) 2 + (number~) splinePlot::$4 ← (signed word) splinePlot::p2_y#4 - (number~) splinePlot::$3 + (number~) splinePlot::$5 ← (number~) splinePlot::$4 + (signed word) splinePlot::p0_y#4 + (signed word) splinePlot::a_x#0 ← (number~) splinePlot::$2 + (signed word) splinePlot::a_y#0 ← (number~) splinePlot::$5 + (number~) splinePlot::$6 ← (signed word) splinePlot::p1_x#4 * (number) 2 + (number~) splinePlot::$7 ← (signed word) splinePlot::p0_x#4 * (number) 2 + (number~) splinePlot::$8 ← (number~) splinePlot::$6 - (number~) splinePlot::$7 + (number~) splinePlot::$9 ← (signed word) splinePlot::p1_y#4 * (number) 2 + (number~) splinePlot::$10 ← (signed word) splinePlot::p0_y#4 * (number) 2 + (number~) splinePlot::$11 ← (number~) splinePlot::$9 - (number~) splinePlot::$10 + (signed word) splinePlot::b_x#0 ← (number~) splinePlot::$8 + (signed word) splinePlot::b_y#0 ← (number~) splinePlot::$11 + (signed dword~) splinePlot::$12 ← ((signed dword)) (signed word) splinePlot::a_x#0 + (number~) splinePlot::$13 ← (signed dword~) splinePlot::$12 * (number) $100 + (signed dword~) splinePlot::$14 ← ((signed dword)) (signed word) splinePlot::b_x#0 + (number~) splinePlot::$15 ← (signed dword~) splinePlot::$14 * (number) $100 + (number~) splinePlot::$16 ← (number~) splinePlot::$15 * (number) $10 + (number~) splinePlot::$17 ← (number~) splinePlot::$13 + (number~) splinePlot::$16 + (signed dword~) splinePlot::$18 ← ((signed dword)) (signed word) splinePlot::a_y#0 + (number~) splinePlot::$19 ← (signed dword~) splinePlot::$18 * (number) $100 + (signed dword~) splinePlot::$20 ← ((signed dword)) (signed word) splinePlot::b_y#0 + (number~) splinePlot::$21 ← (signed dword~) splinePlot::$20 * (number) $100 + (number~) splinePlot::$22 ← (number~) splinePlot::$21 * (number) $10 + (number~) splinePlot::$23 ← (number~) splinePlot::$19 + (number~) splinePlot::$22 + (signed dword) splinePlot::i_x#0 ← (number~) splinePlot::$17 + (signed dword) splinePlot::i_y#0 ← (number~) splinePlot::$23 + (signed dword~) splinePlot::$24 ← ((signed dword)) (signed word) splinePlot::a_x#0 + (number~) splinePlot::$25 ← (signed dword~) splinePlot::$24 * (number) $100 + (number~) splinePlot::$26 ← (number~) splinePlot::$25 * (number) 2 + (signed dword~) splinePlot::$27 ← ((signed dword)) (signed word) splinePlot::a_y#0 + (number~) splinePlot::$28 ← (signed dword~) splinePlot::$27 * (number) $100 + (number~) splinePlot::$29 ← (number~) splinePlot::$28 * (number) 2 + (signed dword) splinePlot::j_x#0 ← (number~) splinePlot::$26 + (signed dword) splinePlot::j_y#0 ← (number~) splinePlot::$29 + (signed dword~) splinePlot::$30 ← ((signed dword)) (signed word) splinePlot::p0_x#4 + (number~) splinePlot::$31 ← (signed dword~) splinePlot::$30 * (number) $10000 + (signed dword~) splinePlot::$32 ← ((signed dword)) (signed word) splinePlot::p0_y#4 + (number~) splinePlot::$33 ← (signed dword~) splinePlot::$32 * (number) $10000 + (signed dword) splinePlot::p_x#0 ← (number~) splinePlot::$31 + (signed dword) splinePlot::p_y#0 ← (number~) splinePlot::$33 + (byte) splinePlot::n#0 ← (byte) 0 + to:splinePlot::@1 +splinePlot::@1: scope:[splinePlot] from splinePlot splinePlot::@3 + (byte) splinePlot::n#3 ← phi( splinePlot/(byte) splinePlot::n#0 splinePlot::@3/(byte) splinePlot::n#1 ) + (signed dword) splinePlot::j_y#2 ← phi( splinePlot/(signed dword) splinePlot::j_y#0 splinePlot::@3/(signed dword) splinePlot::j_y#1 ) + (signed dword) splinePlot::j_x#2 ← phi( splinePlot/(signed dword) splinePlot::j_x#0 splinePlot::@3/(signed dword) splinePlot::j_x#1 ) + (signed dword) splinePlot::i_y#3 ← phi( splinePlot/(signed dword) splinePlot::i_y#0 splinePlot::@3/(signed dword) splinePlot::i_y#1 ) + (signed dword) splinePlot::i_x#3 ← phi( splinePlot/(signed dword) splinePlot::i_x#0 splinePlot::@3/(signed dword) splinePlot::i_x#1 ) + (signed dword) splinePlot::p_y#2 ← phi( splinePlot/(signed dword) splinePlot::p_y#0 splinePlot::@3/(signed dword) splinePlot::p_y#1 ) + (signed dword) splinePlot::p_x#2 ← phi( splinePlot/(signed dword) splinePlot::p_x#0 splinePlot::@3/(signed dword) splinePlot::p_x#1 ) + (word~) splinePlot::$34 ← > (signed dword) splinePlot::p_x#2 + (word~) splinePlot::$35 ← > (signed dword) splinePlot::p_y#2 + (byte~) splinePlot::$36 ← < (word~) splinePlot::$35 + (word) bitmap_plot::x#0 ← (word~) splinePlot::$34 + (byte) bitmap_plot::y#0 ← (byte~) splinePlot::$36 + call bitmap_plot + to:splinePlot::@3 +splinePlot::@3: scope:[splinePlot] from splinePlot::@1 + (byte) splinePlot::n#2 ← phi( splinePlot::@1/(byte) splinePlot::n#3 ) + (signed dword) splinePlot::j_y#1 ← phi( splinePlot::@1/(signed dword) splinePlot::j_y#2 ) + (signed dword) splinePlot::j_x#1 ← phi( splinePlot::@1/(signed dword) splinePlot::j_x#2 ) + (signed dword) splinePlot::i_y#2 ← phi( splinePlot::@1/(signed dword) splinePlot::i_y#3 ) + (signed dword) splinePlot::p_y#3 ← phi( splinePlot::@1/(signed dword) splinePlot::p_y#2 ) + (signed dword) splinePlot::i_x#2 ← phi( splinePlot::@1/(signed dword) splinePlot::i_x#3 ) + (signed dword) splinePlot::p_x#3 ← phi( splinePlot::@1/(signed dword) splinePlot::p_x#2 ) + (signed dword~) splinePlot::$38 ← (signed dword) splinePlot::p_x#3 + (signed dword) splinePlot::i_x#2 + (signed dword~) splinePlot::$39 ← (signed dword) splinePlot::p_y#3 + (signed dword) splinePlot::i_y#2 + (signed dword) splinePlot::p_x#1 ← (signed dword~) splinePlot::$38 + (signed dword) splinePlot::p_y#1 ← (signed dword~) splinePlot::$39 + (signed dword~) splinePlot::$40 ← (signed dword) splinePlot::i_x#2 + (signed dword) splinePlot::j_x#1 + (signed dword~) splinePlot::$41 ← (signed dword) splinePlot::i_y#2 + (signed dword) splinePlot::j_y#1 + (signed dword) splinePlot::i_x#1 ← (signed dword~) splinePlot::$40 + (signed dword) splinePlot::i_y#1 ← (signed dword~) splinePlot::$41 + (byte) splinePlot::n#1 ← (byte) splinePlot::n#2 + rangenext(0,$10) + (bool~) splinePlot::$42 ← (byte) splinePlot::n#1 != rangelast(0,$10) + if((bool~) splinePlot::$42) goto splinePlot::@1 + to:splinePlot::@return +splinePlot::@return: scope:[splinePlot] from splinePlot::@3 + return + to:@return +@41: scope:[] from @37 + (byte*) bitmap_screen#14 ← phi( @37/(byte*) bitmap_screen#18 ) + (byte*) bitmap_gfx#15 ← phi( @37/(byte*) bitmap_gfx#19 ) + call main + to:@42 +@42: scope:[] from @41 + (byte*) bitmap_screen#10 ← phi( @41/(byte*) bitmap_screen#4 ) + (byte*) bitmap_gfx#10 ← phi( @41/(byte*) bitmap_gfx#4 ) + (byte*) bitmap_gfx#5 ← (byte*) bitmap_gfx#10 + (byte*) bitmap_screen#5 ← (byte*) bitmap_screen#10 + to:@end +@end: scope:[] from @42 + +SYMBOL TABLE SSA +(const string) $0 = (string) "0123456789abcdef" +(label) @20 +(label) @31 +(label) @37 +(label) @4 +(label) @41 +(label) @42 +(label) @begin +(label) @end +(byte*) BITMAP_GRAPHICS +(byte*) BITMAP_GRAPHICS#0 +(byte*) BITMAP_SCREEN +(byte*) BITMAP_SCREEN#0 +(byte) BLACK +(byte) BLACK#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(dword*) CIA2_TIMER_AB +(dword*) CIA2_TIMER_AB#0 +(byte*) CIA2_TIMER_A_CONTROL +(byte*) CIA2_TIMER_A_CONTROL#0 +(byte*) CIA2_TIMER_B_CONTROL +(byte*) CIA2_TIMER_B_CONTROL#0 +(byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES +(byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES#0 +(byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A +(byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 +(byte) CIA_TIMER_CONTROL_CONTINUOUS +(byte) CIA_TIMER_CONTROL_CONTINUOUS#0 +(byte) CIA_TIMER_CONTROL_START +(byte) CIA_TIMER_CONTROL_START#0 +(byte) CIA_TIMER_CONTROL_STOP +(byte) CIA_TIMER_CONTROL_STOP#0 +(dword) CLOCKS_PER_INIT +(dword) CLOCKS_PER_INIT#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D018 +(byte*) D018#0 +(byte*) SCREEN +(byte*) SCREEN#0 +(signed word) SplineVector16::x +(signed word) SplineVector16::y +(signed dword) SplineVector32::x +(signed dword) SplineVector32::y +(byte) VIC_BMM +(byte) VIC_BMM#0 +(byte) VIC_DEN +(byte) VIC_DEN#0 +(byte) VIC_RSEL +(byte) VIC_RSEL#0 +(byte) WHITE +(byte) WHITE#0 +(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol) +(number~) bitmap_clear::$0 +(number~) bitmap_clear::$1 +(label) bitmap_clear::@1 +(label) bitmap_clear::@2 +(label) bitmap_clear::@return +(byte) bitmap_clear::bgcol +(byte) bitmap_clear::bgcol#0 +(byte) bitmap_clear::bgcol#1 +(byte) bitmap_clear::col +(byte) bitmap_clear::col#0 +(byte) bitmap_clear::fgcol +(byte) bitmap_clear::fgcol#0 +(byte) bitmap_clear::fgcol#1 +(byte*) bitmap_gfx +(byte*) bitmap_gfx#0 +(byte*) bitmap_gfx#1 +(byte*) bitmap_gfx#10 +(byte*) bitmap_gfx#11 +(byte*) bitmap_gfx#12 +(byte*) bitmap_gfx#13 +(byte*) bitmap_gfx#14 +(byte*) bitmap_gfx#15 +(byte*) bitmap_gfx#16 +(byte*) bitmap_gfx#17 +(byte*) bitmap_gfx#18 +(byte*) bitmap_gfx#19 +(byte*) bitmap_gfx#2 +(byte*) bitmap_gfx#20 +(byte*) bitmap_gfx#21 +(byte*) bitmap_gfx#22 +(byte*) bitmap_gfx#23 +(byte*) bitmap_gfx#24 +(byte*) bitmap_gfx#25 +(byte*) bitmap_gfx#26 +(byte*) bitmap_gfx#27 +(byte*) bitmap_gfx#28 +(byte*) bitmap_gfx#29 +(byte*) bitmap_gfx#3 +(byte*) bitmap_gfx#30 +(byte*) bitmap_gfx#31 +(byte*) bitmap_gfx#32 +(byte*) bitmap_gfx#33 +(byte*) bitmap_gfx#34 +(byte*) bitmap_gfx#35 +(byte*) bitmap_gfx#36 +(byte*) bitmap_gfx#37 +(byte*) bitmap_gfx#4 +(byte*) bitmap_gfx#5 +(byte*) bitmap_gfx#6 +(byte*) bitmap_gfx#7 +(byte*) bitmap_gfx#8 +(byte*) bitmap_gfx#9 +(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) +(bool~) bitmap_init::$0 +(bool~) bitmap_init::$1 +(byte*~) bitmap_init::$10 +(bool~) bitmap_init::$11 +(bool~) bitmap_init::$2 +(number~) bitmap_init::$3 +(byte~) bitmap_init::$4 +(number~) bitmap_init::$5 +(byte~) bitmap_init::$6 +(number~) bitmap_init::$7 +(bool~) bitmap_init::$8 +(bool~) bitmap_init::$9 +(label) bitmap_init::@1 +(label) bitmap_init::@2 +(label) bitmap_init::@3 +(label) bitmap_init::@4 +(label) bitmap_init::@5 +(label) bitmap_init::@6 +(label) bitmap_init::@7 +(label) bitmap_init::@return +(byte) bitmap_init::bits +(byte) bitmap_init::bits#0 +(byte) bitmap_init::bits#1 +(byte) bitmap_init::bits#2 +(byte) bitmap_init::bits#3 +(byte) bitmap_init::bits#4 +(byte*) bitmap_init::gfx +(byte*) bitmap_init::gfx#0 +(byte*) bitmap_init::gfx#1 +(byte*) bitmap_init::gfx#2 +(byte*) bitmap_init::gfx#3 +(byte*) bitmap_init::gfx#4 +(byte*) bitmap_init::gfx#5 +(byte*) bitmap_init::screen +(byte*) bitmap_init::screen#0 +(byte*) bitmap_init::screen#1 +(byte) bitmap_init::x +(byte) bitmap_init::x#0 +(byte) bitmap_init::x#1 +(byte) bitmap_init::x#2 +(byte) bitmap_init::x#3 +(byte) bitmap_init::x#4 +(byte) bitmap_init::y +(byte) bitmap_init::y#0 +(byte) bitmap_init::y#1 +(byte) bitmap_init::y#2 +(byte) bitmap_init::y#3 +(byte) bitmap_init::y#4 +(byte*) bitmap_init::yoffs +(byte*) bitmap_init::yoffs#0 +(byte*) bitmap_init::yoffs#1 +(byte*) bitmap_init::yoffs#2 +(byte*) bitmap_init::yoffs#3 +(byte*) bitmap_init::yoffs#4 +(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) +(byte*~) bitmap_plot::$0 +(number~) bitmap_plot::$1 +(byte~) bitmap_plot::$2 +(label) bitmap_plot::@return +(byte*) bitmap_plot::plotter +(byte*) bitmap_plot::plotter#0 +(byte*) bitmap_plot::plotter#1 +(word) bitmap_plot::x +(word) bitmap_plot::x#0 +(word) bitmap_plot::x#1 +(byte) bitmap_plot::y +(byte) bitmap_plot::y#0 +(byte) bitmap_plot::y#1 +(byte[$100]) bitmap_plot_bit +(byte[$100]) bitmap_plot_bit#0 +(byte[$100]) bitmap_plot_yhi +(byte[$100]) bitmap_plot_yhi#0 +(byte[$100]) bitmap_plot_ylo +(byte[$100]) bitmap_plot_ylo#0 +(byte*) bitmap_screen +(byte*) bitmap_screen#0 +(byte*) bitmap_screen#1 +(byte*) bitmap_screen#10 +(byte*) bitmap_screen#11 +(byte*) bitmap_screen#12 +(byte*) bitmap_screen#13 +(byte*) bitmap_screen#14 +(byte*) bitmap_screen#15 +(byte*) bitmap_screen#16 +(byte*) bitmap_screen#17 +(byte*) bitmap_screen#18 +(byte*) bitmap_screen#19 +(byte*) bitmap_screen#2 +(byte*) bitmap_screen#20 +(byte*) bitmap_screen#21 +(byte*) bitmap_screen#22 +(byte*) bitmap_screen#23 +(byte*) bitmap_screen#24 +(byte*) bitmap_screen#25 +(byte*) bitmap_screen#26 +(byte*) bitmap_screen#27 +(byte*) bitmap_screen#28 +(byte*) bitmap_screen#29 +(byte*) bitmap_screen#3 +(byte*) bitmap_screen#30 +(byte*) bitmap_screen#31 +(byte*) bitmap_screen#32 +(byte*) bitmap_screen#33 +(byte*) bitmap_screen#34 +(byte*) bitmap_screen#35 +(byte*) bitmap_screen#36 +(byte*) bitmap_screen#4 +(byte*) bitmap_screen#5 +(byte*) bitmap_screen#6 +(byte*) bitmap_screen#7 +(byte*) bitmap_screen#8 +(byte*) bitmap_screen#9 +(dword()) clock() +(number~) clock::$0 +(label) clock::@return +(dword) clock::return +(dword) clock::return#0 +(dword) clock::return#1 +(dword) clock::return#2 +(dword) clock::return#3 +(dword) clock::return#4 +(void()) clock_start() +(byte~) clock_start::$0 +(byte~) clock_start::$1 +(byte~) clock_start::$2 +(byte~) clock_start::$3 +(byte~) clock_start::$4 +(byte~) clock_start::$5 +(byte~) clock_start::$6 +(byte~) clock_start::$7 +(label) clock_start::@return +(void()) main() +(dword~) main::$12 +(dword~) main::$13 +(byte~) main::$3 +(byte~) main::$4 +(byte~) main::$5 +(number~) main::$6 +(label) main::@1 +(label) main::@10 +(label) main::@11 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@6 +(label) main::@7 +(label) main::@8 +(label) main::@9 +(label) main::@return +(dword) main::cyclecount +(dword) main::cyclecount#0 +(signed word) main::p0_x +(signed word) main::p0_x#0 +(signed word) main::p0_y +(signed word) main::p0_y#0 +(signed word) main::p1a_x +(signed word) main::p1a_x#0 +(signed word) main::p1a_y +(signed word) main::p1a_y#0 +(signed word) main::p1b_x +(signed word) main::p1b_x#0 +(signed word) main::p1b_y +(signed word) main::p1b_y#0 +(signed word) main::p2_x +(signed word) main::p2_x#0 +(signed word) main::p2_y +(signed word) main::p2_y#0 +(signed word) main::p3a_x +(signed word) main::p3a_x#0 +(signed word) main::p3a_y +(signed word) main::p3a_y#0 +(signed word) main::p3b_x +(signed word) main::p3b_x#0 +(signed word) main::p3b_y +(signed word) main::p3b_y#0 +(signed word) main::p4_x +(signed word) main::p4_x#0 +(signed word) main::p4_y +(signed word) main::p4_y#0 +(label) main::toD0181 +(word~) main::toD0181_$0 +(word~) main::toD0181_$0#0 +(number~) main::toD0181_$1 +(number~) main::toD0181_$1#0 +(number~) main::toD0181_$2 +(number~) main::toD0181_$2#0 +(number~) main::toD0181_$3 +(number~) main::toD0181_$3#0 +(word~) main::toD0181_$4 +(word~) main::toD0181_$4#0 +(byte~) main::toD0181_$5 +(byte~) main::toD0181_$5#0 +(number~) main::toD0181_$6 +(number~) main::toD0181_$6#0 +(number~) main::toD0181_$7 +(number~) main::toD0181_$7#0 +(number~) main::toD0181_$8 +(number~) main::toD0181_$8#0 +(label) main::toD0181_@return +(byte*) main::toD0181_gfx +(byte*) main::toD0181_gfx#0 +(byte*) main::toD0181_gfx#1 +(byte) main::toD0181_return +(byte) main::toD0181_return#0 +(byte) main::toD0181_return#1 +(byte) main::toD0181_return#2 +(byte) main::toD0181_return#3 +(byte*) main::toD0181_screen +(byte*) main::toD0181_screen#0 +(byte*) main::toD0181_screen#1 +(label) main::vicSelectGfxBank1 +(byte~) main::vicSelectGfxBank1_$0 +(byte~) main::vicSelectGfxBank1_$0#0 +(label) main::vicSelectGfxBank1_@1 +(byte*) main::vicSelectGfxBank1_gfx +(byte*) main::vicSelectGfxBank1_gfx#0 +(byte*) main::vicSelectGfxBank1_gfx#1 +(label) main::vicSelectGfxBank1_toDd001 +(word~) main::vicSelectGfxBank1_toDd001_$0 +(word~) main::vicSelectGfxBank1_toDd001_$0#0 +(byte~) main::vicSelectGfxBank1_toDd001_$1 +(byte~) main::vicSelectGfxBank1_toDd001_$1#0 +(number~) main::vicSelectGfxBank1_toDd001_$2 +(number~) main::vicSelectGfxBank1_toDd001_$2#0 +(number~) main::vicSelectGfxBank1_toDd001_$3 +(number~) main::vicSelectGfxBank1_toDd001_$3#0 +(label) main::vicSelectGfxBank1_toDd001_@return +(byte*) main::vicSelectGfxBank1_toDd001_gfx +(byte*) main::vicSelectGfxBank1_toDd001_gfx#0 +(byte*) main::vicSelectGfxBank1_toDd001_gfx#1 +(byte) main::vicSelectGfxBank1_toDd001_return +(byte) main::vicSelectGfxBank1_toDd001_return#0 +(byte) main::vicSelectGfxBank1_toDd001_return#1 +(byte) main::vicSelectGfxBank1_toDd001_return#2 +(byte) main::vicSelectGfxBank1_toDd001_return#3 +(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) +(bool~) memset::$0 +(bool~) memset::$1 +(byte*~) memset::$2 +(byte*~) memset::$3 +(bool~) memset::$4 +(label) memset::@1 +(label) memset::@2 +(label) memset::@4 +(label) memset::@return +(byte) memset::c +(byte) memset::c#0 +(byte) memset::c#1 +(byte) memset::c#2 +(byte) memset::c#3 +(byte) memset::c#4 +(byte*) memset::dst +(byte*) memset::dst#0 +(byte*) memset::dst#1 +(byte*) memset::dst#2 +(byte*) memset::end +(byte*) memset::end#0 +(byte*) memset::end#1 +(word) memset::num +(word) memset::num#0 +(word) memset::num#1 +(word) memset::num#2 +(word) memset::num#3 +(void*) memset::return +(void*) memset::return#0 +(void*) memset::return#1 +(void*) memset::return#2 +(void*) memset::return#3 +(void*) memset::return#4 +(void*) memset::str +(void*) memset::str#0 +(void*) memset::str#1 +(void*) memset::str#2 +(void*) memset::str#3 +(void*) memset::str#4 +(void*) memset::str#5 +(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) +(byte~) print_byte_at::$0 +(number~) print_byte_at::$2 +(byte*~) print_byte_at::$3 +(label) print_byte_at::@1 +(label) print_byte_at::@2 +(label) print_byte_at::@return +(byte*) print_byte_at::at +(byte*) print_byte_at::at#0 +(byte*) print_byte_at::at#1 +(byte*) print_byte_at::at#2 +(byte*) print_byte_at::at#3 +(byte) print_byte_at::b +(byte) print_byte_at::b#0 +(byte) print_byte_at::b#1 +(byte) print_byte_at::b#2 +(byte) print_byte_at::b#3 +(void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) +(label) print_char_at::@return +(byte*) print_char_at::at +(byte*) print_char_at::at#0 +(byte*) print_char_at::at#1 +(byte*) print_char_at::at#2 +(byte) print_char_at::ch +(byte) print_char_at::ch#0 +(byte) print_char_at::ch#1 +(byte) print_char_at::ch#2 +(void()) print_dword_at((dword) print_dword_at::dw , (byte*) print_dword_at::at) +(word~) print_dword_at::$0 +(word~) print_dword_at::$2 +(byte*~) print_dword_at::$3 +(label) print_dword_at::@1 +(label) print_dword_at::@2 +(label) print_dword_at::@return +(byte*) print_dword_at::at +(byte*) print_dword_at::at#0 +(byte*) print_dword_at::at#1 +(byte*) print_dword_at::at#2 +(dword) print_dword_at::dw +(dword) print_dword_at::dw#0 +(dword) print_dword_at::dw#1 +(dword) print_dword_at::dw#2 +(byte[]) print_hextab +(byte[]) print_hextab#0 +(void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at) +(byte~) print_word_at::$0 +(byte~) print_word_at::$2 +(byte*~) print_word_at::$3 +(label) print_word_at::@1 +(label) print_word_at::@2 +(label) print_word_at::@return +(byte*) print_word_at::at +(byte*) print_word_at::at#0 +(byte*) print_word_at::at#1 +(byte*) print_word_at::at#2 +(byte*) print_word_at::at#3 +(word) print_word_at::w +(word) print_word_at::w#0 +(word) print_word_at::w#1 +(word) print_word_at::w#2 +(word) print_word_at::w#3 +(void()) splinePlot((signed word) splinePlot::p0_x , (signed word) splinePlot::p0_y , (signed word) splinePlot::p1_x , (signed word) splinePlot::p1_y , (signed word) splinePlot::p2_x , (signed word) splinePlot::p2_y) +(number~) splinePlot::$0 +(number~) splinePlot::$1 +(number~) splinePlot::$10 +(number~) splinePlot::$11 +(signed dword~) splinePlot::$12 +(number~) splinePlot::$13 +(signed dword~) splinePlot::$14 +(number~) splinePlot::$15 +(number~) splinePlot::$16 +(number~) splinePlot::$17 +(signed dword~) splinePlot::$18 +(number~) splinePlot::$19 +(number~) splinePlot::$2 +(signed dword~) splinePlot::$20 +(number~) splinePlot::$21 +(number~) splinePlot::$22 +(number~) splinePlot::$23 +(signed dword~) splinePlot::$24 +(number~) splinePlot::$25 +(number~) splinePlot::$26 +(signed dword~) splinePlot::$27 +(number~) splinePlot::$28 +(number~) splinePlot::$29 +(number~) splinePlot::$3 +(signed dword~) splinePlot::$30 +(number~) splinePlot::$31 +(signed dword~) splinePlot::$32 +(number~) splinePlot::$33 +(word~) splinePlot::$34 +(word~) splinePlot::$35 +(byte~) splinePlot::$36 +(signed dword~) splinePlot::$38 +(signed dword~) splinePlot::$39 +(number~) splinePlot::$4 +(signed dword~) splinePlot::$40 +(signed dword~) splinePlot::$41 +(bool~) splinePlot::$42 +(number~) splinePlot::$5 +(number~) splinePlot::$6 +(number~) splinePlot::$7 +(number~) splinePlot::$8 +(number~) splinePlot::$9 +(label) splinePlot::@1 +(label) splinePlot::@3 +(label) splinePlot::@return +(signed word) splinePlot::a_x +(signed word) splinePlot::a_x#0 +(signed word) splinePlot::a_y +(signed word) splinePlot::a_y#0 +(signed word) splinePlot::b_x +(signed word) splinePlot::b_x#0 +(signed word) splinePlot::b_y +(signed word) splinePlot::b_y#0 +(signed dword) splinePlot::i_x +(signed dword) splinePlot::i_x#0 +(signed dword) splinePlot::i_x#1 +(signed dword) splinePlot::i_x#2 +(signed dword) splinePlot::i_x#3 +(signed dword) splinePlot::i_y +(signed dword) splinePlot::i_y#0 +(signed dword) splinePlot::i_y#1 +(signed dword) splinePlot::i_y#2 +(signed dword) splinePlot::i_y#3 +(signed dword) splinePlot::j_x +(signed dword) splinePlot::j_x#0 +(signed dword) splinePlot::j_x#1 +(signed dword) splinePlot::j_x#2 +(signed dword) splinePlot::j_y +(signed dword) splinePlot::j_y#0 +(signed dword) splinePlot::j_y#1 +(signed dword) splinePlot::j_y#2 +(byte) splinePlot::n +(byte) splinePlot::n#0 +(byte) splinePlot::n#1 +(byte) splinePlot::n#2 +(byte) splinePlot::n#3 +(struct SplineVector16) splinePlot::p0 +(signed word) splinePlot::p0_x +(signed word) splinePlot::p0_x#0 +(signed word) splinePlot::p0_x#1 +(signed word) splinePlot::p0_x#2 +(signed word) splinePlot::p0_x#3 +(signed word) splinePlot::p0_x#4 +(signed word) splinePlot::p0_y +(signed word) splinePlot::p0_y#0 +(signed word) splinePlot::p0_y#1 +(signed word) splinePlot::p0_y#2 +(signed word) splinePlot::p0_y#3 +(signed word) splinePlot::p0_y#4 +(struct SplineVector16) splinePlot::p1 +(signed word) splinePlot::p1_x +(signed word) splinePlot::p1_x#0 +(signed word) splinePlot::p1_x#1 +(signed word) splinePlot::p1_x#2 +(signed word) splinePlot::p1_x#3 +(signed word) splinePlot::p1_x#4 +(signed word) splinePlot::p1_y +(signed word) splinePlot::p1_y#0 +(signed word) splinePlot::p1_y#1 +(signed word) splinePlot::p1_y#2 +(signed word) splinePlot::p1_y#3 +(signed word) splinePlot::p1_y#4 +(struct SplineVector16) splinePlot::p2 +(signed word) splinePlot::p2_x +(signed word) splinePlot::p2_x#0 +(signed word) splinePlot::p2_x#1 +(signed word) splinePlot::p2_x#2 +(signed word) splinePlot::p2_x#3 +(signed word) splinePlot::p2_x#4 +(signed word) splinePlot::p2_y +(signed word) splinePlot::p2_y#0 +(signed word) splinePlot::p2_y#1 +(signed word) splinePlot::p2_y#2 +(signed word) splinePlot::p2_y#3 +(signed word) splinePlot::p2_y#4 +(signed dword) splinePlot::p_x +(signed dword) splinePlot::p_x#0 +(signed dword) splinePlot::p_x#1 +(signed dword) splinePlot::p_x#2 +(signed dword) splinePlot::p_x#3 +(signed dword) splinePlot::p_y +(signed dword) splinePlot::p_y#0 +(signed dword) splinePlot::p_y#1 +(signed dword) splinePlot::p_y#2 +(signed dword) splinePlot::p_y#3 + +Fixing inline constructor with bitmap_plot::$3 ← (byte)*(bitmap_plot_yhi#0 + bitmap_plot::y#1) w= (byte)*(bitmap_plot_ylo#0 + bitmap_plot::y#1) +Successful SSA optimization Pass2FixInlineConstructorsNew +Adding number conversion cast (unumber) $20 in (byte) VIC_BMM#0 ← (number) $20 +Adding number conversion cast (unumber) $10 in (byte) VIC_DEN#0 ← (number) $10 +Adding number conversion cast (unumber) 8 in (byte) VIC_RSEL#0 ← (number) 8 +Adding number conversion cast (unumber) 0 in (byte) CIA_TIMER_CONTROL_STOP#0 ← (number) 0 +Adding number conversion cast (unumber) 1 in (byte) CIA_TIMER_CONTROL_START#0 ← (number) 1 +Adding number conversion cast (unumber) 0 in (byte) CIA_TIMER_CONTROL_CONTINUOUS#0 ← (number) 0 +Adding number conversion cast (unumber) 0 in (byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES#0 ← (number) 0 +Adding number conversion cast (unumber) $40 in (byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 ← (number) $40 +Adding number conversion cast (unumber) 0 in (byte) BLACK#0 ← (number) 0 +Adding number conversion cast (unumber) 1 in (byte) WHITE#0 ← (number) 1 +Adding number conversion cast (unumber) $12 in (dword) CLOCKS_PER_INIT#0 ← (number) $12 +Adding number conversion cast (unumber) $ffffffff in (number~) clock::$0 ← (number) $ffffffff - *((dword*) CIA2_TIMER_AB#0) +Adding number conversion cast (unumber) clock::$0 in (number~) clock::$0 ← (unumber)(number) $ffffffff - *((dword*) CIA2_TIMER_AB#0) +Adding number conversion cast (unumber) $ffffffff in *((dword*) CIA2_TIMER_AB#0) ← (number) $ffffffff +Adding number conversion cast (unumber) 2 in (byte*~) print_word_at::$3 ← (byte*) print_word_at::at#3 + (number) 2 +Adding number conversion cast (unumber) 4 in (byte*~) print_dword_at::$3 ← (byte*) print_dword_at::at#2 + (number) 4 +Adding number conversion cast (unumber) 4 in (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (number) 4 +Adding number conversion cast (unumber) $f in (number~) print_byte_at::$2 ← (byte) print_byte_at::b#3 & (number) $f +Adding number conversion cast (unumber) print_byte_at::$2 in (number~) print_byte_at::$2 ← (byte) print_byte_at::b#3 & (unumber)(number) $f +Adding number conversion cast (unumber) 1 in (byte*~) print_byte_at::$3 ← (byte*) print_byte_at::at#3 + (number) 1 +Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#2 > (number) 0 +Adding number conversion cast (unumber) $80 in (byte) bitmap_init::bits#0 ← (number) $80 +Adding number conversion cast (unumber) 1 in (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (number) 1 +Adding number conversion cast (unumber) 0 in (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (number) 0 +Adding number conversion cast (unumber) $80 in (byte) bitmap_init::bits#2 ← (number) $80 +Adding number conversion cast (unumber) 7 in (number~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (number) 7 +Adding number conversion cast (unumber) bitmap_init::$3 in (number~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (unumber)(number) 7 +Adding number conversion cast (unumber) bitmap_init::$5 in (number~) bitmap_init::$5 ← (unumber~) bitmap_init::$3 | (byte~) bitmap_init::$4 +Adding number conversion cast (unumber) 7 in (number~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (number) 7 +Adding number conversion cast (unumber) bitmap_init::$7 in (number~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (unumber)(number) 7 +Adding number conversion cast (unumber) 7 in (bool~) bitmap_init::$8 ← (unumber~) bitmap_init::$7 == (number) 7 +Adding number conversion cast (unumber) $28*8 in (byte*~) bitmap_init::$10 ← (byte*) bitmap_init::yoffs#3 + (number) $28*(number) 8 +Adding number conversion cast (unumber) $10 in (number~) bitmap_clear::$0 ← (byte) bitmap_clear::fgcol#1 * (number) $10 +Adding number conversion cast (unumber) bitmap_clear::$0 in (number~) bitmap_clear::$0 ← (byte) bitmap_clear::fgcol#1 * (unumber)(number) $10 +Adding number conversion cast (unumber) bitmap_clear::$1 in (number~) bitmap_clear::$1 ← (unumber~) bitmap_clear::$0 + (byte) bitmap_clear::bgcol#1 +Adding number conversion cast (unumber) 0 in (byte) memset::c#1 ← (number) 0 +Adding number conversion cast (unumber) $fff8 in (number~) bitmap_plot::$1 ← (word) bitmap_plot::x#1 & (number) $fff8 +Adding number conversion cast (unumber) bitmap_plot::$1 in (number~) bitmap_plot::$1 ← (word) bitmap_plot::x#1 & (unumber)(number) $fff8 +Adding number conversion cast (unumber) 3 in *((byte*) CIA2_PORT_A_DDR#0) ← (number) 3 +Adding number conversion cast (unumber) $40 in (number~) main::vicSelectGfxBank1_toDd001_$2#0 ← (byte~) main::vicSelectGfxBank1_toDd001_$1#0 / (number) $40 +Adding number conversion cast (unumber) main::vicSelectGfxBank1_toDd001_$2#0 in (number~) main::vicSelectGfxBank1_toDd001_$2#0 ← (byte~) main::vicSelectGfxBank1_toDd001_$1#0 / (unumber)(number) $40 +Adding number conversion cast (unumber) 3 in (number~) main::vicSelectGfxBank1_toDd001_$3#0 ← (number) 3 ^ (unumber~) main::vicSelectGfxBank1_toDd001_$2#0 +Adding number conversion cast (unumber) main::vicSelectGfxBank1_toDd001_$3#0 in (number~) main::vicSelectGfxBank1_toDd001_$3#0 ← (unumber)(number) 3 ^ (unumber~) main::vicSelectGfxBank1_toDd001_$2#0 +Adding number conversion cast (unumber) $3fff in (number~) main::toD0181_$1#0 ← (word~) main::toD0181_$0#0 & (number) $3fff +Adding number conversion cast (unumber) main::toD0181_$1#0 in (number~) main::toD0181_$1#0 ← (word~) main::toD0181_$0#0 & (unumber)(number) $3fff +Adding number conversion cast (unumber) 4 in (number~) main::toD0181_$2#0 ← (unumber~) main::toD0181_$1#0 * (number) 4 +Adding number conversion cast (unumber) main::toD0181_$2#0 in (number~) main::toD0181_$2#0 ← (unumber~) main::toD0181_$1#0 * (unumber)(number) 4 +Adding number conversion cast (unumber) main::toD0181_$3#0 in (number~) main::toD0181_$3#0 ← > (unumber~) main::toD0181_$2#0 +Adding number conversion cast (unumber) 4 in (number~) main::toD0181_$6#0 ← (byte~) main::toD0181_$5#0 / (number) 4 +Adding number conversion cast (unumber) main::toD0181_$6#0 in (number~) main::toD0181_$6#0 ← (byte~) main::toD0181_$5#0 / (unumber)(number) 4 +Adding number conversion cast (unumber) $f in (number~) main::toD0181_$7#0 ← (unumber~) main::toD0181_$6#0 & (number) $f +Adding number conversion cast (unumber) main::toD0181_$7#0 in (number~) main::toD0181_$7#0 ← (unumber~) main::toD0181_$6#0 & (unumber)(number) $f +Adding number conversion cast (unumber) main::toD0181_$8#0 in (number~) main::toD0181_$8#0 ← (unumber~) main::toD0181_$3#0 | (unumber~) main::toD0181_$7#0 +Adding number conversion cast (unumber) 3 in (number~) main::$6 ← (byte~) main::$5 | (number) 3 +Adding number conversion cast (unumber) main::$6 in (number~) main::$6 ← (byte~) main::$5 | (unumber)(number) 3 +Adding number conversion cast (snumber) $32 in (signed word) main::p0_x#0 ← (number) $32 +Adding number conversion cast (snumber) $32 in (signed word) main::p0_y#0 ← (number) $32 +Adding number conversion cast (snumber) $64 in (signed word) main::p1a_x#0 ← (number) $64 +Adding number conversion cast (snumber) $32 in (signed word) main::p1a_y#0 ← (number) $32 +Adding number conversion cast (snumber) $32 in (signed word) main::p1b_x#0 ← (number) $32 +Adding number conversion cast (snumber) $64 in (signed word) main::p1b_y#0 ← (number) $64 +Adding number conversion cast (snumber) $64 in (signed word) main::p2_x#0 ← (number) $64 +Adding number conversion cast (snumber) $64 in (signed word) main::p2_y#0 ← (number) $64 +Adding number conversion cast (snumber) $96 in (signed word) main::p3a_x#0 ← (number) $96 +Adding number conversion cast (snumber) $64 in (signed word) main::p3a_y#0 ← (number) $64 +Adding number conversion cast (snumber) $64 in (signed word) main::p3b_x#0 ← (number) $64 +Adding number conversion cast (snumber) $96 in (signed word) main::p3b_y#0 ← (number) $96 +Adding number conversion cast (snumber) $96 in (signed word) main::p4_x#0 ← (number) $96 +Adding number conversion cast (snumber) $96 in (signed word) main::p4_y#0 ← (number) $96 +Adding number conversion cast (snumber) 2 in (number~) splinePlot::$0 ← (signed word) splinePlot::p1_x#4 * (number) 2 +Adding number conversion cast (snumber) splinePlot::$0 in (number~) splinePlot::$0 ← (signed word) splinePlot::p1_x#4 * (snumber)(number) 2 +Adding number conversion cast (snumber) splinePlot::$1 in (number~) splinePlot::$1 ← (signed word) splinePlot::p2_x#4 - (snumber~) splinePlot::$0 +Adding number conversion cast (snumber) splinePlot::$2 in (number~) splinePlot::$2 ← (snumber~) splinePlot::$1 + (signed word) splinePlot::p0_x#4 +Adding number conversion cast (snumber) 2 in (number~) splinePlot::$3 ← (signed word) splinePlot::p1_y#4 * (number) 2 +Adding number conversion cast (snumber) splinePlot::$3 in (number~) splinePlot::$3 ← (signed word) splinePlot::p1_y#4 * (snumber)(number) 2 +Adding number conversion cast (snumber) splinePlot::$4 in (number~) splinePlot::$4 ← (signed word) splinePlot::p2_y#4 - (snumber~) splinePlot::$3 +Adding number conversion cast (snumber) splinePlot::$5 in (number~) splinePlot::$5 ← (snumber~) splinePlot::$4 + (signed word) splinePlot::p0_y#4 +Adding number conversion cast (snumber) 2 in (number~) splinePlot::$6 ← (signed word) splinePlot::p1_x#4 * (number) 2 +Adding number conversion cast (snumber) splinePlot::$6 in (number~) splinePlot::$6 ← (signed word) splinePlot::p1_x#4 * (snumber)(number) 2 +Adding number conversion cast (snumber) 2 in (number~) splinePlot::$7 ← (signed word) splinePlot::p0_x#4 * (number) 2 +Adding number conversion cast (snumber) splinePlot::$7 in (number~) splinePlot::$7 ← (signed word) splinePlot::p0_x#4 * (snumber)(number) 2 +Adding number conversion cast (snumber) splinePlot::$8 in (number~) splinePlot::$8 ← (snumber~) splinePlot::$6 - (snumber~) splinePlot::$7 +Adding number conversion cast (snumber) 2 in (number~) splinePlot::$9 ← (signed word) splinePlot::p1_y#4 * (number) 2 +Adding number conversion cast (snumber) splinePlot::$9 in (number~) splinePlot::$9 ← (signed word) splinePlot::p1_y#4 * (snumber)(number) 2 +Adding number conversion cast (snumber) 2 in (number~) splinePlot::$10 ← (signed word) splinePlot::p0_y#4 * (number) 2 +Adding number conversion cast (snumber) splinePlot::$10 in (number~) splinePlot::$10 ← (signed word) splinePlot::p0_y#4 * (snumber)(number) 2 +Adding number conversion cast (snumber) splinePlot::$11 in (number~) splinePlot::$11 ← (snumber~) splinePlot::$9 - (snumber~) splinePlot::$10 +Adding number conversion cast (snumber) $100 in (number~) splinePlot::$13 ← (signed dword~) splinePlot::$12 * (number) $100 +Adding number conversion cast (snumber) splinePlot::$13 in (number~) splinePlot::$13 ← (signed dword~) splinePlot::$12 * (snumber)(number) $100 +Adding number conversion cast (snumber) $100 in (number~) splinePlot::$15 ← (signed dword~) splinePlot::$14 * (number) $100 +Adding number conversion cast (snumber) splinePlot::$15 in (number~) splinePlot::$15 ← (signed dword~) splinePlot::$14 * (snumber)(number) $100 +Adding number conversion cast (snumber) $10 in (number~) splinePlot::$16 ← (snumber~) splinePlot::$15 * (number) $10 +Adding number conversion cast (snumber) splinePlot::$16 in (number~) splinePlot::$16 ← (snumber~) splinePlot::$15 * (snumber)(number) $10 +Adding number conversion cast (snumber) splinePlot::$17 in (number~) splinePlot::$17 ← (snumber~) splinePlot::$13 + (snumber~) splinePlot::$16 +Adding number conversion cast (snumber) $100 in (number~) splinePlot::$19 ← (signed dword~) splinePlot::$18 * (number) $100 +Adding number conversion cast (snumber) splinePlot::$19 in (number~) splinePlot::$19 ← (signed dword~) splinePlot::$18 * (snumber)(number) $100 +Adding number conversion cast (snumber) $100 in (number~) splinePlot::$21 ← (signed dword~) splinePlot::$20 * (number) $100 +Adding number conversion cast (snumber) splinePlot::$21 in (number~) splinePlot::$21 ← (signed dword~) splinePlot::$20 * (snumber)(number) $100 +Adding number conversion cast (snumber) $10 in (number~) splinePlot::$22 ← (snumber~) splinePlot::$21 * (number) $10 +Adding number conversion cast (snumber) splinePlot::$22 in (number~) splinePlot::$22 ← (snumber~) splinePlot::$21 * (snumber)(number) $10 +Adding number conversion cast (snumber) splinePlot::$23 in (number~) splinePlot::$23 ← (snumber~) splinePlot::$19 + (snumber~) splinePlot::$22 +Adding number conversion cast (snumber) $100 in (number~) splinePlot::$25 ← (signed dword~) splinePlot::$24 * (number) $100 +Adding number conversion cast (snumber) splinePlot::$25 in (number~) splinePlot::$25 ← (signed dword~) splinePlot::$24 * (snumber)(number) $100 +Adding number conversion cast (snumber) 2 in (number~) splinePlot::$26 ← (snumber~) splinePlot::$25 * (number) 2 +Adding number conversion cast (snumber) splinePlot::$26 in (number~) splinePlot::$26 ← (snumber~) splinePlot::$25 * (snumber)(number) 2 +Adding number conversion cast (snumber) $100 in (number~) splinePlot::$28 ← (signed dword~) splinePlot::$27 * (number) $100 +Adding number conversion cast (snumber) splinePlot::$28 in (number~) splinePlot::$28 ← (signed dword~) splinePlot::$27 * (snumber)(number) $100 +Adding number conversion cast (snumber) 2 in (number~) splinePlot::$29 ← (snumber~) splinePlot::$28 * (number) 2 +Adding number conversion cast (snumber) splinePlot::$29 in (number~) splinePlot::$29 ← (snumber~) splinePlot::$28 * (snumber)(number) 2 +Adding number conversion cast (snumber) $10000 in (number~) splinePlot::$31 ← (signed dword~) splinePlot::$30 * (number) $10000 +Adding number conversion cast (snumber) splinePlot::$31 in (number~) splinePlot::$31 ← (signed dword~) splinePlot::$30 * (snumber)(number) $10000 +Adding number conversion cast (snumber) $10000 in (number~) splinePlot::$33 ← (signed dword~) splinePlot::$32 * (number) $10000 +Adding number conversion cast (snumber) splinePlot::$33 in (number~) splinePlot::$33 ← (signed dword~) splinePlot::$32 * (snumber)(number) $10000 +Successful SSA optimization PassNAddNumberTypeConversions +Inlining cast (byte*) D011#0 ← (byte*)(number) $d011 +Inlining cast (byte) VIC_BMM#0 ← (unumber)(number) $20 +Inlining cast (byte) VIC_DEN#0 ← (unumber)(number) $10 +Inlining cast (byte) VIC_RSEL#0 ← (unumber)(number) 8 +Inlining cast (byte*) D018#0 ← (byte*)(number) $d018 +Inlining cast (byte*) CIA2_PORT_A#0 ← (byte*)(number) $dd00 +Inlining cast (byte*) CIA2_PORT_A_DDR#0 ← (byte*)(number) $dd02 +Inlining cast (dword*) CIA2_TIMER_AB#0 ← (dword*)(number) $dd04 +Inlining cast (byte*) CIA2_TIMER_A_CONTROL#0 ← (byte*)(number) $dd0e +Inlining cast (byte*) CIA2_TIMER_B_CONTROL#0 ← (byte*)(number) $dd0f +Inlining cast (byte) CIA_TIMER_CONTROL_STOP#0 ← (unumber)(number) 0 +Inlining cast (byte) CIA_TIMER_CONTROL_START#0 ← (unumber)(number) 1 +Inlining cast (byte) CIA_TIMER_CONTROL_CONTINUOUS#0 ← (unumber)(number) 0 +Inlining cast (byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES#0 ← (unumber)(number) 0 +Inlining cast (byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 ← (unumber)(number) $40 +Inlining cast (byte) BLACK#0 ← (unumber)(number) 0 +Inlining cast (byte) WHITE#0 ← (unumber)(number) 1 +Inlining cast (dword) CLOCKS_PER_INIT#0 ← (unumber)(number) $12 +Inlining cast *((dword*) CIA2_TIMER_AB#0) ← (unumber)(number) $ffffffff +Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#3 +Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3 +Inlining cast (byte) bitmap_init::bits#0 ← (unumber)(number) $80 +Inlining cast (byte) bitmap_init::bits#2 ← (unumber)(number) $80 +Inlining cast (byte) memset::c#1 ← (unumber)(number) 0 +Inlining cast (byte*) SCREEN#0 ← (byte*)(number) $400 +Inlining cast (byte*) BITMAP_SCREEN#0 ← (byte*)(number) $5c00 +Inlining cast (byte*) BITMAP_GRAPHICS#0 ← (byte*)(number) $6000 +Inlining cast *((byte*) CIA2_PORT_A_DDR#0) ← (unumber)(number) 3 +Inlining cast (word~) main::vicSelectGfxBank1_toDd001_$0#0 ← (word)(byte*) main::vicSelectGfxBank1_toDd001_gfx#1 +Inlining cast (word~) main::toD0181_$0#0 ← (word)(byte*) main::toD0181_screen#1 +Inlining cast (word~) main::toD0181_$4#0 ← (word)(byte*) main::toD0181_gfx#1 +Inlining cast (signed word) main::p0_x#0 ← (snumber)(number) $32 +Inlining cast (signed word) main::p0_y#0 ← (snumber)(number) $32 +Inlining cast (signed word) main::p1a_x#0 ← (snumber)(number) $64 +Inlining cast (signed word) main::p1a_y#0 ← (snumber)(number) $32 +Inlining cast (signed word) main::p1b_x#0 ← (snumber)(number) $32 +Inlining cast (signed word) main::p1b_y#0 ← (snumber)(number) $64 +Inlining cast (signed word) main::p2_x#0 ← (snumber)(number) $64 +Inlining cast (signed word) main::p2_y#0 ← (snumber)(number) $64 +Inlining cast (signed word) main::p3a_x#0 ← (snumber)(number) $96 +Inlining cast (signed word) main::p3a_y#0 ← (snumber)(number) $64 +Inlining cast (signed word) main::p3b_x#0 ← (snumber)(number) $64 +Inlining cast (signed word) main::p3b_y#0 ← (snumber)(number) $96 +Inlining cast (signed word) main::p4_x#0 ← (snumber)(number) $96 +Inlining cast (signed word) main::p4_y#0 ← (snumber)(number) $96 +Inlining cast (signed dword~) splinePlot::$12 ← (signed dword)(signed word) splinePlot::a_x#0 +Inlining cast (signed dword~) splinePlot::$14 ← (signed dword)(signed word) splinePlot::b_x#0 +Inlining cast (signed dword~) splinePlot::$18 ← (signed dword)(signed word) splinePlot::a_y#0 +Inlining cast (signed dword~) splinePlot::$20 ← (signed dword)(signed word) splinePlot::b_y#0 +Inlining cast (signed dword~) splinePlot::$24 ← (signed dword)(signed word) splinePlot::a_x#0 +Inlining cast (signed dword~) splinePlot::$27 ← (signed dword)(signed word) splinePlot::a_y#0 +Inlining cast (signed dword~) splinePlot::$30 ← (signed dword)(signed word) splinePlot::p0_x#4 +Inlining cast (signed dword~) splinePlot::$32 ← (signed dword)(signed word) splinePlot::p0_y#4 +Successful SSA optimization Pass2InlineCast +Simplifying constant pointer cast (byte*) 53265 +Simplifying constant integer cast $20 +Simplifying constant integer cast $10 +Simplifying constant integer cast 8 +Simplifying constant pointer cast (byte*) 53272 +Simplifying constant pointer cast (byte*) 56576 +Simplifying constant pointer cast (byte*) 56578 +Simplifying constant pointer cast (dword*) 56580 +Simplifying constant pointer cast (byte*) 56590 +Simplifying constant pointer cast (byte*) 56591 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $40 +Simplifying constant integer cast 0 +Simplifying constant integer cast 1 +Simplifying constant integer cast $12 +Simplifying constant integer cast $ffffffff +Simplifying constant integer cast $ffffffff +Simplifying constant integer cast 2 +Simplifying constant integer cast 4 +Simplifying constant integer cast 4 +Simplifying constant integer cast $f +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast $80 +Simplifying constant integer cast 1 +Simplifying constant integer cast 0 +Simplifying constant integer cast $80 +Simplifying constant integer cast 7 +Simplifying constant integer cast 7 +Simplifying constant integer cast 7 +Simplifying constant integer cast $10 +Simplifying constant integer cast 0 +Simplifying constant integer cast *((byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#1) +Simplifying constant integer cast *((byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#1) +Simplifying constant integer cast $fff8 +Simplifying constant pointer cast (byte*) 1024 +Simplifying constant pointer cast (byte*) 23552 +Simplifying constant pointer cast (byte*) 24576 +Simplifying constant integer cast 3 +Simplifying constant integer cast $40 +Simplifying constant integer cast 3 +Simplifying constant integer cast $3fff +Simplifying constant integer cast 4 +Simplifying constant integer cast 4 +Simplifying constant integer cast $f +Simplifying constant integer cast 3 +Simplifying constant integer cast $32 +Simplifying constant integer cast $32 +Simplifying constant integer cast $64 +Simplifying constant integer cast $32 +Simplifying constant integer cast $32 +Simplifying constant integer cast $64 +Simplifying constant integer cast $64 +Simplifying constant integer cast $64 +Simplifying constant integer cast $96 +Simplifying constant integer cast $64 +Simplifying constant integer cast $64 +Simplifying constant integer cast $96 +Simplifying constant integer cast $96 +Simplifying constant integer cast $96 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast 2 +Simplifying constant integer cast $100 +Simplifying constant integer cast $100 +Simplifying constant integer cast $10 +Simplifying constant integer cast $100 +Simplifying constant integer cast $100 +Simplifying constant integer cast $10 +Simplifying constant integer cast $100 +Simplifying constant integer cast 2 +Simplifying constant integer cast $100 +Simplifying constant integer cast 2 +Simplifying constant integer cast $10000 +Simplifying constant integer cast $10000 +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (byte) $20 +Finalized unsigned number type (byte) $10 +Finalized unsigned number type (byte) 8 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) $40 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) $12 +Finalized unsigned number type (dword) $ffffffff +Finalized unsigned number type (dword) $ffffffff +Finalized unsigned number type (byte) 2 +Finalized unsigned number type (byte) 4 +Finalized unsigned number type (byte) 4 +Finalized unsigned number type (byte) $f +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) $80 +Finalized unsigned number type (byte) 1 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) $80 +Finalized unsigned number type (byte) 7 +Finalized unsigned number type (byte) 7 +Finalized unsigned number type (byte) 7 +Finalized unsigned number type (byte) $10 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (word) $fff8 +Finalized unsigned number type (byte) 3 +Finalized unsigned number type (byte) $40 +Finalized unsigned number type (byte) 3 +Finalized unsigned number type (word) $3fff +Finalized unsigned number type (byte) 4 +Finalized unsigned number type (byte) 4 +Finalized unsigned number type (byte) $f +Finalized unsigned number type (byte) 3 +Finalized signed number type (signed byte) $32 +Finalized signed number type (signed byte) $32 +Finalized signed number type (signed byte) $64 +Finalized signed number type (signed byte) $32 +Finalized signed number type (signed byte) $32 +Finalized signed number type (signed byte) $64 +Finalized signed number type (signed byte) $64 +Finalized signed number type (signed byte) $64 +Finalized signed number type (signed word) $96 +Finalized signed number type (signed byte) $64 +Finalized signed number type (signed byte) $64 +Finalized signed number type (signed word) $96 +Finalized signed number type (signed word) $96 +Finalized signed number type (signed word) $96 +Finalized signed number type (signed byte) 2 +Finalized signed number type (signed byte) 2 +Finalized signed number type (signed byte) 2 +Finalized signed number type (signed byte) 2 +Finalized signed number type (signed byte) 2 +Finalized signed number type (signed byte) 2 +Finalized signed number type (signed word) $100 +Finalized signed number type (signed word) $100 +Finalized signed number type (signed byte) $10 +Finalized signed number type (signed word) $100 +Finalized signed number type (signed word) $100 +Finalized signed number type (signed byte) $10 +Finalized signed number type (signed word) $100 +Finalized signed number type (signed byte) 2 +Finalized signed number type (signed word) $100 +Finalized signed number type (signed byte) 2 +Finalized signed number type (signed dword) $10000 +Finalized signed number type (signed dword) $10000 +Successful SSA optimization PassNFinalizeNumberTypeConversions +Inferred type updated to dword in (unumber~) clock::$0 ← (dword) $ffffffff - *((dword*) CIA2_TIMER_AB#0) +Inferred type updated to byte in (unumber~) print_byte_at::$2 ← (byte) print_byte_at::b#3 & (byte) $f +Inferred type updated to byte in (unumber~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte) 7 +Inferred type updated to byte in (unumber~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 +Inferred type updated to byte in (unumber~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 +Inferred type updated to byte in (unumber~) bitmap_clear::$0 ← (byte) bitmap_clear::fgcol#1 * (byte) $10 +Inferred type updated to byte in (unumber~) bitmap_clear::$1 ← (byte~) bitmap_clear::$0 + (byte) bitmap_clear::bgcol#1 +Inferred type updated to word in (unumber~) bitmap_plot::$1 ← (word) bitmap_plot::x#1 & (word) $fff8 +Inferred type updated to byte in (unumber~) main::vicSelectGfxBank1_toDd001_$2#0 ← (byte~) main::vicSelectGfxBank1_toDd001_$1#0 / (byte) $40 +Inferred type updated to byte in (unumber~) main::vicSelectGfxBank1_toDd001_$3#0 ← (byte) 3 ^ (byte~) main::vicSelectGfxBank1_toDd001_$2#0 +Inferred type updated to word in (unumber~) main::toD0181_$1#0 ← (word~) main::toD0181_$0#0 & (word) $3fff +Inferred type updated to word in (unumber~) main::toD0181_$2#0 ← (word~) main::toD0181_$1#0 * (byte) 4 +Inferred type updated to byte in (unumber~) main::toD0181_$3#0 ← > (word~) main::toD0181_$2#0 +Inferred type updated to byte in (unumber~) main::toD0181_$6#0 ← (byte~) main::toD0181_$5#0 / (byte) 4 +Inferred type updated to byte in (unumber~) main::toD0181_$7#0 ← (byte~) main::toD0181_$6#0 & (byte) $f +Inferred type updated to byte in (unumber~) main::toD0181_$8#0 ← (byte~) main::toD0181_$3#0 | (byte~) main::toD0181_$7#0 +Inferred type updated to byte in (unumber~) main::$6 ← (byte~) main::$5 | (byte) 3 +Inferred type updated to signed word in (snumber~) splinePlot::$0 ← (signed word) splinePlot::p1_x#4 * (signed byte) 2 +Inferred type updated to signed word in (snumber~) splinePlot::$1 ← (signed word) splinePlot::p2_x#4 - (signed word~) splinePlot::$0 +Inferred type updated to signed word in (snumber~) splinePlot::$2 ← (signed word~) splinePlot::$1 + (signed word) splinePlot::p0_x#4 +Inferred type updated to signed word in (snumber~) splinePlot::$3 ← (signed word) splinePlot::p1_y#4 * (signed byte) 2 +Inferred type updated to signed word in (snumber~) splinePlot::$4 ← (signed word) splinePlot::p2_y#4 - (signed word~) splinePlot::$3 +Inferred type updated to signed word in (snumber~) splinePlot::$5 ← (signed word~) splinePlot::$4 + (signed word) splinePlot::p0_y#4 +Inferred type updated to signed word in (snumber~) splinePlot::$6 ← (signed word) splinePlot::p1_x#4 * (signed byte) 2 +Inferred type updated to signed word in (snumber~) splinePlot::$7 ← (signed word) splinePlot::p0_x#4 * (signed byte) 2 +Inferred type updated to signed word in (snumber~) splinePlot::$8 ← (signed word~) splinePlot::$6 - (signed word~) splinePlot::$7 +Inferred type updated to signed word in (snumber~) splinePlot::$9 ← (signed word) splinePlot::p1_y#4 * (signed byte) 2 +Inferred type updated to signed word in (snumber~) splinePlot::$10 ← (signed word) splinePlot::p0_y#4 * (signed byte) 2 +Inferred type updated to signed word in (snumber~) splinePlot::$11 ← (signed word~) splinePlot::$9 - (signed word~) splinePlot::$10 +Inferred type updated to signed dword in (snumber~) splinePlot::$13 ← (signed dword~) splinePlot::$12 * (signed word) $100 +Inferred type updated to signed dword in (snumber~) splinePlot::$15 ← (signed dword~) splinePlot::$14 * (signed word) $100 +Inferred type updated to signed dword in (snumber~) splinePlot::$16 ← (signed dword~) splinePlot::$15 * (signed byte) $10 +Inferred type updated to signed dword in (snumber~) splinePlot::$17 ← (signed dword~) splinePlot::$13 + (signed dword~) splinePlot::$16 +Inferred type updated to signed dword in (snumber~) splinePlot::$19 ← (signed dword~) splinePlot::$18 * (signed word) $100 +Inferred type updated to signed dword in (snumber~) splinePlot::$21 ← (signed dword~) splinePlot::$20 * (signed word) $100 +Inferred type updated to signed dword in (snumber~) splinePlot::$22 ← (signed dword~) splinePlot::$21 * (signed byte) $10 +Inferred type updated to signed dword in (snumber~) splinePlot::$23 ← (signed dword~) splinePlot::$19 + (signed dword~) splinePlot::$22 +Inferred type updated to signed dword in (snumber~) splinePlot::$25 ← (signed dword~) splinePlot::$24 * (signed word) $100 +Inferred type updated to signed dword in (snumber~) splinePlot::$26 ← (signed dword~) splinePlot::$25 * (signed byte) 2 +Inferred type updated to signed dword in (snumber~) splinePlot::$28 ← (signed dword~) splinePlot::$27 * (signed word) $100 +Inferred type updated to signed dword in (snumber~) splinePlot::$29 ← (signed dword~) splinePlot::$28 * (signed byte) 2 +Inferred type updated to signed dword in (snumber~) splinePlot::$31 ← (signed dword~) splinePlot::$30 * (signed dword) $10000 +Inferred type updated to signed dword in (snumber~) splinePlot::$33 ← (signed dword~) splinePlot::$32 * (signed dword) $10000 +Adding pointer type conversion cast (byte*) bitmap_plot::$0 in (byte*~) bitmap_plot::$0 ← (word~) bitmap_plot::$3 +Successful SSA optimization PassNAddTypeConversionAssignment +Inversing boolean not [79] (bool~) memset::$1 ← (word) memset::num#2 <= (byte) 0 from [78] (bool~) memset::$0 ← (word) memset::num#2 > (byte) 0 +Inversing boolean not [110] (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte) 0 from [109] (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte) 0 +Inversing boolean not [130] (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte) 7 from [129] (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte) 7 +Successful SSA optimization Pass2UnaryNotSimplification +Alias (dword) clock::return#0 = (dword~) clock::$0 (dword) clock::return#3 (dword) clock::return#1 +Alias (byte) print_byte_at::b#0 = (byte~) print_word_at::$0 +Alias (word) print_word_at::w#2 = (word) print_word_at::w#3 +Alias (byte*) print_word_at::at#2 = (byte*) print_word_at::at#3 +Alias (byte) print_byte_at::b#1 = (byte~) print_word_at::$2 +Alias (byte*) print_byte_at::at#1 = (byte*~) print_word_at::$3 +Alias (word) print_word_at::w#0 = (word~) print_dword_at::$0 +Alias (dword) print_dword_at::dw#1 = (dword) print_dword_at::dw#2 +Alias (byte*) print_dword_at::at#1 = (byte*) print_dword_at::at#2 +Alias (word) print_word_at::w#1 = (word~) print_dword_at::$2 +Alias (byte*) print_word_at::at#1 = (byte*~) print_dword_at::$3 +Alias (byte) print_byte_at::b#2 = (byte) print_byte_at::b#3 +Alias (byte*) print_byte_at::at#2 = (byte*) print_byte_at::at#3 +Alias (byte*) print_char_at::at#1 = (byte*~) print_byte_at::$3 +Alias (void*) memset::return#0 = (void*) memset::str#2 (void*) memset::return#4 (void*) memset::return#1 +Alias (void*) memset::str#3 = (void*) memset::str#4 +Alias (word) memset::num#2 = (word) memset::num#3 +Alias (byte) memset::c#3 = (byte) memset::c#4 +Alias (byte*) memset::end#0 = (byte*~) memset::$3 +Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#4 +Alias (byte*) bitmap_init::gfx#4 = (byte*) bitmap_init::gfx#5 +Alias (byte*) bitmap_gfx#24 = (byte*) bitmap_gfx#25 +Alias (byte*) bitmap_screen#23 = (byte*) bitmap_screen#24 +Alias (byte*) bitmap_init::gfx#2 = (byte*) bitmap_init::gfx#3 (byte*) bitmap_init::yoffs#0 +Alias (byte*) bitmap_gfx#20 = (byte*) bitmap_gfx#22 +Alias (byte*) bitmap_screen#19 = (byte*) bitmap_screen#21 +Alias (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#3 +Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#4 +Alias (byte*) bitmap_gfx#16 = (byte*) bitmap_gfx#17 +Alias (byte*) bitmap_screen#15 = (byte*) bitmap_screen#16 +Alias (byte*) bitmap_init::yoffs#1 = (byte*~) bitmap_init::$10 +Alias (byte*) bitmap_gfx#11 = (byte*) bitmap_gfx#6 (byte*) bitmap_gfx#2 +Alias (byte*) bitmap_screen#11 = (byte*) bitmap_screen#6 (byte*) bitmap_screen#2 +Alias (byte) bitmap_clear::col#0 = (byte~) bitmap_clear::$1 +Alias (byte*) bitmap_gfx#12 = (byte*) bitmap_gfx#7 +Alias (byte*) bitmap_plot::plotter#0 = (byte*~) bitmap_plot::$0 +Alias (byte*) bitmap_gfx#0 = (byte*) bitmap_gfx#19 (byte*) bitmap_gfx#15 +Alias (byte*) bitmap_screen#0 = (byte*) bitmap_screen#18 (byte*) bitmap_screen#14 +Alias (byte*) bitmap_gfx#14 = (byte*) bitmap_gfx#3 (byte*) bitmap_gfx#8 (byte*) bitmap_gfx#37 (byte*) bitmap_gfx#36 (byte*) bitmap_gfx#35 (byte*) bitmap_gfx#34 (byte*) bitmap_gfx#33 (byte*) bitmap_gfx#32 (byte*) bitmap_gfx#31 (byte*) bitmap_gfx#30 (byte*) bitmap_gfx#29 (byte*) bitmap_gfx#28 (byte*) bitmap_gfx#27 (byte*) bitmap_gfx#26 (byte*) bitmap_gfx#23 (byte*) bitmap_gfx#21 (byte*) bitmap_gfx#18 (byte*) bitmap_gfx#9 (byte*) bitmap_gfx#4 +Alias (byte*) bitmap_screen#13 = (byte*) bitmap_screen#3 (byte*) bitmap_screen#8 (byte*) bitmap_screen#36 (byte*) bitmap_screen#35 (byte*) bitmap_screen#34 (byte*) bitmap_screen#33 (byte*) bitmap_screen#32 (byte*) bitmap_screen#31 (byte*) bitmap_screen#30 (byte*) bitmap_screen#29 (byte*) bitmap_screen#28 (byte*) bitmap_screen#27 (byte*) bitmap_screen#26 (byte*) bitmap_screen#25 (byte*) bitmap_screen#22 (byte*) bitmap_screen#20 (byte*) bitmap_screen#17 (byte*) bitmap_screen#9 (byte*) bitmap_screen#4 +Alias (byte*) main::vicSelectGfxBank1_gfx#0 = (byte*) main::vicSelectGfxBank1_gfx#1 (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 +Alias (byte) main::vicSelectGfxBank1_toDd001_return#0 = (byte~) main::vicSelectGfxBank1_toDd001_$3#0 (byte) main::vicSelectGfxBank1_toDd001_return#2 (byte) main::vicSelectGfxBank1_toDd001_return#1 (byte) main::vicSelectGfxBank1_toDd001_return#3 (byte~) main::vicSelectGfxBank1_$0#0 +Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 +Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 +Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8#0 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$3 +Alias (dword) clock::return#2 = (dword) clock::return#4 +Alias (dword) main::cyclecount#0 = (dword~) main::$13 +Alias (signed word) splinePlot::a_x#0 = (signed word~) splinePlot::$2 +Alias (signed word) splinePlot::a_y#0 = (signed word~) splinePlot::$5 +Alias (signed word) splinePlot::b_x#0 = (signed word~) splinePlot::$8 +Alias (signed word) splinePlot::b_y#0 = (signed word~) splinePlot::$11 +Alias (signed dword) splinePlot::i_x#0 = (signed dword~) splinePlot::$17 +Alias (signed dword) splinePlot::i_y#0 = (signed dword~) splinePlot::$23 +Alias (signed dword) splinePlot::j_x#0 = (signed dword~) splinePlot::$26 +Alias (signed dword) splinePlot::j_y#0 = (signed dword~) splinePlot::$29 +Alias (signed dword) splinePlot::p_x#0 = (signed dword~) splinePlot::$31 +Alias (signed dword) splinePlot::p_y#0 = (signed dword~) splinePlot::$33 +Alias (word) bitmap_plot::x#0 = (word~) splinePlot::$34 +Alias (byte) bitmap_plot::y#0 = (byte~) splinePlot::$36 +Alias (signed dword) splinePlot::p_x#2 = (signed dword) splinePlot::p_x#3 +Alias (signed dword) splinePlot::i_x#2 = (signed dword) splinePlot::i_x#3 +Alias (signed dword) splinePlot::p_y#2 = (signed dword) splinePlot::p_y#3 +Alias (signed dword) splinePlot::i_y#2 = (signed dword) splinePlot::i_y#3 +Alias (signed dword) splinePlot::j_x#1 = (signed dword) splinePlot::j_x#2 +Alias (signed dword) splinePlot::j_y#1 = (signed dword) splinePlot::j_y#2 +Alias (byte) splinePlot::n#2 = (byte) splinePlot::n#3 +Alias (signed dword) splinePlot::p_x#1 = (signed dword~) splinePlot::$38 +Alias (signed dword) splinePlot::p_y#1 = (signed dword~) splinePlot::$39 +Alias (signed dword) splinePlot::i_x#1 = (signed dword~) splinePlot::$40 +Alias (signed dword) splinePlot::i_y#1 = (signed dword~) splinePlot::$41 +Alias (byte*) bitmap_gfx#10 = (byte*) bitmap_gfx#5 +Alias (byte*) bitmap_screen#10 = (byte*) bitmap_screen#5 +Successful SSA optimization Pass2AliasElimination +Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3 +Alias (byte*) bitmap_init::gfx#2 = (byte*) bitmap_init::gfx#4 +Alias (byte*) bitmap_gfx#20 = (byte*) bitmap_gfx#24 +Alias (byte*) bitmap_screen#19 = (byte*) bitmap_screen#23 +Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3 +Alias (byte*) bitmap_gfx#11 = (byte*) bitmap_gfx#16 +Alias (byte*) bitmap_screen#11 = (byte*) bitmap_screen#15 +Successful SSA optimization Pass2AliasElimination +Self Phi Eliminated (byte) memset::c#2 +Self Phi Eliminated (byte*) memset::end#1 +Self Phi Eliminated (void*) memset::str#5 +Self Phi Eliminated (byte*) bitmap_init::gfx#2 +Self Phi Eliminated (byte*) bitmap_gfx#20 +Self Phi Eliminated (byte*) bitmap_screen#19 +Self Phi Eliminated (byte*) bitmap_gfx#11 +Self Phi Eliminated (byte*) bitmap_screen#11 +Self Phi Eliminated (signed dword) splinePlot::j_x#1 +Self Phi Eliminated (signed dword) splinePlot::j_y#1 +Successful SSA optimization Pass2SelfPhiElimination +Identical Phi Values (dword) print_dword_at::dw#1 (dword) print_dword_at::dw#0 +Identical Phi Values (byte*) print_dword_at::at#1 (byte*) print_dword_at::at#0 +Identical Phi Values (byte) memset::c#2 (byte) memset::c#3 +Identical Phi Values (byte*) memset::end#1 (byte*) memset::end#0 +Identical Phi Values (void*) memset::str#5 (void*) memset::str#3 +Identical Phi Values (byte*) bitmap_init::gfx#1 (byte*) bitmap_init::gfx#0 +Identical Phi Values (byte*) bitmap_init::screen#1 (byte*) bitmap_init::screen#0 +Identical Phi Values (byte*) bitmap_init::gfx#2 (byte*) bitmap_init::gfx#1 +Identical Phi Values (byte*) bitmap_gfx#20 (byte*) bitmap_gfx#1 +Identical Phi Values (byte*) bitmap_screen#19 (byte*) bitmap_screen#1 +Identical Phi Values (byte*) bitmap_gfx#11 (byte*) bitmap_gfx#20 +Identical Phi Values (byte*) bitmap_screen#11 (byte*) bitmap_screen#19 +Identical Phi Values (byte) bitmap_clear::fgcol#1 (byte) bitmap_clear::fgcol#0 +Identical Phi Values (byte) bitmap_clear::bgcol#1 (byte) bitmap_clear::bgcol#0 +Identical Phi Values (byte*) bitmap_screen#7 (byte*) bitmap_screen#13 +Identical Phi Values (byte*) bitmap_gfx#12 (byte*) bitmap_gfx#14 +Identical Phi Values (byte) bitmap_plot::y#1 (byte) bitmap_plot::y#0 +Identical Phi Values (word) bitmap_plot::x#1 (word) bitmap_plot::x#0 +Identical Phi Values (byte*) bitmap_gfx#13 (byte*) bitmap_gfx#0 +Identical Phi Values (byte*) bitmap_screen#12 (byte*) bitmap_screen#0 +Identical Phi Values (byte*) bitmap_gfx#14 (byte*) bitmap_gfx#11 +Identical Phi Values (byte*) bitmap_screen#13 (byte*) bitmap_screen#11 +Identical Phi Values (signed dword) splinePlot::j_x#1 (signed dword) splinePlot::j_x#0 +Identical Phi Values (signed dword) splinePlot::j_y#1 (signed dword) splinePlot::j_y#0 +Identical Phi Values (byte*) bitmap_gfx#10 (byte*) bitmap_gfx#14 +Identical Phi Values (byte*) bitmap_screen#10 (byte*) bitmap_screen#13 +Successful SSA optimization Pass2IdenticalPhiElimination +Identical Phi Values (void*) memset::return#0 (void*) memset::str#3 +Successful SSA optimization Pass2IdenticalPhiElimination +Identified duplicate assignment right side [26] (byte~) clock_start::$2 ← (byte) CIA_TIMER_CONTROL_STOP#0 | (byte) CIA_TIMER_CONTROL_CONTINUOUS#0 +Identified duplicate assignment right side [33] (byte~) clock_start::$6 ← (byte) CIA_TIMER_CONTROL_START#0 | (byte) CIA_TIMER_CONTROL_CONTINUOUS#0 +Identified duplicate assignment right side [128] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 +Identified duplicate assignment right side [292] (signed word~) splinePlot::$6 ← (signed word) splinePlot::p1_x#4 * (signed byte) 2 +Identified duplicate assignment right side [295] (signed word~) splinePlot::$9 ← (signed word) splinePlot::p1_y#4 * (signed byte) 2 +Successful SSA optimization Pass2DuplicateRValueIdentification +Simple Condition (bool~) memset::$1 [80] if((word) memset::num#2<=(byte) 0) goto memset::@1 +Simple Condition (bool~) memset::$4 [92] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@4 +Simple Condition (bool~) bitmap_init::$1 [111] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@2 +Simple Condition (bool~) bitmap_init::$2 [115] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 +Simple Condition (bool~) bitmap_init::$9 [131] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@6 +Simple Condition (bool~) bitmap_init::$11 [135] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 +Simple Condition (bool~) splinePlot::$42 [347] if((byte) splinePlot::n#1!=rangelast(0,$10)) goto splinePlot::@1 +Successful SSA optimization Pass2ConditionalJumpSimplification +Constant right-side identified [98] (byte[$100]) bitmap_plot_ylo#0 ← { fill( $100, 0) } +Constant right-side identified [99] (byte[$100]) bitmap_plot_yhi#0 ← { fill( $100, 0) } +Constant right-side identified [100] (byte[$100]) bitmap_plot_bit#0 ← { fill( $100, 0) } +Successful SSA optimization Pass2ConstantRValueConsolidation +Constant (const byte*) D011#0 = (byte*) 53265 +Constant (const byte) VIC_BMM#0 = $20 +Constant (const byte) VIC_DEN#0 = $10 +Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) D018#0 = (byte*) 53272 +Constant (const byte*) CIA2_PORT_A#0 = (byte*) 56576 +Constant (const byte*) CIA2_PORT_A_DDR#0 = (byte*) 56578 +Constant (const dword*) CIA2_TIMER_AB#0 = (dword*) 56580 +Constant (const byte*) CIA2_TIMER_A_CONTROL#0 = (byte*) 56590 +Constant (const byte*) CIA2_TIMER_B_CONTROL#0 = (byte*) 56591 +Constant (const byte) CIA_TIMER_CONTROL_STOP#0 = 0 +Constant (const byte) CIA_TIMER_CONTROL_START#0 = 1 +Constant (const byte) CIA_TIMER_CONTROL_CONTINUOUS#0 = 0 +Constant (const byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES#0 = 0 +Constant (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 = $40 +Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 +Constant (const dword) CLOCKS_PER_INIT#0 = $12 +Constant (const byte[]) print_hextab#0 = $0 +Constant (const byte*) bitmap_screen#0 = (byte*) 0 +Constant (const byte*) bitmap_gfx#0 = (byte*) 0 +Constant (const byte[$100]) bitmap_plot_ylo#0 = { fill( $100, 0) } +Constant (const byte[$100]) bitmap_plot_yhi#0 = { fill( $100, 0) } +Constant (const byte[$100]) bitmap_plot_bit#0 = { fill( $100, 0) } +Constant (const byte) bitmap_init::bits#0 = $80 +Constant (const byte) bitmap_init::x#0 = 0 +Constant (const byte) bitmap_init::bits#2 = $80 +Constant (const byte) bitmap_init::y#0 = 0 +Constant (const word) memset::num#0 = $3e8 +Constant (const byte) memset::c#1 = 0 +Constant (const word) memset::num#1 = $1f40 +Constant (const byte*) SCREEN#0 = (byte*) 1024 +Constant (const byte*) BITMAP_SCREEN#0 = (byte*) 23552 +Constant (const byte*) BITMAP_GRAPHICS#0 = (byte*) 24576 +Constant (const signed word) main::p0_x#0 = $32 +Constant (const signed word) main::p0_y#0 = $32 +Constant (const signed word) main::p1a_x#0 = $64 +Constant (const signed word) main::p1a_y#0 = $32 +Constant (const signed word) main::p1b_x#0 = $32 +Constant (const signed word) main::p1b_y#0 = $64 +Constant (const signed word) main::p2_x#0 = $64 +Constant (const signed word) main::p2_y#0 = $64 +Constant (const signed word) main::p3a_x#0 = $96 +Constant (const signed word) main::p3a_y#0 = $64 +Constant (const signed word) main::p3b_x#0 = $64 +Constant (const signed word) main::p3b_y#0 = $96 +Constant (const signed word) main::p4_x#0 = $96 +Constant (const signed word) main::p4_y#0 = $96 +Constant (const byte) splinePlot::n#0 = 0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte*) bitmap_init::gfx#0 = BITMAP_GRAPHICS#0 +Constant (const byte*) bitmap_init::screen#0 = BITMAP_SCREEN#0 +Constant (const byte) bitmap_clear::bgcol#0 = BLACK#0 +Constant (const byte) bitmap_clear::fgcol#0 = WHITE#0 +Constant (const byte*) main::vicSelectGfxBank1_gfx#0 = BITMAP_SCREEN#0 +Constant (const byte*) main::toD0181_screen#0 = BITMAP_SCREEN#0 +Constant (const byte*) main::toD0181_gfx#0 = BITMAP_GRAPHICS#0 +Constant (const signed word) splinePlot::p0_x#0 = main::p0_x#0 +Constant (const signed word) splinePlot::p0_y#0 = main::p0_y#0 +Constant (const signed word) splinePlot::p1_x#0 = main::p1a_x#0 +Constant (const signed word) splinePlot::p1_y#0 = main::p1a_y#0 +Constant (const signed word) splinePlot::p2_x#0 = main::p2_x#0 +Constant (const signed word) splinePlot::p2_y#0 = main::p2_y#0 +Constant (const signed word) splinePlot::p0_x#1 = main::p2_x#0 +Constant (const signed word) splinePlot::p0_y#1 = main::p2_y#0 +Constant (const signed word) splinePlot::p1_x#1 = main::p3a_x#0 +Constant (const signed word) splinePlot::p1_y#1 = main::p3a_y#0 +Constant (const signed word) splinePlot::p2_x#1 = main::p4_x#0 +Constant (const signed word) splinePlot::p2_y#1 = main::p4_y#0 +Constant (const signed word) splinePlot::p0_x#2 = main::p2_x#0 +Constant (const signed word) splinePlot::p0_y#2 = main::p2_y#0 +Constant (const signed word) splinePlot::p1_x#2 = main::p1b_x#0 +Constant (const signed word) splinePlot::p1_y#2 = main::p1b_y#0 +Constant (const signed word) splinePlot::p2_x#2 = main::p0_x#0 +Constant (const signed word) splinePlot::p2_y#2 = main::p0_y#0 +Constant (const signed word) splinePlot::p0_x#3 = main::p4_x#0 +Constant (const signed word) splinePlot::p0_y#3 = main::p4_y#0 +Constant (const signed word) splinePlot::p1_x#3 = main::p3b_x#0 +Constant (const signed word) splinePlot::p1_y#3 = main::p3b_y#0 +Constant (const signed word) splinePlot::p2_x#3 = main::p2_x#0 +Constant (const signed word) splinePlot::p2_y#3 = main::p2_y#0 +Constant (const byte*) print_dword_at::at#0 = SCREEN#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte*) print_word_at::at#0 = print_dword_at::at#0 +Constant (const byte*) bitmap_gfx#1 = bitmap_init::gfx#0 +Constant (const byte*) bitmap_screen#1 = bitmap_init::screen#0 +Successful SSA optimization Pass2ConstantIdentification +Constant value identified (void*)bitmap_screen#1 in [147] (void*) memset::str#0 ← (void*)(const byte*) bitmap_screen#1 +Constant value identified (void*)bitmap_gfx#1 in [153] (void*) memset::str#1 ← (void*)(const byte*) bitmap_gfx#1 +Constant value identified (word)main::vicSelectGfxBank1_gfx#0 in [188] (word~) main::vicSelectGfxBank1_toDd001_$0#0 ← (word)(const byte*) main::vicSelectGfxBank1_gfx#0 +Constant value identified (word)main::toD0181_screen#0 in [202] (word~) main::toD0181_$0#0 ← (word)(const byte*) main::toD0181_screen#0 +Constant value identified (word)main::toD0181_gfx#0 in [206] (word~) main::toD0181_$4#0 ← (word)(const byte*) main::toD0181_gfx#0 +Successful SSA optimization Pass2ConstantValues +Resolved ranged next value [113] bitmap_init::x#1 ← ++ bitmap_init::x#2 to ++ +Resolved ranged comparison value [115] if(bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 to (number) 0 +Resolved ranged next value [133] bitmap_init::y#1 ← ++ bitmap_init::y#2 to ++ +Resolved ranged comparison value [135] if(bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 to (number) 0 +Resolved ranged next value [345] splinePlot::n#1 ← ++ splinePlot::n#2 to ++ +Resolved ranged comparison value [347] if(splinePlot::n#1!=rangelast(0,$10)) goto splinePlot::@1 to (number) $11 +Simplifying expression containing zero CIA_TIMER_CONTROL_CONTINUOUS#0 in [23] (byte~) clock_start::$0 ← (const byte) CIA_TIMER_CONTROL_STOP#0 | (const byte) CIA_TIMER_CONTROL_CONTINUOUS#0 +Simplifying expression containing zero clock_start::$0 in [24] (byte~) clock_start::$1 ← (byte~) clock_start::$0 | (const byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES#0 +Simplifying expression containing zero CIA_TIMER_CONTROL_START#0 in [30] (byte~) clock_start::$4 ← (const byte) CIA_TIMER_CONTROL_START#0 | (const byte) CIA_TIMER_CONTROL_CONTINUOUS#0 +Simplifying expression containing zero clock_start::$6 in [34] (byte~) clock_start::$7 ← (byte~) clock_start::$6 | (const byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES#0 +Simplifying expression containing zero bitmap_clear::$0 in [145] (byte) bitmap_clear::col#0 ← (byte~) bitmap_clear::$0 + (const byte) bitmap_clear::bgcol#0 +Successful SSA optimization PassNSimplifyExpressionWithZero +Eliminating unused variable (void*) memset::return#2 and assignment [79] (void*) memset::return#2 ← (void*) memset::str#3 +Eliminating unused variable (void*) memset::return#3 and assignment [82] (void*) memset::return#3 ← (void*) memset::str#3 +Eliminating unused constant (const byte) bitmap_clear::bgcol#0 +Eliminating unused constant (const byte) CIA_TIMER_CONTROL_STOP#0 +Eliminating unused constant (const byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES#0 +Eliminating unused constant (const byte*) bitmap_screen#0 +Eliminating unused constant (const byte*) bitmap_gfx#0 +Successful SSA optimization PassNEliminateUnusedVars +Eliminating unused constant (const byte) BLACK#0 +Successful SSA optimization PassNEliminateUnusedVars +Adding number conversion cast (unumber) 0 in if((byte) bitmap_init::x#1!=(number) 0) goto bitmap_init::@1 +Adding number conversion cast (unumber) 0 in if((byte) bitmap_init::y#1!=(number) 0) goto bitmap_init::@5 +Adding number conversion cast (unumber) $11 in if((byte) splinePlot::n#1!=(number) $11) goto splinePlot::@1 +Successful SSA optimization PassNAddNumberTypeConversions +Inlining cast (byte*) bitmap_plot::plotter#0 ← (byte*)(word~) bitmap_plot::$3 +Successful SSA optimization Pass2InlineCast +Simplifying constant integer cast 0 +Simplifying constant integer cast 0 +Simplifying constant integer cast $11 +Successful SSA optimization PassNCastSimplification +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) 0 +Finalized unsigned number type (byte) $11 +Successful SSA optimization PassNFinalizeNumberTypeConversions +Alias (byte~) clock_start::$1 = (byte~) clock_start::$0 (byte~) clock_start::$2 +Alias (byte~) clock_start::$6 = (byte~) clock_start::$4 (byte~) clock_start::$7 +Alias (byte~) bitmap_init::$7 = (byte~) bitmap_init::$3 +Alias (byte) bitmap_clear::col#0 = (byte~) bitmap_clear::$0 +Alias (signed word~) splinePlot::$6 = (signed word~) splinePlot::$0 +Alias (signed word~) splinePlot::$9 = (signed word~) splinePlot::$3 +Successful SSA optimization Pass2AliasElimination +Constant right-side identified [27] (byte*) print_word_at::at#1 ← (const byte*) print_dword_at::at#0 + (byte) 4 +Constant right-side identified [74] (byte) bitmap_clear::col#0 ← (const byte) bitmap_clear::fgcol#0 * (byte) $10 +Constant right-side identified [107] (byte~) main::$4 ← (const byte) VIC_BMM#0 | (const byte) VIC_DEN#0 +Successful SSA optimization Pass2ConstantRValueConsolidation +Constant (const byte) clock_start::$1 = CIA_TIMER_CONTROL_CONTINUOUS#0 +Constant (const byte) clock_start::$6 = CIA_TIMER_CONTROL_START#0 +Constant (const byte*) print_word_at::at#1 = print_dword_at::at#0+4 +Constant (const byte) bitmap_clear::col#0 = bitmap_clear::fgcol#0*$10 +Constant (const void*) memset::str#0 = (void*)bitmap_screen#1 +Constant (const void*) memset::str#1 = (void*)bitmap_gfx#1 +Constant (const word) main::vicSelectGfxBank1_toDd001_$0#0 = (word)main::vicSelectGfxBank1_gfx#0 +Constant (const word) main::toD0181_$0#0 = (word)main::toD0181_screen#0 +Constant (const word) main::toD0181_$4#0 = (word)main::toD0181_gfx#0 +Constant (const byte) main::$4 = VIC_BMM#0|VIC_DEN#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) memset::c#0 = bitmap_clear::col#0 +Successful SSA optimization Pass2ConstantIdentification +Simplifying expression containing zero CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 in [6] (byte~) clock_start::$3 ← (const byte) clock_start::$1 | (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 +Successful SSA optimization PassNSimplifyExpressionWithZero +Constant right-side identified [6] (byte~) clock_start::$5 ← (const byte) clock_start::$6 | (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 +Constant right-side identified [79] (byte~) main::vicSelectGfxBank1_toDd001_$1#0 ← > (const word) main::vicSelectGfxBank1_toDd001_$0#0 +Constant right-side identified [83] (word~) main::toD0181_$1#0 ← (const word) main::toD0181_$0#0 & (word) $3fff +Constant right-side identified [86] (byte~) main::toD0181_$5#0 ← > (const word) main::toD0181_$4#0 +Constant right-side identified [91] (byte~) main::$5 ← (const byte) main::$4 | (const byte) VIC_RSEL#0 +Successful SSA optimization Pass2ConstantRValueConsolidation +Constant (const byte) clock_start::$3 = CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 +Constant (const byte) clock_start::$5 = clock_start::$6|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 +Constant (const byte) main::vicSelectGfxBank1_toDd001_$1#0 = >main::vicSelectGfxBank1_toDd001_$0#0 +Constant (const word) main::toD0181_$1#0 = main::toD0181_$0#0&$3fff +Constant (const byte) main::toD0181_$5#0 = >main::toD0181_$4#0 +Constant (const byte) main::$5 = main::$4|VIC_RSEL#0 +Successful SSA optimization Pass2ConstantIdentification +Constant right-side identified [77] (byte~) main::vicSelectGfxBank1_toDd001_$2#0 ← (const byte) main::vicSelectGfxBank1_toDd001_$1#0 / (byte) $40 +Constant right-side identified [80] (word~) main::toD0181_$2#0 ← (const word) main::toD0181_$1#0 * (byte) 4 +Constant right-side identified [82] (byte~) main::toD0181_$6#0 ← (const byte) main::toD0181_$5#0 / (byte) 4 +Constant right-side identified [86] (byte~) main::$6 ← (const byte) main::$5 | (byte) 3 +Successful SSA optimization Pass2ConstantRValueConsolidation +Constant (const byte) main::vicSelectGfxBank1_toDd001_$2#0 = main::vicSelectGfxBank1_toDd001_$1#0/$40 +Constant (const word) main::toD0181_$2#0 = main::toD0181_$1#0*4 +Constant (const byte) main::toD0181_$6#0 = main::toD0181_$5#0/4 +Constant (const byte) main::$6 = main::$5|3 +Successful SSA optimization Pass2ConstantIdentification +Constant right-side identified [77] (byte) main::vicSelectGfxBank1_toDd001_return#0 ← (byte) 3 ^ (const byte) main::vicSelectGfxBank1_toDd001_$2#0 +Constant right-side identified [79] (byte~) main::toD0181_$3#0 ← > (const word) main::toD0181_$2#0 +Constant right-side identified [80] (byte~) main::toD0181_$7#0 ← (const byte) main::toD0181_$6#0 & (byte) $f +Successful SSA optimization Pass2ConstantRValueConsolidation +Constant (const byte) main::vicSelectGfxBank1_toDd001_return#0 = 3^main::vicSelectGfxBank1_toDd001_$2#0 +Constant (const byte) main::toD0181_$3#0 = >main::toD0181_$2#0 +Constant (const byte) main::toD0181_$7#0 = main::toD0181_$6#0&$f +Successful SSA optimization Pass2ConstantIdentification +Constant right-side identified [78] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$3#0 | (const byte) main::toD0181_$7#0 +Successful SSA optimization Pass2ConstantRValueConsolidation +Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_$7#0 +Successful SSA optimization Pass2ConstantIdentification +Inlining Noop Cast [36] (byte*~) memset::$2 ← (byte*)(void*) memset::str#3 keeping memset::str#3 +Inlining Noop Cast [38] (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3 keeping memset::str#3 +Successful SSA optimization Pass2NopCastInlining +Inlining Noop Cast [68] (byte*) bitmap_plot::plotter#0 ← (byte*)(word~) bitmap_plot::$3 keeping bitmap_plot::plotter#0 +Successful SSA optimization Pass2NopCastInlining +Rewriting multiplication to use shift [93] (signed word~) splinePlot::$6 ← (signed word) splinePlot::p1_x#4 * (signed byte) 2 +Rewriting multiplication to use shift [96] (signed word~) splinePlot::$9 ← (signed word) splinePlot::p1_y#4 * (signed byte) 2 +Rewriting multiplication to use shift [99] (signed word~) splinePlot::$7 ← (signed word) splinePlot::p0_x#4 * (signed byte) 2 +Rewriting multiplication to use shift [101] (signed word~) splinePlot::$10 ← (signed word) splinePlot::p0_y#4 * (signed byte) 2 +Rewriting multiplication to use shift [104] (signed dword~) splinePlot::$13 ← (signed dword~) splinePlot::$12 * (signed word) $100 +Rewriting multiplication to use shift [106] (signed dword~) splinePlot::$15 ← (signed dword~) splinePlot::$14 * (signed word) $100 +Rewriting multiplication to use shift [107] (signed dword~) splinePlot::$16 ← (signed dword~) splinePlot::$15 * (signed byte) $10 +Rewriting multiplication to use shift [110] (signed dword~) splinePlot::$19 ← (signed dword~) splinePlot::$18 * (signed word) $100 +Rewriting multiplication to use shift [112] (signed dword~) splinePlot::$21 ← (signed dword~) splinePlot::$20 * (signed word) $100 +Rewriting multiplication to use shift [113] (signed dword~) splinePlot::$22 ← (signed dword~) splinePlot::$21 * (signed byte) $10 +Rewriting multiplication to use shift [116] (signed dword~) splinePlot::$25 ← (signed dword~) splinePlot::$24 * (signed word) $100 +Rewriting multiplication to use shift [117] (signed dword) splinePlot::j_x#0 ← (signed dword~) splinePlot::$25 * (signed byte) 2 +Rewriting multiplication to use shift [119] (signed dword~) splinePlot::$28 ← (signed dword~) splinePlot::$27 * (signed word) $100 +Rewriting multiplication to use shift [120] (signed dword) splinePlot::j_y#0 ← (signed dword~) splinePlot::$28 * (signed byte) 2 +Rewriting multiplication to use shift [122] (signed dword) splinePlot::p_x#0 ← (signed dword~) splinePlot::$30 * (signed dword) $10000 +Rewriting multiplication to use shift [124] (signed dword) splinePlot::p_y#0 ← (signed dword~) splinePlot::$32 * (signed dword) $10000 +Successful SSA optimization Pass2MultiplyToShiftRewriting +Inlining constant with var siblings (const byte*) print_word_at::at#0 +Inlining constant with var siblings (const byte*) print_word_at::at#1 +Inlining constant with var siblings (const word) memset::num#0 +Inlining constant with var siblings (const byte) memset::c#1 +Inlining constant with var siblings (const word) memset::num#1 +Inlining constant with var siblings (const void*) memset::str#0 +Inlining constant with var siblings (const void*) memset::str#1 +Inlining constant with var siblings (const byte) memset::c#0 +Inlining constant with var siblings (const byte) bitmap_init::bits#0 +Inlining constant with var siblings (const byte) bitmap_init::x#0 +Inlining constant with var siblings (const byte) bitmap_init::bits#2 +Inlining constant with var siblings (const byte) bitmap_init::y#0 +Inlining constant with var siblings (const byte) splinePlot::n#0 +Inlining constant with var siblings (const signed word) splinePlot::p0_x#0 +Inlining constant with var siblings (const signed word) splinePlot::p0_y#0 +Inlining constant with var siblings (const signed word) splinePlot::p1_x#0 +Inlining constant with var siblings (const signed word) splinePlot::p1_y#0 +Inlining constant with var siblings (const signed word) splinePlot::p2_x#0 +Inlining constant with var siblings (const signed word) splinePlot::p2_y#0 +Inlining constant with var siblings (const signed word) splinePlot::p0_x#1 +Inlining constant with var siblings (const signed word) splinePlot::p0_y#1 +Inlining constant with var siblings (const signed word) splinePlot::p1_x#1 +Inlining constant with var siblings (const signed word) splinePlot::p1_y#1 +Inlining constant with var siblings (const signed word) splinePlot::p2_x#1 +Inlining constant with var siblings (const signed word) splinePlot::p2_y#1 +Inlining constant with var siblings (const signed word) splinePlot::p0_x#2 +Inlining constant with var siblings (const signed word) splinePlot::p0_y#2 +Inlining constant with var siblings (const signed word) splinePlot::p1_x#2 +Inlining constant with var siblings (const signed word) splinePlot::p1_y#2 +Inlining constant with var siblings (const signed word) splinePlot::p2_x#2 +Inlining constant with var siblings (const signed word) splinePlot::p2_y#2 +Inlining constant with var siblings (const signed word) splinePlot::p0_x#3 +Inlining constant with var siblings (const signed word) splinePlot::p0_y#3 +Inlining constant with var siblings (const signed word) splinePlot::p1_x#3 +Inlining constant with var siblings (const signed word) splinePlot::p1_y#3 +Inlining constant with var siblings (const signed word) splinePlot::p2_x#3 +Inlining constant with var siblings (const signed word) splinePlot::p2_y#3 +Constant inlined bitmap_init::screen#0 = (const byte*) BITMAP_SCREEN#0 +Constant inlined bitmap_init::gfx#0 = (const byte*) BITMAP_GRAPHICS#0 +Constant inlined splinePlot::p2_x#1 = (const signed word) main::p4_x#0 +Constant inlined splinePlot::p2_x#0 = (const signed word) main::p2_x#0 +Constant inlined memset::num#1 = (word) $1f40 +Constant inlined memset::num#0 = (word) $3e8 +Constant inlined $0 = (const byte[]) print_hextab#0 +Constant inlined clock_start::$5 = (const byte) CIA_TIMER_CONTROL_START#0|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 +Constant inlined clock_start::$6 = (const byte) CIA_TIMER_CONTROL_START#0 +Constant inlined clock_start::$3 = (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 +Constant inlined splinePlot::p2_x#3 = (const signed word) main::p2_x#0 +Constant inlined splinePlot::p2_x#2 = (const signed word) main::p0_x#0 +Constant inlined print_dword_at::at#0 = (const byte*) SCREEN#0 +Constant inlined splinePlot::p1_x#3 = (const signed word) main::p3b_x#0 +Constant inlined splinePlot::p1_x#0 = (const signed word) main::p1a_x#0 +Constant inlined splinePlot::p1_x#2 = (const signed word) main::p1b_x#0 +Constant inlined splinePlot::p1_x#1 = (const signed word) main::p3a_x#0 +Constant inlined main::vicSelectGfxBank1_toDd001_$1#0 = >(word)(const byte*) BITMAP_SCREEN#0 +Constant inlined bitmap_gfx#1 = (const byte*) BITMAP_GRAPHICS#0 +Constant inlined main::toD0181_$1#0 = (word)(const byte*) BITMAP_SCREEN#0&(word) $3fff +Constant inlined splinePlot::p0_x#3 = (const signed word) main::p4_x#0 +Constant inlined splinePlot::p0_x#2 = (const signed word) main::p2_x#0 +Constant inlined splinePlot::p0_x#1 = (const signed word) main::p2_x#0 +Constant inlined splinePlot::p0_x#0 = (const signed word) main::p0_x#0 +Constant inlined main::toD0181_$7#0 = >(word)(const byte*) BITMAP_GRAPHICS#0/(byte) 4&(byte) $f +Constant inlined main::toD0181_$3#0 = >(word)(const byte*) BITMAP_SCREEN#0&(word) $3fff*(byte) 4 +Constant inlined main::toD0181_$5#0 = >(word)(const byte*) BITMAP_GRAPHICS#0 +Constant inlined memset::c#0 = (const byte) bitmap_clear::col#0 +Constant inlined bitmap_init::x#0 = (byte) 0 +Constant inlined memset::c#1 = (byte) 0 +Constant inlined main::toD0181_screen#0 = (const byte*) BITMAP_SCREEN#0 +Constant inlined main::toD0181_gfx#0 = (const byte*) BITMAP_GRAPHICS#0 +Constant inlined splinePlot::p2_y#0 = (const signed word) main::p2_y#0 +Constant inlined bitmap_init::bits#0 = (byte) $80 +Constant inlined splinePlot::p2_y#3 = (const signed word) main::p2_y#0 +Constant inlined bitmap_init::bits#2 = (byte) $80 +Constant inlined splinePlot::p2_y#2 = (const signed word) main::p0_y#0 +Constant inlined splinePlot::p2_y#1 = (const signed word) main::p4_y#0 +Constant inlined splinePlot::p1_y#3 = (const signed word) main::p3b_y#0 +Constant inlined splinePlot::p1_y#2 = (const signed word) main::p1b_y#0 +Constant inlined splinePlot::p1_y#1 = (const signed word) main::p3a_y#0 +Constant inlined splinePlot::p1_y#0 = (const signed word) main::p1a_y#0 +Constant inlined main::vicSelectGfxBank1_toDd001_$2#0 = >(word)(const byte*) BITMAP_SCREEN#0/(byte) $40 +Constant inlined memset::str#1 = (void*)(const byte*) BITMAP_GRAPHICS#0 +Constant inlined memset::str#0 = (void*)(const byte*) BITMAP_SCREEN#0 +Constant inlined splinePlot::n#0 = (byte) 0 +Constant inlined main::vicSelectGfxBank1_toDd001_$0#0 = (word)(const byte*) BITMAP_SCREEN#0 +Constant inlined main::toD0181_$0#0 = (word)(const byte*) BITMAP_SCREEN#0 +Constant inlined bitmap_clear::fgcol#0 = (const byte) WHITE#0 +Constant inlined splinePlot::p0_y#3 = (const signed word) main::p4_y#0 +Constant inlined splinePlot::p0_y#2 = (const signed word) main::p2_y#0 +Constant inlined splinePlot::p0_y#1 = (const signed word) main::p2_y#0 +Constant inlined splinePlot::p0_y#0 = (const signed word) main::p0_y#0 +Constant inlined clock_start::$1 = (const byte) CIA_TIMER_CONTROL_CONTINUOUS#0 +Constant inlined main::toD0181_$6#0 = >(word)(const byte*) BITMAP_GRAPHICS#0/(byte) 4 +Constant inlined bitmap_screen#1 = (const byte*) BITMAP_SCREEN#0 +Constant inlined main::toD0181_$2#0 = (word)(const byte*) BITMAP_SCREEN#0&(word) $3fff*(byte) 4 +Constant inlined main::toD0181_$4#0 = (word)(const byte*) BITMAP_GRAPHICS#0 +Constant inlined main::vicSelectGfxBank1_gfx#0 = (const byte*) BITMAP_SCREEN#0 +Constant inlined main::$5 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0 +Constant inlined bitmap_init::y#0 = (byte) 0 +Constant inlined main::$6 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 +Constant inlined print_word_at::at#1 = (const byte*) SCREEN#0+(byte) 4 +Constant inlined print_word_at::at#0 = (const byte*) SCREEN#0 +Constant inlined main::$4 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0 +Successful SSA optimization Pass2ConstantInlining +Added new block during phi lifting memset::@6(between memset::@4 and memset::@4) +Added new block during phi lifting bitmap_init::@9(between bitmap_init::@2 and bitmap_init::@1) +Added new block during phi lifting bitmap_init::@10(between bitmap_init::@1 and bitmap_init::@2) +Added new block during phi lifting bitmap_init::@11(between bitmap_init::@6 and bitmap_init::@5) +Added new block during phi lifting bitmap_init::@12(between bitmap_init::@5 and bitmap_init::@6) +Added new block during phi lifting splinePlot::@4(between splinePlot::@3 and splinePlot::@1) +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @4 +Adding NOP phi() at start of @20 +Adding NOP phi() at start of @31 +Adding NOP phi() at start of @37 +Adding NOP phi() at start of @41 +Adding NOP phi() at start of @42 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Adding NOP phi() at start of main::@3 +Adding NOP phi() at start of main::@4 +Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001 +Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001_@return +Adding NOP phi() at start of main::@1 +Adding NOP phi() at start of main::toD0181 +Adding NOP phi() at start of main::toD0181_@return +Adding NOP phi() at start of main::@5 +Adding NOP phi() at start of main::@6 +Adding NOP phi() at start of main::@7 +Adding NOP phi() at start of main::@8 +Adding NOP phi() at start of main::@9 +Adding NOP phi() at start of main::@11 +Adding NOP phi() at start of print_dword_at::@2 +Adding NOP phi() at start of print_word_at::@2 +Adding NOP phi() at start of print_byte_at::@2 +Adding NOP phi() at start of bitmap_clear +Adding NOP phi() at start of bitmap_clear::@1 +Adding NOP phi() at start of bitmap_clear::@2 +Adding NOP phi() at start of memset::@1 +Adding NOP phi() at start of bitmap_init +Adding NOP phi() at start of bitmap_init::@3 +Adding NOP phi() at start of bitmap_init::@4 +CALL GRAPH +Calls in [] to main:6 +Calls in [main] to bitmap_init:10 bitmap_clear:12 clock_start:23 splinePlot:25 splinePlot:27 splinePlot:29 splinePlot:31 clock:33 print_dword_at:38 +Calls in [print_dword_at] to print_word_at:43 print_word_at:46 +Calls in [print_word_at] to print_byte_at:54 print_byte_at:59 +Calls in [print_byte_at] to print_char_at:68 print_char_at:74 +Calls in [splinePlot] to bitmap_plot:123 +Calls in [bitmap_clear] to memset:149 memset:151 + +Created 27 initial phi equivalence classes +Coalesced [42] print_word_at::w#4 ← print_word_at::w#0 +Coalesced [45] print_word_at::w#5 ← print_word_at::w#1 +Coalesced [52] print_byte_at::b#4 ← print_byte_at::b#0 +Coalesced [53] print_byte_at::at#4 ← print_byte_at::at#0 +Coalesced [57] print_byte_at::b#5 ← print_byte_at::b#1 +Coalesced [58] print_byte_at::at#5 ← print_byte_at::at#1 +Coalesced [66] print_char_at::ch#3 ← print_char_at::ch#0 +Coalesced [67] print_char_at::at#3 ← print_char_at::at#0 +Coalesced [72] print_char_at::ch#4 ← print_char_at::ch#1 +Coalesced [73] print_char_at::at#4 ← print_char_at::at#1 +Coalesced [115] splinePlot::p_x#4 ← splinePlot::p_x#0 +Coalesced [116] splinePlot::p_y#4 ← splinePlot::p_y#0 +Coalesced [117] splinePlot::i_x#4 ← splinePlot::i_x#0 +Coalesced [118] splinePlot::i_y#4 ← splinePlot::i_y#0 +Coalesced [131] splinePlot::p_x#5 ← splinePlot::p_x#1 +Coalesced [132] splinePlot::p_y#5 ← splinePlot::p_y#1 +Coalesced [133] splinePlot::i_x#5 ← splinePlot::i_x#1 +Coalesced [134] splinePlot::i_y#5 ← splinePlot::i_y#1 +Coalesced [135] splinePlot::n#4 ← splinePlot::n#1 +Coalesced [164] memset::dst#4 ← memset::dst#1 +Coalesced [184] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 +Coalesced [189] bitmap_init::y#5 ← bitmap_init::y#1 +Coalesced [190] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 +Coalesced (already) [191] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 +Coalesced [192] bitmap_init::bits#5 ← bitmap_init::bits#4 +Coalesced [193] bitmap_init::x#5 ← bitmap_init::x#1 +Coalesced [194] bitmap_init::bits#6 ← bitmap_init::bits#1 +Coalesced down to 25 phi equivalence classes +Culled Empty Block (label) @4 +Culled Empty Block (label) @20 +Culled Empty Block (label) @31 +Culled Empty Block (label) @37 +Culled Empty Block (label) @42 +Culled Empty Block (label) main::@4 +Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@return +Culled Empty Block (label) main::@1 +Culled Empty Block (label) main::toD0181_@return +Culled Empty Block (label) main::@11 +Culled Empty Block (label) print_dword_at::@2 +Culled Empty Block (label) print_word_at::@2 +Culled Empty Block (label) print_byte_at::@2 +Culled Empty Block (label) splinePlot::@4 +Culled Empty Block (label) bitmap_clear::@2 +Culled Empty Block (label) memset::@1 +Culled Empty Block (label) memset::@6 +Culled Empty Block (label) bitmap_init::@3 +Culled Empty Block (label) bitmap_init::@4 +Culled Empty Block (label) bitmap_init::@11 +Culled Empty Block (label) bitmap_init::@12 +Culled Empty Block (label) bitmap_init::@9 +Renumbering block @41 to @1 +Renumbering block memset::@2 to memset::@1 +Renumbering block memset::@4 to memset::@2 +Renumbering block bitmap_init::@5 to bitmap_init::@3 +Renumbering block bitmap_init::@6 to bitmap_init::@4 +Renumbering block bitmap_init::@7 to bitmap_init::@5 +Renumbering block bitmap_init::@10 to bitmap_init::@6 +Renumbering block main::@2 to main::@1 +Renumbering block main::@3 to main::@2 +Renumbering block main::@5 to main::@3 +Renumbering block main::@6 to main::@4 +Renumbering block main::@7 to main::@5 +Renumbering block main::@8 to main::@6 +Renumbering block main::@9 to main::@7 +Renumbering block main::@10 to main::@8 +Renumbering block splinePlot::@3 to splinePlot::@2 +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::@2 +Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001 +Adding NOP phi() at start of main::toD0181 +Adding NOP phi() at start of main::@3 +Adding NOP phi() at start of main::@4 +Adding NOP phi() at start of main::@5 +Adding NOP phi() at start of main::@6 +Adding NOP phi() at start of main::@7 +Adding NOP phi() at start of bitmap_clear +Adding NOP phi() at start of bitmap_clear::@1 +Adding NOP phi() at start of bitmap_init +Adding NOP phi() at start of bitmap_init::@6 + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() + to:@1 +@1: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @1 + [3] phi() +main: scope:[main] from @1 + [4] phi() + [5] call bitmap_init + to:main::@2 +main::@2: scope:[main] from main + [6] phi() + [7] call bitmap_clear + to:main::vicSelectGfxBank1 +main::vicSelectGfxBank1: scope:[main] from main::@2 + [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 + to:main::vicSelectGfxBank1_toDd001 +main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 + [9] phi() + to:main::vicSelectGfxBank1_@1 +main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001 + [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 + to:main::toD0181 +main::toD0181: scope:[main] from main::vicSelectGfxBank1_@1 + [11] phi() + to:main::@1 +main::@1: scope:[main] from main::toD0181 + [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 + [13] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 + [14] call clock_start + to:main::@3 +main::@3: scope:[main] from main::@1 + [15] phi() + [16] call splinePlot + to:main::@4 +main::@4: scope:[main] from main::@3 + [17] phi() + [18] call splinePlot + to:main::@5 +main::@5: scope:[main] from main::@4 + [19] phi() + [20] call splinePlot + to:main::@6 +main::@6: scope:[main] from main::@5 + [21] phi() + [22] call splinePlot + to:main::@7 +main::@7: scope:[main] from main::@6 + [23] phi() + [24] call clock + [25] (dword) clock::return#2 ← (dword) clock::return#0 + to:main::@8 +main::@8: scope:[main] from main::@7 + [26] (dword~) main::$12 ← (dword) clock::return#2 + [27] (dword) main::cyclecount#0 ← (dword~) main::$12 - (const dword) CLOCKS_PER_INIT#0 + [28] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 + [29] call print_dword_at + to:main::@return +main::@return: scope:[main] from main::@8 + [30] return + to:@return +print_dword_at: scope:[print_dword_at] from main::@8 + [31] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 + [32] call print_word_at + to:print_dword_at::@1 +print_dword_at::@1: scope:[print_dword_at] from print_dword_at + [33] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 + [34] call print_word_at + to:print_dword_at::@return +print_dword_at::@return: scope:[print_dword_at] from print_dword_at::@1 + [35] return + to:@return +print_word_at: scope:[print_word_at] from print_dword_at print_dword_at::@1 + [36] (byte*) print_word_at::at#2 ← phi( print_dword_at/(const byte*) SCREEN#0 print_dword_at::@1/(const byte*) SCREEN#0+(byte) 4 ) + [36] (word) print_word_at::w#2 ← phi( print_dword_at/(word) print_word_at::w#0 print_dword_at::@1/(word) print_word_at::w#1 ) + [37] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2 + [38] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 + [39] call print_byte_at + to:print_word_at::@1 +print_word_at::@1: scope:[print_word_at] from print_word_at + [40] (byte) print_byte_at::b#1 ← < (word) print_word_at::w#2 + [41] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 + [42] call print_byte_at + to:print_word_at::@return +print_word_at::@return: scope:[print_word_at] from print_word_at::@1 + [43] return + to:@return +print_byte_at: scope:[print_byte_at] from print_word_at print_word_at::@1 + [44] (byte*) print_byte_at::at#2 ← phi( print_word_at/(byte*) print_byte_at::at#0 print_word_at::@1/(byte*) print_byte_at::at#1 ) + [44] (byte) print_byte_at::b#2 ← phi( print_word_at/(byte) print_byte_at::b#0 print_word_at::@1/(byte) print_byte_at::b#1 ) + [45] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 + [46] (byte) print_char_at::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) + [47] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 + [48] call print_char_at + to:print_byte_at::@1 +print_byte_at::@1: scope:[print_byte_at] from print_byte_at + [49] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f + [50] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 + [51] (byte) print_char_at::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) + [52] call print_char_at + to:print_byte_at::@return +print_byte_at::@return: scope:[print_byte_at] from print_byte_at::@1 + [53] return + to:@return +print_char_at: scope:[print_char_at] from print_byte_at print_byte_at::@1 + [54] (byte*) print_char_at::at#2 ← phi( print_byte_at/(byte*) print_char_at::at#0 print_byte_at::@1/(byte*) print_char_at::at#1 ) + [54] (byte) print_char_at::ch#2 ← phi( print_byte_at/(byte) print_char_at::ch#0 print_byte_at::@1/(byte) print_char_at::ch#1 ) + [55] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 + to:print_char_at::@return +print_char_at::@return: scope:[print_char_at] from print_char_at + [56] return + to:@return +clock: scope:[clock] from main::@7 + [57] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB#0) + to:clock::@return +clock::@return: scope:[clock] from clock + [58] return + to:@return +splinePlot: scope:[splinePlot] from main::@3 main::@4 main::@5 main::@6 + [59] (signed word) splinePlot::p0_y#4 ← phi( main::@3/(const signed word) main::p0_y#0 main::@4/(const signed word) main::p2_y#0 main::@5/(const signed word) main::p2_y#0 main::@6/(const signed word) main::p4_y#0 ) + [59] (signed word) splinePlot::p2_y#4 ← phi( main::@3/(const signed word) main::p2_y#0 main::@4/(const signed word) main::p4_y#0 main::@5/(const signed word) main::p0_y#0 main::@6/(const signed word) main::p2_y#0 ) + [59] (signed word) splinePlot::p1_y#4 ← phi( main::@3/(const signed word) main::p1a_y#0 main::@4/(const signed word) main::p3a_y#0 main::@5/(const signed word) main::p1b_y#0 main::@6/(const signed word) main::p3b_y#0 ) + [59] (signed word) splinePlot::p0_x#4 ← phi( main::@3/(const signed word) main::p0_x#0 main::@4/(const signed word) main::p2_x#0 main::@5/(const signed word) main::p2_x#0 main::@6/(const signed word) main::p4_x#0 ) + [59] (signed word) splinePlot::p2_x#4 ← phi( main::@3/(const signed word) main::p2_x#0 main::@4/(const signed word) main::p4_x#0 main::@5/(const signed word) main::p0_x#0 main::@6/(const signed word) main::p2_x#0 ) + [59] (signed word) splinePlot::p1_x#4 ← phi( main::@3/(const signed word) main::p1a_x#0 main::@4/(const signed word) main::p3a_x#0 main::@5/(const signed word) main::p1b_x#0 main::@6/(const signed word) main::p3b_x#0 ) + [60] (signed word~) splinePlot::$6 ← (signed word) splinePlot::p1_x#4 << (byte) 1 + [61] (signed word~) splinePlot::$1 ← (signed word) splinePlot::p2_x#4 - (signed word~) splinePlot::$6 + [62] (signed word) splinePlot::a_x#0 ← (signed word~) splinePlot::$1 + (signed word) splinePlot::p0_x#4 + [63] (signed word~) splinePlot::$9 ← (signed word) splinePlot::p1_y#4 << (byte) 1 + [64] (signed word~) splinePlot::$4 ← (signed word) splinePlot::p2_y#4 - (signed word~) splinePlot::$9 + [65] (signed word) splinePlot::a_y#0 ← (signed word~) splinePlot::$4 + (signed word) splinePlot::p0_y#4 + [66] (signed word~) splinePlot::$7 ← (signed word) splinePlot::p0_x#4 << (byte) 1 + [67] (signed word) splinePlot::b_x#0 ← (signed word~) splinePlot::$6 - (signed word~) splinePlot::$7 + [68] (signed word~) splinePlot::$10 ← (signed word) splinePlot::p0_y#4 << (byte) 1 + [69] (signed word) splinePlot::b_y#0 ← (signed word~) splinePlot::$9 - (signed word~) splinePlot::$10 + [70] (signed dword~) splinePlot::$12 ← (signed dword)(signed word) splinePlot::a_x#0 + [71] (signed dword~) splinePlot::$13 ← (signed dword~) splinePlot::$12 << (byte) 8 + [72] (signed dword~) splinePlot::$14 ← (signed dword)(signed word) splinePlot::b_x#0 + [73] (signed dword~) splinePlot::$15 ← (signed dword~) splinePlot::$14 << (byte) 8 + [74] (signed dword~) splinePlot::$16 ← (signed dword~) splinePlot::$15 << (byte) 4 + [75] (signed dword) splinePlot::i_x#0 ← (signed dword~) splinePlot::$13 + (signed dword~) splinePlot::$16 + [76] (signed dword~) splinePlot::$18 ← (signed dword)(signed word) splinePlot::a_y#0 + [77] (signed dword~) splinePlot::$19 ← (signed dword~) splinePlot::$18 << (byte) 8 + [78] (signed dword~) splinePlot::$20 ← (signed dword)(signed word) splinePlot::b_y#0 + [79] (signed dword~) splinePlot::$21 ← (signed dword~) splinePlot::$20 << (byte) 8 + [80] (signed dword~) splinePlot::$22 ← (signed dword~) splinePlot::$21 << (byte) 4 + [81] (signed dword) splinePlot::i_y#0 ← (signed dword~) splinePlot::$19 + (signed dword~) splinePlot::$22 + [82] (signed dword~) splinePlot::$24 ← (signed dword)(signed word) splinePlot::a_x#0 + [83] (signed dword~) splinePlot::$25 ← (signed dword~) splinePlot::$24 << (byte) 8 + [84] (signed dword) splinePlot::j_x#0 ← (signed dword~) splinePlot::$25 << (byte) 1 + [85] (signed dword~) splinePlot::$27 ← (signed dword)(signed word) splinePlot::a_y#0 + [86] (signed dword~) splinePlot::$28 ← (signed dword~) splinePlot::$27 << (byte) 8 + [87] (signed dword) splinePlot::j_y#0 ← (signed dword~) splinePlot::$28 << (byte) 1 + [88] (signed dword~) splinePlot::$30 ← (signed dword)(signed word) splinePlot::p0_x#4 + [89] (signed dword) splinePlot::p_x#0 ← (signed dword~) splinePlot::$30 << (byte) $10 + [90] (signed dword~) splinePlot::$32 ← (signed dword)(signed word) splinePlot::p0_y#4 + [91] (signed dword) splinePlot::p_y#0 ← (signed dword~) splinePlot::$32 << (byte) $10 + to:splinePlot::@1 +splinePlot::@1: scope:[splinePlot] from splinePlot splinePlot::@2 + [92] (byte) splinePlot::n#2 ← phi( splinePlot/(byte) 0 splinePlot::@2/(byte) splinePlot::n#1 ) + [92] (signed dword) splinePlot::i_y#2 ← phi( splinePlot/(signed dword) splinePlot::i_y#0 splinePlot::@2/(signed dword) splinePlot::i_y#1 ) + [92] (signed dword) splinePlot::i_x#2 ← phi( splinePlot/(signed dword) splinePlot::i_x#0 splinePlot::@2/(signed dword) splinePlot::i_x#1 ) + [92] (signed dword) splinePlot::p_y#2 ← phi( splinePlot/(signed dword) splinePlot::p_y#0 splinePlot::@2/(signed dword) splinePlot::p_y#1 ) + [92] (signed dword) splinePlot::p_x#2 ← phi( splinePlot/(signed dword) splinePlot::p_x#0 splinePlot::@2/(signed dword) splinePlot::p_x#1 ) + [93] (word) bitmap_plot::x#0 ← > (signed dword) splinePlot::p_x#2 + [94] (word~) splinePlot::$35 ← > (signed dword) splinePlot::p_y#2 + [95] (byte) bitmap_plot::y#0 ← < (word~) splinePlot::$35 + [96] call bitmap_plot + to:splinePlot::@2 +splinePlot::@2: scope:[splinePlot] from splinePlot::@1 + [97] (signed dword) splinePlot::p_x#1 ← (signed dword) splinePlot::p_x#2 + (signed dword) splinePlot::i_x#2 + [98] (signed dword) splinePlot::p_y#1 ← (signed dword) splinePlot::p_y#2 + (signed dword) splinePlot::i_y#2 + [99] (signed dword) splinePlot::i_x#1 ← (signed dword) splinePlot::i_x#2 + (signed dword) splinePlot::j_x#0 + [100] (signed dword) splinePlot::i_y#1 ← (signed dword) splinePlot::i_y#2 + (signed dword) splinePlot::j_y#0 + [101] (byte) splinePlot::n#1 ← ++ (byte) splinePlot::n#2 + [102] if((byte) splinePlot::n#1!=(byte) $11) goto splinePlot::@1 + to:splinePlot::@return +splinePlot::@return: scope:[splinePlot] from splinePlot::@2 + [103] return + to:@return +bitmap_plot: scope:[bitmap_plot] from splinePlot::@1 + [104] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) + [105] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 + [106] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 + [107] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 + [108] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) + to:bitmap_plot::@return +bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot + [109] return + to:@return +clock_start: scope:[clock_start] from main::@1 + [110] *((const byte*) CIA2_TIMER_A_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_CONTINUOUS#0 + [111] *((const byte*) CIA2_TIMER_B_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 + [112] *((const dword*) CIA2_TIMER_AB#0) ← (dword) $ffffffff + [113] *((const byte*) CIA2_TIMER_B_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_START#0|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 + [114] *((const byte*) CIA2_TIMER_A_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_START#0 + to:clock_start::@return +clock_start::@return: scope:[clock_start] from clock_start + [115] return + to:@return +bitmap_clear: scope:[bitmap_clear] from main::@2 + [116] phi() + [117] call memset + to:bitmap_clear::@1 +bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear + [118] phi() + [119] call memset + to:bitmap_clear::@return +bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1 + [120] return + to:@return +memset: scope:[memset] from bitmap_clear bitmap_clear::@1 + [121] (byte) memset::c#3 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 ) + [121] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) BITMAP_SCREEN#0 bitmap_clear::@1/(void*)(const byte*) BITMAP_GRAPHICS#0 ) + [121] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 ) + [122] if((word) memset::num#2<=(byte) 0) goto memset::@return + to:memset::@1 +memset::@1: scope:[memset] from memset + [123] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 + [124] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 + to:memset::@2 +memset::@2: scope:[memset] from memset::@1 memset::@2 + [125] (byte*) memset::dst#2 ← phi( memset::@1/(byte*~) memset::dst#3 memset::@2/(byte*) memset::dst#1 ) + [126] *((byte*) memset::dst#2) ← (byte) memset::c#3 + [127] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 + [128] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 + to:memset::@return +memset::@return: scope:[memset] from memset memset::@2 + [129] return + to:@return +bitmap_init: scope:[bitmap_init] from main + [130] phi() + to:bitmap_init::@1 +bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 + [131] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + [131] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + [132] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 + [134] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 + to:bitmap_init::@2 +bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1 + [135] phi() + to:bitmap_init::@2 +bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6 + [136] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 ) + [137] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 + [138] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 + to:bitmap_init::@3 +bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 + [139] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP_GRAPHICS#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 ) + [139] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 ) + [140] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 + [141] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 + [142] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 + [143] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 + [144] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 + [145] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 + [146] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 + to:bitmap_init::@5 +bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3 + [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 + to:bitmap_init::@4 +bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5 + [148] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 ) + [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 + [150] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 + to:bitmap_init::@return +bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 + [151] return + to:@return + + +VARIABLE REGISTER WEIGHTS +(byte*) BITMAP_GRAPHICS +(byte*) BITMAP_SCREEN +(byte) BLACK +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(dword*) CIA2_TIMER_AB +(byte*) CIA2_TIMER_A_CONTROL +(byte*) CIA2_TIMER_B_CONTROL +(byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES +(byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A +(byte) CIA_TIMER_CONTROL_CONTINUOUS +(byte) CIA_TIMER_CONTROL_START +(byte) CIA_TIMER_CONTROL_STOP +(dword) CLOCKS_PER_INIT +(byte*) D011 +(byte*) D018 +(byte*) SCREEN +(signed word) SplineVector16::x +(signed word) SplineVector16::y +(signed dword) SplineVector32::x +(signed dword) SplineVector32::y +(byte) VIC_BMM +(byte) VIC_DEN +(byte) VIC_RSEL +(byte) WHITE +(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol) +(byte) bitmap_clear::bgcol +(byte) bitmap_clear::col +(byte) bitmap_clear::fgcol +(byte*) bitmap_gfx +(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) +(byte~) bitmap_init::$4 22.0 +(byte~) bitmap_init::$5 22.0 +(byte~) bitmap_init::$6 22.0 +(byte~) bitmap_init::$7 5.5 +(byte) bitmap_init::bits +(byte) bitmap_init::bits#1 11.0 +(byte) bitmap_init::bits#3 16.5 +(byte) bitmap_init::bits#4 7.333333333333333 +(byte*) bitmap_init::gfx +(byte*) bitmap_init::screen +(byte) bitmap_init::x +(byte) bitmap_init::x#1 16.5 +(byte) bitmap_init::x#2 5.5 +(byte) bitmap_init::y +(byte) bitmap_init::y#1 16.5 +(byte) bitmap_init::y#2 5.5 +(byte*) bitmap_init::yoffs +(byte*) bitmap_init::yoffs#1 22.0 +(byte*) bitmap_init::yoffs#2 6.875 +(byte*) bitmap_init::yoffs#4 11.0 +(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) +(word~) bitmap_plot::$1 4.0 +(byte~) bitmap_plot::$2 4.0 +(byte*) bitmap_plot::plotter +(word) bitmap_plot::plotter#0 1.0 +(byte*) bitmap_plot::plotter#1 3.0 +(word) bitmap_plot::x +(word) bitmap_plot::x#0 2.5 +(byte) bitmap_plot::y +(byte) bitmap_plot::y#0 15.0 +(byte[$100]) bitmap_plot_bit +(byte[$100]) bitmap_plot_yhi +(byte[$100]) bitmap_plot_ylo +(byte*) bitmap_screen +(dword()) clock() +(dword) clock::return +(dword) clock::return#0 1.3333333333333333 +(dword) clock::return#2 4.0 +(void()) clock_start() +(void()) main() +(dword~) main::$12 4.0 +(dword) main::cyclecount +(dword) main::cyclecount#0 4.0 +(signed word) main::p0_x +(signed word) main::p0_y +(signed word) main::p1a_x +(signed word) main::p1a_y +(signed word) main::p1b_x +(signed word) main::p1b_y +(signed word) main::p2_x +(signed word) main::p2_y +(signed word) main::p3a_x +(signed word) main::p3a_y +(signed word) main::p3b_x +(signed word) main::p3b_y +(signed word) main::p4_x +(signed word) main::p4_y +(word~) main::toD0181_$0 +(number~) main::toD0181_$1 +(number~) main::toD0181_$2 +(number~) main::toD0181_$3 +(word~) main::toD0181_$4 +(byte~) main::toD0181_$5 +(number~) main::toD0181_$6 +(number~) main::toD0181_$7 +(number~) main::toD0181_$8 +(byte*) main::toD0181_gfx +(byte) main::toD0181_return +(byte*) main::toD0181_screen +(byte~) main::vicSelectGfxBank1_$0 +(byte*) main::vicSelectGfxBank1_gfx +(word~) main::vicSelectGfxBank1_toDd001_$0 +(byte~) main::vicSelectGfxBank1_toDd001_$1 +(number~) main::vicSelectGfxBank1_toDd001_$2 +(number~) main::vicSelectGfxBank1_toDd001_$3 +(byte*) main::vicSelectGfxBank1_toDd001_gfx +(byte) main::vicSelectGfxBank1_toDd001_return +(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) +(byte) memset::c +(byte) memset::c#3 1.375 +(byte*) memset::dst +(byte*) memset::dst#1 16.5 +(byte*) memset::dst#2 17.5 +(byte*~) memset::dst#3 4.0 +(byte*) memset::end +(byte*) memset::end#0 2.1666666666666665 +(word) memset::num +(word) memset::num#2 2.0 +(void*) memset::return +(void*) memset::str +(void*) memset::str#3 +(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) +(byte~) print_byte_at::$0 4.0 +(byte~) print_byte_at::$2 2.0 +(byte*) print_byte_at::at +(byte*) print_byte_at::at#0 4.0 +(byte*) print_byte_at::at#1 4.0 +(byte*) print_byte_at::at#2 1.3333333333333333 +(byte) print_byte_at::b +(byte) print_byte_at::b#0 2.0 +(byte) print_byte_at::b#1 2.0 +(byte) print_byte_at::b#2 1.6 +(void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) +(byte*) print_char_at::at +(byte*) print_char_at::at#0 4.0 +(byte*) print_char_at::at#1 2.0 +(byte*) print_char_at::at#2 6.0 +(byte) print_char_at::ch +(byte) print_char_at::ch#0 2.0 +(byte) print_char_at::ch#1 4.0 +(byte) print_char_at::ch#2 6.0 +(void()) print_dword_at((dword) print_dword_at::dw , (byte*) print_dword_at::at) +(byte*) print_dword_at::at +(dword) print_dword_at::dw +(dword) print_dword_at::dw#0 2.0 +(byte[]) print_hextab +(void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at) +(byte*) print_word_at::at +(byte*) print_word_at::at#2 0.8 +(word) print_word_at::w +(word) print_word_at::w#0 4.0 +(word) print_word_at::w#1 4.0 +(word) print_word_at::w#2 2.0 +(void()) splinePlot((signed word) splinePlot::p0_x , (signed word) splinePlot::p0_y , (signed word) splinePlot::p1_x , (signed word) splinePlot::p1_y , (signed word) splinePlot::p2_x , (signed word) splinePlot::p2_y) +(signed word~) splinePlot::$1 4.0 +(signed word~) splinePlot::$10 4.0 +(signed dword~) splinePlot::$12 4.0 +(signed dword~) splinePlot::$13 1.0 +(signed dword~) splinePlot::$14 4.0 +(signed dword~) splinePlot::$15 4.0 +(signed dword~) splinePlot::$16 4.0 +(signed dword~) splinePlot::$18 4.0 +(signed dword~) splinePlot::$19 1.0 +(signed dword~) splinePlot::$20 4.0 +(signed dword~) splinePlot::$21 4.0 +(signed dword~) splinePlot::$22 4.0 +(signed dword~) splinePlot::$24 4.0 +(signed dword~) splinePlot::$25 4.0 +(signed dword~) splinePlot::$27 4.0 +(signed dword~) splinePlot::$28 4.0 +(signed dword~) splinePlot::$30 4.0 +(signed dword~) splinePlot::$32 4.0 +(word~) splinePlot::$35 22.0 +(signed word~) splinePlot::$4 4.0 +(signed word~) splinePlot::$6 0.8571428571428571 +(signed word~) splinePlot::$7 4.0 +(signed word~) splinePlot::$9 1.0 +(signed word) splinePlot::a_x +(signed word) splinePlot::a_x#0 0.1 +(signed word) splinePlot::a_y +(signed word) splinePlot::a_y#0 0.1 +(signed word) splinePlot::b_x +(signed word) splinePlot::b_x#0 0.4 +(signed word) splinePlot::b_y +(signed word) splinePlot::b_y#0 0.2222222222222222 +(signed dword) splinePlot::i_x +(signed dword) splinePlot::i_x#0 0.23529411764705882 +(signed dword) splinePlot::i_x#1 5.5 +(signed dword) splinePlot::i_x#2 5.0 +(signed dword) splinePlot::i_y +(signed dword) splinePlot::i_y#0 0.36363636363636365 +(signed dword) splinePlot::i_y#1 7.333333333333333 +(signed dword) splinePlot::i_y#2 4.375 +(signed dword) splinePlot::j_x +(signed dword) splinePlot::j_x#0 0.6842105263157895 +(signed dword) splinePlot::j_y +(signed dword) splinePlot::j_y#0 0.8125 +(byte) splinePlot::n +(byte) splinePlot::n#1 16.5 +(byte) splinePlot::n#2 2.4444444444444446 +(struct SplineVector16) splinePlot::p0 +(signed word) splinePlot::p0_x +(signed word) splinePlot::p0_x#4 0.13793103448275862 +(signed word) splinePlot::p0_y +(signed word) splinePlot::p0_y#4 0.12903225806451613 +(struct SplineVector16) splinePlot::p1 +(signed word) splinePlot::p1_x +(signed word) splinePlot::p1_x#4 2.0 +(signed word) splinePlot::p1_y +(signed word) splinePlot::p1_y#4 0.5 +(struct SplineVector16) splinePlot::p2 +(signed word) splinePlot::p2_x +(signed word) splinePlot::p2_x#4 1.0 +(signed word) splinePlot::p2_y +(signed word) splinePlot::p2_y#4 0.4 +(signed dword) splinePlot::p_x +(signed dword) splinePlot::p_x#0 1.3333333333333333 +(signed dword) splinePlot::p_x#1 3.6666666666666665 +(signed dword) splinePlot::p_x#2 7.000000000000001 +(signed dword) splinePlot::p_y +(signed dword) splinePlot::p_y#0 4.0 +(signed dword) splinePlot::p_y#1 4.4 +(signed dword) splinePlot::p_y#2 5.833333333333333 + +Initial phi equivalence classes +[ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] +[ print_word_at::at#2 ] +[ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] +[ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] +[ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] +[ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] +[ splinePlot::p1_x#4 ] +[ splinePlot::p2_x#4 ] +[ splinePlot::p0_x#4 ] +[ splinePlot::p1_y#4 ] +[ splinePlot::p2_y#4 ] +[ splinePlot::p0_y#4 ] +[ splinePlot::p_x#2 splinePlot::p_x#0 splinePlot::p_x#1 ] +[ splinePlot::p_y#2 splinePlot::p_y#0 splinePlot::p_y#1 ] +[ splinePlot::i_x#2 splinePlot::i_x#0 splinePlot::i_x#1 ] +[ splinePlot::i_y#2 splinePlot::i_y#0 splinePlot::i_y#1 ] +[ splinePlot::n#2 splinePlot::n#1 ] +[ memset::num#2 ] +[ memset::str#3 ] +[ memset::c#3 ] +[ memset::dst#2 memset::dst#3 memset::dst#1 ] +[ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] +[ bitmap_init::x#2 bitmap_init::x#1 ] +[ bitmap_init::y#2 bitmap_init::y#1 ] +[ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] +Added variable clock::return#2 to zero page equivalence class [ clock::return#2 ] +Added variable main::$12 to zero page equivalence class [ main::$12 ] +Added variable main::cyclecount#0 to zero page equivalence class [ main::cyclecount#0 ] +Added variable print_dword_at::dw#0 to zero page equivalence class [ print_dword_at::dw#0 ] +Added variable print_byte_at::$0 to zero page equivalence class [ print_byte_at::$0 ] +Added variable print_byte_at::$2 to zero page equivalence class [ print_byte_at::$2 ] +Added variable clock::return#0 to zero page equivalence class [ clock::return#0 ] +Added variable splinePlot::$6 to zero page equivalence class [ splinePlot::$6 ] +Added variable splinePlot::$1 to zero page equivalence class [ splinePlot::$1 ] +Added variable splinePlot::a_x#0 to zero page equivalence class [ splinePlot::a_x#0 ] +Added variable splinePlot::$9 to zero page equivalence class [ splinePlot::$9 ] +Added variable splinePlot::$4 to zero page equivalence class [ splinePlot::$4 ] +Added variable splinePlot::a_y#0 to zero page equivalence class [ splinePlot::a_y#0 ] +Added variable splinePlot::$7 to zero page equivalence class [ splinePlot::$7 ] +Added variable splinePlot::b_x#0 to zero page equivalence class [ splinePlot::b_x#0 ] +Added variable splinePlot::$10 to zero page equivalence class [ splinePlot::$10 ] +Added variable splinePlot::b_y#0 to zero page equivalence class [ splinePlot::b_y#0 ] +Added variable splinePlot::$12 to zero page equivalence class [ splinePlot::$12 ] +Added variable splinePlot::$13 to zero page equivalence class [ splinePlot::$13 ] +Added variable splinePlot::$14 to zero page equivalence class [ splinePlot::$14 ] +Added variable splinePlot::$15 to zero page equivalence class [ splinePlot::$15 ] +Added variable splinePlot::$16 to zero page equivalence class [ splinePlot::$16 ] +Added variable splinePlot::$18 to zero page equivalence class [ splinePlot::$18 ] +Added variable splinePlot::$19 to zero page equivalence class [ splinePlot::$19 ] +Added variable splinePlot::$20 to zero page equivalence class [ splinePlot::$20 ] +Added variable splinePlot::$21 to zero page equivalence class [ splinePlot::$21 ] +Added variable splinePlot::$22 to zero page equivalence class [ splinePlot::$22 ] +Added variable splinePlot::$24 to zero page equivalence class [ splinePlot::$24 ] +Added variable splinePlot::$25 to zero page equivalence class [ splinePlot::$25 ] +Added variable splinePlot::j_x#0 to zero page equivalence class [ splinePlot::j_x#0 ] +Added variable splinePlot::$27 to zero page equivalence class [ splinePlot::$27 ] +Added variable splinePlot::$28 to zero page equivalence class [ splinePlot::$28 ] +Added variable splinePlot::j_y#0 to zero page equivalence class [ splinePlot::j_y#0 ] +Added variable splinePlot::$30 to zero page equivalence class [ splinePlot::$30 ] +Added variable splinePlot::$32 to zero page equivalence class [ splinePlot::$32 ] +Added variable bitmap_plot::x#0 to zero page equivalence class [ bitmap_plot::x#0 ] +Added variable splinePlot::$35 to zero page equivalence class [ splinePlot::$35 ] +Added variable bitmap_plot::y#0 to zero page equivalence class [ bitmap_plot::y#0 ] +Added variable bitmap_plot::plotter#0 to zero page equivalence class [ bitmap_plot::plotter#0 ] +Added variable bitmap_plot::$1 to zero page equivalence class [ bitmap_plot::$1 ] +Added variable bitmap_plot::plotter#1 to zero page equivalence class [ bitmap_plot::plotter#1 ] +Added variable bitmap_plot::$2 to zero page equivalence class [ bitmap_plot::$2 ] +Added variable memset::end#0 to zero page equivalence class [ memset::end#0 ] +Added variable bitmap_init::$7 to zero page equivalence class [ bitmap_init::$7 ] +Added variable bitmap_init::$4 to zero page equivalence class [ bitmap_init::$4 ] +Added variable bitmap_init::$5 to zero page equivalence class [ bitmap_init::$5 ] +Added variable bitmap_init::$6 to zero page equivalence class [ bitmap_init::$6 ] +Complete equivalence classes +[ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] +[ print_word_at::at#2 ] +[ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] +[ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] +[ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] +[ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] +[ splinePlot::p1_x#4 ] +[ splinePlot::p2_x#4 ] +[ splinePlot::p0_x#4 ] +[ splinePlot::p1_y#4 ] +[ splinePlot::p2_y#4 ] +[ splinePlot::p0_y#4 ] +[ splinePlot::p_x#2 splinePlot::p_x#0 splinePlot::p_x#1 ] +[ splinePlot::p_y#2 splinePlot::p_y#0 splinePlot::p_y#1 ] +[ splinePlot::i_x#2 splinePlot::i_x#0 splinePlot::i_x#1 ] +[ splinePlot::i_y#2 splinePlot::i_y#0 splinePlot::i_y#1 ] +[ splinePlot::n#2 splinePlot::n#1 ] +[ memset::num#2 ] +[ memset::str#3 ] +[ memset::c#3 ] +[ memset::dst#2 memset::dst#3 memset::dst#1 ] +[ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] +[ bitmap_init::x#2 bitmap_init::x#1 ] +[ bitmap_init::y#2 bitmap_init::y#1 ] +[ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] +[ clock::return#2 ] +[ main::$12 ] +[ main::cyclecount#0 ] +[ print_dword_at::dw#0 ] +[ print_byte_at::$0 ] +[ print_byte_at::$2 ] +[ clock::return#0 ] +[ splinePlot::$6 ] +[ splinePlot::$1 ] +[ splinePlot::a_x#0 ] +[ splinePlot::$9 ] +[ splinePlot::$4 ] +[ splinePlot::a_y#0 ] +[ splinePlot::$7 ] +[ splinePlot::b_x#0 ] +[ splinePlot::$10 ] +[ splinePlot::b_y#0 ] +[ splinePlot::$12 ] +[ splinePlot::$13 ] +[ splinePlot::$14 ] +[ splinePlot::$15 ] +[ splinePlot::$16 ] +[ splinePlot::$18 ] +[ splinePlot::$19 ] +[ splinePlot::$20 ] +[ splinePlot::$21 ] +[ splinePlot::$22 ] +[ splinePlot::$24 ] +[ splinePlot::$25 ] +[ splinePlot::j_x#0 ] +[ splinePlot::$27 ] +[ splinePlot::$28 ] +[ splinePlot::j_y#0 ] +[ splinePlot::$30 ] +[ splinePlot::$32 ] +[ bitmap_plot::x#0 ] +[ splinePlot::$35 ] +[ bitmap_plot::y#0 ] +[ bitmap_plot::plotter#0 ] +[ bitmap_plot::$1 ] +[ bitmap_plot::plotter#1 ] +[ bitmap_plot::$2 ] +[ memset::end#0 ] +[ bitmap_init::$7 ] +[ bitmap_init::$4 ] +[ bitmap_init::$5 ] +[ bitmap_init::$6 ] +Allocated zp ZP_WORD:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] +Allocated zp ZP_WORD:4 [ print_word_at::at#2 ] +Allocated zp ZP_BYTE:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] +Allocated zp ZP_WORD:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] +Allocated zp ZP_BYTE:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] +Allocated zp ZP_WORD:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] +Allocated zp ZP_WORD:12 [ splinePlot::p1_x#4 ] +Allocated zp ZP_WORD:14 [ splinePlot::p2_x#4 ] +Allocated zp ZP_WORD:16 [ splinePlot::p0_x#4 ] +Allocated zp ZP_WORD:18 [ splinePlot::p1_y#4 ] +Allocated zp ZP_WORD:20 [ splinePlot::p2_y#4 ] +Allocated zp ZP_WORD:22 [ splinePlot::p0_y#4 ] +Allocated zp ZP_DWORD:24 [ splinePlot::p_x#2 splinePlot::p_x#0 splinePlot::p_x#1 ] +Allocated zp ZP_DWORD:28 [ splinePlot::p_y#2 splinePlot::p_y#0 splinePlot::p_y#1 ] +Allocated zp ZP_DWORD:32 [ splinePlot::i_x#2 splinePlot::i_x#0 splinePlot::i_x#1 ] +Allocated zp ZP_DWORD:36 [ splinePlot::i_y#2 splinePlot::i_y#0 splinePlot::i_y#1 ] +Allocated zp ZP_BYTE:40 [ splinePlot::n#2 splinePlot::n#1 ] +Allocated zp ZP_WORD:41 [ memset::num#2 ] +Allocated zp ZP_WORD:43 [ memset::str#3 ] +Allocated zp ZP_BYTE:45 [ memset::c#3 ] +Allocated zp ZP_WORD:46 [ memset::dst#2 memset::dst#3 memset::dst#1 ] +Allocated zp ZP_BYTE:48 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] +Allocated zp ZP_BYTE:49 [ bitmap_init::x#2 bitmap_init::x#1 ] +Allocated zp ZP_BYTE:50 [ bitmap_init::y#2 bitmap_init::y#1 ] +Allocated zp ZP_WORD:51 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] +Allocated zp ZP_DWORD:53 [ clock::return#2 ] +Allocated zp ZP_DWORD:57 [ main::$12 ] +Allocated zp ZP_DWORD:61 [ main::cyclecount#0 ] +Allocated zp ZP_DWORD:65 [ print_dword_at::dw#0 ] +Allocated zp ZP_BYTE:69 [ print_byte_at::$0 ] +Allocated zp ZP_BYTE:70 [ print_byte_at::$2 ] +Allocated zp ZP_DWORD:71 [ clock::return#0 ] +Allocated zp ZP_WORD:75 [ splinePlot::$6 ] +Allocated zp ZP_WORD:77 [ splinePlot::$1 ] +Allocated zp ZP_WORD:79 [ splinePlot::a_x#0 ] +Allocated zp ZP_WORD:81 [ splinePlot::$9 ] +Allocated zp ZP_WORD:83 [ splinePlot::$4 ] +Allocated zp ZP_WORD:85 [ splinePlot::a_y#0 ] +Allocated zp ZP_WORD:87 [ splinePlot::$7 ] +Allocated zp ZP_WORD:89 [ splinePlot::b_x#0 ] +Allocated zp ZP_WORD:91 [ splinePlot::$10 ] +Allocated zp ZP_WORD:93 [ splinePlot::b_y#0 ] +Allocated zp ZP_DWORD:95 [ splinePlot::$12 ] +Allocated zp ZP_DWORD:99 [ splinePlot::$13 ] +Allocated zp ZP_DWORD:103 [ splinePlot::$14 ] +Allocated zp ZP_DWORD:107 [ splinePlot::$15 ] +Allocated zp ZP_DWORD:111 [ splinePlot::$16 ] +Allocated zp ZP_DWORD:115 [ splinePlot::$18 ] +Allocated zp ZP_DWORD:119 [ splinePlot::$19 ] +Allocated zp ZP_DWORD:123 [ splinePlot::$20 ] +Allocated zp ZP_DWORD:127 [ splinePlot::$21 ] +Allocated zp ZP_DWORD:131 [ splinePlot::$22 ] +Allocated zp ZP_DWORD:135 [ splinePlot::$24 ] +Allocated zp ZP_DWORD:139 [ splinePlot::$25 ] +Allocated zp ZP_DWORD:143 [ splinePlot::j_x#0 ] +Allocated zp ZP_DWORD:147 [ splinePlot::$27 ] +Allocated zp ZP_DWORD:151 [ splinePlot::$28 ] +Allocated zp ZP_DWORD:155 [ splinePlot::j_y#0 ] +Allocated zp ZP_DWORD:159 [ splinePlot::$30 ] +Allocated zp ZP_DWORD:163 [ splinePlot::$32 ] +Allocated zp ZP_WORD:167 [ bitmap_plot::x#0 ] +Allocated zp ZP_WORD:169 [ splinePlot::$35 ] +Allocated zp ZP_BYTE:171 [ bitmap_plot::y#0 ] +Allocated zp ZP_WORD:172 [ bitmap_plot::plotter#0 ] +Allocated zp ZP_WORD:174 [ bitmap_plot::$1 ] +Allocated zp ZP_WORD:176 [ bitmap_plot::plotter#1 ] +Allocated zp ZP_BYTE:178 [ bitmap_plot::$2 ] +Allocated zp ZP_WORD:179 [ memset::end#0 ] +Allocated zp ZP_BYTE:181 [ bitmap_init::$7 ] +Allocated zp ZP_BYTE:182 [ bitmap_init::$4 ] +Allocated zp ZP_BYTE:183 [ bitmap_init::$5 ] +Allocated zp ZP_BYTE:184 [ bitmap_init::$6 ] + +INITIAL ASM + // File Comments +// Quadratic Spline Library for the C64 +// Implements an iterative algorithm using only addition for calculating quadratic splines +// +// A quadratic spline is a curve defined by 3 points: P0, P1 and P2. +// The curve connects P0 to P2 through a smooth curve that moves towards P1, but does usually not touch it. +// +// The general formula for the quadratic spline is as follows: +// A = P2 - 2*P1 + P0 +// B = 2*P1 - 2*P0 +// C = P0 +// P(t) = A*t*t + B*t + C +// for 0 <= t <= 1 +// +// This library implements a iterative algorithm using multiplications in the initialization and only additions for calculating each point on the spline. +// The iterative algorithm is based on the following: +// P(t+Dt) = P(t) + A*Dt*Dt + 2*A*t*Dt + B*Dt +// +// init: +// N = 16 (number of plots) +// Dt = 1/N +// P = C +// I = A*Dt*Dt + B*Dt +// J = 2*A*Dt*Dt +// loop(N times): +// plot(P) +// P = P + I +// I = I + J + // Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label D011 = $d011 + .const VIC_BMM = $20 + .const VIC_DEN = $10 + .const VIC_RSEL = 8 + .label D018 = $d018 + // CIA#2 Port A: Serial bus, RS-232, VIC memory bank + .label CIA2_PORT_A = $dd00 + // CIA #2 Port A data direction register. + .label CIA2_PORT_A_DDR = $dd02 + // CIA #2 Timer A+B Value (32-bit) + .label CIA2_TIMER_AB = $dd04 + // CIA #2 Timer A Control Register + .label CIA2_TIMER_A_CONTROL = $dd0e + // CIA #2 Timer B Control Register + .label CIA2_TIMER_B_CONTROL = $dd0f + // Timer Control - Start/stop timer (0:stop, 1: start) + .const CIA_TIMER_CONTROL_START = 1 + // Timer Control - Time CONTINUOUS/ONE-SHOT (0:CONTINUOUS, 1: ONE-SHOT) + .const CIA_TIMER_CONTROL_CONTINUOUS = 0 + // Timer B Control - Timer counts (00:system cycles, 01: CNT pulses, 10: timer A underflow, 11: time A underflow while CNT is high) + .const CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = $40 + .const WHITE = 1 + // Clock cycles used to start & read the cycle clock by calling clock_start() and clock() once. Can be subtracted when calculating the number of cycles used by a routine. + // To make precise cycle measurements interrupts and the display must be disabled so neither steals any cycles from the code. + .const CLOCKS_PER_INIT = $12 + .label SCREEN = $400 + .label BITMAP_SCREEN = $5c00 + .label BITMAP_GRAPHICS = $6000 + // @begin +bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 + // @1 +b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from_b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend + // @end +bend: + // main +main: { + .const p0_x = $32 + .const p0_y = $32 + .const p1a_x = $64 + .const p1a_y = $32 + .const p1b_x = $32 + .const p1b_y = $64 + .const p2_x = $64 + .const p2_y = $64 + .const p3a_x = $96 + .const p3a_y = $64 + .const p3b_x = $64 + .const p3b_y = $96 + .const p4_x = $96 + .const p4_y = $96 + .const vicSelectGfxBank1_toDd001_return = 3^(>BITMAP_SCREEN)/$40 + .const toD0181_return = (>(BITMAP_SCREEN&$3fff)*4)|(>BITMAP_GRAPHICS)/4&$f + .label _12 = $39 + .label cyclecount = $3d + // [5] call bitmap_init + // [130] phi from main to bitmap_init [phi:main->bitmap_init] + bitmap_init_from_main: + jsr bitmap_init + // [6] phi from main to main::@2 [phi:main->main::@2] + b2_from_main: + jmp b2 + // main::@2 + b2: + // [7] call bitmap_clear + // [116] phi from main::@2 to bitmap_clear [phi:main::@2->bitmap_clear] + bitmap_clear_from_b2: + jsr bitmap_clear + jmp vicSelectGfxBank1 + // main::vicSelectGfxBank1 + vicSelectGfxBank1: + // [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 + lda #3 + sta CIA2_PORT_A_DDR + // [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: + jmp vicSelectGfxBank1_toDd001 + // main::vicSelectGfxBank1_toDd001 + vicSelectGfxBank1_toDd001: + jmp vicSelectGfxBank1_b1 + // main::vicSelectGfxBank1_@1 + vicSelectGfxBank1_b1: + // [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + // [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + toD0181_from_vicSelectGfxBank1_b1: + jmp toD0181 + // main::toD0181 + toD0181: + jmp b1 + // main::@1 + b1: + // [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + lda #toD0181_return + sta D018 + // [13] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 -- _deref_pbuc1=vbuc2 + lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 + sta D011 + // [14] call clock_start + jsr clock_start + // [15] phi from main::@1 to main::@3 [phi:main::@1->main::@3] + b3_from_b1: + jmp b3 + // main::@3 + b3: + // [16] call splinePlot + // [59] phi from main::@3 to splinePlot [phi:main::@3->splinePlot] + splinePlot_from_b3: + // [59] phi (signed word) splinePlot::p0_y#4 = (const signed word) main::p0_y#0 [phi:main::@3->splinePlot#0] -- vwsz1=vwsc1 + lda #p0_y + sta splinePlot.p0_y+1 + // [59] phi (signed word) splinePlot::p2_y#4 = (const signed word) main::p2_y#0 [phi:main::@3->splinePlot#1] -- vwsz1=vwsc1 + lda #p2_y + sta splinePlot.p2_y+1 + // [59] phi (signed word) splinePlot::p1_y#4 = (const signed word) main::p1a_y#0 [phi:main::@3->splinePlot#2] -- vwsz1=vwsc1 + lda #p1a_y + sta splinePlot.p1_y+1 + // [59] phi (signed word) splinePlot::p0_x#4 = (const signed word) main::p0_x#0 [phi:main::@3->splinePlot#3] -- vwsz1=vwsc1 + lda #p0_x + sta splinePlot.p0_x+1 + // [59] phi (signed word) splinePlot::p2_x#4 = (const signed word) main::p2_x#0 [phi:main::@3->splinePlot#4] -- vwsz1=vwsc1 + lda #p2_x + sta splinePlot.p2_x+1 + // [59] phi (signed word) splinePlot::p1_x#4 = (const signed word) main::p1a_x#0 [phi:main::@3->splinePlot#5] -- vwsz1=vwsc1 + lda #p1a_x + sta splinePlot.p1_x+1 + jsr splinePlot + // [17] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + b4_from_b3: + jmp b4 + // main::@4 + b4: + // [18] call splinePlot + // [59] phi from main::@4 to splinePlot [phi:main::@4->splinePlot] + splinePlot_from_b4: + // [59] phi (signed word) splinePlot::p0_y#4 = (const signed word) main::p2_y#0 [phi:main::@4->splinePlot#0] -- vwsz1=vwsc1 + lda #p2_y + sta splinePlot.p0_y+1 + // [59] phi (signed word) splinePlot::p2_y#4 = (const signed word) main::p4_y#0 [phi:main::@4->splinePlot#1] -- vwsz1=vwsc1 + lda #p4_y + sta splinePlot.p2_y+1 + // [59] phi (signed word) splinePlot::p1_y#4 = (const signed word) main::p3a_y#0 [phi:main::@4->splinePlot#2] -- vwsz1=vwsc1 + lda #p3a_y + sta splinePlot.p1_y+1 + // [59] phi (signed word) splinePlot::p0_x#4 = (const signed word) main::p2_x#0 [phi:main::@4->splinePlot#3] -- vwsz1=vwsc1 + lda #p2_x + sta splinePlot.p0_x+1 + // [59] phi (signed word) splinePlot::p2_x#4 = (const signed word) main::p4_x#0 [phi:main::@4->splinePlot#4] -- vwsz1=vwsc1 + lda #p4_x + sta splinePlot.p2_x+1 + // [59] phi (signed word) splinePlot::p1_x#4 = (const signed word) main::p3a_x#0 [phi:main::@4->splinePlot#5] -- vwsz1=vwsc1 + lda #p3a_x + sta splinePlot.p1_x+1 + jsr splinePlot + // [19] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + b5_from_b4: + jmp b5 + // main::@5 + b5: + // [20] call splinePlot + // [59] phi from main::@5 to splinePlot [phi:main::@5->splinePlot] + splinePlot_from_b5: + // [59] phi (signed word) splinePlot::p0_y#4 = (const signed word) main::p2_y#0 [phi:main::@5->splinePlot#0] -- vwsz1=vwsc1 + lda #p2_y + sta splinePlot.p0_y+1 + // [59] phi (signed word) splinePlot::p2_y#4 = (const signed word) main::p0_y#0 [phi:main::@5->splinePlot#1] -- vwsz1=vwsc1 + lda #p0_y + sta splinePlot.p2_y+1 + // [59] phi (signed word) splinePlot::p1_y#4 = (const signed word) main::p1b_y#0 [phi:main::@5->splinePlot#2] -- vwsz1=vwsc1 + lda #p1b_y + sta splinePlot.p1_y+1 + // [59] phi (signed word) splinePlot::p0_x#4 = (const signed word) main::p2_x#0 [phi:main::@5->splinePlot#3] -- vwsz1=vwsc1 + lda #p2_x + sta splinePlot.p0_x+1 + // [59] phi (signed word) splinePlot::p2_x#4 = (const signed word) main::p0_x#0 [phi:main::@5->splinePlot#4] -- vwsz1=vwsc1 + lda #p0_x + sta splinePlot.p2_x+1 + // [59] phi (signed word) splinePlot::p1_x#4 = (const signed word) main::p1b_x#0 [phi:main::@5->splinePlot#5] -- vwsz1=vwsc1 + lda #p1b_x + sta splinePlot.p1_x+1 + jsr splinePlot + // [21] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + b6_from_b5: + jmp b6 + // main::@6 + b6: + // [22] call splinePlot + // [59] phi from main::@6 to splinePlot [phi:main::@6->splinePlot] + splinePlot_from_b6: + // [59] phi (signed word) splinePlot::p0_y#4 = (const signed word) main::p4_y#0 [phi:main::@6->splinePlot#0] -- vwsz1=vwsc1 + lda #p4_y + sta splinePlot.p0_y+1 + // [59] phi (signed word) splinePlot::p2_y#4 = (const signed word) main::p2_y#0 [phi:main::@6->splinePlot#1] -- vwsz1=vwsc1 + lda #p2_y + sta splinePlot.p2_y+1 + // [59] phi (signed word) splinePlot::p1_y#4 = (const signed word) main::p3b_y#0 [phi:main::@6->splinePlot#2] -- vwsz1=vwsc1 + lda #p3b_y + sta splinePlot.p1_y+1 + // [59] phi (signed word) splinePlot::p0_x#4 = (const signed word) main::p4_x#0 [phi:main::@6->splinePlot#3] -- vwsz1=vwsc1 + lda #p4_x + sta splinePlot.p0_x+1 + // [59] phi (signed word) splinePlot::p2_x#4 = (const signed word) main::p2_x#0 [phi:main::@6->splinePlot#4] -- vwsz1=vwsc1 + lda #p2_x + sta splinePlot.p2_x+1 + // [59] phi (signed word) splinePlot::p1_x#4 = (const signed word) main::p3b_x#0 [phi:main::@6->splinePlot#5] -- vwsz1=vwsc1 + lda #p3b_x + sta splinePlot.p1_x+1 + jsr splinePlot + // [23] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + b7_from_b6: + jmp b7 + // main::@7 + b7: + // [24] call clock + jsr clock + // [25] (dword) clock::return#2 ← (dword) clock::return#0 -- vduz1=vduz2 + lda clock.return + sta clock.return_2 + lda clock.return+1 + sta clock.return_2+1 + lda clock.return+2 + sta clock.return_2+2 + lda clock.return+3 + sta clock.return_2+3 + jmp b8 + // main::@8 + b8: + // [26] (dword~) main::$12 ← (dword) clock::return#2 -- vduz1=vduz2 + lda clock.return_2 + sta _12 + lda clock.return_2+1 + sta _12+1 + lda clock.return_2+2 + sta _12+2 + lda clock.return_2+3 + sta _12+3 + // [27] (dword) main::cyclecount#0 ← (dword~) main::$12 - (const dword) CLOCKS_PER_INIT#0 -- vduz1=vduz2_minus_vduc1 + lda _12 + sec + sbc #CLOCKS_PER_INIT + sta cyclecount+1 + lda _12+2 + sbc #>$10 + sta cyclecount+2 + lda _12+3 + sbc #>CLOCKS_PER_INIT>>$10 + sta cyclecount+3 + // [28] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 -- vduz1=vduz2 + lda cyclecount + sta print_dword_at.dw + lda cyclecount+1 + sta print_dword_at.dw+1 + lda cyclecount+2 + sta print_dword_at.dw+2 + lda cyclecount+3 + sta print_dword_at.dw+3 + // [29] call print_dword_at + jsr print_dword_at + jmp breturn + // main::@return + breturn: + // [30] return + rts +} + // print_dword_at +// Print a dword as HEX at a specific position +// print_dword_at(dword zeropage($41) dw) +print_dword_at: { + .label dw = $41 + // [31] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 -- vwuz1=_hi_vduz2 + lda dw+2 + sta print_word_at.w + lda dw+3 + sta print_word_at.w+1 + // [32] call print_word_at + // [36] phi from print_dword_at to print_word_at [phi:print_dword_at->print_word_at] + print_word_at_from_print_dword_at: + // [36] phi (byte*) print_word_at::at#2 = (const byte*) SCREEN#0 [phi:print_dword_at->print_word_at#0] -- pbuz1=pbuc1 + lda #SCREEN + sta print_word_at.at+1 + // [36] phi (word) print_word_at::w#2 = (word) print_word_at::w#0 [phi:print_dword_at->print_word_at#1] -- register_copy + jsr print_word_at + jmp b1 + // print_dword_at::@1 + b1: + // [33] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 -- vwuz1=_lo_vduz2 + lda dw + sta print_word_at.w + lda dw+1 + sta print_word_at.w+1 + // [34] call print_word_at + // [36] phi from print_dword_at::@1 to print_word_at [phi:print_dword_at::@1->print_word_at] + print_word_at_from_b1: + // [36] phi (byte*) print_word_at::at#2 = (const byte*) SCREEN#0+(byte) 4 [phi:print_dword_at::@1->print_word_at#0] -- pbuz1=pbuc1 + lda #SCREEN+4 + sta print_word_at.at+1 + // [36] phi (word) print_word_at::w#2 = (word) print_word_at::w#1 [phi:print_dword_at::@1->print_word_at#1] -- register_copy + jsr print_word_at + jmp breturn + // print_dword_at::@return + breturn: + // [35] return + rts +} + // print_word_at +// Print a word as HEX at a specific position +// print_word_at(word zeropage(2) w, byte* zeropage(4) at) +print_word_at: { + .label w = 2 + .label at = 4 + // [37] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2 -- vbuz1=_hi_vwuz2 + lda w+1 + sta print_byte_at.b + // [38] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 -- pbuz1=pbuz2 + lda at + sta print_byte_at.at + lda at+1 + sta print_byte_at.at+1 + // [39] call print_byte_at + // [44] phi from print_word_at to print_byte_at [phi:print_word_at->print_byte_at] + print_byte_at_from_print_word_at: + // [44] phi (byte*) print_byte_at::at#2 = (byte*) print_byte_at::at#0 [phi:print_word_at->print_byte_at#0] -- register_copy + // [44] phi (byte) print_byte_at::b#2 = (byte) print_byte_at::b#0 [phi:print_word_at->print_byte_at#1] -- register_copy + jsr print_byte_at + jmp b1 + // print_word_at::@1 + b1: + // [40] (byte) print_byte_at::b#1 ← < (word) print_word_at::w#2 -- vbuz1=_lo_vwuz2 + lda w + sta print_byte_at.b + // [41] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 -- pbuz1=pbuz2_plus_2 + lda at + clc + adc #2 + sta print_byte_at.at + lda at+1 + adc #0 + sta print_byte_at.at+1 + // [42] call print_byte_at + // [44] phi from print_word_at::@1 to print_byte_at [phi:print_word_at::@1->print_byte_at] + print_byte_at_from_b1: + // [44] phi (byte*) print_byte_at::at#2 = (byte*) print_byte_at::at#1 [phi:print_word_at::@1->print_byte_at#0] -- register_copy + // [44] phi (byte) print_byte_at::b#2 = (byte) print_byte_at::b#1 [phi:print_word_at::@1->print_byte_at#1] -- register_copy + jsr print_byte_at + jmp breturn + // print_word_at::@return + breturn: + // [43] return + rts +} + // print_byte_at +// Print a byte as HEX at a specific position +// print_byte_at(byte zeropage(6) b, byte* zeropage(7) at) +print_byte_at: { + .label _0 = $45 + .label _2 = $46 + .label b = 6 + .label at = 7 + // [45] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 -- vbuz1=vbuz2_ror_4 + lda b + lsr + lsr + lsr + lsr + sta _0 + // [46] (byte) print_char_at::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy _0 + lda print_hextab,y + sta print_char_at.ch + // [47] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 -- pbuz1=pbuz2 + lda at + sta print_char_at.at + lda at+1 + sta print_char_at.at+1 + // [48] call print_char_at + // [54] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] + print_char_at_from_print_byte_at: + // [54] phi (byte*) print_char_at::at#2 = (byte*) print_char_at::at#0 [phi:print_byte_at->print_char_at#0] -- register_copy + // [54] phi (byte) print_char_at::ch#2 = (byte) print_char_at::ch#0 [phi:print_byte_at->print_char_at#1] -- register_copy + jsr print_char_at + jmp b1 + // print_byte_at::@1 + b1: + // [49] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 + lda #$f + and b + sta _2 + // [50] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 -- pbuz1=pbuz2_plus_1 + lda at + clc + adc #1 + sta print_char_at.at + lda at+1 + adc #0 + sta print_char_at.at+1 + // [51] (byte) print_char_at::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy _2 + lda print_hextab,y + sta print_char_at.ch + // [52] call print_char_at + // [54] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] + print_char_at_from_b1: + // [54] phi (byte*) print_char_at::at#2 = (byte*) print_char_at::at#1 [phi:print_byte_at::@1->print_char_at#0] -- register_copy + // [54] phi (byte) print_char_at::ch#2 = (byte) print_char_at::ch#1 [phi:print_byte_at::@1->print_char_at#1] -- register_copy + jsr print_char_at + jmp breturn + // print_byte_at::@return + breturn: + // [53] return + rts +} + // print_char_at +// Print a single char +// print_char_at(byte zeropage(9) ch, byte* zeropage($a) at) +print_char_at: { + .label ch = 9 + .label at = $a + // [55] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 -- _deref_pbuz1=vbuz2 + lda ch + ldy #0 + sta (at),y + jmp breturn + // print_char_at::@return + breturn: + // [56] return + rts +} + // clock +// Returns the processor clock time used since the beginning of an implementation defined era (normally the beginning of the program). +// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start() +clock: { + .label return = $47 + .label return_2 = $35 + // [57] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB#0) -- vduz1=vduc1_minus__deref_pduc2 + lda #<$ffffffff + sec + sbc CIA2_TIMER_AB + sta return + lda #>$ffffffff + sbc CIA2_TIMER_AB+1 + sta return+1 + lda #<$ffffffff>>$10 + sbc CIA2_TIMER_AB+2 + sta return+2 + lda #>$ffffffff>>$10 + sbc CIA2_TIMER_AB+3 + sta return+3 + jmp breturn + // clock::@return + breturn: + // [58] return + rts +} + // splinePlot +// splinePlot(signed word zeropage($10) p0_x, signed word zeropage($16) p0_y, signed word zeropage($c) p1_x, signed word zeropage($12) p1_y, signed word zeropage($e) p2_x, signed word zeropage($14) p2_y) +splinePlot: { + .label _1 = $4d + .label _4 = $53 + .label _6 = $4b + .label _7 = $57 + .label _9 = $51 + .label _10 = $5b + .label _12 = $5f + .label _13 = $63 + .label _14 = $67 + .label _15 = $6b + .label _16 = $6f + .label _18 = $73 + .label _19 = $77 + .label _20 = $7b + .label _21 = $7f + .label _22 = $83 + .label _24 = $87 + .label _25 = $8b + .label _27 = $93 + .label _28 = $97 + .label _30 = $9f + .label _32 = $a3 + .label _35 = $a9 + .label a_x = $4f + .label a_y = $55 + .label b_x = $59 + .label b_y = $5d + .label i_x = $20 + .label i_y = $24 + .label j_x = $8f + .label j_y = $9b + .label p_x = $18 + .label p_y = $1c + .label n = $28 + .label p1_x = $c + .label p2_x = $e + .label p0_x = $10 + .label p1_y = $12 + .label p2_y = $14 + .label p0_y = $16 + // [60] (signed word~) splinePlot::$6 ← (signed word) splinePlot::p1_x#4 << (byte) 1 -- vwsz1=vwsz2_rol_1 + lda p1_x + asl + sta _6 + lda p1_x+1 + rol + sta _6+1 + // [61] (signed word~) splinePlot::$1 ← (signed word) splinePlot::p2_x#4 - (signed word~) splinePlot::$6 -- vwsz1=vwsz2_minus_vwsz3 + lda p2_x + sec + sbc _6 + sta _1 + lda p2_x+1 + sbc _6+1 + sta _1+1 + // [62] (signed word) splinePlot::a_x#0 ← (signed word~) splinePlot::$1 + (signed word) splinePlot::p0_x#4 -- vwsz1=vwsz2_plus_vwsz3 + lda _1 + clc + adc p0_x + sta a_x + lda _1+1 + adc p0_x+1 + sta a_x+1 + // [63] (signed word~) splinePlot::$9 ← (signed word) splinePlot::p1_y#4 << (byte) 1 -- vwsz1=vwsz2_rol_1 + lda p1_y + asl + sta _9 + lda p1_y+1 + rol + sta _9+1 + // [64] (signed word~) splinePlot::$4 ← (signed word) splinePlot::p2_y#4 - (signed word~) splinePlot::$9 -- vwsz1=vwsz2_minus_vwsz3 + lda p2_y + sec + sbc _9 + sta _4 + lda p2_y+1 + sbc _9+1 + sta _4+1 + // [65] (signed word) splinePlot::a_y#0 ← (signed word~) splinePlot::$4 + (signed word) splinePlot::p0_y#4 -- vwsz1=vwsz2_plus_vwsz3 + lda _4 + clc + adc p0_y + sta a_y + lda _4+1 + adc p0_y+1 + sta a_y+1 + // [66] (signed word~) splinePlot::$7 ← (signed word) splinePlot::p0_x#4 << (byte) 1 -- vwsz1=vwsz2_rol_1 + lda p0_x + asl + sta _7 + lda p0_x+1 + rol + sta _7+1 + // [67] (signed word) splinePlot::b_x#0 ← (signed word~) splinePlot::$6 - (signed word~) splinePlot::$7 -- vwsz1=vwsz2_minus_vwsz3 + lda _6 + sec + sbc _7 + sta b_x + lda _6+1 + sbc _7+1 + sta b_x+1 + // [68] (signed word~) splinePlot::$10 ← (signed word) splinePlot::p0_y#4 << (byte) 1 -- vwsz1=vwsz2_rol_1 + lda p0_y + asl + sta _10 + lda p0_y+1 + rol + sta _10+1 + // [69] (signed word) splinePlot::b_y#0 ← (signed word~) splinePlot::$9 - (signed word~) splinePlot::$10 -- vwsz1=vwsz2_minus_vwsz3 + lda _9 + sec + sbc _10 + sta b_y + lda _9+1 + sbc _10+1 + sta b_y+1 + // [70] (signed dword~) splinePlot::$12 ← (signed dword)(signed word) splinePlot::a_x#0 -- vdsz1=_sdword_vwsz2 + lda a_x + sta _12 + lda a_x+1 + sta _12+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _12+2 + sta _12+3 + // [71] (signed dword~) splinePlot::$13 ← (signed dword~) splinePlot::$12 << (byte) 8 -- vdsz1=vdsz2_rol_8 + lda _12+2 + sta _13+3 + lda _12+1 + sta _13+2 + lda _12 + sta _13+1 + lda #0 + sta _13 + // [72] (signed dword~) splinePlot::$14 ← (signed dword)(signed word) splinePlot::b_x#0 -- vdsz1=_sdword_vwsz2 + lda b_x + sta _14 + lda b_x+1 + sta _14+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _14+2 + sta _14+3 + // [73] (signed dword~) splinePlot::$15 ← (signed dword~) splinePlot::$14 << (byte) 8 -- vdsz1=vdsz2_rol_8 + lda _14+2 + sta _15+3 + lda _14+1 + sta _15+2 + lda _14 + sta _15+1 + lda #0 + sta _15 + // [74] (signed dword~) splinePlot::$16 ← (signed dword~) splinePlot::$15 << (byte) 4 -- vdsz1=vdsz2_rol_4 + lda _15 + sta _16 + lda _15+1 + sta _16+1 + lda _15+2 + sta _16+2 + lda _15+3 + sta _16+3 + asl _16 + rol _16+1 + rol _16+2 + rol _16+3 + asl _16 + rol _16+1 + rol _16+2 + rol _16+3 + asl _16 + rol _16+1 + rol _16+2 + rol _16+3 + asl _16 + rol _16+1 + rol _16+2 + rol _16+3 + // [75] (signed dword) splinePlot::i_x#0 ← (signed dword~) splinePlot::$13 + (signed dword~) splinePlot::$16 -- vdsz1=vdsz2_plus_vdsz3 + lda _13 + clc + adc _16 + sta i_x + lda _13+1 + adc _16+1 + sta i_x+1 + lda _13+2 + adc _16+2 + sta i_x+2 + lda _13+3 + adc _16+3 + sta i_x+3 + // [76] (signed dword~) splinePlot::$18 ← (signed dword)(signed word) splinePlot::a_y#0 -- vdsz1=_sdword_vwsz2 + lda a_y + sta _18 + lda a_y+1 + sta _18+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _18+2 + sta _18+3 + // [77] (signed dword~) splinePlot::$19 ← (signed dword~) splinePlot::$18 << (byte) 8 -- vdsz1=vdsz2_rol_8 + lda _18+2 + sta _19+3 + lda _18+1 + sta _19+2 + lda _18 + sta _19+1 + lda #0 + sta _19 + // [78] (signed dword~) splinePlot::$20 ← (signed dword)(signed word) splinePlot::b_y#0 -- vdsz1=_sdword_vwsz2 + lda b_y + sta _20 + lda b_y+1 + sta _20+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _20+2 + sta _20+3 + // [79] (signed dword~) splinePlot::$21 ← (signed dword~) splinePlot::$20 << (byte) 8 -- vdsz1=vdsz2_rol_8 + lda _20+2 + sta _21+3 + lda _20+1 + sta _21+2 + lda _20 + sta _21+1 + lda #0 + sta _21 + // [80] (signed dword~) splinePlot::$22 ← (signed dword~) splinePlot::$21 << (byte) 4 -- vdsz1=vdsz2_rol_4 + lda _21 + sta _22 + lda _21+1 + sta _22+1 + lda _21+2 + sta _22+2 + lda _21+3 + sta _22+3 + asl _22 + rol _22+1 + rol _22+2 + rol _22+3 + asl _22 + rol _22+1 + rol _22+2 + rol _22+3 + asl _22 + rol _22+1 + rol _22+2 + rol _22+3 + asl _22 + rol _22+1 + rol _22+2 + rol _22+3 + // [81] (signed dword) splinePlot::i_y#0 ← (signed dword~) splinePlot::$19 + (signed dword~) splinePlot::$22 -- vdsz1=vdsz2_plus_vdsz3 + lda _19 + clc + adc _22 + sta i_y + lda _19+1 + adc _22+1 + sta i_y+1 + lda _19+2 + adc _22+2 + sta i_y+2 + lda _19+3 + adc _22+3 + sta i_y+3 + // [82] (signed dword~) splinePlot::$24 ← (signed dword)(signed word) splinePlot::a_x#0 -- vdsz1=_sdword_vwsz2 + lda a_x + sta _24 + lda a_x+1 + sta _24+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _24+2 + sta _24+3 + // [83] (signed dword~) splinePlot::$25 ← (signed dword~) splinePlot::$24 << (byte) 8 -- vdsz1=vdsz2_rol_8 + lda _24+2 + sta _25+3 + lda _24+1 + sta _25+2 + lda _24 + sta _25+1 + lda #0 + sta _25 + // [84] (signed dword) splinePlot::j_x#0 ← (signed dword~) splinePlot::$25 << (byte) 1 -- vdsz1=vdsz2_rol_1 + lda _25 + asl + sta j_x + lda _25+1 + rol + sta j_x+1 + lda _25+2 + rol + sta j_x+2 + lda _25+3 + rol + sta j_x+3 + // [85] (signed dword~) splinePlot::$27 ← (signed dword)(signed word) splinePlot::a_y#0 -- vdsz1=_sdword_vwsz2 + lda a_y + sta _27 + lda a_y+1 + sta _27+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _27+2 + sta _27+3 + // [86] (signed dword~) splinePlot::$28 ← (signed dword~) splinePlot::$27 << (byte) 8 -- vdsz1=vdsz2_rol_8 + lda _27+2 + sta _28+3 + lda _27+1 + sta _28+2 + lda _27 + sta _28+1 + lda #0 + sta _28 + // [87] (signed dword) splinePlot::j_y#0 ← (signed dword~) splinePlot::$28 << (byte) 1 -- vdsz1=vdsz2_rol_1 + lda _28 + asl + sta j_y + lda _28+1 + rol + sta j_y+1 + lda _28+2 + rol + sta j_y+2 + lda _28+3 + rol + sta j_y+3 + // [88] (signed dword~) splinePlot::$30 ← (signed dword)(signed word) splinePlot::p0_x#4 -- vdsz1=_sdword_vwsz2 + lda p0_x + sta _30 + lda p0_x+1 + sta _30+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _30+2 + sta _30+3 + // [89] (signed dword) splinePlot::p_x#0 ← (signed dword~) splinePlot::$30 << (byte) $10 -- vdsz1=vdsz2_rol_16 + lda _30+1 + sta p_x+3 + lda _30 + sta p_x+2 + lda #0 + sta p_x + sta p_x+1 + // [90] (signed dword~) splinePlot::$32 ← (signed dword)(signed word) splinePlot::p0_y#4 -- vdsz1=_sdword_vwsz2 + lda p0_y + sta _32 + lda p0_y+1 + sta _32+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _32+2 + sta _32+3 + // [91] (signed dword) splinePlot::p_y#0 ← (signed dword~) splinePlot::$32 << (byte) $10 -- vdsz1=vdsz2_rol_16 + lda _32+1 + sta p_y+3 + lda _32 + sta p_y+2 + lda #0 + sta p_y + sta p_y+1 + // [92] phi from splinePlot to splinePlot::@1 [phi:splinePlot->splinePlot::@1] + b1_from_splinePlot: + // [92] phi (byte) splinePlot::n#2 = (byte) 0 [phi:splinePlot->splinePlot::@1#0] -- vbuz1=vbuc1 + lda #0 + sta n + // [92] phi (signed dword) splinePlot::i_y#2 = (signed dword) splinePlot::i_y#0 [phi:splinePlot->splinePlot::@1#1] -- register_copy + // [92] phi (signed dword) splinePlot::i_x#2 = (signed dword) splinePlot::i_x#0 [phi:splinePlot->splinePlot::@1#2] -- register_copy + // [92] phi (signed dword) splinePlot::p_y#2 = (signed dword) splinePlot::p_y#0 [phi:splinePlot->splinePlot::@1#3] -- register_copy + // [92] phi (signed dword) splinePlot::p_x#2 = (signed dword) splinePlot::p_x#0 [phi:splinePlot->splinePlot::@1#4] -- register_copy + jmp b1 + // [92] phi from splinePlot::@2 to splinePlot::@1 [phi:splinePlot::@2->splinePlot::@1] + b1_from_b2: + // [92] phi (byte) splinePlot::n#2 = (byte) splinePlot::n#1 [phi:splinePlot::@2->splinePlot::@1#0] -- register_copy + // [92] phi (signed dword) splinePlot::i_y#2 = (signed dword) splinePlot::i_y#1 [phi:splinePlot::@2->splinePlot::@1#1] -- register_copy + // [92] phi (signed dword) splinePlot::i_x#2 = (signed dword) splinePlot::i_x#1 [phi:splinePlot::@2->splinePlot::@1#2] -- register_copy + // [92] phi (signed dword) splinePlot::p_y#2 = (signed dword) splinePlot::p_y#1 [phi:splinePlot::@2->splinePlot::@1#3] -- register_copy + // [92] phi (signed dword) splinePlot::p_x#2 = (signed dword) splinePlot::p_x#1 [phi:splinePlot::@2->splinePlot::@1#4] -- register_copy + jmp b1 + // splinePlot::@1 + b1: + // [93] (word) bitmap_plot::x#0 ← > (signed dword) splinePlot::p_x#2 -- vwuz1=_hi_vdsz2 + lda p_x+2 + sta bitmap_plot.x + lda p_x+3 + sta bitmap_plot.x+1 + // [94] (word~) splinePlot::$35 ← > (signed dword) splinePlot::p_y#2 -- vwuz1=_hi_vdsz2 + lda p_y+2 + sta _35 + lda p_y+3 + sta _35+1 + // [95] (byte) bitmap_plot::y#0 ← < (word~) splinePlot::$35 -- vbuz1=_lo_vwuz2 + lda _35 + sta bitmap_plot.y + // [96] call bitmap_plot + jsr bitmap_plot + jmp b2 + // splinePlot::@2 + b2: + // [97] (signed dword) splinePlot::p_x#1 ← (signed dword) splinePlot::p_x#2 + (signed dword) splinePlot::i_x#2 -- vdsz1=vdsz1_plus_vdsz2 + lda p_x + clc + adc i_x + sta p_x + lda p_x+1 + adc i_x+1 + sta p_x+1 + lda p_x+2 + adc i_x+2 + sta p_x+2 + lda p_x+3 + adc i_x+3 + sta p_x+3 + // [98] (signed dword) splinePlot::p_y#1 ← (signed dword) splinePlot::p_y#2 + (signed dword) splinePlot::i_y#2 -- vdsz1=vdsz1_plus_vdsz2 + lda p_y + clc + adc i_y + sta p_y + lda p_y+1 + adc i_y+1 + sta p_y+1 + lda p_y+2 + adc i_y+2 + sta p_y+2 + lda p_y+3 + adc i_y+3 + sta p_y+3 + // [99] (signed dword) splinePlot::i_x#1 ← (signed dword) splinePlot::i_x#2 + (signed dword) splinePlot::j_x#0 -- vdsz1=vdsz1_plus_vdsz2 + lda i_x + clc + adc j_x + sta i_x + lda i_x+1 + adc j_x+1 + sta i_x+1 + lda i_x+2 + adc j_x+2 + sta i_x+2 + lda i_x+3 + adc j_x+3 + sta i_x+3 + // [100] (signed dword) splinePlot::i_y#1 ← (signed dword) splinePlot::i_y#2 + (signed dword) splinePlot::j_y#0 -- vdsz1=vdsz1_plus_vdsz2 + lda i_y + clc + adc j_y + sta i_y + lda i_y+1 + adc j_y+1 + sta i_y+1 + lda i_y+2 + adc j_y+2 + sta i_y+2 + lda i_y+3 + adc j_y+3 + sta i_y+3 + // [101] (byte) splinePlot::n#1 ← ++ (byte) splinePlot::n#2 -- vbuz1=_inc_vbuz1 + inc n + // [102] if((byte) splinePlot::n#1!=(byte) $11) goto splinePlot::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #$11 + cmp n + bne b1_from_b2 + jmp breturn + // splinePlot::@return + breturn: + // [103] return + rts +} + // bitmap_plot +// Plot a single dot in the bitmap +// bitmap_plot(word zeropage($a7) x, byte zeropage($ab) y) +bitmap_plot: { + .label _1 = $ae + .label _2 = $b2 + .label plotter = $ac + .label plotter_1 = $b0 + .label x = $a7 + .label y = $ab + // [104] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 + ldy y + lda bitmap_plot_yhi,y + sta plotter+1 + lda bitmap_plot_ylo,y + sta plotter + // [105] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + lda x + and #<$fff8 + sta _1 + lda x+1 + and #>$fff8 + sta _1+1 + // [106] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz2_plus_vwuz3 + lda plotter + clc + adc _1 + sta plotter_1 + lda plotter+1 + adc _1+1 + sta plotter_1+1 + // [107] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuz1=_lo_vwuz2 + lda x + sta _2 + // [108] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 + ldy #0 + lda (plotter_1),y + ldy _2 + ora bitmap_plot_bit,y + ldy #0 + sta (plotter_1),y + jmp breturn + // bitmap_plot::@return + breturn: + // [109] return + rts +} + // clock_start +// Reset & start the processor clock time. The value can be read using clock(). +// This uses CIA #2 Timer A+B on the C64 +clock_start: { + // [110] *((const byte*) CIA2_TIMER_A_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_CONTINUOUS#0 -- _deref_pbuc1=vbuc2 + // Setup CIA#2 timer A to count (down) CPU cycles + lda #CIA_TIMER_CONTROL_CONTINUOUS + sta CIA2_TIMER_A_CONTROL + // [111] *((const byte*) CIA2_TIMER_B_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 -- _deref_pbuc1=vbuc2 + lda #CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A + sta CIA2_TIMER_B_CONTROL + // [112] *((const dword*) CIA2_TIMER_AB#0) ← (dword) $ffffffff -- _deref_pduc1=vduc2 + lda #<$ffffffff + sta CIA2_TIMER_AB + lda #>$ffffffff + sta CIA2_TIMER_AB+1 + lda #<$ffffffff>>$10 + sta CIA2_TIMER_AB+2 + lda #>$ffffffff>>$10 + sta CIA2_TIMER_AB+3 + // [113] *((const byte*) CIA2_TIMER_B_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_START#0|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 -- _deref_pbuc1=vbuc2 + lda #CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A + sta CIA2_TIMER_B_CONTROL + // [114] *((const byte*) CIA2_TIMER_A_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_START#0 -- _deref_pbuc1=vbuc2 + lda #CIA_TIMER_CONTROL_START + sta CIA2_TIMER_A_CONTROL + jmp breturn + // clock_start::@return + breturn: + // [115] return + rts +} + // bitmap_clear +// Clear all graphics on the bitmap +// bgcol - the background color to fill the screen with +// fgcol - the foreground color to fill the screen with +bitmap_clear: { + .const col = WHITE*$10 + // [117] call memset + // [121] phi from bitmap_clear to memset [phi:bitmap_clear->memset] + memset_from_bitmap_clear: + // [121] phi (byte) memset::c#3 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuz1=vbuc1 + lda #col + sta memset.c + // [121] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP_SCREEN#0 [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 + lda #BITMAP_SCREEN + sta memset.str+1 + // [121] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 + lda #<$3e8 + sta memset.num + lda #>$3e8 + sta memset.num+1 + jsr memset + // [118] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + b1_from_bitmap_clear: + jmp b1 + // bitmap_clear::@1 + b1: + // [119] call memset + // [121] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] + memset_from_b1: + // [121] phi (byte) memset::c#3 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuz1=vbuc1 + lda #0 + sta memset.c + // [121] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP_GRAPHICS#0 [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 + lda #BITMAP_GRAPHICS + sta memset.str+1 + // [121] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 + lda #<$1f40 + sta memset.num + lda #>$1f40 + sta memset.num+1 + jsr memset + jmp breturn + // bitmap_clear::@return + breturn: + // [120] return + rts +} + // memset +// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. +// memset(void* zeropage($2b) str, byte zeropage($2d) c, word zeropage($29) num) +memset: { + .label end = $b3 + .label dst = $2e + .label num = $29 + .label str = $2b + .label c = $2d + // [122] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + lda num + beq breturn + lda num+1 + beq breturn + jmp b1 + // memset::@1 + b1: + // [123] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz3 + lda str + clc + adc num + sta end + lda str+1 + adc num+1 + sta end+1 + // [124] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 -- pbuz1=pbuz2 + lda str + sta dst + lda str+1 + sta dst+1 + // [125] phi from memset::@1 memset::@2 to memset::@2 [phi:memset::@1/memset::@2->memset::@2] + b2_from_b1: + b2_from_b2: + // [125] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset::@1/memset::@2->memset::@2#0] -- register_copy + jmp b2 + // memset::@2 + b2: + // [126] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuz2 + lda c + ldy #0 + sta (dst),y + // [127] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + inc dst + bne !+ + inc dst+1 + !: + // [128] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuz2_then_la1 + lda dst+1 + cmp end+1 + bne b2_from_b2 + lda dst + cmp end + bne b2_from_b2 + jmp breturn + // memset::@return + breturn: + // [129] return + rts +} + // bitmap_init +// Initialize bitmap plotting tables +bitmap_init: { + .label _4 = $b6 + .label _5 = $b7 + .label _6 = $b8 + .label _7 = $b5 + .label bits = $30 + .label x = $31 + .label y = $32 + .label yoffs = $33 + // [131] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + b1_from_bitmap_init: + // [131] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 + lda #0 + sta x + // [131] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 + lda #$80 + sta bits + jmp b1 + // [131] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + b1_from_b2: + // [131] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + // [131] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + jmp b1 + // bitmap_init::@1 + b1: + // [132] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 + lda bits + ldy x + sta bitmap_plot_bit,y + // [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 + lsr bits + // [134] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuz1_neq_0_then_la1 + lda bits + cmp #0 + bne b6_from_b1 + // [136] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + b2_from_b1: + // [136] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 + lda #$80 + sta bits + jmp b2 + // [135] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] + b6_from_b1: + jmp b6 + // bitmap_init::@6 + b6: + // [136] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] + b2_from_b6: + // [136] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy + jmp b2 + // bitmap_init::@2 + b2: + // [137] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 + inc x + // [138] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1 + lda x + cmp #0 + bne b1_from_b2 + // [139] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + b3_from_b2: + // [139] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP_GRAPHICS#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + lda #BITMAP_GRAPHICS + sta yoffs+1 + // [139] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 + lda #0 + sta y + jmp b3 + // [139] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + b3_from_b4: + // [139] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + // [139] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + jmp b3 + // bitmap_init::@3 + b3: + // [140] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuz2_band_vbuc1 + lda #7 + and y + sta _7 + // [141] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 + lda yoffs + sta _4 + // [142] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 + lda _7 + ora _4 + sta _5 + // [143] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2 + lda _5 + ldy y + sta bitmap_plot_ylo,y + // [144] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 + lda yoffs+1 + sta _6 + // [145] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2 + lda _6 + ldy y + sta bitmap_plot_yhi,y + // [146] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 + lda #7 + cmp _7 + bne b4_from_b3 + jmp b5 + // bitmap_init::@5 + b5: + // [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 + clc + lda yoffs + adc #<$28*8 + sta yoffs + lda yoffs+1 + adc #>$28*8 + sta yoffs+1 + // [148] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] + b4_from_b3: + b4_from_b5: + // [148] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy + jmp b4 + // bitmap_init::@4 + b4: + // [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 + inc y + // [150] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1 + lda y + cmp #0 + bne b3_from_b4 + jmp breturn + // bitmap_init::@return + breturn: + // [151] return + rts +} + // File Data + print_hextab: .text "0123456789abcdef" + // Tables for the plotter - initialized by calling bitmap_init(); + bitmap_plot_ylo: .fill $100, 0 + bitmap_plot_yhi: .fill $100, 0 + bitmap_plot_bit: .fill $100, 0 + +REGISTER UPLIFT POTENTIAL REGISTERS +Equivalence Class zp ZP_BYTE:182 [ bitmap_init::$4 ] has ALU potential. +Statement [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [13] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [25] (dword) clock::return#2 ← (dword) clock::return#0 [ clock::return#2 ] ( main:2 [ clock::return#2 ] ) always clobbers reg byte a +Statement [26] (dword~) main::$12 ← (dword) clock::return#2 [ main::$12 ] ( main:2 [ main::$12 ] ) always clobbers reg byte a +Statement [27] (dword) main::cyclecount#0 ← (dword~) main::$12 - (const dword) CLOCKS_PER_INIT#0 [ main::cyclecount#0 ] ( main:2 [ main::cyclecount#0 ] ) always clobbers reg byte a +Statement [28] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 [ print_dword_at::dw#0 ] ( main:2 [ print_dword_at::dw#0 ] ) always clobbers reg byte a +Statement [31] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:29 [ print_dword_at::dw#0 print_word_at::w#0 ] ) always clobbers reg byte a +Statement [33] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:29 [ print_word_at::w#1 ] ) always clobbers reg byte a +Statement [37] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ( main:2::print_dword_at:29::print_word_at:32 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] main:2::print_dword_at:29::print_word_at:34 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ) always clobbers reg byte a +Statement [38] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:29::print_word_at:32 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_dword_at:29::print_word_at:34 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] +Statement [40] (byte) print_byte_at::b#1 ← < (word) print_word_at::w#2 [ print_word_at::at#2 print_byte_at::b#1 ] ( main:2::print_dword_at:29::print_word_at:32 [ print_dword_at::dw#0 print_word_at::at#2 print_byte_at::b#1 ] main:2::print_dword_at:29::print_word_at:34 [ print_word_at::at#2 print_byte_at::b#1 ] ) always clobbers reg byte a +Statement [41] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:29::print_word_at:32 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] main:2::print_dword_at:29::print_word_at:34 [ print_byte_at::b#1 print_byte_at::at#1 ] ) always clobbers reg byte a +Statement [45] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:29::print_word_at:32::print_byte_at:39 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:39 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:29::print_word_at:32::print_byte_at:42 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:42 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ) always clobbers reg byte a +Statement [47] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:29::print_word_at:32::print_byte_at:39 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:39 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:29::print_word_at:32::print_byte_at:42 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:42 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] +Statement [49] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:29::print_word_at:32::print_byte_at:39 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:39 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:29::print_word_at:32::print_byte_at:42 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:42 [ print_byte_at::at#2 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [50] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:29::print_word_at:32::print_byte_at:39 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:39 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:29::print_word_at:32::print_byte_at:42 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:42 [ print_byte_at::$2 print_char_at::at#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:70 [ print_byte_at::$2 ] +Statement [55] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:29::print_word_at:32::print_byte_at:39::print_char_at:48 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:39::print_char_at:48 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:29::print_word_at:32::print_byte_at:42::print_char_at:48 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:42::print_char_at:48 [ print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:29::print_word_at:32::print_byte_at:39::print_char_at:52 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:39::print_char_at:52 [ print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:29::print_word_at:32::print_byte_at:42::print_char_at:52 [ print_dword_at::dw#0 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:42::print_char_at:52 [ ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] +Statement [57] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB#0) [ clock::return#0 ] ( main:2::clock:24 [ clock::return#0 ] ) always clobbers reg byte a +Statement [60] (signed word~) splinePlot::$6 ← (signed word) splinePlot::p1_x#4 << (byte) 1 [ splinePlot::p2_x#4 splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 ] ( main:2::splinePlot:16 [ splinePlot::p2_x#4 splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 ] main:2::splinePlot:18 [ splinePlot::p2_x#4 splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 ] main:2::splinePlot:20 [ splinePlot::p2_x#4 splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 ] main:2::splinePlot:22 [ splinePlot::p2_x#4 splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 ] ) always clobbers reg byte a +Statement [61] (signed word~) splinePlot::$1 ← (signed word) splinePlot::p2_x#4 - (signed word~) splinePlot::$6 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::$1 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::$1 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::$1 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::$1 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::$1 ] ) always clobbers reg byte a +Statement [62] (signed word) splinePlot::a_x#0 ← (signed word~) splinePlot::$1 + (signed word) splinePlot::p0_x#4 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 ] ) always clobbers reg byte a +Statement [63] (signed word~) splinePlot::$9 ← (signed word) splinePlot::p1_y#4 << (byte) 1 [ splinePlot::p0_x#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 ] ) always clobbers reg byte a +Statement [64] (signed word~) splinePlot::$4 ← (signed word) splinePlot::p2_y#4 - (signed word~) splinePlot::$9 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::$4 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::$4 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::$4 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::$4 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::$4 ] ) always clobbers reg byte a +Statement [65] (signed word) splinePlot::a_y#0 ← (signed word~) splinePlot::$4 + (signed word) splinePlot::p0_y#4 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 ] ) always clobbers reg byte a +Statement [66] (signed word~) splinePlot::$7 ← (signed word) splinePlot::p0_x#4 << (byte) 1 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::$7 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::$7 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::$7 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::$7 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::$7 ] ) always clobbers reg byte a +Statement [67] (signed word) splinePlot::b_x#0 ← (signed word~) splinePlot::$6 - (signed word~) splinePlot::$7 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 ] ) always clobbers reg byte a +Statement [68] (signed word~) splinePlot::$10 ← (signed word) splinePlot::p0_y#4 << (byte) 1 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::$10 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::$10 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::$10 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::$10 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::$10 ] ) always clobbers reg byte a +Statement [69] (signed word) splinePlot::b_y#0 ← (signed word~) splinePlot::$9 - (signed word~) splinePlot::$10 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 ] ) always clobbers reg byte a +Statement [70] (signed dword~) splinePlot::$12 ← (signed dword)(signed word) splinePlot::a_x#0 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$12 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$12 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$12 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$12 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$12 ] ) always clobbers reg byte a +Statement [71] (signed dword~) splinePlot::$13 ← (signed dword~) splinePlot::$12 << (byte) 8 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$13 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$13 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$13 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$13 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$13 ] ) always clobbers reg byte a +Statement [72] (signed dword~) splinePlot::$14 ← (signed dword)(signed word) splinePlot::b_x#0 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$14 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$14 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$14 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$14 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$14 ] ) always clobbers reg byte a +Statement [73] (signed dword~) splinePlot::$15 ← (signed dword~) splinePlot::$14 << (byte) 8 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$15 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$15 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$15 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$15 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$15 ] ) always clobbers reg byte a +Statement [74] (signed dword~) splinePlot::$16 ← (signed dword~) splinePlot::$15 << (byte) 4 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$16 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$16 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$16 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$16 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$16 ] ) always clobbers reg byte a +Statement [75] (signed dword) splinePlot::i_x#0 ← (signed dword~) splinePlot::$13 + (signed dword~) splinePlot::$16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 ] ) always clobbers reg byte a +Statement [76] (signed dword~) splinePlot::$18 ← (signed dword)(signed word) splinePlot::a_y#0 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$18 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$18 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$18 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$18 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$18 ] ) always clobbers reg byte a +Statement [77] (signed dword~) splinePlot::$19 ← (signed dword~) splinePlot::$18 << (byte) 8 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$19 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$19 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$19 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$19 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$19 ] ) always clobbers reg byte a +Statement [78] (signed dword~) splinePlot::$20 ← (signed dword)(signed word) splinePlot::b_y#0 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$20 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$20 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$20 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$20 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$20 ] ) always clobbers reg byte a +Statement [79] (signed dword~) splinePlot::$21 ← (signed dword~) splinePlot::$20 << (byte) 8 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$21 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$21 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$21 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$21 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$21 ] ) always clobbers reg byte a +Statement [80] (signed dword~) splinePlot::$22 ← (signed dword~) splinePlot::$21 << (byte) 4 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$22 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$22 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$22 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$22 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$22 ] ) always clobbers reg byte a +Statement [81] (signed dword) splinePlot::i_y#0 ← (signed dword~) splinePlot::$19 + (signed dword~) splinePlot::$22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 ] ) always clobbers reg byte a +Statement [82] (signed dword~) splinePlot::$24 ← (signed dword)(signed word) splinePlot::a_x#0 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$24 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$24 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$24 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$24 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$24 ] ) always clobbers reg byte a +Statement [83] (signed dword~) splinePlot::$25 ← (signed dword~) splinePlot::$24 << (byte) 8 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$25 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$25 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$25 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$25 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$25 ] ) always clobbers reg byte a +Statement [84] (signed dword) splinePlot::j_x#0 ← (signed dword~) splinePlot::$25 << (byte) 1 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 ] ) always clobbers reg byte a +Statement [85] (signed dword~) splinePlot::$27 ← (signed dword)(signed word) splinePlot::a_y#0 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$27 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$27 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$27 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$27 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$27 ] ) always clobbers reg byte a +Statement [86] (signed dword~) splinePlot::$28 ← (signed dword~) splinePlot::$27 << (byte) 8 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$28 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$28 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$28 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$28 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$28 ] ) always clobbers reg byte a +Statement [87] (signed dword) splinePlot::j_y#0 ← (signed dword~) splinePlot::$28 << (byte) 1 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 ] ) always clobbers reg byte a +Statement [88] (signed dword~) splinePlot::$30 ← (signed dword)(signed word) splinePlot::p0_x#4 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::$30 ] ( main:2::splinePlot:16 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::$30 ] main:2::splinePlot:18 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::$30 ] main:2::splinePlot:20 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::$30 ] main:2::splinePlot:22 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::$30 ] ) always clobbers reg byte a +Statement [89] (signed dword) splinePlot::p_x#0 ← (signed dword~) splinePlot::$30 << (byte) $10 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 ] ( main:2::splinePlot:16 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 ] main:2::splinePlot:18 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 ] main:2::splinePlot:20 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 ] main:2::splinePlot:22 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 ] ) always clobbers reg byte a +Statement [90] (signed dword~) splinePlot::$32 ← (signed dword)(signed word) splinePlot::p0_y#4 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::$32 ] ( main:2::splinePlot:16 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::$32 ] main:2::splinePlot:18 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::$32 ] main:2::splinePlot:20 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::$32 ] main:2::splinePlot:22 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::$32 ] ) always clobbers reg byte a +Statement [91] (signed dword) splinePlot::p_y#0 ← (signed dword~) splinePlot::$32 << (byte) $10 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::p_y#0 ] ( main:2::splinePlot:16 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::p_y#0 ] main:2::splinePlot:18 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::p_y#0 ] main:2::splinePlot:20 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::p_y#0 ] main:2::splinePlot:22 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::p_y#0 ] ) always clobbers reg byte a +Statement [93] (word) bitmap_plot::x#0 ← > (signed dword) splinePlot::p_x#2 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 ] ( main:2::splinePlot:16 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 ] main:2::splinePlot:18 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 ] main:2::splinePlot:20 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 ] main:2::splinePlot:22 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ splinePlot::n#2 splinePlot::n#1 ] +Statement [94] (word~) splinePlot::$35 ← > (signed dword) splinePlot::p_y#2 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 splinePlot::$35 ] ( main:2::splinePlot:16 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 splinePlot::$35 ] main:2::splinePlot:18 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 splinePlot::$35 ] main:2::splinePlot:20 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 splinePlot::$35 ] main:2::splinePlot:22 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 splinePlot::$35 ] ) always clobbers reg byte a +Statement [95] (byte) bitmap_plot::y#0 ← < (word~) splinePlot::$35 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::y#0 ] ( main:2::splinePlot:16 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::y#0 ] main:2::splinePlot:18 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::y#0 ] main:2::splinePlot:20 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::y#0 ] main:2::splinePlot:22 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::y#0 ] ) always clobbers reg byte a +Statement [97] (signed dword) splinePlot::p_x#1 ← (signed dword) splinePlot::p_x#2 + (signed dword) splinePlot::i_x#2 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 ] ( main:2::splinePlot:16 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 ] main:2::splinePlot:18 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 ] main:2::splinePlot:20 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 ] main:2::splinePlot:22 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 ] ) always clobbers reg byte a +Statement [98] (signed dword) splinePlot::p_y#1 ← (signed dword) splinePlot::p_y#2 + (signed dword) splinePlot::i_y#2 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 ] ( main:2::splinePlot:16 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 ] main:2::splinePlot:18 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 ] main:2::splinePlot:20 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 ] main:2::splinePlot:22 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 ] ) always clobbers reg byte a +Statement [99] (signed dword) splinePlot::i_x#1 ← (signed dword) splinePlot::i_x#2 + (signed dword) splinePlot::j_x#0 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 ] ( main:2::splinePlot:16 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 ] main:2::splinePlot:18 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 ] main:2::splinePlot:20 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 ] main:2::splinePlot:22 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 ] ) always clobbers reg byte a +Statement [100] (signed dword) splinePlot::i_y#1 ← (signed dword) splinePlot::i_y#2 + (signed dword) splinePlot::j_y#0 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 splinePlot::i_y#1 ] ( main:2::splinePlot:16 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 splinePlot::i_y#1 ] main:2::splinePlot:18 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 splinePlot::i_y#1 ] main:2::splinePlot:20 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 splinePlot::i_y#1 ] main:2::splinePlot:22 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 splinePlot::i_y#1 ] ) always clobbers reg byte a +Statement [104] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( main:2::splinePlot:16::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#0 ] main:2::splinePlot:18::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#0 ] main:2::splinePlot:20::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#0 ] main:2::splinePlot:22::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#0 ] ) always clobbers reg byte a +Statement [105] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::splinePlot:16::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::splinePlot:18::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::splinePlot:20::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::splinePlot:22::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a +Statement [106] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::splinePlot:16::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] main:2::splinePlot:18::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] main:2::splinePlot:20::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] main:2::splinePlot:22::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a +Statement [107] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::splinePlot:16::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::splinePlot:18::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::splinePlot:20::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::splinePlot:22::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a +Statement [108] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::splinePlot:16::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 ] main:2::splinePlot:18::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 ] main:2::splinePlot:20::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 ] main:2::splinePlot:22::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:40 [ splinePlot::n#2 splinePlot::n#1 ] +Statement [110] *((const byte*) CIA2_TIMER_A_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_CONTINUOUS#0 [ ] ( main:2::clock_start:14 [ ] ) always clobbers reg byte a +Statement [111] *((const byte*) CIA2_TIMER_B_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 [ ] ( main:2::clock_start:14 [ ] ) always clobbers reg byte a +Statement [112] *((const dword*) CIA2_TIMER_AB#0) ← (dword) $ffffffff [ ] ( main:2::clock_start:14 [ ] ) always clobbers reg byte a +Statement [113] *((const byte*) CIA2_TIMER_B_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_START#0|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 [ ] ( main:2::clock_start:14 [ ] ) always clobbers reg byte a +Statement [114] *((const byte*) CIA2_TIMER_A_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_START#0 [ ] ( main:2::clock_start:14 [ ] ) always clobbers reg byte a +Statement [122] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#3 ] ( main:2::bitmap_clear:7::memset:117 [ memset::num#2 memset::str#3 memset::c#3 ] main:2::bitmap_clear:7::memset:119 [ memset::num#2 memset::str#3 memset::c#3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ memset::c#3 ] +Statement [123] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#3 memset::end#0 ] ( main:2::bitmap_clear:7::memset:117 [ memset::str#3 memset::c#3 memset::end#0 ] main:2::bitmap_clear:7::memset:119 [ memset::str#3 memset::c#3 memset::end#0 ] ) always clobbers reg byte a +Statement [124] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 [ memset::c#3 memset::end#0 memset::dst#3 ] ( main:2::bitmap_clear:7::memset:117 [ memset::c#3 memset::end#0 memset::dst#3 ] main:2::bitmap_clear:7::memset:119 [ memset::c#3 memset::end#0 memset::dst#3 ] ) always clobbers reg byte a +Statement [126] *((byte*) memset::dst#2) ← (byte) memset::c#3 [ memset::c#3 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:117 [ memset::c#3 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:119 [ memset::c#3 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:45 [ memset::c#3 ] +Statement [128] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 [ memset::c#3 memset::end#0 memset::dst#1 ] ( main:2::bitmap_clear:7::memset:117 [ memset::c#3 memset::end#0 memset::dst#1 ] main:2::bitmap_clear:7::memset:119 [ memset::c#3 memset::end#0 memset::dst#1 ] ) always clobbers reg byte a +Statement [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ bitmap_init::y#2 bitmap_init::y#1 ] +Statement [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [13] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [25] (dword) clock::return#2 ← (dword) clock::return#0 [ clock::return#2 ] ( main:2 [ clock::return#2 ] ) always clobbers reg byte a +Statement [26] (dword~) main::$12 ← (dword) clock::return#2 [ main::$12 ] ( main:2 [ main::$12 ] ) always clobbers reg byte a +Statement [27] (dword) main::cyclecount#0 ← (dword~) main::$12 - (const dword) CLOCKS_PER_INIT#0 [ main::cyclecount#0 ] ( main:2 [ main::cyclecount#0 ] ) always clobbers reg byte a +Statement [28] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 [ print_dword_at::dw#0 ] ( main:2 [ print_dword_at::dw#0 ] ) always clobbers reg byte a +Statement [31] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 [ print_dword_at::dw#0 print_word_at::w#0 ] ( main:2::print_dword_at:29 [ print_dword_at::dw#0 print_word_at::w#0 ] ) always clobbers reg byte a +Statement [33] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 [ print_word_at::w#1 ] ( main:2::print_dword_at:29 [ print_word_at::w#1 ] ) always clobbers reg byte a +Statement [37] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ( main:2::print_dword_at:29::print_word_at:32 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] main:2::print_dword_at:29::print_word_at:34 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 ] ) always clobbers reg byte a +Statement [38] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ( main:2::print_dword_at:29::print_word_at:32 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] main:2::print_dword_at:29::print_word_at:34 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#0 print_byte_at::at#0 ] ) always clobbers reg byte a +Statement [40] (byte) print_byte_at::b#1 ← < (word) print_word_at::w#2 [ print_word_at::at#2 print_byte_at::b#1 ] ( main:2::print_dword_at:29::print_word_at:32 [ print_dword_at::dw#0 print_word_at::at#2 print_byte_at::b#1 ] main:2::print_dword_at:29::print_word_at:34 [ print_word_at::at#2 print_byte_at::b#1 ] ) always clobbers reg byte a +Statement [41] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 [ print_byte_at::b#1 print_byte_at::at#1 ] ( main:2::print_dword_at:29::print_word_at:32 [ print_dword_at::dw#0 print_byte_at::b#1 print_byte_at::at#1 ] main:2::print_dword_at:29::print_word_at:34 [ print_byte_at::b#1 print_byte_at::at#1 ] ) always clobbers reg byte a +Statement [45] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ( main:2::print_dword_at:29::print_word_at:32::print_byte_at:39 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:39 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:29::print_word_at:32::print_byte_at:42 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:42 [ print_byte_at::b#2 print_byte_at::at#2 print_byte_at::$0 ] ) always clobbers reg byte a +Statement [47] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( main:2::print_dword_at:29::print_word_at:32::print_byte_at:39 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:39 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:29::print_word_at:32::print_byte_at:42 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:42 [ print_byte_at::b#2 print_byte_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ) always clobbers reg byte a +Statement [49] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f [ print_byte_at::at#2 print_byte_at::$2 ] ( main:2::print_dword_at:29::print_word_at:32::print_byte_at:39 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:39 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:29::print_word_at:32::print_byte_at:42 [ print_dword_at::dw#0 print_byte_at::at#2 print_byte_at::$2 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:42 [ print_byte_at::at#2 print_byte_at::$2 ] ) always clobbers reg byte a +Statement [50] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 [ print_byte_at::$2 print_char_at::at#1 ] ( main:2::print_dword_at:29::print_word_at:32::print_byte_at:39 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:39 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:29::print_word_at:32::print_byte_at:42 [ print_dword_at::dw#0 print_byte_at::$2 print_char_at::at#1 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:42 [ print_byte_at::$2 print_char_at::at#1 ] ) always clobbers reg byte a +Statement [55] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 [ ] ( main:2::print_dword_at:29::print_word_at:32::print_byte_at:39::print_char_at:48 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:39::print_char_at:48 [ print_word_at::w#2 print_word_at::at#2 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:29::print_word_at:32::print_byte_at:42::print_char_at:48 [ print_dword_at::dw#0 print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:42::print_char_at:48 [ print_byte_at::b#2 print_byte_at::at#2 ] main:2::print_dword_at:29::print_word_at:32::print_byte_at:39::print_char_at:52 [ print_dword_at::dw#0 print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:39::print_char_at:52 [ print_word_at::w#2 print_word_at::at#2 ] main:2::print_dword_at:29::print_word_at:32::print_byte_at:42::print_char_at:52 [ print_dword_at::dw#0 ] main:2::print_dword_at:29::print_word_at:34::print_byte_at:42::print_char_at:52 [ ] ) always clobbers reg byte a reg byte y +Statement [57] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB#0) [ clock::return#0 ] ( main:2::clock:24 [ clock::return#0 ] ) always clobbers reg byte a +Statement [60] (signed word~) splinePlot::$6 ← (signed word) splinePlot::p1_x#4 << (byte) 1 [ splinePlot::p2_x#4 splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 ] ( main:2::splinePlot:16 [ splinePlot::p2_x#4 splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 ] main:2::splinePlot:18 [ splinePlot::p2_x#4 splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 ] main:2::splinePlot:20 [ splinePlot::p2_x#4 splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 ] main:2::splinePlot:22 [ splinePlot::p2_x#4 splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 ] ) always clobbers reg byte a +Statement [61] (signed word~) splinePlot::$1 ← (signed word) splinePlot::p2_x#4 - (signed word~) splinePlot::$6 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::$1 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::$1 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::$1 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::$1 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::$1 ] ) always clobbers reg byte a +Statement [62] (signed word) splinePlot::a_x#0 ← (signed word~) splinePlot::$1 + (signed word) splinePlot::p0_x#4 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p1_y#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 ] ) always clobbers reg byte a +Statement [63] (signed word~) splinePlot::$9 ← (signed word) splinePlot::p1_y#4 << (byte) 1 [ splinePlot::p0_x#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p2_y#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 ] ) always clobbers reg byte a +Statement [64] (signed word~) splinePlot::$4 ← (signed word) splinePlot::p2_y#4 - (signed word~) splinePlot::$9 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::$4 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::$4 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::$4 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::$4 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::$4 ] ) always clobbers reg byte a +Statement [65] (signed word) splinePlot::a_y#0 ← (signed word~) splinePlot::$4 + (signed word) splinePlot::p0_y#4 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 ] ) always clobbers reg byte a +Statement [66] (signed word~) splinePlot::$7 ← (signed word) splinePlot::p0_x#4 << (byte) 1 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::$7 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::$7 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::$7 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::$7 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::$6 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::$7 ] ) always clobbers reg byte a +Statement [67] (signed word) splinePlot::b_x#0 ← (signed word~) splinePlot::$6 - (signed word~) splinePlot::$7 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 ] ) always clobbers reg byte a +Statement [68] (signed word~) splinePlot::$10 ← (signed word) splinePlot::p0_y#4 << (byte) 1 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::$10 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::$10 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::$10 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::$10 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::$9 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::$10 ] ) always clobbers reg byte a +Statement [69] (signed word) splinePlot::b_y#0 ← (signed word~) splinePlot::$9 - (signed word~) splinePlot::$10 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 ] ) always clobbers reg byte a +Statement [70] (signed dword~) splinePlot::$12 ← (signed dword)(signed word) splinePlot::a_x#0 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$12 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$12 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$12 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$12 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$12 ] ) always clobbers reg byte a +Statement [71] (signed dword~) splinePlot::$13 ← (signed dword~) splinePlot::$12 << (byte) 8 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$13 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$13 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$13 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$13 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_x#0 splinePlot::b_y#0 splinePlot::$13 ] ) always clobbers reg byte a +Statement [72] (signed dword~) splinePlot::$14 ← (signed dword)(signed word) splinePlot::b_x#0 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$14 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$14 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$14 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$14 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$14 ] ) always clobbers reg byte a +Statement [73] (signed dword~) splinePlot::$15 ← (signed dword~) splinePlot::$14 << (byte) 8 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$15 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$15 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$15 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$15 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$15 ] ) always clobbers reg byte a +Statement [74] (signed dword~) splinePlot::$16 ← (signed dword~) splinePlot::$15 << (byte) 4 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$16 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$16 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$16 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$16 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::$13 splinePlot::$16 ] ) always clobbers reg byte a +Statement [75] (signed dword) splinePlot::i_x#0 ← (signed dword~) splinePlot::$13 + (signed dword~) splinePlot::$16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 ] ) always clobbers reg byte a +Statement [76] (signed dword~) splinePlot::$18 ← (signed dword)(signed word) splinePlot::a_y#0 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$18 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$18 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$18 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$18 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$18 ] ) always clobbers reg byte a +Statement [77] (signed dword~) splinePlot::$19 ← (signed dword~) splinePlot::$18 << (byte) 8 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$19 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$19 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$19 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$19 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::b_y#0 splinePlot::i_x#0 splinePlot::$19 ] ) always clobbers reg byte a +Statement [78] (signed dword~) splinePlot::$20 ← (signed dword)(signed word) splinePlot::b_y#0 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$20 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$20 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$20 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$20 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$20 ] ) always clobbers reg byte a +Statement [79] (signed dword~) splinePlot::$21 ← (signed dword~) splinePlot::$20 << (byte) 8 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$21 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$21 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$21 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$21 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$21 ] ) always clobbers reg byte a +Statement [80] (signed dword~) splinePlot::$22 ← (signed dword~) splinePlot::$21 << (byte) 4 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$22 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$22 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$22 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$22 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::$19 splinePlot::$22 ] ) always clobbers reg byte a +Statement [81] (signed dword) splinePlot::i_y#0 ← (signed dword~) splinePlot::$19 + (signed dword~) splinePlot::$22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_x#0 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 ] ) always clobbers reg byte a +Statement [82] (signed dword~) splinePlot::$24 ← (signed dword)(signed word) splinePlot::a_x#0 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$24 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$24 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$24 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$24 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$24 ] ) always clobbers reg byte a +Statement [83] (signed dword~) splinePlot::$25 ← (signed dword~) splinePlot::$24 << (byte) 8 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$25 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$25 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$25 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$25 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::$25 ] ) always clobbers reg byte a +Statement [84] (signed dword) splinePlot::j_x#0 ← (signed dword~) splinePlot::$25 << (byte) 1 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::a_y#0 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 ] ) always clobbers reg byte a +Statement [85] (signed dword~) splinePlot::$27 ← (signed dword)(signed word) splinePlot::a_y#0 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$27 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$27 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$27 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$27 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$27 ] ) always clobbers reg byte a +Statement [86] (signed dword~) splinePlot::$28 ← (signed dword~) splinePlot::$27 << (byte) 8 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$28 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$28 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$28 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$28 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::$28 ] ) always clobbers reg byte a +Statement [87] (signed dword) splinePlot::j_y#0 ← (signed dword~) splinePlot::$28 << (byte) 1 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 ] ( main:2::splinePlot:16 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 ] main:2::splinePlot:18 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 ] main:2::splinePlot:20 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 ] main:2::splinePlot:22 [ splinePlot::p0_x#4 splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 ] ) always clobbers reg byte a +Statement [88] (signed dword~) splinePlot::$30 ← (signed dword)(signed word) splinePlot::p0_x#4 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::$30 ] ( main:2::splinePlot:16 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::$30 ] main:2::splinePlot:18 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::$30 ] main:2::splinePlot:20 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::$30 ] main:2::splinePlot:22 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::$30 ] ) always clobbers reg byte a +Statement [89] (signed dword) splinePlot::p_x#0 ← (signed dword~) splinePlot::$30 << (byte) $10 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 ] ( main:2::splinePlot:16 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 ] main:2::splinePlot:18 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 ] main:2::splinePlot:20 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 ] main:2::splinePlot:22 [ splinePlot::p0_y#4 splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 ] ) always clobbers reg byte a +Statement [90] (signed dword~) splinePlot::$32 ← (signed dword)(signed word) splinePlot::p0_y#4 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::$32 ] ( main:2::splinePlot:16 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::$32 ] main:2::splinePlot:18 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::$32 ] main:2::splinePlot:20 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::$32 ] main:2::splinePlot:22 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::$32 ] ) always clobbers reg byte a +Statement [91] (signed dword) splinePlot::p_y#0 ← (signed dword~) splinePlot::$32 << (byte) $10 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::p_y#0 ] ( main:2::splinePlot:16 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::p_y#0 ] main:2::splinePlot:18 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::p_y#0 ] main:2::splinePlot:20 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::p_y#0 ] main:2::splinePlot:22 [ splinePlot::i_x#0 splinePlot::i_y#0 splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#0 splinePlot::p_y#0 ] ) always clobbers reg byte a +Statement [93] (word) bitmap_plot::x#0 ← > (signed dword) splinePlot::p_x#2 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 ] ( main:2::splinePlot:16 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 ] main:2::splinePlot:18 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 ] main:2::splinePlot:20 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 ] main:2::splinePlot:22 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 ] ) always clobbers reg byte a +Statement [94] (word~) splinePlot::$35 ← > (signed dword) splinePlot::p_y#2 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 splinePlot::$35 ] ( main:2::splinePlot:16 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 splinePlot::$35 ] main:2::splinePlot:18 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 splinePlot::$35 ] main:2::splinePlot:20 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 splinePlot::$35 ] main:2::splinePlot:22 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 splinePlot::$35 ] ) always clobbers reg byte a +Statement [95] (byte) bitmap_plot::y#0 ← < (word~) splinePlot::$35 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::y#0 ] ( main:2::splinePlot:16 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::y#0 ] main:2::splinePlot:18 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::y#0 ] main:2::splinePlot:20 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::y#0 ] main:2::splinePlot:22 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::y#0 ] ) always clobbers reg byte a +Statement [97] (signed dword) splinePlot::p_x#1 ← (signed dword) splinePlot::p_x#2 + (signed dword) splinePlot::i_x#2 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 ] ( main:2::splinePlot:16 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 ] main:2::splinePlot:18 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 ] main:2::splinePlot:20 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 ] main:2::splinePlot:22 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 ] ) always clobbers reg byte a +Statement [98] (signed dword) splinePlot::p_y#1 ← (signed dword) splinePlot::p_y#2 + (signed dword) splinePlot::i_y#2 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 ] ( main:2::splinePlot:16 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 ] main:2::splinePlot:18 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 ] main:2::splinePlot:20 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 ] main:2::splinePlot:22 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 ] ) always clobbers reg byte a +Statement [99] (signed dword) splinePlot::i_x#1 ← (signed dword) splinePlot::i_x#2 + (signed dword) splinePlot::j_x#0 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 ] ( main:2::splinePlot:16 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 ] main:2::splinePlot:18 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 ] main:2::splinePlot:20 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 ] main:2::splinePlot:22 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::i_y#2 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 ] ) always clobbers reg byte a +Statement [100] (signed dword) splinePlot::i_y#1 ← (signed dword) splinePlot::i_y#2 + (signed dword) splinePlot::j_y#0 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 splinePlot::i_y#1 ] ( main:2::splinePlot:16 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 splinePlot::i_y#1 ] main:2::splinePlot:18 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 splinePlot::i_y#1 ] main:2::splinePlot:20 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 splinePlot::i_y#1 ] main:2::splinePlot:22 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::n#2 splinePlot::p_x#1 splinePlot::p_y#1 splinePlot::i_x#1 splinePlot::i_y#1 ] ) always clobbers reg byte a +Statement [104] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( main:2::splinePlot:16::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#0 ] main:2::splinePlot:18::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#0 ] main:2::splinePlot:20::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#0 ] main:2::splinePlot:22::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#0 ] ) always clobbers reg byte a +Statement [105] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:2::splinePlot:16::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::splinePlot:18::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::splinePlot:20::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] main:2::splinePlot:22::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a +Statement [106] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::splinePlot:16::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] main:2::splinePlot:18::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] main:2::splinePlot:20::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] main:2::splinePlot:22::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a +Statement [107] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::splinePlot:16::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::splinePlot:18::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::splinePlot:20::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] main:2::splinePlot:22::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a +Statement [108] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::splinePlot:16::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 ] main:2::splinePlot:18::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 ] main:2::splinePlot:20::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 ] main:2::splinePlot:22::bitmap_plot:96 [ splinePlot::j_x#0 splinePlot::j_y#0 splinePlot::p_x#2 splinePlot::p_y#2 splinePlot::i_x#2 splinePlot::i_y#2 splinePlot::n#2 ] ) always clobbers reg byte a reg byte y +Statement [110] *((const byte*) CIA2_TIMER_A_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_CONTINUOUS#0 [ ] ( main:2::clock_start:14 [ ] ) always clobbers reg byte a +Statement [111] *((const byte*) CIA2_TIMER_B_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 [ ] ( main:2::clock_start:14 [ ] ) always clobbers reg byte a +Statement [112] *((const dword*) CIA2_TIMER_AB#0) ← (dword) $ffffffff [ ] ( main:2::clock_start:14 [ ] ) always clobbers reg byte a +Statement [113] *((const byte*) CIA2_TIMER_B_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_START#0|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 [ ] ( main:2::clock_start:14 [ ] ) always clobbers reg byte a +Statement [114] *((const byte*) CIA2_TIMER_A_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_START#0 [ ] ( main:2::clock_start:14 [ ] ) always clobbers reg byte a +Statement [122] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#3 ] ( main:2::bitmap_clear:7::memset:117 [ memset::num#2 memset::str#3 memset::c#3 ] main:2::bitmap_clear:7::memset:119 [ memset::num#2 memset::str#3 memset::c#3 ] ) always clobbers reg byte a +Statement [123] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#3 memset::end#0 ] ( main:2::bitmap_clear:7::memset:117 [ memset::str#3 memset::c#3 memset::end#0 ] main:2::bitmap_clear:7::memset:119 [ memset::str#3 memset::c#3 memset::end#0 ] ) always clobbers reg byte a +Statement [124] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 [ memset::c#3 memset::end#0 memset::dst#3 ] ( main:2::bitmap_clear:7::memset:117 [ memset::c#3 memset::end#0 memset::dst#3 ] main:2::bitmap_clear:7::memset:119 [ memset::c#3 memset::end#0 memset::dst#3 ] ) always clobbers reg byte a +Statement [126] *((byte*) memset::dst#2) ← (byte) memset::c#3 [ memset::c#3 memset::end#0 memset::dst#2 ] ( main:2::bitmap_clear:7::memset:117 [ memset::c#3 memset::end#0 memset::dst#2 ] main:2::bitmap_clear:7::memset:119 [ memset::c#3 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y +Statement [128] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 [ memset::c#3 memset::end#0 memset::dst#1 ] ( main:2::bitmap_clear:7::memset:117 [ memset::c#3 memset::end#0 memset::dst#1 ] main:2::bitmap_clear:7::memset:119 [ memset::c#3 memset::end#0 memset::dst#1 ] ) always clobbers reg byte a +Statement [140] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a +Statement [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:5 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Potential registers zp ZP_WORD:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] : zp ZP_WORD:2 , +Potential registers zp ZP_WORD:4 [ print_word_at::at#2 ] : zp ZP_WORD:4 , +Potential registers zp ZP_BYTE:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] : zp ZP_BYTE:6 , reg byte x , +Potential registers zp ZP_WORD:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] : zp ZP_WORD:7 , +Potential registers zp ZP_BYTE:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] : zp ZP_BYTE:9 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] : zp ZP_WORD:10 , +Potential registers zp ZP_WORD:12 [ splinePlot::p1_x#4 ] : zp ZP_WORD:12 , +Potential registers zp ZP_WORD:14 [ splinePlot::p2_x#4 ] : zp ZP_WORD:14 , +Potential registers zp ZP_WORD:16 [ splinePlot::p0_x#4 ] : zp ZP_WORD:16 , +Potential registers zp ZP_WORD:18 [ splinePlot::p1_y#4 ] : zp ZP_WORD:18 , +Potential registers zp ZP_WORD:20 [ splinePlot::p2_y#4 ] : zp ZP_WORD:20 , +Potential registers zp ZP_WORD:22 [ splinePlot::p0_y#4 ] : zp ZP_WORD:22 , +Potential registers zp ZP_DWORD:24 [ splinePlot::p_x#2 splinePlot::p_x#0 splinePlot::p_x#1 ] : zp ZP_DWORD:24 , +Potential registers zp ZP_DWORD:28 [ splinePlot::p_y#2 splinePlot::p_y#0 splinePlot::p_y#1 ] : zp ZP_DWORD:28 , +Potential registers zp ZP_DWORD:32 [ splinePlot::i_x#2 splinePlot::i_x#0 splinePlot::i_x#1 ] : zp ZP_DWORD:32 , +Potential registers zp ZP_DWORD:36 [ splinePlot::i_y#2 splinePlot::i_y#0 splinePlot::i_y#1 ] : zp ZP_DWORD:36 , +Potential registers zp ZP_BYTE:40 [ splinePlot::n#2 splinePlot::n#1 ] : zp ZP_BYTE:40 , reg byte x , +Potential registers zp ZP_WORD:41 [ memset::num#2 ] : zp ZP_WORD:41 , +Potential registers zp ZP_WORD:43 [ memset::str#3 ] : zp ZP_WORD:43 , +Potential registers zp ZP_BYTE:45 [ memset::c#3 ] : zp ZP_BYTE:45 , reg byte x , +Potential registers zp ZP_WORD:46 [ memset::dst#2 memset::dst#3 memset::dst#1 ] : zp ZP_WORD:46 , +Potential registers zp ZP_BYTE:48 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp ZP_BYTE:48 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:49 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp ZP_BYTE:49 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:50 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp ZP_BYTE:50 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:51 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp ZP_WORD:51 , +Potential registers zp ZP_DWORD:53 [ clock::return#2 ] : zp ZP_DWORD:53 , +Potential registers zp ZP_DWORD:57 [ main::$12 ] : zp ZP_DWORD:57 , +Potential registers zp ZP_DWORD:61 [ main::cyclecount#0 ] : zp ZP_DWORD:61 , +Potential registers zp ZP_DWORD:65 [ print_dword_at::dw#0 ] : zp ZP_DWORD:65 , +Potential registers zp ZP_BYTE:69 [ print_byte_at::$0 ] : zp ZP_BYTE:69 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:70 [ print_byte_at::$2 ] : zp ZP_BYTE:70 , reg byte x , reg byte y , +Potential registers zp ZP_DWORD:71 [ clock::return#0 ] : zp ZP_DWORD:71 , +Potential registers zp ZP_WORD:75 [ splinePlot::$6 ] : zp ZP_WORD:75 , +Potential registers zp ZP_WORD:77 [ splinePlot::$1 ] : zp ZP_WORD:77 , +Potential registers zp ZP_WORD:79 [ splinePlot::a_x#0 ] : zp ZP_WORD:79 , +Potential registers zp ZP_WORD:81 [ splinePlot::$9 ] : zp ZP_WORD:81 , +Potential registers zp ZP_WORD:83 [ splinePlot::$4 ] : zp ZP_WORD:83 , +Potential registers zp ZP_WORD:85 [ splinePlot::a_y#0 ] : zp ZP_WORD:85 , +Potential registers zp ZP_WORD:87 [ splinePlot::$7 ] : zp ZP_WORD:87 , +Potential registers zp ZP_WORD:89 [ splinePlot::b_x#0 ] : zp ZP_WORD:89 , +Potential registers zp ZP_WORD:91 [ splinePlot::$10 ] : zp ZP_WORD:91 , +Potential registers zp ZP_WORD:93 [ splinePlot::b_y#0 ] : zp ZP_WORD:93 , +Potential registers zp ZP_DWORD:95 [ splinePlot::$12 ] : zp ZP_DWORD:95 , +Potential registers zp ZP_DWORD:99 [ splinePlot::$13 ] : zp ZP_DWORD:99 , +Potential registers zp ZP_DWORD:103 [ splinePlot::$14 ] : zp ZP_DWORD:103 , +Potential registers zp ZP_DWORD:107 [ splinePlot::$15 ] : zp ZP_DWORD:107 , +Potential registers zp ZP_DWORD:111 [ splinePlot::$16 ] : zp ZP_DWORD:111 , +Potential registers zp ZP_DWORD:115 [ splinePlot::$18 ] : zp ZP_DWORD:115 , +Potential registers zp ZP_DWORD:119 [ splinePlot::$19 ] : zp ZP_DWORD:119 , +Potential registers zp ZP_DWORD:123 [ splinePlot::$20 ] : zp ZP_DWORD:123 , +Potential registers zp ZP_DWORD:127 [ splinePlot::$21 ] : zp ZP_DWORD:127 , +Potential registers zp ZP_DWORD:131 [ splinePlot::$22 ] : zp ZP_DWORD:131 , +Potential registers zp ZP_DWORD:135 [ splinePlot::$24 ] : zp ZP_DWORD:135 , +Potential registers zp ZP_DWORD:139 [ splinePlot::$25 ] : zp ZP_DWORD:139 , +Potential registers zp ZP_DWORD:143 [ splinePlot::j_x#0 ] : zp ZP_DWORD:143 , +Potential registers zp ZP_DWORD:147 [ splinePlot::$27 ] : zp ZP_DWORD:147 , +Potential registers zp ZP_DWORD:151 [ splinePlot::$28 ] : zp ZP_DWORD:151 , +Potential registers zp ZP_DWORD:155 [ splinePlot::j_y#0 ] : zp ZP_DWORD:155 , +Potential registers zp ZP_DWORD:159 [ splinePlot::$30 ] : zp ZP_DWORD:159 , +Potential registers zp ZP_DWORD:163 [ splinePlot::$32 ] : zp ZP_DWORD:163 , +Potential registers zp ZP_WORD:167 [ bitmap_plot::x#0 ] : zp ZP_WORD:167 , +Potential registers zp ZP_WORD:169 [ splinePlot::$35 ] : zp ZP_WORD:169 , +Potential registers zp ZP_BYTE:171 [ bitmap_plot::y#0 ] : zp ZP_BYTE:171 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:172 [ bitmap_plot::plotter#0 ] : zp ZP_WORD:172 , +Potential registers zp ZP_WORD:174 [ bitmap_plot::$1 ] : zp ZP_WORD:174 , +Potential registers zp ZP_WORD:176 [ bitmap_plot::plotter#1 ] : zp ZP_WORD:176 , +Potential registers zp ZP_BYTE:178 [ bitmap_plot::$2 ] : zp ZP_BYTE:178 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:179 [ memset::end#0 ] : zp ZP_WORD:179 , +Potential registers zp ZP_BYTE:181 [ bitmap_init::$7 ] : zp ZP_BYTE:181 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:182 [ bitmap_init::$4 ] : zp ZP_BYTE:182 , reg byte a , reg byte x , reg byte y , reg byte alu , +Potential registers zp ZP_BYTE:183 [ bitmap_init::$5 ] : zp ZP_BYTE:183 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:184 [ bitmap_init::$6 ] : zp ZP_BYTE:184 , reg byte a , reg byte x , reg byte y , + +REGISTER UPLIFT SCOPES +Uplift Scope [bitmap_init] 39.88: zp ZP_WORD:51 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp ZP_BYTE:48 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22: zp ZP_BYTE:49 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp ZP_BYTE:50 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp ZP_BYTE:182 [ bitmap_init::$4 ] 22: zp ZP_BYTE:183 [ bitmap_init::$5 ] 22: zp ZP_BYTE:184 [ bitmap_init::$6 ] 5.5: zp ZP_BYTE:181 [ bitmap_init::$7 ] +Uplift Scope [splinePlot] 22: zp ZP_WORD:169 [ splinePlot::$35 ] 18.94: zp ZP_BYTE:40 [ splinePlot::n#2 splinePlot::n#1 ] 14.23: zp ZP_DWORD:28 [ splinePlot::p_y#2 splinePlot::p_y#0 splinePlot::p_y#1 ] 12.07: zp ZP_DWORD:36 [ splinePlot::i_y#2 splinePlot::i_y#0 splinePlot::i_y#1 ] 12: zp ZP_DWORD:24 [ splinePlot::p_x#2 splinePlot::p_x#0 splinePlot::p_x#1 ] 10.74: zp ZP_DWORD:32 [ splinePlot::i_x#2 splinePlot::i_x#0 splinePlot::i_x#1 ] 4: zp ZP_WORD:77 [ splinePlot::$1 ] 4: zp ZP_WORD:83 [ splinePlot::$4 ] 4: zp ZP_WORD:87 [ splinePlot::$7 ] 4: zp ZP_WORD:91 [ splinePlot::$10 ] 4: zp ZP_DWORD:95 [ splinePlot::$12 ] 4: zp ZP_DWORD:103 [ splinePlot::$14 ] 4: zp ZP_DWORD:107 [ splinePlot::$15 ] 4: zp ZP_DWORD:111 [ splinePlot::$16 ] 4: zp ZP_DWORD:115 [ splinePlot::$18 ] 4: zp ZP_DWORD:123 [ splinePlot::$20 ] 4: zp ZP_DWORD:127 [ splinePlot::$21 ] 4: zp ZP_DWORD:131 [ splinePlot::$22 ] 4: zp ZP_DWORD:135 [ splinePlot::$24 ] 4: zp ZP_DWORD:139 [ splinePlot::$25 ] 4: zp ZP_DWORD:147 [ splinePlot::$27 ] 4: zp ZP_DWORD:151 [ splinePlot::$28 ] 4: zp ZP_DWORD:159 [ splinePlot::$30 ] 4: zp ZP_DWORD:163 [ splinePlot::$32 ] 2: zp ZP_WORD:12 [ splinePlot::p1_x#4 ] 1: zp ZP_WORD:14 [ splinePlot::p2_x#4 ] 1: zp ZP_WORD:81 [ splinePlot::$9 ] 1: zp ZP_DWORD:99 [ splinePlot::$13 ] 1: zp ZP_DWORD:119 [ splinePlot::$19 ] 0.86: zp ZP_WORD:75 [ splinePlot::$6 ] 0.81: zp ZP_DWORD:155 [ splinePlot::j_y#0 ] 0.68: zp ZP_DWORD:143 [ splinePlot::j_x#0 ] 0.5: zp ZP_WORD:18 [ splinePlot::p1_y#4 ] 0.4: zp ZP_WORD:20 [ splinePlot::p2_y#4 ] 0.4: zp ZP_WORD:89 [ splinePlot::b_x#0 ] 0.22: zp ZP_WORD:93 [ splinePlot::b_y#0 ] 0.14: zp ZP_WORD:16 [ splinePlot::p0_x#4 ] 0.13: zp ZP_WORD:22 [ splinePlot::p0_y#4 ] 0.1: zp ZP_WORD:79 [ splinePlot::a_x#0 ] 0.1: zp ZP_WORD:85 [ splinePlot::a_y#0 ] +Uplift Scope [memset] 38: zp ZP_WORD:46 [ memset::dst#2 memset::dst#3 memset::dst#1 ] 2.17: zp ZP_WORD:179 [ memset::end#0 ] 2: zp ZP_WORD:41 [ memset::num#2 ] 1.38: zp ZP_BYTE:45 [ memset::c#3 ] 0: zp ZP_WORD:43 [ memset::str#3 ] +Uplift Scope [bitmap_plot] 15: zp ZP_BYTE:171 [ bitmap_plot::y#0 ] 4: zp ZP_WORD:174 [ bitmap_plot::$1 ] 4: zp ZP_BYTE:178 [ bitmap_plot::$2 ] 3: zp ZP_WORD:176 [ bitmap_plot::plotter#1 ] 2.5: zp ZP_WORD:167 [ bitmap_plot::x#0 ] 1: zp ZP_WORD:172 [ bitmap_plot::plotter#0 ] +Uplift Scope [print_char_at] 12: zp ZP_BYTE:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] 12: zp ZP_WORD:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] +Uplift Scope [print_byte_at] 9.33: zp ZP_WORD:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] 5.6: zp ZP_BYTE:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] 4: zp ZP_BYTE:69 [ print_byte_at::$0 ] 2: zp ZP_BYTE:70 [ print_byte_at::$2 ] +Uplift Scope [print_word_at] 10: zp ZP_WORD:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] 0.8: zp ZP_WORD:4 [ print_word_at::at#2 ] +Uplift Scope [main] 4: zp ZP_DWORD:57 [ main::$12 ] 4: zp ZP_DWORD:61 [ main::cyclecount#0 ] +Uplift Scope [clock] 4: zp ZP_DWORD:53 [ clock::return#2 ] 1.33: zp ZP_DWORD:71 [ clock::return#0 ] +Uplift Scope [print_dword_at] 2: zp ZP_DWORD:65 [ print_dword_at::dw#0 ] +Uplift Scope [clock_start] +Uplift Scope [bitmap_clear] +Uplift Scope [SplineVector16] +Uplift Scope [SplineVector32] +Uplift Scope [] + +Uplifting [bitmap_init] best 6001 combination zp ZP_WORD:51 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:183 [ bitmap_init::$5 ] zp ZP_BYTE:184 [ bitmap_init::$6 ] zp ZP_BYTE:181 [ bitmap_init::$7 ] +Limited combination testing to 100 combinations of 15360 possible. +Uplifting [splinePlot] best 5911 combination zp ZP_WORD:169 [ splinePlot::$35 ] reg byte x [ splinePlot::n#2 splinePlot::n#1 ] zp ZP_DWORD:28 [ splinePlot::p_y#2 splinePlot::p_y#0 splinePlot::p_y#1 ] zp ZP_DWORD:36 [ splinePlot::i_y#2 splinePlot::i_y#0 splinePlot::i_y#1 ] zp ZP_DWORD:24 [ splinePlot::p_x#2 splinePlot::p_x#0 splinePlot::p_x#1 ] zp ZP_DWORD:32 [ splinePlot::i_x#2 splinePlot::i_x#0 splinePlot::i_x#1 ] zp ZP_WORD:77 [ splinePlot::$1 ] zp ZP_WORD:83 [ splinePlot::$4 ] zp ZP_WORD:87 [ splinePlot::$7 ] zp ZP_WORD:91 [ splinePlot::$10 ] zp ZP_DWORD:95 [ splinePlot::$12 ] zp ZP_DWORD:103 [ splinePlot::$14 ] zp ZP_DWORD:107 [ splinePlot::$15 ] zp ZP_DWORD:111 [ splinePlot::$16 ] zp ZP_DWORD:115 [ splinePlot::$18 ] zp ZP_DWORD:123 [ splinePlot::$20 ] zp ZP_DWORD:127 [ splinePlot::$21 ] zp ZP_DWORD:131 [ splinePlot::$22 ] zp ZP_DWORD:135 [ splinePlot::$24 ] zp ZP_DWORD:139 [ splinePlot::$25 ] zp ZP_DWORD:147 [ splinePlot::$27 ] zp ZP_DWORD:151 [ splinePlot::$28 ] zp ZP_DWORD:159 [ splinePlot::$30 ] zp ZP_DWORD:163 [ splinePlot::$32 ] zp ZP_WORD:12 [ splinePlot::p1_x#4 ] zp ZP_WORD:14 [ splinePlot::p2_x#4 ] zp ZP_WORD:81 [ splinePlot::$9 ] zp ZP_DWORD:99 [ splinePlot::$13 ] zp ZP_DWORD:119 [ splinePlot::$19 ] zp ZP_WORD:75 [ splinePlot::$6 ] zp ZP_DWORD:155 [ splinePlot::j_y#0 ] zp ZP_DWORD:143 [ splinePlot::j_x#0 ] zp ZP_WORD:18 [ splinePlot::p1_y#4 ] zp ZP_WORD:20 [ splinePlot::p2_y#4 ] zp ZP_WORD:89 [ splinePlot::b_x#0 ] zp ZP_WORD:93 [ splinePlot::b_y#0 ] zp ZP_WORD:16 [ splinePlot::p0_x#4 ] zp ZP_WORD:22 [ splinePlot::p0_y#4 ] zp ZP_WORD:79 [ splinePlot::a_x#0 ] zp ZP_WORD:85 [ splinePlot::a_y#0 ] +Uplifting [memset] best 5895 combination zp ZP_WORD:46 [ memset::dst#2 memset::dst#3 memset::dst#1 ] zp ZP_WORD:179 [ memset::end#0 ] zp ZP_WORD:41 [ memset::num#2 ] reg byte x [ memset::c#3 ] zp ZP_WORD:43 [ memset::str#3 ] +Uplifting [bitmap_plot] best 5860 combination reg byte a [ bitmap_plot::y#0 ] zp ZP_WORD:174 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:176 [ bitmap_plot::plotter#1 ] zp ZP_WORD:167 [ bitmap_plot::x#0 ] zp ZP_WORD:172 [ bitmap_plot::plotter#0 ] +Uplifting [print_char_at] best 5853 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp ZP_WORD:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] +Uplifting [print_byte_at] best 5845 combination zp ZP_WORD:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] zp ZP_BYTE:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] reg byte a [ print_byte_at::$0 ] reg byte y [ print_byte_at::$2 ] +Uplifting [print_word_at] best 5845 combination zp ZP_WORD:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] zp ZP_WORD:4 [ print_word_at::at#2 ] +Uplifting [main] best 5845 combination zp ZP_DWORD:57 [ main::$12 ] zp ZP_DWORD:61 [ main::cyclecount#0 ] +Uplifting [clock] best 5845 combination zp ZP_DWORD:53 [ clock::return#2 ] zp ZP_DWORD:71 [ clock::return#0 ] +Uplifting [print_dword_at] best 5845 combination zp ZP_DWORD:65 [ print_dword_at::dw#0 ] +Uplifting [clock_start] best 5845 combination +Uplifting [bitmap_clear] best 5845 combination +Uplifting [SplineVector16] best 5845 combination +Uplifting [SplineVector32] best 5845 combination +Uplifting [] best 5845 combination +Attempting to uplift remaining variables inzp ZP_BYTE:183 [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 5785 combination reg byte a [ bitmap_init::$5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:184 [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 5725 combination reg byte a [ bitmap_init::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] +Uplifting [print_byte_at] best 5725 combination zp ZP_BYTE:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:181 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 5725 combination zp ZP_BYTE:181 [ bitmap_init::$7 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:4 [ print_word_at::at#2 ] ] with [ zp ZP_WORD:7 [ print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] ] - score: 2 +Coalescing zero page register with common assignment [ zp ZP_WORD:12 [ splinePlot::p1_x#4 ] ] with [ zp ZP_WORD:75 [ splinePlot::$6 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ splinePlot::p2_x#4 ] ] with [ zp ZP_WORD:77 [ splinePlot::$1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ splinePlot::p1_y#4 ] ] with [ zp ZP_WORD:81 [ splinePlot::$9 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:20 [ splinePlot::p2_y#4 ] ] with [ zp ZP_WORD:83 [ splinePlot::$4 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:24 [ splinePlot::p_x#2 splinePlot::p_x#0 splinePlot::p_x#1 ] ] with [ zp ZP_DWORD:159 [ splinePlot::$30 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:28 [ splinePlot::p_y#2 splinePlot::p_y#0 splinePlot::p_y#1 ] ] with [ zp ZP_DWORD:163 [ splinePlot::$32 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:32 [ splinePlot::i_x#2 splinePlot::i_x#0 splinePlot::i_x#1 ] ] with [ zp ZP_DWORD:99 [ splinePlot::$13 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:36 [ splinePlot::i_y#2 splinePlot::i_y#0 splinePlot::i_y#1 ] ] with [ zp ZP_DWORD:119 [ splinePlot::$19 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:41 [ memset::num#2 ] ] with [ zp ZP_WORD:179 [ memset::end#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:43 [ memset::str#3 ] ] with [ zp ZP_WORD:46 [ memset::dst#2 memset::dst#3 memset::dst#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:53 [ clock::return#2 ] ] with [ zp ZP_DWORD:57 [ main::$12 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:53 [ clock::return#2 main::$12 ] ] with [ zp ZP_DWORD:71 [ clock::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:61 [ main::cyclecount#0 ] ] with [ zp ZP_DWORD:65 [ print_dword_at::dw#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:87 [ splinePlot::$7 ] ] with [ zp ZP_WORD:89 [ splinePlot::b_x#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:91 [ splinePlot::$10 ] ] with [ zp ZP_WORD:93 [ splinePlot::b_y#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:103 [ splinePlot::$14 ] ] with [ zp ZP_DWORD:107 [ splinePlot::$15 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:123 [ splinePlot::$20 ] ] with [ zp ZP_DWORD:127 [ splinePlot::$21 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:135 [ splinePlot::$24 ] ] with [ zp ZP_DWORD:139 [ splinePlot::$25 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:147 [ splinePlot::$27 ] ] with [ zp ZP_DWORD:151 [ splinePlot::$28 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:172 [ bitmap_plot::plotter#0 ] ] with [ zp ZP_WORD:176 [ bitmap_plot::plotter#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ splinePlot::p2_x#4 splinePlot::$1 ] ] with [ zp ZP_WORD:79 [ splinePlot::a_x#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:20 [ splinePlot::p2_y#4 splinePlot::$4 ] ] with [ zp ZP_WORD:85 [ splinePlot::a_y#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:32 [ splinePlot::i_x#2 splinePlot::i_x#0 splinePlot::i_x#1 splinePlot::$13 ] ] with [ zp ZP_DWORD:95 [ splinePlot::$12 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:36 [ splinePlot::i_y#2 splinePlot::i_y#0 splinePlot::i_y#1 splinePlot::$19 ] ] with [ zp ZP_DWORD:115 [ splinePlot::$18 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:53 [ clock::return#2 main::$12 clock::return#0 ] ] with [ zp ZP_DWORD:61 [ main::cyclecount#0 print_dword_at::dw#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:103 [ splinePlot::$14 splinePlot::$15 ] ] with [ zp ZP_DWORD:111 [ splinePlot::$16 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:123 [ splinePlot::$20 splinePlot::$21 ] ] with [ zp ZP_DWORD:131 [ splinePlot::$22 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:135 [ splinePlot::$24 splinePlot::$25 ] ] with [ zp ZP_DWORD:143 [ splinePlot::j_x#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:147 [ splinePlot::$27 splinePlot::$28 ] ] with [ zp ZP_DWORD:155 [ splinePlot::j_y#0 ] ] - score: 1 +Allocated (was zp ZP_WORD:10) zp ZP_WORD:7 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] +Allocated (was zp ZP_WORD:12) zp ZP_WORD:9 [ splinePlot::p1_x#4 splinePlot::$6 ] +Allocated (was zp ZP_WORD:14) zp ZP_WORD:11 [ splinePlot::p2_x#4 splinePlot::$1 splinePlot::a_x#0 ] +Allocated (was zp ZP_WORD:16) zp ZP_WORD:13 [ splinePlot::p0_x#4 ] +Allocated (was zp ZP_WORD:18) zp ZP_WORD:15 [ splinePlot::p1_y#4 splinePlot::$9 ] +Allocated (was zp ZP_WORD:20) zp ZP_WORD:17 [ splinePlot::p2_y#4 splinePlot::$4 splinePlot::a_y#0 ] +Allocated (was zp ZP_WORD:22) zp ZP_WORD:19 [ splinePlot::p0_y#4 ] +Allocated (was zp ZP_DWORD:24) zp ZP_DWORD:21 [ splinePlot::p_x#2 splinePlot::p_x#0 splinePlot::p_x#1 splinePlot::$30 ] +Allocated (was zp ZP_DWORD:28) zp ZP_DWORD:25 [ splinePlot::p_y#2 splinePlot::p_y#0 splinePlot::p_y#1 splinePlot::$32 ] +Allocated (was zp ZP_DWORD:32) zp ZP_DWORD:29 [ splinePlot::i_x#2 splinePlot::i_x#0 splinePlot::i_x#1 splinePlot::$13 splinePlot::$12 ] +Allocated (was zp ZP_DWORD:36) zp ZP_DWORD:33 [ splinePlot::i_y#2 splinePlot::i_y#0 splinePlot::i_y#1 splinePlot::$19 splinePlot::$18 ] +Allocated (was zp ZP_WORD:41) zp ZP_WORD:37 [ memset::num#2 memset::end#0 ] +Allocated (was zp ZP_WORD:43) zp ZP_WORD:39 [ memset::str#3 memset::dst#2 memset::dst#3 memset::dst#1 ] +Allocated (was zp ZP_WORD:51) zp ZP_WORD:41 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] +Allocated (was zp ZP_DWORD:53) zp ZP_DWORD:43 [ clock::return#2 main::$12 clock::return#0 main::cyclecount#0 print_dword_at::dw#0 ] +Allocated (was zp ZP_WORD:87) zp ZP_WORD:47 [ splinePlot::$7 splinePlot::b_x#0 ] +Allocated (was zp ZP_WORD:91) zp ZP_WORD:49 [ splinePlot::$10 splinePlot::b_y#0 ] +Allocated (was zp ZP_DWORD:103) zp ZP_DWORD:51 [ splinePlot::$14 splinePlot::$15 splinePlot::$16 ] +Allocated (was zp ZP_DWORD:123) zp ZP_DWORD:55 [ splinePlot::$20 splinePlot::$21 splinePlot::$22 ] +Allocated (was zp ZP_DWORD:135) zp ZP_DWORD:59 [ splinePlot::$24 splinePlot::$25 splinePlot::j_x#0 ] +Allocated (was zp ZP_DWORD:147) zp ZP_DWORD:63 [ splinePlot::$27 splinePlot::$28 splinePlot::j_y#0 ] +Allocated (was zp ZP_WORD:167) zp ZP_WORD:67 [ bitmap_plot::x#0 ] +Allocated (was zp ZP_WORD:169) zp ZP_WORD:69 [ splinePlot::$35 ] +Allocated (was zp ZP_WORD:172) zp ZP_WORD:71 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] +Allocated (was zp ZP_WORD:174) zp ZP_WORD:73 [ bitmap_plot::$1 ] +Allocated (was zp ZP_BYTE:181) zp ZP_BYTE:75 [ bitmap_init::$7 ] + +ASSEMBLER BEFORE OPTIMIZATION + // File Comments +// Quadratic Spline Library for the C64 +// Implements an iterative algorithm using only addition for calculating quadratic splines +// +// A quadratic spline is a curve defined by 3 points: P0, P1 and P2. +// The curve connects P0 to P2 through a smooth curve that moves towards P1, but does usually not touch it. +// +// The general formula for the quadratic spline is as follows: +// A = P2 - 2*P1 + P0 +// B = 2*P1 - 2*P0 +// C = P0 +// P(t) = A*t*t + B*t + C +// for 0 <= t <= 1 +// +// This library implements a iterative algorithm using multiplications in the initialization and only additions for calculating each point on the spline. +// The iterative algorithm is based on the following: +// P(t+Dt) = P(t) + A*Dt*Dt + 2*A*t*Dt + B*Dt +// +// init: +// N = 16 (number of plots) +// Dt = 1/N +// P = C +// I = A*Dt*Dt + B*Dt +// J = 2*A*Dt*Dt +// loop(N times): +// plot(P) +// P = P + I +// I = I + J + // Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(bbegin) +.pc = $80d "Program" + // Global Constants & labels + .label D011 = $d011 + .const VIC_BMM = $20 + .const VIC_DEN = $10 + .const VIC_RSEL = 8 + .label D018 = $d018 + // CIA#2 Port A: Serial bus, RS-232, VIC memory bank + .label CIA2_PORT_A = $dd00 + // CIA #2 Port A data direction register. + .label CIA2_PORT_A_DDR = $dd02 + // CIA #2 Timer A+B Value (32-bit) + .label CIA2_TIMER_AB = $dd04 + // CIA #2 Timer A Control Register + .label CIA2_TIMER_A_CONTROL = $dd0e + // CIA #2 Timer B Control Register + .label CIA2_TIMER_B_CONTROL = $dd0f + // Timer Control - Start/stop timer (0:stop, 1: start) + .const CIA_TIMER_CONTROL_START = 1 + // Timer Control - Time CONTINUOUS/ONE-SHOT (0:CONTINUOUS, 1: ONE-SHOT) + .const CIA_TIMER_CONTROL_CONTINUOUS = 0 + // Timer B Control - Timer counts (00:system cycles, 01: CNT pulses, 10: timer A underflow, 11: time A underflow while CNT is high) + .const CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = $40 + .const WHITE = 1 + // Clock cycles used to start & read the cycle clock by calling clock_start() and clock() once. Can be subtracted when calculating the number of cycles used by a routine. + // To make precise cycle measurements interrupts and the display must be disabled so neither steals any cycles from the code. + .const CLOCKS_PER_INIT = $12 + .label SCREEN = $400 + .label BITMAP_SCREEN = $5c00 + .label BITMAP_GRAPHICS = $6000 + // @begin +bbegin: + // [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 + // @1 +b1: + // [2] call main + // [4] phi from @1 to main [phi:@1->main] +main_from_b1: + jsr main + // [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend + // @end +bend: + // main +main: { + .const p0_x = $32 + .const p0_y = $32 + .const p1a_x = $64 + .const p1a_y = $32 + .const p1b_x = $32 + .const p1b_y = $64 + .const p2_x = $64 + .const p2_y = $64 + .const p3a_x = $96 + .const p3a_y = $64 + .const p3b_x = $64 + .const p3b_y = $96 + .const p4_x = $96 + .const p4_y = $96 + .const vicSelectGfxBank1_toDd001_return = 3^(>BITMAP_SCREEN)/$40 + .const toD0181_return = (>(BITMAP_SCREEN&$3fff)*4)|(>BITMAP_GRAPHICS)/4&$f + .label _12 = $2b + .label cyclecount = $2b + // [5] call bitmap_init + // [130] phi from main to bitmap_init [phi:main->bitmap_init] + bitmap_init_from_main: + jsr bitmap_init + // [6] phi from main to main::@2 [phi:main->main::@2] + b2_from_main: + jmp b2 + // main::@2 + b2: + // [7] call bitmap_clear + // [116] phi from main::@2 to bitmap_clear [phi:main::@2->bitmap_clear] + bitmap_clear_from_b2: + jsr bitmap_clear + jmp vicSelectGfxBank1 + // main::vicSelectGfxBank1 + vicSelectGfxBank1: + // [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 + lda #3 + sta CIA2_PORT_A_DDR + // [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: + jmp vicSelectGfxBank1_toDd001 + // main::vicSelectGfxBank1_toDd001 + vicSelectGfxBank1_toDd001: + jmp vicSelectGfxBank1_b1 + // main::vicSelectGfxBank1_@1 + vicSelectGfxBank1_b1: + // [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + // [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + toD0181_from_vicSelectGfxBank1_b1: + jmp toD0181 + // main::toD0181 + toD0181: + jmp b1 + // main::@1 + b1: + // [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + lda #toD0181_return + sta D018 + // [13] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 -- _deref_pbuc1=vbuc2 + lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 + sta D011 + // [14] call clock_start + jsr clock_start + // [15] phi from main::@1 to main::@3 [phi:main::@1->main::@3] + b3_from_b1: + jmp b3 + // main::@3 + b3: + // [16] call splinePlot + // [59] phi from main::@3 to splinePlot [phi:main::@3->splinePlot] + splinePlot_from_b3: + // [59] phi (signed word) splinePlot::p0_y#4 = (const signed word) main::p0_y#0 [phi:main::@3->splinePlot#0] -- vwsz1=vwsc1 + lda #p0_y + sta splinePlot.p0_y+1 + // [59] phi (signed word) splinePlot::p2_y#4 = (const signed word) main::p2_y#0 [phi:main::@3->splinePlot#1] -- vwsz1=vwsc1 + lda #p2_y + sta splinePlot.p2_y+1 + // [59] phi (signed word) splinePlot::p1_y#4 = (const signed word) main::p1a_y#0 [phi:main::@3->splinePlot#2] -- vwsz1=vwsc1 + lda #p1a_y + sta splinePlot.p1_y+1 + // [59] phi (signed word) splinePlot::p0_x#4 = (const signed word) main::p0_x#0 [phi:main::@3->splinePlot#3] -- vwsz1=vwsc1 + lda #p0_x + sta splinePlot.p0_x+1 + // [59] phi (signed word) splinePlot::p2_x#4 = (const signed word) main::p2_x#0 [phi:main::@3->splinePlot#4] -- vwsz1=vwsc1 + lda #p2_x + sta splinePlot.p2_x+1 + // [59] phi (signed word) splinePlot::p1_x#4 = (const signed word) main::p1a_x#0 [phi:main::@3->splinePlot#5] -- vwsz1=vwsc1 + lda #p1a_x + sta splinePlot.p1_x+1 + jsr splinePlot + // [17] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + b4_from_b3: + jmp b4 + // main::@4 + b4: + // [18] call splinePlot + // [59] phi from main::@4 to splinePlot [phi:main::@4->splinePlot] + splinePlot_from_b4: + // [59] phi (signed word) splinePlot::p0_y#4 = (const signed word) main::p2_y#0 [phi:main::@4->splinePlot#0] -- vwsz1=vwsc1 + lda #p2_y + sta splinePlot.p0_y+1 + // [59] phi (signed word) splinePlot::p2_y#4 = (const signed word) main::p4_y#0 [phi:main::@4->splinePlot#1] -- vwsz1=vwsc1 + lda #p4_y + sta splinePlot.p2_y+1 + // [59] phi (signed word) splinePlot::p1_y#4 = (const signed word) main::p3a_y#0 [phi:main::@4->splinePlot#2] -- vwsz1=vwsc1 + lda #p3a_y + sta splinePlot.p1_y+1 + // [59] phi (signed word) splinePlot::p0_x#4 = (const signed word) main::p2_x#0 [phi:main::@4->splinePlot#3] -- vwsz1=vwsc1 + lda #p2_x + sta splinePlot.p0_x+1 + // [59] phi (signed word) splinePlot::p2_x#4 = (const signed word) main::p4_x#0 [phi:main::@4->splinePlot#4] -- vwsz1=vwsc1 + lda #p4_x + sta splinePlot.p2_x+1 + // [59] phi (signed word) splinePlot::p1_x#4 = (const signed word) main::p3a_x#0 [phi:main::@4->splinePlot#5] -- vwsz1=vwsc1 + lda #p3a_x + sta splinePlot.p1_x+1 + jsr splinePlot + // [19] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + b5_from_b4: + jmp b5 + // main::@5 + b5: + // [20] call splinePlot + // [59] phi from main::@5 to splinePlot [phi:main::@5->splinePlot] + splinePlot_from_b5: + // [59] phi (signed word) splinePlot::p0_y#4 = (const signed word) main::p2_y#0 [phi:main::@5->splinePlot#0] -- vwsz1=vwsc1 + lda #p2_y + sta splinePlot.p0_y+1 + // [59] phi (signed word) splinePlot::p2_y#4 = (const signed word) main::p0_y#0 [phi:main::@5->splinePlot#1] -- vwsz1=vwsc1 + lda #p0_y + sta splinePlot.p2_y+1 + // [59] phi (signed word) splinePlot::p1_y#4 = (const signed word) main::p1b_y#0 [phi:main::@5->splinePlot#2] -- vwsz1=vwsc1 + lda #p1b_y + sta splinePlot.p1_y+1 + // [59] phi (signed word) splinePlot::p0_x#4 = (const signed word) main::p2_x#0 [phi:main::@5->splinePlot#3] -- vwsz1=vwsc1 + lda #p2_x + sta splinePlot.p0_x+1 + // [59] phi (signed word) splinePlot::p2_x#4 = (const signed word) main::p0_x#0 [phi:main::@5->splinePlot#4] -- vwsz1=vwsc1 + lda #p0_x + sta splinePlot.p2_x+1 + // [59] phi (signed word) splinePlot::p1_x#4 = (const signed word) main::p1b_x#0 [phi:main::@5->splinePlot#5] -- vwsz1=vwsc1 + lda #p1b_x + sta splinePlot.p1_x+1 + jsr splinePlot + // [21] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + b6_from_b5: + jmp b6 + // main::@6 + b6: + // [22] call splinePlot + // [59] phi from main::@6 to splinePlot [phi:main::@6->splinePlot] + splinePlot_from_b6: + // [59] phi (signed word) splinePlot::p0_y#4 = (const signed word) main::p4_y#0 [phi:main::@6->splinePlot#0] -- vwsz1=vwsc1 + lda #p4_y + sta splinePlot.p0_y+1 + // [59] phi (signed word) splinePlot::p2_y#4 = (const signed word) main::p2_y#0 [phi:main::@6->splinePlot#1] -- vwsz1=vwsc1 + lda #p2_y + sta splinePlot.p2_y+1 + // [59] phi (signed word) splinePlot::p1_y#4 = (const signed word) main::p3b_y#0 [phi:main::@6->splinePlot#2] -- vwsz1=vwsc1 + lda #p3b_y + sta splinePlot.p1_y+1 + // [59] phi (signed word) splinePlot::p0_x#4 = (const signed word) main::p4_x#0 [phi:main::@6->splinePlot#3] -- vwsz1=vwsc1 + lda #p4_x + sta splinePlot.p0_x+1 + // [59] phi (signed word) splinePlot::p2_x#4 = (const signed word) main::p2_x#0 [phi:main::@6->splinePlot#4] -- vwsz1=vwsc1 + lda #p2_x + sta splinePlot.p2_x+1 + // [59] phi (signed word) splinePlot::p1_x#4 = (const signed word) main::p3b_x#0 [phi:main::@6->splinePlot#5] -- vwsz1=vwsc1 + lda #p3b_x + sta splinePlot.p1_x+1 + jsr splinePlot + // [23] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + b7_from_b6: + jmp b7 + // main::@7 + b7: + // [24] call clock + jsr clock + // [25] (dword) clock::return#2 ← (dword) clock::return#0 + jmp b8 + // main::@8 + b8: + // [26] (dword~) main::$12 ← (dword) clock::return#2 + // [27] (dword) main::cyclecount#0 ← (dword~) main::$12 - (const dword) CLOCKS_PER_INIT#0 -- vduz1=vduz1_minus_vduc1 + lda cyclecount + sec + sbc #CLOCKS_PER_INIT + sta cyclecount+1 + lda cyclecount+2 + sbc #>$10 + sta cyclecount+2 + lda cyclecount+3 + sbc #>CLOCKS_PER_INIT>>$10 + sta cyclecount+3 + // [28] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 + // [29] call print_dword_at + jsr print_dword_at + jmp breturn + // main::@return + breturn: + // [30] return + rts +} + // print_dword_at +// Print a dword as HEX at a specific position +// print_dword_at(dword zeropage($2b) dw) +print_dword_at: { + .label dw = $2b + // [31] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 -- vwuz1=_hi_vduz2 + lda dw+2 + sta print_word_at.w + lda dw+3 + sta print_word_at.w+1 + // [32] call print_word_at + // [36] phi from print_dword_at to print_word_at [phi:print_dword_at->print_word_at] + print_word_at_from_print_dword_at: + // [36] phi (byte*) print_word_at::at#2 = (const byte*) SCREEN#0 [phi:print_dword_at->print_word_at#0] -- pbuz1=pbuc1 + lda #SCREEN + sta print_word_at.at+1 + // [36] phi (word) print_word_at::w#2 = (word) print_word_at::w#0 [phi:print_dword_at->print_word_at#1] -- register_copy + jsr print_word_at + jmp b1 + // print_dword_at::@1 + b1: + // [33] (word) print_word_at::w#1 ← < (dword) print_dword_at::dw#0 -- vwuz1=_lo_vduz2 + lda dw + sta print_word_at.w + lda dw+1 + sta print_word_at.w+1 + // [34] call print_word_at + // [36] phi from print_dword_at::@1 to print_word_at [phi:print_dword_at::@1->print_word_at] + print_word_at_from_b1: + // [36] phi (byte*) print_word_at::at#2 = (const byte*) SCREEN#0+(byte) 4 [phi:print_dword_at::@1->print_word_at#0] -- pbuz1=pbuc1 + lda #SCREEN+4 + sta print_word_at.at+1 + // [36] phi (word) print_word_at::w#2 = (word) print_word_at::w#1 [phi:print_dword_at::@1->print_word_at#1] -- register_copy + jsr print_word_at + jmp breturn + // print_dword_at::@return + breturn: + // [35] return + rts +} + // print_word_at +// Print a word as HEX at a specific position +// print_word_at(word zeropage(2) w, byte* zeropage(4) at) +print_word_at: { + .label w = 2 + .label at = 4 + // [37] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2 -- vbuz1=_hi_vwuz2 + lda w+1 + sta print_byte_at.b + // [38] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 + // [39] call print_byte_at + // [44] phi from print_word_at to print_byte_at [phi:print_word_at->print_byte_at] + print_byte_at_from_print_word_at: + // [44] phi (byte*) print_byte_at::at#2 = (byte*) print_byte_at::at#0 [phi:print_word_at->print_byte_at#0] -- register_copy + // [44] phi (byte) print_byte_at::b#2 = (byte) print_byte_at::b#0 [phi:print_word_at->print_byte_at#1] -- register_copy + jsr print_byte_at + jmp b1 + // print_word_at::@1 + b1: + // [40] (byte) print_byte_at::b#1 ← < (word) print_word_at::w#2 -- vbuz1=_lo_vwuz2 + lda w + sta print_byte_at.b + // [41] (byte*) print_byte_at::at#1 ← (byte*) print_word_at::at#2 + (byte) 2 -- pbuz1=pbuz1_plus_2 + lda print_byte_at.at + clc + adc #2 + sta print_byte_at.at + bcc !+ + inc print_byte_at.at+1 + !: + // [42] call print_byte_at + // [44] phi from print_word_at::@1 to print_byte_at [phi:print_word_at::@1->print_byte_at] + print_byte_at_from_b1: + // [44] phi (byte*) print_byte_at::at#2 = (byte*) print_byte_at::at#1 [phi:print_word_at::@1->print_byte_at#0] -- register_copy + // [44] phi (byte) print_byte_at::b#2 = (byte) print_byte_at::b#1 [phi:print_word_at::@1->print_byte_at#1] -- register_copy + jsr print_byte_at + jmp breturn + // print_word_at::@return + breturn: + // [43] return + rts +} + // print_byte_at +// Print a byte as HEX at a specific position +// print_byte_at(byte zeropage(6) b, byte* zeropage(4) at) +print_byte_at: { + .label b = 6 + .label at = 4 + // [45] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 + lda b + lsr + lsr + lsr + lsr + // [46] (byte) print_char_at::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuxx=pbuc1_derefidx_vbuaa + tay + ldx print_hextab,y + // [47] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 -- pbuz1=pbuz2 + lda at + sta print_char_at.at + lda at+1 + sta print_char_at.at+1 + // [48] call print_char_at + // [54] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] + print_char_at_from_print_byte_at: + // [54] phi (byte*) print_char_at::at#2 = (byte*) print_char_at::at#0 [phi:print_byte_at->print_char_at#0] -- register_copy + // [54] phi (byte) print_char_at::ch#2 = (byte) print_char_at::ch#0 [phi:print_byte_at->print_char_at#1] -- register_copy + jsr print_char_at + jmp b1 + // print_byte_at::@1 + b1: + // [49] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f -- vbuyy=vbuz1_band_vbuc1 + lda #$f + and b + tay + // [50] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 -- pbuz1=pbuz2_plus_1 + lda at + clc + adc #1 + sta print_char_at.at + lda at+1 + adc #0 + sta print_char_at.at+1 + // [51] (byte) print_char_at::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuxx=pbuc1_derefidx_vbuyy + ldx print_hextab,y + // [52] call print_char_at + // [54] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] + print_char_at_from_b1: + // [54] phi (byte*) print_char_at::at#2 = (byte*) print_char_at::at#1 [phi:print_byte_at::@1->print_char_at#0] -- register_copy + // [54] phi (byte) print_char_at::ch#2 = (byte) print_char_at::ch#1 [phi:print_byte_at::@1->print_char_at#1] -- register_copy + jsr print_char_at + jmp breturn + // print_byte_at::@return + breturn: + // [53] return + rts +} + // print_char_at +// Print a single char +// print_char_at(byte register(X) ch, byte* zeropage(7) at) +print_char_at: { + .label at = 7 + // [55] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 -- _deref_pbuz1=vbuxx + txa + ldy #0 + sta (at),y + jmp breturn + // print_char_at::@return + breturn: + // [56] return + rts +} + // clock +// Returns the processor clock time used since the beginning of an implementation defined era (normally the beginning of the program). +// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start() +clock: { + .label return = $2b + // [57] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB#0) -- vduz1=vduc1_minus__deref_pduc2 + lda #<$ffffffff + sec + sbc CIA2_TIMER_AB + sta return + lda #>$ffffffff + sbc CIA2_TIMER_AB+1 + sta return+1 + lda #<$ffffffff>>$10 + sbc CIA2_TIMER_AB+2 + sta return+2 + lda #>$ffffffff>>$10 + sbc CIA2_TIMER_AB+3 + sta return+3 + jmp breturn + // clock::@return + breturn: + // [58] return + rts +} + // splinePlot +// splinePlot(signed word zeropage($d) p0_x, signed word zeropage($13) p0_y, signed word zeropage(9) p1_x, signed word zeropage($f) p1_y, signed word zeropage($b) p2_x, signed word zeropage($11) p2_y) +splinePlot: { + .label _1 = $b + .label _4 = $11 + .label _6 = 9 + .label _7 = $2f + .label _9 = $f + .label _10 = $31 + .label _12 = $1d + .label _13 = $1d + .label _14 = $33 + .label _15 = $33 + .label _16 = $33 + .label _18 = $21 + .label _19 = $21 + .label _20 = $37 + .label _21 = $37 + .label _22 = $37 + .label _24 = $3b + .label _25 = $3b + .label _27 = $3f + .label _28 = $3f + .label _30 = $15 + .label _32 = $19 + .label _35 = $45 + .label a_x = $b + .label a_y = $11 + .label b_x = $2f + .label b_y = $31 + .label i_x = $1d + .label i_y = $21 + .label j_x = $3b + .label j_y = $3f + .label p_x = $15 + .label p_y = $19 + .label p1_x = 9 + .label p2_x = $b + .label p0_x = $d + .label p1_y = $f + .label p2_y = $11 + .label p0_y = $13 + // [60] (signed word~) splinePlot::$6 ← (signed word) splinePlot::p1_x#4 << (byte) 1 -- vwsz1=vwsz1_rol_1 + asl _6 + rol _6+1 + // [61] (signed word~) splinePlot::$1 ← (signed word) splinePlot::p2_x#4 - (signed word~) splinePlot::$6 -- vwsz1=vwsz1_minus_vwsz2 + lda _1 + sec + sbc _6 + sta _1 + lda _1+1 + sbc _6+1 + sta _1+1 + // [62] (signed word) splinePlot::a_x#0 ← (signed word~) splinePlot::$1 + (signed word) splinePlot::p0_x#4 -- vwsz1=vwsz1_plus_vwsz2 + lda a_x + clc + adc p0_x + sta a_x + lda a_x+1 + adc p0_x+1 + sta a_x+1 + // [63] (signed word~) splinePlot::$9 ← (signed word) splinePlot::p1_y#4 << (byte) 1 -- vwsz1=vwsz1_rol_1 + asl _9 + rol _9+1 + // [64] (signed word~) splinePlot::$4 ← (signed word) splinePlot::p2_y#4 - (signed word~) splinePlot::$9 -- vwsz1=vwsz1_minus_vwsz2 + lda _4 + sec + sbc _9 + sta _4 + lda _4+1 + sbc _9+1 + sta _4+1 + // [65] (signed word) splinePlot::a_y#0 ← (signed word~) splinePlot::$4 + (signed word) splinePlot::p0_y#4 -- vwsz1=vwsz1_plus_vwsz2 + lda a_y + clc + adc p0_y + sta a_y + lda a_y+1 + adc p0_y+1 + sta a_y+1 + // [66] (signed word~) splinePlot::$7 ← (signed word) splinePlot::p0_x#4 << (byte) 1 -- vwsz1=vwsz2_rol_1 + lda p0_x + asl + sta _7 + lda p0_x+1 + rol + sta _7+1 + // [67] (signed word) splinePlot::b_x#0 ← (signed word~) splinePlot::$6 - (signed word~) splinePlot::$7 -- vwsz1=vwsz2_minus_vwsz1 + lda _6 + sec + sbc b_x + sta b_x + lda _6+1 + sbc b_x+1 + sta b_x+1 + // [68] (signed word~) splinePlot::$10 ← (signed word) splinePlot::p0_y#4 << (byte) 1 -- vwsz1=vwsz2_rol_1 + lda p0_y + asl + sta _10 + lda p0_y+1 + rol + sta _10+1 + // [69] (signed word) splinePlot::b_y#0 ← (signed word~) splinePlot::$9 - (signed word~) splinePlot::$10 -- vwsz1=vwsz2_minus_vwsz1 + lda _9 + sec + sbc b_y + sta b_y + lda _9+1 + sbc b_y+1 + sta b_y+1 + // [70] (signed dword~) splinePlot::$12 ← (signed dword)(signed word) splinePlot::a_x#0 -- vdsz1=_sdword_vwsz2 + lda a_x + sta _12 + lda a_x+1 + sta _12+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _12+2 + sta _12+3 + // [71] (signed dword~) splinePlot::$13 ← (signed dword~) splinePlot::$12 << (byte) 8 -- vdsz1=vdsz1_rol_8 + lda _13+2 + sta _13+3 + lda _13+1 + sta _13+2 + lda _13 + sta _13+1 + lda #0 + sta _13 + // [72] (signed dword~) splinePlot::$14 ← (signed dword)(signed word) splinePlot::b_x#0 -- vdsz1=_sdword_vwsz2 + lda b_x + sta _14 + lda b_x+1 + sta _14+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _14+2 + sta _14+3 + // [73] (signed dword~) splinePlot::$15 ← (signed dword~) splinePlot::$14 << (byte) 8 -- vdsz1=vdsz1_rol_8 + lda _15+2 + sta _15+3 + lda _15+1 + sta _15+2 + lda _15 + sta _15+1 + lda #0 + sta _15 + // [74] (signed dword~) splinePlot::$16 ← (signed dword~) splinePlot::$15 << (byte) 4 -- vdsz1=vdsz1_rol_4 + asl _16 + rol _16+1 + rol _16+2 + rol _16+3 + asl _16 + rol _16+1 + rol _16+2 + rol _16+3 + asl _16 + rol _16+1 + rol _16+2 + rol _16+3 + asl _16 + rol _16+1 + rol _16+2 + rol _16+3 + // [75] (signed dword) splinePlot::i_x#0 ← (signed dword~) splinePlot::$13 + (signed dword~) splinePlot::$16 -- vdsz1=vdsz1_plus_vdsz2 + lda i_x + clc + adc _16 + sta i_x + lda i_x+1 + adc _16+1 + sta i_x+1 + lda i_x+2 + adc _16+2 + sta i_x+2 + lda i_x+3 + adc _16+3 + sta i_x+3 + // [76] (signed dword~) splinePlot::$18 ← (signed dword)(signed word) splinePlot::a_y#0 -- vdsz1=_sdword_vwsz2 + lda a_y + sta _18 + lda a_y+1 + sta _18+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _18+2 + sta _18+3 + // [77] (signed dword~) splinePlot::$19 ← (signed dword~) splinePlot::$18 << (byte) 8 -- vdsz1=vdsz1_rol_8 + lda _19+2 + sta _19+3 + lda _19+1 + sta _19+2 + lda _19 + sta _19+1 + lda #0 + sta _19 + // [78] (signed dword~) splinePlot::$20 ← (signed dword)(signed word) splinePlot::b_y#0 -- vdsz1=_sdword_vwsz2 + lda b_y + sta _20 + lda b_y+1 + sta _20+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _20+2 + sta _20+3 + // [79] (signed dword~) splinePlot::$21 ← (signed dword~) splinePlot::$20 << (byte) 8 -- vdsz1=vdsz1_rol_8 + lda _21+2 + sta _21+3 + lda _21+1 + sta _21+2 + lda _21 + sta _21+1 + lda #0 + sta _21 + // [80] (signed dword~) splinePlot::$22 ← (signed dword~) splinePlot::$21 << (byte) 4 -- vdsz1=vdsz1_rol_4 + asl _22 + rol _22+1 + rol _22+2 + rol _22+3 + asl _22 + rol _22+1 + rol _22+2 + rol _22+3 + asl _22 + rol _22+1 + rol _22+2 + rol _22+3 + asl _22 + rol _22+1 + rol _22+2 + rol _22+3 + // [81] (signed dword) splinePlot::i_y#0 ← (signed dword~) splinePlot::$19 + (signed dword~) splinePlot::$22 -- vdsz1=vdsz1_plus_vdsz2 + lda i_y + clc + adc _22 + sta i_y + lda i_y+1 + adc _22+1 + sta i_y+1 + lda i_y+2 + adc _22+2 + sta i_y+2 + lda i_y+3 + adc _22+3 + sta i_y+3 + // [82] (signed dword~) splinePlot::$24 ← (signed dword)(signed word) splinePlot::a_x#0 -- vdsz1=_sdword_vwsz2 + lda a_x + sta _24 + lda a_x+1 + sta _24+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _24+2 + sta _24+3 + // [83] (signed dword~) splinePlot::$25 ← (signed dword~) splinePlot::$24 << (byte) 8 -- vdsz1=vdsz1_rol_8 + lda _25+2 + sta _25+3 + lda _25+1 + sta _25+2 + lda _25 + sta _25+1 + lda #0 + sta _25 + // [84] (signed dword) splinePlot::j_x#0 ← (signed dword~) splinePlot::$25 << (byte) 1 -- vdsz1=vdsz1_rol_1 + asl j_x + rol j_x+1 + rol j_x+2 + rol j_x+3 + // [85] (signed dword~) splinePlot::$27 ← (signed dword)(signed word) splinePlot::a_y#0 -- vdsz1=_sdword_vwsz2 + lda a_y + sta _27 + lda a_y+1 + sta _27+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _27+2 + sta _27+3 + // [86] (signed dword~) splinePlot::$28 ← (signed dword~) splinePlot::$27 << (byte) 8 -- vdsz1=vdsz1_rol_8 + lda _28+2 + sta _28+3 + lda _28+1 + sta _28+2 + lda _28 + sta _28+1 + lda #0 + sta _28 + // [87] (signed dword) splinePlot::j_y#0 ← (signed dword~) splinePlot::$28 << (byte) 1 -- vdsz1=vdsz1_rol_1 + asl j_y + rol j_y+1 + rol j_y+2 + rol j_y+3 + // [88] (signed dword~) splinePlot::$30 ← (signed dword)(signed word) splinePlot::p0_x#4 -- vdsz1=_sdword_vwsz2 + lda p0_x + sta _30 + lda p0_x+1 + sta _30+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _30+2 + sta _30+3 + // [89] (signed dword) splinePlot::p_x#0 ← (signed dword~) splinePlot::$30 << (byte) $10 -- vdsz1=vdsz1_rol_16 + lda p_x+1 + sta p_x+3 + lda p_x + sta p_x+2 + lda #0 + sta p_x + sta p_x+1 + // [90] (signed dword~) splinePlot::$32 ← (signed dword)(signed word) splinePlot::p0_y#4 -- vdsz1=_sdword_vwsz2 + lda p0_y + sta _32 + lda p0_y+1 + sta _32+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _32+2 + sta _32+3 + // [91] (signed dword) splinePlot::p_y#0 ← (signed dword~) splinePlot::$32 << (byte) $10 -- vdsz1=vdsz1_rol_16 + lda p_y+1 + sta p_y+3 + lda p_y + sta p_y+2 + lda #0 + sta p_y + sta p_y+1 + // [92] phi from splinePlot to splinePlot::@1 [phi:splinePlot->splinePlot::@1] + b1_from_splinePlot: + // [92] phi (byte) splinePlot::n#2 = (byte) 0 [phi:splinePlot->splinePlot::@1#0] -- vbuxx=vbuc1 + ldx #0 + // [92] phi (signed dword) splinePlot::i_y#2 = (signed dword) splinePlot::i_y#0 [phi:splinePlot->splinePlot::@1#1] -- register_copy + // [92] phi (signed dword) splinePlot::i_x#2 = (signed dword) splinePlot::i_x#0 [phi:splinePlot->splinePlot::@1#2] -- register_copy + // [92] phi (signed dword) splinePlot::p_y#2 = (signed dword) splinePlot::p_y#0 [phi:splinePlot->splinePlot::@1#3] -- register_copy + // [92] phi (signed dword) splinePlot::p_x#2 = (signed dword) splinePlot::p_x#0 [phi:splinePlot->splinePlot::@1#4] -- register_copy + jmp b1 + // [92] phi from splinePlot::@2 to splinePlot::@1 [phi:splinePlot::@2->splinePlot::@1] + b1_from_b2: + // [92] phi (byte) splinePlot::n#2 = (byte) splinePlot::n#1 [phi:splinePlot::@2->splinePlot::@1#0] -- register_copy + // [92] phi (signed dword) splinePlot::i_y#2 = (signed dword) splinePlot::i_y#1 [phi:splinePlot::@2->splinePlot::@1#1] -- register_copy + // [92] phi (signed dword) splinePlot::i_x#2 = (signed dword) splinePlot::i_x#1 [phi:splinePlot::@2->splinePlot::@1#2] -- register_copy + // [92] phi (signed dword) splinePlot::p_y#2 = (signed dword) splinePlot::p_y#1 [phi:splinePlot::@2->splinePlot::@1#3] -- register_copy + // [92] phi (signed dword) splinePlot::p_x#2 = (signed dword) splinePlot::p_x#1 [phi:splinePlot::@2->splinePlot::@1#4] -- register_copy + jmp b1 + // splinePlot::@1 + b1: + // [93] (word) bitmap_plot::x#0 ← > (signed dword) splinePlot::p_x#2 -- vwuz1=_hi_vdsz2 + lda p_x+2 + sta bitmap_plot.x + lda p_x+3 + sta bitmap_plot.x+1 + // [94] (word~) splinePlot::$35 ← > (signed dword) splinePlot::p_y#2 -- vwuz1=_hi_vdsz2 + lda p_y+2 + sta _35 + lda p_y+3 + sta _35+1 + // [95] (byte) bitmap_plot::y#0 ← < (word~) splinePlot::$35 -- vbuaa=_lo_vwuz1 + lda _35 + // [96] call bitmap_plot + jsr bitmap_plot + jmp b2 + // splinePlot::@2 + b2: + // [97] (signed dword) splinePlot::p_x#1 ← (signed dword) splinePlot::p_x#2 + (signed dword) splinePlot::i_x#2 -- vdsz1=vdsz1_plus_vdsz2 + lda p_x + clc + adc i_x + sta p_x + lda p_x+1 + adc i_x+1 + sta p_x+1 + lda p_x+2 + adc i_x+2 + sta p_x+2 + lda p_x+3 + adc i_x+3 + sta p_x+3 + // [98] (signed dword) splinePlot::p_y#1 ← (signed dword) splinePlot::p_y#2 + (signed dword) splinePlot::i_y#2 -- vdsz1=vdsz1_plus_vdsz2 + lda p_y + clc + adc i_y + sta p_y + lda p_y+1 + adc i_y+1 + sta p_y+1 + lda p_y+2 + adc i_y+2 + sta p_y+2 + lda p_y+3 + adc i_y+3 + sta p_y+3 + // [99] (signed dword) splinePlot::i_x#1 ← (signed dword) splinePlot::i_x#2 + (signed dword) splinePlot::j_x#0 -- vdsz1=vdsz1_plus_vdsz2 + lda i_x + clc + adc j_x + sta i_x + lda i_x+1 + adc j_x+1 + sta i_x+1 + lda i_x+2 + adc j_x+2 + sta i_x+2 + lda i_x+3 + adc j_x+3 + sta i_x+3 + // [100] (signed dword) splinePlot::i_y#1 ← (signed dword) splinePlot::i_y#2 + (signed dword) splinePlot::j_y#0 -- vdsz1=vdsz1_plus_vdsz2 + lda i_y + clc + adc j_y + sta i_y + lda i_y+1 + adc j_y+1 + sta i_y+1 + lda i_y+2 + adc j_y+2 + sta i_y+2 + lda i_y+3 + adc j_y+3 + sta i_y+3 + // [101] (byte) splinePlot::n#1 ← ++ (byte) splinePlot::n#2 -- vbuxx=_inc_vbuxx + inx + // [102] if((byte) splinePlot::n#1!=(byte) $11) goto splinePlot::@1 -- vbuxx_neq_vbuc1_then_la1 + cpx #$11 + bne b1_from_b2 + jmp breturn + // splinePlot::@return + breturn: + // [103] return + rts +} + // bitmap_plot +// Plot a single dot in the bitmap +// bitmap_plot(word zeropage($43) x, byte register(A) y) +bitmap_plot: { + .label _1 = $49 + .label plotter = $47 + .label x = $43 + // [104] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuaa_word_pbuc2_derefidx_vbuaa + tay + lda bitmap_plot_yhi,y + sta plotter+1 + lda bitmap_plot_ylo,y + sta plotter + // [105] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + lda x + and #<$fff8 + sta _1 + lda x+1 + and #>$fff8 + sta _1+1 + // [106] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 + lda plotter + clc + adc _1 + sta plotter + lda plotter+1 + adc _1+1 + sta plotter+1 + // [107] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1 + lda x + // [108] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa + tay + lda bitmap_plot_bit,y + ldy #0 + ora (plotter),y + ldy #0 + sta (plotter),y + jmp breturn + // bitmap_plot::@return + breturn: + // [109] return + rts +} + // clock_start +// Reset & start the processor clock time. The value can be read using clock(). +// This uses CIA #2 Timer A+B on the C64 +clock_start: { + // [110] *((const byte*) CIA2_TIMER_A_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_CONTINUOUS#0 -- _deref_pbuc1=vbuc2 + // Setup CIA#2 timer A to count (down) CPU cycles + lda #CIA_TIMER_CONTROL_CONTINUOUS + sta CIA2_TIMER_A_CONTROL + // [111] *((const byte*) CIA2_TIMER_B_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 -- _deref_pbuc1=vbuc2 + lda #CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A + sta CIA2_TIMER_B_CONTROL + // [112] *((const dword*) CIA2_TIMER_AB#0) ← (dword) $ffffffff -- _deref_pduc1=vduc2 + lda #<$ffffffff + sta CIA2_TIMER_AB + lda #>$ffffffff + sta CIA2_TIMER_AB+1 + lda #<$ffffffff>>$10 + sta CIA2_TIMER_AB+2 + lda #>$ffffffff>>$10 + sta CIA2_TIMER_AB+3 + // [113] *((const byte*) CIA2_TIMER_B_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_START#0|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 -- _deref_pbuc1=vbuc2 + lda #CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A + sta CIA2_TIMER_B_CONTROL + // [114] *((const byte*) CIA2_TIMER_A_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_START#0 -- _deref_pbuc1=vbuc2 + lda #CIA_TIMER_CONTROL_START + sta CIA2_TIMER_A_CONTROL + jmp breturn + // clock_start::@return + breturn: + // [115] return + rts +} + // bitmap_clear +// Clear all graphics on the bitmap +// bgcol - the background color to fill the screen with +// fgcol - the foreground color to fill the screen with +bitmap_clear: { + .const col = WHITE*$10 + // [117] call memset + // [121] phi from bitmap_clear to memset [phi:bitmap_clear->memset] + memset_from_bitmap_clear: + // [121] phi (byte) memset::c#3 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 + ldx #col + // [121] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP_SCREEN#0 [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 + lda #BITMAP_SCREEN + sta memset.str+1 + // [121] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 + lda #<$3e8 + sta memset.num + lda #>$3e8 + sta memset.num+1 + jsr memset + // [118] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + b1_from_bitmap_clear: + jmp b1 + // bitmap_clear::@1 + b1: + // [119] call memset + // [121] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] + memset_from_b1: + // [121] phi (byte) memset::c#3 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 + ldx #0 + // [121] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP_GRAPHICS#0 [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 + lda #BITMAP_GRAPHICS + sta memset.str+1 + // [121] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 + lda #<$1f40 + sta memset.num + lda #>$1f40 + sta memset.num+1 + jsr memset + jmp breturn + // bitmap_clear::@return + breturn: + // [120] return + rts +} + // memset +// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. +// memset(void* zeropage($27) str, byte register(X) c, word zeropage($25) num) +memset: { + .label end = $25 + .label dst = $27 + .label num = $25 + .label str = $27 + // [122] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + lda num + beq breturn + lda num+1 + beq breturn + jmp b1 + // memset::@1 + b1: + // [123] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 + lda end + clc + adc str + sta end + lda end+1 + adc str+1 + sta end+1 + // [124] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 + // [125] phi from memset::@1 memset::@2 to memset::@2 [phi:memset::@1/memset::@2->memset::@2] + b2_from_b1: + b2_from_b2: + // [125] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset::@1/memset::@2->memset::@2#0] -- register_copy + jmp b2 + // memset::@2 + b2: + // [126] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuxx + txa + ldy #0 + sta (dst),y + // [127] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + inc dst + bne !+ + inc dst+1 + !: + // [128] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuz2_then_la1 + lda dst+1 + cmp end+1 + bne b2_from_b2 + lda dst + cmp end + bne b2_from_b2 + jmp breturn + // memset::@return + breturn: + // [129] return + rts +} + // bitmap_init +// Initialize bitmap plotting tables +bitmap_init: { + .label _7 = $4b + .label yoffs = $29 + // [131] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + b1_from_bitmap_init: + // [131] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 + ldx #0 + // [131] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 + lda #$80 + jmp b1 + // [131] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + b1_from_b2: + // [131] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + // [131] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + jmp b1 + // bitmap_init::@1 + b1: + // [132] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + sta bitmap_plot_bit,x + // [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuaa=vbuaa_ror_1 + lsr + // [134] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 + cmp #0 + bne b6_from_b1 + // [136] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + b2_from_b1: + // [136] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 + lda #$80 + jmp b2 + // [135] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] + b6_from_b1: + jmp b6 + // bitmap_init::@6 + b6: + // [136] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] + b2_from_b6: + // [136] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy + jmp b2 + // bitmap_init::@2 + b2: + // [137] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + inx + // [138] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 + cpx #0 + bne b1_from_b2 + // [139] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + b3_from_b2: + // [139] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP_GRAPHICS#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + lda #BITMAP_GRAPHICS + sta yoffs+1 + // [139] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + ldx #0 + jmp b3 + // [139] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + b3_from_b4: + // [139] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + // [139] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + jmp b3 + // bitmap_init::@3 + b3: + // [140] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1 + lda #7 + sax _7 + // [141] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + lda yoffs + // [142] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa + ora _7 + // [143] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa + sta bitmap_plot_ylo,x + // [144] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + lda yoffs+1 + // [145] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + sta bitmap_plot_yhi,x + // [146] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 + lda #7 + cmp _7 + bne b4_from_b3 + jmp b5 + // bitmap_init::@5 + b5: + // [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 + clc + lda yoffs + adc #<$28*8 + sta yoffs + lda yoffs+1 + adc #>$28*8 + sta yoffs+1 + // [148] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] + b4_from_b3: + b4_from_b5: + // [148] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy + jmp b4 + // bitmap_init::@4 + b4: + // [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + inx + // [150] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 + cpx #0 + bne b3_from_b4 + jmp breturn + // bitmap_init::@return + breturn: + // [151] return + rts +} + // File Data + print_hextab: .text "0123456789abcdef" + // Tables for the plotter - initialized by calling bitmap_init(); + bitmap_plot_ylo: .fill $100, 0 + bitmap_plot_yhi: .fill $100, 0 + bitmap_plot_bit: .fill $100, 0 + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp b1 +Removing instruction jmp bend +Removing instruction jmp b2 +Removing instruction jmp vicSelectGfxBank1 +Removing instruction jmp vicSelectGfxBank1_toDd001 +Removing instruction jmp vicSelectGfxBank1_b1 +Removing instruction jmp toD0181 +Removing instruction jmp b1 +Removing instruction jmp b3 +Removing instruction jmp b4 +Removing instruction jmp b5 +Removing instruction jmp b6 +Removing instruction jmp b7 +Removing instruction jmp b8 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b6 +Removing instruction jmp b2 +Removing instruction jmp b3 +Removing instruction jmp b5 +Removing instruction jmp b4 +Removing instruction jmp breturn +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction ldy #0 +Succesful ASM optimization Pass5UnnecesaryLoadElimination +Replacing label b1_from_b2 with b1 +Replacing label b2_from_b2 with b2 +Replacing label b2_from_b2 with b2 +Replacing label b6_from_b1 with b2 +Replacing label b1_from_b2 with b1 +Replacing label b4_from_b3 with b4 +Replacing label b3_from_b4 with b3 +Removing instruction b1_from_bbegin: +Removing instruction b1: +Removing instruction main_from_b1: +Removing instruction bend_from_b1: +Removing instruction b2_from_main: +Removing instruction bitmap_clear_from_b2: +Removing instruction vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: +Removing instruction vicSelectGfxBank1_toDd001: +Removing instruction toD0181_from_vicSelectGfxBank1_b1: +Removing instruction toD0181: +Removing instruction b3_from_b1: +Removing instruction splinePlot_from_b3: +Removing instruction b4_from_b3: +Removing instruction splinePlot_from_b4: +Removing instruction b5_from_b4: +Removing instruction splinePlot_from_b5: +Removing instruction b6_from_b5: +Removing instruction splinePlot_from_b6: +Removing instruction b7_from_b6: +Removing instruction b1_from_b2: +Removing instruction b1_from_bitmap_clear: +Removing instruction memset_from_b1: +Removing instruction b2_from_b1: +Removing instruction b2_from_b2: +Removing instruction b1_from_b2: +Removing instruction b6_from_b1: +Removing instruction b6: +Removing instruction b2_from_b6: +Removing instruction b3_from_b4: +Removing instruction b4_from_b3: +Removing instruction b4_from_b5: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction bend: +Removing instruction bitmap_init_from_main: +Removing instruction b2: +Removing instruction vicSelectGfxBank1: +Removing instruction vicSelectGfxBank1_b1: +Removing instruction b1: +Removing instruction b3: +Removing instruction b4: +Removing instruction b5: +Removing instruction b6: +Removing instruction b7: +Removing instruction b8: +Removing instruction breturn: +Removing instruction print_word_at_from_print_dword_at: +Removing instruction b1: +Removing instruction print_word_at_from_b1: +Removing instruction breturn: +Removing instruction print_byte_at_from_print_word_at: +Removing instruction b1: +Removing instruction print_byte_at_from_b1: +Removing instruction breturn: +Removing instruction print_char_at_from_print_byte_at: +Removing instruction b1: +Removing instruction print_char_at_from_b1: +Removing instruction breturn: +Removing instruction breturn: +Removing instruction breturn: +Removing instruction b1_from_splinePlot: +Removing instruction b2: +Removing instruction breturn: +Removing instruction breturn: +Removing instruction breturn: +Removing instruction memset_from_bitmap_clear: +Removing instruction b1: +Removing instruction breturn: +Removing instruction b1: +Removing instruction b1_from_bitmap_init: +Removing instruction b2_from_b1: +Removing instruction b3_from_b2: +Removing instruction b5: +Removing instruction breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Updating BasicUpstart to call main directly +Removing instruction jsr main +Succesful ASM optimization Pass5SkipBegin +Removing instruction jmp b1 +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp b3 +Succesful ASM optimization Pass5NextJumpElimination +Replacing instruction ldx #0 with TAX +Removing instruction bbegin: +Succesful ASM optimization Pass5UnusedLabelElimination + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(byte*) BITMAP_GRAPHICS +(const byte*) BITMAP_GRAPHICS#0 BITMAP_GRAPHICS = (byte*) 24576 +(byte*) BITMAP_SCREEN +(const byte*) BITMAP_SCREEN#0 BITMAP_SCREEN = (byte*) 23552 +(byte) BLACK +(byte*) CIA2_PORT_A +(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = (byte*) 56576 +(byte*) CIA2_PORT_A_DDR +(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = (byte*) 56578 +(dword*) CIA2_TIMER_AB +(const dword*) CIA2_TIMER_AB#0 CIA2_TIMER_AB = (dword*) 56580 +(byte*) CIA2_TIMER_A_CONTROL +(const byte*) CIA2_TIMER_A_CONTROL#0 CIA2_TIMER_A_CONTROL = (byte*) 56590 +(byte*) CIA2_TIMER_B_CONTROL +(const byte*) CIA2_TIMER_B_CONTROL#0 CIA2_TIMER_B_CONTROL = (byte*) 56591 +(byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES +(byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A +(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = (byte) $40 +(byte) CIA_TIMER_CONTROL_CONTINUOUS +(const byte) CIA_TIMER_CONTROL_CONTINUOUS#0 CIA_TIMER_CONTROL_CONTINUOUS = (byte) 0 +(byte) CIA_TIMER_CONTROL_START +(const byte) CIA_TIMER_CONTROL_START#0 CIA_TIMER_CONTROL_START = (byte) 1 +(byte) CIA_TIMER_CONTROL_STOP +(dword) CLOCKS_PER_INIT +(const dword) CLOCKS_PER_INIT#0 CLOCKS_PER_INIT = (byte) $12 +(byte*) D011 +(const byte*) D011#0 D011 = (byte*) 53265 +(byte*) D018 +(const byte*) D018#0 D018 = (byte*) 53272 +(byte*) SCREEN +(const byte*) SCREEN#0 SCREEN = (byte*) 1024 +(signed word) SplineVector16::x +(signed word) SplineVector16::y +(signed dword) SplineVector32::x +(signed dword) SplineVector32::y +(byte) VIC_BMM +(const byte) VIC_BMM#0 VIC_BMM = (byte) $20 +(byte) VIC_DEN +(const byte) VIC_DEN#0 VIC_DEN = (byte) $10 +(byte) VIC_RSEL +(const byte) VIC_RSEL#0 VIC_RSEL = (byte) 8 +(byte) WHITE +(const byte) WHITE#0 WHITE = (byte) 1 +(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol) +(label) bitmap_clear::@1 +(label) bitmap_clear::@return +(byte) bitmap_clear::bgcol +(byte) bitmap_clear::col +(const byte) bitmap_clear::col#0 col = (const byte) WHITE#0*(byte) $10 +(byte) bitmap_clear::fgcol +(byte*) bitmap_gfx +(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) +(byte~) bitmap_init::$4 reg byte a 22.0 +(byte~) bitmap_init::$5 reg byte a 22.0 +(byte~) bitmap_init::$6 reg byte a 22.0 +(byte~) bitmap_init::$7 $7 zp ZP_BYTE:75 5.5 +(label) bitmap_init::@1 +(label) bitmap_init::@2 +(label) bitmap_init::@3 +(label) bitmap_init::@4 +(label) bitmap_init::@5 +(label) bitmap_init::@6 +(label) bitmap_init::@return +(byte) bitmap_init::bits +(byte) bitmap_init::bits#1 reg byte a 11.0 +(byte) bitmap_init::bits#3 reg byte a 16.5 +(byte) bitmap_init::bits#4 reg byte a 7.333333333333333 +(byte*) bitmap_init::gfx +(byte*) bitmap_init::screen +(byte) bitmap_init::x +(byte) bitmap_init::x#1 reg byte x 16.5 +(byte) bitmap_init::x#2 reg byte x 5.5 +(byte) bitmap_init::y +(byte) bitmap_init::y#1 reg byte x 16.5 +(byte) bitmap_init::y#2 reg byte x 5.5 +(byte*) bitmap_init::yoffs +(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:41 22.0 +(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:41 6.875 +(byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:41 11.0 +(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) +(word~) bitmap_plot::$1 $1 zp ZP_WORD:73 4.0 +(byte~) bitmap_plot::$2 reg byte a 4.0 +(label) bitmap_plot::@return +(byte*) bitmap_plot::plotter +(word) bitmap_plot::plotter#0 plotter zp ZP_WORD:71 1.0 +(byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:71 3.0 +(word) bitmap_plot::x +(word) bitmap_plot::x#0 x zp ZP_WORD:67 2.5 +(byte) bitmap_plot::y +(byte) bitmap_plot::y#0 reg byte a 15.0 +(byte[$100]) bitmap_plot_bit +(const byte[$100]) bitmap_plot_bit#0 bitmap_plot_bit = { fill( $100, 0) } +(byte[$100]) bitmap_plot_yhi +(const byte[$100]) bitmap_plot_yhi#0 bitmap_plot_yhi = { fill( $100, 0) } +(byte[$100]) bitmap_plot_ylo +(const byte[$100]) bitmap_plot_ylo#0 bitmap_plot_ylo = { fill( $100, 0) } +(byte*) bitmap_screen +(dword()) clock() +(label) clock::@return +(dword) clock::return +(dword) clock::return#0 return zp ZP_DWORD:43 1.3333333333333333 +(dword) clock::return#2 return zp ZP_DWORD:43 4.0 +(void()) clock_start() +(label) clock_start::@return +(void()) main() +(dword~) main::$12 $12 zp ZP_DWORD:43 4.0 +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@6 +(label) main::@7 +(label) main::@8 +(label) main::@return +(dword) main::cyclecount +(dword) main::cyclecount#0 cyclecount zp ZP_DWORD:43 4.0 +(signed word) main::p0_x +(const signed word) main::p0_x#0 p0_x = (signed byte) $32 +(signed word) main::p0_y +(const signed word) main::p0_y#0 p0_y = (signed byte) $32 +(signed word) main::p1a_x +(const signed word) main::p1a_x#0 p1a_x = (signed byte) $64 +(signed word) main::p1a_y +(const signed word) main::p1a_y#0 p1a_y = (signed byte) $32 +(signed word) main::p1b_x +(const signed word) main::p1b_x#0 p1b_x = (signed byte) $32 +(signed word) main::p1b_y +(const signed word) main::p1b_y#0 p1b_y = (signed byte) $64 +(signed word) main::p2_x +(const signed word) main::p2_x#0 p2_x = (signed byte) $64 +(signed word) main::p2_y +(const signed word) main::p2_y#0 p2_y = (signed byte) $64 +(signed word) main::p3a_x +(const signed word) main::p3a_x#0 p3a_x = (signed word) $96 +(signed word) main::p3a_y +(const signed word) main::p3a_y#0 p3a_y = (signed byte) $64 +(signed word) main::p3b_x +(const signed word) main::p3b_x#0 p3b_x = (signed byte) $64 +(signed word) main::p3b_y +(const signed word) main::p3b_y#0 p3b_y = (signed word) $96 +(signed word) main::p4_x +(const signed word) main::p4_x#0 p4_x = (signed word) $96 +(signed word) main::p4_y +(const signed word) main::p4_y#0 p4_y = (signed word) $96 +(label) main::toD0181 +(word~) main::toD0181_$0 +(number~) main::toD0181_$1 +(number~) main::toD0181_$2 +(number~) main::toD0181_$3 +(word~) main::toD0181_$4 +(byte~) main::toD0181_$5 +(number~) main::toD0181_$6 +(number~) main::toD0181_$7 +(number~) main::toD0181_$8 +(byte*) main::toD0181_gfx +(byte) main::toD0181_return +(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) BITMAP_SCREEN#0&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP_GRAPHICS#0/(byte) 4&(byte) $f +(byte*) main::toD0181_screen +(label) main::vicSelectGfxBank1 +(byte~) main::vicSelectGfxBank1_$0 +(label) main::vicSelectGfxBank1_@1 +(byte*) main::vicSelectGfxBank1_gfx +(label) main::vicSelectGfxBank1_toDd001 +(word~) main::vicSelectGfxBank1_toDd001_$0 +(byte~) main::vicSelectGfxBank1_toDd001_$1 +(number~) main::vicSelectGfxBank1_toDd001_$2 +(number~) main::vicSelectGfxBank1_toDd001_$3 +(byte*) main::vicSelectGfxBank1_toDd001_gfx +(byte) main::vicSelectGfxBank1_toDd001_return +(const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte) 3^>(word)(const byte*) BITMAP_SCREEN#0/(byte) $40 +(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) +(label) memset::@1 +(label) memset::@2 +(label) memset::@return +(byte) memset::c +(byte) memset::c#3 reg byte x 1.375 +(byte*) memset::dst +(byte*) memset::dst#1 dst zp ZP_WORD:39 16.5 +(byte*) memset::dst#2 dst zp ZP_WORD:39 17.5 +(byte*~) memset::dst#3 dst zp ZP_WORD:39 4.0 +(byte*) memset::end +(byte*) memset::end#0 end zp ZP_WORD:37 2.1666666666666665 +(word) memset::num +(word) memset::num#2 num zp ZP_WORD:37 2.0 +(void*) memset::return +(void*) memset::str +(void*) memset::str#3 str zp ZP_WORD:39 +(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) +(byte~) print_byte_at::$0 reg byte a 4.0 +(byte~) print_byte_at::$2 reg byte y 2.0 +(label) print_byte_at::@1 +(label) print_byte_at::@return +(byte*) print_byte_at::at +(byte*) print_byte_at::at#0 at zp ZP_WORD:4 4.0 +(byte*) print_byte_at::at#1 at zp ZP_WORD:4 4.0 +(byte*) print_byte_at::at#2 at zp ZP_WORD:4 1.3333333333333333 +(byte) print_byte_at::b +(byte) print_byte_at::b#0 b zp ZP_BYTE:6 2.0 +(byte) print_byte_at::b#1 b zp ZP_BYTE:6 2.0 +(byte) print_byte_at::b#2 b zp ZP_BYTE:6 1.6 +(void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) +(label) print_char_at::@return +(byte*) print_char_at::at +(byte*) print_char_at::at#0 at zp ZP_WORD:7 4.0 +(byte*) print_char_at::at#1 at zp ZP_WORD:7 2.0 +(byte*) print_char_at::at#2 at zp ZP_WORD:7 6.0 +(byte) print_char_at::ch +(byte) print_char_at::ch#0 reg byte x 2.0 +(byte) print_char_at::ch#1 reg byte x 4.0 +(byte) print_char_at::ch#2 reg byte x 6.0 +(void()) print_dword_at((dword) print_dword_at::dw , (byte*) print_dword_at::at) +(label) print_dword_at::@1 +(label) print_dword_at::@return +(byte*) print_dword_at::at +(dword) print_dword_at::dw +(dword) print_dword_at::dw#0 dw zp ZP_DWORD:43 2.0 +(byte[]) print_hextab +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at) +(label) print_word_at::@1 +(label) print_word_at::@return +(byte*) print_word_at::at +(byte*) print_word_at::at#2 at zp ZP_WORD:4 0.8 +(word) print_word_at::w +(word) print_word_at::w#0 w zp ZP_WORD:2 4.0 +(word) print_word_at::w#1 w zp ZP_WORD:2 4.0 +(word) print_word_at::w#2 w zp ZP_WORD:2 2.0 +(void()) splinePlot((signed word) splinePlot::p0_x , (signed word) splinePlot::p0_y , (signed word) splinePlot::p1_x , (signed word) splinePlot::p1_y , (signed word) splinePlot::p2_x , (signed word) splinePlot::p2_y) +(signed word~) splinePlot::$1 $1 zp ZP_WORD:11 4.0 +(signed word~) splinePlot::$10 $10 zp ZP_WORD:49 4.0 +(signed dword~) splinePlot::$12 $12 zp ZP_DWORD:29 4.0 +(signed dword~) splinePlot::$13 $13 zp ZP_DWORD:29 1.0 +(signed dword~) splinePlot::$14 $14 zp ZP_DWORD:51 4.0 +(signed dword~) splinePlot::$15 $15 zp ZP_DWORD:51 4.0 +(signed dword~) splinePlot::$16 $16 zp ZP_DWORD:51 4.0 +(signed dword~) splinePlot::$18 $18 zp ZP_DWORD:33 4.0 +(signed dword~) splinePlot::$19 $19 zp ZP_DWORD:33 1.0 +(signed dword~) splinePlot::$20 $20 zp ZP_DWORD:55 4.0 +(signed dword~) splinePlot::$21 $21 zp ZP_DWORD:55 4.0 +(signed dword~) splinePlot::$22 $22 zp ZP_DWORD:55 4.0 +(signed dword~) splinePlot::$24 $24 zp ZP_DWORD:59 4.0 +(signed dword~) splinePlot::$25 $25 zp ZP_DWORD:59 4.0 +(signed dword~) splinePlot::$27 $27 zp ZP_DWORD:63 4.0 +(signed dword~) splinePlot::$28 $28 zp ZP_DWORD:63 4.0 +(signed dword~) splinePlot::$30 $30 zp ZP_DWORD:21 4.0 +(signed dword~) splinePlot::$32 $32 zp ZP_DWORD:25 4.0 +(word~) splinePlot::$35 $35 zp ZP_WORD:69 22.0 +(signed word~) splinePlot::$4 $4 zp ZP_WORD:17 4.0 +(signed word~) splinePlot::$6 $6 zp ZP_WORD:9 0.8571428571428571 +(signed word~) splinePlot::$7 $7 zp ZP_WORD:47 4.0 +(signed word~) splinePlot::$9 $9 zp ZP_WORD:15 1.0 +(label) splinePlot::@1 +(label) splinePlot::@2 +(label) splinePlot::@return +(signed word) splinePlot::a_x +(signed word) splinePlot::a_x#0 a_x zp ZP_WORD:11 0.1 +(signed word) splinePlot::a_y +(signed word) splinePlot::a_y#0 a_y zp ZP_WORD:17 0.1 +(signed word) splinePlot::b_x +(signed word) splinePlot::b_x#0 b_x zp ZP_WORD:47 0.4 +(signed word) splinePlot::b_y +(signed word) splinePlot::b_y#0 b_y zp ZP_WORD:49 0.2222222222222222 +(signed dword) splinePlot::i_x +(signed dword) splinePlot::i_x#0 i_x zp ZP_DWORD:29 0.23529411764705882 +(signed dword) splinePlot::i_x#1 i_x zp ZP_DWORD:29 5.5 +(signed dword) splinePlot::i_x#2 i_x zp ZP_DWORD:29 5.0 +(signed dword) splinePlot::i_y +(signed dword) splinePlot::i_y#0 i_y zp ZP_DWORD:33 0.36363636363636365 +(signed dword) splinePlot::i_y#1 i_y zp ZP_DWORD:33 7.333333333333333 +(signed dword) splinePlot::i_y#2 i_y zp ZP_DWORD:33 4.375 +(signed dword) splinePlot::j_x +(signed dword) splinePlot::j_x#0 j_x zp ZP_DWORD:59 0.6842105263157895 +(signed dword) splinePlot::j_y +(signed dword) splinePlot::j_y#0 j_y zp ZP_DWORD:63 0.8125 +(byte) splinePlot::n +(byte) splinePlot::n#1 reg byte x 16.5 +(byte) splinePlot::n#2 reg byte x 2.4444444444444446 +(struct SplineVector16) splinePlot::p0 +(signed word) splinePlot::p0_x +(signed word) splinePlot::p0_x#4 p0_x zp ZP_WORD:13 0.13793103448275862 +(signed word) splinePlot::p0_y +(signed word) splinePlot::p0_y#4 p0_y zp ZP_WORD:19 0.12903225806451613 +(struct SplineVector16) splinePlot::p1 +(signed word) splinePlot::p1_x +(signed word) splinePlot::p1_x#4 p1_x zp ZP_WORD:9 2.0 +(signed word) splinePlot::p1_y +(signed word) splinePlot::p1_y#4 p1_y zp ZP_WORD:15 0.5 +(struct SplineVector16) splinePlot::p2 +(signed word) splinePlot::p2_x +(signed word) splinePlot::p2_x#4 p2_x zp ZP_WORD:11 1.0 +(signed word) splinePlot::p2_y +(signed word) splinePlot::p2_y#4 p2_y zp ZP_WORD:17 0.4 +(signed dword) splinePlot::p_x +(signed dword) splinePlot::p_x#0 p_x zp ZP_DWORD:21 1.3333333333333333 +(signed dword) splinePlot::p_x#1 p_x zp ZP_DWORD:21 3.6666666666666665 +(signed dword) splinePlot::p_x#2 p_x zp ZP_DWORD:21 7.000000000000001 +(signed dword) splinePlot::p_y +(signed dword) splinePlot::p_y#0 p_y zp ZP_DWORD:25 4.0 +(signed dword) splinePlot::p_y#1 p_y zp ZP_DWORD:25 4.4 +(signed dword) splinePlot::p_y#2 p_y zp ZP_DWORD:25 5.833333333333333 + +zp ZP_WORD:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] +zp ZP_WORD:4 [ print_word_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] +zp ZP_BYTE:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] +reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] +zp ZP_WORD:7 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] +zp ZP_WORD:9 [ splinePlot::p1_x#4 splinePlot::$6 ] +zp ZP_WORD:11 [ splinePlot::p2_x#4 splinePlot::$1 splinePlot::a_x#0 ] +zp ZP_WORD:13 [ splinePlot::p0_x#4 ] +zp ZP_WORD:15 [ splinePlot::p1_y#4 splinePlot::$9 ] +zp ZP_WORD:17 [ splinePlot::p2_y#4 splinePlot::$4 splinePlot::a_y#0 ] +zp ZP_WORD:19 [ splinePlot::p0_y#4 ] +zp ZP_DWORD:21 [ splinePlot::p_x#2 splinePlot::p_x#0 splinePlot::p_x#1 splinePlot::$30 ] +zp ZP_DWORD:25 [ splinePlot::p_y#2 splinePlot::p_y#0 splinePlot::p_y#1 splinePlot::$32 ] +zp ZP_DWORD:29 [ splinePlot::i_x#2 splinePlot::i_x#0 splinePlot::i_x#1 splinePlot::$13 splinePlot::$12 ] +zp ZP_DWORD:33 [ splinePlot::i_y#2 splinePlot::i_y#0 splinePlot::i_y#1 splinePlot::$19 splinePlot::$18 ] +reg byte x [ splinePlot::n#2 splinePlot::n#1 ] +zp ZP_WORD:37 [ memset::num#2 memset::end#0 ] +zp ZP_WORD:39 [ memset::str#3 memset::dst#2 memset::dst#3 memset::dst#1 ] +reg byte x [ memset::c#3 ] +reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] +reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] +reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] +zp ZP_WORD:41 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] +zp ZP_DWORD:43 [ clock::return#2 main::$12 clock::return#0 main::cyclecount#0 print_dword_at::dw#0 ] +reg byte a [ print_byte_at::$0 ] +reg byte y [ print_byte_at::$2 ] +zp ZP_WORD:47 [ splinePlot::$7 splinePlot::b_x#0 ] +zp ZP_WORD:49 [ splinePlot::$10 splinePlot::b_y#0 ] +zp ZP_DWORD:51 [ splinePlot::$14 splinePlot::$15 splinePlot::$16 ] +zp ZP_DWORD:55 [ splinePlot::$20 splinePlot::$21 splinePlot::$22 ] +zp ZP_DWORD:59 [ splinePlot::$24 splinePlot::$25 splinePlot::j_x#0 ] +zp ZP_DWORD:63 [ splinePlot::$27 splinePlot::$28 splinePlot::j_y#0 ] +zp ZP_WORD:67 [ bitmap_plot::x#0 ] +zp ZP_WORD:69 [ splinePlot::$35 ] +reg byte a [ bitmap_plot::y#0 ] +zp ZP_WORD:71 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] +zp ZP_WORD:73 [ bitmap_plot::$1 ] +reg byte a [ bitmap_plot::$2 ] +zp ZP_BYTE:75 [ bitmap_init::$7 ] +reg byte a [ bitmap_init::$4 ] +reg byte a [ bitmap_init::$5 ] +reg byte a [ bitmap_init::$6 ] + + +FINAL ASSEMBLER +Score: 4918 + + // File Comments +// Quadratic Spline Library for the C64 +// Implements an iterative algorithm using only addition for calculating quadratic splines +// +// A quadratic spline is a curve defined by 3 points: P0, P1 and P2. +// The curve connects P0 to P2 through a smooth curve that moves towards P1, but does usually not touch it. +// +// The general formula for the quadratic spline is as follows: +// A = P2 - 2*P1 + P0 +// B = 2*P1 - 2*P0 +// C = P0 +// P(t) = A*t*t + B*t + C +// for 0 <= t <= 1 +// +// This library implements a iterative algorithm using multiplications in the initialization and only additions for calculating each point on the spline. +// The iterative algorithm is based on the following: +// P(t+Dt) = P(t) + A*Dt*Dt + 2*A*t*Dt + B*Dt +// +// init: +// N = 16 (number of plots) +// Dt = 1/N +// P = C +// I = A*Dt*Dt + B*Dt +// J = 2*A*Dt*Dt +// loop(N times): +// plot(P) +// P = P + I +// I = I + J + // Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + // Global Constants & labels + .label D011 = $d011 + .const VIC_BMM = $20 + .const VIC_DEN = $10 + .const VIC_RSEL = 8 + .label D018 = $d018 + // CIA#2 Port A: Serial bus, RS-232, VIC memory bank + .label CIA2_PORT_A = $dd00 + // CIA #2 Port A data direction register. + .label CIA2_PORT_A_DDR = $dd02 + // CIA #2 Timer A+B Value (32-bit) + .label CIA2_TIMER_AB = $dd04 + // CIA #2 Timer A Control Register + .label CIA2_TIMER_A_CONTROL = $dd0e + // CIA #2 Timer B Control Register + .label CIA2_TIMER_B_CONTROL = $dd0f + // Timer Control - Start/stop timer (0:stop, 1: start) + .const CIA_TIMER_CONTROL_START = 1 + // Timer Control - Time CONTINUOUS/ONE-SHOT (0:CONTINUOUS, 1: ONE-SHOT) + .const CIA_TIMER_CONTROL_CONTINUOUS = 0 + // Timer B Control - Timer counts (00:system cycles, 01: CNT pulses, 10: timer A underflow, 11: time A underflow while CNT is high) + .const CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = $40 + .const WHITE = 1 + // Clock cycles used to start & read the cycle clock by calling clock_start() and clock() once. Can be subtracted when calculating the number of cycles used by a routine. + // To make precise cycle measurements interrupts and the display must be disabled so neither steals any cycles from the code. + .const CLOCKS_PER_INIT = $12 + .label SCREEN = $400 + .label BITMAP_SCREEN = $5c00 + .label BITMAP_GRAPHICS = $6000 + // @begin + // [1] phi from @begin to @1 [phi:@begin->@1] + // @1 + // [2] call main + // [4] phi from @1 to main [phi:@1->main] + // [3] phi from @1 to @end [phi:@1->@end] + // @end + // main +main: { + .const p0_x = $32 + .const p0_y = $32 + .const p1a_x = $64 + .const p1a_y = $32 + .const p1b_x = $32 + .const p1b_y = $64 + .const p2_x = $64 + .const p2_y = $64 + .const p3a_x = $96 + .const p3a_y = $64 + .const p3b_x = $64 + .const p3b_y = $96 + .const p4_x = $96 + .const p4_y = $96 + .const vicSelectGfxBank1_toDd001_return = 3^(>BITMAP_SCREEN)/$40 + .const toD0181_return = (>(BITMAP_SCREEN&$3fff)*4)|(>BITMAP_GRAPHICS)/4&$f + .label _12 = $2b + .label cyclecount = $2b + // bitmap_init(BITMAP_GRAPHICS, BITMAP_SCREEN) + // [5] call bitmap_init + // [130] phi from main to bitmap_init [phi:main->bitmap_init] + jsr bitmap_init + // [6] phi from main to main::@2 [phi:main->main::@2] + // main::@2 + // bitmap_clear(BLACK, WHITE) + // [7] call bitmap_clear + // [116] phi from main::@2 to bitmap_clear [phi:main::@2->bitmap_clear] + jsr bitmap_clear + // main::vicSelectGfxBank1 + // *CIA2_PORT_A_DDR = %00000011 + // [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3 -- _deref_pbuc1=vbuc2 + lda #3 + sta CIA2_PORT_A_DDR + // [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001] + // main::vicSelectGfxBank1_toDd001 + // main::vicSelectGfxBank1_@1 + // *CIA2_PORT_A = toDd00(gfx) + // [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + // [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181] + // main::toD0181 + // main::@1 + // *D018 = toD018(BITMAP_SCREEN, BITMAP_GRAPHICS) + // [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2 + lda #toD0181_return + sta D018 + // *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 + // [13] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3 -- _deref_pbuc1=vbuc2 + lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 + sta D011 + // clock_start() + // [14] call clock_start + jsr clock_start + // [15] phi from main::@1 to main::@3 [phi:main::@1->main::@3] + // main::@3 + // splinePlot(p0, p1a, p2) + // [16] call splinePlot + // [59] phi from main::@3 to splinePlot [phi:main::@3->splinePlot] + // [59] phi (signed word) splinePlot::p0_y#4 = (const signed word) main::p0_y#0 [phi:main::@3->splinePlot#0] -- vwsz1=vwsc1 + lda #p0_y + sta splinePlot.p0_y+1 + // [59] phi (signed word) splinePlot::p2_y#4 = (const signed word) main::p2_y#0 [phi:main::@3->splinePlot#1] -- vwsz1=vwsc1 + lda #p2_y + sta splinePlot.p2_y+1 + // [59] phi (signed word) splinePlot::p1_y#4 = (const signed word) main::p1a_y#0 [phi:main::@3->splinePlot#2] -- vwsz1=vwsc1 + lda #p1a_y + sta splinePlot.p1_y+1 + // [59] phi (signed word) splinePlot::p0_x#4 = (const signed word) main::p0_x#0 [phi:main::@3->splinePlot#3] -- vwsz1=vwsc1 + lda #p0_x + sta splinePlot.p0_x+1 + // [59] phi (signed word) splinePlot::p2_x#4 = (const signed word) main::p2_x#0 [phi:main::@3->splinePlot#4] -- vwsz1=vwsc1 + lda #p2_x + sta splinePlot.p2_x+1 + // [59] phi (signed word) splinePlot::p1_x#4 = (const signed word) main::p1a_x#0 [phi:main::@3->splinePlot#5] -- vwsz1=vwsc1 + lda #p1a_x + sta splinePlot.p1_x+1 + jsr splinePlot + // [17] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + // main::@4 + // splinePlot(p2, p3a, p4) + // [18] call splinePlot + // [59] phi from main::@4 to splinePlot [phi:main::@4->splinePlot] + // [59] phi (signed word) splinePlot::p0_y#4 = (const signed word) main::p2_y#0 [phi:main::@4->splinePlot#0] -- vwsz1=vwsc1 + lda #p2_y + sta splinePlot.p0_y+1 + // [59] phi (signed word) splinePlot::p2_y#4 = (const signed word) main::p4_y#0 [phi:main::@4->splinePlot#1] -- vwsz1=vwsc1 + lda #p4_y + sta splinePlot.p2_y+1 + // [59] phi (signed word) splinePlot::p1_y#4 = (const signed word) main::p3a_y#0 [phi:main::@4->splinePlot#2] -- vwsz1=vwsc1 + lda #p3a_y + sta splinePlot.p1_y+1 + // [59] phi (signed word) splinePlot::p0_x#4 = (const signed word) main::p2_x#0 [phi:main::@4->splinePlot#3] -- vwsz1=vwsc1 + lda #p2_x + sta splinePlot.p0_x+1 + // [59] phi (signed word) splinePlot::p2_x#4 = (const signed word) main::p4_x#0 [phi:main::@4->splinePlot#4] -- vwsz1=vwsc1 + lda #p4_x + sta splinePlot.p2_x+1 + // [59] phi (signed word) splinePlot::p1_x#4 = (const signed word) main::p3a_x#0 [phi:main::@4->splinePlot#5] -- vwsz1=vwsc1 + lda #p3a_x + sta splinePlot.p1_x+1 + jsr splinePlot + // [19] phi from main::@4 to main::@5 [phi:main::@4->main::@5] + // main::@5 + // splinePlot(p2, p1b, p0) + // [20] call splinePlot + // [59] phi from main::@5 to splinePlot [phi:main::@5->splinePlot] + // [59] phi (signed word) splinePlot::p0_y#4 = (const signed word) main::p2_y#0 [phi:main::@5->splinePlot#0] -- vwsz1=vwsc1 + lda #p2_y + sta splinePlot.p0_y+1 + // [59] phi (signed word) splinePlot::p2_y#4 = (const signed word) main::p0_y#0 [phi:main::@5->splinePlot#1] -- vwsz1=vwsc1 + lda #p0_y + sta splinePlot.p2_y+1 + // [59] phi (signed word) splinePlot::p1_y#4 = (const signed word) main::p1b_y#0 [phi:main::@5->splinePlot#2] -- vwsz1=vwsc1 + lda #p1b_y + sta splinePlot.p1_y+1 + // [59] phi (signed word) splinePlot::p0_x#4 = (const signed word) main::p2_x#0 [phi:main::@5->splinePlot#3] -- vwsz1=vwsc1 + lda #p2_x + sta splinePlot.p0_x+1 + // [59] phi (signed word) splinePlot::p2_x#4 = (const signed word) main::p0_x#0 [phi:main::@5->splinePlot#4] -- vwsz1=vwsc1 + lda #p0_x + sta splinePlot.p2_x+1 + // [59] phi (signed word) splinePlot::p1_x#4 = (const signed word) main::p1b_x#0 [phi:main::@5->splinePlot#5] -- vwsz1=vwsc1 + lda #p1b_x + sta splinePlot.p1_x+1 + jsr splinePlot + // [21] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + // main::@6 + // splinePlot(p4, p3b, p2) + // [22] call splinePlot + // [59] phi from main::@6 to splinePlot [phi:main::@6->splinePlot] + // [59] phi (signed word) splinePlot::p0_y#4 = (const signed word) main::p4_y#0 [phi:main::@6->splinePlot#0] -- vwsz1=vwsc1 + lda #p4_y + sta splinePlot.p0_y+1 + // [59] phi (signed word) splinePlot::p2_y#4 = (const signed word) main::p2_y#0 [phi:main::@6->splinePlot#1] -- vwsz1=vwsc1 + lda #p2_y + sta splinePlot.p2_y+1 + // [59] phi (signed word) splinePlot::p1_y#4 = (const signed word) main::p3b_y#0 [phi:main::@6->splinePlot#2] -- vwsz1=vwsc1 + lda #p3b_y + sta splinePlot.p1_y+1 + // [59] phi (signed word) splinePlot::p0_x#4 = (const signed word) main::p4_x#0 [phi:main::@6->splinePlot#3] -- vwsz1=vwsc1 + lda #p4_x + sta splinePlot.p0_x+1 + // [59] phi (signed word) splinePlot::p2_x#4 = (const signed word) main::p2_x#0 [phi:main::@6->splinePlot#4] -- vwsz1=vwsc1 + lda #p2_x + sta splinePlot.p2_x+1 + // [59] phi (signed word) splinePlot::p1_x#4 = (const signed word) main::p3b_x#0 [phi:main::@6->splinePlot#5] -- vwsz1=vwsc1 + lda #p3b_x + sta splinePlot.p1_x+1 + jsr splinePlot + // [23] phi from main::@6 to main::@7 [phi:main::@6->main::@7] + // main::@7 + // clock() + // [24] call clock + jsr clock + // [25] (dword) clock::return#2 ← (dword) clock::return#0 + // main::@8 + // [26] (dword~) main::$12 ← (dword) clock::return#2 + // cyclecount = clock()-CLOCKS_PER_INIT + // [27] (dword) main::cyclecount#0 ← (dword~) main::$12 - (const dword) CLOCKS_PER_INIT#0 -- vduz1=vduz1_minus_vduc1 + lda cyclecount + sec + sbc #CLOCKS_PER_INIT + sta cyclecount+1 + lda cyclecount+2 + sbc #>$10 + sta cyclecount+2 + lda cyclecount+3 + sbc #>CLOCKS_PER_INIT>>$10 + sta cyclecount+3 + // print_dword_at(cyclecount, SCREEN) + // [28] (dword) print_dword_at::dw#0 ← (dword) main::cyclecount#0 + // [29] call print_dword_at + jsr print_dword_at + // main::@return + // } + // [30] return + rts +} + // print_dword_at +// Print a dword as HEX at a specific position +// print_dword_at(dword zeropage($2b) dw) +print_dword_at: { + .label dw = $2b + // print_word_at(>dw, at) + // [31] (word) print_word_at::w#0 ← > (dword) print_dword_at::dw#0 -- vwuz1=_hi_vduz2 + lda dw+2 + sta print_word_at.w + lda dw+3 + sta print_word_at.w+1 + // [32] call print_word_at + // [36] phi from print_dword_at to print_word_at [phi:print_dword_at->print_word_at] + // [36] phi (byte*) print_word_at::at#2 = (const byte*) SCREEN#0 [phi:print_dword_at->print_word_at#0] -- pbuz1=pbuc1 + lda #SCREEN + sta print_word_at.at+1 + // [36] phi (word) print_word_at::w#2 = (word) print_word_at::w#0 [phi:print_dword_at->print_word_at#1] -- register_copy + jsr print_word_at + // print_dword_at::@1 + // print_word_at(print_word_at] + // [36] phi (byte*) print_word_at::at#2 = (const byte*) SCREEN#0+(byte) 4 [phi:print_dword_at::@1->print_word_at#0] -- pbuz1=pbuc1 + lda #SCREEN+4 + sta print_word_at.at+1 + // [36] phi (word) print_word_at::w#2 = (word) print_word_at::w#1 [phi:print_dword_at::@1->print_word_at#1] -- register_copy + jsr print_word_at + // print_dword_at::@return + // } + // [35] return + rts +} + // print_word_at +// Print a word as HEX at a specific position +// print_word_at(word zeropage(2) w, byte* zeropage(4) at) +print_word_at: { + .label w = 2 + .label at = 4 + // print_byte_at(>w, at) + // [37] (byte) print_byte_at::b#0 ← > (word) print_word_at::w#2 -- vbuz1=_hi_vwuz2 + lda w+1 + sta print_byte_at.b + // [38] (byte*) print_byte_at::at#0 ← (byte*) print_word_at::at#2 + // [39] call print_byte_at + // [44] phi from print_word_at to print_byte_at [phi:print_word_at->print_byte_at] + // [44] phi (byte*) print_byte_at::at#2 = (byte*) print_byte_at::at#0 [phi:print_word_at->print_byte_at#0] -- register_copy + // [44] phi (byte) print_byte_at::b#2 = (byte) print_byte_at::b#0 [phi:print_word_at->print_byte_at#1] -- register_copy + jsr print_byte_at + // print_word_at::@1 + // print_byte_at(print_byte_at] + // [44] phi (byte*) print_byte_at::at#2 = (byte*) print_byte_at::at#1 [phi:print_word_at::@1->print_byte_at#0] -- register_copy + // [44] phi (byte) print_byte_at::b#2 = (byte) print_byte_at::b#1 [phi:print_word_at::@1->print_byte_at#1] -- register_copy + jsr print_byte_at + // print_word_at::@return + // } + // [43] return + rts +} + // print_byte_at +// Print a byte as HEX at a specific position +// print_byte_at(byte zeropage(6) b, byte* zeropage(4) at) +print_byte_at: { + .label b = 6 + .label at = 4 + // b>>4 + // [45] (byte~) print_byte_at::$0 ← (byte) print_byte_at::b#2 >> (byte) 4 -- vbuaa=vbuz1_ror_4 + lda b + lsr + lsr + lsr + lsr + // print_char_at(print_hextab[b>>4], at) + // [46] (byte) print_char_at::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$0) -- vbuxx=pbuc1_derefidx_vbuaa + tay + ldx print_hextab,y + // [47] (byte*) print_char_at::at#0 ← (byte*) print_byte_at::at#2 -- pbuz1=pbuz2 + lda at + sta print_char_at.at + lda at+1 + sta print_char_at.at+1 + // [48] call print_char_at + // [54] phi from print_byte_at to print_char_at [phi:print_byte_at->print_char_at] + // [54] phi (byte*) print_char_at::at#2 = (byte*) print_char_at::at#0 [phi:print_byte_at->print_char_at#0] -- register_copy + // [54] phi (byte) print_char_at::ch#2 = (byte) print_char_at::ch#0 [phi:print_byte_at->print_char_at#1] -- register_copy + jsr print_char_at + // print_byte_at::@1 + // b&$f + // [49] (byte~) print_byte_at::$2 ← (byte) print_byte_at::b#2 & (byte) $f -- vbuyy=vbuz1_band_vbuc1 + lda #$f + and b + tay + // print_char_at(print_hextab[b&$f], at+1) + // [50] (byte*) print_char_at::at#1 ← (byte*) print_byte_at::at#2 + (byte) 1 -- pbuz1=pbuz2_plus_1 + lda at + clc + adc #1 + sta print_char_at.at + lda at+1 + adc #0 + sta print_char_at.at+1 + // [51] (byte) print_char_at::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte_at::$2) -- vbuxx=pbuc1_derefidx_vbuyy + ldx print_hextab,y + // [52] call print_char_at + // [54] phi from print_byte_at::@1 to print_char_at [phi:print_byte_at::@1->print_char_at] + // [54] phi (byte*) print_char_at::at#2 = (byte*) print_char_at::at#1 [phi:print_byte_at::@1->print_char_at#0] -- register_copy + // [54] phi (byte) print_char_at::ch#2 = (byte) print_char_at::ch#1 [phi:print_byte_at::@1->print_char_at#1] -- register_copy + jsr print_char_at + // print_byte_at::@return + // } + // [53] return + rts +} + // print_char_at +// Print a single char +// print_char_at(byte register(X) ch, byte* zeropage(7) at) +print_char_at: { + .label at = 7 + // *(at) = ch + // [55] *((byte*) print_char_at::at#2) ← (byte) print_char_at::ch#2 -- _deref_pbuz1=vbuxx + txa + ldy #0 + sta (at),y + // print_char_at::@return + // } + // [56] return + rts +} + // clock +// Returns the processor clock time used since the beginning of an implementation defined era (normally the beginning of the program). +// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start() +clock: { + .label return = $2b + // 0xffffffff - *CIA2_TIMER_AB + // [57] (dword) clock::return#0 ← (dword) $ffffffff - *((const dword*) CIA2_TIMER_AB#0) -- vduz1=vduc1_minus__deref_pduc2 + lda #<$ffffffff + sec + sbc CIA2_TIMER_AB + sta return + lda #>$ffffffff + sbc CIA2_TIMER_AB+1 + sta return+1 + lda #<$ffffffff>>$10 + sbc CIA2_TIMER_AB+2 + sta return+2 + lda #>$ffffffff>>$10 + sbc CIA2_TIMER_AB+3 + sta return+3 + // clock::@return + // } + // [58] return + rts +} + // splinePlot +// splinePlot(signed word zeropage($d) p0_x, signed word zeropage($13) p0_y, signed word zeropage(9) p1_x, signed word zeropage($f) p1_y, signed word zeropage($b) p2_x, signed word zeropage($11) p2_y) +splinePlot: { + .label _1 = $b + .label _4 = $11 + .label _6 = 9 + .label _7 = $2f + .label _9 = $f + .label _10 = $31 + .label _12 = $1d + .label _13 = $1d + .label _14 = $33 + .label _15 = $33 + .label _16 = $33 + .label _18 = $21 + .label _19 = $21 + .label _20 = $37 + .label _21 = $37 + .label _22 = $37 + .label _24 = $3b + .label _25 = $3b + .label _27 = $3f + .label _28 = $3f + .label _30 = $15 + .label _32 = $19 + .label _35 = $45 + .label a_x = $b + .label a_y = $11 + .label b_x = $2f + .label b_y = $31 + .label i_x = $1d + .label i_y = $21 + .label j_x = $3b + .label j_y = $3f + .label p_x = $15 + .label p_y = $19 + .label p1_x = 9 + .label p2_x = $b + .label p0_x = $d + .label p1_y = $f + .label p2_y = $11 + .label p0_y = $13 + // p1.x*2 + // [60] (signed word~) splinePlot::$6 ← (signed word) splinePlot::p1_x#4 << (byte) 1 -- vwsz1=vwsz1_rol_1 + asl _6 + rol _6+1 + // p2.x - p1.x*2 + // [61] (signed word~) splinePlot::$1 ← (signed word) splinePlot::p2_x#4 - (signed word~) splinePlot::$6 -- vwsz1=vwsz1_minus_vwsz2 + lda _1 + sec + sbc _6 + sta _1 + lda _1+1 + sbc _6+1 + sta _1+1 + // a = { p2.x - p1.x*2 + p0.x, p2.y - p1.y*2 + p0.y} + // [62] (signed word) splinePlot::a_x#0 ← (signed word~) splinePlot::$1 + (signed word) splinePlot::p0_x#4 -- vwsz1=vwsz1_plus_vwsz2 + lda a_x + clc + adc p0_x + sta a_x + lda a_x+1 + adc p0_x+1 + sta a_x+1 + // p1.y*2 + // [63] (signed word~) splinePlot::$9 ← (signed word) splinePlot::p1_y#4 << (byte) 1 -- vwsz1=vwsz1_rol_1 + asl _9 + rol _9+1 + // p2.y - p1.y*2 + // [64] (signed word~) splinePlot::$4 ← (signed word) splinePlot::p2_y#4 - (signed word~) splinePlot::$9 -- vwsz1=vwsz1_minus_vwsz2 + lda _4 + sec + sbc _9 + sta _4 + lda _4+1 + sbc _9+1 + sta _4+1 + // a = { p2.x - p1.x*2 + p0.x, p2.y - p1.y*2 + p0.y} + // [65] (signed word) splinePlot::a_y#0 ← (signed word~) splinePlot::$4 + (signed word) splinePlot::p0_y#4 -- vwsz1=vwsz1_plus_vwsz2 + lda a_y + clc + adc p0_y + sta a_y + lda a_y+1 + adc p0_y+1 + sta a_y+1 + // p0.x*2 + // [66] (signed word~) splinePlot::$7 ← (signed word) splinePlot::p0_x#4 << (byte) 1 -- vwsz1=vwsz2_rol_1 + lda p0_x + asl + sta _7 + lda p0_x+1 + rol + sta _7+1 + // b = { p1.x*2 - p0.x*2, p1.y*2 - p0.y*2 } + // [67] (signed word) splinePlot::b_x#0 ← (signed word~) splinePlot::$6 - (signed word~) splinePlot::$7 -- vwsz1=vwsz2_minus_vwsz1 + lda _6 + sec + sbc b_x + sta b_x + lda _6+1 + sbc b_x+1 + sta b_x+1 + // p0.y*2 + // [68] (signed word~) splinePlot::$10 ← (signed word) splinePlot::p0_y#4 << (byte) 1 -- vwsz1=vwsz2_rol_1 + lda p0_y + asl + sta _10 + lda p0_y+1 + rol + sta _10+1 + // b = { p1.x*2 - p0.x*2, p1.y*2 - p0.y*2 } + // [69] (signed word) splinePlot::b_y#0 ← (signed word~) splinePlot::$9 - (signed word~) splinePlot::$10 -- vwsz1=vwsz2_minus_vwsz1 + lda _9 + sec + sbc b_y + sta b_y + lda _9+1 + sbc b_y+1 + sta b_y+1 + // (signed long)a.x + // [70] (signed dword~) splinePlot::$12 ← (signed dword)(signed word) splinePlot::a_x#0 -- vdsz1=_sdword_vwsz2 + lda a_x + sta _12 + lda a_x+1 + sta _12+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _12+2 + sta _12+3 + // (signed long)a.x*0x100 + // [71] (signed dword~) splinePlot::$13 ← (signed dword~) splinePlot::$12 << (byte) 8 -- vdsz1=vdsz1_rol_8 + lda _13+2 + sta _13+3 + lda _13+1 + sta _13+2 + lda _13 + sta _13+1 + lda #0 + sta _13 + // (signed long)b.x + // [72] (signed dword~) splinePlot::$14 ← (signed dword)(signed word) splinePlot::b_x#0 -- vdsz1=_sdword_vwsz2 + lda b_x + sta _14 + lda b_x+1 + sta _14+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _14+2 + sta _14+3 + // (signed long)b.x*0x100 + // [73] (signed dword~) splinePlot::$15 ← (signed dword~) splinePlot::$14 << (byte) 8 -- vdsz1=vdsz1_rol_8 + lda _15+2 + sta _15+3 + lda _15+1 + sta _15+2 + lda _15 + sta _15+1 + lda #0 + sta _15 + // (signed long)b.x*0x100*0x10 + // [74] (signed dword~) splinePlot::$16 ← (signed dword~) splinePlot::$15 << (byte) 4 -- vdsz1=vdsz1_rol_4 + asl _16 + rol _16+1 + rol _16+2 + rol _16+3 + asl _16 + rol _16+1 + rol _16+2 + rol _16+3 + asl _16 + rol _16+1 + rol _16+2 + rol _16+3 + asl _16 + rol _16+1 + rol _16+2 + rol _16+3 + // i = { (signed long)a.x*0x100 + (signed long)b.x*0x100*0x10, (signed long)a.y*0x100 + (signed long)b.y*0x100*0x10 } + // [75] (signed dword) splinePlot::i_x#0 ← (signed dword~) splinePlot::$13 + (signed dword~) splinePlot::$16 -- vdsz1=vdsz1_plus_vdsz2 + lda i_x + clc + adc _16 + sta i_x + lda i_x+1 + adc _16+1 + sta i_x+1 + lda i_x+2 + adc _16+2 + sta i_x+2 + lda i_x+3 + adc _16+3 + sta i_x+3 + // (signed long)a.y + // [76] (signed dword~) splinePlot::$18 ← (signed dword)(signed word) splinePlot::a_y#0 -- vdsz1=_sdword_vwsz2 + lda a_y + sta _18 + lda a_y+1 + sta _18+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _18+2 + sta _18+3 + // (signed long)a.y*0x100 + // [77] (signed dword~) splinePlot::$19 ← (signed dword~) splinePlot::$18 << (byte) 8 -- vdsz1=vdsz1_rol_8 + lda _19+2 + sta _19+3 + lda _19+1 + sta _19+2 + lda _19 + sta _19+1 + lda #0 + sta _19 + // (signed long)b.y + // [78] (signed dword~) splinePlot::$20 ← (signed dword)(signed word) splinePlot::b_y#0 -- vdsz1=_sdword_vwsz2 + lda b_y + sta _20 + lda b_y+1 + sta _20+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _20+2 + sta _20+3 + // (signed long)b.y*0x100 + // [79] (signed dword~) splinePlot::$21 ← (signed dword~) splinePlot::$20 << (byte) 8 -- vdsz1=vdsz1_rol_8 + lda _21+2 + sta _21+3 + lda _21+1 + sta _21+2 + lda _21 + sta _21+1 + lda #0 + sta _21 + // (signed long)b.y*0x100*0x10 + // [80] (signed dword~) splinePlot::$22 ← (signed dword~) splinePlot::$21 << (byte) 4 -- vdsz1=vdsz1_rol_4 + asl _22 + rol _22+1 + rol _22+2 + rol _22+3 + asl _22 + rol _22+1 + rol _22+2 + rol _22+3 + asl _22 + rol _22+1 + rol _22+2 + rol _22+3 + asl _22 + rol _22+1 + rol _22+2 + rol _22+3 + // i = { (signed long)a.x*0x100 + (signed long)b.x*0x100*0x10, (signed long)a.y*0x100 + (signed long)b.y*0x100*0x10 } + // [81] (signed dword) splinePlot::i_y#0 ← (signed dword~) splinePlot::$19 + (signed dword~) splinePlot::$22 -- vdsz1=vdsz1_plus_vdsz2 + lda i_y + clc + adc _22 + sta i_y + lda i_y+1 + adc _22+1 + sta i_y+1 + lda i_y+2 + adc _22+2 + sta i_y+2 + lda i_y+3 + adc _22+3 + sta i_y+3 + // (signed long)a.x + // [82] (signed dword~) splinePlot::$24 ← (signed dword)(signed word) splinePlot::a_x#0 -- vdsz1=_sdword_vwsz2 + lda a_x + sta _24 + lda a_x+1 + sta _24+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _24+2 + sta _24+3 + // (signed long)a.x*0x100 + // [83] (signed dword~) splinePlot::$25 ← (signed dword~) splinePlot::$24 << (byte) 8 -- vdsz1=vdsz1_rol_8 + lda _25+2 + sta _25+3 + lda _25+1 + sta _25+2 + lda _25 + sta _25+1 + lda #0 + sta _25 + // j = { (signed long)a.x*0x100*2, (signed long)a.y*0x100*2 } + // [84] (signed dword) splinePlot::j_x#0 ← (signed dword~) splinePlot::$25 << (byte) 1 -- vdsz1=vdsz1_rol_1 + asl j_x + rol j_x+1 + rol j_x+2 + rol j_x+3 + // (signed long)a.y + // [85] (signed dword~) splinePlot::$27 ← (signed dword)(signed word) splinePlot::a_y#0 -- vdsz1=_sdword_vwsz2 + lda a_y + sta _27 + lda a_y+1 + sta _27+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _27+2 + sta _27+3 + // (signed long)a.y*0x100 + // [86] (signed dword~) splinePlot::$28 ← (signed dword~) splinePlot::$27 << (byte) 8 -- vdsz1=vdsz1_rol_8 + lda _28+2 + sta _28+3 + lda _28+1 + sta _28+2 + lda _28 + sta _28+1 + lda #0 + sta _28 + // j = { (signed long)a.x*0x100*2, (signed long)a.y*0x100*2 } + // [87] (signed dword) splinePlot::j_y#0 ← (signed dword~) splinePlot::$28 << (byte) 1 -- vdsz1=vdsz1_rol_1 + asl j_y + rol j_y+1 + rol j_y+2 + rol j_y+3 + // (signed long)p0.x + // [88] (signed dword~) splinePlot::$30 ← (signed dword)(signed word) splinePlot::p0_x#4 -- vdsz1=_sdword_vwsz2 + lda p0_x + sta _30 + lda p0_x+1 + sta _30+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _30+2 + sta _30+3 + // p = { (signed long)p0.x*0x10000, (signed long)p0.y*0x10000 } + // [89] (signed dword) splinePlot::p_x#0 ← (signed dword~) splinePlot::$30 << (byte) $10 -- vdsz1=vdsz1_rol_16 + lda p_x+1 + sta p_x+3 + lda p_x + sta p_x+2 + lda #0 + sta p_x + sta p_x+1 + // (signed long)p0.y + // [90] (signed dword~) splinePlot::$32 ← (signed dword)(signed word) splinePlot::p0_y#4 -- vdsz1=_sdword_vwsz2 + lda p0_y + sta _32 + lda p0_y+1 + sta _32+1 + ora #$7f + bmi !+ + lda #0 + !: + sta _32+2 + sta _32+3 + // p = { (signed long)p0.x*0x10000, (signed long)p0.y*0x10000 } + // [91] (signed dword) splinePlot::p_y#0 ← (signed dword~) splinePlot::$32 << (byte) $10 -- vdsz1=vdsz1_rol_16 + lda p_y+1 + sta p_y+3 + lda p_y + sta p_y+2 + lda #0 + sta p_y + sta p_y+1 + // [92] phi from splinePlot to splinePlot::@1 [phi:splinePlot->splinePlot::@1] + // [92] phi (byte) splinePlot::n#2 = (byte) 0 [phi:splinePlot->splinePlot::@1#0] -- vbuxx=vbuc1 + tax + // [92] phi (signed dword) splinePlot::i_y#2 = (signed dword) splinePlot::i_y#0 [phi:splinePlot->splinePlot::@1#1] -- register_copy + // [92] phi (signed dword) splinePlot::i_x#2 = (signed dword) splinePlot::i_x#0 [phi:splinePlot->splinePlot::@1#2] -- register_copy + // [92] phi (signed dword) splinePlot::p_y#2 = (signed dword) splinePlot::p_y#0 [phi:splinePlot->splinePlot::@1#3] -- register_copy + // [92] phi (signed dword) splinePlot::p_x#2 = (signed dword) splinePlot::p_x#0 [phi:splinePlot->splinePlot::@1#4] -- register_copy + // [92] phi from splinePlot::@2 to splinePlot::@1 [phi:splinePlot::@2->splinePlot::@1] + // [92] phi (byte) splinePlot::n#2 = (byte) splinePlot::n#1 [phi:splinePlot::@2->splinePlot::@1#0] -- register_copy + // [92] phi (signed dword) splinePlot::i_y#2 = (signed dword) splinePlot::i_y#1 [phi:splinePlot::@2->splinePlot::@1#1] -- register_copy + // [92] phi (signed dword) splinePlot::i_x#2 = (signed dword) splinePlot::i_x#1 [phi:splinePlot::@2->splinePlot::@1#2] -- register_copy + // [92] phi (signed dword) splinePlot::p_y#2 = (signed dword) splinePlot::p_y#1 [phi:splinePlot::@2->splinePlot::@1#3] -- register_copy + // [92] phi (signed dword) splinePlot::p_x#2 = (signed dword) splinePlot::p_x#1 [phi:splinePlot::@2->splinePlot::@1#4] -- register_copy + // splinePlot::@1 + b1: + // bitmap_plot( > p.x, < > p.y) + // [93] (word) bitmap_plot::x#0 ← > (signed dword) splinePlot::p_x#2 -- vwuz1=_hi_vdsz2 + lda p_x+2 + sta bitmap_plot.x + lda p_x+3 + sta bitmap_plot.x+1 + // > p.y + // [94] (word~) splinePlot::$35 ← > (signed dword) splinePlot::p_y#2 -- vwuz1=_hi_vdsz2 + lda p_y+2 + sta _35 + lda p_y+3 + sta _35+1 + // bitmap_plot( > p.x, < > p.y) + // [95] (byte) bitmap_plot::y#0 ← < (word~) splinePlot::$35 -- vbuaa=_lo_vwuz1 + lda _35 + // [96] call bitmap_plot + jsr bitmap_plot + // splinePlot::@2 + // p = { p.x+i.x, p.y+i.y } + // [97] (signed dword) splinePlot::p_x#1 ← (signed dword) splinePlot::p_x#2 + (signed dword) splinePlot::i_x#2 -- vdsz1=vdsz1_plus_vdsz2 + lda p_x + clc + adc i_x + sta p_x + lda p_x+1 + adc i_x+1 + sta p_x+1 + lda p_x+2 + adc i_x+2 + sta p_x+2 + lda p_x+3 + adc i_x+3 + sta p_x+3 + // [98] (signed dword) splinePlot::p_y#1 ← (signed dword) splinePlot::p_y#2 + (signed dword) splinePlot::i_y#2 -- vdsz1=vdsz1_plus_vdsz2 + lda p_y + clc + adc i_y + sta p_y + lda p_y+1 + adc i_y+1 + sta p_y+1 + lda p_y+2 + adc i_y+2 + sta p_y+2 + lda p_y+3 + adc i_y+3 + sta p_y+3 + // i = { i.x+j.x, i.y+j.y } + // [99] (signed dword) splinePlot::i_x#1 ← (signed dword) splinePlot::i_x#2 + (signed dword) splinePlot::j_x#0 -- vdsz1=vdsz1_plus_vdsz2 + lda i_x + clc + adc j_x + sta i_x + lda i_x+1 + adc j_x+1 + sta i_x+1 + lda i_x+2 + adc j_x+2 + sta i_x+2 + lda i_x+3 + adc j_x+3 + sta i_x+3 + // [100] (signed dword) splinePlot::i_y#1 ← (signed dword) splinePlot::i_y#2 + (signed dword) splinePlot::j_y#0 -- vdsz1=vdsz1_plus_vdsz2 + lda i_y + clc + adc j_y + sta i_y + lda i_y+1 + adc j_y+1 + sta i_y+1 + lda i_y+2 + adc j_y+2 + sta i_y+2 + lda i_y+3 + adc j_y+3 + sta i_y+3 + // for( char n: 0..16) + // [101] (byte) splinePlot::n#1 ← ++ (byte) splinePlot::n#2 -- vbuxx=_inc_vbuxx + inx + // [102] if((byte) splinePlot::n#1!=(byte) $11) goto splinePlot::@1 -- vbuxx_neq_vbuc1_then_la1 + cpx #$11 + bne b1 + // splinePlot::@return + // } + // [103] return + rts +} + // bitmap_plot +// Plot a single dot in the bitmap +// bitmap_plot(word zeropage($43) x, byte register(A) y) +bitmap_plot: { + .label _1 = $49 + .label plotter = $47 + .label x = $43 + // (byte*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] } + // [104] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuaa_word_pbuc2_derefidx_vbuaa + tay + lda bitmap_plot_yhi,y + sta plotter+1 + lda bitmap_plot_ylo,y + sta plotter + // x & $fff8 + // [105] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1 + lda x + and #<$fff8 + sta _1 + lda x+1 + and #>$fff8 + sta _1+1 + // plotter += ( x & $fff8 ) + // [106] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 + lda plotter + clc + adc _1 + sta plotter + lda plotter+1 + adc _1+1 + sta plotter+1 + // $ffffffff + sta CIA2_TIMER_AB+1 + lda #<$ffffffff>>$10 + sta CIA2_TIMER_AB+2 + lda #>$ffffffff>>$10 + sta CIA2_TIMER_AB+3 + // *CIA2_TIMER_B_CONTROL = CIA_TIMER_CONTROL_START | CIA_TIMER_CONTROL_CONTINUOUS | CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A + // [113] *((const byte*) CIA2_TIMER_B_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_START#0|(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 -- _deref_pbuc1=vbuc2 + lda #CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A + sta CIA2_TIMER_B_CONTROL + // *CIA2_TIMER_A_CONTROL = CIA_TIMER_CONTROL_START | CIA_TIMER_CONTROL_CONTINUOUS | CIA_TIMER_CONTROL_A_COUNT_CYCLES + // [114] *((const byte*) CIA2_TIMER_A_CONTROL#0) ← (const byte) CIA_TIMER_CONTROL_START#0 -- _deref_pbuc1=vbuc2 + lda #CIA_TIMER_CONTROL_START + sta CIA2_TIMER_A_CONTROL + // clock_start::@return + // } + // [115] return + rts +} + // bitmap_clear +// Clear all graphics on the bitmap +// bgcol - the background color to fill the screen with +// fgcol - the foreground color to fill the screen with +bitmap_clear: { + .const col = WHITE*$10 + // memset(bitmap_screen, col, 1000uw) + // [117] call memset + // [121] phi from bitmap_clear to memset [phi:bitmap_clear->memset] + // [121] phi (byte) memset::c#3 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 + ldx #col + // [121] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP_SCREEN#0 [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 + lda #BITMAP_SCREEN + sta memset.str+1 + // [121] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 + lda #<$3e8 + sta memset.num + lda #>$3e8 + sta memset.num+1 + jsr memset + // [118] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + // bitmap_clear::@1 + // memset(bitmap_gfx, 0, 8000uw) + // [119] call memset + // [121] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] + // [121] phi (byte) memset::c#3 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 + ldx #0 + // [121] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP_GRAPHICS#0 [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 + lda #BITMAP_GRAPHICS + sta memset.str+1 + // [121] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 + lda #<$1f40 + sta memset.num + lda #>$1f40 + sta memset.num+1 + jsr memset + // bitmap_clear::@return + // } + // [120] return + rts +} + // memset +// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. +// memset(void* zeropage($27) str, byte register(X) c, word zeropage($25) num) +memset: { + .label end = $25 + .label dst = $27 + .label num = $25 + .label str = $27 + // if(num>0) + // [122] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1 + lda num + beq breturn + lda num+1 + beq breturn + // memset::@1 + // end = (char*)str + num + // [123] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 + lda end + clc + adc str + sta end + lda end+1 + adc str+1 + sta end+1 + // [124] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3 + // [125] phi from memset::@1 memset::@2 to memset::@2 [phi:memset::@1/memset::@2->memset::@2] + // [125] phi (byte*) memset::dst#2 = (byte*~) memset::dst#3 [phi:memset::@1/memset::@2->memset::@2#0] -- register_copy + // memset::@2 + b2: + // *dst = c + // [126] *((byte*) memset::dst#2) ← (byte) memset::c#3 -- _deref_pbuz1=vbuxx + txa + ldy #0 + sta (dst),y + // for(char* dst = str; dst!=end; dst++) + // [127] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1 + inc dst + bne !+ + inc dst+1 + !: + // [128] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2 -- pbuz1_neq_pbuz2_then_la1 + lda dst+1 + cmp end+1 + bne b2 + lda dst + cmp end + bne b2 + // memset::@return + breturn: + // } + // [129] return + rts +} + // bitmap_init +// Initialize bitmap plotting tables +bitmap_init: { + .label _7 = $4b + .label yoffs = $29 + // [131] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + // [131] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 + ldx #0 + // [131] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 + lda #$80 + // [131] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + // [131] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + // [131] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + // bitmap_init::@1 + b1: + // bitmap_plot_bit[x] = bits + // [132] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + sta bitmap_plot_bit,x + // bits >>= 1 + // [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuaa=vbuaa_ror_1 + lsr + // if(bits==0) + // [134] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 + cmp #0 + bne b2 + // [136] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + // [136] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 + lda #$80 + // [135] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] + // bitmap_init::@6 + // [136] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] + // [136] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy + // bitmap_init::@2 + b2: + // for(byte x : 0..255) + // [137] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + inx + // [138] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 + cpx #0 + bne b1 + // [139] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + // [139] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP_GRAPHICS#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + lda #BITMAP_GRAPHICS + sta yoffs+1 + // [139] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + ldx #0 + // [139] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + // [139] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + // [139] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + // bitmap_init::@3 + b3: + // y&$7 + // [140] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1 + lda #7 + sax _7 + // yoffs + // [144] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + lda yoffs+1 + // bitmap_plot_yhi[y] = >yoffs + // [145] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + sta bitmap_plot_yhi,x + // if((y&$7)==7) + // [146] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 + lda #7 + cmp _7 + bne b4 + // bitmap_init::@5 + // yoffs = yoffs + 40*8 + // [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 + clc + lda yoffs + adc #<$28*8 + sta yoffs + lda yoffs+1 + adc #>$28*8 + sta yoffs+1 + // [148] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] + // [148] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy + // bitmap_init::@4 + b4: + // for(byte y : 0..255) + // [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + inx + // [150] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 + cpx #0 + bne b3 + // bitmap_init::@return + // } + // [151] return + rts +} + // File Data + print_hextab: .text "0123456789abcdef" + // Tables for the plotter - initialized by calling bitmap_init(); + bitmap_plot_ylo: .fill $100, 0 + bitmap_plot_yhi: .fill $100, 0 + bitmap_plot_bit: .fill $100, 0 + diff --git a/src/test/ref/complex/splines/splines.sym b/src/test/ref/complex/splines/splines.sym new file mode 100644 index 000000000..2961b3750 --- /dev/null +++ b/src/test/ref/complex/splines/splines.sym @@ -0,0 +1,347 @@ +(label) @1 +(label) @begin +(label) @end +(byte*) BITMAP_GRAPHICS +(const byte*) BITMAP_GRAPHICS#0 BITMAP_GRAPHICS = (byte*) 24576 +(byte*) BITMAP_SCREEN +(const byte*) BITMAP_SCREEN#0 BITMAP_SCREEN = (byte*) 23552 +(byte) BLACK +(byte*) CIA2_PORT_A +(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = (byte*) 56576 +(byte*) CIA2_PORT_A_DDR +(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = (byte*) 56578 +(dword*) CIA2_TIMER_AB +(const dword*) CIA2_TIMER_AB#0 CIA2_TIMER_AB = (dword*) 56580 +(byte*) CIA2_TIMER_A_CONTROL +(const byte*) CIA2_TIMER_A_CONTROL#0 CIA2_TIMER_A_CONTROL = (byte*) 56590 +(byte*) CIA2_TIMER_B_CONTROL +(const byte*) CIA2_TIMER_B_CONTROL#0 CIA2_TIMER_B_CONTROL = (byte*) 56591 +(byte) CIA_TIMER_CONTROL_A_COUNT_CYCLES +(byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A +(const byte) CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A#0 CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = (byte) $40 +(byte) CIA_TIMER_CONTROL_CONTINUOUS +(const byte) CIA_TIMER_CONTROL_CONTINUOUS#0 CIA_TIMER_CONTROL_CONTINUOUS = (byte) 0 +(byte) CIA_TIMER_CONTROL_START +(const byte) CIA_TIMER_CONTROL_START#0 CIA_TIMER_CONTROL_START = (byte) 1 +(byte) CIA_TIMER_CONTROL_STOP +(dword) CLOCKS_PER_INIT +(const dword) CLOCKS_PER_INIT#0 CLOCKS_PER_INIT = (byte) $12 +(byte*) D011 +(const byte*) D011#0 D011 = (byte*) 53265 +(byte*) D018 +(const byte*) D018#0 D018 = (byte*) 53272 +(byte*) SCREEN +(const byte*) SCREEN#0 SCREEN = (byte*) 1024 +(signed word) SplineVector16::x +(signed word) SplineVector16::y +(signed dword) SplineVector32::x +(signed dword) SplineVector32::y +(byte) VIC_BMM +(const byte) VIC_BMM#0 VIC_BMM = (byte) $20 +(byte) VIC_DEN +(const byte) VIC_DEN#0 VIC_DEN = (byte) $10 +(byte) VIC_RSEL +(const byte) VIC_RSEL#0 VIC_RSEL = (byte) 8 +(byte) WHITE +(const byte) WHITE#0 WHITE = (byte) 1 +(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol) +(label) bitmap_clear::@1 +(label) bitmap_clear::@return +(byte) bitmap_clear::bgcol +(byte) bitmap_clear::col +(const byte) bitmap_clear::col#0 col = (const byte) WHITE#0*(byte) $10 +(byte) bitmap_clear::fgcol +(byte*) bitmap_gfx +(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen) +(byte~) bitmap_init::$4 reg byte a 22.0 +(byte~) bitmap_init::$5 reg byte a 22.0 +(byte~) bitmap_init::$6 reg byte a 22.0 +(byte~) bitmap_init::$7 $7 zp ZP_BYTE:75 5.5 +(label) bitmap_init::@1 +(label) bitmap_init::@2 +(label) bitmap_init::@3 +(label) bitmap_init::@4 +(label) bitmap_init::@5 +(label) bitmap_init::@6 +(label) bitmap_init::@return +(byte) bitmap_init::bits +(byte) bitmap_init::bits#1 reg byte a 11.0 +(byte) bitmap_init::bits#3 reg byte a 16.5 +(byte) bitmap_init::bits#4 reg byte a 7.333333333333333 +(byte*) bitmap_init::gfx +(byte*) bitmap_init::screen +(byte) bitmap_init::x +(byte) bitmap_init::x#1 reg byte x 16.5 +(byte) bitmap_init::x#2 reg byte x 5.5 +(byte) bitmap_init::y +(byte) bitmap_init::y#1 reg byte x 16.5 +(byte) bitmap_init::y#2 reg byte x 5.5 +(byte*) bitmap_init::yoffs +(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:41 22.0 +(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:41 6.875 +(byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:41 11.0 +(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) +(word~) bitmap_plot::$1 $1 zp ZP_WORD:73 4.0 +(byte~) bitmap_plot::$2 reg byte a 4.0 +(label) bitmap_plot::@return +(byte*) bitmap_plot::plotter +(word) bitmap_plot::plotter#0 plotter zp ZP_WORD:71 1.0 +(byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:71 3.0 +(word) bitmap_plot::x +(word) bitmap_plot::x#0 x zp ZP_WORD:67 2.5 +(byte) bitmap_plot::y +(byte) bitmap_plot::y#0 reg byte a 15.0 +(byte[$100]) bitmap_plot_bit +(const byte[$100]) bitmap_plot_bit#0 bitmap_plot_bit = { fill( $100, 0) } +(byte[$100]) bitmap_plot_yhi +(const byte[$100]) bitmap_plot_yhi#0 bitmap_plot_yhi = { fill( $100, 0) } +(byte[$100]) bitmap_plot_ylo +(const byte[$100]) bitmap_plot_ylo#0 bitmap_plot_ylo = { fill( $100, 0) } +(byte*) bitmap_screen +(dword()) clock() +(label) clock::@return +(dword) clock::return +(dword) clock::return#0 return zp ZP_DWORD:43 1.3333333333333333 +(dword) clock::return#2 return zp ZP_DWORD:43 4.0 +(void()) clock_start() +(label) clock_start::@return +(void()) main() +(dword~) main::$12 $12 zp ZP_DWORD:43 4.0 +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@5 +(label) main::@6 +(label) main::@7 +(label) main::@8 +(label) main::@return +(dword) main::cyclecount +(dword) main::cyclecount#0 cyclecount zp ZP_DWORD:43 4.0 +(signed word) main::p0_x +(const signed word) main::p0_x#0 p0_x = (signed byte) $32 +(signed word) main::p0_y +(const signed word) main::p0_y#0 p0_y = (signed byte) $32 +(signed word) main::p1a_x +(const signed word) main::p1a_x#0 p1a_x = (signed byte) $64 +(signed word) main::p1a_y +(const signed word) main::p1a_y#0 p1a_y = (signed byte) $32 +(signed word) main::p1b_x +(const signed word) main::p1b_x#0 p1b_x = (signed byte) $32 +(signed word) main::p1b_y +(const signed word) main::p1b_y#0 p1b_y = (signed byte) $64 +(signed word) main::p2_x +(const signed word) main::p2_x#0 p2_x = (signed byte) $64 +(signed word) main::p2_y +(const signed word) main::p2_y#0 p2_y = (signed byte) $64 +(signed word) main::p3a_x +(const signed word) main::p3a_x#0 p3a_x = (signed word) $96 +(signed word) main::p3a_y +(const signed word) main::p3a_y#0 p3a_y = (signed byte) $64 +(signed word) main::p3b_x +(const signed word) main::p3b_x#0 p3b_x = (signed byte) $64 +(signed word) main::p3b_y +(const signed word) main::p3b_y#0 p3b_y = (signed word) $96 +(signed word) main::p4_x +(const signed word) main::p4_x#0 p4_x = (signed word) $96 +(signed word) main::p4_y +(const signed word) main::p4_y#0 p4_y = (signed word) $96 +(label) main::toD0181 +(word~) main::toD0181_$0 +(number~) main::toD0181_$1 +(number~) main::toD0181_$2 +(number~) main::toD0181_$3 +(word~) main::toD0181_$4 +(byte~) main::toD0181_$5 +(number~) main::toD0181_$6 +(number~) main::toD0181_$7 +(number~) main::toD0181_$8 +(byte*) main::toD0181_gfx +(byte) main::toD0181_return +(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) BITMAP_SCREEN#0&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP_GRAPHICS#0/(byte) 4&(byte) $f +(byte*) main::toD0181_screen +(label) main::vicSelectGfxBank1 +(byte~) main::vicSelectGfxBank1_$0 +(label) main::vicSelectGfxBank1_@1 +(byte*) main::vicSelectGfxBank1_gfx +(label) main::vicSelectGfxBank1_toDd001 +(word~) main::vicSelectGfxBank1_toDd001_$0 +(byte~) main::vicSelectGfxBank1_toDd001_$1 +(number~) main::vicSelectGfxBank1_toDd001_$2 +(number~) main::vicSelectGfxBank1_toDd001_$3 +(byte*) main::vicSelectGfxBank1_toDd001_gfx +(byte) main::vicSelectGfxBank1_toDd001_return +(const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte) 3^>(word)(const byte*) BITMAP_SCREEN#0/(byte) $40 +(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num) +(label) memset::@1 +(label) memset::@2 +(label) memset::@return +(byte) memset::c +(byte) memset::c#3 reg byte x 1.375 +(byte*) memset::dst +(byte*) memset::dst#1 dst zp ZP_WORD:39 16.5 +(byte*) memset::dst#2 dst zp ZP_WORD:39 17.5 +(byte*~) memset::dst#3 dst zp ZP_WORD:39 4.0 +(byte*) memset::end +(byte*) memset::end#0 end zp ZP_WORD:37 2.1666666666666665 +(word) memset::num +(word) memset::num#2 num zp ZP_WORD:37 2.0 +(void*) memset::return +(void*) memset::str +(void*) memset::str#3 str zp ZP_WORD:39 +(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at) +(byte~) print_byte_at::$0 reg byte a 4.0 +(byte~) print_byte_at::$2 reg byte y 2.0 +(label) print_byte_at::@1 +(label) print_byte_at::@return +(byte*) print_byte_at::at +(byte*) print_byte_at::at#0 at zp ZP_WORD:4 4.0 +(byte*) print_byte_at::at#1 at zp ZP_WORD:4 4.0 +(byte*) print_byte_at::at#2 at zp ZP_WORD:4 1.3333333333333333 +(byte) print_byte_at::b +(byte) print_byte_at::b#0 b zp ZP_BYTE:6 2.0 +(byte) print_byte_at::b#1 b zp ZP_BYTE:6 2.0 +(byte) print_byte_at::b#2 b zp ZP_BYTE:6 1.6 +(void()) print_char_at((byte) print_char_at::ch , (byte*) print_char_at::at) +(label) print_char_at::@return +(byte*) print_char_at::at +(byte*) print_char_at::at#0 at zp ZP_WORD:7 4.0 +(byte*) print_char_at::at#1 at zp ZP_WORD:7 2.0 +(byte*) print_char_at::at#2 at zp ZP_WORD:7 6.0 +(byte) print_char_at::ch +(byte) print_char_at::ch#0 reg byte x 2.0 +(byte) print_char_at::ch#1 reg byte x 4.0 +(byte) print_char_at::ch#2 reg byte x 6.0 +(void()) print_dword_at((dword) print_dword_at::dw , (byte*) print_dword_at::at) +(label) print_dword_at::@1 +(label) print_dword_at::@return +(byte*) print_dword_at::at +(dword) print_dword_at::dw +(dword) print_dword_at::dw#0 dw zp ZP_DWORD:43 2.0 +(byte[]) print_hextab +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(void()) print_word_at((word) print_word_at::w , (byte*) print_word_at::at) +(label) print_word_at::@1 +(label) print_word_at::@return +(byte*) print_word_at::at +(byte*) print_word_at::at#2 at zp ZP_WORD:4 0.8 +(word) print_word_at::w +(word) print_word_at::w#0 w zp ZP_WORD:2 4.0 +(word) print_word_at::w#1 w zp ZP_WORD:2 4.0 +(word) print_word_at::w#2 w zp ZP_WORD:2 2.0 +(void()) splinePlot((signed word) splinePlot::p0_x , (signed word) splinePlot::p0_y , (signed word) splinePlot::p1_x , (signed word) splinePlot::p1_y , (signed word) splinePlot::p2_x , (signed word) splinePlot::p2_y) +(signed word~) splinePlot::$1 $1 zp ZP_WORD:11 4.0 +(signed word~) splinePlot::$10 $10 zp ZP_WORD:49 4.0 +(signed dword~) splinePlot::$12 $12 zp ZP_DWORD:29 4.0 +(signed dword~) splinePlot::$13 $13 zp ZP_DWORD:29 1.0 +(signed dword~) splinePlot::$14 $14 zp ZP_DWORD:51 4.0 +(signed dword~) splinePlot::$15 $15 zp ZP_DWORD:51 4.0 +(signed dword~) splinePlot::$16 $16 zp ZP_DWORD:51 4.0 +(signed dword~) splinePlot::$18 $18 zp ZP_DWORD:33 4.0 +(signed dword~) splinePlot::$19 $19 zp ZP_DWORD:33 1.0 +(signed dword~) splinePlot::$20 $20 zp ZP_DWORD:55 4.0 +(signed dword~) splinePlot::$21 $21 zp ZP_DWORD:55 4.0 +(signed dword~) splinePlot::$22 $22 zp ZP_DWORD:55 4.0 +(signed dword~) splinePlot::$24 $24 zp ZP_DWORD:59 4.0 +(signed dword~) splinePlot::$25 $25 zp ZP_DWORD:59 4.0 +(signed dword~) splinePlot::$27 $27 zp ZP_DWORD:63 4.0 +(signed dword~) splinePlot::$28 $28 zp ZP_DWORD:63 4.0 +(signed dword~) splinePlot::$30 $30 zp ZP_DWORD:21 4.0 +(signed dword~) splinePlot::$32 $32 zp ZP_DWORD:25 4.0 +(word~) splinePlot::$35 $35 zp ZP_WORD:69 22.0 +(signed word~) splinePlot::$4 $4 zp ZP_WORD:17 4.0 +(signed word~) splinePlot::$6 $6 zp ZP_WORD:9 0.8571428571428571 +(signed word~) splinePlot::$7 $7 zp ZP_WORD:47 4.0 +(signed word~) splinePlot::$9 $9 zp ZP_WORD:15 1.0 +(label) splinePlot::@1 +(label) splinePlot::@2 +(label) splinePlot::@return +(signed word) splinePlot::a_x +(signed word) splinePlot::a_x#0 a_x zp ZP_WORD:11 0.1 +(signed word) splinePlot::a_y +(signed word) splinePlot::a_y#0 a_y zp ZP_WORD:17 0.1 +(signed word) splinePlot::b_x +(signed word) splinePlot::b_x#0 b_x zp ZP_WORD:47 0.4 +(signed word) splinePlot::b_y +(signed word) splinePlot::b_y#0 b_y zp ZP_WORD:49 0.2222222222222222 +(signed dword) splinePlot::i_x +(signed dword) splinePlot::i_x#0 i_x zp ZP_DWORD:29 0.23529411764705882 +(signed dword) splinePlot::i_x#1 i_x zp ZP_DWORD:29 5.5 +(signed dword) splinePlot::i_x#2 i_x zp ZP_DWORD:29 5.0 +(signed dword) splinePlot::i_y +(signed dword) splinePlot::i_y#0 i_y zp ZP_DWORD:33 0.36363636363636365 +(signed dword) splinePlot::i_y#1 i_y zp ZP_DWORD:33 7.333333333333333 +(signed dword) splinePlot::i_y#2 i_y zp ZP_DWORD:33 4.375 +(signed dword) splinePlot::j_x +(signed dword) splinePlot::j_x#0 j_x zp ZP_DWORD:59 0.6842105263157895 +(signed dword) splinePlot::j_y +(signed dword) splinePlot::j_y#0 j_y zp ZP_DWORD:63 0.8125 +(byte) splinePlot::n +(byte) splinePlot::n#1 reg byte x 16.5 +(byte) splinePlot::n#2 reg byte x 2.4444444444444446 +(struct SplineVector16) splinePlot::p0 +(signed word) splinePlot::p0_x +(signed word) splinePlot::p0_x#4 p0_x zp ZP_WORD:13 0.13793103448275862 +(signed word) splinePlot::p0_y +(signed word) splinePlot::p0_y#4 p0_y zp ZP_WORD:19 0.12903225806451613 +(struct SplineVector16) splinePlot::p1 +(signed word) splinePlot::p1_x +(signed word) splinePlot::p1_x#4 p1_x zp ZP_WORD:9 2.0 +(signed word) splinePlot::p1_y +(signed word) splinePlot::p1_y#4 p1_y zp ZP_WORD:15 0.5 +(struct SplineVector16) splinePlot::p2 +(signed word) splinePlot::p2_x +(signed word) splinePlot::p2_x#4 p2_x zp ZP_WORD:11 1.0 +(signed word) splinePlot::p2_y +(signed word) splinePlot::p2_y#4 p2_y zp ZP_WORD:17 0.4 +(signed dword) splinePlot::p_x +(signed dword) splinePlot::p_x#0 p_x zp ZP_DWORD:21 1.3333333333333333 +(signed dword) splinePlot::p_x#1 p_x zp ZP_DWORD:21 3.6666666666666665 +(signed dword) splinePlot::p_x#2 p_x zp ZP_DWORD:21 7.000000000000001 +(signed dword) splinePlot::p_y +(signed dword) splinePlot::p_y#0 p_y zp ZP_DWORD:25 4.0 +(signed dword) splinePlot::p_y#1 p_y zp ZP_DWORD:25 4.4 +(signed dword) splinePlot::p_y#2 p_y zp ZP_DWORD:25 5.833333333333333 + +zp ZP_WORD:2 [ print_word_at::w#2 print_word_at::w#0 print_word_at::w#1 ] +zp ZP_WORD:4 [ print_word_at::at#2 print_byte_at::at#2 print_byte_at::at#0 print_byte_at::at#1 ] +zp ZP_BYTE:6 [ print_byte_at::b#2 print_byte_at::b#0 print_byte_at::b#1 ] +reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] +zp ZP_WORD:7 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] +zp ZP_WORD:9 [ splinePlot::p1_x#4 splinePlot::$6 ] +zp ZP_WORD:11 [ splinePlot::p2_x#4 splinePlot::$1 splinePlot::a_x#0 ] +zp ZP_WORD:13 [ splinePlot::p0_x#4 ] +zp ZP_WORD:15 [ splinePlot::p1_y#4 splinePlot::$9 ] +zp ZP_WORD:17 [ splinePlot::p2_y#4 splinePlot::$4 splinePlot::a_y#0 ] +zp ZP_WORD:19 [ splinePlot::p0_y#4 ] +zp ZP_DWORD:21 [ splinePlot::p_x#2 splinePlot::p_x#0 splinePlot::p_x#1 splinePlot::$30 ] +zp ZP_DWORD:25 [ splinePlot::p_y#2 splinePlot::p_y#0 splinePlot::p_y#1 splinePlot::$32 ] +zp ZP_DWORD:29 [ splinePlot::i_x#2 splinePlot::i_x#0 splinePlot::i_x#1 splinePlot::$13 splinePlot::$12 ] +zp ZP_DWORD:33 [ splinePlot::i_y#2 splinePlot::i_y#0 splinePlot::i_y#1 splinePlot::$19 splinePlot::$18 ] +reg byte x [ splinePlot::n#2 splinePlot::n#1 ] +zp ZP_WORD:37 [ memset::num#2 memset::end#0 ] +zp ZP_WORD:39 [ memset::str#3 memset::dst#2 memset::dst#3 memset::dst#1 ] +reg byte x [ memset::c#3 ] +reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] +reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] +reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] +zp ZP_WORD:41 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] +zp ZP_DWORD:43 [ clock::return#2 main::$12 clock::return#0 main::cyclecount#0 print_dword_at::dw#0 ] +reg byte a [ print_byte_at::$0 ] +reg byte y [ print_byte_at::$2 ] +zp ZP_WORD:47 [ splinePlot::$7 splinePlot::b_x#0 ] +zp ZP_WORD:49 [ splinePlot::$10 splinePlot::b_y#0 ] +zp ZP_DWORD:51 [ splinePlot::$14 splinePlot::$15 splinePlot::$16 ] +zp ZP_DWORD:55 [ splinePlot::$20 splinePlot::$21 splinePlot::$22 ] +zp ZP_DWORD:59 [ splinePlot::$24 splinePlot::$25 splinePlot::j_x#0 ] +zp ZP_DWORD:63 [ splinePlot::$27 splinePlot::$28 splinePlot::j_y#0 ] +zp ZP_WORD:67 [ bitmap_plot::x#0 ] +zp ZP_WORD:69 [ splinePlot::$35 ] +reg byte a [ bitmap_plot::y#0 ] +zp ZP_WORD:71 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] +zp ZP_WORD:73 [ bitmap_plot::$1 ] +reg byte a [ bitmap_plot::$2 ] +zp ZP_BYTE:75 [ bitmap_init::$7 ] +reg byte a [ bitmap_init::$4 ] +reg byte a [ bitmap_init::$5 ] +reg byte a [ bitmap_init::$6 ] diff --git a/src/test/ref/sandbox.asm b/src/test/ref/sandbox.asm index fedf6fff9..1d8b5e7ff 100644 --- a/src/test/ref/sandbox.asm +++ b/src/test/ref/sandbox.asm @@ -39,15 +39,10 @@ main: { sta _2 lda #0 sta _2+1 - ldy #8 - cpy #0 - beq !e+ - !: - asl _3 - rol _3+1 - dey - bne !- - !e: + lda _3 + sta _3+1 + lda #0 + sta _3 lda TIMELO sta _4 lda #0 @@ -97,15 +92,10 @@ main: { sta _11 lda #0 sta _11+1 - ldy #8 - cpy #0 - beq !e+ - !: - asl _12 - rol _12+1 - dey - bne !- - !e: + lda _12 + sta _12+1 + lda #0 + sta _12 lda TIMELO sta _13 lda #0 @@ -612,19 +602,9 @@ div10: { lda val_2+1 adc val_1+1 sta val_2+1 - ldy #8 - lda val_2 sta _4 - lda val_2+1 + lda #0 sta _4+1 - cpy #0 - beq !e+ - !: - lsr _4+1 - ror _4 - dey - bne !- - !e: lda val_3 clc adc val_2 diff --git a/src/test/ref/sandbox.log b/src/test/ref/sandbox.log index b1f72d963..711cb8f0b 100644 --- a/src/test/ref/sandbox.log +++ b/src/test/ref/sandbox.log @@ -4380,20 +4380,11 @@ main: { sta _2 lda #0 sta _2+1 - // [17] (word~) main::$3 ← (word~) main::$2 << (byte) 8 -- vwuz1=vwuz2_rol_vbuc1 - ldy #8 + // [17] (word~) main::$3 ← (word~) main::$2 << (byte) 8 -- vwuz1=vwuz2_rol_8 lda _2 - sta _3 - lda _2+1 sta _3+1 - cpy #0 - beq !e+ - !: - asl _3 - rol _3+1 - dey - bne !- - !e: + lda #0 + sta _3 // [18] (word~) main::$4 ← (word)*((const byte*) TIMELO#0) -- vwuz1=_word__deref_pbuc1 lda TIMELO sta _4 @@ -4519,20 +4510,11 @@ main: { sta _11 lda #0 sta _11+1 - // [40] (word~) main::$12 ← (word~) main::$11 << (byte) 8 -- vwuz1=vwuz2_rol_vbuc1 - ldy #8 + // [40] (word~) main::$12 ← (word~) main::$11 << (byte) 8 -- vwuz1=vwuz2_rol_8 lda _11 - sta _12 - lda _11+1 sta _12+1 - cpy #0 - beq !e+ - !: - asl _12 - rol _12+1 - dey - bne !- - !e: + lda #0 + sta _12 // [41] (word~) main::$13 ← (word)*((const byte*) TIMELO#0) -- vwuz1=_word__deref_pbuc1 lda TIMELO sta _13 @@ -5671,20 +5653,11 @@ div10: { lda val_1+1 adc _3+1 sta val_2+1 - // [188] (word~) div10::$4 ← (word) div10::val#2 >> (byte) 8 -- vwuz1=vwuz2_ror_vbuc1 - ldy #8 - lda val_2 - sta _4 + // [188] (word~) div10::$4 ← (word) div10::val#2 >> (byte) 8 -- vwuz1=vwuz2_ror_8 lda val_2+1 + sta _4 + lda #0 sta _4+1 - cpy #0 - beq !e+ - !: - lsr _4+1 - ror _4 - dey - bne !- - !e: // [189] (word) div10::val#3 ← (word) div10::val#2 + (word~) div10::$4 -- vwuz1=vwuz2_plus_vwuz3 lda val_2 clc @@ -5886,7 +5859,7 @@ Statement [12] (word) div16u::return#2 ← (word) div16u::return#0 [ main::u#11 Statement [13] (word) main::v#1 ← (word) div16u::return#2 [ main::u#11 main::v#1 ] ( main:2 [ main::u#11 main::v#1 ] ) always clobbers reg byte a Statement [15] if(*((const byte*) zp2#0)<(byte) $c8) goto main::@2 [ main::u#11 main::v#1 ] ( main:2 [ main::u#11 main::v#1 ] ) always clobbers reg byte a Statement [16] (word~) main::$2 ← (word)*((const byte*) TIMEHI#0) [ main::u#11 main::v#1 main::$2 ] ( main:2 [ main::u#11 main::v#1 main::$2 ] ) always clobbers reg byte a -Statement [17] (word~) main::$3 ← (word~) main::$2 << (byte) 8 [ main::u#11 main::v#1 main::$3 ] ( main:2 [ main::u#11 main::v#1 main::$3 ] ) always clobbers reg byte a reg byte y +Statement [17] (word~) main::$3 ← (word~) main::$2 << (byte) 8 [ main::u#11 main::v#1 main::$3 ] ( main:2 [ main::u#11 main::v#1 main::$3 ] ) always clobbers reg byte a Statement [18] (word~) main::$4 ← (word)*((const byte*) TIMELO#0) [ main::u#11 main::v#1 main::$3 main::$4 ] ( main:2 [ main::u#11 main::v#1 main::$3 main::$4 ] ) always clobbers reg byte a Statement [19] (word) myprintf::w3#0 ← (word~) main::$3 + (word~) main::$4 [ main::u#11 main::v#1 myprintf::w3#0 ] ( main:2 [ main::u#11 main::v#1 myprintf::w3#0 ] ) always clobbers reg byte a Statement [20] (word) myprintf::w1#0 ← (word) main::u#11 [ main::u#11 main::v#1 myprintf::w3#0 myprintf::w1#0 ] ( main:2 [ main::u#11 main::v#1 myprintf::w3#0 myprintf::w1#0 ] ) always clobbers reg byte a @@ -5902,7 +5875,7 @@ Statement [35] (word) div10::return#2 ← (word) div10::return#0 [ main::u#15 di Statement [36] (word) main::v#2 ← (word) div10::return#2 [ main::u#15 main::v#2 ] ( main:2 [ main::u#15 main::v#2 ] ) always clobbers reg byte a Statement [38] if(*((const byte*) zp2#0)<(byte) $c8) goto main::@6 [ main::u#15 main::v#2 ] ( main:2 [ main::u#15 main::v#2 ] ) always clobbers reg byte a Statement [39] (word~) main::$11 ← (word)*((const byte*) TIMEHI#0) [ main::u#15 main::v#2 main::$11 ] ( main:2 [ main::u#15 main::v#2 main::$11 ] ) always clobbers reg byte a -Statement [40] (word~) main::$12 ← (word~) main::$11 << (byte) 8 [ main::u#15 main::v#2 main::$12 ] ( main:2 [ main::u#15 main::v#2 main::$12 ] ) always clobbers reg byte a reg byte y +Statement [40] (word~) main::$12 ← (word~) main::$11 << (byte) 8 [ main::u#15 main::v#2 main::$12 ] ( main:2 [ main::u#15 main::v#2 main::$12 ] ) always clobbers reg byte a Statement [41] (word~) main::$13 ← (word)*((const byte*) TIMELO#0) [ main::u#15 main::v#2 main::$12 main::$13 ] ( main:2 [ main::u#15 main::v#2 main::$12 main::$13 ] ) always clobbers reg byte a Statement [42] (word) myprintf::w3#1 ← (word~) main::$12 + (word~) main::$13 [ main::u#15 main::v#2 myprintf::w3#1 ] ( main:2 [ main::u#15 main::v#2 myprintf::w3#1 ] ) always clobbers reg byte a Statement [43] (word) myprintf::w1#1 ← (word) main::u#15 [ main::u#15 main::v#2 myprintf::w3#1 myprintf::w1#1 ] ( main:2 [ main::u#15 main::v#2 myprintf::w3#1 myprintf::w1#1 ] ) always clobbers reg byte a @@ -5976,7 +5949,7 @@ Statement [184] (word~) div10::$2 ← (word) div10::val#0 << (byte) 1 [ div10::v Statement [185] (word) div10::val#1 ← (word) div10::val#0 + (word~) div10::$2 [ div10::val#1 ] ( main:2::div10:34 [ main::u#15 div10::val#1 ] ) always clobbers reg byte a Statement [186] (word~) div10::$3 ← (word) div10::val#1 >> (byte) 4 [ div10::val#1 div10::$3 ] ( main:2::div10:34 [ main::u#15 div10::val#1 div10::$3 ] ) always clobbers reg byte a Statement [187] (word) div10::val#2 ← (word) div10::val#1 + (word~) div10::$3 [ div10::val#2 ] ( main:2::div10:34 [ main::u#15 div10::val#2 ] ) always clobbers reg byte a -Statement [188] (word~) div10::$4 ← (word) div10::val#2 >> (byte) 8 [ div10::val#2 div10::$4 ] ( main:2::div10:34 [ main::u#15 div10::val#2 div10::$4 ] ) always clobbers reg byte a reg byte y +Statement [188] (word~) div10::$4 ← (word) div10::val#2 >> (byte) 8 [ div10::val#2 div10::$4 ] ( main:2::div10:34 [ main::u#15 div10::val#2 div10::$4 ] ) always clobbers reg byte a Statement [189] (word) div10::val#3 ← (word) div10::val#2 + (word~) div10::$4 [ div10::val#3 ] ( main:2::div10:34 [ main::u#15 div10::val#3 ] ) always clobbers reg byte a Statement [190] (word) div10::return#0 ← (word) div10::val#3 >> (byte) 4 [ div10::return#0 ] ( main:2::div10:34 [ main::u#15 div10::return#0 ] ) always clobbers reg byte a Statement [192] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 ] ( main:2::div16u:11 [ main::u#11 divr16u::dividend#1 ] ) always clobbers reg byte a @@ -5997,7 +5970,7 @@ Statement [12] (word) div16u::return#2 ← (word) div16u::return#0 [ main::u#11 Statement [13] (word) main::v#1 ← (word) div16u::return#2 [ main::u#11 main::v#1 ] ( main:2 [ main::u#11 main::v#1 ] ) always clobbers reg byte a Statement [15] if(*((const byte*) zp2#0)<(byte) $c8) goto main::@2 [ main::u#11 main::v#1 ] ( main:2 [ main::u#11 main::v#1 ] ) always clobbers reg byte a Statement [16] (word~) main::$2 ← (word)*((const byte*) TIMEHI#0) [ main::u#11 main::v#1 main::$2 ] ( main:2 [ main::u#11 main::v#1 main::$2 ] ) always clobbers reg byte a -Statement [17] (word~) main::$3 ← (word~) main::$2 << (byte) 8 [ main::u#11 main::v#1 main::$3 ] ( main:2 [ main::u#11 main::v#1 main::$3 ] ) always clobbers reg byte a reg byte y +Statement [17] (word~) main::$3 ← (word~) main::$2 << (byte) 8 [ main::u#11 main::v#1 main::$3 ] ( main:2 [ main::u#11 main::v#1 main::$3 ] ) always clobbers reg byte a Statement [18] (word~) main::$4 ← (word)*((const byte*) TIMELO#0) [ main::u#11 main::v#1 main::$3 main::$4 ] ( main:2 [ main::u#11 main::v#1 main::$3 main::$4 ] ) always clobbers reg byte a Statement [19] (word) myprintf::w3#0 ← (word~) main::$3 + (word~) main::$4 [ main::u#11 main::v#1 myprintf::w3#0 ] ( main:2 [ main::u#11 main::v#1 myprintf::w3#0 ] ) always clobbers reg byte a Statement [20] (word) myprintf::w1#0 ← (word) main::u#11 [ main::u#11 main::v#1 myprintf::w3#0 myprintf::w1#0 ] ( main:2 [ main::u#11 main::v#1 myprintf::w3#0 myprintf::w1#0 ] ) always clobbers reg byte a @@ -6013,7 +5986,7 @@ Statement [35] (word) div10::return#2 ← (word) div10::return#0 [ main::u#15 di Statement [36] (word) main::v#2 ← (word) div10::return#2 [ main::u#15 main::v#2 ] ( main:2 [ main::u#15 main::v#2 ] ) always clobbers reg byte a Statement [38] if(*((const byte*) zp2#0)<(byte) $c8) goto main::@6 [ main::u#15 main::v#2 ] ( main:2 [ main::u#15 main::v#2 ] ) always clobbers reg byte a Statement [39] (word~) main::$11 ← (word)*((const byte*) TIMEHI#0) [ main::u#15 main::v#2 main::$11 ] ( main:2 [ main::u#15 main::v#2 main::$11 ] ) always clobbers reg byte a -Statement [40] (word~) main::$12 ← (word~) main::$11 << (byte) 8 [ main::u#15 main::v#2 main::$12 ] ( main:2 [ main::u#15 main::v#2 main::$12 ] ) always clobbers reg byte a reg byte y +Statement [40] (word~) main::$12 ← (word~) main::$11 << (byte) 8 [ main::u#15 main::v#2 main::$12 ] ( main:2 [ main::u#15 main::v#2 main::$12 ] ) always clobbers reg byte a Statement [41] (word~) main::$13 ← (word)*((const byte*) TIMELO#0) [ main::u#15 main::v#2 main::$12 main::$13 ] ( main:2 [ main::u#15 main::v#2 main::$12 main::$13 ] ) always clobbers reg byte a Statement [42] (word) myprintf::w3#1 ← (word~) main::$12 + (word~) main::$13 [ main::u#15 main::v#2 myprintf::w3#1 ] ( main:2 [ main::u#15 main::v#2 myprintf::w3#1 ] ) always clobbers reg byte a Statement [43] (word) myprintf::w1#1 ← (word) main::u#15 [ main::u#15 main::v#2 myprintf::w3#1 myprintf::w1#1 ] ( main:2 [ main::u#15 main::v#2 myprintf::w3#1 myprintf::w1#1 ] ) always clobbers reg byte a @@ -6071,7 +6044,7 @@ Statement [184] (word~) div10::$2 ← (word) div10::val#0 << (byte) 1 [ div10::v Statement [185] (word) div10::val#1 ← (word) div10::val#0 + (word~) div10::$2 [ div10::val#1 ] ( main:2::div10:34 [ main::u#15 div10::val#1 ] ) always clobbers reg byte a Statement [186] (word~) div10::$3 ← (word) div10::val#1 >> (byte) 4 [ div10::val#1 div10::$3 ] ( main:2::div10:34 [ main::u#15 div10::val#1 div10::$3 ] ) always clobbers reg byte a Statement [187] (word) div10::val#2 ← (word) div10::val#1 + (word~) div10::$3 [ div10::val#2 ] ( main:2::div10:34 [ main::u#15 div10::val#2 ] ) always clobbers reg byte a -Statement [188] (word~) div10::$4 ← (word) div10::val#2 >> (byte) 8 [ div10::val#2 div10::$4 ] ( main:2::div10:34 [ main::u#15 div10::val#2 div10::$4 ] ) always clobbers reg byte a reg byte y +Statement [188] (word~) div10::$4 ← (word) div10::val#2 >> (byte) 8 [ div10::val#2 div10::$4 ] ( main:2::div10:34 [ main::u#15 div10::val#2 div10::$4 ] ) always clobbers reg byte a Statement [189] (word) div10::val#3 ← (word) div10::val#2 + (word~) div10::$4 [ div10::val#3 ] ( main:2::div10:34 [ main::u#15 div10::val#3 ] ) always clobbers reg byte a Statement [190] (word) div10::return#0 ← (word) div10::val#3 >> (byte) 4 [ div10::return#0 ] ( main:2::div10:34 [ main::u#15 div10::return#0 ] ) always clobbers reg byte a Statement [192] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 ] ( main:2::div16u:11 [ main::u#11 divr16u::dividend#1 ] ) always clobbers reg byte a @@ -6163,56 +6136,56 @@ Uplift Scope [utoa] 57.17: zp ZP_WORD:29 [ utoa::value#12 utoa::value#3 utoa::va Uplift Scope [Print] Uplift Scope [] -Uplifting [divr16u] best 466508 combination zp ZP_WORD:39 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:43 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:41 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] zp ZP_WORD:109 [ divr16u::return#2 ] -Uplifting [append] best 466508 combination zp ZP_WORD:37 [ append::value#5 append::value#8 append::value#1 append::value#2 append::value#3 append::value#4 append::value#0 ] zp ZP_WORD:33 [ append::dst#4 append::dst#1 append::dst#2 append::dst#3 ] zp ZP_WORD:35 [ append::sub#6 ] zp ZP_WORD:83 [ append::return#10 ] zp ZP_WORD:85 [ append::return#4 ] zp ZP_WORD:87 [ append::return#3 ] zp ZP_WORD:89 [ append::return#2 ] -Uplifting [div10] best 466508 combination zp ZP_WORD:60 [ div10::return#2 ] zp ZP_WORD:58 [ div10::val#4 ] zp ZP_WORD:107 [ div10::return#0 ] zp ZP_WORD:91 [ div10::$0 ] zp ZP_WORD:95 [ div10::$2 ] zp ZP_WORD:99 [ div10::$3 ] zp ZP_WORD:103 [ div10::$4 ] zp ZP_WORD:105 [ div10::val#3 ] zp ZP_WORD:93 [ div10::val#0 ] zp ZP_WORD:97 [ div10::val#1 ] zp ZP_WORD:101 [ div10::val#2 ] -Uplifting [div16u] best 466508 combination zp ZP_WORD:48 [ div16u::return#2 ] zp ZP_WORD:46 [ div16u::dividend#0 ] zp ZP_WORD:111 [ div16u::return#0 ] -Uplifting [main] best 466508 combination zp ZP_WORD:52 [ main::$2 ] zp ZP_WORD:56 [ main::$4 ] zp ZP_WORD:64 [ main::$11 ] zp ZP_WORD:68 [ main::$13 ] zp ZP_WORD:2 [ main::u#11 main::u#2 ] zp ZP_WORD:4 [ main::u#15 main::u#4 ] zp ZP_WORD:50 [ main::v#1 ] zp ZP_WORD:62 [ main::v#2 ] zp ZP_WORD:54 [ main::$3 ] zp ZP_WORD:66 [ main::$12 ] -Uplifting [utoa] best 466477 combination zp ZP_WORD:29 [ utoa::value#12 utoa::value#3 utoa::value#10 utoa::value#2 utoa::value#11 utoa::value#6 utoa::value#4 utoa::value#0 utoa::value#1 ] zp ZP_WORD:31 [ utoa::dst#12 utoa::dst#4 utoa::dst#13 utoa::dst#2 utoa::dst#10 utoa::dst#16 utoa::dst#1 ] reg byte x [ utoa::bStarted#7 utoa::bStarted#6 utoa::bStarted#5 ] reg byte a [ utoa::$16 ] reg byte a [ utoa::$17 ] zp ZP_WORD:81 [ utoa::dst#3 ] -Uplifting [Print] best 466477 combination -Uplifting [] best 466477 combination +Uplifting [divr16u] best 466046 combination zp ZP_WORD:39 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:43 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:41 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] zp ZP_WORD:109 [ divr16u::return#2 ] +Uplifting [append] best 466046 combination zp ZP_WORD:37 [ append::value#5 append::value#8 append::value#1 append::value#2 append::value#3 append::value#4 append::value#0 ] zp ZP_WORD:33 [ append::dst#4 append::dst#1 append::dst#2 append::dst#3 ] zp ZP_WORD:35 [ append::sub#6 ] zp ZP_WORD:83 [ append::return#10 ] zp ZP_WORD:85 [ append::return#4 ] zp ZP_WORD:87 [ append::return#3 ] zp ZP_WORD:89 [ append::return#2 ] +Uplifting [div10] best 466046 combination zp ZP_WORD:60 [ div10::return#2 ] zp ZP_WORD:58 [ div10::val#4 ] zp ZP_WORD:107 [ div10::return#0 ] zp ZP_WORD:91 [ div10::$0 ] zp ZP_WORD:95 [ div10::$2 ] zp ZP_WORD:99 [ div10::$3 ] zp ZP_WORD:103 [ div10::$4 ] zp ZP_WORD:105 [ div10::val#3 ] zp ZP_WORD:93 [ div10::val#0 ] zp ZP_WORD:97 [ div10::val#1 ] zp ZP_WORD:101 [ div10::val#2 ] +Uplifting [div16u] best 466046 combination zp ZP_WORD:48 [ div16u::return#2 ] zp ZP_WORD:46 [ div16u::dividend#0 ] zp ZP_WORD:111 [ div16u::return#0 ] +Uplifting [main] best 466046 combination zp ZP_WORD:52 [ main::$2 ] zp ZP_WORD:56 [ main::$4 ] zp ZP_WORD:64 [ main::$11 ] zp ZP_WORD:68 [ main::$13 ] zp ZP_WORD:2 [ main::u#11 main::u#2 ] zp ZP_WORD:4 [ main::u#15 main::u#4 ] zp ZP_WORD:50 [ main::v#1 ] zp ZP_WORD:62 [ main::v#2 ] zp ZP_WORD:54 [ main::$3 ] zp ZP_WORD:66 [ main::$12 ] +Uplifting [utoa] best 466015 combination zp ZP_WORD:29 [ utoa::value#12 utoa::value#3 utoa::value#10 utoa::value#2 utoa::value#11 utoa::value#6 utoa::value#4 utoa::value#0 utoa::value#1 ] zp ZP_WORD:31 [ utoa::dst#12 utoa::dst#4 utoa::dst#13 utoa::dst#2 utoa::dst#10 utoa::dst#16 utoa::dst#1 ] reg byte x [ utoa::bStarted#7 utoa::bStarted#6 utoa::bStarted#5 ] reg byte a [ utoa::$16 ] reg byte a [ utoa::$17 ] zp ZP_WORD:81 [ utoa::dst#3 ] +Uplifting [Print] best 466015 combination +Uplifting [] best 466015 combination Attempting to uplift remaining variables inzp ZP_BYTE:24 [ myprintf::bLen#11 myprintf::bLen#13 myprintf::bLen#12 myprintf::bLen#23 myprintf::bLen#14 myprintf::return#0 myprintf::bLen#28 myprintf::bLen#7 myprintf::bLen#3 myprintf::bLen#24 myprintf::bLen#6 myprintf::bLen#1 myprintf::bLen#4 ] -Uplifting [myprintf] best 466477 combination zp ZP_BYTE:24 [ myprintf::bLen#11 myprintf::bLen#13 myprintf::bLen#12 myprintf::bLen#23 myprintf::bLen#14 myprintf::return#0 myprintf::bLen#28 myprintf::bLen#7 myprintf::bLen#3 myprintf::bLen#24 myprintf::bLen#6 myprintf::bLen#1 myprintf::bLen#4 ] +Uplifting [myprintf] best 466015 combination zp ZP_BYTE:24 [ myprintf::bLen#11 myprintf::bLen#13 myprintf::bLen#12 myprintf::bLen#23 myprintf::bLen#14 myprintf::return#0 myprintf::bLen#28 myprintf::bLen#7 myprintf::bLen#3 myprintf::bLen#24 myprintf::bLen#6 myprintf::bLen#1 myprintf::bLen#4 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ myprintf::bDigits#10 myprintf::bDigits#8 myprintf::bDigits#14 myprintf::bDigits#24 myprintf::bDigits#25 myprintf::bDigits#1 myprintf::bDigits#16 myprintf::bDigits#3 myprintf::bDigits#2 ] -Uplifting [myprintf] best 466477 combination zp ZP_BYTE:25 [ myprintf::bDigits#10 myprintf::bDigits#8 myprintf::bDigits#14 myprintf::bDigits#24 myprintf::bDigits#25 myprintf::bDigits#1 myprintf::bDigits#16 myprintf::bDigits#3 myprintf::bDigits#2 ] +Uplifting [myprintf] best 466015 combination zp ZP_BYTE:25 [ myprintf::bDigits#10 myprintf::bDigits#8 myprintf::bDigits#14 myprintf::bDigits#24 myprintf::bDigits#25 myprintf::bDigits#1 myprintf::bDigits#16 myprintf::bDigits#3 myprintf::bDigits#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:23 [ myprintf::digit#3 myprintf::digit#2 ] -Uplifting [myprintf] best 454477 combination reg byte x [ myprintf::digit#3 myprintf::digit#2 ] +Uplifting [myprintf] best 454015 combination reg byte x [ myprintf::digit#3 myprintf::digit#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:22 [ myprintf::b#17 myprintf::b#5 ] -Uplifting [myprintf] best 454477 combination zp ZP_BYTE:22 [ myprintf::b#17 myprintf::b#5 ] +Uplifting [myprintf] best 454015 combination zp ZP_BYTE:22 [ myprintf::b#17 myprintf::b#5 ] Attempting to uplift remaining variables inzp ZP_BYTE:26 [ myprintf::$41 ] -Uplifting [myprintf] best 445477 combination reg byte a [ myprintf::$41 ] +Uplifting [myprintf] best 445015 combination reg byte a [ myprintf::$41 ] Attempting to uplift remaining variables inzp ZP_BYTE:27 [ myprintf::b#25 myprintf::b#1 myprintf::b#6 ] -Uplifting [myprintf] best 441727 combination reg byte x [ myprintf::b#25 myprintf::b#1 myprintf::b#6 ] +Uplifting [myprintf] best 441265 combination reg byte x [ myprintf::b#25 myprintf::b#1 myprintf::b#6 ] Attempting to uplift remaining variables inzp ZP_BYTE:15 [ myprintf::bArg#12 myprintf::bArg#10 myprintf::bArg#1 ] -Uplifting [myprintf] best 441727 combination zp ZP_BYTE:15 [ myprintf::bArg#12 myprintf::bArg#10 myprintf::bArg#1 ] +Uplifting [myprintf] best 441265 combination zp ZP_BYTE:15 [ myprintf::bArg#12 myprintf::bArg#10 myprintf::bArg#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:14 [ myprintf::bFormat#10 myprintf::bFormat#4 ] -Uplifting [myprintf] best 441727 combination zp ZP_BYTE:14 [ myprintf::bFormat#10 myprintf::bFormat#4 ] +Uplifting [myprintf] best 441265 combination zp ZP_BYTE:14 [ myprintf::bFormat#10 myprintf::bFormat#4 ] Attempting to uplift remaining variables inzp ZP_BYTE:70 [ myprintf::$17 ] -Uplifting [myprintf] best 441127 combination reg byte a [ myprintf::$17 ] +Uplifting [myprintf] best 440665 combination reg byte a [ myprintf::$17 ] Attempting to uplift remaining variables inzp ZP_BYTE:71 [ myprintf::$18 ] -Uplifting [myprintf] best 440527 combination reg byte a [ myprintf::$18 ] +Uplifting [myprintf] best 440065 combination reg byte a [ myprintf::$18 ] Attempting to uplift remaining variables inzp ZP_BYTE:73 [ myprintf::$24 ] -Uplifting [myprintf] best 439927 combination reg byte a [ myprintf::$24 ] +Uplifting [myprintf] best 439465 combination reg byte a [ myprintf::$24 ] Attempting to uplift remaining variables inzp ZP_BYTE:75 [ myprintf::$25 ] -Uplifting [myprintf] best 439327 combination reg byte a [ myprintf::$25 ] +Uplifting [myprintf] best 438865 combination reg byte a [ myprintf::$25 ] Attempting to uplift remaining variables inzp ZP_BYTE:77 [ myprintf::$31 ] -Uplifting [myprintf] best 438727 combination reg byte a [ myprintf::$31 ] +Uplifting [myprintf] best 438265 combination reg byte a [ myprintf::$31 ] Attempting to uplift remaining variables inzp ZP_BYTE:78 [ myprintf::$49 ] -Uplifting [myprintf] best 438127 combination reg byte a [ myprintf::$49 ] +Uplifting [myprintf] best 437665 combination reg byte a [ myprintf::$49 ] Attempting to uplift remaining variables inzp ZP_BYTE:19 [ myprintf::bLeadZero#10 myprintf::bLeadZero#18 ] -Uplifting [myprintf] best 438127 combination zp ZP_BYTE:19 [ myprintf::bLeadZero#10 myprintf::bLeadZero#18 ] +Uplifting [myprintf] best 437665 combination zp ZP_BYTE:19 [ myprintf::bLeadZero#10 myprintf::bLeadZero#18 ] Attempting to uplift remaining variables inzp ZP_BYTE:18 [ myprintf::bTrailing#10 myprintf::bTrailing#21 ] -Uplifting [myprintf] best 438127 combination zp ZP_BYTE:18 [ myprintf::bTrailing#10 myprintf::bTrailing#21 ] +Uplifting [myprintf] best 437665 combination zp ZP_BYTE:18 [ myprintf::bTrailing#10 myprintf::bTrailing#21 ] Attempting to uplift remaining variables inzp ZP_BYTE:20 [ myprintf::$23 ] -Uplifting [myprintf] best 437227 combination reg byte a [ myprintf::$23 ] +Uplifting [myprintf] best 436765 combination reg byte a [ myprintf::$23 ] Attempting to uplift remaining variables inzp ZP_BYTE:21 [ myprintf::$30 ] -Uplifting [myprintf] best 436327 combination reg byte a [ myprintf::$30 ] +Uplifting [myprintf] best 435865 combination reg byte a [ myprintf::$30 ] Attempting to uplift remaining variables inzp ZP_BYTE:72 [ myprintf::b#15 ] -Uplifting [myprintf] best 436227 combination reg byte x [ myprintf::b#15 ] +Uplifting [myprintf] best 435765 combination reg byte x [ myprintf::b#15 ] Attempting to uplift remaining variables inzp ZP_BYTE:76 [ myprintf::b#16 ] -Uplifting [myprintf] best 436127 combination reg byte x [ myprintf::b#16 ] +Uplifting [myprintf] best 435665 combination reg byte x [ myprintf::b#16 ] Attempting to uplift remaining variables inzp ZP_BYTE:74 [ myprintf::bLen#10 ] -Uplifting [myprintf] best 435227 combination reg byte y [ myprintf::bLen#10 ] +Uplifting [myprintf] best 434765 combination reg byte y [ myprintf::bLen#10 ] Coalescing zero page register with common assignment [ zp ZP_WORD:29 [ utoa::value#12 utoa::value#3 utoa::value#10 utoa::value#2 utoa::value#11 utoa::value#6 utoa::value#4 utoa::value#0 utoa::value#1 ] ] with [ zp ZP_WORD:37 [ append::value#5 append::value#8 append::value#1 append::value#2 append::value#3 append::value#4 append::value#0 ] ] - score: 4 Coalescing zero page register with common assignment [ zp ZP_WORD:31 [ utoa::dst#12 utoa::dst#4 utoa::dst#13 utoa::dst#2 utoa::dst#10 utoa::dst#16 utoa::dst#1 ] ] with [ zp ZP_WORD:33 [ append::dst#4 append::dst#1 append::dst#2 append::dst#3 ] ] - score: 3 Coalescing zero page register with common assignment [ zp ZP_WORD:2 [ main::u#11 main::u#2 ] ] with [ zp ZP_WORD:6 [ myprintf::w1#6 myprintf::w1#0 myprintf::w1#1 ] ] - score: 1 @@ -6354,16 +6327,11 @@ main: { sta _2 lda #0 sta _2+1 - // [17] (word~) main::$3 ← (word~) main::$2 << (byte) 8 -- vwuz1=vwuz1_rol_vbuc1 - ldy #8 - cpy #0 - beq !e+ - !: - asl _3 - rol _3+1 - dey - bne !- - !e: + // [17] (word~) main::$3 ← (word~) main::$2 << (byte) 8 -- vwuz1=vwuz1_rol_8 + lda _3 + sta _3+1 + lda #0 + sta _3 // [18] (word~) main::$4 ← (word)*((const byte*) TIMELO#0) -- vwuz1=_word__deref_pbuc1 lda TIMELO sta _4 @@ -6469,16 +6437,11 @@ main: { sta _11 lda #0 sta _11+1 - // [40] (word~) main::$12 ← (word~) main::$11 << (byte) 8 -- vwuz1=vwuz1_rol_vbuc1 - ldy #8 - cpy #0 - beq !e+ - !: - asl _12 - rol _12+1 - dey - bne !- - !e: + // [40] (word~) main::$12 ← (word~) main::$11 << (byte) 8 -- vwuz1=vwuz1_rol_8 + lda _12 + sta _12+1 + lda #0 + sta _12 // [41] (word~) main::$13 ← (word)*((const byte*) TIMELO#0) -- vwuz1=_word__deref_pbuc1 lda TIMELO sta _13 @@ -7472,20 +7435,11 @@ div10: { lda val_2+1 adc val_1+1 sta val_2+1 - // [188] (word~) div10::$4 ← (word) div10::val#2 >> (byte) 8 -- vwuz1=vwuz2_ror_vbuc1 - ldy #8 - lda val_2 - sta _4 + // [188] (word~) div10::$4 ← (word) div10::val#2 >> (byte) 8 -- vwuz1=vwuz2_ror_8 lda val_2+1 + sta _4 + lda #0 sta _4+1 - cpy #0 - beq !e+ - !: - lsr _4+1 - ror _4 - dey - bne !- - !e: // [189] (word) div10::val#3 ← (word) div10::val#2 + (word~) div10::$4 -- vwuz1=vwuz2_plus_vwuz1 lda val_3 clc @@ -7744,6 +7698,7 @@ Removing instruction ldy bLen Replacing instruction ldy #0 with TAY Removing instruction ldy #0 Removing instruction lda val_1+1 +Removing instruction lda val_2+1 Replacing instruction lda #<0 with TXA Removing instruction lda #>0 Removing instruction lda #<0 @@ -7922,14 +7877,14 @@ Succesful ASM optimization Pass5RedundantLabelElimination Removing instruction bbegin: Removing instruction b20: Succesful ASM optimization Pass5UnusedLabelElimination -Fixing long branch [294] beq b22 to bne -Fixing long branch [299] bcs b22 to bcc -Fixing long branch [182] beq b2 to bne -Fixing long branch [206] bcc b23 to bcs -Fixing long branch [209] beq b23 to bne -Fixing long branch [220] beq b6 to bne -Fixing long branch [413] bne b5 to beq -Fixing long branch [418] bcs b5 to bcc +Fixing long branch [284] beq b22 to bne +Fixing long branch [289] bcs b22 to bcc +Fixing long branch [172] beq b2 to bne +Fixing long branch [196] bcc b23 to bcs +Fixing long branch [199] beq b23 to bne +Fixing long branch [210] beq b6 to bne +Fixing long branch [403] bne b5 to beq +Fixing long branch [408] bcs b5 to bcc FINAL SYMBOL TABLE (label) @1 @@ -8280,7 +8235,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 354955 +Score: 354730 // File Comments // Basic Upstart @@ -8363,16 +8318,11 @@ main: { lda #0 sta _2+1 // (word)*TIMEHI << 8 - // [17] (word~) main::$3 ← (word~) main::$2 << (byte) 8 -- vwuz1=vwuz1_rol_vbuc1 - ldy #8 - cpy #0 - beq !e+ - !: - asl _3 - rol _3+1 - dey - bne !- - !e: + // [17] (word~) main::$3 ← (word~) main::$2 << (byte) 8 -- vwuz1=vwuz1_rol_8 + lda _3 + sta _3+1 + lda #0 + sta _3 // (word)*TIMELO // [18] (word~) main::$4 ← (word)*((const byte*) TIMELO#0) -- vwuz1=_word__deref_pbuc1 lda TIMELO @@ -8473,16 +8423,11 @@ main: { lda #0 sta _11+1 // (word)*TIMEHI << 8 - // [40] (word~) main::$12 ← (word~) main::$11 << (byte) 8 -- vwuz1=vwuz1_rol_vbuc1 - ldy #8 - cpy #0 - beq !e+ - !: - asl _12 - rol _12+1 - dey - bne !- - !e: + // [40] (word~) main::$12 ← (word~) main::$11 << (byte) 8 -- vwuz1=vwuz1_rol_8 + lda _12 + sta _12+1 + lda #0 + sta _12 // (word)*TIMELO // [41] (word~) main::$13 ← (word)*((const byte*) TIMELO#0) -- vwuz1=_word__deref_pbuc1 lda TIMELO @@ -9434,20 +9379,10 @@ div10: { adc val_1+1 sta val_2+1 // val >> 8 - // [188] (word~) div10::$4 ← (word) div10::val#2 >> (byte) 8 -- vwuz1=vwuz2_ror_vbuc1 - ldy #8 - lda val_2 + // [188] (word~) div10::$4 ← (word) div10::val#2 >> (byte) 8 -- vwuz1=vwuz2_ror_8 sta _4 - lda val_2+1 + lda #0 sta _4+1 - cpy #0 - beq !e+ - !: - lsr _4+1 - ror _4 - dey - bne !- - !e: // val += val >> 8 // [189] (word) div10::val#3 ← (word) div10::val#2 + (word~) div10::$4 -- vwuz1=vwuz2_plus_vwuz1 lda val_3 diff --git a/src/test/ref/test-multiply-16bit.asm b/src/test/ref/test-multiply-16bit.asm index b65e24b7d..7548acc17 100644 --- a/src/test/ref/test-multiply-16bit.asm +++ b/src/test/ref/test-multiply-16bit.asm @@ -234,7 +234,13 @@ mul16s_error: { print_sdword: { .label dw = $b lda dw+3 - bpl b1 + bmi b1 + lda #' ' + jsr print_char + b2: + jsr print_dword + rts + b1: lda #'-' jsr print_char sec @@ -254,8 +260,17 @@ print_sdword: { eor #$ff adc #0 sta dw+3 - b1: - jsr print_dword + jmp b2 +} +// Print a single char +// print_char(byte register(A) ch) +print_char: { + ldy #0 + sta (print_char_cursor),y + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: rts } // Print a dword as HEX @@ -303,17 +318,6 @@ print_byte: { jsr print_char rts } -// Print a single char -// print_char(byte register(A) ch) -print_char: { - ldy #0 - sta (print_char_cursor),y - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - rts -} // Print a signed word as HEX // print_sword(signed word zeropage(3) w) print_sword: { diff --git a/src/test/ref/test-multiply-16bit.cfg b/src/test/ref/test-multiply-16bit.cfg index 496b54db4..8bf745a5c 100644 --- a/src/test/ref/test-multiply-16bit.cfg +++ b/src/test/ref/test-multiply-16bit.cfg @@ -27,13 +27,13 @@ main::@return: scope:[main] from main::@3 [12] return to:@return mul16s_compare: scope:[mul16s_compare] from main::@3 - [13] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 + [13] (byte*~) print_char_cursor#222 ← (byte*) print_line_cursor#1 to:mul16s_compare::@1 mul16s_compare::@1: scope:[mul16s_compare] from mul16s_compare mul16s_compare::@8 [14] (byte) mul16s_compare::i#12 ← phi( mul16s_compare/(byte) 0 mul16s_compare::@8/(byte) mul16s_compare::i#1 ) [14] (signed word) mul16s_compare::b#6 ← phi( mul16s_compare/(signed word) -$7fff mul16s_compare::@8/(signed word) mul16s_compare::b#1 ) [14] (signed word) mul16s_compare::a#6 ← phi( mul16s_compare/(signed word) -$7fff mul16s_compare::@8/(signed word) mul16s_compare::a#1 ) - [14] (byte*) print_char_cursor#146 ← phi( mul16s_compare/(byte*~) print_char_cursor#220 mul16s_compare::@8/(byte*) print_char_cursor#130 ) + [14] (byte*) print_char_cursor#149 ← phi( mul16s_compare/(byte*~) print_char_cursor#222 mul16s_compare::@8/(byte*) print_char_cursor#132 ) [15] call print_str to:mul16s_compare::@2 mul16s_compare::@2: scope:[mul16s_compare] from mul16s_compare::@1 mul16s_compare::@5 @@ -104,7 +104,7 @@ mul16s_compare::@9: scope:[mul16s_compare] from mul16s_compare::@8 [54] call print_ln to:mul16s_compare::@13 mul16s_compare::@13: scope:[mul16s_compare] from mul16s_compare::@9 - [55] (byte*~) print_char_cursor#180 ← (byte*) print_line_cursor#1 + [55] (byte*~) print_char_cursor#183 ← (byte*) print_line_cursor#1 [56] call print_str to:mul16s_compare::@14 mul16s_compare::@14: scope:[mul16s_compare] from mul16s_compare::@13 @@ -112,23 +112,23 @@ mul16s_compare::@14: scope:[mul16s_compare] from mul16s_compare::@13 [58] call print_ln to:mul16s_compare::@return print_ln: scope:[print_ln] from mul16s_compare::@14 mul16s_compare::@9 mul16s_error::@10 mul16u_compare::@14 mul16u_compare::@9 mul16u_error::@10 - [59] (byte*) print_char_cursor#131 ← phi( mul16s_compare::@9/(byte*) print_char_cursor#130 mul16s_compare::@14/(byte*) print_char_cursor#130 mul16s_error::@10/(byte*) print_char_cursor#21 mul16u_compare::@9/(byte*) print_char_cursor#130 mul16u_compare::@14/(byte*) print_char_cursor#130 mul16u_error::@10/(byte*) print_char_cursor#21 ) + [59] (byte*) print_char_cursor#133 ← phi( mul16s_compare::@9/(byte*) print_char_cursor#132 mul16s_compare::@14/(byte*) print_char_cursor#132 mul16s_error::@10/(byte*) print_char_cursor#22 mul16u_compare::@9/(byte*) print_char_cursor#132 mul16u_compare::@14/(byte*) print_char_cursor#132 mul16u_error::@10/(byte*) print_char_cursor#22 ) [59] (byte*) print_line_cursor#43 ← phi( mul16s_compare::@9/(byte*) print_line_cursor#1 mul16s_compare::@14/(byte*) print_line_cursor#1 mul16s_error::@10/(byte*) print_line_cursor#1 mul16u_compare::@9/(byte*) 1024 mul16u_compare::@14/(byte*) print_line_cursor#1 mul16u_error::@10/(byte*) 1024 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 [60] (byte*) print_line_cursor#22 ← phi( print_ln/(byte*) print_line_cursor#43 print_ln::@1/(byte*) print_line_cursor#1 ) [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte) $28 - [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#131) goto print_ln::@1 + [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 [63] return to:@return print_str: scope:[print_str] from mul16s_compare::@1 mul16s_compare::@13 mul16s_error mul16s_error::@2 mul16s_error::@4 mul16s_error::@6 mul16s_error::@8 mul16u_compare::@1 mul16u_compare::@13 mul16u_error mul16u_error::@2 mul16u_error::@4 mul16u_error::@6 mul16u_error::@8 - [64] (byte*) print_char_cursor#151 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#146 mul16s_compare::@13/(byte*~) print_char_cursor#180 mul16s_error/(byte*) print_char_cursor#130 mul16s_error::@2/(byte*) print_char_cursor#21 mul16s_error::@4/(byte*) print_char_cursor#21 mul16s_error::@6/(byte*) print_char_cursor#21 mul16s_error::@8/(byte*) print_char_cursor#21 mul16u_compare::@1/(byte*) print_char_cursor#142 mul16u_compare::@13/(byte*~) print_char_cursor#187 mul16u_error/(byte*) print_char_cursor#130 mul16u_error::@2/(byte*) print_char_cursor#21 mul16u_error::@4/(byte*) print_char_cursor#21 mul16u_error::@6/(byte*) print_char_cursor#21 mul16u_error::@8/(byte*) print_char_cursor#21 ) + [64] (byte*) print_char_cursor#154 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#149 mul16s_compare::@13/(byte*~) print_char_cursor#183 mul16s_error/(byte*) print_char_cursor#132 mul16s_error::@2/(byte*) print_char_cursor#22 mul16s_error::@4/(byte*) print_char_cursor#22 mul16s_error::@6/(byte*) print_char_cursor#22 mul16s_error::@8/(byte*) print_char_cursor#22 mul16u_compare::@1/(byte*) print_char_cursor#145 mul16u_compare::@13/(byte*~) print_char_cursor#190 mul16u_error/(byte*) print_char_cursor#132 mul16u_error::@2/(byte*) print_char_cursor#22 mul16u_error::@4/(byte*) print_char_cursor#22 mul16u_error::@6/(byte*) print_char_cursor#22 mul16u_error::@8/(byte*) print_char_cursor#22 ) [64] (byte*) print_str::str#17 ← phi( mul16s_compare::@1/(const string) str mul16s_compare::@13/(const string) mul16s_compare::str1 mul16s_error/(const string) mul16s_error::str mul16s_error::@2/(const string) str1 mul16s_error::@4/(const string) str2 mul16s_error::@6/(const string) str3 mul16s_error::@8/(const string) str4 mul16u_compare::@1/(const string) str mul16u_compare::@13/(const string) mul16u_compare::str1 mul16u_error/(const string) mul16u_error::str mul16u_error::@2/(const string) str1 mul16u_error::@4/(const string) str2 mul16u_error::@6/(const string) str3 mul16u_error::@8/(const string) str4 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [65] (byte*) print_char_cursor#130 ← phi( print_str/(byte*) print_char_cursor#151 print_str::@2/(byte*) print_char_cursor#1 ) + [65] (byte*) print_char_cursor#132 ← phi( print_str/(byte*) print_char_cursor#154 print_str::@2/(byte*) print_char_cursor#1 ) [65] (byte*) print_str::str#15 ← phi( print_str/(byte*) print_str::str#17 print_str::@2/(byte*) print_str::str#0 ) [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 to:print_str::@return @@ -136,8 +136,8 @@ print_str::@return: scope:[print_str] from print_str::@1 [67] return to:@return print_str::@2: scope:[print_str] from print_str::@1 - [68] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#15) - [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#130 + [68] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#15) + [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 [70] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#15 to:print_str::@1 mul16s_error: scope:[mul16s_error] from mul16s_compare::@7 @@ -189,433 +189,436 @@ mul16s_error::@return: scope:[mul16s_error] from mul16s_error::@10 to:@return print_sdword: scope:[print_sdword] from mul16s_error::@5 mul16s_error::@7 mul16s_error::@9 [94] (signed dword) print_sdword::dw#4 ← phi( mul16s_error::@5/(signed dword) print_sdword::dw#1 mul16s_error::@7/(signed dword) print_sdword::dw#2 mul16s_error::@9/(signed dword) print_sdword::dw#3 ) - [95] if((signed dword) print_sdword::dw#4>=(signed byte) 0) goto print_sdword::@1 - to:print_sdword::@2 -print_sdword::@2: scope:[print_sdword] from print_sdword + [95] if((signed dword) print_sdword::dw#4<(signed byte) 0) goto print_sdword::@1 + to:print_sdword::@3 +print_sdword::@3: scope:[print_sdword] from print_sdword [96] phi() [97] call print_char - to:print_sdword::@3 -print_sdword::@3: scope:[print_sdword] from print_sdword::@2 - [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 - to:print_sdword::@1 -print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@3 - [99] (byte*) print_char_cursor#137 ← phi( print_sdword/(byte*) print_char_cursor#130 print_sdword::@3/(byte*) print_char_cursor#21 ) - [99] (signed dword) print_sdword::dw#5 ← phi( print_sdword/(signed dword) print_sdword::dw#4 print_sdword::@3/(signed dword) print_sdword::dw#0 ) - [100] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 - [101] call print_dword + to:print_sdword::@2 +print_sdword::@2: scope:[print_sdword] from print_sdword::@3 print_sdword::@4 + [98] (signed dword) print_sdword::dw#6 ← phi( print_sdword::@4/(signed dword) print_sdword::dw#0 print_sdword::@3/(signed dword) print_sdword::dw#4 ) + [99] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#6 + [100] call print_dword to:print_sdword::@return -print_sdword::@return: scope:[print_sdword] from print_sdword::@1 - [102] return +print_sdword::@return: scope:[print_sdword] from print_sdword::@2 + [101] return to:@return -print_dword: scope:[print_dword] from mul16u_error::@5 mul16u_error::@7 mul16u_error::@9 print_sdword::@1 - [103] (byte*) print_char_cursor#136 ← phi( mul16u_error::@5/(byte*) print_char_cursor#130 mul16u_error::@7/(byte*) print_char_cursor#130 mul16u_error::@9/(byte*) print_char_cursor#130 print_sdword::@1/(byte*) print_char_cursor#137 ) - [103] (dword) print_dword::dw#4 ← phi( mul16u_error::@5/(dword) print_dword::dw#1 mul16u_error::@7/(dword) print_dword::dw#2 mul16u_error::@9/(dword) print_dword::dw#3 print_sdword::@1/(dword) print_dword::dw#0 ) - [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 - [105] call print_word - to:print_dword::@1 -print_dword::@1: scope:[print_dword] from print_dword - [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 - [107] call print_word - to:print_dword::@return -print_dword::@return: scope:[print_dword] from print_dword::@1 - [108] return - to:@return -print_word: scope:[print_word] from mul16u_error::@1 mul16u_error::@3 print_dword print_dword::@1 print_sword::@2 - [109] (byte*) print_char_cursor#135 ← phi( mul16u_error::@1/(byte*) print_char_cursor#130 mul16u_error::@3/(byte*) print_char_cursor#130 print_dword/(byte*) print_char_cursor#136 print_dword::@1/(byte*) print_char_cursor#21 print_sword::@2/(byte*) print_char_cursor#21 ) - [109] (word) print_word::w#5 ← phi( mul16u_error::@1/(word) print_word::w#3 mul16u_error::@3/(word) print_word::w#4 print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 ) - [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 - [111] call print_byte - to:print_word::@1 -print_word::@1: scope:[print_word] from print_word - [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 - [113] call print_byte - to:print_word::@return -print_word::@return: scope:[print_word] from print_word::@1 - [114] return - to:@return -print_byte: scope:[print_byte] from print_word print_word::@1 - [115] (byte*) print_char_cursor#139 ← phi( print_word/(byte*) print_char_cursor#135 print_word::@1/(byte*) print_char_cursor#21 ) - [115] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 - [117] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [118] call print_char - to:print_byte::@1 -print_byte::@1: scope:[print_byte] from print_byte - [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f - [120] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [121] call print_char - to:print_byte::@return -print_byte::@return: scope:[print_byte] from print_byte::@1 - [122] return - to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sdword::@2 print_sword::@1 print_sword::@3 - [123] (byte*) print_char_cursor#86 ← phi( print_byte/(byte*) print_char_cursor#139 print_byte::@1/(byte*) print_char_cursor#21 print_sdword::@2/(byte*) print_char_cursor#130 print_sword::@1/(byte*) print_char_cursor#130 print_sword::@3/(byte*) print_char_cursor#130 ) - [123] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sdword::@2/(byte) '-' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) - [124] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#5 - [125] (byte*) print_char_cursor#21 ← ++ (byte*) print_char_cursor#86 +print_sdword::@1: scope:[print_sdword] from print_sdword + [102] phi() + [103] call print_char + to:print_sdword::@4 +print_sdword::@4: scope:[print_sdword] from print_sdword::@1 + [104] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 + to:print_sdword::@2 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sdword::@1 print_sdword::@3 print_sword::@1 print_sword::@3 + [105] (byte*) print_char_cursor#88 ← phi( print_byte/(byte*) print_char_cursor#142 print_byte::@1/(byte*) print_char_cursor#22 print_sdword::@1/(byte*) print_char_cursor#132 print_sdword::@3/(byte*) print_char_cursor#132 print_sword::@1/(byte*) print_char_cursor#132 print_sword::@3/(byte*) print_char_cursor#132 ) + [105] (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sdword::@1/(byte) '-' print_sdword::@3/(byte) ' ' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [106] *((byte*) print_char_cursor#88) ← (byte) print_char::ch#6 + [107] (byte*) print_char_cursor#22 ← ++ (byte*) print_char_cursor#88 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [126] return + [108] return + to:@return +print_dword: scope:[print_dword] from mul16u_error::@5 mul16u_error::@7 mul16u_error::@9 print_sdword::@2 + [109] (byte*) print_char_cursor#138 ← phi( mul16u_error::@5/(byte*) print_char_cursor#132 mul16u_error::@7/(byte*) print_char_cursor#132 mul16u_error::@9/(byte*) print_char_cursor#132 print_sdword::@2/(byte*) print_char_cursor#22 ) + [109] (dword) print_dword::dw#4 ← phi( mul16u_error::@5/(dword) print_dword::dw#1 mul16u_error::@7/(dword) print_dword::dw#2 mul16u_error::@9/(dword) print_dword::dw#3 print_sdword::@2/(dword) print_dword::dw#0 ) + [110] (word) print_word::w#1 ← > (dword) print_dword::dw#4 + [111] call print_word + to:print_dword::@1 +print_dword::@1: scope:[print_dword] from print_dword + [112] (word) print_word::w#2 ← < (dword) print_dword::dw#4 + [113] call print_word + to:print_dword::@return +print_dword::@return: scope:[print_dword] from print_dword::@1 + [114] return + to:@return +print_word: scope:[print_word] from mul16u_error::@1 mul16u_error::@3 print_dword print_dword::@1 print_sword::@2 + [115] (byte*) print_char_cursor#137 ← phi( mul16u_error::@1/(byte*) print_char_cursor#132 mul16u_error::@3/(byte*) print_char_cursor#132 print_dword/(byte*) print_char_cursor#138 print_dword::@1/(byte*) print_char_cursor#22 print_sword::@2/(byte*) print_char_cursor#22 ) + [115] (word) print_word::w#5 ← phi( mul16u_error::@1/(word) print_word::w#3 mul16u_error::@3/(word) print_word::w#4 print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 ) + [116] (byte) print_byte::b#0 ← > (word) print_word::w#5 + [117] call print_byte + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [118] (byte) print_byte::b#1 ← < (word) print_word::w#5 + [119] call print_byte + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [120] return + to:@return +print_byte: scope:[print_byte] from print_word print_word::@1 + [121] (byte*) print_char_cursor#142 ← phi( print_word/(byte*) print_char_cursor#137 print_word::@1/(byte*) print_char_cursor#22 ) + [121] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) + [122] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 + [123] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [124] call print_char + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [125] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f + [126] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [127] call print_char + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [128] return to:@return print_sword: scope:[print_sword] from mul16s_error::@1 mul16s_error::@3 - [127] (signed word) print_sword::w#3 ← phi( mul16s_error::@1/(signed word) print_sword::w#1 mul16s_error::@3/(signed word) print_sword::w#2 ) - [128] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 + [129] (signed word) print_sword::w#3 ← phi( mul16s_error::@1/(signed word) print_sword::w#1 mul16s_error::@3/(signed word) print_sword::w#2 ) + [130] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 to:print_sword::@3 print_sword::@3: scope:[print_sword] from print_sword - [129] phi() - [130] call print_char + [131] phi() + [132] call print_char to:print_sword::@2 print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 - [131] (signed word) print_sword::w#5 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#3 ) - [132] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 - [133] call print_word + [133] (signed word) print_sword::w#5 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#3 ) + [134] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 + [135] call print_word to:print_sword::@return print_sword::@return: scope:[print_sword] from print_sword::@2 - [134] return + [136] return to:@return print_sword::@1: scope:[print_sword] from print_sword - [135] phi() - [136] call print_char + [137] phi() + [138] call print_char to:print_sword::@4 print_sword::@4: scope:[print_sword] from print_sword::@1 - [137] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 + [139] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 to:print_sword::@2 mulf16s: scope:[mulf16s] from mul16s_compare::@11 - [138] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 - [139] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 - [140] call mulf16u - [141] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 + [140] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 + [141] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 + [142] call mulf16u + [143] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 to:mulf16s::@5 mulf16s::@5: scope:[mulf16s] from mulf16s - [142] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 - [143] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 + [144] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 + [145] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 to:mulf16s::@3 mulf16s::@3: scope:[mulf16s] from mulf16s::@5 - [144] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 - [145] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 - [146] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 + [146] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 + [147] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 + [148] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 to:mulf16s::@1 mulf16s::@1: scope:[mulf16s] from mulf16s::@3 mulf16s::@5 - [147] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@5/(dword) mulf16s::m#0 ) - [148] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 + [149] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@5/(dword) mulf16s::m#0 ) + [150] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 to:mulf16s::@4 mulf16s::@4: scope:[mulf16s] from mulf16s::@1 - [149] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 - [150] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 - [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 + [151] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 + [152] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 + [153] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 to:mulf16s::@2 mulf16s::@2: scope:[mulf16s] from mulf16s::@1 mulf16s::@4 - [152] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) - [153] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 + [154] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) + [155] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 to:mulf16s::@return mulf16s::@return: scope:[mulf16s] from mulf16s::@2 - [154] return + [156] return to:@return mulf16u: scope:[mulf16u] from mul16u_compare::@11 mulf16s - [155] (word) mulf16u::b#2 ← phi( mul16u_compare::@11/(word) mulf16u::b#1 mulf16s/(word) mulf16u::b#0 ) - [155] (word) mulf16u::a#2 ← phi( mul16u_compare::@11/(word) mulf16u::a#1 mulf16s/(word) mulf16u::a#0 ) - [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 - [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 + [157] (word) mulf16u::b#2 ← phi( mul16u_compare::@11/(word) mulf16u::b#1 mulf16s/(word) mulf16u::b#0 ) + [157] (word) mulf16u::a#2 ← phi( mul16u_compare::@11/(word) mulf16u::a#1 mulf16s/(word) mulf16u::a#0 ) + [158] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 + [159] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } - [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) + [161] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) to:mulf16u::@return mulf16u::@return: scope:[mulf16u] from mulf16u - [160] return + [162] return to:@return mul16s: scope:[mul16s] from mul16s_compare::@10 - [161] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 - [162] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 - [163] call mul16u - [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + [163] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 + [164] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 + [165] call mul16u + [166] (dword) mul16u::return#2 ← (dword) mul16u::res#2 to:mul16s::@5 mul16s::@5: scope:[mul16s] from mul16s - [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - [166] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 + [167] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + [168] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 to:mul16s::@3 mul16s::@3: scope:[mul16s] from mul16s::@5 - [167] (word~) mul16s::$9 ← > (dword) mul16s::m#0 - [168] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 - [169] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [169] (word~) mul16s::$9 ← > (dword) mul16s::m#0 + [170] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 + [171] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@5 - [170] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@5/(dword) mul16s::m#0 ) - [171] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 + [172] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@5/(dword) mul16s::m#0 ) + [173] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 to:mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s::@1 - [172] (word~) mul16s::$13 ← > (dword) mul16s::m#5 - [173] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 - [174] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 + [174] (word~) mul16s::$13 ← > (dword) mul16s::m#5 + [175] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 + [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4 - [175] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 ) - [176] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 + [177] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 ) + [178] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [177] return + [179] return to:@return mul16u: scope:[mul16u] from mul16s mul16u_compare::@10 - [178] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mul16u_compare::@10/(word) mul16u::a#2 ) - [178] (dword) mul16u::mb#0 ← phi( mul16s/(word) mul16u::b#0 mul16u_compare::@10/(word) mul16u::b#1 ) + [180] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mul16u_compare::@10/(word) mul16u::a#2 ) + [180] (dword) mul16u::mb#0 ← phi( mul16s/(word) mul16u::b#0 mul16u_compare::@10/(word) mul16u::b#1 ) to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@3 - [179] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) - [179] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) - [179] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) - [180] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 + [181] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) + [181] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) + [181] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) + [182] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [181] return + [183] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [182] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 - [183] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 + [184] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 + [185] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 - [184] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [186] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@3 mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4 - [185] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) - [186] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 - [187] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 + [187] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) + [188] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 + [189] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 to:mul16u::@1 muls16s: scope:[muls16s] from mul16s_compare::@2 - [188] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 + [190] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 to:muls16s::@2 muls16s::@2: scope:[muls16s] from muls16s - [189] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 + [191] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 to:muls16s::@3 muls16s::@3: scope:[muls16s] from muls16s::@2 muls16s::@3 - [190] (signed word) muls16s::j#2 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed word) muls16s::j#1 ) - [190] (signed dword) muls16s::m#3 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 ) - [191] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 - [192] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 - [193] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 + [192] (signed word) muls16s::j#2 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed word) muls16s::j#1 ) + [192] (signed dword) muls16s::m#3 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 ) + [193] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 + [194] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 + [195] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 to:muls16s::@1 muls16s::@1: scope:[muls16s] from muls16s::@2 muls16s::@3 muls16s::@4 - [194] (signed dword) muls16s::return#0 ← phi( muls16s::@4/(signed dword) muls16s::m#2 muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 ) + [196] (signed dword) muls16s::return#0 ← phi( muls16s::@4/(signed dword) muls16s::m#2 muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 ) to:muls16s::@return muls16s::@return: scope:[muls16s] from muls16s::@1 - [195] return + [197] return to:@return muls16s::@4: scope:[muls16s] from muls16s muls16s::@4 - [196] (signed word) muls16s::i#2 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed word) muls16s::i#1 ) - [196] (signed dword) muls16s::m#5 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed dword) muls16s::m#2 ) - [197] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 - [198] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 - [199] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 + [198] (signed word) muls16s::i#2 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed word) muls16s::i#1 ) + [198] (signed dword) muls16s::m#5 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed dword) muls16s::m#2 ) + [199] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 + [200] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 + [201] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 to:muls16s::@1 mul16u_compare: scope:[mul16u_compare] from main::@2 - [200] phi() + [202] phi() to:mul16u_compare::@1 mul16u_compare::@1: scope:[mul16u_compare] from mul16u_compare mul16u_compare::@8 - [201] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(byte) mul16u_compare::i#1 ) - [201] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::b#1 ) - [201] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::a#1 ) - [201] (byte*) print_char_cursor#142 ← phi( mul16u_compare/(byte*) 1024 mul16u_compare::@8/(byte*) print_char_cursor#130 ) - [202] call print_str + [203] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(byte) mul16u_compare::i#1 ) + [203] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::b#1 ) + [203] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::a#1 ) + [203] (byte*) print_char_cursor#145 ← phi( mul16u_compare/(byte*) 1024 mul16u_compare::@8/(byte*) print_char_cursor#132 ) + [204] call print_str to:mul16u_compare::@2 mul16u_compare::@2: scope:[mul16u_compare] from mul16u_compare::@1 mul16u_compare::@5 - [203] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 ) - [203] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 ) - [203] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 ) - [204] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b - [205] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd - [206] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 - [207] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 - [208] call muls16u - [209] (dword) muls16u::return#2 ← (dword) muls16u::return#0 + [205] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 ) + [205] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 ) + [205] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 ) + [206] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b + [207] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd + [208] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 + [209] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 + [210] call muls16u + [211] (dword) muls16u::return#2 ← (dword) muls16u::return#0 to:mul16u_compare::@10 mul16u_compare::@10: scope:[mul16u_compare] from mul16u_compare::@2 - [210] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 - [211] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 - [212] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 - [213] call mul16u - [214] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [212] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 + [213] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 + [214] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 + [215] call mul16u + [216] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mul16u_compare::@11 mul16u_compare::@11: scope:[mul16u_compare] from mul16u_compare::@10 - [215] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 - [216] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 - [217] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 - [218] call mulf16u - [219] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 + [217] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 + [218] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 + [219] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 + [220] call mulf16u + [221] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 to:mul16u_compare::@12 mul16u_compare::@12: scope:[mul16u_compare] from mul16u_compare::@11 - [220] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 - [221] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 + [222] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 + [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 to:mul16u_compare::@6 mul16u_compare::@6: scope:[mul16u_compare] from mul16u_compare::@12 - [222] phi() + [224] phi() to:mul16u_compare::@3 mul16u_compare::@3: scope:[mul16u_compare] from mul16u_compare::@12 mul16u_compare::@6 - [223] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@12/(byte) 1 mul16u_compare::@6/(byte) 0 ) - [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 + [225] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@12/(byte) 1 mul16u_compare::@6/(byte) 0 ) + [226] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 to:mul16u_compare::@4 mul16u_compare::@15: scope:[mul16u_compare] from mul16u_compare::@3 - [225] phi() + [227] phi() to:mul16u_compare::@4 mul16u_compare::@4: scope:[mul16u_compare] from mul16u_compare::@15 mul16u_compare::@3 - [226] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@15/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte) 0 ) - [227] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 + [228] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@15/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte) 0 ) + [229] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 to:mul16u_compare::@7 mul16u_compare::@7: scope:[mul16u_compare] from mul16u_compare::@4 - [228] *((const byte*) BGCOL#0) ← (byte) 2 - [229] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 - [230] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 - [231] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 - [232] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 - [233] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 - [234] call mul16u_error + [230] *((const byte*) BGCOL#0) ← (byte) 2 + [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 + [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 + [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 + [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 + [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 + [236] call mul16u_error to:mul16u_compare::@return mul16u_compare::@return: scope:[mul16u_compare] from mul16u_compare::@14 mul16u_compare::@7 - [235] return + [237] return to:@return mul16u_compare::@5: scope:[mul16u_compare] from mul16u_compare::@4 - [236] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 - [237] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 + [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 + [239] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 to:mul16u_compare::@8 mul16u_compare::@8: scope:[mul16u_compare] from mul16u_compare::@5 - [238] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 - [239] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 + [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 + [241] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 to:mul16u_compare::@9 mul16u_compare::@9: scope:[mul16u_compare] from mul16u_compare::@8 - [240] phi() - [241] call print_ln + [242] phi() + [243] call print_ln to:mul16u_compare::@13 mul16u_compare::@13: scope:[mul16u_compare] from mul16u_compare::@9 - [242] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1 - [243] call print_str + [244] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 + [245] call print_str to:mul16u_compare::@14 mul16u_compare::@14: scope:[mul16u_compare] from mul16u_compare::@13 - [244] phi() - [245] call print_ln + [246] phi() + [247] call print_ln to:mul16u_compare::@return mul16u_error: scope:[mul16u_error] from mul16u_compare::@7 - [246] phi() - [247] call print_str + [248] phi() + [249] call print_str to:mul16u_error::@1 mul16u_error::@1: scope:[mul16u_error] from mul16u_error - [248] (word) print_word::w#3 ← (word) mul16u_error::a#0 - [249] call print_word + [250] (word) print_word::w#3 ← (word) mul16u_error::a#0 + [251] call print_word to:mul16u_error::@2 mul16u_error::@2: scope:[mul16u_error] from mul16u_error::@1 - [250] phi() - [251] call print_str + [252] phi() + [253] call print_str to:mul16u_error::@3 mul16u_error::@3: scope:[mul16u_error] from mul16u_error::@2 - [252] (word) print_word::w#4 ← (word) mul16u_error::b#0 - [253] call print_word + [254] (word) print_word::w#4 ← (word) mul16u_error::b#0 + [255] call print_word to:mul16u_error::@4 mul16u_error::@4: scope:[mul16u_error] from mul16u_error::@3 - [254] phi() - [255] call print_str + [256] phi() + [257] call print_str to:mul16u_error::@5 mul16u_error::@5: scope:[mul16u_error] from mul16u_error::@4 - [256] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 - [257] call print_dword + [258] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 + [259] call print_dword to:mul16u_error::@6 mul16u_error::@6: scope:[mul16u_error] from mul16u_error::@5 - [258] phi() - [259] call print_str + [260] phi() + [261] call print_str to:mul16u_error::@7 mul16u_error::@7: scope:[mul16u_error] from mul16u_error::@6 - [260] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 - [261] call print_dword + [262] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 + [263] call print_dword to:mul16u_error::@8 mul16u_error::@8: scope:[mul16u_error] from mul16u_error::@7 - [262] phi() - [263] call print_str + [264] phi() + [265] call print_str to:mul16u_error::@9 mul16u_error::@9: scope:[mul16u_error] from mul16u_error::@8 - [264] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 - [265] call print_dword + [266] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 + [267] call print_dword to:mul16u_error::@10 mul16u_error::@10: scope:[mul16u_error] from mul16u_error::@9 - [266] phi() - [267] call print_ln + [268] phi() + [269] call print_ln to:mul16u_error::@return mul16u_error::@return: scope:[mul16u_error] from mul16u_error::@10 - [268] return + [270] return to:@return muls16u: scope:[muls16u] from mul16u_compare::@2 - [269] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 + [271] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 to:muls16u::@2 muls16u::@2: scope:[muls16u] from muls16u muls16u::@2 - [270] (word) muls16u::i#2 ← phi( muls16u/(byte) 0 muls16u::@2/(word) muls16u::i#1 ) - [270] (dword) muls16u::m#3 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 ) - [271] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 - [272] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 - [273] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 + [272] (word) muls16u::i#2 ← phi( muls16u/(byte) 0 muls16u::@2/(word) muls16u::i#1 ) + [272] (dword) muls16u::m#3 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 ) + [273] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 + [274] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 + [275] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 to:muls16u::@1 muls16u::@1: scope:[muls16u] from muls16u muls16u::@2 - [274] (dword) muls16u::return#0 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 ) + [276] (dword) muls16u::return#0 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 ) to:muls16u::@return muls16u::@return: scope:[muls16u] from muls16u::@1 - [275] return + [277] return to:@return mulf_init: scope:[mulf_init] from main::@1 - [276] phi() + [278] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 - [277] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) - [277] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_hi#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) - [277] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_lo#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) - [277] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) - [277] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::c#1 ) - [278] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [279] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 - [280] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 + [279] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) + [279] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_hi#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) + [279] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_lo#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) + [279] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) + [279] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::c#1 ) + [280] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [281] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 + [282] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@1 - [281] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [282] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [283] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [284] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@2 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@3 - [283] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@3/(byte) mulf_init::x_2#1 ) - [283] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@3/(word) mulf_init::sqr#2 ) - [284] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 - [285] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 - [286] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 - [287] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 - [288] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [289] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [290] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 - [291] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 + [285] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@3/(byte) mulf_init::x_2#1 ) + [285] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@3/(word) mulf_init::sqr#2 ) + [286] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 + [287] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 + [288] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 + [289] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 + [290] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [291] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [292] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [293] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@2 mulf_init::@5 - [292] (byte) mulf_init::dir#2 ← phi( mulf_init::@2/(byte) $ff mulf_init::@5/(byte) mulf_init::dir#3 ) - [292] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_hi#0 mulf_init::@5/(byte*) mulf_init::sqr2_hi#1 ) - [292] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_lo#0 mulf_init::@5/(byte*) mulf_init::sqr2_lo#1 ) - [292] (byte) mulf_init::x_255#2 ← phi( mulf_init::@2/(byte) -1 mulf_init::@5/(byte) mulf_init::x_255#1 ) - [293] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) - [294] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) - [295] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [296] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [297] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 + [294] (byte) mulf_init::dir#2 ← phi( mulf_init::@2/(byte) $ff mulf_init::@5/(byte) mulf_init::dir#3 ) + [294] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_hi#0 mulf_init::@5/(byte*) mulf_init::sqr2_hi#1 ) + [294] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_lo#0 mulf_init::@5/(byte*) mulf_init::sqr2_lo#1 ) + [294] (byte) mulf_init::x_255#2 ← phi( mulf_init::@2/(byte) -1 mulf_init::@5/(byte) mulf_init::x_255#1 ) + [295] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) + [296] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) + [297] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [298] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [299] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 to:mulf_init::@5 mulf_init::@7: scope:[mulf_init] from mulf_init::@4 - [298] phi() + [300] phi() to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@4 mulf_init::@7 - [299] (byte) mulf_init::dir#3 ← phi( mulf_init::@7/(byte) mulf_init::dir#2 mulf_init::@4/(byte) 1 ) - [300] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 - [301] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 + [301] (byte) mulf_init::dir#3 ← phi( mulf_init::@7/(byte) mulf_init::dir#2 mulf_init::@4/(byte) 1 ) + [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 to:mulf_init::@6 mulf_init::@6: scope:[mulf_init] from mulf_init::@5 - [302] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) - [303] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) + [304] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) + [305] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@6 - [304] return + [306] return to:@return print_cls: scope:[print_cls] from main - [305] phi() + [307] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [306] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [307] *((byte*) print_cls::sc#2) ← (byte) ' ' - [308] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [309] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [308] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [309] *((byte*) print_cls::sc#2) ← (byte) ' ' + [310] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [311] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [310] return + [312] return to:@return diff --git a/src/test/ref/test-multiply-16bit.log b/src/test/ref/test-multiply-16bit.log index c4be4312b..cae7a5674 100644 --- a/src/test/ref/test-multiply-16bit.log +++ b/src/test/ref/test-multiply-16bit.log @@ -18,6 +18,7 @@ Culled Empty Block (label) @10 Culled Empty Block (label) @11 Culled Empty Block (label) @12 Culled Empty Block (label) @13 +Culled Empty Block (label) print_sdword::@4 Culled Empty Block (label) @15 Culled Empty Block (label) @16 Culled Empty Block (label) @17 @@ -67,37 +68,37 @@ CONTROL FLOW GRAPH SSA (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 to:@14 print_str: scope:[print_str] from mul16s_compare::@1 mul16s_compare::@17 mul16s_error mul16s_error::@2 mul16s_error::@4 mul16s_error::@6 mul16s_error::@8 mul16u_compare::@1 mul16u_compare::@17 mul16u_error mul16u_error::@2 mul16u_error::@4 mul16u_error::@6 mul16u_error::@8 - (byte*) print_char_cursor#151 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#146 mul16s_compare::@17/(byte*) print_char_cursor#50 mul16s_error/(byte*) print_char_cursor#149 mul16s_error::@2/(byte*) print_char_cursor#54 mul16s_error::@4/(byte*) print_char_cursor#56 mul16s_error::@6/(byte*) print_char_cursor#58 mul16s_error::@8/(byte*) print_char_cursor#60 mul16u_compare::@1/(byte*) print_char_cursor#142 mul16u_compare::@17/(byte*) print_char_cursor#32 mul16u_error/(byte*) print_char_cursor#145 mul16u_error::@2/(byte*) print_char_cursor#36 mul16u_error::@4/(byte*) print_char_cursor#38 mul16u_error::@6/(byte*) print_char_cursor#40 mul16u_error::@8/(byte*) print_char_cursor#42 ) + (byte*) print_char_cursor#154 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#149 mul16s_compare::@17/(byte*) print_char_cursor#51 mul16s_error/(byte*) print_char_cursor#152 mul16s_error::@2/(byte*) print_char_cursor#55 mul16s_error::@4/(byte*) print_char_cursor#57 mul16s_error::@6/(byte*) print_char_cursor#59 mul16s_error::@8/(byte*) print_char_cursor#61 mul16u_compare::@1/(byte*) print_char_cursor#145 mul16u_compare::@17/(byte*) print_char_cursor#33 mul16u_error/(byte*) print_char_cursor#148 mul16u_error::@2/(byte*) print_char_cursor#37 mul16u_error::@4/(byte*) print_char_cursor#39 mul16u_error::@6/(byte*) print_char_cursor#41 mul16u_error::@8/(byte*) print_char_cursor#43 ) (byte*) print_str::str#17 ← phi( mul16s_compare::@1/(byte*) print_str::str#8 mul16s_compare::@17/(byte*) print_str::str#9 mul16s_error/(byte*) print_str::str#10 mul16s_error::@2/(byte*) print_str::str#11 mul16s_error::@4/(byte*) print_str::str#12 mul16s_error::@6/(byte*) print_str::str#13 mul16s_error::@8/(byte*) print_str::str#14 mul16u_compare::@1/(byte*) print_str::str#1 mul16u_compare::@17/(byte*) print_str::str#2 mul16u_error/(byte*) print_str::str#3 mul16u_error::@2/(byte*) print_str::str#4 mul16u_error::@4/(byte*) print_str::str#5 mul16u_error::@6/(byte*) print_str::str#6 mul16u_error::@8/(byte*) print_str::str#7 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - (byte*) print_char_cursor#130 ← phi( print_str/(byte*) print_char_cursor#151 print_str::@2/(byte*) print_char_cursor#1 ) + (byte*) print_char_cursor#132 ← phi( print_str/(byte*) print_char_cursor#154 print_str::@2/(byte*) print_char_cursor#1 ) (byte*) print_str::str#15 ← phi( print_str/(byte*) print_str::str#17 print_str::@2/(byte*) print_str::str#0 ) (bool~) print_str::$0 ← *((byte*) print_str::str#15) != (byte) '@' if((bool~) print_str::$0) goto print_str::@2 to:print_str::@return print_str::@2: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#66 ← phi( print_str::@1/(byte*) print_char_cursor#130 ) + (byte*) print_char_cursor#67 ← phi( print_str::@1/(byte*) print_char_cursor#132 ) (byte*) print_str::str#16 ← phi( print_str::@1/(byte*) print_str::str#15 ) - *((byte*) print_char_cursor#66) ← *((byte*) print_str::str#16) - (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#66 + *((byte*) print_char_cursor#67) ← *((byte*) print_str::str#16) + (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#67 (byte*) print_str::str#0 ← ++ (byte*) print_str::str#16 to:print_str::@1 print_str::@return: scope:[print_str] from print_str::@1 - (byte*) print_char_cursor#67 ← phi( print_str::@1/(byte*) print_char_cursor#130 ) - (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#67 + (byte*) print_char_cursor#68 ← phi( print_str::@1/(byte*) print_char_cursor#132 ) + (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#68 return to:@return print_ln: scope:[print_ln] from mul16s_compare::@11 mul16s_compare::@18 mul16s_error::@10 mul16u_compare::@11 mul16u_compare::@18 mul16u_error::@10 - (byte*) print_char_cursor#131 ← phi( mul16s_compare::@11/(byte*) print_char_cursor#148 mul16s_compare::@18/(byte*) print_char_cursor#51 mul16s_error::@10/(byte*) print_char_cursor#62 mul16u_compare::@11/(byte*) print_char_cursor#144 mul16u_compare::@18/(byte*) print_char_cursor#33 mul16u_error::@10/(byte*) print_char_cursor#44 ) + (byte*) print_char_cursor#133 ← phi( mul16s_compare::@11/(byte*) print_char_cursor#151 mul16s_compare::@18/(byte*) print_char_cursor#52 mul16s_error::@10/(byte*) print_char_cursor#63 mul16u_compare::@11/(byte*) print_char_cursor#147 mul16u_compare::@18/(byte*) print_char_cursor#34 mul16u_error::@10/(byte*) print_char_cursor#45 ) (byte*) print_line_cursor#43 ← phi( mul16s_compare::@11/(byte*) print_line_cursor#51 mul16s_compare::@18/(byte*) print_line_cursor#52 mul16s_error::@10/(byte*) print_line_cursor#53 mul16u_compare::@11/(byte*) print_line_cursor#47 mul16u_compare::@18/(byte*) print_line_cursor#48 mul16u_error::@10/(byte*) print_line_cursor#49 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - (byte*) print_char_cursor#68 ← phi( print_ln/(byte*) print_char_cursor#131 print_ln::@1/(byte*) print_char_cursor#68 ) + (byte*) print_char_cursor#69 ← phi( print_ln/(byte*) print_char_cursor#133 print_ln::@1/(byte*) print_char_cursor#69 ) (byte*) print_line_cursor#22 ← phi( print_ln/(byte*) print_line_cursor#43 print_ln::@1/(byte*) print_line_cursor#1 ) (byte*~) print_ln::$0 ← (byte*) print_line_cursor#22 + (number) $28 (byte*) print_line_cursor#1 ← (byte*~) print_ln::$0 - (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#68 + (bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#69 if((bool~) print_ln::$1) goto print_ln::@1 to:print_ln::@2 print_ln::@2: scope:[print_ln] from print_ln::@1 @@ -105,60 +106,60 @@ print_ln::@2: scope:[print_ln] from print_ln::@1 (byte*) print_char_cursor#3 ← (byte*) print_line_cursor#23 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@2 - (byte*) print_char_cursor#69 ← phi( print_ln::@2/(byte*) print_char_cursor#3 ) + (byte*) print_char_cursor#70 ← phi( print_ln::@2/(byte*) print_char_cursor#3 ) (byte*) print_line_cursor#24 ← phi( print_ln::@2/(byte*) print_line_cursor#23 ) (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#24 - (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#69 + (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#70 return to:@return print_sword: scope:[print_sword] from mul16s_error::@1 mul16s_error::@3 - (byte*) print_char_cursor#152 ← phi( mul16s_error::@1/(byte*) print_char_cursor#53 mul16s_error::@3/(byte*) print_char_cursor#55 ) + (byte*) print_char_cursor#155 ← phi( mul16s_error::@1/(byte*) print_char_cursor#54 mul16s_error::@3/(byte*) print_char_cursor#56 ) (signed word) print_sword::w#3 ← phi( mul16s_error::@1/(signed word) print_sword::w#1 mul16s_error::@3/(signed word) print_sword::w#2 ) (bool~) print_sword::$0 ← (signed word) print_sword::w#3 < (number) 0 if((bool~) print_sword::$0) goto print_sword::@1 to:print_sword::@3 print_sword::@1: scope:[print_sword] from print_sword (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#3 ) - (byte*) print_char_cursor#132 ← phi( print_sword/(byte*) print_char_cursor#152 ) + (byte*) print_char_cursor#134 ← phi( print_sword/(byte*) print_char_cursor#155 ) (byte) print_char::ch#0 ← (byte) '-' call print_char to:print_sword::@5 print_sword::@5: scope:[print_sword] from print_sword::@1 (signed word) print_sword::w#4 ← phi( print_sword::@1/(signed word) print_sword::w#6 ) - (byte*) print_char_cursor#70 ← phi( print_sword::@1/(byte*) print_char_cursor#22 ) - (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#70 + (byte*) print_char_cursor#71 ← phi( print_sword::@1/(byte*) print_char_cursor#23 ) + (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#71 (signed word~) print_sword::$5 ← - (signed word) print_sword::w#4 (signed word) print_sword::w#0 ← (signed word~) print_sword::$5 to:print_sword::@2 print_sword::@3: scope:[print_sword] from print_sword (signed word) print_sword::w#8 ← phi( print_sword/(signed word) print_sword::w#3 ) - (byte*) print_char_cursor#133 ← phi( print_sword/(byte*) print_char_cursor#152 ) + (byte*) print_char_cursor#135 ← phi( print_sword/(byte*) print_char_cursor#155 ) (byte) print_char::ch#1 ← (byte) ' ' call print_char to:print_sword::@6 print_sword::@6: scope:[print_sword] from print_sword::@3 (signed word) print_sword::w#7 ← phi( print_sword::@3/(signed word) print_sword::w#8 ) - (byte*) print_char_cursor#71 ← phi( print_sword::@3/(byte*) print_char_cursor#22 ) - (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#71 + (byte*) print_char_cursor#72 ← phi( print_sword::@3/(byte*) print_char_cursor#23 ) + (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#72 to:print_sword::@2 print_sword::@2: scope:[print_sword] from print_sword::@5 print_sword::@6 - (byte*) print_char_cursor#134 ← phi( print_sword::@5/(byte*) print_char_cursor#5 print_sword::@6/(byte*) print_char_cursor#6 ) + (byte*) print_char_cursor#136 ← phi( print_sword::@5/(byte*) print_char_cursor#5 print_sword::@6/(byte*) print_char_cursor#6 ) (signed word) print_sword::w#5 ← phi( print_sword::@5/(signed word) print_sword::w#0 print_sword::@6/(signed word) print_sword::w#7 ) (word~) print_sword::$1 ← ((word)) (signed word) print_sword::w#5 (word) print_word::w#0 ← (word~) print_sword::$1 call print_word to:print_sword::@7 print_sword::@7: scope:[print_sword] from print_sword::@2 - (byte*) print_char_cursor#72 ← phi( print_sword::@2/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#72 + (byte*) print_char_cursor#73 ← phi( print_sword::@2/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#73 to:print_sword::@return print_sword::@return: scope:[print_sword] from print_sword::@7 - (byte*) print_char_cursor#73 ← phi( print_sword::@7/(byte*) print_char_cursor#7 ) - (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#73 + (byte*) print_char_cursor#74 ← phi( print_sword::@7/(byte*) print_char_cursor#7 ) + (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#74 return to:@return print_word: scope:[print_word] from mul16u_error::@1 mul16u_error::@3 print_dword print_dword::@1 print_sword::@2 - (byte*) print_char_cursor#135 ← phi( mul16u_error::@1/(byte*) print_char_cursor#35 mul16u_error::@3/(byte*) print_char_cursor#37 print_dword/(byte*) print_char_cursor#136 print_dword::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#134 ) + (byte*) print_char_cursor#137 ← phi( mul16u_error::@1/(byte*) print_char_cursor#36 mul16u_error::@3/(byte*) print_char_cursor#38 print_dword/(byte*) print_char_cursor#138 print_dword::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#136 ) (word) print_word::w#5 ← phi( mul16u_error::@1/(word) print_word::w#3 mul16u_error::@3/(word) print_word::w#4 print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 ) (byte~) print_word::$0 ← > (word) print_word::w#5 (byte) print_byte::b#0 ← (byte~) print_word::$0 @@ -166,120 +167,130 @@ print_word: scope:[print_word] from mul16u_error::@1 mul16u_error::@3 print_dwo to:print_word::@1 print_word::@1: scope:[print_word] from print_word (word) print_word::w#6 ← phi( print_word/(word) print_word::w#5 ) - (byte*) print_char_cursor#74 ← phi( print_word/(byte*) print_char_cursor#20 ) - (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#74 + (byte*) print_char_cursor#75 ← phi( print_word/(byte*) print_char_cursor#21 ) + (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#75 (byte~) print_word::$2 ← < (word) print_word::w#6 (byte) print_byte::b#1 ← (byte~) print_word::$2 call print_byte to:print_word::@2 print_word::@2: scope:[print_word] from print_word::@1 - (byte*) print_char_cursor#75 ← phi( print_word::@1/(byte*) print_char_cursor#20 ) - (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#75 + (byte*) print_char_cursor#76 ← phi( print_word::@1/(byte*) print_char_cursor#21 ) + (byte*) print_char_cursor#10 ← (byte*) print_char_cursor#76 to:print_word::@return print_word::@return: scope:[print_word] from print_word::@2 - (byte*) print_char_cursor#76 ← phi( print_word::@2/(byte*) print_char_cursor#10 ) - (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#76 + (byte*) print_char_cursor#77 ← phi( print_word::@2/(byte*) print_char_cursor#10 ) + (byte*) print_char_cursor#11 ← (byte*) print_char_cursor#77 return to:@return -print_dword: scope:[print_dword] from mul16u_error::@5 mul16u_error::@7 mul16u_error::@9 print_sdword::@1 - (byte*) print_char_cursor#136 ← phi( mul16u_error::@5/(byte*) print_char_cursor#39 mul16u_error::@7/(byte*) print_char_cursor#41 mul16u_error::@9/(byte*) print_char_cursor#43 print_sdword::@1/(byte*) print_char_cursor#137 ) - (dword) print_dword::dw#4 ← phi( mul16u_error::@5/(dword) print_dword::dw#1 mul16u_error::@7/(dword) print_dword::dw#2 mul16u_error::@9/(dword) print_dword::dw#3 print_sdword::@1/(dword) print_dword::dw#0 ) +print_dword: scope:[print_dword] from mul16u_error::@5 mul16u_error::@7 mul16u_error::@9 print_sdword::@2 + (byte*) print_char_cursor#138 ← phi( mul16u_error::@5/(byte*) print_char_cursor#40 mul16u_error::@7/(byte*) print_char_cursor#42 mul16u_error::@9/(byte*) print_char_cursor#44 print_sdword::@2/(byte*) print_char_cursor#141 ) + (dword) print_dword::dw#4 ← phi( mul16u_error::@5/(dword) print_dword::dw#1 mul16u_error::@7/(dword) print_dword::dw#2 mul16u_error::@9/(dword) print_dword::dw#3 print_sdword::@2/(dword) print_dword::dw#0 ) (word~) print_dword::$0 ← > (dword) print_dword::dw#4 (word) print_word::w#1 ← (word~) print_dword::$0 call print_word to:print_dword::@1 print_dword::@1: scope:[print_dword] from print_dword (dword) print_dword::dw#5 ← phi( print_dword/(dword) print_dword::dw#4 ) - (byte*) print_char_cursor#77 ← phi( print_dword/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#77 + (byte*) print_char_cursor#78 ← phi( print_dword/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#78 (word~) print_dword::$2 ← < (dword) print_dword::dw#5 (word) print_word::w#2 ← (word~) print_dword::$2 call print_word to:print_dword::@2 print_dword::@2: scope:[print_dword] from print_dword::@1 - (byte*) print_char_cursor#78 ← phi( print_dword::@1/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#78 + (byte*) print_char_cursor#79 ← phi( print_dword::@1/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#79 to:print_dword::@return print_dword::@return: scope:[print_dword] from print_dword::@2 - (byte*) print_char_cursor#79 ← phi( print_dword::@2/(byte*) print_char_cursor#13 ) - (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#79 + (byte*) print_char_cursor#80 ← phi( print_dword::@2/(byte*) print_char_cursor#13 ) + (byte*) print_char_cursor#14 ← (byte*) print_char_cursor#80 return to:@return print_sdword: scope:[print_sdword] from mul16s_error::@5 mul16s_error::@7 mul16s_error::@9 - (byte*) print_char_cursor#153 ← phi( mul16s_error::@5/(byte*) print_char_cursor#57 mul16s_error::@7/(byte*) print_char_cursor#59 mul16s_error::@9/(byte*) print_char_cursor#61 ) + (byte*) print_char_cursor#156 ← phi( mul16s_error::@5/(byte*) print_char_cursor#58 mul16s_error::@7/(byte*) print_char_cursor#60 mul16s_error::@9/(byte*) print_char_cursor#62 ) (signed dword) print_sdword::dw#4 ← phi( mul16s_error::@5/(signed dword) print_sdword::dw#1 mul16s_error::@7/(signed dword) print_sdword::dw#2 mul16s_error::@9/(signed dword) print_sdword::dw#3 ) (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw#4 < (number) 0 - (bool~) print_sdword::$1 ← ! (bool~) print_sdword::$0 - if((bool~) print_sdword::$1) goto print_sdword::@1 - to:print_sdword::@2 -print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@4 - (byte*) print_char_cursor#137 ← phi( print_sdword/(byte*) print_char_cursor#153 print_sdword::@4/(byte*) print_char_cursor#16 ) - (signed dword) print_sdword::dw#5 ← phi( print_sdword/(signed dword) print_sdword::dw#4 print_sdword::@4/(signed dword) print_sdword::dw#0 ) - (dword~) print_sdword::$2 ← ((dword)) (signed dword) print_sdword::dw#5 - (dword) print_dword::dw#0 ← (dword~) print_sdword::$2 - call print_dword + if((bool~) print_sdword::$0) goto print_sdword::@1 to:print_sdword::@3 -print_sdword::@3: scope:[print_sdword] from print_sdword::@1 - (byte*) print_char_cursor#80 ← phi( print_sdword::@1/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#80 - to:print_sdword::@return -print_sdword::@2: scope:[print_sdword] from print_sdword +print_sdword::@1: scope:[print_sdword] from print_sdword (signed dword) print_sdword::dw#7 ← phi( print_sdword/(signed dword) print_sdword::dw#4 ) - (byte*) print_char_cursor#138 ← phi( print_sdword/(byte*) print_char_cursor#153 ) + (byte*) print_char_cursor#139 ← phi( print_sdword/(byte*) print_char_cursor#156 ) (byte) print_char::ch#2 ← (byte) '-' call print_char - to:print_sdword::@4 -print_sdword::@4: scope:[print_sdword] from print_sdword::@2 - (signed dword) print_sdword::dw#6 ← phi( print_sdword::@2/(signed dword) print_sdword::dw#7 ) - (byte*) print_char_cursor#81 ← phi( print_sdword::@2/(byte*) print_char_cursor#22 ) - (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#81 - (signed dword~) print_sdword::$5 ← - (signed dword) print_sdword::dw#6 + to:print_sdword::@5 +print_sdword::@5: scope:[print_sdword] from print_sdword::@1 + (signed dword) print_sdword::dw#5 ← phi( print_sdword::@1/(signed dword) print_sdword::dw#7 ) + (byte*) print_char_cursor#81 ← phi( print_sdword::@1/(byte*) print_char_cursor#23 ) + (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#81 + (signed dword~) print_sdword::$5 ← - (signed dword) print_sdword::dw#5 (signed dword) print_sdword::dw#0 ← (signed dword~) print_sdword::$5 - to:print_sdword::@1 -print_sdword::@return: scope:[print_sdword] from print_sdword::@3 - (byte*) print_char_cursor#82 ← phi( print_sdword::@3/(byte*) print_char_cursor#15 ) - (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#82 + to:print_sdword::@2 +print_sdword::@3: scope:[print_sdword] from print_sdword + (signed dword) print_sdword::dw#9 ← phi( print_sdword/(signed dword) print_sdword::dw#4 ) + (byte*) print_char_cursor#140 ← phi( print_sdword/(byte*) print_char_cursor#156 ) + (byte) print_char::ch#3 ← (byte) ' ' + call print_char + to:print_sdword::@6 +print_sdword::@6: scope:[print_sdword] from print_sdword::@3 + (signed dword) print_sdword::dw#8 ← phi( print_sdword::@3/(signed dword) print_sdword::dw#9 ) + (byte*) print_char_cursor#82 ← phi( print_sdword::@3/(byte*) print_char_cursor#23 ) + (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#82 + to:print_sdword::@2 +print_sdword::@2: scope:[print_sdword] from print_sdword::@5 print_sdword::@6 + (byte*) print_char_cursor#141 ← phi( print_sdword::@5/(byte*) print_char_cursor#15 print_sdword::@6/(byte*) print_char_cursor#16 ) + (signed dword) print_sdword::dw#6 ← phi( print_sdword::@5/(signed dword) print_sdword::dw#0 print_sdword::@6/(signed dword) print_sdword::dw#8 ) + (dword~) print_sdword::$1 ← ((dword)) (signed dword) print_sdword::dw#6 + (dword) print_dword::dw#0 ← (dword~) print_sdword::$1 + call print_dword + to:print_sdword::@7 +print_sdword::@7: scope:[print_sdword] from print_sdword::@2 + (byte*) print_char_cursor#83 ← phi( print_sdword::@2/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#83 + to:print_sdword::@return +print_sdword::@return: scope:[print_sdword] from print_sdword::@7 + (byte*) print_char_cursor#84 ← phi( print_sdword::@7/(byte*) print_char_cursor#17 ) + (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#84 return to:@return @14: scope:[] from @begin (byte*) print_screen#8 ← phi( @begin/(byte*) print_screen#0 ) - (byte*) print_char_cursor#168 ← phi( @begin/(byte*) print_char_cursor#0 ) + (byte*) print_char_cursor#171 ← phi( @begin/(byte*) print_char_cursor#0 ) (byte*) print_line_cursor#71 ← phi( @begin/(byte*) print_line_cursor#0 ) (byte[]) print_hextab#0 ← (const string) $0 to:@26 print_byte: scope:[print_byte] from print_word print_word::@1 - (byte*) print_char_cursor#139 ← phi( print_word/(byte*) print_char_cursor#135 print_word::@1/(byte*) print_char_cursor#9 ) + (byte*) print_char_cursor#142 ← phi( print_word/(byte*) print_char_cursor#137 print_word::@1/(byte*) print_char_cursor#9 ) (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (number) 4 - (byte) print_char::ch#3 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) + (byte) print_char::ch#4 ← *((byte[]) print_hextab#0 + (byte~) print_byte::$0) call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte (byte) print_byte::b#3 ← phi( print_byte/(byte) print_byte::b#2 ) - (byte*) print_char_cursor#83 ← phi( print_byte/(byte*) print_char_cursor#22 ) - (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#83 + (byte*) print_char_cursor#85 ← phi( print_byte/(byte*) print_char_cursor#23 ) + (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#85 (number~) print_byte::$2 ← (byte) print_byte::b#3 & (number) $f - (byte) print_char::ch#4 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) + (byte) print_char::ch#5 ← *((byte[]) print_hextab#0 + (number~) print_byte::$2) call print_char to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 - (byte*) print_char_cursor#84 ← phi( print_byte::@1/(byte*) print_char_cursor#22 ) - (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#84 + (byte*) print_char_cursor#86 ← phi( print_byte::@1/(byte*) print_char_cursor#23 ) + (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#86 to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@2 - (byte*) print_char_cursor#85 ← phi( print_byte::@2/(byte*) print_char_cursor#19 ) - (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#85 + (byte*) print_char_cursor#87 ← phi( print_byte::@2/(byte*) print_char_cursor#20 ) + (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#87 return to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sdword::@2 print_sword::@1 print_sword::@3 - (byte*) print_char_cursor#86 ← phi( print_byte/(byte*) print_char_cursor#139 print_byte::@1/(byte*) print_char_cursor#18 print_sdword::@2/(byte*) print_char_cursor#138 print_sword::@1/(byte*) print_char_cursor#132 print_sword::@3/(byte*) print_char_cursor#133 ) - (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sdword::@2/(byte) print_char::ch#2 print_sword::@1/(byte) print_char::ch#0 print_sword::@3/(byte) print_char::ch#1 ) - *((byte*) print_char_cursor#86) ← (byte) print_char::ch#5 - (byte*) print_char_cursor#21 ← ++ (byte*) print_char_cursor#86 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sdword::@1 print_sdword::@3 print_sword::@1 print_sword::@3 + (byte*) print_char_cursor#88 ← phi( print_byte/(byte*) print_char_cursor#142 print_byte::@1/(byte*) print_char_cursor#19 print_sdword::@1/(byte*) print_char_cursor#139 print_sdword::@3/(byte*) print_char_cursor#140 print_sword::@1/(byte*) print_char_cursor#134 print_sword::@3/(byte*) print_char_cursor#135 ) + (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sdword::@1/(byte) print_char::ch#2 print_sdword::@3/(byte) print_char::ch#3 print_sword::@1/(byte) print_char::ch#0 print_sword::@3/(byte) print_char::ch#1 ) + *((byte*) print_char_cursor#88) ← (byte) print_char::ch#6 + (byte*) print_char_cursor#22 ← ++ (byte*) print_char_cursor#88 to:print_char::@return print_char::@return: scope:[print_char] from print_char - (byte*) print_char_cursor#87 ← phi( print_char/(byte*) print_char_cursor#21 ) - (byte*) print_char_cursor#22 ← (byte*) print_char_cursor#87 + (byte*) print_char_cursor#89 ← phi( print_char/(byte*) print_char_cursor#22 ) + (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#89 return to:@return print_cls: scope:[print_cls] from main @@ -298,13 +309,13 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 print_cls::@2: scope:[print_cls] from print_cls::@1 (byte*) print_screen#3 ← phi( print_cls::@1/(byte*) print_screen#2 ) (byte*) print_line_cursor#3 ← (byte*) print_screen#3 - (byte*) print_char_cursor#23 ← (byte*) print_line_cursor#3 + (byte*) print_char_cursor#24 ← (byte*) print_line_cursor#3 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@2 - (byte*) print_char_cursor#88 ← phi( print_cls::@2/(byte*) print_char_cursor#23 ) + (byte*) print_char_cursor#90 ← phi( print_cls::@2/(byte*) print_char_cursor#24 ) (byte*) print_line_cursor#25 ← phi( print_cls::@2/(byte*) print_line_cursor#3 ) (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#25 - (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#88 + (byte*) print_char_cursor#25 ← (byte*) print_char_cursor#90 return to:@return mul16u: scope:[mul16u] from mul16s mul16u_compare::@13 @@ -413,7 +424,7 @@ mul16s::@return: scope:[mul16s] from mul16s::@2 to:@return @26: scope:[] from @14 (byte*) print_screen#7 ← phi( @14/(byte*) print_screen#8 ) - (byte*) print_char_cursor#161 ← phi( @14/(byte*) print_char_cursor#168 ) + (byte*) print_char_cursor#164 ← phi( @14/(byte*) print_char_cursor#171 ) (byte*) print_line_cursor#62 ← phi( @14/(byte*) print_line_cursor#71 ) (byte[$200]) mulf_sqr1_lo#0 ← { fill( $200, 0) } (byte[$200]) mulf_sqr1_hi#0 ← { fill( $200, 0) } @@ -591,47 +602,47 @@ mulf16s::@return: scope:[mulf16s] from mulf16s::@2 to:@return @35: scope:[] from @26 (byte*) print_screen#6 ← phi( @26/(byte*) print_screen#7 ) - (byte*) print_char_cursor#160 ← phi( @26/(byte*) print_char_cursor#161 ) + (byte*) print_char_cursor#163 ← phi( @26/(byte*) print_char_cursor#164 ) (byte*) print_line_cursor#61 ← phi( @26/(byte*) print_line_cursor#62 ) (byte*) BGCOL#0 ← ((byte*)) (number) $d021 to:@42 main: scope:[main] from @42 - (byte*) print_char_cursor#140 ← phi( @42/(byte*) print_char_cursor#150 ) + (byte*) print_char_cursor#143 ← phi( @42/(byte*) print_char_cursor#153 ) (byte*) print_line_cursor#44 ← phi( @42/(byte*) print_line_cursor#54 ) (byte*) print_screen#4 ← phi( @42/(byte*) print_screen#5 ) *((byte*) BGCOL#0) ← (number) 5 call print_cls to:main::@1 main::@1: scope:[main] from main - (byte*) print_char_cursor#89 ← phi( main/(byte*) print_char_cursor#24 ) + (byte*) print_char_cursor#91 ← phi( main/(byte*) print_char_cursor#25 ) (byte*) print_line_cursor#26 ← phi( main/(byte*) print_line_cursor#4 ) (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#26 - (byte*) print_char_cursor#25 ← (byte*) print_char_cursor#89 + (byte*) print_char_cursor#26 ← (byte*) print_char_cursor#91 call mulf_init to:main::@2 main::@2: scope:[main] from main::@1 (byte*) print_line_cursor#45 ← phi( main::@1/(byte*) print_line_cursor#5 ) - (byte*) print_char_cursor#141 ← phi( main::@1/(byte*) print_char_cursor#25 ) + (byte*) print_char_cursor#144 ← phi( main::@1/(byte*) print_char_cursor#26 ) call mul16u_compare to:main::@3 main::@3: scope:[main] from main::@2 (byte*) print_line_cursor#27 ← phi( main::@2/(byte*) print_line_cursor#10 ) - (byte*) print_char_cursor#90 ← phi( main::@2/(byte*) print_char_cursor#31 ) - (byte*) print_char_cursor#26 ← (byte*) print_char_cursor#90 + (byte*) print_char_cursor#92 ← phi( main::@2/(byte*) print_char_cursor#32 ) + (byte*) print_char_cursor#27 ← (byte*) print_char_cursor#92 (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#27 call mul16s_compare to:main::@4 main::@4: scope:[main] from main::@3 (byte*) print_line_cursor#28 ← phi( main::@3/(byte*) print_line_cursor#16 ) - (byte*) print_char_cursor#91 ← phi( main::@3/(byte*) print_char_cursor#49 ) - (byte*) print_char_cursor#27 ← (byte*) print_char_cursor#91 + (byte*) print_char_cursor#93 ← phi( main::@3/(byte*) print_char_cursor#50 ) + (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#93 (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#28 to:main::@return main::@return: scope:[main] from main::@4 - (byte*) print_char_cursor#92 ← phi( main::@4/(byte*) print_char_cursor#27 ) + (byte*) print_char_cursor#94 ← phi( main::@4/(byte*) print_char_cursor#28 ) (byte*) print_line_cursor#29 ← phi( main::@4/(byte*) print_line_cursor#7 ) (byte*) print_line_cursor#8 ← (byte*) print_line_cursor#29 - (byte*) print_char_cursor#28 ← (byte*) print_char_cursor#92 + (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#94 return to:@return muls16u: scope:[muls16u] from mul16u_compare::@2 @@ -728,7 +739,7 @@ muls16s::@return: scope:[muls16s] from muls16s::@3 to:@return mul16u_compare: scope:[mul16u_compare] from main::@2 (byte*) print_line_cursor#98 ← phi( main::@2/(byte*) print_line_cursor#45 ) - (byte*) print_char_cursor#154 ← phi( main::@2/(byte*) print_char_cursor#141 ) + (byte*) print_char_cursor#157 ← phi( main::@2/(byte*) print_char_cursor#144 ) (word) mul16u_compare::a#0 ← (number) 0 (word) mul16u_compare::b#0 ← (number) 0 (byte) mul16u_compare::i#0 ← (byte) 0 @@ -738,7 +749,7 @@ mul16u_compare::@1: scope:[mul16u_compare] from mul16u_compare mul16u_compare:: (byte) mul16u_compare::i#13 ← phi( mul16u_compare/(byte) mul16u_compare::i#0 mul16u_compare::@10/(byte) mul16u_compare::i#1 ) (word) mul16u_compare::b#9 ← phi( mul16u_compare/(word) mul16u_compare::b#0 mul16u_compare::@10/(word) mul16u_compare::b#12 ) (word) mul16u_compare::a#9 ← phi( mul16u_compare/(word) mul16u_compare::a#0 mul16u_compare::@10/(word) mul16u_compare::a#12 ) - (byte*) print_char_cursor#142 ← phi( mul16u_compare/(byte*) print_char_cursor#154 mul16u_compare::@10/(byte*) print_char_cursor#155 ) + (byte*) print_char_cursor#145 ← phi( mul16u_compare/(byte*) print_char_cursor#157 mul16u_compare::@10/(byte*) print_char_cursor#158 ) (byte*) print_str::str#1 ← (const string) mul16u_compare::str call print_str to:mul16u_compare::@12 @@ -747,13 +758,13 @@ mul16u_compare::@12: scope:[mul16u_compare] from mul16u_compare::@1 (byte) mul16u_compare::i#12 ← phi( mul16u_compare::@1/(byte) mul16u_compare::i#13 ) (word) mul16u_compare::b#6 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#9 ) (word) mul16u_compare::a#6 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#9 ) - (byte*) print_char_cursor#93 ← phi( mul16u_compare::@1/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#93 + (byte*) print_char_cursor#95 ← phi( mul16u_compare::@1/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#95 (byte) mul16u_compare::j#0 ← (byte) 0 to:mul16u_compare::@2 mul16u_compare::@2: scope:[mul16u_compare] from mul16u_compare::@12 mul16u_compare::@5 (byte*) print_line_cursor#86 ← phi( mul16u_compare::@12/(byte*) print_line_cursor#90 mul16u_compare::@5/(byte*) print_line_cursor#65 ) - (byte*) print_char_cursor#177 ← phi( mul16u_compare::@12/(byte*) print_char_cursor#29 mul16u_compare::@5/(byte*) print_char_cursor#164 ) + (byte*) print_char_cursor#180 ← phi( mul16u_compare::@12/(byte*) print_char_cursor#30 mul16u_compare::@5/(byte*) print_char_cursor#167 ) (byte) mul16u_compare::i#11 ← phi( mul16u_compare::@12/(byte) mul16u_compare::i#12 mul16u_compare::@5/(byte) mul16u_compare::i#3 ) (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@12/(byte) mul16u_compare::j#0 mul16u_compare::@5/(byte) mul16u_compare::j#1 ) (word) mul16u_compare::b#2 ← phi( mul16u_compare::@12/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#7 ) @@ -769,7 +780,7 @@ mul16u_compare::@2: scope:[mul16u_compare] from mul16u_compare::@12 mul16u_comp to:mul16u_compare::@13 mul16u_compare::@13: scope:[mul16u_compare] from mul16u_compare::@2 (byte*) print_line_cursor#82 ← phi( mul16u_compare::@2/(byte*) print_line_cursor#86 ) - (byte*) print_char_cursor#175 ← phi( mul16u_compare::@2/(byte*) print_char_cursor#177 ) + (byte*) print_char_cursor#178 ← phi( mul16u_compare::@2/(byte*) print_char_cursor#180 ) (byte) mul16u_compare::i#10 ← phi( mul16u_compare::@2/(byte) mul16u_compare::i#11 ) (byte) mul16u_compare::j#9 ← phi( mul16u_compare::@2/(byte) mul16u_compare::j#10 ) (word) mul16u_compare::b#3 ← phi( mul16u_compare::@2/(word) mul16u_compare::b#1 ) @@ -784,7 +795,7 @@ mul16u_compare::@13: scope:[mul16u_compare] from mul16u_compare::@2 to:mul16u_compare::@14 mul16u_compare::@14: scope:[mul16u_compare] from mul16u_compare::@13 (byte*) print_line_cursor#78 ← phi( mul16u_compare::@13/(byte*) print_line_cursor#82 ) - (byte*) print_char_cursor#173 ← phi( mul16u_compare::@13/(byte*) print_char_cursor#175 ) + (byte*) print_char_cursor#176 ← phi( mul16u_compare::@13/(byte*) print_char_cursor#178 ) (byte) mul16u_compare::i#9 ← phi( mul16u_compare::@13/(byte) mul16u_compare::i#10 ) (byte) mul16u_compare::j#8 ← phi( mul16u_compare::@13/(byte) mul16u_compare::j#9 ) (dword) mul16u_compare::ms#4 ← phi( mul16u_compare::@13/(dword) mul16u_compare::ms#0 ) @@ -800,7 +811,7 @@ mul16u_compare::@14: scope:[mul16u_compare] from mul16u_compare::@13 to:mul16u_compare::@15 mul16u_compare::@15: scope:[mul16u_compare] from mul16u_compare::@14 (byte*) print_line_cursor#72 ← phi( mul16u_compare::@14/(byte*) print_line_cursor#78 ) - (byte*) print_char_cursor#169 ← phi( mul16u_compare::@14/(byte*) print_char_cursor#173 ) + (byte*) print_char_cursor#172 ← phi( mul16u_compare::@14/(byte*) print_char_cursor#176 ) (byte) mul16u_compare::i#7 ← phi( mul16u_compare::@14/(byte) mul16u_compare::i#9 ) (word) mul16u_compare::b#13 ← phi( mul16u_compare::@14/(word) mul16u_compare::b#4 ) (word) mul16u_compare::a#13 ← phi( mul16u_compare::@14/(word) mul16u_compare::a#4 ) @@ -817,7 +828,7 @@ mul16u_compare::@15: scope:[mul16u_compare] from mul16u_compare::@14 to:mul16u_compare::@6 mul16u_compare::@3: scope:[mul16u_compare] from mul16u_compare::@15 mul16u_compare::@6 (byte*) print_line_cursor#63 ← phi( mul16u_compare::@15/(byte*) print_line_cursor#72 mul16u_compare::@6/(byte*) print_line_cursor#73 ) - (byte*) print_char_cursor#162 ← phi( mul16u_compare::@15/(byte*) print_char_cursor#169 mul16u_compare::@6/(byte*) print_char_cursor#170 ) + (byte*) print_char_cursor#165 ← phi( mul16u_compare::@15/(byte*) print_char_cursor#172 mul16u_compare::@6/(byte*) print_char_cursor#173 ) (byte) mul16u_compare::i#5 ← phi( mul16u_compare::@15/(byte) mul16u_compare::i#7 mul16u_compare::@6/(byte) mul16u_compare::i#8 ) (dword) mul16u_compare::mf#3 ← phi( mul16u_compare::@15/(dword) mul16u_compare::mf#0 mul16u_compare::@6/(dword) mul16u_compare::mf#5 ) (word) mul16u_compare::b#10 ← phi( mul16u_compare::@15/(word) mul16u_compare::b#13 mul16u_compare::@6/(word) mul16u_compare::b#14 ) @@ -832,7 +843,7 @@ mul16u_compare::@3: scope:[mul16u_compare] from mul16u_compare::@15 mul16u_comp to:mul16u_compare::@7 mul16u_compare::@6: scope:[mul16u_compare] from mul16u_compare::@15 (byte*) print_line_cursor#73 ← phi( mul16u_compare::@15/(byte*) print_line_cursor#72 ) - (byte*) print_char_cursor#170 ← phi( mul16u_compare::@15/(byte*) print_char_cursor#169 ) + (byte*) print_char_cursor#173 ← phi( mul16u_compare::@15/(byte*) print_char_cursor#172 ) (byte) mul16u_compare::i#8 ← phi( mul16u_compare::@15/(byte) mul16u_compare::i#7 ) (dword) mul16u_compare::mf#5 ← phi( mul16u_compare::@15/(dword) mul16u_compare::mf#0 ) (word) mul16u_compare::b#14 ← phi( mul16u_compare::@15/(word) mul16u_compare::b#13 ) @@ -844,7 +855,7 @@ mul16u_compare::@6: scope:[mul16u_compare] from mul16u_compare::@15 to:mul16u_compare::@3 mul16u_compare::@4: scope:[mul16u_compare] from mul16u_compare::@3 mul16u_compare::@7 (byte*) print_line_cursor#55 ← phi( mul16u_compare::@3/(byte*) print_line_cursor#63 mul16u_compare::@7/(byte*) print_line_cursor#64 ) - (byte*) print_char_cursor#156 ← phi( mul16u_compare::@3/(byte*) print_char_cursor#162 mul16u_compare::@7/(byte*) print_char_cursor#163 ) + (byte*) print_char_cursor#159 ← phi( mul16u_compare::@3/(byte*) print_char_cursor#165 mul16u_compare::@7/(byte*) print_char_cursor#166 ) (byte) mul16u_compare::i#4 ← phi( mul16u_compare::@3/(byte) mul16u_compare::i#5 mul16u_compare::@7/(byte) mul16u_compare::i#6 ) (dword) mul16u_compare::mf#2 ← phi( mul16u_compare::@3/(dword) mul16u_compare::mf#3 mul16u_compare::@7/(dword) mul16u_compare::mf#4 ) (dword) mul16u_compare::mn#5 ← phi( mul16u_compare::@3/(dword) mul16u_compare::mn#1 mul16u_compare::@7/(dword) mul16u_compare::mn#6 ) @@ -859,7 +870,7 @@ mul16u_compare::@4: scope:[mul16u_compare] from mul16u_compare::@3 mul16u_compa to:mul16u_compare::@8 mul16u_compare::@7: scope:[mul16u_compare] from mul16u_compare::@3 (byte*) print_line_cursor#64 ← phi( mul16u_compare::@3/(byte*) print_line_cursor#63 ) - (byte*) print_char_cursor#163 ← phi( mul16u_compare::@3/(byte*) print_char_cursor#162 ) + (byte*) print_char_cursor#166 ← phi( mul16u_compare::@3/(byte*) print_char_cursor#165 ) (byte) mul16u_compare::i#6 ← phi( mul16u_compare::@3/(byte) mul16u_compare::i#5 ) (dword) mul16u_compare::mf#4 ← phi( mul16u_compare::@3/(dword) mul16u_compare::mf#3 ) (dword) mul16u_compare::mn#6 ← phi( mul16u_compare::@3/(dword) mul16u_compare::mn#1 ) @@ -871,7 +882,7 @@ mul16u_compare::@7: scope:[mul16u_compare] from mul16u_compare::@3 to:mul16u_compare::@4 mul16u_compare::@5: scope:[mul16u_compare] from mul16u_compare::@4 (byte*) print_line_cursor#65 ← phi( mul16u_compare::@4/(byte*) print_line_cursor#55 ) - (byte*) print_char_cursor#164 ← phi( mul16u_compare::@4/(byte*) print_char_cursor#156 ) + (byte*) print_char_cursor#167 ← phi( mul16u_compare::@4/(byte*) print_char_cursor#159 ) (byte) mul16u_compare::i#3 ← phi( mul16u_compare::@4/(byte) mul16u_compare::i#4 ) (word) mul16u_compare::b#7 ← phi( mul16u_compare::@4/(word) mul16u_compare::b#8 ) (word) mul16u_compare::a#7 ← phi( mul16u_compare::@4/(word) mul16u_compare::a#8 ) @@ -882,7 +893,7 @@ mul16u_compare::@5: scope:[mul16u_compare] from mul16u_compare::@4 to:mul16u_compare::@10 mul16u_compare::@8: scope:[mul16u_compare] from mul16u_compare::@4 (byte*) print_line_cursor#46 ← phi( mul16u_compare::@4/(byte*) print_line_cursor#55 ) - (byte*) print_char_cursor#143 ← phi( mul16u_compare::@4/(byte*) print_char_cursor#156 ) + (byte*) print_char_cursor#146 ← phi( mul16u_compare::@4/(byte*) print_char_cursor#159 ) (dword) mul16u_compare::mf#1 ← phi( mul16u_compare::@4/(dword) mul16u_compare::mf#2 ) (dword) mul16u_compare::mn#2 ← phi( mul16u_compare::@4/(dword) mul16u_compare::mn#5 ) (dword) mul16u_compare::ms#3 ← phi( mul16u_compare::@4/(dword) mul16u_compare::ms#6 ) @@ -898,14 +909,14 @@ mul16u_compare::@8: scope:[mul16u_compare] from mul16u_compare::@4 to:mul16u_compare::@16 mul16u_compare::@16: scope:[mul16u_compare] from mul16u_compare::@8 (byte*) print_line_cursor#30 ← phi( mul16u_compare::@8/(byte*) print_line_cursor#14 ) - (byte*) print_char_cursor#94 ← phi( mul16u_compare::@8/(byte*) print_char_cursor#46 ) - (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#94 + (byte*) print_char_cursor#96 ← phi( mul16u_compare::@8/(byte*) print_char_cursor#47 ) + (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#96 (byte*) print_line_cursor#9 ← (byte*) print_line_cursor#30 to:mul16u_compare::@return mul16u_compare::@return: scope:[mul16u_compare] from mul16u_compare::@16 mul16u_compare::@19 (byte*) print_line_cursor#31 ← phi( mul16u_compare::@16/(byte*) print_line_cursor#9 mul16u_compare::@19/(byte*) print_line_cursor#12 ) - (byte*) print_char_cursor#95 ← phi( mul16u_compare::@16/(byte*) print_char_cursor#30 mul16u_compare::@19/(byte*) print_char_cursor#34 ) - (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#95 + (byte*) print_char_cursor#97 ← phi( mul16u_compare::@16/(byte*) print_char_cursor#31 mul16u_compare::@19/(byte*) print_char_cursor#35 ) + (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#97 (byte*) print_line_cursor#10 ← (byte*) print_line_cursor#31 return to:@return @@ -913,36 +924,36 @@ mul16u_compare::@10: scope:[mul16u_compare] from mul16u_compare::@5 (word) mul16u_compare::b#12 ← phi( mul16u_compare::@5/(word) mul16u_compare::b#7 ) (word) mul16u_compare::a#12 ← phi( mul16u_compare::@5/(word) mul16u_compare::a#7 ) (byte*) print_line_cursor#56 ← phi( mul16u_compare::@5/(byte*) print_line_cursor#65 ) - (byte*) print_char_cursor#155 ← phi( mul16u_compare::@5/(byte*) print_char_cursor#164 ) + (byte*) print_char_cursor#158 ← phi( mul16u_compare::@5/(byte*) print_char_cursor#167 ) (byte) mul16u_compare::i#2 ← phi( mul16u_compare::@5/(byte) mul16u_compare::i#3 ) (byte) mul16u_compare::i#1 ← (byte) mul16u_compare::i#2 + rangenext(0,$f) (bool~) mul16u_compare::$17 ← (byte) mul16u_compare::i#1 != rangelast(0,$f) if((bool~) mul16u_compare::$17) goto mul16u_compare::@1 to:mul16u_compare::@11 mul16u_compare::@11: scope:[mul16u_compare] from mul16u_compare::@10 - (byte*) print_char_cursor#144 ← phi( mul16u_compare::@10/(byte*) print_char_cursor#155 ) + (byte*) print_char_cursor#147 ← phi( mul16u_compare::@10/(byte*) print_char_cursor#158 ) (byte*) print_line_cursor#47 ← phi( mul16u_compare::@10/(byte*) print_line_cursor#56 ) call print_ln to:mul16u_compare::@17 mul16u_compare::@17: scope:[mul16u_compare] from mul16u_compare::@11 - (byte*) print_char_cursor#96 ← phi( mul16u_compare::@11/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#98 ← phi( mul16u_compare::@11/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#32 ← phi( mul16u_compare::@11/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#11 ← (byte*) print_line_cursor#32 - (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#96 + (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#98 (byte*) print_str::str#2 ← (const string) mul16u_compare::str1 call print_str to:mul16u_compare::@18 mul16u_compare::@18: scope:[mul16u_compare] from mul16u_compare::@17 (byte*) print_line_cursor#48 ← phi( mul16u_compare::@17/(byte*) print_line_cursor#11 ) - (byte*) print_char_cursor#97 ← phi( mul16u_compare::@17/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#97 + (byte*) print_char_cursor#99 ← phi( mul16u_compare::@17/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#99 call print_ln to:mul16u_compare::@19 mul16u_compare::@19: scope:[mul16u_compare] from mul16u_compare::@18 - (byte*) print_char_cursor#98 ← phi( mul16u_compare::@18/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#100 ← phi( mul16u_compare::@18/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#33 ← phi( mul16u_compare::@18/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#12 ← (byte*) print_line_cursor#33 - (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#98 + (byte*) print_char_cursor#35 ← (byte*) print_char_cursor#100 to:mul16u_compare::@return mul16u_error: scope:[mul16u_error] from mul16u_compare::@8 (byte*) print_line_cursor#102 ← phi( mul16u_compare::@8/(byte*) print_line_cursor#46 ) @@ -951,7 +962,7 @@ mul16u_error: scope:[mul16u_error] from mul16u_compare::@8 (dword) mul16u_error::ms#6 ← phi( mul16u_compare::@8/(dword) mul16u_error::ms#0 ) (word) mul16u_error::b#4 ← phi( mul16u_compare::@8/(word) mul16u_error::b#0 ) (word) mul16u_error::a#2 ← phi( mul16u_compare::@8/(word) mul16u_error::a#0 ) - (byte*) print_char_cursor#145 ← phi( mul16u_compare::@8/(byte*) print_char_cursor#143 ) + (byte*) print_char_cursor#148 ← phi( mul16u_compare::@8/(byte*) print_char_cursor#146 ) (byte*) print_str::str#3 ← (const string) mul16u_error::str call print_str to:mul16u_error::@1 @@ -962,8 +973,8 @@ mul16u_error::@1: scope:[mul16u_error] from mul16u_error (dword) mul16u_error::ms#5 ← phi( mul16u_error/(dword) mul16u_error::ms#6 ) (word) mul16u_error::b#3 ← phi( mul16u_error/(word) mul16u_error::b#4 ) (word) mul16u_error::a#1 ← phi( mul16u_error/(word) mul16u_error::a#2 ) - (byte*) print_char_cursor#99 ← phi( mul16u_error/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#35 ← (byte*) print_char_cursor#99 + (byte*) print_char_cursor#101 ← phi( mul16u_error/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#36 ← (byte*) print_char_cursor#101 (word) print_word::w#3 ← (word) mul16u_error::a#1 call print_word to:mul16u_error::@2 @@ -973,8 +984,8 @@ mul16u_error::@2: scope:[mul16u_error] from mul16u_error::@1 (dword) mul16u_error::mn#6 ← phi( mul16u_error::@1/(dword) mul16u_error::mn#7 ) (dword) mul16u_error::ms#4 ← phi( mul16u_error::@1/(dword) mul16u_error::ms#5 ) (word) mul16u_error::b#2 ← phi( mul16u_error::@1/(word) mul16u_error::b#3 ) - (byte*) print_char_cursor#100 ← phi( mul16u_error::@1/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#36 ← (byte*) print_char_cursor#100 + (byte*) print_char_cursor#102 ← phi( mul16u_error::@1/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#102 (byte*) print_str::str#4 ← (const string) mul16u_error::str1 call print_str to:mul16u_error::@3 @@ -984,8 +995,8 @@ mul16u_error::@3: scope:[mul16u_error] from mul16u_error::@2 (dword) mul16u_error::mn#5 ← phi( mul16u_error::@2/(dword) mul16u_error::mn#6 ) (dword) mul16u_error::ms#3 ← phi( mul16u_error::@2/(dword) mul16u_error::ms#4 ) (word) mul16u_error::b#1 ← phi( mul16u_error::@2/(word) mul16u_error::b#2 ) - (byte*) print_char_cursor#101 ← phi( mul16u_error::@2/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#37 ← (byte*) print_char_cursor#101 + (byte*) print_char_cursor#103 ← phi( mul16u_error::@2/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#38 ← (byte*) print_char_cursor#103 (word) print_word::w#4 ← (word) mul16u_error::b#1 call print_word to:mul16u_error::@4 @@ -994,8 +1005,8 @@ mul16u_error::@4: scope:[mul16u_error] from mul16u_error::@3 (dword) mul16u_error::mf#6 ← phi( mul16u_error::@3/(dword) mul16u_error::mf#7 ) (dword) mul16u_error::mn#4 ← phi( mul16u_error::@3/(dword) mul16u_error::mn#5 ) (dword) mul16u_error::ms#2 ← phi( mul16u_error::@3/(dword) mul16u_error::ms#3 ) - (byte*) print_char_cursor#102 ← phi( mul16u_error::@3/(byte*) print_char_cursor#11 ) - (byte*) print_char_cursor#38 ← (byte*) print_char_cursor#102 + (byte*) print_char_cursor#104 ← phi( mul16u_error::@3/(byte*) print_char_cursor#11 ) + (byte*) print_char_cursor#39 ← (byte*) print_char_cursor#104 (byte*) print_str::str#5 ← (const string) mul16u_error::str2 call print_str to:mul16u_error::@5 @@ -1004,8 +1015,8 @@ mul16u_error::@5: scope:[mul16u_error] from mul16u_error::@4 (dword) mul16u_error::mf#5 ← phi( mul16u_error::@4/(dword) mul16u_error::mf#6 ) (dword) mul16u_error::mn#3 ← phi( mul16u_error::@4/(dword) mul16u_error::mn#4 ) (dword) mul16u_error::ms#1 ← phi( mul16u_error::@4/(dword) mul16u_error::ms#2 ) - (byte*) print_char_cursor#103 ← phi( mul16u_error::@4/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#39 ← (byte*) print_char_cursor#103 + (byte*) print_char_cursor#105 ← phi( mul16u_error::@4/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#105 (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#1 call print_dword to:mul16u_error::@6 @@ -1013,8 +1024,8 @@ mul16u_error::@6: scope:[mul16u_error] from mul16u_error::@5 (byte*) print_line_cursor#79 ← phi( mul16u_error::@5/(byte*) print_line_cursor#83 ) (dword) mul16u_error::mf#4 ← phi( mul16u_error::@5/(dword) mul16u_error::mf#5 ) (dword) mul16u_error::mn#2 ← phi( mul16u_error::@5/(dword) mul16u_error::mn#3 ) - (byte*) print_char_cursor#104 ← phi( mul16u_error::@5/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#40 ← (byte*) print_char_cursor#104 + (byte*) print_char_cursor#106 ← phi( mul16u_error::@5/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#41 ← (byte*) print_char_cursor#106 (byte*) print_str::str#6 ← (const string) mul16u_error::str3 call print_str to:mul16u_error::@7 @@ -1022,49 +1033,49 @@ mul16u_error::@7: scope:[mul16u_error] from mul16u_error::@6 (byte*) print_line_cursor#74 ← phi( mul16u_error::@6/(byte*) print_line_cursor#79 ) (dword) mul16u_error::mf#3 ← phi( mul16u_error::@6/(dword) mul16u_error::mf#4 ) (dword) mul16u_error::mn#1 ← phi( mul16u_error::@6/(dword) mul16u_error::mn#2 ) - (byte*) print_char_cursor#105 ← phi( mul16u_error::@6/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#41 ← (byte*) print_char_cursor#105 + (byte*) print_char_cursor#107 ← phi( mul16u_error::@6/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#42 ← (byte*) print_char_cursor#107 (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#1 call print_dword to:mul16u_error::@8 mul16u_error::@8: scope:[mul16u_error] from mul16u_error::@7 (byte*) print_line_cursor#66 ← phi( mul16u_error::@7/(byte*) print_line_cursor#74 ) (dword) mul16u_error::mf#2 ← phi( mul16u_error::@7/(dword) mul16u_error::mf#3 ) - (byte*) print_char_cursor#106 ← phi( mul16u_error::@7/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#42 ← (byte*) print_char_cursor#106 + (byte*) print_char_cursor#108 ← phi( mul16u_error::@7/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#108 (byte*) print_str::str#7 ← (const string) mul16u_error::str4 call print_str to:mul16u_error::@9 mul16u_error::@9: scope:[mul16u_error] from mul16u_error::@8 (byte*) print_line_cursor#57 ← phi( mul16u_error::@8/(byte*) print_line_cursor#66 ) (dword) mul16u_error::mf#1 ← phi( mul16u_error::@8/(dword) mul16u_error::mf#2 ) - (byte*) print_char_cursor#107 ← phi( mul16u_error::@8/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#43 ← (byte*) print_char_cursor#107 + (byte*) print_char_cursor#109 ← phi( mul16u_error::@8/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#109 (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#1 call print_dword to:mul16u_error::@10 mul16u_error::@10: scope:[mul16u_error] from mul16u_error::@9 (byte*) print_line_cursor#49 ← phi( mul16u_error::@9/(byte*) print_line_cursor#57 ) - (byte*) print_char_cursor#108 ← phi( mul16u_error::@9/(byte*) print_char_cursor#14 ) - (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#108 + (byte*) print_char_cursor#110 ← phi( mul16u_error::@9/(byte*) print_char_cursor#14 ) + (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#110 call print_ln to:mul16u_error::@11 mul16u_error::@11: scope:[mul16u_error] from mul16u_error::@10 - (byte*) print_char_cursor#109 ← phi( mul16u_error::@10/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#111 ← phi( mul16u_error::@10/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#34 ← phi( mul16u_error::@10/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#13 ← (byte*) print_line_cursor#34 - (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#109 + (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#111 to:mul16u_error::@return mul16u_error::@return: scope:[mul16u_error] from mul16u_error::@11 (byte*) print_line_cursor#35 ← phi( mul16u_error::@11/(byte*) print_line_cursor#13 ) - (byte*) print_char_cursor#110 ← phi( mul16u_error::@11/(byte*) print_char_cursor#45 ) - (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#110 + (byte*) print_char_cursor#112 ← phi( mul16u_error::@11/(byte*) print_char_cursor#46 ) + (byte*) print_char_cursor#47 ← (byte*) print_char_cursor#112 (byte*) print_line_cursor#14 ← (byte*) print_line_cursor#35 return to:@return mul16s_compare: scope:[mul16s_compare] from main::@3 (byte*) print_line_cursor#100 ← phi( main::@3/(byte*) print_line_cursor#6 ) - (byte*) print_char_cursor#157 ← phi( main::@3/(byte*) print_char_cursor#26 ) + (byte*) print_char_cursor#160 ← phi( main::@3/(byte*) print_char_cursor#27 ) (signed word) mul16s_compare::a#0 ← (number) -$7fff (signed word) mul16s_compare::b#0 ← (number) -$7fff (byte) mul16s_compare::i#0 ← (byte) 0 @@ -1074,7 +1085,7 @@ mul16s_compare::@1: scope:[mul16s_compare] from mul16s_compare mul16s_compare:: (byte) mul16s_compare::i#13 ← phi( mul16s_compare/(byte) mul16s_compare::i#0 mul16s_compare::@10/(byte) mul16s_compare::i#1 ) (signed word) mul16s_compare::b#9 ← phi( mul16s_compare/(signed word) mul16s_compare::b#0 mul16s_compare::@10/(signed word) mul16s_compare::b#12 ) (signed word) mul16s_compare::a#9 ← phi( mul16s_compare/(signed word) mul16s_compare::a#0 mul16s_compare::@10/(signed word) mul16s_compare::a#12 ) - (byte*) print_char_cursor#146 ← phi( mul16s_compare/(byte*) print_char_cursor#157 mul16s_compare::@10/(byte*) print_char_cursor#158 ) + (byte*) print_char_cursor#149 ← phi( mul16s_compare/(byte*) print_char_cursor#160 mul16s_compare::@10/(byte*) print_char_cursor#161 ) (byte*) print_str::str#8 ← (const string) mul16s_compare::str call print_str to:mul16s_compare::@12 @@ -1083,13 +1094,13 @@ mul16s_compare::@12: scope:[mul16s_compare] from mul16s_compare::@1 (byte) mul16s_compare::i#12 ← phi( mul16s_compare::@1/(byte) mul16s_compare::i#13 ) (signed word) mul16s_compare::b#6 ← phi( mul16s_compare::@1/(signed word) mul16s_compare::b#9 ) (signed word) mul16s_compare::a#6 ← phi( mul16s_compare::@1/(signed word) mul16s_compare::a#9 ) - (byte*) print_char_cursor#111 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#47 ← (byte*) print_char_cursor#111 + (byte*) print_char_cursor#113 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#48 ← (byte*) print_char_cursor#113 (byte) mul16s_compare::j#0 ← (byte) 0 to:mul16s_compare::@2 mul16s_compare::@2: scope:[mul16s_compare] from mul16s_compare::@12 mul16s_compare::@5 (byte*) print_line_cursor#88 ← phi( mul16s_compare::@12/(byte*) print_line_cursor#92 mul16s_compare::@5/(byte*) print_line_cursor#69 ) - (byte*) print_char_cursor#178 ← phi( mul16s_compare::@12/(byte*) print_char_cursor#47 mul16s_compare::@5/(byte*) print_char_cursor#167 ) + (byte*) print_char_cursor#181 ← phi( mul16s_compare::@12/(byte*) print_char_cursor#48 mul16s_compare::@5/(byte*) print_char_cursor#170 ) (byte) mul16s_compare::i#11 ← phi( mul16s_compare::@12/(byte) mul16s_compare::i#12 mul16s_compare::@5/(byte) mul16s_compare::i#3 ) (byte) mul16s_compare::j#10 ← phi( mul16s_compare::@12/(byte) mul16s_compare::j#0 mul16s_compare::@5/(byte) mul16s_compare::j#1 ) (signed word) mul16s_compare::b#2 ← phi( mul16s_compare::@12/(signed word) mul16s_compare::b#6 mul16s_compare::@5/(signed word) mul16s_compare::b#7 ) @@ -1105,7 +1116,7 @@ mul16s_compare::@2: scope:[mul16s_compare] from mul16s_compare::@12 mul16s_comp to:mul16s_compare::@13 mul16s_compare::@13: scope:[mul16s_compare] from mul16s_compare::@2 (byte*) print_line_cursor#84 ← phi( mul16s_compare::@2/(byte*) print_line_cursor#88 ) - (byte*) print_char_cursor#176 ← phi( mul16s_compare::@2/(byte*) print_char_cursor#178 ) + (byte*) print_char_cursor#179 ← phi( mul16s_compare::@2/(byte*) print_char_cursor#181 ) (byte) mul16s_compare::i#10 ← phi( mul16s_compare::@2/(byte) mul16s_compare::i#11 ) (byte) mul16s_compare::j#9 ← phi( mul16s_compare::@2/(byte) mul16s_compare::j#10 ) (signed word) mul16s_compare::b#3 ← phi( mul16s_compare::@2/(signed word) mul16s_compare::b#1 ) @@ -1120,7 +1131,7 @@ mul16s_compare::@13: scope:[mul16s_compare] from mul16s_compare::@2 to:mul16s_compare::@14 mul16s_compare::@14: scope:[mul16s_compare] from mul16s_compare::@13 (byte*) print_line_cursor#80 ← phi( mul16s_compare::@13/(byte*) print_line_cursor#84 ) - (byte*) print_char_cursor#174 ← phi( mul16s_compare::@13/(byte*) print_char_cursor#176 ) + (byte*) print_char_cursor#177 ← phi( mul16s_compare::@13/(byte*) print_char_cursor#179 ) (byte) mul16s_compare::i#9 ← phi( mul16s_compare::@13/(byte) mul16s_compare::i#10 ) (byte) mul16s_compare::j#8 ← phi( mul16s_compare::@13/(byte) mul16s_compare::j#9 ) (signed dword) mul16s_compare::ms#4 ← phi( mul16s_compare::@13/(signed dword) mul16s_compare::ms#0 ) @@ -1136,7 +1147,7 @@ mul16s_compare::@14: scope:[mul16s_compare] from mul16s_compare::@13 to:mul16s_compare::@15 mul16s_compare::@15: scope:[mul16s_compare] from mul16s_compare::@14 (byte*) print_line_cursor#75 ← phi( mul16s_compare::@14/(byte*) print_line_cursor#80 ) - (byte*) print_char_cursor#171 ← phi( mul16s_compare::@14/(byte*) print_char_cursor#174 ) + (byte*) print_char_cursor#174 ← phi( mul16s_compare::@14/(byte*) print_char_cursor#177 ) (byte) mul16s_compare::i#7 ← phi( mul16s_compare::@14/(byte) mul16s_compare::i#9 ) (signed word) mul16s_compare::b#13 ← phi( mul16s_compare::@14/(signed word) mul16s_compare::b#4 ) (signed word) mul16s_compare::a#13 ← phi( mul16s_compare::@14/(signed word) mul16s_compare::a#4 ) @@ -1153,7 +1164,7 @@ mul16s_compare::@15: scope:[mul16s_compare] from mul16s_compare::@14 to:mul16s_compare::@6 mul16s_compare::@3: scope:[mul16s_compare] from mul16s_compare::@15 mul16s_compare::@6 (byte*) print_line_cursor#67 ← phi( mul16s_compare::@15/(byte*) print_line_cursor#75 mul16s_compare::@6/(byte*) print_line_cursor#76 ) - (byte*) print_char_cursor#165 ← phi( mul16s_compare::@15/(byte*) print_char_cursor#171 mul16s_compare::@6/(byte*) print_char_cursor#172 ) + (byte*) print_char_cursor#168 ← phi( mul16s_compare::@15/(byte*) print_char_cursor#174 mul16s_compare::@6/(byte*) print_char_cursor#175 ) (byte) mul16s_compare::i#5 ← phi( mul16s_compare::@15/(byte) mul16s_compare::i#7 mul16s_compare::@6/(byte) mul16s_compare::i#8 ) (signed dword) mul16s_compare::mf#3 ← phi( mul16s_compare::@15/(signed dword) mul16s_compare::mf#0 mul16s_compare::@6/(signed dword) mul16s_compare::mf#5 ) (signed word) mul16s_compare::b#10 ← phi( mul16s_compare::@15/(signed word) mul16s_compare::b#13 mul16s_compare::@6/(signed word) mul16s_compare::b#14 ) @@ -1168,7 +1179,7 @@ mul16s_compare::@3: scope:[mul16s_compare] from mul16s_compare::@15 mul16s_comp to:mul16s_compare::@7 mul16s_compare::@6: scope:[mul16s_compare] from mul16s_compare::@15 (byte*) print_line_cursor#76 ← phi( mul16s_compare::@15/(byte*) print_line_cursor#75 ) - (byte*) print_char_cursor#172 ← phi( mul16s_compare::@15/(byte*) print_char_cursor#171 ) + (byte*) print_char_cursor#175 ← phi( mul16s_compare::@15/(byte*) print_char_cursor#174 ) (byte) mul16s_compare::i#8 ← phi( mul16s_compare::@15/(byte) mul16s_compare::i#7 ) (signed dword) mul16s_compare::mf#5 ← phi( mul16s_compare::@15/(signed dword) mul16s_compare::mf#0 ) (signed word) mul16s_compare::b#14 ← phi( mul16s_compare::@15/(signed word) mul16s_compare::b#13 ) @@ -1180,7 +1191,7 @@ mul16s_compare::@6: scope:[mul16s_compare] from mul16s_compare::@15 to:mul16s_compare::@3 mul16s_compare::@4: scope:[mul16s_compare] from mul16s_compare::@3 mul16s_compare::@7 (byte*) print_line_cursor#58 ← phi( mul16s_compare::@3/(byte*) print_line_cursor#67 mul16s_compare::@7/(byte*) print_line_cursor#68 ) - (byte*) print_char_cursor#159 ← phi( mul16s_compare::@3/(byte*) print_char_cursor#165 mul16s_compare::@7/(byte*) print_char_cursor#166 ) + (byte*) print_char_cursor#162 ← phi( mul16s_compare::@3/(byte*) print_char_cursor#168 mul16s_compare::@7/(byte*) print_char_cursor#169 ) (byte) mul16s_compare::i#4 ← phi( mul16s_compare::@3/(byte) mul16s_compare::i#5 mul16s_compare::@7/(byte) mul16s_compare::i#6 ) (signed dword) mul16s_compare::mf#2 ← phi( mul16s_compare::@3/(signed dword) mul16s_compare::mf#3 mul16s_compare::@7/(signed dword) mul16s_compare::mf#4 ) (signed dword) mul16s_compare::mn#5 ← phi( mul16s_compare::@3/(signed dword) mul16s_compare::mn#1 mul16s_compare::@7/(signed dword) mul16s_compare::mn#6 ) @@ -1195,7 +1206,7 @@ mul16s_compare::@4: scope:[mul16s_compare] from mul16s_compare::@3 mul16s_compa to:mul16s_compare::@8 mul16s_compare::@7: scope:[mul16s_compare] from mul16s_compare::@3 (byte*) print_line_cursor#68 ← phi( mul16s_compare::@3/(byte*) print_line_cursor#67 ) - (byte*) print_char_cursor#166 ← phi( mul16s_compare::@3/(byte*) print_char_cursor#165 ) + (byte*) print_char_cursor#169 ← phi( mul16s_compare::@3/(byte*) print_char_cursor#168 ) (byte) mul16s_compare::i#6 ← phi( mul16s_compare::@3/(byte) mul16s_compare::i#5 ) (signed dword) mul16s_compare::mf#4 ← phi( mul16s_compare::@3/(signed dword) mul16s_compare::mf#3 ) (signed dword) mul16s_compare::mn#6 ← phi( mul16s_compare::@3/(signed dword) mul16s_compare::mn#1 ) @@ -1207,7 +1218,7 @@ mul16s_compare::@7: scope:[mul16s_compare] from mul16s_compare::@3 to:mul16s_compare::@4 mul16s_compare::@5: scope:[mul16s_compare] from mul16s_compare::@4 (byte*) print_line_cursor#69 ← phi( mul16s_compare::@4/(byte*) print_line_cursor#58 ) - (byte*) print_char_cursor#167 ← phi( mul16s_compare::@4/(byte*) print_char_cursor#159 ) + (byte*) print_char_cursor#170 ← phi( mul16s_compare::@4/(byte*) print_char_cursor#162 ) (byte) mul16s_compare::i#3 ← phi( mul16s_compare::@4/(byte) mul16s_compare::i#4 ) (signed word) mul16s_compare::b#7 ← phi( mul16s_compare::@4/(signed word) mul16s_compare::b#8 ) (signed word) mul16s_compare::a#7 ← phi( mul16s_compare::@4/(signed word) mul16s_compare::a#8 ) @@ -1218,7 +1229,7 @@ mul16s_compare::@5: scope:[mul16s_compare] from mul16s_compare::@4 to:mul16s_compare::@10 mul16s_compare::@8: scope:[mul16s_compare] from mul16s_compare::@4 (byte*) print_line_cursor#50 ← phi( mul16s_compare::@4/(byte*) print_line_cursor#58 ) - (byte*) print_char_cursor#147 ← phi( mul16s_compare::@4/(byte*) print_char_cursor#159 ) + (byte*) print_char_cursor#150 ← phi( mul16s_compare::@4/(byte*) print_char_cursor#162 ) (signed dword) mul16s_compare::mf#1 ← phi( mul16s_compare::@4/(signed dword) mul16s_compare::mf#2 ) (signed dword) mul16s_compare::mn#2 ← phi( mul16s_compare::@4/(signed dword) mul16s_compare::mn#5 ) (signed dword) mul16s_compare::ms#3 ← phi( mul16s_compare::@4/(signed dword) mul16s_compare::ms#6 ) @@ -1234,14 +1245,14 @@ mul16s_compare::@8: scope:[mul16s_compare] from mul16s_compare::@4 to:mul16s_compare::@16 mul16s_compare::@16: scope:[mul16s_compare] from mul16s_compare::@8 (byte*) print_line_cursor#36 ← phi( mul16s_compare::@8/(byte*) print_line_cursor#20 ) - (byte*) print_char_cursor#112 ← phi( mul16s_compare::@8/(byte*) print_char_cursor#64 ) - (byte*) print_char_cursor#48 ← (byte*) print_char_cursor#112 + (byte*) print_char_cursor#114 ← phi( mul16s_compare::@8/(byte*) print_char_cursor#65 ) + (byte*) print_char_cursor#49 ← (byte*) print_char_cursor#114 (byte*) print_line_cursor#15 ← (byte*) print_line_cursor#36 to:mul16s_compare::@return mul16s_compare::@return: scope:[mul16s_compare] from mul16s_compare::@16 mul16s_compare::@19 (byte*) print_line_cursor#37 ← phi( mul16s_compare::@16/(byte*) print_line_cursor#15 mul16s_compare::@19/(byte*) print_line_cursor#18 ) - (byte*) print_char_cursor#113 ← phi( mul16s_compare::@16/(byte*) print_char_cursor#48 mul16s_compare::@19/(byte*) print_char_cursor#52 ) - (byte*) print_char_cursor#49 ← (byte*) print_char_cursor#113 + (byte*) print_char_cursor#115 ← phi( mul16s_compare::@16/(byte*) print_char_cursor#49 mul16s_compare::@19/(byte*) print_char_cursor#53 ) + (byte*) print_char_cursor#50 ← (byte*) print_char_cursor#115 (byte*) print_line_cursor#16 ← (byte*) print_line_cursor#37 return to:@return @@ -1249,36 +1260,36 @@ mul16s_compare::@10: scope:[mul16s_compare] from mul16s_compare::@5 (signed word) mul16s_compare::b#12 ← phi( mul16s_compare::@5/(signed word) mul16s_compare::b#7 ) (signed word) mul16s_compare::a#12 ← phi( mul16s_compare::@5/(signed word) mul16s_compare::a#7 ) (byte*) print_line_cursor#59 ← phi( mul16s_compare::@5/(byte*) print_line_cursor#69 ) - (byte*) print_char_cursor#158 ← phi( mul16s_compare::@5/(byte*) print_char_cursor#167 ) + (byte*) print_char_cursor#161 ← phi( mul16s_compare::@5/(byte*) print_char_cursor#170 ) (byte) mul16s_compare::i#2 ← phi( mul16s_compare::@5/(byte) mul16s_compare::i#3 ) (byte) mul16s_compare::i#1 ← (byte) mul16s_compare::i#2 + rangenext(0,$f) (bool~) mul16s_compare::$17 ← (byte) mul16s_compare::i#1 != rangelast(0,$f) if((bool~) mul16s_compare::$17) goto mul16s_compare::@1 to:mul16s_compare::@11 mul16s_compare::@11: scope:[mul16s_compare] from mul16s_compare::@10 - (byte*) print_char_cursor#148 ← phi( mul16s_compare::@10/(byte*) print_char_cursor#158 ) + (byte*) print_char_cursor#151 ← phi( mul16s_compare::@10/(byte*) print_char_cursor#161 ) (byte*) print_line_cursor#51 ← phi( mul16s_compare::@10/(byte*) print_line_cursor#59 ) call print_ln to:mul16s_compare::@17 mul16s_compare::@17: scope:[mul16s_compare] from mul16s_compare::@11 - (byte*) print_char_cursor#114 ← phi( mul16s_compare::@11/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#116 ← phi( mul16s_compare::@11/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#38 ← phi( mul16s_compare::@11/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#17 ← (byte*) print_line_cursor#38 - (byte*) print_char_cursor#50 ← (byte*) print_char_cursor#114 + (byte*) print_char_cursor#51 ← (byte*) print_char_cursor#116 (byte*) print_str::str#9 ← (const string) mul16s_compare::str1 call print_str to:mul16s_compare::@18 mul16s_compare::@18: scope:[mul16s_compare] from mul16s_compare::@17 (byte*) print_line_cursor#52 ← phi( mul16s_compare::@17/(byte*) print_line_cursor#17 ) - (byte*) print_char_cursor#115 ← phi( mul16s_compare::@17/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#51 ← (byte*) print_char_cursor#115 + (byte*) print_char_cursor#117 ← phi( mul16s_compare::@17/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#52 ← (byte*) print_char_cursor#117 call print_ln to:mul16s_compare::@19 mul16s_compare::@19: scope:[mul16s_compare] from mul16s_compare::@18 - (byte*) print_char_cursor#116 ← phi( mul16s_compare::@18/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#118 ← phi( mul16s_compare::@18/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#39 ← phi( mul16s_compare::@18/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#18 ← (byte*) print_line_cursor#39 - (byte*) print_char_cursor#52 ← (byte*) print_char_cursor#116 + (byte*) print_char_cursor#53 ← (byte*) print_char_cursor#118 to:mul16s_compare::@return mul16s_error: scope:[mul16s_error] from mul16s_compare::@8 (byte*) print_line_cursor#103 ← phi( mul16s_compare::@8/(byte*) print_line_cursor#50 ) @@ -1287,7 +1298,7 @@ mul16s_error: scope:[mul16s_error] from mul16s_compare::@8 (signed dword) mul16s_error::ms#6 ← phi( mul16s_compare::@8/(signed dword) mul16s_error::ms#0 ) (signed word) mul16s_error::b#4 ← phi( mul16s_compare::@8/(signed word) mul16s_error::b#0 ) (signed word) mul16s_error::a#2 ← phi( mul16s_compare::@8/(signed word) mul16s_error::a#0 ) - (byte*) print_char_cursor#149 ← phi( mul16s_compare::@8/(byte*) print_char_cursor#147 ) + (byte*) print_char_cursor#152 ← phi( mul16s_compare::@8/(byte*) print_char_cursor#150 ) (byte*) print_str::str#10 ← (const string) mul16s_error::str call print_str to:mul16s_error::@1 @@ -1298,8 +1309,8 @@ mul16s_error::@1: scope:[mul16s_error] from mul16s_error (signed dword) mul16s_error::ms#5 ← phi( mul16s_error/(signed dword) mul16s_error::ms#6 ) (signed word) mul16s_error::b#3 ← phi( mul16s_error/(signed word) mul16s_error::b#4 ) (signed word) mul16s_error::a#1 ← phi( mul16s_error/(signed word) mul16s_error::a#2 ) - (byte*) print_char_cursor#117 ← phi( mul16s_error/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#53 ← (byte*) print_char_cursor#117 + (byte*) print_char_cursor#119 ← phi( mul16s_error/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#54 ← (byte*) print_char_cursor#119 (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#1 call print_sword to:mul16s_error::@2 @@ -1309,8 +1320,8 @@ mul16s_error::@2: scope:[mul16s_error] from mul16s_error::@1 (signed dword) mul16s_error::mn#6 ← phi( mul16s_error::@1/(signed dword) mul16s_error::mn#7 ) (signed dword) mul16s_error::ms#4 ← phi( mul16s_error::@1/(signed dword) mul16s_error::ms#5 ) (signed word) mul16s_error::b#2 ← phi( mul16s_error::@1/(signed word) mul16s_error::b#3 ) - (byte*) print_char_cursor#118 ← phi( mul16s_error::@1/(byte*) print_char_cursor#8 ) - (byte*) print_char_cursor#54 ← (byte*) print_char_cursor#118 + (byte*) print_char_cursor#120 ← phi( mul16s_error::@1/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#55 ← (byte*) print_char_cursor#120 (byte*) print_str::str#11 ← (const string) mul16s_error::str1 call print_str to:mul16s_error::@3 @@ -1320,8 +1331,8 @@ mul16s_error::@3: scope:[mul16s_error] from mul16s_error::@2 (signed dword) mul16s_error::mn#5 ← phi( mul16s_error::@2/(signed dword) mul16s_error::mn#6 ) (signed dword) mul16s_error::ms#3 ← phi( mul16s_error::@2/(signed dword) mul16s_error::ms#4 ) (signed word) mul16s_error::b#1 ← phi( mul16s_error::@2/(signed word) mul16s_error::b#2 ) - (byte*) print_char_cursor#119 ← phi( mul16s_error::@2/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#55 ← (byte*) print_char_cursor#119 + (byte*) print_char_cursor#121 ← phi( mul16s_error::@2/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#56 ← (byte*) print_char_cursor#121 (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#1 call print_sword to:mul16s_error::@4 @@ -1330,8 +1341,8 @@ mul16s_error::@4: scope:[mul16s_error] from mul16s_error::@3 (signed dword) mul16s_error::mf#6 ← phi( mul16s_error::@3/(signed dword) mul16s_error::mf#7 ) (signed dword) mul16s_error::mn#4 ← phi( mul16s_error::@3/(signed dword) mul16s_error::mn#5 ) (signed dword) mul16s_error::ms#2 ← phi( mul16s_error::@3/(signed dword) mul16s_error::ms#3 ) - (byte*) print_char_cursor#120 ← phi( mul16s_error::@3/(byte*) print_char_cursor#8 ) - (byte*) print_char_cursor#56 ← (byte*) print_char_cursor#120 + (byte*) print_char_cursor#122 ← phi( mul16s_error::@3/(byte*) print_char_cursor#8 ) + (byte*) print_char_cursor#57 ← (byte*) print_char_cursor#122 (byte*) print_str::str#12 ← (const string) mul16s_error::str2 call print_str to:mul16s_error::@5 @@ -1340,8 +1351,8 @@ mul16s_error::@5: scope:[mul16s_error] from mul16s_error::@4 (signed dword) mul16s_error::mf#5 ← phi( mul16s_error::@4/(signed dword) mul16s_error::mf#6 ) (signed dword) mul16s_error::mn#3 ← phi( mul16s_error::@4/(signed dword) mul16s_error::mn#4 ) (signed dword) mul16s_error::ms#1 ← phi( mul16s_error::@4/(signed dword) mul16s_error::ms#2 ) - (byte*) print_char_cursor#121 ← phi( mul16s_error::@4/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#57 ← (byte*) print_char_cursor#121 + (byte*) print_char_cursor#123 ← phi( mul16s_error::@4/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#58 ← (byte*) print_char_cursor#123 (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#1 call print_sdword to:mul16s_error::@6 @@ -1349,8 +1360,8 @@ mul16s_error::@6: scope:[mul16s_error] from mul16s_error::@5 (byte*) print_line_cursor#81 ← phi( mul16s_error::@5/(byte*) print_line_cursor#85 ) (signed dword) mul16s_error::mf#4 ← phi( mul16s_error::@5/(signed dword) mul16s_error::mf#5 ) (signed dword) mul16s_error::mn#2 ← phi( mul16s_error::@5/(signed dword) mul16s_error::mn#3 ) - (byte*) print_char_cursor#122 ← phi( mul16s_error::@5/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#58 ← (byte*) print_char_cursor#122 + (byte*) print_char_cursor#124 ← phi( mul16s_error::@5/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#59 ← (byte*) print_char_cursor#124 (byte*) print_str::str#13 ← (const string) mul16s_error::str3 call print_str to:mul16s_error::@7 @@ -1358,57 +1369,57 @@ mul16s_error::@7: scope:[mul16s_error] from mul16s_error::@6 (byte*) print_line_cursor#77 ← phi( mul16s_error::@6/(byte*) print_line_cursor#81 ) (signed dword) mul16s_error::mf#3 ← phi( mul16s_error::@6/(signed dword) mul16s_error::mf#4 ) (signed dword) mul16s_error::mn#1 ← phi( mul16s_error::@6/(signed dword) mul16s_error::mn#2 ) - (byte*) print_char_cursor#123 ← phi( mul16s_error::@6/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#59 ← (byte*) print_char_cursor#123 + (byte*) print_char_cursor#125 ← phi( mul16s_error::@6/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#60 ← (byte*) print_char_cursor#125 (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#1 call print_sdword to:mul16s_error::@8 mul16s_error::@8: scope:[mul16s_error] from mul16s_error::@7 (byte*) print_line_cursor#70 ← phi( mul16s_error::@7/(byte*) print_line_cursor#77 ) (signed dword) mul16s_error::mf#2 ← phi( mul16s_error::@7/(signed dword) mul16s_error::mf#3 ) - (byte*) print_char_cursor#124 ← phi( mul16s_error::@7/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#60 ← (byte*) print_char_cursor#124 + (byte*) print_char_cursor#126 ← phi( mul16s_error::@7/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#61 ← (byte*) print_char_cursor#126 (byte*) print_str::str#14 ← (const string) mul16s_error::str4 call print_str to:mul16s_error::@9 mul16s_error::@9: scope:[mul16s_error] from mul16s_error::@8 (byte*) print_line_cursor#60 ← phi( mul16s_error::@8/(byte*) print_line_cursor#70 ) (signed dword) mul16s_error::mf#1 ← phi( mul16s_error::@8/(signed dword) mul16s_error::mf#2 ) - (byte*) print_char_cursor#125 ← phi( mul16s_error::@8/(byte*) print_char_cursor#2 ) - (byte*) print_char_cursor#61 ← (byte*) print_char_cursor#125 + (byte*) print_char_cursor#127 ← phi( mul16s_error::@8/(byte*) print_char_cursor#2 ) + (byte*) print_char_cursor#62 ← (byte*) print_char_cursor#127 (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#1 call print_sdword to:mul16s_error::@10 mul16s_error::@10: scope:[mul16s_error] from mul16s_error::@9 (byte*) print_line_cursor#53 ← phi( mul16s_error::@9/(byte*) print_line_cursor#60 ) - (byte*) print_char_cursor#126 ← phi( mul16s_error::@9/(byte*) print_char_cursor#17 ) - (byte*) print_char_cursor#62 ← (byte*) print_char_cursor#126 + (byte*) print_char_cursor#128 ← phi( mul16s_error::@9/(byte*) print_char_cursor#18 ) + (byte*) print_char_cursor#63 ← (byte*) print_char_cursor#128 call print_ln to:mul16s_error::@11 mul16s_error::@11: scope:[mul16s_error] from mul16s_error::@10 - (byte*) print_char_cursor#127 ← phi( mul16s_error::@10/(byte*) print_char_cursor#4 ) + (byte*) print_char_cursor#129 ← phi( mul16s_error::@10/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#40 ← phi( mul16s_error::@10/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#40 - (byte*) print_char_cursor#63 ← (byte*) print_char_cursor#127 + (byte*) print_char_cursor#64 ← (byte*) print_char_cursor#129 to:mul16s_error::@return mul16s_error::@return: scope:[mul16s_error] from mul16s_error::@11 (byte*) print_line_cursor#41 ← phi( mul16s_error::@11/(byte*) print_line_cursor#19 ) - (byte*) print_char_cursor#128 ← phi( mul16s_error::@11/(byte*) print_char_cursor#63 ) - (byte*) print_char_cursor#64 ← (byte*) print_char_cursor#128 + (byte*) print_char_cursor#130 ← phi( mul16s_error::@11/(byte*) print_char_cursor#64 ) + (byte*) print_char_cursor#65 ← (byte*) print_char_cursor#130 (byte*) print_line_cursor#20 ← (byte*) print_line_cursor#41 return to:@return @42: scope:[] from @35 (byte*) print_screen#5 ← phi( @35/(byte*) print_screen#6 ) - (byte*) print_char_cursor#150 ← phi( @35/(byte*) print_char_cursor#160 ) + (byte*) print_char_cursor#153 ← phi( @35/(byte*) print_char_cursor#163 ) (byte*) print_line_cursor#54 ← phi( @35/(byte*) print_line_cursor#61 ) call main to:@43 @43: scope:[] from @42 - (byte*) print_char_cursor#129 ← phi( @42/(byte*) print_char_cursor#28 ) + (byte*) print_char_cursor#131 ← phi( @42/(byte*) print_char_cursor#29 ) (byte*) print_line_cursor#42 ← phi( @42/(byte*) print_line_cursor#8 ) (byte*) print_line_cursor#21 ← (byte*) print_line_cursor#42 - (byte*) print_char_cursor#65 ← (byte*) print_char_cursor#129 + (byte*) print_char_cursor#66 ← (byte*) print_char_cursor#131 to:@end @end: scope:[] from @43 @@ -2169,6 +2180,7 @@ SYMBOL TABLE SSA (byte) print_char::ch#3 (byte) print_char::ch#4 (byte) print_char::ch#5 +(byte) print_char::ch#6 (byte*) print_char_cursor (byte*) print_char_cursor#0 (byte*) print_char_cursor#1 @@ -2259,7 +2271,10 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#176 (byte*) print_char_cursor#177 (byte*) print_char_cursor#178 +(byte*) print_char_cursor#179 (byte*) print_char_cursor#18 +(byte*) print_char_cursor#180 +(byte*) print_char_cursor#181 (byte*) print_char_cursor#19 (byte*) print_char_cursor#2 (byte*) print_char_cursor#20 @@ -2497,13 +2512,14 @@ SYMBOL TABLE SSA (byte*) print_screen#8 (void()) print_sdword((signed dword) print_sdword::dw) (bool~) print_sdword::$0 -(bool~) print_sdword::$1 -(dword~) print_sdword::$2 +(dword~) print_sdword::$1 (signed dword~) print_sdword::$5 (label) print_sdword::@1 (label) print_sdword::@2 (label) print_sdword::@3 -(label) print_sdword::@4 +(label) print_sdword::@5 +(label) print_sdword::@6 +(label) print_sdword::@7 (label) print_sdword::@return (signed dword) print_sdword::dw (signed dword) print_sdword::dw#0 @@ -2514,6 +2530,8 @@ SYMBOL TABLE SSA (signed dword) print_sdword::dw#5 (signed dword) print_sdword::dw#6 (signed dword) print_sdword::dw#7 +(signed dword) print_sdword::dw#8 +(signed dword) print_sdword::dw#9 (void()) print_str((byte*) print_str::str) (bool~) print_str::$0 (label) print_str::@1 @@ -2643,7 +2661,7 @@ Adding number conversion cast (unumber) 2 in *((byte*) BGCOL#0) ← (number) 2 Successful SSA optimization PassNAddNumberTypeConversions Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400 Inlining cast (word~) print_sword::$1 ← (word)(signed word) print_sword::w#5 -Inlining cast (dword~) print_sdword::$2 ← (dword)(signed dword) print_sdword::dw#5 +Inlining cast (dword~) print_sdword::$1 ← (dword)(signed dword) print_sdword::dw#6 Inlining cast (dword) mul16u::res#0 ← (unumber)(number) 0 Inlining cast (word~) mul16s::$0 ← (word)(signed word) mul16s::a#1 Inlining cast (word~) mul16s::$1 ← (word)(signed word) mul16s::b#1 @@ -2817,55 +2835,55 @@ Inferred type updated to word in (unumber~) mul16u_compare::$4 ← (word) mul16u Inferred type updated to word in (unumber~) mul16u_compare::$5 ← (word) mul16u_compare::b#2 + (word) $ffd Inferred type updated to signed word in (snumber~) mul16s_compare::$4 ← (signed word) mul16s_compare::a#2 + (signed word) $d2b Inferred type updated to signed word in (snumber~) mul16s_compare::$5 ← (signed word) mul16s_compare::b#2 + (signed word) $ffd -Inversing boolean not [80] (bool~) print_sdword::$1 ← (signed dword) print_sdword::dw#4 >= (signed byte) 0 from [79] (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw#4 < (signed byte) 0 -Inversing boolean not [144] (bool~) mul16u::$3 ← (byte~) mul16u::$1 == (byte) 0 from [143] (bool~) mul16u::$2 ← (byte~) mul16u::$1 != (byte) 0 -Inversing boolean not [170] (bool~) mul16s::$4 ← (signed word) mul16s::a#2 >= (signed byte) 0 from [169] (bool~) mul16s::$3 ← (signed word) mul16s::a#2 < (signed byte) 0 -Inversing boolean not [174] (bool~) mul16s::$6 ← (signed word) mul16s::b#2 >= (signed byte) 0 from [173] (bool~) mul16s::$5 ← (signed word) mul16s::b#2 < (signed byte) 0 -Inversing boolean not [210] (bool~) mulf_init::$9 ← (byte~) mulf_init::$7 != (byte) 0 from [209] (bool~) mulf_init::$8 ← (byte~) mulf_init::$7 == (byte) 0 -Inversing boolean not [239] (bool~) mulf_init::$17 ← (byte) mulf_init::x_255#1 != (byte) 0 from [238] (bool~) mulf_init::$16 ← (byte) mulf_init::x_255#1 == (byte) 0 -Inversing boolean not [277] (bool~) mulf16s::$4 ← (signed word) mulf16s::a#2 >= (signed byte) 0 from [276] (bool~) mulf16s::$3 ← (signed word) mulf16s::a#2 < (signed byte) 0 -Inversing boolean not [281] (bool~) mulf16s::$6 ← (signed word) mulf16s::b#2 >= (signed byte) 0 from [280] (bool~) mulf16s::$5 ← (signed word) mulf16s::b#2 < (signed byte) 0 -Inversing boolean not [326] (bool~) muls16u::$1 ← (word) muls16u::a#1 == (byte) 0 from [325] (bool~) muls16u::$0 ← (word) muls16u::a#1 != (byte) 0 -Inversing boolean not [349] (bool~) muls16s::$2 ← (signed word) muls16s::a#2 <= (signed byte) 0 from [348] (bool~) muls16s::$1 ← (signed word) muls16s::a#2 > (signed byte) 0 -Inversing boolean not [408] (bool~) mul16u_compare::$10 ← (dword) mul16u_compare::ms#1 == (dword) mul16u_compare::mf#0 from [407] (bool~) mul16u_compare::$9 ← (dword) mul16u_compare::ms#1 != (dword) mul16u_compare::mf#0 -Inversing boolean not [412] (bool~) mul16u_compare::$12 ← (dword) mul16u_compare::ms#2 == (dword) mul16u_compare::mn#1 from [411] (bool~) mul16u_compare::$11 ← (dword) mul16u_compare::ms#2 != (dword) mul16u_compare::mn#1 -Inversing boolean not [418] (bool~) mul16u_compare::$14 ← (byte) mul16u_compare::ok#3 != (byte) 0 from [417] (bool~) mul16u_compare::$13 ← (byte) mul16u_compare::ok#3 == (byte) 0 -Inversing boolean not [545] (bool~) mul16s_compare::$10 ← (signed dword) mul16s_compare::ms#1 == (signed dword) mul16s_compare::mf#0 from [544] (bool~) mul16s_compare::$9 ← (signed dword) mul16s_compare::ms#1 != (signed dword) mul16s_compare::mf#0 -Inversing boolean not [549] (bool~) mul16s_compare::$12 ← (signed dword) mul16s_compare::ms#2 == (signed dword) mul16s_compare::mn#1 from [548] (bool~) mul16s_compare::$11 ← (signed dword) mul16s_compare::ms#2 != (signed dword) mul16s_compare::mn#1 -Inversing boolean not [555] (bool~) mul16s_compare::$14 ← (byte) mul16s_compare::ok#3 != (byte) 0 from [554] (bool~) mul16s_compare::$13 ← (byte) mul16s_compare::ok#3 == (byte) 0 +Inversing boolean not [148] (bool~) mul16u::$3 ← (byte~) mul16u::$1 == (byte) 0 from [147] (bool~) mul16u::$2 ← (byte~) mul16u::$1 != (byte) 0 +Inversing boolean not [174] (bool~) mul16s::$4 ← (signed word) mul16s::a#2 >= (signed byte) 0 from [173] (bool~) mul16s::$3 ← (signed word) mul16s::a#2 < (signed byte) 0 +Inversing boolean not [178] (bool~) mul16s::$6 ← (signed word) mul16s::b#2 >= (signed byte) 0 from [177] (bool~) mul16s::$5 ← (signed word) mul16s::b#2 < (signed byte) 0 +Inversing boolean not [214] (bool~) mulf_init::$9 ← (byte~) mulf_init::$7 != (byte) 0 from [213] (bool~) mulf_init::$8 ← (byte~) mulf_init::$7 == (byte) 0 +Inversing boolean not [243] (bool~) mulf_init::$17 ← (byte) mulf_init::x_255#1 != (byte) 0 from [242] (bool~) mulf_init::$16 ← (byte) mulf_init::x_255#1 == (byte) 0 +Inversing boolean not [281] (bool~) mulf16s::$4 ← (signed word) mulf16s::a#2 >= (signed byte) 0 from [280] (bool~) mulf16s::$3 ← (signed word) mulf16s::a#2 < (signed byte) 0 +Inversing boolean not [285] (bool~) mulf16s::$6 ← (signed word) mulf16s::b#2 >= (signed byte) 0 from [284] (bool~) mulf16s::$5 ← (signed word) mulf16s::b#2 < (signed byte) 0 +Inversing boolean not [330] (bool~) muls16u::$1 ← (word) muls16u::a#1 == (byte) 0 from [329] (bool~) muls16u::$0 ← (word) muls16u::a#1 != (byte) 0 +Inversing boolean not [353] (bool~) muls16s::$2 ← (signed word) muls16s::a#2 <= (signed byte) 0 from [352] (bool~) muls16s::$1 ← (signed word) muls16s::a#2 > (signed byte) 0 +Inversing boolean not [412] (bool~) mul16u_compare::$10 ← (dword) mul16u_compare::ms#1 == (dword) mul16u_compare::mf#0 from [411] (bool~) mul16u_compare::$9 ← (dword) mul16u_compare::ms#1 != (dword) mul16u_compare::mf#0 +Inversing boolean not [416] (bool~) mul16u_compare::$12 ← (dword) mul16u_compare::ms#2 == (dword) mul16u_compare::mn#1 from [415] (bool~) mul16u_compare::$11 ← (dword) mul16u_compare::ms#2 != (dword) mul16u_compare::mn#1 +Inversing boolean not [422] (bool~) mul16u_compare::$14 ← (byte) mul16u_compare::ok#3 != (byte) 0 from [421] (bool~) mul16u_compare::$13 ← (byte) mul16u_compare::ok#3 == (byte) 0 +Inversing boolean not [549] (bool~) mul16s_compare::$10 ← (signed dword) mul16s_compare::ms#1 == (signed dword) mul16s_compare::mf#0 from [548] (bool~) mul16s_compare::$9 ← (signed dword) mul16s_compare::ms#1 != (signed dword) mul16s_compare::mf#0 +Inversing boolean not [553] (bool~) mul16s_compare::$12 ← (signed dword) mul16s_compare::ms#2 == (signed dword) mul16s_compare::mn#1 from [552] (bool~) mul16s_compare::$11 ← (signed dword) mul16s_compare::ms#2 != (signed dword) mul16s_compare::mn#1 +Inversing boolean not [559] (bool~) mul16s_compare::$14 ← (byte) mul16s_compare::ok#3 != (byte) 0 from [558] (bool~) mul16s_compare::$13 ← (byte) mul16s_compare::ok#3 == (byte) 0 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#71 (byte*) print_char_cursor#168 (byte*) print_screen#8 (byte*) print_line_cursor#62 (byte*) print_char_cursor#161 (byte*) print_screen#7 (byte*) print_line_cursor#61 (byte*) print_char_cursor#160 (byte*) print_screen#6 (byte*) print_line_cursor#54 (byte*) print_char_cursor#150 (byte*) print_screen#5 +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#71 (byte*) print_char_cursor#171 (byte*) print_screen#8 (byte*) print_line_cursor#62 (byte*) print_char_cursor#164 (byte*) print_screen#7 (byte*) print_line_cursor#61 (byte*) print_char_cursor#163 (byte*) print_screen#6 (byte*) print_line_cursor#54 (byte*) print_char_cursor#153 (byte*) print_screen#5 Alias (byte*) print_str::str#15 = (byte*) print_str::str#16 -Alias (byte*) print_char_cursor#130 = (byte*) print_char_cursor#66 (byte*) print_char_cursor#67 (byte*) print_char_cursor#2 -Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#23 (byte*) print_char_cursor#3 (byte*) print_line_cursor#24 (byte*) print_char_cursor#69 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 -Alias (byte*) print_char_cursor#132 = (byte*) print_char_cursor#152 (byte*) print_char_cursor#133 +Alias (byte*) print_char_cursor#132 = (byte*) print_char_cursor#67 (byte*) print_char_cursor#68 (byte*) print_char_cursor#2 +Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#23 (byte*) print_char_cursor#3 (byte*) print_line_cursor#24 (byte*) print_char_cursor#70 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 +Alias (byte*) print_char_cursor#134 = (byte*) print_char_cursor#155 (byte*) print_char_cursor#135 Alias (signed word) print_sword::w#3 = (signed word) print_sword::w#6 (signed word) print_sword::w#4 (signed word) print_sword::w#8 (signed word) print_sword::w#7 -Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#70 +Alias (byte*) print_char_cursor#5 = (byte*) print_char_cursor#71 Alias (signed word) print_sword::w#0 = (signed word~) print_sword::$5 -Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#71 +Alias (byte*) print_char_cursor#6 = (byte*) print_char_cursor#72 Alias (word) print_word::w#0 = (word~) print_sword::$1 -Alias (byte*) print_char_cursor#7 = (byte*) print_char_cursor#72 (byte*) print_char_cursor#73 (byte*) print_char_cursor#8 +Alias (byte*) print_char_cursor#7 = (byte*) print_char_cursor#73 (byte*) print_char_cursor#74 (byte*) print_char_cursor#8 Alias (byte) print_byte::b#0 = (byte~) print_word::$0 Alias (word) print_word::w#5 = (word) print_word::w#6 -Alias (byte*) print_char_cursor#74 = (byte*) print_char_cursor#9 +Alias (byte*) print_char_cursor#75 = (byte*) print_char_cursor#9 Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#75 (byte*) print_char_cursor#76 (byte*) print_char_cursor#11 +Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#76 (byte*) print_char_cursor#77 (byte*) print_char_cursor#11 Alias (word) print_word::w#1 = (word~) print_dword::$0 Alias (dword) print_dword::dw#4 = (dword) print_dword::dw#5 -Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#77 +Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#78 Alias (word) print_word::w#2 = (word~) print_dword::$2 -Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#78 (byte*) print_char_cursor#79 (byte*) print_char_cursor#14 -Alias (dword) print_dword::dw#0 = (dword~) print_sdword::$2 -Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#80 (byte*) print_char_cursor#82 (byte*) print_char_cursor#17 -Alias (byte*) print_char_cursor#138 = (byte*) print_char_cursor#153 -Alias (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#7 (signed dword) print_sdword::dw#6 -Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#81 +Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#79 (byte*) print_char_cursor#80 (byte*) print_char_cursor#14 +Alias (byte*) print_char_cursor#139 = (byte*) print_char_cursor#156 (byte*) print_char_cursor#140 +Alias (signed dword) print_sdword::dw#4 = (signed dword) print_sdword::dw#7 (signed dword) print_sdword::dw#5 (signed dword) print_sdword::dw#9 (signed dword) print_sdword::dw#8 +Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#81 Alias (signed dword) print_sdword::dw#0 = (signed dword~) print_sdword::$5 +Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#82 +Alias (dword) print_dword::dw#0 = (dword~) print_sdword::$1 +Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#83 (byte*) print_char_cursor#84 (byte*) print_char_cursor#18 Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#83 -Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#84 (byte*) print_char_cursor#85 (byte*) print_char_cursor#20 -Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#87 (byte*) print_char_cursor#22 -Alias (byte*) print_line_cursor#25 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#23 (byte*) print_char_cursor#88 (byte*) print_line_cursor#4 (byte*) print_char_cursor#24 +Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#85 +Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#86 (byte*) print_char_cursor#87 (byte*) print_char_cursor#21 +Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#89 (byte*) print_char_cursor#23 +Alias (byte*) print_line_cursor#25 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#24 (byte*) print_char_cursor#90 (byte*) print_line_cursor#4 (byte*) print_char_cursor#25 Alias (dword) mul16u::mb#0 = (word) mul16u::b#2 Alias (word) mul16u::a#3 = (word) mul16u::a#4 (word) mul16u::a#7 Alias (dword) mul16u::mb#3 = (dword) mul16u::mb#4 (dword) mul16u::mb#5 @@ -2909,10 +2927,10 @@ Alias (dword) mulf16s::m#5 = (dword) mulf16s::m#6 Alias (signed word) mulf16s::a#3 = (signed word) mulf16s::a#4 Alias (word~) mulf16s::$17 = (word~) mulf16s::$15 Alias (byte*) print_line_cursor#26 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#45 -Alias (byte*) print_char_cursor#141 = (byte*) print_char_cursor#25 (byte*) print_char_cursor#89 -Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#90 +Alias (byte*) print_char_cursor#144 = (byte*) print_char_cursor#26 (byte*) print_char_cursor#91 +Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#92 Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#6 -Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#91 (byte*) print_char_cursor#92 (byte*) print_char_cursor#28 +Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#93 (byte*) print_char_cursor#94 (byte*) print_char_cursor#29 Alias (byte*) print_line_cursor#28 = (byte*) print_line_cursor#7 (byte*) print_line_cursor#29 (byte*) print_line_cursor#8 Alias (dword) muls16u::return#0 = (dword) muls16u::m#2 (dword) muls16u::return#3 (dword) muls16u::return#1 Alias (dword) muls16u::m#0 = (dword) muls16u::m#4 @@ -2929,13 +2947,13 @@ Alias (word) mul16u_compare::a#6 = (word) mul16u_compare::a#9 Alias (word) mul16u_compare::b#6 = (word) mul16u_compare::b#9 Alias (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#13 Alias (byte*) print_line_cursor#90 = (byte*) print_line_cursor#94 -Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#93 +Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#95 Alias (word) mul16u_compare::a#1 = (word~) mul16u_compare::$4 (word) mul16u_compare::a#3 (word) mul16u_compare::a#4 (word) mul16u_compare::a#13 (word) mul16u_compare::a#14 Alias (word) mul16u_compare::b#1 = (word~) mul16u_compare::$5 (word) mul16u_compare::b#3 (word) mul16u_compare::b#4 (word) mul16u_compare::b#13 (word) mul16u_compare::b#14 Alias (dword) muls16u::return#2 = (dword) muls16u::return#4 Alias (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#9 (byte) mul16u_compare::j#8 (byte) mul16u_compare::j#6 (byte) mul16u_compare::j#7 Alias (byte) mul16u_compare::i#10 = (byte) mul16u_compare::i#11 (byte) mul16u_compare::i#9 (byte) mul16u_compare::i#7 (byte) mul16u_compare::i#8 -Alias (byte*) print_char_cursor#169 = (byte*) print_char_cursor#175 (byte*) print_char_cursor#177 (byte*) print_char_cursor#173 (byte*) print_char_cursor#170 +Alias (byte*) print_char_cursor#172 = (byte*) print_char_cursor#178 (byte*) print_char_cursor#180 (byte*) print_char_cursor#176 (byte*) print_char_cursor#173 Alias (byte*) print_line_cursor#72 = (byte*) print_line_cursor#82 (byte*) print_line_cursor#86 (byte*) print_line_cursor#78 (byte*) print_line_cursor#73 Alias (dword) mul16u_compare::ms#0 = (dword~) mul16u_compare::$6 (dword) mul16u_compare::ms#4 (dword) mul16u_compare::ms#1 (dword) mul16u_compare::ms#5 Alias (dword) mul16u::return#3 = (dword) mul16u::return#6 @@ -2949,55 +2967,55 @@ Alias (dword) mul16u_compare::ms#2 = (dword) mul16u_compare::ms#7 Alias (dword) mul16u_compare::mn#1 = (dword) mul16u_compare::mn#6 Alias (dword) mul16u_compare::mf#3 = (dword) mul16u_compare::mf#4 Alias (byte) mul16u_compare::i#5 = (byte) mul16u_compare::i#6 -Alias (byte*) print_char_cursor#162 = (byte*) print_char_cursor#163 +Alias (byte*) print_char_cursor#165 = (byte*) print_char_cursor#166 Alias (byte*) print_line_cursor#63 = (byte*) print_line_cursor#64 Alias (byte) mul16u_compare::j#2 = (byte) mul16u_compare::j#3 Alias (word) mul16u_compare::a#12 = (word) mul16u_compare::a#7 (word) mul16u_compare::a#8 (word) mul16u_compare::a#5 Alias (word) mul16u_compare::b#12 = (word) mul16u_compare::b#7 (word) mul16u_compare::b#8 (word) mul16u_compare::b#5 Alias (byte) mul16u_compare::i#2 = (byte) mul16u_compare::i#3 (byte) mul16u_compare::i#4 -Alias (byte*) print_char_cursor#143 = (byte*) print_char_cursor#164 (byte*) print_char_cursor#156 (byte*) print_char_cursor#155 (byte*) print_char_cursor#144 +Alias (byte*) print_char_cursor#146 = (byte*) print_char_cursor#167 (byte*) print_char_cursor#159 (byte*) print_char_cursor#158 (byte*) print_char_cursor#147 Alias (byte*) print_line_cursor#46 = (byte*) print_line_cursor#65 (byte*) print_line_cursor#55 (byte*) print_line_cursor#56 (byte*) print_line_cursor#47 Alias (dword) mul16u_compare::ms#3 = (dword) mul16u_compare::ms#6 Alias (dword) mul16u_compare::mn#2 = (dword) mul16u_compare::mn#5 Alias (dword) mul16u_compare::mf#1 = (dword) mul16u_compare::mf#2 -Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#94 +Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#96 Alias (byte*) print_line_cursor#30 = (byte*) print_line_cursor#9 -Alias (byte*) print_char_cursor#31 = (byte*) print_char_cursor#95 +Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#97 Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#31 Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#32 (byte*) print_line_cursor#48 -Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#96 -Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#97 +Alias (byte*) print_char_cursor#33 = (byte*) print_char_cursor#98 +Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#99 Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#33 -Alias (byte*) print_char_cursor#34 = (byte*) print_char_cursor#98 +Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#35 Alias (word) mul16u_error::a#1 = (word) mul16u_error::a#2 Alias (word) mul16u_error::b#1 = (word) mul16u_error::b#3 (word) mul16u_error::b#4 (word) mul16u_error::b#2 Alias (dword) mul16u_error::ms#1 = (dword) mul16u_error::ms#5 (dword) mul16u_error::ms#6 (dword) mul16u_error::ms#4 (dword) mul16u_error::ms#3 (dword) mul16u_error::ms#2 Alias (dword) mul16u_error::mn#1 = (dword) mul16u_error::mn#7 (dword) mul16u_error::mn#8 (dword) mul16u_error::mn#6 (dword) mul16u_error::mn#5 (dword) mul16u_error::mn#4 (dword) mul16u_error::mn#3 (dword) mul16u_error::mn#2 Alias (dword) mul16u_error::mf#1 = (dword) mul16u_error::mf#9 (dword) mul16u_error::mf#10 (dword) mul16u_error::mf#8 (dword) mul16u_error::mf#7 (dword) mul16u_error::mf#6 (dword) mul16u_error::mf#5 (dword) mul16u_error::mf#4 (dword) mul16u_error::mf#3 (dword) mul16u_error::mf#2 Alias (byte*) print_line_cursor#102 = (byte*) print_line_cursor#99 (byte*) print_line_cursor#95 (byte*) print_line_cursor#91 (byte*) print_line_cursor#87 (byte*) print_line_cursor#83 (byte*) print_line_cursor#79 (byte*) print_line_cursor#74 (byte*) print_line_cursor#66 (byte*) print_line_cursor#57 (byte*) print_line_cursor#49 -Alias (byte*) print_char_cursor#35 = (byte*) print_char_cursor#99 -Alias (byte*) print_char_cursor#100 = (byte*) print_char_cursor#36 -Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#37 -Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#38 -Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#39 -Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#40 -Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#41 -Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#42 -Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#43 -Alias (byte*) print_char_cursor#108 = (byte*) print_char_cursor#44 +Alias (byte*) print_char_cursor#101 = (byte*) print_char_cursor#36 +Alias (byte*) print_char_cursor#102 = (byte*) print_char_cursor#37 +Alias (byte*) print_char_cursor#103 = (byte*) print_char_cursor#38 +Alias (byte*) print_char_cursor#104 = (byte*) print_char_cursor#39 +Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#40 +Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#41 +Alias (byte*) print_char_cursor#107 = (byte*) print_char_cursor#42 +Alias (byte*) print_char_cursor#108 = (byte*) print_char_cursor#43 +Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#44 +Alias (byte*) print_char_cursor#110 = (byte*) print_char_cursor#45 Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#34 (byte*) print_line_cursor#35 (byte*) print_line_cursor#14 -Alias (byte*) print_char_cursor#109 = (byte*) print_char_cursor#45 (byte*) print_char_cursor#110 (byte*) print_char_cursor#46 +Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#46 (byte*) print_char_cursor#112 (byte*) print_char_cursor#47 Alias (signed word) mul16s_compare::a#6 = (signed word) mul16s_compare::a#9 Alias (signed word) mul16s_compare::b#6 = (signed word) mul16s_compare::b#9 Alias (byte) mul16s_compare::i#12 = (byte) mul16s_compare::i#13 Alias (byte*) print_line_cursor#92 = (byte*) print_line_cursor#96 -Alias (byte*) print_char_cursor#111 = (byte*) print_char_cursor#47 +Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#48 Alias (signed word) mul16s_compare::a#1 = (signed word~) mul16s_compare::$4 (signed word) mul16s_compare::a#3 (signed word) mul16s_compare::a#4 (signed word) mul16s_compare::a#13 (signed word) mul16s_compare::a#14 Alias (signed word) mul16s_compare::b#1 = (signed word~) mul16s_compare::$5 (signed word) mul16s_compare::b#3 (signed word) mul16s_compare::b#4 (signed word) mul16s_compare::b#13 (signed word) mul16s_compare::b#14 Alias (signed dword) muls16s::return#2 = (signed dword) muls16s::return#4 Alias (byte) mul16s_compare::j#10 = (byte) mul16s_compare::j#9 (byte) mul16s_compare::j#8 (byte) mul16s_compare::j#6 (byte) mul16s_compare::j#7 Alias (byte) mul16s_compare::i#10 = (byte) mul16s_compare::i#11 (byte) mul16s_compare::i#9 (byte) mul16s_compare::i#7 (byte) mul16s_compare::i#8 -Alias (byte*) print_char_cursor#171 = (byte*) print_char_cursor#176 (byte*) print_char_cursor#178 (byte*) print_char_cursor#174 (byte*) print_char_cursor#172 +Alias (byte*) print_char_cursor#174 = (byte*) print_char_cursor#179 (byte*) print_char_cursor#181 (byte*) print_char_cursor#177 (byte*) print_char_cursor#175 Alias (byte*) print_line_cursor#75 = (byte*) print_line_cursor#84 (byte*) print_line_cursor#88 (byte*) print_line_cursor#80 (byte*) print_line_cursor#76 Alias (signed dword) mul16s_compare::ms#0 = (signed dword~) mul16s_compare::$6 (signed dword) mul16s_compare::ms#4 (signed dword) mul16s_compare::ms#1 (signed dword) mul16s_compare::ms#5 Alias (signed dword) mul16s::return#2 = (signed dword) mul16s::return#4 @@ -3011,46 +3029,46 @@ Alias (signed dword) mul16s_compare::ms#2 = (signed dword) mul16s_compare::ms#7 Alias (signed dword) mul16s_compare::mn#1 = (signed dword) mul16s_compare::mn#6 Alias (signed dword) mul16s_compare::mf#3 = (signed dword) mul16s_compare::mf#4 Alias (byte) mul16s_compare::i#5 = (byte) mul16s_compare::i#6 -Alias (byte*) print_char_cursor#165 = (byte*) print_char_cursor#166 +Alias (byte*) print_char_cursor#168 = (byte*) print_char_cursor#169 Alias (byte*) print_line_cursor#67 = (byte*) print_line_cursor#68 Alias (byte) mul16s_compare::j#2 = (byte) mul16s_compare::j#3 Alias (signed word) mul16s_compare::a#12 = (signed word) mul16s_compare::a#7 (signed word) mul16s_compare::a#8 (signed word) mul16s_compare::a#5 Alias (signed word) mul16s_compare::b#12 = (signed word) mul16s_compare::b#7 (signed word) mul16s_compare::b#8 (signed word) mul16s_compare::b#5 Alias (byte) mul16s_compare::i#2 = (byte) mul16s_compare::i#3 (byte) mul16s_compare::i#4 -Alias (byte*) print_char_cursor#147 = (byte*) print_char_cursor#167 (byte*) print_char_cursor#159 (byte*) print_char_cursor#158 (byte*) print_char_cursor#148 +Alias (byte*) print_char_cursor#150 = (byte*) print_char_cursor#170 (byte*) print_char_cursor#162 (byte*) print_char_cursor#161 (byte*) print_char_cursor#151 Alias (byte*) print_line_cursor#50 = (byte*) print_line_cursor#69 (byte*) print_line_cursor#58 (byte*) print_line_cursor#59 (byte*) print_line_cursor#51 Alias (signed dword) mul16s_compare::ms#3 = (signed dword) mul16s_compare::ms#6 Alias (signed dword) mul16s_compare::mn#2 = (signed dword) mul16s_compare::mn#5 Alias (signed dword) mul16s_compare::mf#1 = (signed dword) mul16s_compare::mf#2 -Alias (byte*) print_char_cursor#112 = (byte*) print_char_cursor#48 +Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#49 Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#36 -Alias (byte*) print_char_cursor#113 = (byte*) print_char_cursor#49 +Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#50 Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#37 Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#38 (byte*) print_line_cursor#52 -Alias (byte*) print_char_cursor#114 = (byte*) print_char_cursor#50 -Alias (byte*) print_char_cursor#115 = (byte*) print_char_cursor#51 +Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#51 +Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#52 Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#39 -Alias (byte*) print_char_cursor#116 = (byte*) print_char_cursor#52 +Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#53 Alias (signed word) mul16s_error::a#1 = (signed word) mul16s_error::a#2 Alias (signed word) mul16s_error::b#1 = (signed word) mul16s_error::b#3 (signed word) mul16s_error::b#4 (signed word) mul16s_error::b#2 Alias (signed dword) mul16s_error::ms#1 = (signed dword) mul16s_error::ms#5 (signed dword) mul16s_error::ms#6 (signed dword) mul16s_error::ms#4 (signed dword) mul16s_error::ms#3 (signed dword) mul16s_error::ms#2 Alias (signed dword) mul16s_error::mn#1 = (signed dword) mul16s_error::mn#7 (signed dword) mul16s_error::mn#8 (signed dword) mul16s_error::mn#6 (signed dword) mul16s_error::mn#5 (signed dword) mul16s_error::mn#4 (signed dword) mul16s_error::mn#3 (signed dword) mul16s_error::mn#2 Alias (signed dword) mul16s_error::mf#1 = (signed dword) mul16s_error::mf#9 (signed dword) mul16s_error::mf#10 (signed dword) mul16s_error::mf#8 (signed dword) mul16s_error::mf#7 (signed dword) mul16s_error::mf#6 (signed dword) mul16s_error::mf#5 (signed dword) mul16s_error::mf#4 (signed dword) mul16s_error::mf#3 (signed dword) mul16s_error::mf#2 Alias (byte*) print_line_cursor#101 = (byte*) print_line_cursor#103 (byte*) print_line_cursor#97 (byte*) print_line_cursor#93 (byte*) print_line_cursor#89 (byte*) print_line_cursor#85 (byte*) print_line_cursor#81 (byte*) print_line_cursor#77 (byte*) print_line_cursor#70 (byte*) print_line_cursor#60 (byte*) print_line_cursor#53 -Alias (byte*) print_char_cursor#117 = (byte*) print_char_cursor#53 -Alias (byte*) print_char_cursor#118 = (byte*) print_char_cursor#54 -Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#55 -Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#56 -Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#57 -Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#58 -Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#59 -Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#60 -Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#61 -Alias (byte*) print_char_cursor#126 = (byte*) print_char_cursor#62 +Alias (byte*) print_char_cursor#119 = (byte*) print_char_cursor#54 +Alias (byte*) print_char_cursor#120 = (byte*) print_char_cursor#55 +Alias (byte*) print_char_cursor#121 = (byte*) print_char_cursor#56 +Alias (byte*) print_char_cursor#122 = (byte*) print_char_cursor#57 +Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#58 +Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#59 +Alias (byte*) print_char_cursor#125 = (byte*) print_char_cursor#60 +Alias (byte*) print_char_cursor#126 = (byte*) print_char_cursor#61 +Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#62 +Alias (byte*) print_char_cursor#128 = (byte*) print_char_cursor#63 Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#40 (byte*) print_line_cursor#41 (byte*) print_line_cursor#20 -Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#63 (byte*) print_char_cursor#128 (byte*) print_char_cursor#64 +Alias (byte*) print_char_cursor#129 = (byte*) print_char_cursor#64 (byte*) print_char_cursor#130 (byte*) print_char_cursor#65 Alias (byte*) print_line_cursor#21 = (byte*) print_line_cursor#42 -Alias (byte*) print_char_cursor#129 = (byte*) print_char_cursor#65 +Alias (byte*) print_char_cursor#131 = (byte*) print_char_cursor#66 Successful SSA optimization Pass2AliasElimination Alias (word) mul16u::a#3 = (word) mul16u::a#5 Alias (dword) mul16u::mb#2 = (dword) mul16u::mb#3 @@ -3071,7 +3089,7 @@ Alias (word) mul16u_compare::a#1 = (word) mul16u_compare::a#10 (word) mul16u_com Alias (word) mul16u_compare::b#1 = (word) mul16u_compare::b#10 (word) mul16u_compare::b#12 Alias (dword) mul16u_compare::mf#0 = (dword) mul16u_compare::mf#3 (dword) mul16u_compare::mf#1 Alias (byte) mul16u_compare::i#10 = (byte) mul16u_compare::i#5 (byte) mul16u_compare::i#2 -Alias (byte*) print_char_cursor#143 = (byte*) print_char_cursor#162 (byte*) print_char_cursor#169 +Alias (byte*) print_char_cursor#146 = (byte*) print_char_cursor#165 (byte*) print_char_cursor#172 Alias (byte*) print_line_cursor#46 = (byte*) print_line_cursor#63 (byte*) print_line_cursor#72 Alias (signed dword) mul16s_compare::ms#0 = (signed dword) mul16s_compare::ms#2 (signed dword) mul16s_compare::ms#3 Alias (signed dword) mul16s_compare::mn#0 = (signed dword) mul16s_compare::mn#1 (signed dword) mul16s_compare::mn#2 @@ -3080,10 +3098,10 @@ Alias (signed word) mul16s_compare::a#1 = (signed word) mul16s_compare::a#10 (si Alias (signed word) mul16s_compare::b#1 = (signed word) mul16s_compare::b#10 (signed word) mul16s_compare::b#12 Alias (signed dword) mul16s_compare::mf#0 = (signed dword) mul16s_compare::mf#3 (signed dword) mul16s_compare::mf#1 Alias (byte) mul16s_compare::i#10 = (byte) mul16s_compare::i#5 (byte) mul16s_compare::i#2 -Alias (byte*) print_char_cursor#147 = (byte*) print_char_cursor#165 (byte*) print_char_cursor#171 +Alias (byte*) print_char_cursor#150 = (byte*) print_char_cursor#168 (byte*) print_char_cursor#174 Alias (byte*) print_line_cursor#50 = (byte*) print_line_cursor#67 (byte*) print_line_cursor#75 Successful SSA optimization Pass2AliasElimination -Self Phi Eliminated (byte*) print_char_cursor#68 +Self Phi Eliminated (byte*) print_char_cursor#69 Self Phi Eliminated (byte*) print_line_cursor#25 Self Phi Eliminated (word) muls16u::b#1 Self Phi Eliminated (word) muls16u::a#2 @@ -3092,24 +3110,25 @@ Self Phi Eliminated (signed word) muls16s::a#3 Self Phi Eliminated (signed word) muls16s::b#2 Self Phi Eliminated (signed word) muls16s::a#4 Self Phi Eliminated (byte) mul16u_compare::i#10 -Self Phi Eliminated (byte*) print_char_cursor#143 +Self Phi Eliminated (byte*) print_char_cursor#146 Self Phi Eliminated (byte*) print_line_cursor#46 Self Phi Eliminated (byte) mul16s_compare::i#10 -Self Phi Eliminated (byte*) print_char_cursor#147 +Self Phi Eliminated (byte*) print_char_cursor#150 Self Phi Eliminated (byte*) print_line_cursor#50 Successful SSA optimization Pass2SelfPhiElimination -Identical Phi Values (byte*) print_char_cursor#68 (byte*) print_char_cursor#131 -Identical Phi Values (byte*) print_char_cursor#5 (byte*) print_char_cursor#21 -Identical Phi Values (byte*) print_char_cursor#6 (byte*) print_char_cursor#21 +Identical Phi Values (byte*) print_char_cursor#69 (byte*) print_char_cursor#133 +Identical Phi Values (byte*) print_char_cursor#5 (byte*) print_char_cursor#22 +Identical Phi Values (byte*) print_char_cursor#6 (byte*) print_char_cursor#22 Identical Phi Values (byte*) print_char_cursor#7 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#74 (byte*) print_char_cursor#19 -Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#19 +Identical Phi Values (byte*) print_char_cursor#75 (byte*) print_char_cursor#20 +Identical Phi Values (byte*) print_char_cursor#10 (byte*) print_char_cursor#20 Identical Phi Values (byte*) print_char_cursor#12 (byte*) print_char_cursor#10 Identical Phi Values (byte*) print_char_cursor#13 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#15 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_char_cursor#21 -Identical Phi Values (byte*) print_char_cursor#18 (byte*) print_char_cursor#21 -Identical Phi Values (byte*) print_char_cursor#19 (byte*) print_char_cursor#21 +Identical Phi Values (byte*) print_char_cursor#15 (byte*) print_char_cursor#22 +Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_char_cursor#22 +Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#19 (byte*) print_char_cursor#22 +Identical Phi Values (byte*) print_char_cursor#20 (byte*) print_char_cursor#22 Identical Phi Values (byte*) print_screen#1 (byte*) print_screen#4 Identical Phi Values (byte*) print_line_cursor#25 (byte*) print_screen#1 Identical Phi Values (signed word) mul16s::a#1 (signed word) mul16s::a#0 @@ -3118,12 +3137,12 @@ Identical Phi Values (signed word) mulf16s::a#1 (signed word) mulf16s::a#0 Identical Phi Values (signed word) mulf16s::b#1 (signed word) mulf16s::b#0 Identical Phi Values (byte*) print_screen#4 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#44 (byte*) print_line_cursor#0 -Identical Phi Values (byte*) print_char_cursor#140 (byte*) print_line_cursor#0 +Identical Phi Values (byte*) print_char_cursor#143 (byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#26 (byte*) print_line_cursor#25 -Identical Phi Values (byte*) print_char_cursor#141 (byte*) print_line_cursor#25 -Identical Phi Values (byte*) print_char_cursor#26 (byte*) print_char_cursor#31 +Identical Phi Values (byte*) print_char_cursor#144 (byte*) print_line_cursor#25 +Identical Phi Values (byte*) print_char_cursor#27 (byte*) print_char_cursor#32 Identical Phi Values (byte*) print_line_cursor#27 (byte*) print_line_cursor#10 -Identical Phi Values (byte*) print_char_cursor#27 (byte*) print_char_cursor#113 +Identical Phi Values (byte*) print_char_cursor#28 (byte*) print_char_cursor#115 Identical Phi Values (byte*) print_line_cursor#28 (byte*) print_line_cursor#16 Identical Phi Values (word) muls16u::a#1 (word) muls16u::a#0 Identical Phi Values (word) muls16u::b#2 (word) muls16u::b#0 @@ -3135,122 +3154,124 @@ Identical Phi Values (signed word) muls16s::b#1 (signed word) muls16s::b#3 Identical Phi Values (signed word) muls16s::a#3 (signed word) muls16s::a#1 Identical Phi Values (signed word) muls16s::b#2 (signed word) muls16s::b#3 Identical Phi Values (signed word) muls16s::a#4 (signed word) muls16s::a#1 -Identical Phi Values (byte*) print_char_cursor#154 (byte*) print_char_cursor#141 +Identical Phi Values (byte*) print_char_cursor#157 (byte*) print_char_cursor#144 Identical Phi Values (byte*) print_line_cursor#98 (byte*) print_line_cursor#26 -Identical Phi Values (byte*) print_char_cursor#29 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#132 Identical Phi Values (byte) mul16u_compare::i#10 (byte) mul16u_compare::i#12 -Identical Phi Values (byte*) print_char_cursor#143 (byte*) print_char_cursor#29 +Identical Phi Values (byte*) print_char_cursor#146 (byte*) print_char_cursor#30 Identical Phi Values (byte*) print_line_cursor#46 (byte*) print_line_cursor#90 -Identical Phi Values (byte*) print_char_cursor#30 (byte*) print_char_cursor#109 +Identical Phi Values (byte*) print_char_cursor#31 (byte*) print_char_cursor#111 Identical Phi Values (byte*) print_line_cursor#30 (byte*) print_line_cursor#13 Identical Phi Values (byte*) print_line_cursor#11 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#32 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#33 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#33 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#34 (byte*) print_char_cursor#132 Identical Phi Values (byte*) print_line_cursor#12 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#34 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#145 (byte*) print_char_cursor#143 +Identical Phi Values (byte*) print_char_cursor#100 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#148 (byte*) print_char_cursor#146 Identical Phi Values (word) mul16u_error::a#1 (word) mul16u_error::a#0 Identical Phi Values (word) mul16u_error::b#1 (word) mul16u_error::b#0 Identical Phi Values (dword) mul16u_error::ms#1 (dword) mul16u_error::ms#0 Identical Phi Values (dword) mul16u_error::mn#1 (dword) mul16u_error::mn#0 Identical Phi Values (dword) mul16u_error::mf#1 (dword) mul16u_error::mf#0 Identical Phi Values (byte*) print_line_cursor#102 (byte*) print_line_cursor#46 -Identical Phi Values (byte*) print_char_cursor#35 (byte*) print_char_cursor#130 -Identical Phi Values (byte*) print_char_cursor#100 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#101 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#101 (byte*) print_char_cursor#132 Identical Phi Values (byte*) print_char_cursor#102 (byte*) print_char_cursor#10 -Identical Phi Values (byte*) print_char_cursor#103 (byte*) print_char_cursor#130 -Identical Phi Values (byte*) print_char_cursor#104 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#105 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#103 (byte*) print_char_cursor#132 +Identical Phi Values (byte*) print_char_cursor#104 (byte*) print_char_cursor#10 +Identical Phi Values (byte*) print_char_cursor#105 (byte*) print_char_cursor#132 Identical Phi Values (byte*) print_char_cursor#106 (byte*) print_char_cursor#13 -Identical Phi Values (byte*) print_char_cursor#107 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#107 (byte*) print_char_cursor#132 Identical Phi Values (byte*) print_char_cursor#108 (byte*) print_char_cursor#13 +Identical Phi Values (byte*) print_char_cursor#109 (byte*) print_char_cursor#132 +Identical Phi Values (byte*) print_char_cursor#110 (byte*) print_char_cursor#13 Identical Phi Values (byte*) print_line_cursor#13 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#109 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#157 (byte*) print_char_cursor#26 +Identical Phi Values (byte*) print_char_cursor#111 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#160 (byte*) print_char_cursor#27 Identical Phi Values (byte*) print_line_cursor#100 (byte*) print_line_cursor#27 -Identical Phi Values (byte*) print_char_cursor#111 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#113 (byte*) print_char_cursor#132 Identical Phi Values (byte) mul16s_compare::i#10 (byte) mul16s_compare::i#12 -Identical Phi Values (byte*) print_char_cursor#147 (byte*) print_char_cursor#111 +Identical Phi Values (byte*) print_char_cursor#150 (byte*) print_char_cursor#113 Identical Phi Values (byte*) print_line_cursor#50 (byte*) print_line_cursor#92 -Identical Phi Values (byte*) print_char_cursor#112 (byte*) print_char_cursor#127 +Identical Phi Values (byte*) print_char_cursor#114 (byte*) print_char_cursor#129 Identical Phi Values (byte*) print_line_cursor#15 (byte*) print_line_cursor#19 Identical Phi Values (byte*) print_line_cursor#17 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#114 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#115 (byte*) print_char_cursor#130 -Identical Phi Values (byte*) print_line_cursor#18 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_char_cursor#116 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#149 (byte*) print_char_cursor#147 +Identical Phi Values (byte*) print_char_cursor#117 (byte*) print_char_cursor#132 +Identical Phi Values (byte*) print_line_cursor#18 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#118 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#152 (byte*) print_char_cursor#150 Identical Phi Values (signed word) mul16s_error::a#1 (signed word) mul16s_error::a#0 Identical Phi Values (signed word) mul16s_error::b#1 (signed word) mul16s_error::b#0 Identical Phi Values (signed dword) mul16s_error::ms#1 (signed dword) mul16s_error::ms#0 Identical Phi Values (signed dword) mul16s_error::mn#1 (signed dword) mul16s_error::mn#0 Identical Phi Values (signed dword) mul16s_error::mf#1 (signed dword) mul16s_error::mf#0 Identical Phi Values (byte*) print_line_cursor#101 (byte*) print_line_cursor#50 -Identical Phi Values (byte*) print_char_cursor#117 (byte*) print_char_cursor#130 -Identical Phi Values (byte*) print_char_cursor#118 (byte*) print_char_cursor#7 -Identical Phi Values (byte*) print_char_cursor#119 (byte*) print_char_cursor#130 +Identical Phi Values (byte*) print_char_cursor#119 (byte*) print_char_cursor#132 Identical Phi Values (byte*) print_char_cursor#120 (byte*) print_char_cursor#7 -Identical Phi Values (byte*) print_char_cursor#121 (byte*) print_char_cursor#130 -Identical Phi Values (byte*) print_char_cursor#122 (byte*) print_char_cursor#15 -Identical Phi Values (byte*) print_char_cursor#123 (byte*) print_char_cursor#130 -Identical Phi Values (byte*) print_char_cursor#124 (byte*) print_char_cursor#15 -Identical Phi Values (byte*) print_char_cursor#125 (byte*) print_char_cursor#130 -Identical Phi Values (byte*) print_char_cursor#126 (byte*) print_char_cursor#15 +Identical Phi Values (byte*) print_char_cursor#121 (byte*) print_char_cursor#132 +Identical Phi Values (byte*) print_char_cursor#122 (byte*) print_char_cursor#7 +Identical Phi Values (byte*) print_char_cursor#123 (byte*) print_char_cursor#132 +Identical Phi Values (byte*) print_char_cursor#124 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#125 (byte*) print_char_cursor#132 +Identical Phi Values (byte*) print_char_cursor#126 (byte*) print_char_cursor#17 +Identical Phi Values (byte*) print_char_cursor#127 (byte*) print_char_cursor#132 +Identical Phi Values (byte*) print_char_cursor#128 (byte*) print_char_cursor#17 Identical Phi Values (byte*) print_line_cursor#19 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#127 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#129 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#21 (byte*) print_line_cursor#28 -Identical Phi Values (byte*) print_char_cursor#129 (byte*) print_char_cursor#27 +Identical Phi Values (byte*) print_char_cursor#131 (byte*) print_char_cursor#28 Successful SSA optimization Pass2IdenticalPhiElimination -Identical Phi Values (byte*) print_char_cursor#132 (byte*) print_char_cursor#130 -Identical Phi Values (byte*) print_char_cursor#134 (byte*) print_char_cursor#21 -Identical Phi Values (byte*) print_char_cursor#138 (byte*) print_char_cursor#130 -Identical Phi Values (byte*) print_char_cursor#31 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#134 (byte*) print_char_cursor#132 +Identical Phi Values (byte*) print_char_cursor#136 (byte*) print_char_cursor#22 +Identical Phi Values (byte*) print_char_cursor#139 (byte*) print_char_cursor#132 +Identical Phi Values (byte*) print_char_cursor#141 (byte*) print_char_cursor#22 +Identical Phi Values (byte*) print_char_cursor#32 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#10 (byte*) print_line_cursor#1 -Identical Phi Values (byte*) print_char_cursor#113 (byte*) print_line_cursor#1 +Identical Phi Values (byte*) print_char_cursor#115 (byte*) print_line_cursor#1 Identical Phi Values (byte*) print_line_cursor#16 (byte*) print_line_cursor#1 Successful SSA optimization Pass2IdenticalPhiElimination Simple Condition (bool~) print_str::$0 [6] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 -Simple Condition (bool~) print_ln::$1 [19] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#131) goto print_ln::@1 +Simple Condition (bool~) print_ln::$1 [19] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 Simple Condition (bool~) print_sword::$0 [28] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -Simple Condition (bool~) print_sdword::$1 [81] if((signed dword) print_sdword::dw#4>=(signed byte) 0) goto print_sdword::@1 -Simple Condition (bool~) print_cls::$1 [127] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -Simple Condition (bool~) mul16u::$0 [140] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -Simple Condition (bool~) mul16u::$3 [145] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@4 -Simple Condition (bool~) mul16s::$4 [171] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -Simple Condition (bool~) mul16s::$6 [175] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 -Simple Condition (bool~) mulf_init::$9 [211] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -Simple Condition (bool~) mulf_init::$14 [223] if((byte*) mulf_init::sqr1_lo#1!=(byte*~) mulf_init::$13) goto mulf_init::@1 -Simple Condition (bool~) mulf_init::$17 [240] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@6 -Simple Condition (bool~) mulf_init::$19 [245] if((byte*) mulf_init::sqr2_lo#1!=(byte*~) mulf_init::$18) goto mulf_init::@5 -Simple Condition (bool~) mulf16s::$4 [278] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 -Simple Condition (bool~) mulf16s::$6 [282] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 -Simple Condition (bool~) muls16u::$1 [327] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 -Simple Condition (bool~) muls16u::$3 [337] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@4 -Simple Condition (bool~) muls16s::$0 [344] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@1 -Simple Condition (bool~) muls16s::$2 [350] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@3 -Simple Condition (bool~) muls16s::$4 [358] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@8 -Simple Condition (bool~) muls16s::$6 [366] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@10 -Simple Condition (bool~) mul16u_compare::$10 [409] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -Simple Condition (bool~) mul16u_compare::$12 [413] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@4 -Simple Condition (bool~) mul16u_compare::$14 [419] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 -Simple Condition (bool~) mul16u_compare::$16 [425] if((byte) mul16u_compare::j#1!=rangelast(0,$f)) goto mul16u_compare::@2 -Simple Condition (bool~) mul16u_compare::$17 [444] if((byte) mul16u_compare::i#1!=rangelast(0,$f)) goto mul16u_compare::@1 -Simple Condition (bool~) mul16s_compare::$10 [546] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 -Simple Condition (bool~) mul16s_compare::$12 [550] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@4 -Simple Condition (bool~) mul16s_compare::$14 [556] if((byte) mul16s_compare::ok#3!=(byte) 0) goto mul16s_compare::@5 -Simple Condition (bool~) mul16s_compare::$16 [562] if((byte) mul16s_compare::j#1!=rangelast(0,$f)) goto mul16s_compare::@2 -Simple Condition (bool~) mul16s_compare::$17 [581] if((byte) mul16s_compare::i#1!=rangelast(0,$f)) goto mul16s_compare::@1 +Simple Condition (bool~) print_sdword::$0 [80] if((signed dword) print_sdword::dw#4<(signed byte) 0) goto print_sdword::@1 +Simple Condition (bool~) print_cls::$1 [131] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 +Simple Condition (bool~) mul16u::$0 [144] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 +Simple Condition (bool~) mul16u::$3 [149] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@4 +Simple Condition (bool~) mul16s::$4 [175] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 +Simple Condition (bool~) mul16s::$6 [179] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 +Simple Condition (bool~) mulf_init::$9 [215] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 +Simple Condition (bool~) mulf_init::$14 [227] if((byte*) mulf_init::sqr1_lo#1!=(byte*~) mulf_init::$13) goto mulf_init::@1 +Simple Condition (bool~) mulf_init::$17 [244] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@6 +Simple Condition (bool~) mulf_init::$19 [249] if((byte*) mulf_init::sqr2_lo#1!=(byte*~) mulf_init::$18) goto mulf_init::@5 +Simple Condition (bool~) mulf16s::$4 [282] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 +Simple Condition (bool~) mulf16s::$6 [286] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 +Simple Condition (bool~) muls16u::$1 [331] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 +Simple Condition (bool~) muls16u::$3 [341] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@4 +Simple Condition (bool~) muls16s::$0 [348] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@1 +Simple Condition (bool~) muls16s::$2 [354] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@3 +Simple Condition (bool~) muls16s::$4 [362] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@8 +Simple Condition (bool~) muls16s::$6 [370] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@10 +Simple Condition (bool~) mul16u_compare::$10 [413] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 +Simple Condition (bool~) mul16u_compare::$12 [417] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@4 +Simple Condition (bool~) mul16u_compare::$14 [423] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 +Simple Condition (bool~) mul16u_compare::$16 [429] if((byte) mul16u_compare::j#1!=rangelast(0,$f)) goto mul16u_compare::@2 +Simple Condition (bool~) mul16u_compare::$17 [448] if((byte) mul16u_compare::i#1!=rangelast(0,$f)) goto mul16u_compare::@1 +Simple Condition (bool~) mul16s_compare::$10 [550] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 +Simple Condition (bool~) mul16s_compare::$12 [554] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@4 +Simple Condition (bool~) mul16s_compare::$14 [560] if((byte) mul16s_compare::ok#3!=(byte) 0) goto mul16s_compare::@5 +Simple Condition (bool~) mul16s_compare::$16 [566] if((byte) mul16s_compare::j#1!=rangelast(0,$f)) goto mul16s_compare::@2 +Simple Condition (bool~) mul16s_compare::$17 [585] if((byte) mul16s_compare::i#1!=rangelast(0,$f)) goto mul16s_compare::@1 Successful SSA optimization Pass2ConditionalJumpSimplification -Constant right-side identified [195] (byte[$200]) mulf_sqr1_lo#0 ← { fill( $200, 0) } -Constant right-side identified [196] (byte[$200]) mulf_sqr1_hi#0 ← { fill( $200, 0) } -Constant right-side identified [197] (byte[$200]) mulf_sqr2_lo#0 ← { fill( $200, 0) } -Constant right-side identified [198] (byte[$200]) mulf_sqr2_hi#0 ← { fill( $200, 0) } +Constant right-side identified [199] (byte[$200]) mulf_sqr1_lo#0 ← { fill( $200, 0) } +Constant right-side identified [200] (byte[$200]) mulf_sqr1_hi#0 ← { fill( $200, 0) } +Constant right-side identified [201] (byte[$200]) mulf_sqr2_lo#0 ← { fill( $200, 0) } +Constant right-side identified [202] (byte[$200]) mulf_sqr2_hi#0 ← { fill( $200, 0) } Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) print_line_cursor#0 = (byte*) 1024 Constant (const byte) print_char::ch#0 = '-' Constant (const byte) print_char::ch#1 = ' ' Constant (const byte) print_char::ch#2 = '-' +Constant (const byte) print_char::ch#3 = ' ' Constant (const byte[]) print_hextab#0 = $0 Constant (const dword) mul16u::res#0 = 0 Constant (const byte[$200]) mulf_sqr1_lo#0 = { fill( $200, 0) } @@ -3306,14 +3327,14 @@ Constant (const byte*) mulf_init::sqr2_hi#0 = mulf_sqr2_hi#0 Constant (const byte*) mulf_init::sqr2_lo#0 = mulf_sqr2_lo#0 Successful SSA optimization Pass2ConstantIdentification Successful SSA optimization Pass2ConstantStringConsolidation -Resolved ranged next value [423] mul16u_compare::j#1 ← ++ mul16u_compare::j#10 to ++ -Resolved ranged comparison value [425] if(mul16u_compare::j#1!=rangelast(0,$f)) goto mul16u_compare::@2 to (number) $10 -Resolved ranged next value [442] mul16u_compare::i#1 ← ++ mul16u_compare::i#12 to ++ -Resolved ranged comparison value [444] if(mul16u_compare::i#1!=rangelast(0,$f)) goto mul16u_compare::@1 to (number) $10 -Resolved ranged next value [560] mul16s_compare::j#1 ← ++ mul16s_compare::j#10 to ++ -Resolved ranged comparison value [562] if(mul16s_compare::j#1!=rangelast(0,$f)) goto mul16s_compare::@2 to (number) $10 -Resolved ranged next value [579] mul16s_compare::i#1 ← ++ mul16s_compare::i#12 to ++ -Resolved ranged comparison value [581] if(mul16s_compare::i#1!=rangelast(0,$f)) goto mul16s_compare::@1 to (number) $10 +Resolved ranged next value [427] mul16u_compare::j#1 ← ++ mul16u_compare::j#10 to ++ +Resolved ranged comparison value [429] if(mul16u_compare::j#1!=rangelast(0,$f)) goto mul16u_compare::@2 to (number) $10 +Resolved ranged next value [446] mul16u_compare::i#1 ← ++ mul16u_compare::i#12 to ++ +Resolved ranged comparison value [448] if(mul16u_compare::i#1!=rangelast(0,$f)) goto mul16u_compare::@1 to (number) $10 +Resolved ranged next value [564] mul16s_compare::j#1 ← ++ mul16s_compare::j#10 to ++ +Resolved ranged comparison value [566] if(mul16s_compare::j#1!=rangelast(0,$f)) goto mul16s_compare::@2 to (number) $10 +Resolved ranged next value [583] mul16s_compare::i#1 ← ++ mul16s_compare::i#12 to ++ +Resolved ranged comparison value [585] if(mul16s_compare::i#1!=rangelast(0,$f)) goto mul16s_compare::@1 to (number) $10 Adding number conversion cast (unumber) $10 in if((byte) mul16u_compare::j#1!=(number) $10) goto mul16u_compare::@2 Adding number conversion cast (unumber) $10 in if((byte) mul16u_compare::i#1!=(number) $10) goto mul16u_compare::@1 Adding number conversion cast (unumber) $10 in if((byte) mul16s_compare::j#1!=(number) $10) goto mul16s_compare::@2 @@ -3335,15 +3356,15 @@ Successful SSA optimization Pass2SelfPhiElimination Identical Phi Values (byte*) print_line_cursor#90 (const byte*) print_line_cursor#0 Identical Phi Values (byte*) print_line_cursor#92 (byte*) print_line_cursor#1 Successful SSA optimization Pass2IdenticalPhiElimination -Constant right-side identified [56] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 -Constant right-side identified [88] (byte*) mulf_init::sqr1_hi#0 ← (const byte[$200]) mulf_sqr1_hi#0 + (byte) 1 -Constant right-side identified [89] (byte*) mulf_init::sqr1_lo#0 ← (const byte[$200]) mulf_sqr1_lo#0 + (byte) 1 -Constant right-side identified [102] (byte*~) mulf_init::$13 ← (const byte[$200]) mulf_sqr1_lo#0 + (word) $200 -Constant right-side identified [114] (byte*~) mulf_init::$18 ← (const byte[$200]) mulf_sqr2_lo#0 + (word) $1ff -Constant right-side identified [116] (byte*~) mulf_init::$2 ← (const byte[$200]) mulf_sqr2_lo#0 + (word) $1ff -Constant right-side identified [117] (byte*~) mulf_init::$3 ← (const byte[$200]) mulf_sqr1_lo#0 + (word) $100 -Constant right-side identified [119] (byte*~) mulf_init::$4 ← (const byte[$200]) mulf_sqr2_hi#0 + (word) $1ff -Constant right-side identified [120] (byte*~) mulf_init::$5 ← (const byte[$200]) mulf_sqr1_hi#0 + (word) $100 +Constant right-side identified [57] (byte*~) print_cls::$0 ← (const byte*) print_line_cursor#0 + (word) $3e8 +Constant right-side identified [89] (byte*) mulf_init::sqr1_hi#0 ← (const byte[$200]) mulf_sqr1_hi#0 + (byte) 1 +Constant right-side identified [90] (byte*) mulf_init::sqr1_lo#0 ← (const byte[$200]) mulf_sqr1_lo#0 + (byte) 1 +Constant right-side identified [103] (byte*~) mulf_init::$13 ← (const byte[$200]) mulf_sqr1_lo#0 + (word) $200 +Constant right-side identified [115] (byte*~) mulf_init::$18 ← (const byte[$200]) mulf_sqr2_lo#0 + (word) $1ff +Constant right-side identified [117] (byte*~) mulf_init::$2 ← (const byte[$200]) mulf_sqr2_lo#0 + (word) $1ff +Constant right-side identified [118] (byte*~) mulf_init::$3 ← (const byte[$200]) mulf_sqr1_lo#0 + (word) $100 +Constant right-side identified [120] (byte*~) mulf_init::$4 ← (const byte[$200]) mulf_sqr2_hi#0 + (word) $1ff +Constant right-side identified [121] (byte*~) mulf_init::$5 ← (const byte[$200]) mulf_sqr1_hi#0 + (word) $100 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte*) print_cls::$0 = print_line_cursor#0+$3e8 Constant (const byte*) mulf_init::sqr1_hi#0 = mulf_sqr1_hi#0+1 @@ -3355,10 +3376,10 @@ Constant (const byte*) mulf_init::$3 = mulf_sqr1_lo#0+$100 Constant (const byte*) mulf_init::$4 = mulf_sqr2_hi#0+$1ff Constant (const byte*) mulf_init::$5 = mulf_sqr1_hi#0+$100 Successful SSA optimization Pass2ConstantIdentification -Inlining Noop Cast [77] (word~) mul16s::$10 ← (word)(signed word) mul16s::b#0 keeping mul16s::b#0 -Inlining Noop Cast [83] (word~) mul16s::$14 ← (word)(signed word) mul16s::a#0 keeping mul16s::a#0 -Inlining Noop Cast [129] (word~) mulf16s::$10 ← (word)(signed word) mulf16s::b#0 keeping mulf16s::b#0 -Inlining Noop Cast [135] (word~) mulf16s::$14 ← (word)(signed word) mulf16s::a#0 keeping mulf16s::a#0 +Inlining Noop Cast [78] (word~) mul16s::$10 ← (word)(signed word) mul16s::b#0 keeping mul16s::b#0 +Inlining Noop Cast [84] (word~) mul16s::$14 ← (word)(signed word) mul16s::a#0 keeping mul16s::a#0 +Inlining Noop Cast [130] (word~) mulf16s::$10 ← (word)(signed word) mulf16s::b#0 keeping mulf16s::b#0 +Inlining Noop Cast [136] (word~) mulf16s::$14 ← (word)(signed word) mulf16s::a#0 keeping mulf16s::a#0 Successful SSA optimization Pass2NopCastInlining Inlining constant with var siblings (const byte*) print_str::str#1 Inlining constant with var siblings (const byte*) print_str::str#2 @@ -3377,6 +3398,7 @@ Inlining constant with var siblings (const byte*) print_str::str#14 Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#1 Inlining constant with var siblings (const byte) print_char::ch#2 +Inlining constant with var siblings (const byte) print_char::ch#3 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const dword) mul16u::res#0 Inlining constant with var siblings (const word) mulf_init::sqr#0 @@ -3472,13 +3494,13 @@ Constant inlined mul16s_compare::i#0 = (byte) 0 Constant inlined mulf_init::sqr#0 = (byte) 0 Constant inlined mul16u_compare::i#0 = (byte) 0 Constant inlined print_cls::sc#0 = (byte*) 1024 +Constant inlined print_char::ch#3 = (byte) ' ' Constant inlined print_char::ch#2 = (byte) '-' Constant inlined print_char::ch#1 = (byte) ' ' Constant inlined print_char::ch#0 = (byte) '-' Constant inlined mul16u_compare::str = (const string) str Successful SSA optimization Pass2ConstantInlining Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) -Added new block during phi lifting print_sdword::@5(between print_sdword and print_sdword::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) Added new block during phi lifting mul16u::@10(between mul16u::@2 and mul16u::@4) Added new block during phi lifting mul16s::@7(between mul16s::@6 and mul16s::@1) @@ -3518,7 +3540,7 @@ Adding NOP phi() at start of mul16s_compare::@16 Adding NOP phi() at start of mul16s_compare::@19 Adding NOP phi() at start of print_ln::@2 Adding NOP phi() at start of mul16s_error::@11 -Adding NOP phi() at start of print_sdword::@3 +Adding NOP phi() at start of print_sdword::@7 Adding NOP phi() at start of print_dword::@2 Adding NOP phi() at start of print_word::@2 Adding NOP phi() at start of print_byte::@2 @@ -3543,27 +3565,27 @@ Calls in [] to main:5 Calls in [main] to print_cls:9 mulf_init:11 mul16u_compare:13 mul16s_compare:15 Calls in [mul16s_compare] to print_str:21 muls16s:29 mul16s:34 mulf16s:39 mul16s_error:55 print_ln:64 print_str:66 print_ln:69 Calls in [mul16s_error] to print_str:99 print_sword:102 print_str:104 print_sword:107 print_str:109 print_sdword:112 print_str:114 print_sdword:117 print_str:119 print_sdword:122 print_ln:125 -Calls in [print_sdword] to print_char:131 print_dword:139 -Calls in [print_dword] to print_word:148 print_word:152 -Calls in [print_word] to print_byte:159 print_byte:163 -Calls in [print_byte] to print_char:171 print_char:176 +Calls in [print_sdword] to print_char:131 print_dword:137 print_char:141 +Calls in [print_dword] to print_word:152 print_word:156 +Calls in [print_word] to print_byte:163 print_byte:167 +Calls in [print_byte] to print_char:175 print_char:180 Calls in [print_sword] to print_char:186 print_word:192 print_char:196 Calls in [mulf16s] to mulf16u:203 Calls in [mul16s] to mul16u:232 Calls in [mul16u_compare] to print_str:292 muls16u:300 mul16u:307 mulf16u:314 mul16u_error:330 print_ln:338 print_str:340 print_ln:343 Calls in [mul16u_error] to print_str:354 print_word:358 print_str:360 print_word:364 print_str:366 print_dword:370 print_str:372 print_dword:376 print_str:378 print_dword:382 print_ln:384 -Created 71 initial phi equivalence classes -Not coalescing [18] print_char_cursor#220 ← print_line_cursor#1 -Coalesced [20] print_char_cursor#179 ← print_char_cursor#146 +Created 70 initial phi equivalence classes +Not coalescing [18] print_char_cursor#222 ← print_line_cursor#1 +Coalesced [20] print_char_cursor#182 ← print_char_cursor#149 Coalesced [22] mul16s_compare::a#16 ← mul16s_compare::a#6 Coalesced [23] mul16s_compare::b#16 ← mul16s_compare::b#6 Coalesced [62] print_line_cursor#104 ← print_line_cursor#1 -Coalesced [63] print_char_cursor#195 ← print_char_cursor#130 -Not coalescing [65] print_char_cursor#180 ← print_line_cursor#1 +Coalesced [63] print_char_cursor#198 ← print_char_cursor#132 +Not coalescing [65] print_char_cursor#183 ← print_line_cursor#1 Coalesced (already) [67] print_line_cursor#105 ← print_line_cursor#1 -Coalesced (already) [68] print_char_cursor#196 ← print_char_cursor#130 -Coalesced [71] print_char_cursor#221 ← print_char_cursor#130 +Coalesced (already) [68] print_char_cursor#199 ← print_char_cursor#132 +Coalesced [71] print_char_cursor#223 ← print_char_cursor#132 Coalesced [72] mul16s_compare::a#15 ← mul16s_compare::a#1 Coalesced [73] mul16s_compare::b#15 ← mul16s_compare::b#1 Coalesced [74] mul16s_compare::i#14 ← mul16s_compare::i#1 @@ -3574,45 +3596,44 @@ Coalesced [78] mul16s_compare::ok#5 ← mul16s_compare::ok#4 Coalesced [80] print_line_cursor#108 ← print_line_cursor#43 Coalesced (already) [86] print_line_cursor#109 ← print_line_cursor#1 Coalesced [88] print_str::str#18 ← print_str::str#17 -Coalesced (already) [89] print_char_cursor#193 ← print_char_cursor#151 +Coalesced (already) [89] print_char_cursor#196 ← print_char_cursor#154 Coalesced [96] print_str::str#19 ← print_str::str#0 -Coalesced [97] print_char_cursor#194 ← print_char_cursor#1 -Coalesced (already) [98] print_char_cursor#181 ← print_char_cursor#130 +Coalesced [97] print_char_cursor#197 ← print_char_cursor#1 +Coalesced (already) [98] print_char_cursor#184 ← print_char_cursor#132 Coalesced [101] print_sword::w#9 ← print_sword::w#1 -Coalesced [103] print_char_cursor#182 ← print_char_cursor#21 +Coalesced [103] print_char_cursor#185 ← print_char_cursor#22 Coalesced [106] print_sword::w#10 ← print_sword::w#2 -Coalesced (already) [108] print_char_cursor#183 ← print_char_cursor#21 -Coalesced [111] print_sdword::dw#8 ← print_sdword::dw#1 -Coalesced (already) [113] print_char_cursor#184 ← print_char_cursor#21 -Coalesced [116] print_sdword::dw#9 ← print_sdword::dw#2 -Coalesced (already) [118] print_char_cursor#185 ← print_char_cursor#21 -Coalesced [121] print_sdword::dw#10 ← print_sdword::dw#3 +Coalesced (already) [108] print_char_cursor#186 ← print_char_cursor#22 +Coalesced [111] print_sdword::dw#10 ← print_sdword::dw#1 +Coalesced (already) [113] print_char_cursor#187 ← print_char_cursor#22 +Coalesced [116] print_sdword::dw#11 ← print_sdword::dw#2 +Coalesced (already) [118] print_char_cursor#188 ← print_char_cursor#22 +Coalesced [121] print_sdword::dw#12 ← print_sdword::dw#3 Coalesced (already) [123] print_line_cursor#106 ← print_line_cursor#1 -Coalesced (already) [124] print_char_cursor#197 ← print_char_cursor#21 -Coalesced [130] print_char_cursor#216 ← print_char_cursor#130 -Coalesced [133] print_sdword::dw#12 ← print_sdword::dw#0 -Coalesced [134] print_char_cursor#211 ← print_char_cursor#21 -Coalesced [137] print_dword::dw#9 ← print_dword::dw#0 -Coalesced [138] print_char_cursor#209 ← print_char_cursor#137 -Coalesced [142] print_sdword::dw#11 ← print_sdword::dw#4 -Coalesced (already) [143] print_char_cursor#210 ← print_char_cursor#130 -Coalesced [146] print_word::w#9 ← print_word::w#1 -Coalesced [147] print_char_cursor#203 ← print_char_cursor#136 -Coalesced [150] print_word::w#10 ← print_word::w#2 -Coalesced (already) [151] print_char_cursor#204 ← print_char_cursor#21 -Coalesced [157] print_byte::b#4 ← print_byte::b#0 -Coalesced [158] print_char_cursor#212 ← print_char_cursor#135 -Coalesced [161] print_byte::b#5 ← print_byte::b#1 -Coalesced (already) [162] print_char_cursor#213 ← print_char_cursor#21 -Coalesced [169] print_char::ch#6 ← print_char::ch#3 -Coalesced (already) [170] print_char_cursor#214 ← print_char_cursor#139 -Coalesced [174] print_char::ch#7 ← print_char::ch#4 -Coalesced (already) [175] print_char_cursor#215 ← print_char_cursor#21 -Coalesced (already) [185] print_char_cursor#218 ← print_char_cursor#130 +Coalesced (already) [124] print_char_cursor#200 ← print_char_cursor#22 +Coalesced [130] print_char_cursor#218 ← print_char_cursor#132 +Coalesced [132] print_sdword::dw#14 ← print_sdword::dw#4 +Coalesced [135] print_dword::dw#9 ← print_dword::dw#0 +Coalesced [136] print_char_cursor#212 ← print_char_cursor#22 +Coalesced (already) [140] print_char_cursor#217 ← print_char_cursor#132 +Coalesced [143] print_sdword::dw#13 ← print_sdword::dw#0 +Coalesced [150] print_word::w#9 ← print_word::w#1 +Coalesced [151] print_char_cursor#206 ← print_char_cursor#138 +Coalesced [154] print_word::w#10 ← print_word::w#2 +Coalesced (already) [155] print_char_cursor#207 ← print_char_cursor#22 +Coalesced [161] print_byte::b#4 ← print_byte::b#0 +Coalesced [162] print_char_cursor#213 ← print_char_cursor#137 +Coalesced [165] print_byte::b#5 ← print_byte::b#1 +Coalesced (already) [166] print_char_cursor#214 ← print_char_cursor#22 +Coalesced [173] print_char::ch#7 ← print_char::ch#4 +Coalesced (already) [174] print_char_cursor#215 ← print_char_cursor#142 +Coalesced [178] print_char::ch#8 ← print_char::ch#5 +Coalesced (already) [179] print_char_cursor#216 ← print_char_cursor#22 +Coalesced (already) [185] print_char_cursor#220 ← print_char_cursor#132 Coalesced [187] print_sword::w#12 ← print_sword::w#3 Coalesced [190] print_word::w#11 ← print_word::w#0 -Coalesced (already) [191] print_char_cursor#205 ← print_char_cursor#21 -Coalesced (already) [195] print_char_cursor#217 ← print_char_cursor#130 +Coalesced (already) [191] print_char_cursor#208 ← print_char_cursor#22 +Coalesced (already) [195] print_char_cursor#219 ← print_char_cursor#132 Coalesced [198] print_sword::w#11 ← print_sword::w#0 Coalesced [201] mulf16u::a#4 ← mulf16u::a#0 Coalesced [202] mulf16u::b#4 ← mulf16u::b#0 @@ -3639,18 +3660,18 @@ Coalesced [280] muls16s::j#3 ← muls16s::j#1 Coalesced [286] muls16s::return#5 ← muls16s::m#2 Coalesced [287] muls16s::m#10 ← muls16s::m#2 Coalesced [288] muls16s::i#3 ← muls16s::i#1 -Coalesced [291] print_char_cursor#186 ← print_char_cursor#142 +Coalesced [291] print_char_cursor#189 ← print_char_cursor#145 Coalesced [293] mul16u_compare::a#16 ← mul16u_compare::a#6 Coalesced [294] mul16u_compare::b#16 ← mul16u_compare::b#6 Coalesced [305] mul16u::mb#7 ← mul16u::b#1 Coalesced [306] mul16u::a#9 ← mul16u::a#2 Coalesced [312] mulf16u::a#3 ← mulf16u::a#1 Coalesced [313] mulf16u::b#3 ← mulf16u::b#1 -Coalesced (already) [337] print_char_cursor#198 ← print_char_cursor#130 -Not coalescing [339] print_char_cursor#187 ← print_line_cursor#1 +Coalesced (already) [337] print_char_cursor#201 ← print_char_cursor#132 +Not coalescing [339] print_char_cursor#190 ← print_line_cursor#1 Coalesced (already) [341] print_line_cursor#107 ← print_line_cursor#1 -Coalesced (already) [342] print_char_cursor#199 ← print_char_cursor#130 -Coalesced (already) [345] print_char_cursor#219 ← print_char_cursor#130 +Coalesced (already) [342] print_char_cursor#202 ← print_char_cursor#132 +Coalesced (already) [345] print_char_cursor#221 ← print_char_cursor#132 Coalesced [346] mul16u_compare::a#15 ← mul16u_compare::a#1 Coalesced [347] mul16u_compare::b#15 ← mul16u_compare::b#1 Coalesced [348] mul16u_compare::i#14 ← mul16u_compare::i#1 @@ -3658,22 +3679,22 @@ Coalesced (already) [349] mul16u_compare::a#17 ← mul16u_compare::a#1 Coalesced (already) [350] mul16u_compare::b#17 ← mul16u_compare::b#1 Coalesced [351] mul16u_compare::j#11 ← mul16u_compare::j#1 Coalesced [352] mul16u_compare::ok#5 ← mul16u_compare::ok#4 -Coalesced (already) [353] print_char_cursor#188 ← print_char_cursor#130 +Coalesced (already) [353] print_char_cursor#191 ← print_char_cursor#132 Coalesced [356] print_word::w#7 ← print_word::w#3 -Coalesced (already) [357] print_char_cursor#201 ← print_char_cursor#130 -Coalesced (already) [359] print_char_cursor#189 ← print_char_cursor#21 +Coalesced (already) [357] print_char_cursor#204 ← print_char_cursor#132 +Coalesced (already) [359] print_char_cursor#192 ← print_char_cursor#22 Coalesced [362] print_word::w#8 ← print_word::w#4 -Coalesced (already) [363] print_char_cursor#202 ← print_char_cursor#130 -Coalesced (already) [365] print_char_cursor#190 ← print_char_cursor#21 +Coalesced (already) [363] print_char_cursor#205 ← print_char_cursor#132 +Coalesced (already) [365] print_char_cursor#193 ← print_char_cursor#22 Coalesced [368] print_dword::dw#6 ← print_dword::dw#1 -Coalesced (already) [369] print_char_cursor#206 ← print_char_cursor#130 -Coalesced (already) [371] print_char_cursor#191 ← print_char_cursor#21 +Coalesced (already) [369] print_char_cursor#209 ← print_char_cursor#132 +Coalesced (already) [371] print_char_cursor#194 ← print_char_cursor#22 Coalesced [374] print_dword::dw#7 ← print_dword::dw#2 -Coalesced (already) [375] print_char_cursor#207 ← print_char_cursor#130 -Coalesced (already) [377] print_char_cursor#192 ← print_char_cursor#21 +Coalesced (already) [375] print_char_cursor#210 ← print_char_cursor#132 +Coalesced (already) [377] print_char_cursor#195 ← print_char_cursor#22 Coalesced [380] print_dword::dw#8 ← print_dword::dw#3 -Coalesced (already) [381] print_char_cursor#208 ← print_char_cursor#130 -Coalesced (already) [383] print_char_cursor#200 ← print_char_cursor#21 +Coalesced (already) [381] print_char_cursor#211 ← print_char_cursor#132 +Coalesced (already) [383] print_char_cursor#203 ← print_char_cursor#22 Coalesced [393] muls16u::return#5 ← muls16u::m#1 Coalesced [396] muls16u::m#5 ← muls16u::m#1 Coalesced [397] muls16u::i#3 ← muls16u::i#1 @@ -3707,8 +3728,8 @@ Culled Empty Block (label) mul16s_compare::@21 Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) print_ln::@3 Culled Empty Block (label) mul16s_error::@11 -Culled Empty Block (label) print_sdword::@3 -Culled Empty Block (label) print_sdword::@5 +Culled Empty Block (label) print_sdword::@6 +Culled Empty Block (label) print_sdword::@7 Culled Empty Block (label) print_dword::@2 Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_byte::@2 @@ -3745,7 +3766,7 @@ Culled Empty Block (label) print_cls::@2 Culled Empty Block (label) print_cls::@3 Renumbering block @42 to @1 Renumbering block print_sword::@5 to print_sword::@4 -Renumbering block print_sdword::@4 to print_sdword::@3 +Renumbering block print_sdword::@5 to print_sdword::@4 Renumbering block mul16u::@4 to mul16u::@3 Renumbering block mul16u::@7 to mul16u::@4 Renumbering block mul16s::@6 to mul16s::@5 @@ -3793,7 +3814,8 @@ Adding NOP phi() at start of mul16s_error::@4 Adding NOP phi() at start of mul16s_error::@6 Adding NOP phi() at start of mul16s_error::@8 Adding NOP phi() at start of mul16s_error::@10 -Adding NOP phi() at start of print_sdword::@2 +Adding NOP phi() at start of print_sdword::@3 +Adding NOP phi() at start of print_sdword::@1 Adding NOP phi() at start of print_sword::@3 Adding NOP phi() at start of print_sword::@1 Adding NOP phi() at start of mul16u_compare @@ -3841,13 +3863,13 @@ main::@return: scope:[main] from main::@3 [12] return to:@return mul16s_compare: scope:[mul16s_compare] from main::@3 - [13] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 + [13] (byte*~) print_char_cursor#222 ← (byte*) print_line_cursor#1 to:mul16s_compare::@1 mul16s_compare::@1: scope:[mul16s_compare] from mul16s_compare mul16s_compare::@8 [14] (byte) mul16s_compare::i#12 ← phi( mul16s_compare/(byte) 0 mul16s_compare::@8/(byte) mul16s_compare::i#1 ) [14] (signed word) mul16s_compare::b#6 ← phi( mul16s_compare/(signed word) -$7fff mul16s_compare::@8/(signed word) mul16s_compare::b#1 ) [14] (signed word) mul16s_compare::a#6 ← phi( mul16s_compare/(signed word) -$7fff mul16s_compare::@8/(signed word) mul16s_compare::a#1 ) - [14] (byte*) print_char_cursor#146 ← phi( mul16s_compare/(byte*~) print_char_cursor#220 mul16s_compare::@8/(byte*) print_char_cursor#130 ) + [14] (byte*) print_char_cursor#149 ← phi( mul16s_compare/(byte*~) print_char_cursor#222 mul16s_compare::@8/(byte*) print_char_cursor#132 ) [15] call print_str to:mul16s_compare::@2 mul16s_compare::@2: scope:[mul16s_compare] from mul16s_compare::@1 mul16s_compare::@5 @@ -3918,7 +3940,7 @@ mul16s_compare::@9: scope:[mul16s_compare] from mul16s_compare::@8 [54] call print_ln to:mul16s_compare::@13 mul16s_compare::@13: scope:[mul16s_compare] from mul16s_compare::@9 - [55] (byte*~) print_char_cursor#180 ← (byte*) print_line_cursor#1 + [55] (byte*~) print_char_cursor#183 ← (byte*) print_line_cursor#1 [56] call print_str to:mul16s_compare::@14 mul16s_compare::@14: scope:[mul16s_compare] from mul16s_compare::@13 @@ -3926,23 +3948,23 @@ mul16s_compare::@14: scope:[mul16s_compare] from mul16s_compare::@13 [58] call print_ln to:mul16s_compare::@return print_ln: scope:[print_ln] from mul16s_compare::@14 mul16s_compare::@9 mul16s_error::@10 mul16u_compare::@14 mul16u_compare::@9 mul16u_error::@10 - [59] (byte*) print_char_cursor#131 ← phi( mul16s_compare::@9/(byte*) print_char_cursor#130 mul16s_compare::@14/(byte*) print_char_cursor#130 mul16s_error::@10/(byte*) print_char_cursor#21 mul16u_compare::@9/(byte*) print_char_cursor#130 mul16u_compare::@14/(byte*) print_char_cursor#130 mul16u_error::@10/(byte*) print_char_cursor#21 ) + [59] (byte*) print_char_cursor#133 ← phi( mul16s_compare::@9/(byte*) print_char_cursor#132 mul16s_compare::@14/(byte*) print_char_cursor#132 mul16s_error::@10/(byte*) print_char_cursor#22 mul16u_compare::@9/(byte*) print_char_cursor#132 mul16u_compare::@14/(byte*) print_char_cursor#132 mul16u_error::@10/(byte*) print_char_cursor#22 ) [59] (byte*) print_line_cursor#43 ← phi( mul16s_compare::@9/(byte*) print_line_cursor#1 mul16s_compare::@14/(byte*) print_line_cursor#1 mul16s_error::@10/(byte*) print_line_cursor#1 mul16u_compare::@9/(byte*) 1024 mul16u_compare::@14/(byte*) print_line_cursor#1 mul16u_error::@10/(byte*) 1024 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 [60] (byte*) print_line_cursor#22 ← phi( print_ln/(byte*) print_line_cursor#43 print_ln::@1/(byte*) print_line_cursor#1 ) [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte) $28 - [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#131) goto print_ln::@1 + [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 [63] return to:@return print_str: scope:[print_str] from mul16s_compare::@1 mul16s_compare::@13 mul16s_error mul16s_error::@2 mul16s_error::@4 mul16s_error::@6 mul16s_error::@8 mul16u_compare::@1 mul16u_compare::@13 mul16u_error mul16u_error::@2 mul16u_error::@4 mul16u_error::@6 mul16u_error::@8 - [64] (byte*) print_char_cursor#151 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#146 mul16s_compare::@13/(byte*~) print_char_cursor#180 mul16s_error/(byte*) print_char_cursor#130 mul16s_error::@2/(byte*) print_char_cursor#21 mul16s_error::@4/(byte*) print_char_cursor#21 mul16s_error::@6/(byte*) print_char_cursor#21 mul16s_error::@8/(byte*) print_char_cursor#21 mul16u_compare::@1/(byte*) print_char_cursor#142 mul16u_compare::@13/(byte*~) print_char_cursor#187 mul16u_error/(byte*) print_char_cursor#130 mul16u_error::@2/(byte*) print_char_cursor#21 mul16u_error::@4/(byte*) print_char_cursor#21 mul16u_error::@6/(byte*) print_char_cursor#21 mul16u_error::@8/(byte*) print_char_cursor#21 ) + [64] (byte*) print_char_cursor#154 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#149 mul16s_compare::@13/(byte*~) print_char_cursor#183 mul16s_error/(byte*) print_char_cursor#132 mul16s_error::@2/(byte*) print_char_cursor#22 mul16s_error::@4/(byte*) print_char_cursor#22 mul16s_error::@6/(byte*) print_char_cursor#22 mul16s_error::@8/(byte*) print_char_cursor#22 mul16u_compare::@1/(byte*) print_char_cursor#145 mul16u_compare::@13/(byte*~) print_char_cursor#190 mul16u_error/(byte*) print_char_cursor#132 mul16u_error::@2/(byte*) print_char_cursor#22 mul16u_error::@4/(byte*) print_char_cursor#22 mul16u_error::@6/(byte*) print_char_cursor#22 mul16u_error::@8/(byte*) print_char_cursor#22 ) [64] (byte*) print_str::str#17 ← phi( mul16s_compare::@1/(const string) str mul16s_compare::@13/(const string) mul16s_compare::str1 mul16s_error/(const string) mul16s_error::str mul16s_error::@2/(const string) str1 mul16s_error::@4/(const string) str2 mul16s_error::@6/(const string) str3 mul16s_error::@8/(const string) str4 mul16u_compare::@1/(const string) str mul16u_compare::@13/(const string) mul16u_compare::str1 mul16u_error/(const string) mul16u_error::str mul16u_error::@2/(const string) str1 mul16u_error::@4/(const string) str2 mul16u_error::@6/(const string) str3 mul16u_error::@8/(const string) str4 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [65] (byte*) print_char_cursor#130 ← phi( print_str/(byte*) print_char_cursor#151 print_str::@2/(byte*) print_char_cursor#1 ) + [65] (byte*) print_char_cursor#132 ← phi( print_str/(byte*) print_char_cursor#154 print_str::@2/(byte*) print_char_cursor#1 ) [65] (byte*) print_str::str#15 ← phi( print_str/(byte*) print_str::str#17 print_str::@2/(byte*) print_str::str#0 ) [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 to:print_str::@return @@ -3950,8 +3972,8 @@ print_str::@return: scope:[print_str] from print_str::@1 [67] return to:@return print_str::@2: scope:[print_str] from print_str::@1 - [68] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#15) - [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#130 + [68] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#15) + [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 [70] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#15 to:print_str::@1 mul16s_error: scope:[mul16s_error] from mul16s_compare::@7 @@ -4003,435 +4025,438 @@ mul16s_error::@return: scope:[mul16s_error] from mul16s_error::@10 to:@return print_sdword: scope:[print_sdword] from mul16s_error::@5 mul16s_error::@7 mul16s_error::@9 [94] (signed dword) print_sdword::dw#4 ← phi( mul16s_error::@5/(signed dword) print_sdword::dw#1 mul16s_error::@7/(signed dword) print_sdword::dw#2 mul16s_error::@9/(signed dword) print_sdword::dw#3 ) - [95] if((signed dword) print_sdword::dw#4>=(signed byte) 0) goto print_sdword::@1 - to:print_sdword::@2 -print_sdword::@2: scope:[print_sdword] from print_sdword + [95] if((signed dword) print_sdword::dw#4<(signed byte) 0) goto print_sdword::@1 + to:print_sdword::@3 +print_sdword::@3: scope:[print_sdword] from print_sdword [96] phi() [97] call print_char - to:print_sdword::@3 -print_sdword::@3: scope:[print_sdword] from print_sdword::@2 - [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 - to:print_sdword::@1 -print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@3 - [99] (byte*) print_char_cursor#137 ← phi( print_sdword/(byte*) print_char_cursor#130 print_sdword::@3/(byte*) print_char_cursor#21 ) - [99] (signed dword) print_sdword::dw#5 ← phi( print_sdword/(signed dword) print_sdword::dw#4 print_sdword::@3/(signed dword) print_sdword::dw#0 ) - [100] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 - [101] call print_dword + to:print_sdword::@2 +print_sdword::@2: scope:[print_sdword] from print_sdword::@3 print_sdword::@4 + [98] (signed dword) print_sdword::dw#6 ← phi( print_sdword::@4/(signed dword) print_sdword::dw#0 print_sdword::@3/(signed dword) print_sdword::dw#4 ) + [99] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#6 + [100] call print_dword to:print_sdword::@return -print_sdword::@return: scope:[print_sdword] from print_sdword::@1 - [102] return +print_sdword::@return: scope:[print_sdword] from print_sdword::@2 + [101] return to:@return -print_dword: scope:[print_dword] from mul16u_error::@5 mul16u_error::@7 mul16u_error::@9 print_sdword::@1 - [103] (byte*) print_char_cursor#136 ← phi( mul16u_error::@5/(byte*) print_char_cursor#130 mul16u_error::@7/(byte*) print_char_cursor#130 mul16u_error::@9/(byte*) print_char_cursor#130 print_sdword::@1/(byte*) print_char_cursor#137 ) - [103] (dword) print_dword::dw#4 ← phi( mul16u_error::@5/(dword) print_dword::dw#1 mul16u_error::@7/(dword) print_dword::dw#2 mul16u_error::@9/(dword) print_dword::dw#3 print_sdword::@1/(dword) print_dword::dw#0 ) - [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 - [105] call print_word - to:print_dword::@1 -print_dword::@1: scope:[print_dword] from print_dword - [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 - [107] call print_word - to:print_dword::@return -print_dword::@return: scope:[print_dword] from print_dword::@1 - [108] return - to:@return -print_word: scope:[print_word] from mul16u_error::@1 mul16u_error::@3 print_dword print_dword::@1 print_sword::@2 - [109] (byte*) print_char_cursor#135 ← phi( mul16u_error::@1/(byte*) print_char_cursor#130 mul16u_error::@3/(byte*) print_char_cursor#130 print_dword/(byte*) print_char_cursor#136 print_dword::@1/(byte*) print_char_cursor#21 print_sword::@2/(byte*) print_char_cursor#21 ) - [109] (word) print_word::w#5 ← phi( mul16u_error::@1/(word) print_word::w#3 mul16u_error::@3/(word) print_word::w#4 print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 ) - [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 - [111] call print_byte - to:print_word::@1 -print_word::@1: scope:[print_word] from print_word - [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 - [113] call print_byte - to:print_word::@return -print_word::@return: scope:[print_word] from print_word::@1 - [114] return - to:@return -print_byte: scope:[print_byte] from print_word print_word::@1 - [115] (byte*) print_char_cursor#139 ← phi( print_word/(byte*) print_char_cursor#135 print_word::@1/(byte*) print_char_cursor#21 ) - [115] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 - [117] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [118] call print_char - to:print_byte::@1 -print_byte::@1: scope:[print_byte] from print_byte - [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f - [120] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [121] call print_char - to:print_byte::@return -print_byte::@return: scope:[print_byte] from print_byte::@1 - [122] return - to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 print_sdword::@2 print_sword::@1 print_sword::@3 - [123] (byte*) print_char_cursor#86 ← phi( print_byte/(byte*) print_char_cursor#139 print_byte::@1/(byte*) print_char_cursor#21 print_sdword::@2/(byte*) print_char_cursor#130 print_sword::@1/(byte*) print_char_cursor#130 print_sword::@3/(byte*) print_char_cursor#130 ) - [123] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sdword::@2/(byte) '-' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) - [124] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#5 - [125] (byte*) print_char_cursor#21 ← ++ (byte*) print_char_cursor#86 +print_sdword::@1: scope:[print_sdword] from print_sdword + [102] phi() + [103] call print_char + to:print_sdword::@4 +print_sdword::@4: scope:[print_sdword] from print_sdword::@1 + [104] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 + to:print_sdword::@2 +print_char: scope:[print_char] from print_byte print_byte::@1 print_sdword::@1 print_sdword::@3 print_sword::@1 print_sword::@3 + [105] (byte*) print_char_cursor#88 ← phi( print_byte/(byte*) print_char_cursor#142 print_byte::@1/(byte*) print_char_cursor#22 print_sdword::@1/(byte*) print_char_cursor#132 print_sdword::@3/(byte*) print_char_cursor#132 print_sword::@1/(byte*) print_char_cursor#132 print_sword::@3/(byte*) print_char_cursor#132 ) + [105] (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sdword::@1/(byte) '-' print_sdword::@3/(byte) ' ' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' ) + [106] *((byte*) print_char_cursor#88) ← (byte) print_char::ch#6 + [107] (byte*) print_char_cursor#22 ← ++ (byte*) print_char_cursor#88 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [126] return + [108] return + to:@return +print_dword: scope:[print_dword] from mul16u_error::@5 mul16u_error::@7 mul16u_error::@9 print_sdword::@2 + [109] (byte*) print_char_cursor#138 ← phi( mul16u_error::@5/(byte*) print_char_cursor#132 mul16u_error::@7/(byte*) print_char_cursor#132 mul16u_error::@9/(byte*) print_char_cursor#132 print_sdword::@2/(byte*) print_char_cursor#22 ) + [109] (dword) print_dword::dw#4 ← phi( mul16u_error::@5/(dword) print_dword::dw#1 mul16u_error::@7/(dword) print_dword::dw#2 mul16u_error::@9/(dword) print_dword::dw#3 print_sdword::@2/(dword) print_dword::dw#0 ) + [110] (word) print_word::w#1 ← > (dword) print_dword::dw#4 + [111] call print_word + to:print_dword::@1 +print_dword::@1: scope:[print_dword] from print_dword + [112] (word) print_word::w#2 ← < (dword) print_dword::dw#4 + [113] call print_word + to:print_dword::@return +print_dword::@return: scope:[print_dword] from print_dword::@1 + [114] return + to:@return +print_word: scope:[print_word] from mul16u_error::@1 mul16u_error::@3 print_dword print_dword::@1 print_sword::@2 + [115] (byte*) print_char_cursor#137 ← phi( mul16u_error::@1/(byte*) print_char_cursor#132 mul16u_error::@3/(byte*) print_char_cursor#132 print_dword/(byte*) print_char_cursor#138 print_dword::@1/(byte*) print_char_cursor#22 print_sword::@2/(byte*) print_char_cursor#22 ) + [115] (word) print_word::w#5 ← phi( mul16u_error::@1/(word) print_word::w#3 mul16u_error::@3/(word) print_word::w#4 print_dword/(word) print_word::w#1 print_dword::@1/(word) print_word::w#2 print_sword::@2/(word) print_word::w#0 ) + [116] (byte) print_byte::b#0 ← > (word) print_word::w#5 + [117] call print_byte + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [118] (byte) print_byte::b#1 ← < (word) print_word::w#5 + [119] call print_byte + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [120] return + to:@return +print_byte: scope:[print_byte] from print_word print_word::@1 + [121] (byte*) print_char_cursor#142 ← phi( print_word/(byte*) print_char_cursor#137 print_word::@1/(byte*) print_char_cursor#22 ) + [121] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) + [122] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 + [123] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [124] call print_char + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [125] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f + [126] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [127] call print_char + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [128] return to:@return print_sword: scope:[print_sword] from mul16s_error::@1 mul16s_error::@3 - [127] (signed word) print_sword::w#3 ← phi( mul16s_error::@1/(signed word) print_sword::w#1 mul16s_error::@3/(signed word) print_sword::w#2 ) - [128] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 + [129] (signed word) print_sword::w#3 ← phi( mul16s_error::@1/(signed word) print_sword::w#1 mul16s_error::@3/(signed word) print_sword::w#2 ) + [130] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 to:print_sword::@3 print_sword::@3: scope:[print_sword] from print_sword - [129] phi() - [130] call print_char + [131] phi() + [132] call print_char to:print_sword::@2 print_sword::@2: scope:[print_sword] from print_sword::@3 print_sword::@4 - [131] (signed word) print_sword::w#5 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#3 ) - [132] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 - [133] call print_word + [133] (signed word) print_sword::w#5 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#3 ) + [134] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 + [135] call print_word to:print_sword::@return print_sword::@return: scope:[print_sword] from print_sword::@2 - [134] return + [136] return to:@return print_sword::@1: scope:[print_sword] from print_sword - [135] phi() - [136] call print_char + [137] phi() + [138] call print_char to:print_sword::@4 print_sword::@4: scope:[print_sword] from print_sword::@1 - [137] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 + [139] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 to:print_sword::@2 mulf16s: scope:[mulf16s] from mul16s_compare::@11 - [138] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 - [139] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 - [140] call mulf16u - [141] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 + [140] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 + [141] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 + [142] call mulf16u + [143] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 to:mulf16s::@5 mulf16s::@5: scope:[mulf16s] from mulf16s - [142] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 - [143] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 + [144] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 + [145] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 to:mulf16s::@3 mulf16s::@3: scope:[mulf16s] from mulf16s::@5 - [144] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 - [145] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 - [146] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 + [146] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 + [147] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 + [148] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 to:mulf16s::@1 mulf16s::@1: scope:[mulf16s] from mulf16s::@3 mulf16s::@5 - [147] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@5/(dword) mulf16s::m#0 ) - [148] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 + [149] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@5/(dword) mulf16s::m#0 ) + [150] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 to:mulf16s::@4 mulf16s::@4: scope:[mulf16s] from mulf16s::@1 - [149] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 - [150] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 - [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 + [151] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 + [152] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 + [153] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 to:mulf16s::@2 mulf16s::@2: scope:[mulf16s] from mulf16s::@1 mulf16s::@4 - [152] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) - [153] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 + [154] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) + [155] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 to:mulf16s::@return mulf16s::@return: scope:[mulf16s] from mulf16s::@2 - [154] return + [156] return to:@return mulf16u: scope:[mulf16u] from mul16u_compare::@11 mulf16s - [155] (word) mulf16u::b#2 ← phi( mul16u_compare::@11/(word) mulf16u::b#1 mulf16s/(word) mulf16u::b#0 ) - [155] (word) mulf16u::a#2 ← phi( mul16u_compare::@11/(word) mulf16u::a#1 mulf16s/(word) mulf16u::a#0 ) - [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 - [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 + [157] (word) mulf16u::b#2 ← phi( mul16u_compare::@11/(word) mulf16u::b#1 mulf16s/(word) mulf16u::b#0 ) + [157] (word) mulf16u::a#2 ← phi( mul16u_compare::@11/(word) mulf16u::a#1 mulf16s/(word) mulf16u::a#0 ) + [158] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 + [159] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } - [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) + [161] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) to:mulf16u::@return mulf16u::@return: scope:[mulf16u] from mulf16u - [160] return + [162] return to:@return mul16s: scope:[mul16s] from mul16s_compare::@10 - [161] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 - [162] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 - [163] call mul16u - [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + [163] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 + [164] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 + [165] call mul16u + [166] (dword) mul16u::return#2 ← (dword) mul16u::res#2 to:mul16s::@5 mul16s::@5: scope:[mul16s] from mul16s - [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - [166] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 + [167] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + [168] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 to:mul16s::@3 mul16s::@3: scope:[mul16s] from mul16s::@5 - [167] (word~) mul16s::$9 ← > (dword) mul16s::m#0 - [168] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 - [169] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [169] (word~) mul16s::$9 ← > (dword) mul16s::m#0 + [170] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 + [171] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@5 - [170] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@5/(dword) mul16s::m#0 ) - [171] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 + [172] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@5/(dword) mul16s::m#0 ) + [173] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 to:mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s::@1 - [172] (word~) mul16s::$13 ← > (dword) mul16s::m#5 - [173] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 - [174] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 + [174] (word~) mul16s::$13 ← > (dword) mul16s::m#5 + [175] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 + [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4 - [175] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 ) - [176] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 + [177] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 ) + [178] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [177] return + [179] return to:@return mul16u: scope:[mul16u] from mul16s mul16u_compare::@10 - [178] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mul16u_compare::@10/(word) mul16u::a#2 ) - [178] (dword) mul16u::mb#0 ← phi( mul16s/(word) mul16u::b#0 mul16u_compare::@10/(word) mul16u::b#1 ) + [180] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mul16u_compare::@10/(word) mul16u::a#2 ) + [180] (dword) mul16u::mb#0 ← phi( mul16s/(word) mul16u::b#0 mul16u_compare::@10/(word) mul16u::b#1 ) to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@3 - [179] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) - [179] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) - [179] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) - [180] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 + [181] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) + [181] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 ) + [181] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) + [182] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [181] return + [183] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [182] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 - [183] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 + [184] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 + [185] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 - [184] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [186] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@3 mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4 - [185] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) - [186] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 - [187] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 + [187] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) + [188] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 + [189] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 to:mul16u::@1 muls16s: scope:[muls16s] from mul16s_compare::@2 - [188] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 + [190] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 to:muls16s::@2 muls16s::@2: scope:[muls16s] from muls16s - [189] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 + [191] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 to:muls16s::@3 muls16s::@3: scope:[muls16s] from muls16s::@2 muls16s::@3 - [190] (signed word) muls16s::j#2 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed word) muls16s::j#1 ) - [190] (signed dword) muls16s::m#3 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 ) - [191] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 - [192] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 - [193] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 + [192] (signed word) muls16s::j#2 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed word) muls16s::j#1 ) + [192] (signed dword) muls16s::m#3 ← phi( muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 ) + [193] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 + [194] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 + [195] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 to:muls16s::@1 muls16s::@1: scope:[muls16s] from muls16s::@2 muls16s::@3 muls16s::@4 - [194] (signed dword) muls16s::return#0 ← phi( muls16s::@4/(signed dword) muls16s::m#2 muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 ) + [196] (signed dword) muls16s::return#0 ← phi( muls16s::@4/(signed dword) muls16s::m#2 muls16s::@2/(signed byte) 0 muls16s::@3/(signed dword) muls16s::m#1 ) to:muls16s::@return muls16s::@return: scope:[muls16s] from muls16s::@1 - [195] return + [197] return to:@return muls16s::@4: scope:[muls16s] from muls16s muls16s::@4 - [196] (signed word) muls16s::i#2 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed word) muls16s::i#1 ) - [196] (signed dword) muls16s::m#5 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed dword) muls16s::m#2 ) - [197] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 - [198] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 - [199] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 + [198] (signed word) muls16s::i#2 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed word) muls16s::i#1 ) + [198] (signed dword) muls16s::m#5 ← phi( muls16s/(signed byte) 0 muls16s::@4/(signed dword) muls16s::m#2 ) + [199] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 + [200] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 + [201] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 to:muls16s::@1 mul16u_compare: scope:[mul16u_compare] from main::@2 - [200] phi() + [202] phi() to:mul16u_compare::@1 mul16u_compare::@1: scope:[mul16u_compare] from mul16u_compare mul16u_compare::@8 - [201] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(byte) mul16u_compare::i#1 ) - [201] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::b#1 ) - [201] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::a#1 ) - [201] (byte*) print_char_cursor#142 ← phi( mul16u_compare/(byte*) 1024 mul16u_compare::@8/(byte*) print_char_cursor#130 ) - [202] call print_str + [203] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(byte) mul16u_compare::i#1 ) + [203] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::b#1 ) + [203] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte) 0 mul16u_compare::@8/(word) mul16u_compare::a#1 ) + [203] (byte*) print_char_cursor#145 ← phi( mul16u_compare/(byte*) 1024 mul16u_compare::@8/(byte*) print_char_cursor#132 ) + [204] call print_str to:mul16u_compare::@2 mul16u_compare::@2: scope:[mul16u_compare] from mul16u_compare::@1 mul16u_compare::@5 - [203] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 ) - [203] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 ) - [203] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 ) - [204] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b - [205] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd - [206] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 - [207] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 - [208] call muls16u - [209] (dword) muls16u::return#2 ← (dword) muls16u::return#0 + [205] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 ) + [205] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 ) + [205] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 ) + [206] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b + [207] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd + [208] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 + [209] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 + [210] call muls16u + [211] (dword) muls16u::return#2 ← (dword) muls16u::return#0 to:mul16u_compare::@10 mul16u_compare::@10: scope:[mul16u_compare] from mul16u_compare::@2 - [210] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 - [211] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 - [212] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 - [213] call mul16u - [214] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [212] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 + [213] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 + [214] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 + [215] call mul16u + [216] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mul16u_compare::@11 mul16u_compare::@11: scope:[mul16u_compare] from mul16u_compare::@10 - [215] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 - [216] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 - [217] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 - [218] call mulf16u - [219] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 + [217] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 + [218] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 + [219] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 + [220] call mulf16u + [221] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 to:mul16u_compare::@12 mul16u_compare::@12: scope:[mul16u_compare] from mul16u_compare::@11 - [220] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 - [221] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 + [222] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 + [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 to:mul16u_compare::@6 mul16u_compare::@6: scope:[mul16u_compare] from mul16u_compare::@12 - [222] phi() + [224] phi() to:mul16u_compare::@3 mul16u_compare::@3: scope:[mul16u_compare] from mul16u_compare::@12 mul16u_compare::@6 - [223] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@12/(byte) 1 mul16u_compare::@6/(byte) 0 ) - [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 + [225] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@12/(byte) 1 mul16u_compare::@6/(byte) 0 ) + [226] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 to:mul16u_compare::@4 mul16u_compare::@15: scope:[mul16u_compare] from mul16u_compare::@3 - [225] phi() + [227] phi() to:mul16u_compare::@4 mul16u_compare::@4: scope:[mul16u_compare] from mul16u_compare::@15 mul16u_compare::@3 - [226] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@15/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte) 0 ) - [227] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 + [228] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@15/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte) 0 ) + [229] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 to:mul16u_compare::@7 mul16u_compare::@7: scope:[mul16u_compare] from mul16u_compare::@4 - [228] *((const byte*) BGCOL#0) ← (byte) 2 - [229] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 - [230] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 - [231] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 - [232] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 - [233] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 - [234] call mul16u_error + [230] *((const byte*) BGCOL#0) ← (byte) 2 + [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 + [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 + [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 + [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 + [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 + [236] call mul16u_error to:mul16u_compare::@return mul16u_compare::@return: scope:[mul16u_compare] from mul16u_compare::@14 mul16u_compare::@7 - [235] return + [237] return to:@return mul16u_compare::@5: scope:[mul16u_compare] from mul16u_compare::@4 - [236] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 - [237] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 + [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 + [239] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 to:mul16u_compare::@8 mul16u_compare::@8: scope:[mul16u_compare] from mul16u_compare::@5 - [238] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 - [239] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 + [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 + [241] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 to:mul16u_compare::@9 mul16u_compare::@9: scope:[mul16u_compare] from mul16u_compare::@8 - [240] phi() - [241] call print_ln + [242] phi() + [243] call print_ln to:mul16u_compare::@13 mul16u_compare::@13: scope:[mul16u_compare] from mul16u_compare::@9 - [242] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1 - [243] call print_str + [244] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 + [245] call print_str to:mul16u_compare::@14 mul16u_compare::@14: scope:[mul16u_compare] from mul16u_compare::@13 - [244] phi() - [245] call print_ln + [246] phi() + [247] call print_ln to:mul16u_compare::@return mul16u_error: scope:[mul16u_error] from mul16u_compare::@7 - [246] phi() - [247] call print_str + [248] phi() + [249] call print_str to:mul16u_error::@1 mul16u_error::@1: scope:[mul16u_error] from mul16u_error - [248] (word) print_word::w#3 ← (word) mul16u_error::a#0 - [249] call print_word + [250] (word) print_word::w#3 ← (word) mul16u_error::a#0 + [251] call print_word to:mul16u_error::@2 mul16u_error::@2: scope:[mul16u_error] from mul16u_error::@1 - [250] phi() - [251] call print_str + [252] phi() + [253] call print_str to:mul16u_error::@3 mul16u_error::@3: scope:[mul16u_error] from mul16u_error::@2 - [252] (word) print_word::w#4 ← (word) mul16u_error::b#0 - [253] call print_word + [254] (word) print_word::w#4 ← (word) mul16u_error::b#0 + [255] call print_word to:mul16u_error::@4 mul16u_error::@4: scope:[mul16u_error] from mul16u_error::@3 - [254] phi() - [255] call print_str + [256] phi() + [257] call print_str to:mul16u_error::@5 mul16u_error::@5: scope:[mul16u_error] from mul16u_error::@4 - [256] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 - [257] call print_dword + [258] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 + [259] call print_dword to:mul16u_error::@6 mul16u_error::@6: scope:[mul16u_error] from mul16u_error::@5 - [258] phi() - [259] call print_str + [260] phi() + [261] call print_str to:mul16u_error::@7 mul16u_error::@7: scope:[mul16u_error] from mul16u_error::@6 - [260] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 - [261] call print_dword + [262] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 + [263] call print_dword to:mul16u_error::@8 mul16u_error::@8: scope:[mul16u_error] from mul16u_error::@7 - [262] phi() - [263] call print_str + [264] phi() + [265] call print_str to:mul16u_error::@9 mul16u_error::@9: scope:[mul16u_error] from mul16u_error::@8 - [264] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 - [265] call print_dword + [266] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 + [267] call print_dword to:mul16u_error::@10 mul16u_error::@10: scope:[mul16u_error] from mul16u_error::@9 - [266] phi() - [267] call print_ln + [268] phi() + [269] call print_ln to:mul16u_error::@return mul16u_error::@return: scope:[mul16u_error] from mul16u_error::@10 - [268] return + [270] return to:@return muls16u: scope:[muls16u] from mul16u_compare::@2 - [269] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 + [271] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 to:muls16u::@2 muls16u::@2: scope:[muls16u] from muls16u muls16u::@2 - [270] (word) muls16u::i#2 ← phi( muls16u/(byte) 0 muls16u::@2/(word) muls16u::i#1 ) - [270] (dword) muls16u::m#3 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 ) - [271] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 - [272] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 - [273] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 + [272] (word) muls16u::i#2 ← phi( muls16u/(byte) 0 muls16u::@2/(word) muls16u::i#1 ) + [272] (dword) muls16u::m#3 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 ) + [273] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 + [274] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 + [275] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 to:muls16u::@1 muls16u::@1: scope:[muls16u] from muls16u muls16u::@2 - [274] (dword) muls16u::return#0 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 ) + [276] (dword) muls16u::return#0 ← phi( muls16u/(byte) 0 muls16u::@2/(dword) muls16u::m#1 ) to:muls16u::@return muls16u::@return: scope:[muls16u] from muls16u::@1 - [275] return + [277] return to:@return mulf_init: scope:[mulf_init] from main::@1 - [276] phi() + [278] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 - [277] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) - [277] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_hi#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) - [277] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_lo#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) - [277] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) - [277] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::c#1 ) - [278] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [279] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 - [280] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 + [279] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) + [279] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_hi#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) + [279] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[$200]) mulf_sqr1_lo#0+(byte) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) + [279] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) + [279] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@2/(byte) mulf_init::c#1 ) + [280] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [281] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 + [282] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@1 - [281] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [282] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [283] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [284] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@2 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@3 - [283] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@3/(byte) mulf_init::x_2#1 ) - [283] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@3/(word) mulf_init::sqr#2 ) - [284] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 - [285] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 - [286] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 - [287] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 - [288] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [289] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [290] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 - [291] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 + [285] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@3/(byte) mulf_init::x_2#1 ) + [285] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@3/(word) mulf_init::sqr#2 ) + [286] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 + [287] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 + [288] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 + [289] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 + [290] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [291] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [292] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [293] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@2 mulf_init::@5 - [292] (byte) mulf_init::dir#2 ← phi( mulf_init::@2/(byte) $ff mulf_init::@5/(byte) mulf_init::dir#3 ) - [292] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_hi#0 mulf_init::@5/(byte*) mulf_init::sqr2_hi#1 ) - [292] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_lo#0 mulf_init::@5/(byte*) mulf_init::sqr2_lo#1 ) - [292] (byte) mulf_init::x_255#2 ← phi( mulf_init::@2/(byte) -1 mulf_init::@5/(byte) mulf_init::x_255#1 ) - [293] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) - [294] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) - [295] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [296] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [297] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 + [294] (byte) mulf_init::dir#2 ← phi( mulf_init::@2/(byte) $ff mulf_init::@5/(byte) mulf_init::dir#3 ) + [294] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_hi#0 mulf_init::@5/(byte*) mulf_init::sqr2_hi#1 ) + [294] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@2/(const byte[$200]) mulf_sqr2_lo#0 mulf_init::@5/(byte*) mulf_init::sqr2_lo#1 ) + [294] (byte) mulf_init::x_255#2 ← phi( mulf_init::@2/(byte) -1 mulf_init::@5/(byte) mulf_init::x_255#1 ) + [295] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) + [296] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) + [297] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [298] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [299] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 to:mulf_init::@5 mulf_init::@7: scope:[mulf_init] from mulf_init::@4 - [298] phi() + [300] phi() to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@4 mulf_init::@7 - [299] (byte) mulf_init::dir#3 ← phi( mulf_init::@7/(byte) mulf_init::dir#2 mulf_init::@4/(byte) 1 ) - [300] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 - [301] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 + [301] (byte) mulf_init::dir#3 ← phi( mulf_init::@7/(byte) mulf_init::dir#2 mulf_init::@4/(byte) 1 ) + [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 to:mulf_init::@6 mulf_init::@6: scope:[mulf_init] from mulf_init::@5 - [302] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) - [303] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) + [304] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) + [305] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@6 - [304] return + [306] return to:@return print_cls: scope:[print_cls] from main - [305] phi() + [307] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [306] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [307] *((byte*) print_cls::sc#2) ← (byte) ' ' - [308] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [309] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 + [308] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [309] *((byte*) print_cls::sc#2) ← (byte) ' ' + [310] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [311] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [310] return + [312] return to:@return @@ -4662,25 +4687,24 @@ VARIABLE REGISTER WEIGHTS (byte) print_byte::b#2 2.0 (void()) print_char((byte) print_char::ch) (byte) print_char::ch -(byte) print_char::ch#3 4.0 (byte) print_char::ch#4 4.0 -(byte) print_char::ch#5 6.0 +(byte) print_char::ch#5 4.0 +(byte) print_char::ch#6 6.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 101.0 -(byte*) print_char_cursor#130 3.2162162162162145 -(byte*) print_char_cursor#131 5.75 -(byte*) print_char_cursor#135 6.0 -(byte*) print_char_cursor#136 5.0 -(byte*) print_char_cursor#137 3.0 -(byte*) print_char_cursor#139 2.0 -(byte*) print_char_cursor#142 22.0 -(byte*) print_char_cursor#146 24.0 -(byte*) print_char_cursor#151 48.0 -(byte*~) print_char_cursor#180 4.0 -(byte*~) print_char_cursor#187 4.0 -(byte*) print_char_cursor#21 0.6956521739130432 -(byte*~) print_char_cursor#220 4.0 -(byte*) print_char_cursor#86 7.0 +(byte*) print_char_cursor#132 3.1874999999999996 +(byte*) print_char_cursor#133 5.75 +(byte*) print_char_cursor#137 6.0 +(byte*) print_char_cursor#138 5.0 +(byte*) print_char_cursor#142 2.0 +(byte*) print_char_cursor#145 22.0 +(byte*) print_char_cursor#149 24.0 +(byte*) print_char_cursor#154 48.0 +(byte*~) print_char_cursor#183 4.0 +(byte*~) print_char_cursor#190 4.0 +(byte*) print_char_cursor#22 0.653061224489796 +(byte*~) print_char_cursor#222 4.0 +(byte*) print_char_cursor#88 8.0 (void()) print_cls() (byte*) print_cls::sc (byte*) print_cls::sc#1 16.5 @@ -4705,8 +4729,8 @@ VARIABLE REGISTER WEIGHTS (signed dword) print_sdword::dw#1 4.0 (signed dword) print_sdword::dw#2 4.0 (signed dword) print_sdword::dw#3 4.0 -(signed dword) print_sdword::dw#4 3.0 -(signed dword) print_sdword::dw#5 4.0 +(signed dword) print_sdword::dw#4 1.9999999999999998 +(signed dword) print_sdword::dw#6 4.0 (void()) print_str((byte*) print_str::str) (byte*) print_str::str (byte*) print_str::str#0 202.0 @@ -4738,12 +4762,12 @@ Initial phi equivalence classes [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] [ print_str::str#15 print_str::str#17 print_str::str#0 ] -[ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] +[ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 ] +[ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] +[ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#222 print_char_cursor#132 print_char_cursor#22 print_char_cursor#183 print_char_cursor#145 print_char_cursor#190 print_char_cursor#1 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -[ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -[ print_char_cursor#86 print_char_cursor#139 print_char_cursor#135 print_char_cursor#136 print_char_cursor#137 print_char_cursor#151 print_char_cursor#131 print_char_cursor#146 print_char_cursor#220 print_char_cursor#130 print_char_cursor#21 print_char_cursor#180 print_char_cursor#142 print_char_cursor#187 print_char_cursor#1 ] [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] @@ -4831,12 +4855,12 @@ Complete equivalence classes [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] [ print_str::str#15 print_str::str#17 print_str::str#0 ] -[ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] +[ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 ] +[ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] +[ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#222 print_char_cursor#132 print_char_cursor#22 print_char_cursor#183 print_char_cursor#145 print_char_cursor#190 print_char_cursor#1 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -[ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -[ print_char_cursor#86 print_char_cursor#139 print_char_cursor#135 print_char_cursor#136 print_char_cursor#137 print_char_cursor#151 print_char_cursor#131 print_char_cursor#146 print_char_cursor#220 print_char_cursor#130 print_char_cursor#21 print_char_cursor#180 print_char_cursor#142 print_char_cursor#187 print_char_cursor#1 ] [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] @@ -4923,12 +4947,12 @@ Allocated zp ZP_BYTE:7 [ mul16s_compare::j#10 mul16s_compare::j#1 ] Allocated zp ZP_BYTE:8 [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] Allocated zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] Allocated zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] -Allocated zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] -Allocated zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] -Allocated zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] -Allocated zp ZP_BYTE:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Allocated zp ZP_BYTE:24 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -Allocated zp ZP_WORD:25 [ print_char_cursor#86 print_char_cursor#139 print_char_cursor#135 print_char_cursor#136 print_char_cursor#137 print_char_cursor#151 print_char_cursor#131 print_char_cursor#146 print_char_cursor#220 print_char_cursor#130 print_char_cursor#21 print_char_cursor#180 print_char_cursor#142 print_char_cursor#187 print_char_cursor#1 ] +Allocated zp ZP_DWORD:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 ] +Allocated zp ZP_BYTE:17 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +Allocated zp ZP_DWORD:18 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] +Allocated zp ZP_WORD:22 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] +Allocated zp ZP_WORD:24 [ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#222 print_char_cursor#132 print_char_cursor#22 print_char_cursor#183 print_char_cursor#145 print_char_cursor#190 print_char_cursor#1 ] +Allocated zp ZP_BYTE:26 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Allocated zp ZP_WORD:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] Allocated zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] Allocated zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] @@ -5018,7 +5042,7 @@ INITIAL ASM .pc = $80d "Program" // Global Constants & labels .label BGCOL = $d021 - .label print_char_cursor = $19 + .label print_char_cursor = $18 .label print_line_cursor = 9 // @begin bbegin: @@ -5040,7 +5064,7 @@ main: { lda #5 sta BGCOL // [5] call print_cls - // [305] phi from main to print_cls [phi:main->print_cls] + // [307] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls // [6] phi from main to main::@1 [phi:main->main::@1] @@ -5049,7 +5073,7 @@ main: { // main::@1 b1: // [7] call mulf_init - // [276] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + // [278] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] mulf_init_from_b1: jsr mulf_init // [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -5058,7 +5082,7 @@ main: { // main::@2 b2: // [9] call mul16u_compare - // [200] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] + // [202] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] mul16u_compare_from_b2: jsr mul16u_compare // [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] @@ -5085,7 +5109,7 @@ mul16s_compare: { .label j = 7 .label i = 2 .label ok = 8 - // [13] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [13] (byte*~) print_char_cursor#222 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -5105,21 +5129,21 @@ mul16s_compare: { sta a lda #>-$7fff sta a+1 - // [14] phi (byte*) print_char_cursor#146 = (byte*~) print_char_cursor#220 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy + // [14] phi (byte*) print_char_cursor#149 = (byte*~) print_char_cursor#222 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy jmp b1 // [14] phi from mul16s_compare::@8 to mul16s_compare::@1 [phi:mul16s_compare::@8->mul16s_compare::@1] b1_from_b8: // [14] phi (byte) mul16s_compare::i#12 = (byte) mul16s_compare::i#1 [phi:mul16s_compare::@8->mul16s_compare::@1#0] -- register_copy // [14] phi (signed word) mul16s_compare::b#6 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@8->mul16s_compare::@1#1] -- register_copy // [14] phi (signed word) mul16s_compare::a#6 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@8->mul16s_compare::@1#2] -- register_copy - // [14] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#130 [phi:mul16s_compare::@8->mul16s_compare::@1#3] -- register_copy + // [14] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#132 [phi:mul16s_compare::@8->mul16s_compare::@1#3] -- register_copy jmp b1 // mul16s_compare::@1 b1: // [15] call print_str // [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str] print_str_from_b1: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#146 [phi:mul16s_compare::@1->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#149 [phi:mul16s_compare::@1->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from_b9: - // [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16s_compare::@9->print_ln#0] -- register_copy + // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16s_compare::@9->print_ln#0] -- register_copy // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@9->print_ln#1] -- register_copy jsr print_ln jmp b13 // mul16s_compare::@13 b13: - // [55] (byte*~) print_char_cursor#180 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [55] (byte*~) print_char_cursor#183 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -5416,7 +5440,7 @@ mul16s_compare: { // [56] call print_str // [64] phi from mul16s_compare::@13 to print_str [phi:mul16s_compare::@13->print_str] print_str_from_b13: - // [64] phi (byte*) print_char_cursor#151 = (byte*~) print_char_cursor#180 [phi:mul16s_compare::@13->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*~) print_char_cursor#183 [phi:mul16s_compare::@13->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str1 [phi:mul16s_compare::@13->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from_b14: - // [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16s_compare::@14->print_ln#0] -- register_copy + // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16s_compare::@14->print_ln#0] -- register_copy // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@14->print_ln#1] -- register_copy jsr print_ln jmp breturn @@ -5455,7 +5479,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - // [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#131) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + // [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -5478,7 +5502,7 @@ print_str: { // [65] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - // [65] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#151 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + // [65] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#154 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy // [65] phi (byte*) print_str::str#15 = (byte*) print_str::str#17 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 // print_str::@1 @@ -5495,12 +5519,12 @@ print_str: { rts // print_str::@2 b2: - // [68] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 + // [68] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - // [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#130 -- pbuz1=_inc_pbuz1 + // [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -5523,7 +5547,7 @@ mul16s_error: { // [72] call print_str // [64] phi from mul16s_error to print_str [phi:mul16s_error->print_str] print_str_from_mul16s_error: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#130 [phi:mul16s_error->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#132 [phi:mul16s_error->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str [phi:mul16s_error->print_str#1] -- pbuz1=pbuc1 lda #print_sword] + // [129] phi from mul16s_error::@1 to print_sword [phi:mul16s_error::@1->print_sword] print_sword_from_b1: - // [127] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:mul16s_error::@1->print_sword#0] -- register_copy + // [129] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:mul16s_error::@1->print_sword#0] -- register_copy jsr print_sword // [75] phi from mul16s_error::@1 to mul16s_error::@2 [phi:mul16s_error::@1->mul16s_error::@2] b2_from_b1: @@ -5551,7 +5575,7 @@ mul16s_error: { // [76] call print_str // [64] phi from mul16s_error::@2 to print_str [phi:mul16s_error::@2->print_str] print_str_from_b2: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@2->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@2->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16s_error::@2->print_str#1] -- pbuz1=pbuc1 lda #print_sword] + // [129] phi from mul16s_error::@3 to print_sword [phi:mul16s_error::@3->print_sword] print_sword_from_b3: - // [127] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:mul16s_error::@3->print_sword#0] -- register_copy + // [129] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:mul16s_error::@3->print_sword#0] -- register_copy jsr print_sword // [79] phi from mul16s_error::@3 to mul16s_error::@4 [phi:mul16s_error::@3->mul16s_error::@4] b4_from_b3: @@ -5579,7 +5603,7 @@ mul16s_error: { // [80] call print_str // [64] phi from mul16s_error::@4 to print_str [phi:mul16s_error::@4->print_str] print_str_from_b4: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@4->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@4->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16s_error::@4->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b6: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@6->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@6->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16s_error::@6->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b8: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@8->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@8->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16s_error::@8->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from_b10: - // [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#21 [phi:mul16s_error::@10->print_ln#0] -- register_copy + // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#22 [phi:mul16s_error::@10->print_ln#0] -- register_copy // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_error::@10->print_ln#1] -- register_copy jsr print_ln jmp breturn @@ -5690,26 +5714,66 @@ mul16s_error: { // print_sdword(signed dword zeropage($d) dw) print_sdword: { .label dw = $d - // [95] if((signed dword) print_sdword::dw#4>=(signed byte) 0) goto print_sdword::@1 -- vdsz1_ge_0_then_la1 + // [95] if((signed dword) print_sdword::dw#4<(signed byte) 0) goto print_sdword::@1 -- vdsz1_lt_0_then_la1 lda dw+3 - bpl b1_from_print_sdword - // [96] phi from print_sdword to print_sdword::@2 [phi:print_sdword->print_sdword::@2] - b2_from_print_sdword: - jmp b2 - // print_sdword::@2 - b2: - // [97] call print_char - // [123] phi from print_sdword::@2 to print_char [phi:print_sdword::@2->print_char] - print_char_from_b2: - // [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#130 [phi:print_sdword::@2->print_char#0] -- register_copy - // [123] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuz1=vbuc1 - lda #'-' - sta print_char.ch - jsr print_char + bmi b1_from_print_sdword + // [96] phi from print_sdword to print_sdword::@3 [phi:print_sdword->print_sdword::@3] + b3_from_print_sdword: jmp b3 // print_sdword::@3 b3: - // [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 -- vdsz1=_neg_vdsz1 + // [97] call print_char + // [105] phi from print_sdword::@3 to print_char [phi:print_sdword::@3->print_char] + print_char_from_b3: + // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sdword::@3->print_char#0] -- register_copy + // [105] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sdword::@3->print_char#1] -- vbuz1=vbuc1 + lda #' ' + sta print_char.ch + jsr print_char + // [98] phi from print_sdword::@3 print_sdword::@4 to print_sdword::@2 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2] + b2_from_b3: + b2_from_b4: + // [98] phi (signed dword) print_sdword::dw#6 = (signed dword) print_sdword::dw#4 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2#0] -- register_copy + jmp b2 + // print_sdword::@2 + b2: + // [99] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#6 -- vduz1=vduz2 + lda dw + sta print_dword.dw + lda dw+1 + sta print_dword.dw+1 + lda dw+2 + sta print_dword.dw+2 + lda dw+3 + sta print_dword.dw+3 + // [100] call print_dword + // [109] phi from print_sdword::@2 to print_dword [phi:print_sdword::@2->print_dword] + print_dword_from_b2: + // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#22 [phi:print_sdword::@2->print_dword#0] -- register_copy + // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#0 [phi:print_sdword::@2->print_dword#1] -- register_copy + jsr print_dword + jmp breturn + // print_sdword::@return + breturn: + // [101] return + rts + // [102] phi from print_sdword to print_sdword::@1 [phi:print_sdword->print_sdword::@1] + b1_from_print_sdword: + jmp b1 + // print_sdword::@1 + b1: + // [103] call print_char + // [105] phi from print_sdword::@1 to print_char [phi:print_sdword::@1->print_char] + print_char_from_b1: + // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sdword::@1->print_char#0] -- register_copy + // [105] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sdword::@1->print_char#1] -- vbuz1=vbuc1 + lda #'-' + sta print_char.ch + jsr print_char + jmp b4 + // print_sdword::@4 + b4: + // [104] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 -- vdsz1=_neg_vdsz1 sec lda dw eor #$ff @@ -5727,160 +5791,18 @@ print_sdword: { eor #$ff adc #0 sta dw+3 - // [99] phi from print_sdword print_sdword::@3 to print_sdword::@1 [phi:print_sdword/print_sdword::@3->print_sdword::@1] - b1_from_print_sdword: - b1_from_b3: - // [99] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#130 [phi:print_sdword/print_sdword::@3->print_sdword::@1#0] -- register_copy - // [99] phi (signed dword) print_sdword::dw#5 = (signed dword) print_sdword::dw#4 [phi:print_sdword/print_sdword::@3->print_sdword::@1#1] -- register_copy - jmp b1 - // print_sdword::@1 - b1: - // [100] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 -- vduz1=vduz2 - lda dw - sta print_dword.dw - lda dw+1 - sta print_dword.dw+1 - lda dw+2 - sta print_dword.dw+2 - lda dw+3 - sta print_dword.dw+3 - // [101] call print_dword - // [103] phi from print_sdword::@1 to print_dword [phi:print_sdword::@1->print_dword] - print_dword_from_b1: - // [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#137 [phi:print_sdword::@1->print_dword#0] -- register_copy - // [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#0 [phi:print_sdword::@1->print_dword#1] -- register_copy - jsr print_dword - jmp breturn - // print_sdword::@return - breturn: - // [102] return - rts -} - // print_dword -// Print a dword as HEX -// print_dword(dword zeropage($11) dw) -print_dword: { - .label dw = $11 - // [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 -- vwuz1=_hi_vduz2 - lda dw+2 - sta print_word.w - lda dw+3 - sta print_word.w+1 - // [105] call print_word - // [109] phi from print_dword to print_word [phi:print_dword->print_word] - print_word_from_print_dword: - // [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#136 [phi:print_dword->print_word#0] -- register_copy - // [109] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy - jsr print_word - jmp b1 - // print_dword::@1 - b1: - // [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 -- vwuz1=_lo_vduz2 - lda dw - sta print_word.w - lda dw+1 - sta print_word.w+1 - // [107] call print_word - // [109] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] - print_word_from_b1: - // [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#21 [phi:print_dword::@1->print_word#0] -- register_copy - // [109] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy - jsr print_word - jmp breturn - // print_dword::@return - breturn: - // [108] return - rts -} - // print_word -// Print a word as HEX -// print_word(word zeropage($15) w) -print_word: { - .label w = $15 - // [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 - lda w+1 - sta print_byte.b - // [111] call print_byte - // [115] phi from print_word to print_byte [phi:print_word->print_byte] - print_byte_from_print_word: - // [115] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy - // [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy - jsr print_byte - jmp b1 - // print_word::@1 - b1: - // [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 - lda w - sta print_byte.b - // [113] call print_byte - // [115] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - print_byte_from_b1: - // [115] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#21 [phi:print_word::@1->print_byte#0] -- register_copy - // [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy - jsr print_byte - jmp breturn - // print_word::@return - breturn: - // [114] return - rts -} - // print_byte -// Print a byte as HEX -// print_byte(byte zeropage($17) b) -print_byte: { - .label _0 = $90 - .label _2 = $91 - .label b = $17 - // [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuz1=vbuz2_ror_4 - lda b - lsr - lsr - lsr - lsr - sta _0 - // [117] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 - ldy _0 - lda print_hextab,y - sta print_char.ch - // [118] call print_char - // [123] phi from print_byte to print_char [phi:print_byte->print_char] - print_char_from_print_byte: - // [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#139 [phi:print_byte->print_char#0] -- register_copy - // [123] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy - jsr print_char - jmp b1 - // print_byte::@1 - b1: - // [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 - lda #$f - and b - sta _2 - // [120] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 - ldy _2 - lda print_hextab,y - sta print_char.ch - // [121] call print_char - // [123] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - print_char_from_b1: - // [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#21 [phi:print_byte::@1->print_char#0] -- register_copy - // [123] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy - jsr print_char - jmp breturn - // print_byte::@return - breturn: - // [122] return - rts + jmp b2_from_b4 } // print_char // Print a single char -// print_char(byte zeropage($18) ch) +// print_char(byte zeropage($11) ch) print_char: { - .label ch = $18 - // [124] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuz2 + .label ch = $11 + // [106] *((byte*) print_char_cursor#88) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - // [125] (byte*) print_char_cursor#21 ← ++ (byte*) print_char_cursor#86 -- pbuz1=_inc_pbuz1 + // [107] (byte*) print_char_cursor#22 ← ++ (byte*) print_char_cursor#88 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -5888,7 +5810,122 @@ print_char: { jmp breturn // print_char::@return breturn: - // [126] return + // [108] return + rts +} + // print_dword +// Print a dword as HEX +// print_dword(dword zeropage($12) dw) +print_dword: { + .label dw = $12 + // [110] (word) print_word::w#1 ← > (dword) print_dword::dw#4 -- vwuz1=_hi_vduz2 + lda dw+2 + sta print_word.w + lda dw+3 + sta print_word.w+1 + // [111] call print_word + // [115] phi from print_dword to print_word [phi:print_dword->print_word] + print_word_from_print_dword: + // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#138 [phi:print_dword->print_word#0] -- register_copy + // [115] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy + jsr print_word + jmp b1 + // print_dword::@1 + b1: + // [112] (word) print_word::w#2 ← < (dword) print_dword::dw#4 -- vwuz1=_lo_vduz2 + lda dw + sta print_word.w + lda dw+1 + sta print_word.w+1 + // [113] call print_word + // [115] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + print_word_from_b1: + // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#22 [phi:print_dword::@1->print_word#0] -- register_copy + // [115] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy + jsr print_word + jmp breturn + // print_dword::@return + breturn: + // [114] return + rts +} + // print_word +// Print a word as HEX +// print_word(word zeropage($16) w) +print_word: { + .label w = $16 + // [116] (byte) print_byte::b#0 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 + lda w+1 + sta print_byte.b + // [117] call print_byte + // [121] phi from print_word to print_byte [phi:print_word->print_byte] + print_byte_from_print_word: + // [121] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#137 [phi:print_word->print_byte#0] -- register_copy + // [121] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + jsr print_byte + jmp b1 + // print_word::@1 + b1: + // [118] (byte) print_byte::b#1 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 + lda w + sta print_byte.b + // [119] call print_byte + // [121] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + print_byte_from_b1: + // [121] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#22 [phi:print_word::@1->print_byte#0] -- register_copy + // [121] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + jsr print_byte + jmp breturn + // print_word::@return + breturn: + // [120] return + rts +} + // print_byte +// Print a byte as HEX +// print_byte(byte zeropage($1a) b) +print_byte: { + .label _0 = $90 + .label _2 = $91 + .label b = $1a + // [122] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuz1=vbuz2_ror_4 + lda b + lsr + lsr + lsr + lsr + sta _0 + // [123] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy _0 + lda print_hextab,y + sta print_char.ch + // [124] call print_char + // [105] phi from print_byte to print_char [phi:print_byte->print_char] + print_char_from_print_byte: + // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#142 [phi:print_byte->print_char#0] -- register_copy + // [105] phi (byte) print_char::ch#6 = (byte) print_char::ch#4 [phi:print_byte->print_char#1] -- register_copy + jsr print_char + jmp b1 + // print_byte::@1 + b1: + // [125] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuz1=vbuz2_band_vbuc1 + lda #$f + and b + sta _2 + // [126] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy _2 + lda print_hextab,y + sta print_char.ch + // [127] call print_char + // [105] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + print_char_from_b1: + // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#22 [phi:print_byte::@1->print_char#0] -- register_copy + // [105] phi (byte) print_char::ch#6 = (byte) print_char::ch#5 [phi:print_byte::@1->print_char#1] -- register_copy + jsr print_char + jmp breturn + // print_byte::@return + breturn: + // [128] return rts } // print_sword @@ -5896,62 +5933,62 @@ print_char: { // print_sword(signed word zeropage($1b) w) print_sword: { .label w = $1b - // [128] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 + // [130] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 bmi b1_from_print_sword - // [129] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + // [131] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] b3_from_print_sword: jmp b3 // print_sword::@3 b3: - // [130] call print_char - // [123] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + // [132] call print_char + // [105] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] print_char_from_b3: - // [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#130 [phi:print_sword::@3->print_char#0] -- register_copy - // [123] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuz1=vbuc1 + // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sword::@3->print_char#0] -- register_copy + // [105] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - // [131] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + // [133] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] b2_from_b3: b2_from_b4: - // [131] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + // [133] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy jmp b2 // print_sword::@2 b2: - // [132] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 -- vwuz1=vwuz2 + // [134] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 -- vwuz1=vwuz2 lda w sta print_word.w lda w+1 sta print_word.w+1 - // [133] call print_word - // [109] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + // [135] call print_word + // [115] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] print_word_from_b2: - // [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#21 [phi:print_sword::@2->print_word#0] -- register_copy - // [109] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#22 [phi:print_sword::@2->print_word#0] -- register_copy + // [115] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy jsr print_word jmp breturn // print_sword::@return breturn: - // [134] return + // [136] return rts - // [135] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + // [137] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] b1_from_print_sword: jmp b1 // print_sword::@1 b1: - // [136] call print_char - // [123] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + // [138] call print_char + // [105] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] print_char_from_b1: - // [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_char#0] -- register_copy - // [123] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuz1=vbuc1 + // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sword::@1->print_char#0] -- register_copy + // [105] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b4 // print_sword::@4 b4: - // [137] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 + // [139] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -5975,23 +6012,23 @@ mulf16s: { .label a = $74 .label b = $76 .label return_2 = $78 - // [138] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 + // [140] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 lda a sta mulf16u.a lda a+1 sta mulf16u.a+1 - // [139] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 + // [141] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 lda b sta mulf16u.b lda b+1 sta mulf16u.b+1 - // [140] call mulf16u - // [155] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] + // [142] call mulf16u + // [157] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] mulf16u_from_mulf16s: - // [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#0 [phi:mulf16s->mulf16u#0] -- register_copy - // [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#0 [phi:mulf16s->mulf16u#1] -- register_copy + // [157] phi (word) mulf16u::b#2 = (word) mulf16u::b#0 [phi:mulf16s->mulf16u#0] -- register_copy + // [157] phi (word) mulf16u::a#2 = (word) mulf16u::a#0 [phi:mulf16s->mulf16u#1] -- register_copy jsr mulf16u - // [141] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 -- vduz1=vduz2 + // [143] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 -- vduz1=vduz2 lda mulf16u.return sta mulf16u.return_2 lda mulf16u.return+1 @@ -6003,7 +6040,7 @@ mulf16s: { jmp b5 // mulf16s::@5 b5: - // [142] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 -- vduz1=vduz2 + // [144] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 -- vduz1=vduz2 lda mulf16u.return_2 sta m lda mulf16u.return_2+1 @@ -6012,18 +6049,18 @@ mulf16s: { sta m+2 lda mulf16u.return_2+3 sta m+3 - // [143] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 + // [145] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1_from_b5 jmp b3 // mulf16s::@3 b3: - // [144] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + // [146] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _9 lda m+3 sta _9+1 - // [145] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 + // [147] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 lda _9 sec sbc b @@ -6031,30 +6068,30 @@ mulf16s: { lda _9+1 sbc b+1 sta _16+1 - // [146] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 + // [148] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - // [147] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1] + // [149] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1] b1_from_b3: b1_from_b5: - // [147] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy + // [149] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy jmp b1 // mulf16s::@1 b1: - // [148] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 + // [150] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2_from_b1 jmp b4 // mulf16s::@4 b4: - // [149] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + // [151] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _13 lda m+3 sta _13+1 - // [150] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 + // [152] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 lda _13 sec sbc a @@ -6062,19 +6099,19 @@ mulf16s: { lda _13+1 sbc a+1 sta _17+1 - // [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 + // [153] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - // [152] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] + // [154] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] b2_from_b1: b2_from_b4: - // [152] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy + // [154] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy jmp b2 // mulf16s::@2 b2: - // [153] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 -- vdsz1=vdsz2 + // [155] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 -- vdsz1=vdsz2 lda m sta return lda m+1 @@ -6086,7 +6123,7 @@ mulf16s: { jmp breturn // mulf16s::@return breturn: - // [154] return + // [156] return rts } // mulf16u @@ -6102,12 +6139,12 @@ mulf16u: { .label b = $23 .label return_2 = $92 .label return_3 = $cb - // [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 + // [158] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 lda a sta memA lda a+1 sta memA+1 - // [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 + // [159] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 lda b sta memB lda b+1 @@ -6205,7 +6242,7 @@ mulf16u: { bcc !+ inc memR+3 !: - // [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 + // [161] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 lda memR sta return lda memR+1 @@ -6217,7 +6254,7 @@ mulf16u: { jmp breturn // mulf16u::@return breturn: - // [160] return + // [162] return rts } // mul16s @@ -6234,21 +6271,21 @@ mul16s: { .label a = $68 .label b = $6a .label return_2 = $6c - // [161] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + // [163] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - // [162] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 + // [164] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 lda b sta mul16u.b lda b+1 sta mul16u.b+1 - // [163] call mul16u - // [178] phi from mul16s to mul16u [phi:mul16s->mul16u] + // [165] call mul16u + // [180] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - // [178] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy - // [178] phi (dword) mul16u::mb#0 = (word) mul16u::b#0 [phi:mul16s->mul16u#1] -- vduz1=vwuz2 + // [180] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy + // [180] phi (dword) mul16u::mb#0 = (word) mul16u::b#0 [phi:mul16s->mul16u#1] -- vduz1=vwuz2 lda mul16u.b sta mul16u.mb lda mul16u.b+1 @@ -6257,7 +6294,7 @@ mul16s: { sta mul16u.mb+2 sta mul16u.mb+3 jsr mul16u - // [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 + // [166] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return lda mul16u.res+1 @@ -6269,7 +6306,7 @@ mul16s: { jmp b5 // mul16s::@5 b5: - // [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 + // [167] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 lda mul16u.return sta m lda mul16u.return+1 @@ -6278,18 +6315,18 @@ mul16s: { sta m+2 lda mul16u.return+3 sta m+3 - // [166] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + // [168] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1_from_b5 jmp b3 // mul16s::@3 b3: - // [167] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + // [169] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _9 lda m+3 sta _9+1 - // [168] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 + // [170] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 lda _9 sec sbc b @@ -6297,30 +6334,30 @@ mul16s: { lda _9+1 sbc b+1 sta _16+1 - // [169] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + // [171] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - // [170] phi from mul16s::@3 mul16s::@5 to mul16s::@1 [phi:mul16s::@3/mul16s::@5->mul16s::@1] + // [172] phi from mul16s::@3 mul16s::@5 to mul16s::@1 [phi:mul16s::@3/mul16s::@5->mul16s::@1] b1_from_b3: b1_from_b5: - // [170] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@5->mul16s::@1#0] -- register_copy + // [172] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@5->mul16s::@1#0] -- register_copy jmp b1 // mul16s::@1 b1: - // [171] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 + // [173] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2_from_b1 jmp b4 // mul16s::@4 b4: - // [172] (word~) mul16s::$13 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 + // [174] (word~) mul16s::$13 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _13 lda m+3 sta _13+1 - // [173] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 + // [175] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 lda _13 sec sbc a @@ -6328,19 +6365,19 @@ mul16s: { lda _13+1 sbc a+1 sta _17+1 - // [174] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 + // [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - // [175] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] + // [177] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] b2_from_b1: b2_from_b4: - // [175] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy + // [177] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy jmp b2 // mul16s::@2 b2: - // [176] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 -- vdsz1=vdsz2 + // [178] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 -- vdsz1=vdsz2 lda m sta return lda m+1 @@ -6352,7 +6389,7 @@ mul16s: { jmp breturn // mul16s::@return breturn: - // [177] return + // [179] return rts } // mul16u @@ -6367,21 +6404,21 @@ mul16u: { .label return = $a6 .label b_1 = $2b .label return_3 = $c3 - // [179] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + // [181] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - // [179] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - // [179] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + // [181] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + // [181] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res lda #0 sta res+1 sta res+2 sta res+3 - // [179] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + // [181] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 // mul16u::@1 b1: - // [180] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + // [182] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 @@ -6389,22 +6426,22 @@ mul16u: { jmp breturn // mul16u::@return breturn: - // [181] return + // [183] return rts // mul16u::@2 b2: - // [182] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuz1=vwuz2_band_vbuc1 + // [184] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuz1=vwuz2_band_vbuc1 lda a and #1 sta _1 - // [183] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuz1_eq_0_then_la1 + // [185] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b3_from_b2 jmp b4 // mul16u::@4 b4: - // [184] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + // [186] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -6418,26 +6455,26 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - // [185] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + // [187] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] b3_from_b2: b3_from_b4: - // [185] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + // [187] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy jmp b3 // mul16u::@3 b3: - // [186] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + // [188] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr a+1 ror a - // [187] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 + // [189] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - // [179] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + // [181] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] b1_from_b3: - // [179] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - // [179] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - // [179] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + // [181] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + // [181] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + // [181] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp b1 } // muls16s @@ -6452,27 +6489,27 @@ muls16s: { .label a = $5c .label b = $5e .label return_2 = $60 - // [188] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 -- vwsz1_lt_0_then_la1 + // [190] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 -- vwsz1_lt_0_then_la1 lda a+1 bmi b4_from_muls16s jmp b2 // muls16s::@2 b2: - // [189] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 -- vwsz1_le_0_then_la1 + // [191] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 -- vwsz1_le_0_then_la1 lda a+1 bmi b1_from_b2 bne !+ lda a beq b1_from_b2 !: - // [190] phi from muls16s::@2 to muls16s::@3 [phi:muls16s::@2->muls16s::@3] + // [192] phi from muls16s::@2 to muls16s::@3 [phi:muls16s::@2->muls16s::@3] b3_from_b2: - // [190] phi (signed word) muls16s::j#2 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#0] -- vwsz1=vbsc1 + // [192] phi (signed word) muls16s::j#2 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#0] -- vwsz1=vbsc1 lda #<0 sta j lda #>0 sta j+1 - // [190] phi (signed dword) muls16s::m#3 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#1] -- vdsz1=vbsc1 + // [192] phi (signed dword) muls16s::m#3 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#1] -- vdsz1=vbsc1 lda #0 sta m lda #0 @@ -6480,14 +6517,14 @@ muls16s: { sta m+2 sta m+3 jmp b3 - // [190] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] + // [192] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] b3_from_b3: - // [190] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy - // [190] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy + // [192] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy + // [192] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy jmp b3 // muls16s::@3 b3: - // [191] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 + // [193] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -6507,26 +6544,26 @@ muls16s: { lda m+3 adc $ff sta m+3 - // [192] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 + // [194] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 inc j bne !+ inc j+1 !: - // [193] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 + // [195] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 lda j+1 cmp a+1 bne b3_from_b3 lda j cmp a bne b3_from_b3 - // [194] phi from muls16s::@3 muls16s::@4 to muls16s::@1 [phi:muls16s::@3/muls16s::@4->muls16s::@1] + // [196] phi from muls16s::@3 muls16s::@4 to muls16s::@1 [phi:muls16s::@3/muls16s::@4->muls16s::@1] b1_from_b3: b1_from_b4: - // [194] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@4->muls16s::@1#0] -- register_copy + // [196] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@4->muls16s::@1#0] -- register_copy jmp b1 - // [194] phi from muls16s::@2 to muls16s::@1 [phi:muls16s::@2->muls16s::@1] + // [196] phi from muls16s::@2 to muls16s::@1 [phi:muls16s::@2->muls16s::@1] b1_from_b2: - // [194] phi (signed dword) muls16s::return#0 = (signed byte) 0 [phi:muls16s::@2->muls16s::@1#0] -- vdsz1=vbsc1 + // [196] phi (signed dword) muls16s::return#0 = (signed byte) 0 [phi:muls16s::@2->muls16s::@1#0] -- vdsz1=vbsc1 lda #0 sta return lda #0 @@ -6539,16 +6576,16 @@ muls16s: { jmp breturn // muls16s::@return breturn: - // [195] return + // [197] return rts - // [196] phi from muls16s to muls16s::@4 [phi:muls16s->muls16s::@4] + // [198] phi from muls16s to muls16s::@4 [phi:muls16s->muls16s::@4] b4_from_muls16s: - // [196] phi (signed word) muls16s::i#2 = (signed byte) 0 [phi:muls16s->muls16s::@4#0] -- vwsz1=vbsc1 + // [198] phi (signed word) muls16s::i#2 = (signed byte) 0 [phi:muls16s->muls16s::@4#0] -- vwsz1=vbsc1 lda #<0 sta i lda #>0 sta i+1 - // [196] phi (signed dword) muls16s::m#5 = (signed byte) 0 [phi:muls16s->muls16s::@4#1] -- vdsz1=vbsc1 + // [198] phi (signed dword) muls16s::m#5 = (signed byte) 0 [phi:muls16s->muls16s::@4#1] -- vdsz1=vbsc1 lda #0 sta m lda #0 @@ -6556,14 +6593,14 @@ muls16s: { sta m+2 sta m+3 jmp b4 - // [196] phi from muls16s::@4 to muls16s::@4 [phi:muls16s::@4->muls16s::@4] + // [198] phi from muls16s::@4 to muls16s::@4 [phi:muls16s::@4->muls16s::@4] b4_from_b4: - // [196] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@4->muls16s::@4#0] -- register_copy - // [196] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@4->muls16s::@4#1] -- register_copy + // [198] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@4->muls16s::@4#0] -- register_copy + // [198] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@4->muls16s::@4#1] -- register_copy jmp b4 // muls16s::@4 b4: - // [197] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 + // [199] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -6583,13 +6620,13 @@ muls16s: { lda m+3 sbc $ff sta m+3 - // [198] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 + // [200] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 lda i bne !+ dec i+1 !: dec i - // [199] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 -- vwsz1_neq_vwsz2_then_la1 + // [201] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 -- vwsz1_neq_vwsz2_then_la1 lda i+1 cmp a+1 bne b4_from_b4 @@ -6609,63 +6646,63 @@ mul16u_compare: { .label j = $44 .label i = $3f .label ok = $45 - // [201] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] + // [203] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] b1_from_mul16u_compare: - // [201] phi (byte) mul16u_compare::i#12 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 + // [203] phi (byte) mul16u_compare::i#12 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta i - // [201] phi (word) mul16u_compare::b#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 + // [203] phi (word) mul16u_compare::b#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 lda #<0 sta b lda #>0 sta b+1 - // [201] phi (word) mul16u_compare::a#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 + // [203] phi (word) mul16u_compare::a#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 lda #<0 sta a lda #>0 sta a+1 - // [201] phi (byte*) print_char_cursor#142 = (byte*) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 + // [203] phi (byte*) print_char_cursor#145 = (byte*) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 jmp b1 - // [201] phi from mul16u_compare::@8 to mul16u_compare::@1 [phi:mul16u_compare::@8->mul16u_compare::@1] + // [203] phi from mul16u_compare::@8 to mul16u_compare::@1 [phi:mul16u_compare::@8->mul16u_compare::@1] b1_from_b8: - // [201] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@8->mul16u_compare::@1#0] -- register_copy - // [201] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@8->mul16u_compare::@1#1] -- register_copy - // [201] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@8->mul16u_compare::@1#2] -- register_copy - // [201] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#130 [phi:mul16u_compare::@8->mul16u_compare::@1#3] -- register_copy + // [203] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@8->mul16u_compare::@1#0] -- register_copy + // [203] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@8->mul16u_compare::@1#1] -- register_copy + // [203] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@8->mul16u_compare::@1#2] -- register_copy + // [203] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#132 [phi:mul16u_compare::@8->mul16u_compare::@1#3] -- register_copy jmp b1 // mul16u_compare::@1 b1: - // [202] call print_str + // [204] call print_str // [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] print_str_from_b1: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#142 [phi:mul16u_compare::@1->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#145 [phi:mul16u_compare::@1->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - // [203] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] + // [205] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] b2_from_b1: - // [203] phi (byte) mul16u_compare::j#10 = (byte) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuz1=vbuc1 + // [205] phi (byte) mul16u_compare::j#10 = (byte) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuz1=vbuc1 lda #0 sta j - // [203] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy - // [203] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy + // [205] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy + // [205] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy jmp b2 - // [203] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] + // [205] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] b2_from_b5: - // [203] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy - // [203] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy - // [203] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy + // [205] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy + // [205] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy + // [205] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy jmp b2 // mul16u_compare::@2 b2: - // [204] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b -- vwuz1=vwuz1_plus_vwuc1 + // [206] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b -- vwuz1=vwuz1_plus_vwuc1 clc lda a adc #<$d2b @@ -6673,7 +6710,7 @@ mul16u_compare: { lda a+1 adc #>$d2b sta a+1 - // [205] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd -- vwuz1=vwuz1_plus_vwuc1 + // [207] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd -- vwuz1=vwuz1_plus_vwuc1 clc lda b adc #<$ffd @@ -6681,19 +6718,19 @@ mul16u_compare: { lda b+1 adc #>$ffd sta b+1 - // [206] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + // [208] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta muls16u.a lda a+1 sta muls16u.a+1 - // [207] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + // [209] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 lda b sta muls16u.b lda b+1 sta muls16u.b+1 - // [208] call muls16u + // [210] call muls16u jsr muls16u - // [209] (dword) muls16u::return#2 ← (dword) muls16u::return#0 -- vduz1=vduz2 + // [211] (dword) muls16u::return#2 ← (dword) muls16u::return#0 -- vduz1=vduz2 lda muls16u.return sta muls16u.return_2 lda muls16u.return+1 @@ -6705,7 +6742,7 @@ mul16u_compare: { jmp b10 // mul16u_compare::@10 b10: - // [210] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 -- vduz1=vduz2 + // [212] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 -- vduz1=vduz2 lda muls16u.return_2 sta ms lda muls16u.return_2+1 @@ -6714,21 +6751,21 @@ mul16u_compare: { sta ms+2 lda muls16u.return_2+3 sta ms+3 - // [211] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + // [213] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - // [212] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + // [214] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 lda b sta mul16u.b_1 lda b+1 sta mul16u.b_1+1 - // [213] call mul16u - // [178] phi from mul16u_compare::@10 to mul16u [phi:mul16u_compare::@10->mul16u] + // [215] call mul16u + // [180] phi from mul16u_compare::@10 to mul16u [phi:mul16u_compare::@10->mul16u] mul16u_from_b10: - // [178] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@10->mul16u#0] -- register_copy - // [178] phi (dword) mul16u::mb#0 = (word) mul16u::b#1 [phi:mul16u_compare::@10->mul16u#1] -- vduz1=vwuz2 + // [180] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@10->mul16u#0] -- register_copy + // [180] phi (dword) mul16u::mb#0 = (word) mul16u::b#1 [phi:mul16u_compare::@10->mul16u#1] -- vduz1=vwuz2 lda mul16u.b_1 sta mul16u.mb lda mul16u.b_1+1 @@ -6737,7 +6774,7 @@ mul16u_compare: { sta mul16u.mb+2 sta mul16u.mb+3 jsr mul16u - // [214] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 + // [216] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return_3 lda mul16u.res+1 @@ -6749,7 +6786,7 @@ mul16u_compare: { jmp b11 // mul16u_compare::@11 b11: - // [215] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 -- vduz1=vduz2 + // [217] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 -- vduz1=vduz2 lda mul16u.return_3 sta mn lda mul16u.return_3+1 @@ -6758,23 +6795,23 @@ mul16u_compare: { sta mn+2 lda mul16u.return_3+3 sta mn+3 - // [216] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + // [218] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mulf16u.a lda a+1 sta mulf16u.a+1 - // [217] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + // [219] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 lda b sta mulf16u.b lda b+1 sta mulf16u.b+1 - // [218] call mulf16u - // [155] phi from mul16u_compare::@11 to mulf16u [phi:mul16u_compare::@11->mulf16u] + // [220] call mulf16u + // [157] phi from mul16u_compare::@11 to mulf16u [phi:mul16u_compare::@11->mulf16u] mulf16u_from_b11: - // [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@11->mulf16u#0] -- register_copy - // [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@11->mulf16u#1] -- register_copy + // [157] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@11->mulf16u#0] -- register_copy + // [157] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@11->mulf16u#1] -- register_copy jsr mulf16u - // [219] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 -- vduz1=vduz2 + // [221] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 -- vduz1=vduz2 lda mulf16u.return sta mulf16u.return_3 lda mulf16u.return+1 @@ -6786,7 +6823,7 @@ mul16u_compare: { jmp b12 // mul16u_compare::@12 b12: - // [220] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 -- vduz1=vduz2 + // [222] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 -- vduz1=vduz2 lda mulf16u.return_3 sta mf lda mulf16u.return_3+1 @@ -6795,7 +6832,7 @@ mul16u_compare: { sta mf+2 lda mulf16u.return_3+3 sta mf+3 - // [221] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 + // [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 lda ms cmp mf bne !+ @@ -6809,26 +6846,26 @@ mul16u_compare: { cmp mf+3 beq b3_from_b12 !: - // [222] phi from mul16u_compare::@12 to mul16u_compare::@6 [phi:mul16u_compare::@12->mul16u_compare::@6] + // [224] phi from mul16u_compare::@12 to mul16u_compare::@6 [phi:mul16u_compare::@12->mul16u_compare::@6] b6_from_b12: jmp b6 // mul16u_compare::@6 b6: - // [223] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] + // [225] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] b3_from_b6: - // [223] phi (byte) mul16u_compare::ok#4 = (byte) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuz1=vbuc1 + // [225] phi (byte) mul16u_compare::ok#4 = (byte) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuz1=vbuc1 lda #0 sta ok jmp b3 - // [223] phi from mul16u_compare::@12 to mul16u_compare::@3 [phi:mul16u_compare::@12->mul16u_compare::@3] + // [225] phi from mul16u_compare::@12 to mul16u_compare::@3 [phi:mul16u_compare::@12->mul16u_compare::@3] b3_from_b12: - // [223] phi (byte) mul16u_compare::ok#4 = (byte) 1 [phi:mul16u_compare::@12->mul16u_compare::@3#0] -- vbuz1=vbuc1 + // [225] phi (byte) mul16u_compare::ok#4 = (byte) 1 [phi:mul16u_compare::@12->mul16u_compare::@3#0] -- vbuz1=vbuc1 lda #1 sta ok jmp b3 // mul16u_compare::@3 b3: - // [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 -- vduz1_eq_vduz2_then_la1 + // [226] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 -- vduz1_eq_vduz2_then_la1 lda ms cmp mn bne !+ @@ -6842,44 +6879,44 @@ mul16u_compare: { cmp mn+3 beq b15_from_b3 !: - // [226] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] + // [228] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] b4_from_b3: - // [226] phi (byte) mul16u_compare::ok#3 = (byte) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuz1=vbuc1 + // [228] phi (byte) mul16u_compare::ok#3 = (byte) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuz1=vbuc1 lda #0 sta ok jmp b4 - // [225] phi from mul16u_compare::@3 to mul16u_compare::@15 [phi:mul16u_compare::@3->mul16u_compare::@15] + // [227] phi from mul16u_compare::@3 to mul16u_compare::@15 [phi:mul16u_compare::@3->mul16u_compare::@15] b15_from_b3: jmp b15 // mul16u_compare::@15 b15: - // [226] phi from mul16u_compare::@15 to mul16u_compare::@4 [phi:mul16u_compare::@15->mul16u_compare::@4] + // [228] phi from mul16u_compare::@15 to mul16u_compare::@4 [phi:mul16u_compare::@15->mul16u_compare::@4] b4_from_b15: - // [226] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@15->mul16u_compare::@4#0] -- register_copy + // [228] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@15->mul16u_compare::@4#0] -- register_copy jmp b4 // mul16u_compare::@4 b4: - // [227] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 -- vbuz1_neq_0_then_la1 + // [229] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 -- vbuz1_neq_0_then_la1 lda ok cmp #0 bne b5 jmp b7 // mul16u_compare::@7 b7: - // [228] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 + // [230] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - // [229] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + // [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u_error.a lda a+1 sta mul16u_error.a+1 - // [230] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + // [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 lda b sta mul16u_error.b lda b+1 sta mul16u_error.b+1 - // [231] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 -- vduz1=vduz2 + // [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 -- vduz1=vduz2 lda ms sta mul16u_error.ms lda ms+1 @@ -6888,7 +6925,7 @@ mul16u_compare: { sta mul16u_error.ms+2 lda ms+3 sta mul16u_error.ms+3 - // [232] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 -- vduz1=vduz2 + // [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 -- vduz1=vduz2 lda mn sta mul16u_error.mn lda mn+1 @@ -6897,7 +6934,7 @@ mul16u_compare: { sta mul16u_error.mn+2 lda mn+3 sta mul16u_error.mn+3 - // [233] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 -- vduz1=vduz2 + // [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 -- vduz1=vduz2 lda mf sta mul16u_error.mf lda mf+1 @@ -6906,41 +6943,41 @@ mul16u_compare: { sta mul16u_error.mf+2 lda mf+3 sta mul16u_error.mf+3 - // [234] call mul16u_error - // [246] phi from mul16u_compare::@7 to mul16u_error [phi:mul16u_compare::@7->mul16u_error] + // [236] call mul16u_error + // [248] phi from mul16u_compare::@7 to mul16u_error [phi:mul16u_compare::@7->mul16u_error] mul16u_error_from_b7: jsr mul16u_error jmp breturn // mul16u_compare::@return breturn: - // [235] return + // [237] return rts // mul16u_compare::@5 b5: - // [236] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuz1=_inc_vbuz1 + // [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuz1=_inc_vbuz1 inc j - // [237] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 -- vbuz1_neq_vbuc1_then_la1 + // [239] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 -- vbuz1_neq_vbuc1_then_la1 lda #$10 cmp j bne b2_from_b5 jmp b8 // mul16u_compare::@8 b8: - // [238] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 + // [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 inc i - // [239] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 + // [241] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$10 cmp i bne b1_from_b8 - // [240] phi from mul16u_compare::@8 to mul16u_compare::@9 [phi:mul16u_compare::@8->mul16u_compare::@9] + // [242] phi from mul16u_compare::@8 to mul16u_compare::@9 [phi:mul16u_compare::@8->mul16u_compare::@9] b9_from_b8: jmp b9 // mul16u_compare::@9 b9: - // [241] call print_ln + // [243] call print_ln // [59] phi from mul16u_compare::@9 to print_ln [phi:mul16u_compare::@9->print_ln] print_ln_from_b9: - // [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16u_compare::@9->print_ln#0] -- register_copy + // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16u_compare::@9->print_ln#0] -- register_copy // [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_compare::@9->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor @@ -6950,30 +6987,30 @@ mul16u_compare: { jmp b13 // mul16u_compare::@13 b13: - // [242] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [244] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - // [243] call print_str + // [245] call print_str // [64] phi from mul16u_compare::@13 to print_str [phi:mul16u_compare::@13->print_str] print_str_from_b13: - // [64] phi (byte*) print_char_cursor#151 = (byte*~) print_char_cursor#187 [phi:mul16u_compare::@13->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*~) print_char_cursor#190 [phi:mul16u_compare::@13->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@13->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - // [244] phi from mul16u_compare::@13 to mul16u_compare::@14 [phi:mul16u_compare::@13->mul16u_compare::@14] + // [246] phi from mul16u_compare::@13 to mul16u_compare::@14 [phi:mul16u_compare::@13->mul16u_compare::@14] b14_from_b13: jmp b14 // mul16u_compare::@14 b14: - // [245] call print_ln + // [247] call print_ln // [59] phi from mul16u_compare::@14 to print_ln [phi:mul16u_compare::@14->print_ln] print_ln_from_b14: - // [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16u_compare::@14->print_ln#0] -- register_copy + // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16u_compare::@14->print_ln#0] -- register_copy // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@14->print_ln#1] -- register_copy jsr print_ln jmp breturn @@ -6987,10 +7024,10 @@ mul16u_error: { .label ms = $d7 .label mn = $db .label mf = $df - // [247] call print_str + // [249] call print_str // [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] print_str_from_mul16u_error: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#130 [phi:mul16u_error->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#132 [phi:mul16u_error->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 lda #print_word] + // [251] call print_word + // [115] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] print_word_from_b1: - // [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:mul16u_error::@1->print_word#0] -- register_copy - // [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy + // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#132 [phi:mul16u_error::@1->print_word#0] -- register_copy + // [115] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy jsr print_word - // [250] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] + // [252] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] b2_from_b1: jmp b2 // mul16u_error::@2 b2: - // [251] call print_str + // [253] call print_str // [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] print_str_from_b2: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@2->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@2->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #print_word] + // [255] call print_word + // [115] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] print_word_from_b3: - // [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:mul16u_error::@3->print_word#0] -- register_copy - // [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy + // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#132 [phi:mul16u_error::@3->print_word#0] -- register_copy + // [115] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy jsr print_word - // [254] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] + // [256] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] b4_from_b3: jmp b4 // mul16u_error::@4 b4: - // [255] call print_str + // [257] call print_str // [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] print_str_from_b4: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@4->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@4->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #print_dword] + // [259] call print_dword + // [109] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] print_dword_from_b5: - // [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#130 [phi:mul16u_error::@5->print_dword#0] -- register_copy - // [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy + // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#132 [phi:mul16u_error::@5->print_dword#0] -- register_copy + // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy jsr print_dword - // [258] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] + // [260] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] b6_from_b5: jmp b6 // mul16u_error::@6 b6: - // [259] call print_str + // [261] call print_str // [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] print_str_from_b6: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@6->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@6->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #print_dword] + // [263] call print_dword + // [109] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] print_dword_from_b7: - // [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#130 [phi:mul16u_error::@7->print_dword#0] -- register_copy - // [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy + // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#132 [phi:mul16u_error::@7->print_dword#0] -- register_copy + // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy jsr print_dword - // [262] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] + // [264] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] b8_from_b7: jmp b8 // mul16u_error::@8 b8: - // [263] call print_str + // [265] call print_str // [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] print_str_from_b8: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@8->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@8->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #print_dword] + // [267] call print_dword + // [109] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] print_dword_from_b9: - // [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#130 [phi:mul16u_error::@9->print_dword#0] -- register_copy - // [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy + // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#132 [phi:mul16u_error::@9->print_dword#0] -- register_copy + // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy jsr print_dword - // [266] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] + // [268] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] b10_from_b9: jmp b10 // mul16u_error::@10 b10: - // [267] call print_ln + // [269] call print_ln // [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] print_ln_from_b10: - // [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#21 [phi:mul16u_error::@10->print_ln#0] -- register_copy + // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#22 [phi:mul16u_error::@10->print_ln#0] -- register_copy // [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor @@ -7157,7 +7194,7 @@ mul16u_error: { jmp breturn // mul16u_error::@return breturn: - // [268] return + // [270] return rts str: .text "multiply mismatch @" } @@ -7172,20 +7209,20 @@ muls16u: { .label a = $b7 .label b = $b9 .label return_2 = $bb - // [269] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 + // [271] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 lda a bne !+ lda a+1 beq b1_from_muls16u !: - // [270] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] + // [272] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] b2_from_muls16u: - // [270] phi (word) muls16u::i#2 = (byte) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 + // [272] phi (word) muls16u::i#2 = (byte) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - // [270] phi (dword) muls16u::m#3 = (byte) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 + // [272] phi (dword) muls16u::m#3 = (byte) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 lda #0 sta m lda #0 @@ -7193,14 +7230,14 @@ muls16u: { sta m+2 sta m+3 jmp b2 - // [270] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] + // [272] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] b2_from_b2: - // [270] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy - // [270] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy + // [272] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy + // [272] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy jmp b2 // muls16u::@2 b2: - // [271] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 + // [273] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 lda m clc adc b @@ -7214,25 +7251,25 @@ muls16u: { lda m+3 adc #0 sta m+3 - // [272] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 + // [274] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - // [273] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 + // [275] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 lda i+1 cmp a+1 bne b2_from_b2 lda i cmp a bne b2_from_b2 - // [274] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] + // [276] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] b1_from_b2: - // [274] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy + // [276] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy jmp b1 - // [274] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] + // [276] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] b1_from_muls16u: - // [274] phi (dword) muls16u::return#0 = (byte) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 + // [276] phi (dword) muls16u::return#0 = (byte) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 lda #0 sta return lda #0 @@ -7245,7 +7282,7 @@ muls16u: { jmp breturn // muls16u::@return breturn: - // [275] return + // [277] return rts } // mulf_init @@ -7263,88 +7300,88 @@ mulf_init: { .label x_255 = $54 .label sqr2_lo = $55 .label dir = $59 - // [277] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + // [279] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - // [277] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + // [279] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - // [277] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + // [279] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - // [277] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + // [279] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - // [277] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + // [279] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr lda #>0 sta sqr+1 - // [277] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 + // [279] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 lda #0 sta c jmp b1 - // [277] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + // [279] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - // [277] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - // [277] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - // [277] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - // [277] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - // [277] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + // [279] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + // [279] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + // [279] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + // [279] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + // [279] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 // mulf_init::@1 b1: - // [278] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 + // [280] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 inc c - // [279] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 + // [281] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and c sta _7 - // [280] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 + // [282] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 lda _7 cmp #0 bne b2_from_b1 jmp b3 // mulf_init::@3 b3: - // [281] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + // [283] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - // [282] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + // [284] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - // [283] phi from mulf_init::@1 mulf_init::@3 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2] + // [285] phi from mulf_init::@1 mulf_init::@3 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2] b2_from_b1: b2_from_b3: - // [283] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#0] -- register_copy - // [283] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#1] -- register_copy + // [285] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#0] -- register_copy + // [285] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#1] -- register_copy jmp b2 // mulf_init::@2 b2: - // [284] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 + // [286] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 lda sqr sta _10 - // [285] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 -- _deref_pbuz1=vbuz2 + // [287] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 -- _deref_pbuz1=vbuz2 lda _10 ldy #0 sta (sqr1_lo),y - // [286] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 + // [288] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 lda sqr+1 sta _11 - // [287] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 -- _deref_pbuz1=vbuz2 + // [289] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 -- _deref_pbuz1=vbuz2 lda _11 ldy #0 sta (sqr1_hi),y - // [288] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + // [290] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - // [289] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + // [291] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -7352,93 +7389,93 @@ mulf_init: { bcc !+ inc sqr+1 !: - // [290] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + // [292] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - // [291] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + // [293] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #mulf_init::@4] + // [294] phi from mulf_init::@2 to mulf_init::@4 [phi:mulf_init::@2->mulf_init::@4] b4_from_b2: - // [292] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@2->mulf_init::@4#0] -- vbuz1=vbuc1 + // [294] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@2->mulf_init::@4#0] -- vbuz1=vbuc1 lda #$ff sta dir - // [292] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@4#1] -- pbuz1=pbuc1 + // [294] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@4#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - // [292] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@4#2] -- pbuz1=pbuc1 + // [294] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@4#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - // [292] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@2->mulf_init::@4#3] -- vbuz1=vbuc1 + // [294] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@2->mulf_init::@4#3] -- vbuz1=vbuc1 lda #-1 sta x_255 jmp b4 - // [292] phi from mulf_init::@5 to mulf_init::@4 [phi:mulf_init::@5->mulf_init::@4] + // [294] phi from mulf_init::@5 to mulf_init::@4 [phi:mulf_init::@5->mulf_init::@4] b4_from_b5: - // [292] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@5->mulf_init::@4#0] -- register_copy - // [292] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@5->mulf_init::@4#1] -- register_copy - // [292] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@5->mulf_init::@4#2] -- register_copy - // [292] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@5->mulf_init::@4#3] -- register_copy + // [294] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@5->mulf_init::@4#0] -- register_copy + // [294] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@5->mulf_init::@4#1] -- register_copy + // [294] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@5->mulf_init::@4#2] -- register_copy + // [294] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@5->mulf_init::@4#3] -- register_copy jmp b4 // mulf_init::@4 b4: - // [293] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + // [295] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 lda mulf_sqr1_lo,y ldy #0 sta (sqr2_lo),y - // [294] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + // [296] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 lda mulf_sqr1_hi,y ldy #0 sta (sqr2_hi),y - // [295] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + // [297] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - // [296] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 + // [298] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 lda x_255 clc adc dir sta x_255 - // [297] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 -- vbuz1_neq_0_then_la1 + // [299] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 -- vbuz1_neq_0_then_la1 lda x_255 cmp #0 bne b7_from_b4 - // [299] phi from mulf_init::@4 to mulf_init::@5 [phi:mulf_init::@4->mulf_init::@5] + // [301] phi from mulf_init::@4 to mulf_init::@5 [phi:mulf_init::@4->mulf_init::@5] b5_from_b4: - // [299] phi (byte) mulf_init::dir#3 = (byte) 1 [phi:mulf_init::@4->mulf_init::@5#0] -- vbuz1=vbuc1 + // [301] phi (byte) mulf_init::dir#3 = (byte) 1 [phi:mulf_init::@4->mulf_init::@5#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b5 - // [298] phi from mulf_init::@4 to mulf_init::@7 [phi:mulf_init::@4->mulf_init::@7] + // [300] phi from mulf_init::@4 to mulf_init::@7 [phi:mulf_init::@4->mulf_init::@7] b7_from_b4: jmp b7 // mulf_init::@7 b7: - // [299] phi from mulf_init::@7 to mulf_init::@5 [phi:mulf_init::@7->mulf_init::@5] + // [301] phi from mulf_init::@7 to mulf_init::@5 [phi:mulf_init::@7->mulf_init::@5] b5_from_b7: - // [299] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@7->mulf_init::@5#0] -- register_copy + // [301] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@7->mulf_init::@5#0] -- register_copy jmp b5 // mulf_init::@5 b5: - // [300] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + // [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - // [301] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 -- pbuz1_neq_pbuc1_then_la1 + // [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b4_from_b5 @@ -7448,47 +7485,47 @@ mulf_init: { jmp b6 // mulf_init::@6 b6: - // [302] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) -- _deref_pbuc1=_deref_pbuc2 + // [304] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) -- _deref_pbuc1=_deref_pbuc2 // Set the very last value g(511) = f(256) lda mulf_sqr1_lo+$100 sta mulf_sqr2_lo+$1ff - // [303] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) -- _deref_pbuc1=_deref_pbuc2 + // [305] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) -- _deref_pbuc1=_deref_pbuc2 lda mulf_sqr1_hi+$100 sta mulf_sqr2_hi+$1ff jmp breturn // mulf_init::@return breturn: - // [304] return + // [306] return rts } // print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $5a - // [306] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + // [308] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - // [306] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + // [308] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - // [306] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + // [308] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - // [306] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + // [308] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 // print_cls::@1 b1: - // [307] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + // [309] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - // [308] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + // [310] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - // [309] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + // [311] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -7498,7 +7535,7 @@ print_cls: { jmp breturn // print_cls::@return breturn: - // [310] return + // [312] return rts } // File Data @@ -7524,295 +7561,295 @@ print_cls: { REGISTER UPLIFT POTENTIAL REGISTERS Statement [4] *((const byte*) BGCOL#0) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 [ print_char_cursor#220 print_line_cursor#1 ] ( main:2::mul16s_compare:11 [ print_char_cursor#220 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (signed word) $d2b [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ) always clobbers reg byte a +Statement [13] (byte*~) print_char_cursor#222 ← (byte*) print_line_cursor#1 [ print_char_cursor#222 print_line_cursor#1 ] ( main:2::mul16s_compare:11 [ print_char_cursor#222 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (signed word) $d2b [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ mul16s_compare::j#10 mul16s_compare::j#1 ] -Statement [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (signed word) $ffd [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] ) always clobbers reg byte a -Statement [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] ) always clobbers reg byte a -Statement [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] ) always clobbers reg byte a -Statement [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] ) always clobbers reg byte a -Statement [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] ) always clobbers reg byte a -Statement [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] ) always clobbers reg byte a -Statement [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] ) always clobbers reg byte a -Statement [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] ) always clobbers reg byte a -Statement [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] ) always clobbers reg byte a -Statement [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] ) always clobbers reg byte a -Statement [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] ) always clobbers reg byte a -Statement [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a -Statement [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a -Statement [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@15 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] ) always clobbers reg byte a +Statement [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (signed word) $ffd [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] ) always clobbers reg byte a +Statement [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] ) always clobbers reg byte a +Statement [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a +Statement [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] ) always clobbers reg byte a +Statement [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] ) always clobbers reg byte a +Statement [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] ) always clobbers reg byte a +Statement [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] ) always clobbers reg byte a +Statement [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] ) always clobbers reg byte a +Statement [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] ) always clobbers reg byte a +Statement [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] ) always clobbers reg byte a +Statement [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] ) always clobbers reg byte a +Statement [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] ) always clobbers reg byte a +Statement [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a +Statement [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a +Statement [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@15 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] -Statement [41] *((const byte*) BGCOL#0) ← (byte) 2 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a -Statement [42] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] ) always clobbers reg byte a -Statement [43] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] ) always clobbers reg byte a -Statement [44] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] ) always clobbers reg byte a -Statement [45] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ) always clobbers reg byte a -Statement [46] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ) always clobbers reg byte a -Statement [55] (byte*~) print_char_cursor#180 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#180 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#180 ] ) always clobbers reg byte a -Statement [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte) $28 [ print_line_cursor#1 print_char_cursor#131 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16u_compare:9::print_ln:241 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16u_compare:9::print_ln:245 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16u_compare:9::mul16u_error:234::print_ln:267 [ print_line_cursor#1 print_char_cursor#131 ] ) always clobbers reg byte a -Statement [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#131) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#131 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16u_compare:9::print_ln:241 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16u_compare:9::print_ln:245 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16u_compare:9::mul16u_error:234::print_ln:267 [ print_line_cursor#1 print_char_cursor#131 ] ) always clobbers reg byte a -Statement [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 [ print_char_cursor#130 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::print_str:202 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::print_str:243 [ print_line_cursor#1 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:247 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:251 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:255 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:259 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:263 [ mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] ) always clobbers reg byte a reg byte y +Statement [41] *((const byte*) BGCOL#0) ← (byte) 2 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a +Statement [42] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] ) always clobbers reg byte a +Statement [43] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] ) always clobbers reg byte a +Statement [44] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] ) always clobbers reg byte a +Statement [45] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ) always clobbers reg byte a +Statement [46] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ) always clobbers reg byte a +Statement [55] (byte*~) print_char_cursor#183 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#183 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#183 ] ) always clobbers reg byte a +Statement [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte) $28 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:247 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::mul16u_error:236::print_ln:269 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a +Statement [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:247 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::mul16u_error:236::print_ln:269 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a +Statement [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 [ print_char_cursor#132 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:204 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:245 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:249 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:253 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:257 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:261 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:265 [ mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:63 [ mul16u_compare::i#12 mul16u_compare::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:63 [ mul16u_compare::i#12 mul16u_compare::i#1 ] -Statement [68] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#15) [ print_char_cursor#130 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::print_str:202 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::print_str:243 [ print_line_cursor#1 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:247 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:251 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:255 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:259 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:263 [ mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] ) always clobbers reg byte a reg byte y -Statement [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ) always clobbers reg byte a -Statement [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ) always clobbers reg byte a -Statement [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ) always clobbers reg byte a -Statement [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::mf#0 print_sdword::dw#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::mf#0 print_sdword::dw#2 ] ) always clobbers reg byte a -Statement [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 [ print_line_cursor#1 print_char_cursor#130 print_sdword::dw#3 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 print_sdword::dw#3 ] ) always clobbers reg byte a -Statement [95] if((signed dword) print_sdword::dw#4>=(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#130 print_sdword::dw#4 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#130 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#130 print_sdword::dw#4 ] ) always clobbers reg byte a -Statement [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 [ print_char_cursor#21 print_sdword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#21 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#21 print_sdword::dw#0 ] ) always clobbers reg byte a -Statement [100] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 [ print_char_cursor#137 print_dword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#137 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#137 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#137 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265 [ print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] ) always clobbers reg byte a -Statement [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#21 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#21 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_char_cursor#21 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261 [ mul16u_error::mf#0 print_char_cursor#21 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265 [ print_char_cursor#21 print_word::w#2 ] ) always clobbers reg byte a -Statement [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#135 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105 [ print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107 [ print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] ) always clobbers reg byte a -Statement [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#21 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105 [ print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107 [ mul16u_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107 [ print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::b#1 ] ) always clobbers reg byte a -Statement [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#139 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:111 [ print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:113 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:113 [ print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#21 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:111 [ print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:113 [ print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:113 [ print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::$2 ] ) always clobbers reg byte a -Statement [124] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#5 [ print_char_cursor#86 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:111::print_char:118 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:111::print_char:118 [ print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:111::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:111::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:113::print_char:118 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:113::print_char:118 [ print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:113::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:113::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:111::print_char:121 [ print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:111::print_char:121 [ print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:111::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:111::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:113::print_char:121 [ print_dword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:113::print_char:121 [ print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:113::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:113::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:130 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:130 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:136 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:136 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#86 ] ) always clobbers reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [128] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#130 print_sword::w#3 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_sword::w#3 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_sword::w#3 ] ) always clobbers reg byte a -Statement [132] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#21 print_word::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_word::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_word::w#0 ] ) always clobbers reg byte a -Statement [137] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#21 print_sword::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_sword::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_sword::w#0 ] ) always clobbers reg byte a -Statement [138] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ) always clobbers reg byte a -Statement [139] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ) always clobbers reg byte a -Statement [141] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ) always clobbers reg byte a -Statement [142] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [143] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [144] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ) always clobbers reg byte a -Statement [145] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a -Statement [146] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a -Statement [148] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a -Statement [149] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ) always clobbers reg byte a -Statement [150] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a -Statement [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a -Statement [153] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a -Statement [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:140 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:218 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a +Statement [68] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#15) [ print_char_cursor#132 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:204 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:245 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:249 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:253 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:257 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:261 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:265 [ mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] ) always clobbers reg byte a reg byte y +Statement [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ) always clobbers reg byte a +Statement [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ) always clobbers reg byte a +Statement [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ) always clobbers reg byte a +Statement [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mf#0 print_sdword::dw#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mf#0 print_sdword::dw#2 ] ) always clobbers reg byte a +Statement [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 [ print_line_cursor#1 print_char_cursor#132 print_sdword::dw#3 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 print_sdword::dw#3 ] ) always clobbers reg byte a +Statement [95] if((signed dword) print_sdword::dw#4<(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#132 print_sdword::dw#4 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#132 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#132 print_sdword::dw#4 ] ) always clobbers reg byte a +Statement [99] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#6 [ print_char_cursor#22 print_dword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#22 print_dword::dw#0 ] ) always clobbers reg byte a +Statement [104] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 [ print_char_cursor#22 print_sdword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#22 print_sdword::dw#0 ] ) always clobbers reg byte a +Statement [106] *((byte*) print_char_cursor#88) ← (byte) print_char::ch#6 [ print_char_cursor#88 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_char:103 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_char:103 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_char:103 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117::print_char:124 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111::print_byte:117::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111::print_byte:117::print_char:124 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111::print_byte:117::print_char:124 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117::print_char:124 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113::print_byte:117::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113::print_byte:117::print_char:124 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113::print_byte:117::print_char:124 [ print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251::print_byte:117::print_char:124 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255::print_byte:117::print_char:124 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119::print_char:124 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111::print_byte:119::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111::print_byte:119::print_char:124 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111::print_byte:119::print_char:124 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119::print_char:124 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113::print_byte:119::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113::print_byte:119::print_char:124 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113::print_byte:119::print_char:124 [ print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251::print_byte:119::print_char:124 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255::print_byte:119::print_char:124 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117::print_char:127 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111::print_byte:117::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111::print_byte:117::print_char:127 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111::print_byte:117::print_char:127 [ print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117::print_char:127 [ print_line_cursor#1 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113::print_byte:117::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113::print_byte:117::print_char:127 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113::print_byte:117::print_char:127 [ print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251::print_byte:117::print_char:127 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255::print_byte:117::print_char:127 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119::print_char:127 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111::print_byte:119::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111::print_byte:119::print_char:127 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111::print_byte:119::print_char:127 [ print_dword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119::print_char:127 [ print_line_cursor#1 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113::print_byte:119::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113::print_byte:119::print_char:127 [ mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113::print_byte:119::print_char:127 [ print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251::print_byte:119::print_char:127 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255::print_byte:119::print_char:127 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:132 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:132 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:138 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:138 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] ) always clobbers reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:26 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Statement [110] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267 [ print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] ) always clobbers reg byte a +Statement [112] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#22 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100 [ print_line_cursor#1 print_char_cursor#22 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263 [ mul16u_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267 [ print_char_cursor#22 print_word::w#2 ] ) always clobbers reg byte a +Statement [116] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#137 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113 [ print_line_cursor#1 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113 [ print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] ) always clobbers reg byte a +Statement [118] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#22 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111 [ print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113 [ print_line_cursor#1 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113 [ mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113 [ print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] ) always clobbers reg byte a +Statement [122] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#142 print_byte::b#2 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111::print_byte:117 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111::print_byte:117 [ print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113::print_byte:117 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113::print_byte:117 [ print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251::print_byte:117 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255::print_byte:117 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111::print_byte:119 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111::print_byte:119 [ print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113::print_byte:119 [ mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113::print_byte:119 [ print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251::print_byte:119 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255::print_byte:119 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Statement [125] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#22 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111::print_byte:117 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111::print_byte:117 [ print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113::print_byte:117 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113::print_byte:117 [ print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251::print_byte:117 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255::print_byte:117 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111::print_byte:119 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111::print_byte:119 [ print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113::print_byte:119 [ mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113::print_byte:119 [ print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251::print_byte:119 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255::print_byte:119 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] ) always clobbers reg byte a +Statement [130] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#132 print_sword::w#3 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sword::w#3 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sword::w#3 ] ) always clobbers reg byte a +Statement [134] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#22 print_word::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#0 ] ) always clobbers reg byte a +Statement [139] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#22 print_sword::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sword::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sword::w#0 ] ) always clobbers reg byte a +Statement [140] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ) always clobbers reg byte a +Statement [141] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ) always clobbers reg byte a +Statement [143] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ) always clobbers reg byte a +Statement [144] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a +Statement [145] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a +Statement [146] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ) always clobbers reg byte a +Statement [147] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a +Statement [148] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a +Statement [150] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a +Statement [151] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ) always clobbers reg byte a +Statement [152] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a +Statement [153] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a +Statement [155] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a +Statement [158] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:220 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:68 [ mul16u_compare::j#10 mul16u_compare::j#1 ] -Statement [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:140 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:218 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [159] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:220 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a Statement asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:7 [ mul16s_compare::j#10 mul16s_compare::j#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:63 [ mul16u_compare::i#12 mul16u_compare::i#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:68 [ mul16u_compare::j#10 mul16u_compare::j#1 ] -Statement [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:140 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:218 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a -Statement [161] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ) always clobbers reg byte a -Statement [162] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a -Statement [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [166] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [167] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a -Statement [168] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [169] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a -Statement [171] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a -Statement [172] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$13 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$13 ] ) always clobbers reg byte a -Statement [173] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a -Statement [174] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a -Statement [176] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a -Statement [180] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:213 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [182] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:213 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [184] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:213 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [188] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [189] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [191] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a -Statement [193] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 [ muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ) always clobbers reg byte a -Statement [197] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ) always clobbers reg byte a -Statement [198] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a -Statement [199] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a -Statement [204] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [205] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [206] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a -Statement [207] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [209] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a -Statement [210] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [211] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#130 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [212] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#130 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [214] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a -Statement [215] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [216] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#130 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [217] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#130 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [219] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a -Statement [220] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [221] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a +Statement [161] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:220 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a +Statement [163] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ) always clobbers reg byte a +Statement [164] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a +Statement [166] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a +Statement [167] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [168] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [169] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a +Statement [170] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a +Statement [171] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a +Statement [173] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a +Statement [174] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$13 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$13 ] ) always clobbers reg byte a +Statement [175] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a +Statement [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a +Statement [178] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a +Statement [182] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:215 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [184] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:215 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [186] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:215 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [190] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a +Statement [191] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a +Statement [193] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a +Statement [195] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 [ muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ) always clobbers reg byte a +Statement [199] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ) always clobbers reg byte a +Statement [200] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a +Statement [201] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a +Statement [206] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a +Statement [207] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a +Statement [208] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a +Statement [209] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a +Statement [211] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a +Statement [212] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [213] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [214] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [216] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a +Statement [217] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [218] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [219] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [221] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a +Statement [222] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [226] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:69 [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] -Statement [228] *((const byte*) BGCOL#0) ← (byte) 2 [ print_char_cursor#130 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [229] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#130 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a -Statement [230] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#130 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a -Statement [231] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#130 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a -Statement [232] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#130 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a -Statement [233] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#130 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [239] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 [ print_char_cursor#130 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a -Statement [242] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#187 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#187 ] ) always clobbers reg byte a -Statement [248] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#130 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [252] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#130 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [256] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#130 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [260] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#130 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_dword::dw#2 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [264] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#130 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_dword::dw#3 ] ) always clobbers reg byte a -Statement [269] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:208 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [271] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ( main:2::mul16u_compare:9::muls16u:208 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a -Statement [273] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 [ muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ( main:2::mul16u_compare:9::muls16u:208 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ) always clobbers reg byte a -Statement [284] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ) always clobbers reg byte a +Statement [230] *((const byte*) BGCOL#0) ← (byte) 2 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a +Statement [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a +Statement [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#132 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a +Statement [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#132 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a +Statement [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#132 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [241] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a +Statement [244] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#190 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#190 ] ) always clobbers reg byte a +Statement [250] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#132 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#132 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [254] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#132 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#132 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [258] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#132 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#132 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [262] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#132 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#132 print_dword::dw#2 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [266] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#132 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#132 print_dword::dw#3 ] ) always clobbers reg byte a +Statement [271] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:210 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a +Statement [273] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ( main:2::mul16u_compare:9::muls16u:210 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a +Statement [275] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 [ muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ( main:2::mul16u_compare:9::muls16u:210 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ) always clobbers reg byte a +Statement [286] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:76 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:81 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [285] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [287] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:76 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:81 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [286] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ) always clobbers reg byte a -Statement [287] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [289] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [291] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [293] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [288] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ) always clobbers reg byte a +Statement [289] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [291] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [293] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [295] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:84 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:84 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:89 [ mulf_init::dir#2 mulf_init::dir#3 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:89 [ mulf_init::dir#2 mulf_init::dir#3 ] -Statement [294] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [296] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [301] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a -Statement [302] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [303] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [307] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [309] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [296] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [298] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [304] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [305] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [309] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [311] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Statement [4] *((const byte*) BGCOL#0) ← (byte) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [13] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 [ print_char_cursor#220 print_line_cursor#1 ] ( main:2::mul16s_compare:11 [ print_char_cursor#220 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (signed word) $d2b [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ) always clobbers reg byte a -Statement [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (signed word) $ffd [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] ) always clobbers reg byte a -Statement [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] ) always clobbers reg byte a -Statement [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] ) always clobbers reg byte a -Statement [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] ) always clobbers reg byte a -Statement [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] ) always clobbers reg byte a -Statement [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] ) always clobbers reg byte a -Statement [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] ) always clobbers reg byte a -Statement [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] ) always clobbers reg byte a -Statement [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] ) always clobbers reg byte a -Statement [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] ) always clobbers reg byte a -Statement [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] ) always clobbers reg byte a -Statement [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a -Statement [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a -Statement [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@15 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] ) always clobbers reg byte a -Statement [41] *((const byte*) BGCOL#0) ← (byte) 2 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a -Statement [42] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] ) always clobbers reg byte a -Statement [43] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] ) always clobbers reg byte a -Statement [44] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] ) always clobbers reg byte a -Statement [45] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ) always clobbers reg byte a -Statement [46] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ) always clobbers reg byte a -Statement [52] if((byte) mul16s_compare::i#1!=(byte) $10) goto mul16s_compare::@1 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::i#1 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::i#1 ] ) always clobbers reg byte a -Statement [55] (byte*~) print_char_cursor#180 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#180 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#180 ] ) always clobbers reg byte a -Statement [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte) $28 [ print_line_cursor#1 print_char_cursor#131 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16u_compare:9::print_ln:241 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16u_compare:9::print_ln:245 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16u_compare:9::mul16u_error:234::print_ln:267 [ print_line_cursor#1 print_char_cursor#131 ] ) always clobbers reg byte a -Statement [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#131) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#131 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16u_compare:9::print_ln:241 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16u_compare:9::print_ln:245 [ print_line_cursor#1 print_char_cursor#131 ] main:2::mul16u_compare:9::mul16u_error:234::print_ln:267 [ print_line_cursor#1 print_char_cursor#131 ] ) always clobbers reg byte a -Statement [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 [ print_char_cursor#130 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::print_str:202 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::print_str:243 [ print_line_cursor#1 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:247 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:251 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:255 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:259 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:263 [ mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] ) always clobbers reg byte a reg byte y -Statement [68] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#15) [ print_char_cursor#130 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::print_str:202 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::print_str:243 [ print_line_cursor#1 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:247 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:251 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:255 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:259 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:234::print_str:263 [ mul16u_error::mf#0 print_char_cursor#130 print_str::str#15 ] ) always clobbers reg byte a reg byte y -Statement [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ) always clobbers reg byte a -Statement [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ) always clobbers reg byte a -Statement [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ) always clobbers reg byte a -Statement [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::mf#0 print_sdword::dw#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 mul16s_error::mf#0 print_sdword::dw#2 ] ) always clobbers reg byte a -Statement [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 [ print_line_cursor#1 print_char_cursor#130 print_sdword::dw#3 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#130 print_sdword::dw#3 ] ) always clobbers reg byte a -Statement [95] if((signed dword) print_sdword::dw#4>=(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#130 print_sdword::dw#4 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#130 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#130 print_sdword::dw#4 ] ) always clobbers reg byte a -Statement [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 [ print_char_cursor#21 print_sdword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#21 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#21 print_sdword::dw#0 ] ) always clobbers reg byte a -Statement [100] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 [ print_char_cursor#137 print_dword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#137 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#137 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#137 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265 [ print_dword::dw#4 print_char_cursor#136 print_word::w#1 ] ) always clobbers reg byte a -Statement [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#21 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#21 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_char_cursor#21 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261 [ mul16u_error::mf#0 print_char_cursor#21 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265 [ print_char_cursor#21 print_word::w#2 ] ) always clobbers reg byte a -Statement [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#135 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105 [ print_dword::dw#4 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107 [ print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#135 print_byte::b#0 ] ) always clobbers reg byte a -Statement [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#21 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105 [ print_dword::dw#4 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107 [ mul16u_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107 [ print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::b#1 ] ) always clobbers reg byte a -Statement [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#139 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:111 [ print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:113 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:113 [ print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#139 print_byte::$0 ] ) always clobbers reg byte a -Statement [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#21 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:111 [ print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:113 [ print_dword::dw#4 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:113 [ print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#21 print_byte::$2 ] ) always clobbers reg byte a -Statement [124] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#5 [ print_char_cursor#86 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:111::print_char:118 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:111::print_char:118 [ print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:111::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:111::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:113::print_char:118 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:113::print_char:118 [ print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:113::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:113::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:111::print_char:121 [ print_dword::dw#4 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:111::print_char:121 [ print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:111::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:111::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:105::print_byte:113::print_char:121 [ print_dword::dw#4 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:257::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:261::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_dword:265::print_word:107::print_byte:113::print_char:121 [ print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:133::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:133::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:249::print_byte:113::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#86 ] main:2::mul16u_compare:9::mul16u_error:234::print_word:253::print_byte:113::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:130 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:130 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:136 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#86 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:136 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#86 ] ) always clobbers reg byte y -Statement [128] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#130 print_sword::w#3 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_sword::w#3 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#130 print_sword::w#3 ] ) always clobbers reg byte a -Statement [132] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#21 print_word::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_word::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_word::w#0 ] ) always clobbers reg byte a -Statement [137] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#21 print_sword::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_sword::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#21 print_sword::w#0 ] ) always clobbers reg byte a -Statement [138] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ) always clobbers reg byte a -Statement [139] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ) always clobbers reg byte a -Statement [141] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ) always clobbers reg byte a -Statement [142] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [143] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [144] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ) always clobbers reg byte a -Statement [145] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a -Statement [146] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a -Statement [148] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a -Statement [149] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ) always clobbers reg byte a -Statement [150] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a -Statement [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a -Statement [153] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a -Statement [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:140 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:218 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a -Statement [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:140 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:218 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [13] (byte*~) print_char_cursor#222 ← (byte*) print_line_cursor#1 [ print_char_cursor#222 print_line_cursor#1 ] ( main:2::mul16s_compare:11 [ print_char_cursor#222 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (signed word) $d2b [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ) always clobbers reg byte a +Statement [18] (signed word) mul16s_compare::b#1 ← (signed word) mul16s_compare::b#2 + (signed word) $ffd [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 ] ) always clobbers reg byte a +Statement [19] (signed word) muls16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 ] ) always clobbers reg byte a +Statement [20] (signed word) muls16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a +Statement [22] (signed dword) muls16s::return#2 ← (signed dword) muls16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::return#2 ] ) always clobbers reg byte a +Statement [23] (signed dword) mul16s_compare::ms#0 ← (signed dword) muls16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 ] ) always clobbers reg byte a +Statement [24] (signed word) mul16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 ] ) always clobbers reg byte a +Statement [25] (signed word) mul16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 ] ) always clobbers reg byte a +Statement [27] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#2 ] ) always clobbers reg byte a +Statement [28] (signed dword) mul16s_compare::mn#0 ← (signed dword) mul16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 ] ) always clobbers reg byte a +Statement [29] (signed word) mulf16s::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 ] ) always clobbers reg byte a +Statement [30] (signed word) mulf16s::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] ) always clobbers reg byte a +Statement [32] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#2 ] ) always clobbers reg byte a +Statement [33] (signed dword) mul16s_compare::mf#0 ← (signed dword) mulf16s::return#2 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a +Statement [34] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a +Statement [37] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@15 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_compare::ok#4 ] ) always clobbers reg byte a +Statement [41] *((const byte*) BGCOL#0) ← (byte) 2 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 ] ) always clobbers reg byte a +Statement [42] (signed word) mul16s_error::a#0 ← (signed word) mul16s_compare::a#1 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::b#1 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 ] ) always clobbers reg byte a +Statement [43] (signed word) mul16s_error::b#0 ← (signed word) mul16s_compare::b#1 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::ms#0 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 ] ) always clobbers reg byte a +Statement [44] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compare::ms#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mn#0 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 ] ) always clobbers reg byte a +Statement [45] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ) always clobbers reg byte a +Statement [46] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ) always clobbers reg byte a +Statement [52] if((byte) mul16s_compare::i#1!=(byte) $10) goto mul16s_compare::@1 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::i#1 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::i#1 ] ) always clobbers reg byte a +Statement [55] (byte*~) print_char_cursor#183 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#183 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#183 ] ) always clobbers reg byte a +Statement [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte) $28 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:247 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::mul16u_error:236::print_ln:269 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a +Statement [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul16s_compare:11::print_ln:54 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::print_ln:58 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16s_compare:11::mul16s_error:47::print_ln:92 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::print_ln:247 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul16u_compare:9::mul16u_error:236::print_ln:269 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a +Statement [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 [ print_char_cursor#132 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:204 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:245 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:249 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:253 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:257 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:261 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:265 [ mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] ) always clobbers reg byte a reg byte y +Statement [68] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#15) [ print_char_cursor#132 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::print_str:56 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:47::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:204 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::print_str:245 [ print_line_cursor#1 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:249 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:253 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:257 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:261 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:265 [ mul16u_error::mf#0 print_char_cursor#132 print_str::str#15 ] ) always clobbers reg byte a reg byte y +Statement [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ) always clobbers reg byte a +Statement [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ) always clobbers reg byte a +Statement [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ) always clobbers reg byte a +Statement [85] (signed dword) print_sdword::dw#2 ← (signed dword) mul16s_error::mn#0 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mf#0 print_sdword::dw#2 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 mul16s_error::mf#0 print_sdword::dw#2 ] ) always clobbers reg byte a +Statement [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error::mf#0 [ print_line_cursor#1 print_char_cursor#132 print_sdword::dw#3 ] ( main:2::mul16s_compare:11::mul16s_error:47 [ print_line_cursor#1 print_char_cursor#132 print_sdword::dw#3 ] ) always clobbers reg byte a +Statement [95] if((signed dword) print_sdword::dw#4<(signed byte) 0) goto print_sdword::@1 [ print_char_cursor#132 print_sdword::dw#4 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#132 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#132 print_sdword::dw#4 ] ) always clobbers reg byte a +Statement [99] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#6 [ print_char_cursor#22 print_dword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#22 print_dword::dw#0 ] ) always clobbers reg byte a +Statement [104] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 [ print_char_cursor#22 print_sdword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90 [ print_line_cursor#1 print_char_cursor#22 print_sdword::dw#0 ] ) always clobbers reg byte a +Statement [106] *((byte*) print_char_cursor#88) ← (byte) print_char::ch#6 [ print_char_cursor#88 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_char:103 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_char:103 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_char:103 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117::print_char:124 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111::print_byte:117::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111::print_byte:117::print_char:124 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111::print_byte:117::print_char:124 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117::print_char:124 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113::print_byte:117::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113::print_byte:117::print_char:124 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113::print_byte:117::print_char:124 [ print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117::print_char:124 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251::print_byte:117::print_char:124 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255::print_byte:117::print_char:124 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119::print_char:124 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111::print_byte:119::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111::print_byte:119::print_char:124 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111::print_byte:119::print_char:124 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119::print_char:124 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113::print_byte:119::print_char:124 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113::print_byte:119::print_char:124 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113::print_byte:119::print_char:124 [ print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119::print_char:124 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251::print_byte:119::print_char:124 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255::print_byte:119::print_char:124 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117::print_char:127 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111::print_byte:117::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111::print_byte:117::print_char:127 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111::print_byte:117::print_char:127 [ print_dword::dw#4 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117::print_char:127 [ print_line_cursor#1 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113::print_byte:117::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113::print_byte:117::print_char:127 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113::print_byte:117::print_char:127 [ print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117::print_char:127 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251::print_byte:117::print_char:127 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255::print_byte:117::print_char:127 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119::print_char:127 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111::print_byte:119::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111::print_byte:119::print_char:127 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111::print_byte:119::print_char:127 [ print_dword::dw#4 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119::print_char:127 [ print_line_cursor#1 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113::print_byte:119::print_char:127 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113::print_byte:119::print_char:127 [ mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113::print_byte:119::print_char:127 [ print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119::print_char:127 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251::print_byte:119::print_char:127 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255::print_byte:119::print_char:127 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:132 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:132 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_char:138 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_char:138 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#88 ] ) always clobbers reg byte y +Statement [110] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267 [ print_dword::dw#4 print_char_cursor#138 print_word::w#1 ] ) always clobbers reg byte a +Statement [112] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#22 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100 [ print_line_cursor#1 print_char_cursor#22 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263 [ mul16u_error::mf#0 print_char_cursor#22 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267 [ print_char_cursor#22 print_word::w#2 ] ) always clobbers reg byte a +Statement [116] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#137 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113 [ print_line_cursor#1 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113 [ print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#137 print_byte::b#0 ] ) always clobbers reg byte a +Statement [118] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#22 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111 [ print_dword::dw#4 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113 [ print_line_cursor#1 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113 [ mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113 [ print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::b#1 ] ) always clobbers reg byte a +Statement [122] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_char_cursor#142 print_byte::b#2 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111::print_byte:117 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111::print_byte:117 [ print_dword::dw#4 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113::print_byte:117 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113::print_byte:117 [ print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251::print_byte:117 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255::print_byte:117 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111::print_byte:119 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111::print_byte:119 [ print_dword::dw#4 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113::print_byte:119 [ mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113::print_byte:119 [ print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251::print_byte:119 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255::print_byte:119 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#142 print_byte::b#2 print_byte::$0 ] ) always clobbers reg byte a +Statement [125] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#22 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:117 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111::print_byte:117 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111::print_byte:117 [ print_dword::dw#4 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:117 [ print_line_cursor#1 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113::print_byte:117 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113::print_byte:117 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113::print_byte:117 [ print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:117 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251::print_byte:117 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255::print_byte:117 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:111::print_byte:119 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:111::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:111::print_byte:119 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:111::print_byte:119 [ print_dword::dw#4 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:82::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:86::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sdword:90::print_dword:100::print_word:113::print_byte:119 [ print_line_cursor#1 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:259::print_word:113::print_byte:119 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:263::print_word:113::print_byte:119 [ mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:267::print_word:113::print_byte:119 [ print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:74::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78::print_word:135::print_byte:119 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:251::print_byte:119 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:255::print_byte:119 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#22 print_byte::$2 ] ) always clobbers reg byte a +Statement [130] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 [ print_char_cursor#132 print_sword::w#3 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sword::w#3 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#132 print_sword::w#3 ] ) always clobbers reg byte a +Statement [134] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#22 print_word::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_word::w#0 ] ) always clobbers reg byte a +Statement [139] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#22 print_sword::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:47::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sword::w#0 ] main:2::mul16s_compare:11::mul16s_error:47::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#22 print_sword::w#0 ] ) always clobbers reg byte a +Statement [140] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 ] ) always clobbers reg byte a +Statement [141] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::a#0 mulf16u::b#0 ] ) always clobbers reg byte a +Statement [143] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ) always clobbers reg byte a +Statement [144] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a +Statement [145] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a +Statement [146] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$9 ] ) always clobbers reg byte a +Statement [147] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a +Statement [148] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a +Statement [150] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a +Statement [151] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$13 ] ) always clobbers reg byte a +Statement [152] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a +Statement [153] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a +Statement [155] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a +Statement [158] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:220 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a +Statement [159] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:220 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a Statement asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } always clobbers reg byte a reg byte x -Statement [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:140 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:218 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a -Statement [161] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ) always clobbers reg byte a -Statement [162] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a -Statement [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [166] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [167] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a -Statement [168] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [169] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a -Statement [171] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a -Statement [172] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$13 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$13 ] ) always clobbers reg byte a -Statement [173] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a -Statement [174] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a -Statement [176] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a -Statement [180] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:213 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [182] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:213 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [184] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:213 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [188] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [189] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [191] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a -Statement [193] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 [ muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ) always clobbers reg byte a -Statement [197] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ) always clobbers reg byte a -Statement [198] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a -Statement [199] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#130 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a -Statement [204] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [205] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [206] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a -Statement [207] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [209] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a -Statement [210] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [211] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#130 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [212] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#130 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [214] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a -Statement [215] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [216] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#130 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [217] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#130 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [219] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a -Statement [220] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [221] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a -Statement [228] *((const byte*) BGCOL#0) ← (byte) 2 [ print_char_cursor#130 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [229] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#130 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a -Statement [230] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#130 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a -Statement [231] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#130 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a -Statement [232] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#130 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a -Statement [233] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#130 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [239] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 [ print_char_cursor#130 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#130 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a -Statement [242] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#187 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#187 ] ) always clobbers reg byte a -Statement [248] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#130 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [252] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#130 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [256] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#130 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [260] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#130 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_dword::dw#2 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [264] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#130 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:234 [ print_char_cursor#130 print_dword::dw#3 ] ) always clobbers reg byte a -Statement [269] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:208 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [271] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ( main:2::mul16u_compare:9::muls16u:208 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a -Statement [273] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 [ muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ( main:2::mul16u_compare:9::muls16u:208 [ print_char_cursor#130 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ) always clobbers reg byte a -Statement [279] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$7 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$7 ] ) always clobbers reg byte a -Statement [284] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ) always clobbers reg byte a -Statement [285] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [286] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ) always clobbers reg byte a -Statement [287] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [289] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [291] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [293] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [294] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [296] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [301] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a -Statement [302] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [303] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [307] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [309] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [161] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:142 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:220 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a +Statement [163] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 ] ) always clobbers reg byte a +Statement [164] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a +Statement [166] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a +Statement [167] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [168] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [169] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a +Statement [170] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a +Statement [171] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a +Statement [173] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a +Statement [174] (word~) mul16s::$13 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$13 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$13 ] ) always clobbers reg byte a +Statement [175] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a +Statement [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a +Statement [178] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a +Statement [182] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:215 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [184] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:215 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [186] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:165 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:215 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [190] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a +Statement [191] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a +Statement [193] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a +Statement [195] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 [ muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ) always clobbers reg byte a +Statement [199] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ) always clobbers reg byte a +Statement [200] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a +Statement [201] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#132 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a +Statement [206] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a +Statement [207] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a +Statement [208] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a +Statement [209] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a +Statement [211] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a +Statement [212] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [213] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [214] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [216] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a +Statement [217] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [218] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [219] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [221] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a +Statement [222] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [226] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a +Statement [230] *((const byte*) BGCOL#0) ← (byte) 2 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#132 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a +Statement [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#132 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a +Statement [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#132 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a +Statement [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#132 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a +Statement [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#132 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [241] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#132 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a +Statement [244] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#190 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#190 ] ) always clobbers reg byte a +Statement [250] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#132 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#132 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [254] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#132 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#132 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [258] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#132 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#132 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [262] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#132 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#132 print_dword::dw#2 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [266] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#132 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#132 print_dword::dw#3 ] ) always clobbers reg byte a +Statement [271] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:210 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a +Statement [273] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ( main:2::mul16u_compare:9::muls16u:210 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a +Statement [275] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 [ muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ( main:2::mul16u_compare:9::muls16u:210 [ print_char_cursor#132 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ) always clobbers reg byte a +Statement [281] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$7 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$7 ] ) always clobbers reg byte a +Statement [286] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$10 ] ) always clobbers reg byte a +Statement [287] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [288] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$11 ] ) always clobbers reg byte a +Statement [289] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [291] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [293] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [295] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [296] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [298] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [304] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [305] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [309] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [311] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] : zp ZP_BYTE:2 , Potential registers zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] : zp ZP_WORD:3 , Potential registers zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] : zp ZP_WORD:5 , @@ -7820,12 +7857,12 @@ Potential registers zp ZP_BYTE:7 [ mul16s_compare::j#10 mul16s_compare::j#1 ] : Potential registers zp ZP_BYTE:8 [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] : zp ZP_BYTE:8 , reg byte x , reg byte y , Potential registers zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] : zp ZP_WORD:9 , Potential registers zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] : zp ZP_WORD:11 , -Potential registers zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] : zp ZP_DWORD:13 , -Potential registers zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] : zp ZP_DWORD:17 , -Potential registers zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] : zp ZP_WORD:21 , -Potential registers zp ZP_BYTE:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:23 , reg byte x , -Potential registers zp ZP_BYTE:24 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:25 [ print_char_cursor#86 print_char_cursor#139 print_char_cursor#135 print_char_cursor#136 print_char_cursor#137 print_char_cursor#151 print_char_cursor#131 print_char_cursor#146 print_char_cursor#220 print_char_cursor#130 print_char_cursor#21 print_char_cursor#180 print_char_cursor#142 print_char_cursor#187 print_char_cursor#1 ] : zp ZP_WORD:25 , +Potential registers zp ZP_DWORD:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 ] : zp ZP_DWORD:13 , +Potential registers zp ZP_BYTE:17 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_DWORD:18 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] : zp ZP_DWORD:18 , +Potential registers zp ZP_WORD:22 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] : zp ZP_WORD:22 , +Potential registers zp ZP_WORD:24 [ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#222 print_char_cursor#132 print_char_cursor#22 print_char_cursor#183 print_char_cursor#145 print_char_cursor#190 print_char_cursor#1 ] : zp ZP_WORD:24 , +Potential registers zp ZP_BYTE:26 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:26 , reg byte x , Potential registers zp ZP_WORD:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] : zp ZP_WORD:27 , Potential registers zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] : zp ZP_DWORD:29 , Potential registers zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] : zp ZP_WORD:33 , @@ -7916,53 +7953,53 @@ Uplift Scope [mulf16u] 258.5: zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u: Uplift Scope [print_str] 305.5: zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] Uplift Scope [mul16s] 202: zp ZP_DWORD:108 [ mul16s::return#2 ] 34.33: zp ZP_DWORD:178 [ mul16s::return#0 ] 16.5: zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] 9.36: zp ZP_WORD:106 [ mul16s::b#0 ] 7.36: zp ZP_WORD:104 [ mul16s::a#0 ] 4: zp ZP_WORD:170 [ mul16s::$9 ] 4: zp ZP_WORD:172 [ mul16s::$16 ] 4: zp ZP_WORD:174 [ mul16s::$13 ] 4: zp ZP_WORD:176 [ mul16s::$17 ] Uplift Scope [mulf16s] 202: zp ZP_DWORD:120 [ mulf16s::return#2 ] 34.33: zp ZP_DWORD:158 [ mulf16s::return#0 ] 16.5: zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] 9.36: zp ZP_WORD:118 [ mulf16s::b#0 ] 7.36: zp ZP_WORD:116 [ mulf16s::a#0 ] 4: zp ZP_WORD:150 [ mulf16s::$9 ] 4: zp ZP_WORD:152 [ mulf16s::$16 ] 4: zp ZP_WORD:154 [ mulf16s::$13 ] 4: zp ZP_WORD:156 [ mulf16s::$17 ] -Uplift Scope [] 239.66: zp ZP_WORD:25 [ print_char_cursor#86 print_char_cursor#139 print_char_cursor#135 print_char_cursor#136 print_char_cursor#137 print_char_cursor#151 print_char_cursor#131 print_char_cursor#146 print_char_cursor#220 print_char_cursor#130 print_char_cursor#21 print_char_cursor#180 print_char_cursor#142 print_char_cursor#187 print_char_cursor#1 ] 34.6: zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] +Uplift Scope [] 237.59: zp ZP_WORD:24 [ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#222 print_char_cursor#132 print_char_cursor#22 print_char_cursor#183 print_char_cursor#145 print_char_cursor#190 print_char_cursor#1 ] 34.6: zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] Uplift Scope [mulf_init] 45.1: zp ZP_WORD:82 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24.36: zp ZP_BYTE:76 [ mulf_init::c#2 mulf_init::c#1 ] 24.14: zp ZP_BYTE:81 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp ZP_BYTE:227 [ mulf_init::$7 ] 22: zp ZP_BYTE:228 [ mulf_init::$10 ] 22: zp ZP_BYTE:229 [ mulf_init::$11 ] 20.62: zp ZP_WORD:85 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 19.04: zp ZP_WORD:77 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 16.5: zp ZP_BYTE:84 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 14.14: zp ZP_WORD:87 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 12.05: zp ZP_BYTE:89 [ mulf_init::dir#2 mulf_init::dir#3 ] 8.5: zp ZP_WORD:79 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Uplift Scope [print_cls] 33: zp ZP_WORD:90 [ print_cls::sc#2 print_cls::sc#1 ] -Uplift Scope [print_word] 24.67: zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] -Uplift Scope [print_sdword] 23: zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] -Uplift Scope [print_dword] 20: zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] -Uplift Scope [print_byte] 10: zp ZP_BYTE:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:144 [ print_byte::$0 ] 4: zp ZP_BYTE:145 [ print_byte::$2 ] +Uplift Scope [print_word] 24.67: zp ZP_WORD:22 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] +Uplift Scope [print_sdword] 22: zp ZP_DWORD:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 ] +Uplift Scope [print_dword] 20: zp ZP_DWORD:18 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] +Uplift Scope [print_byte] 10: zp ZP_BYTE:26 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:144 [ print_byte::$0 ] 4: zp ZP_BYTE:145 [ print_byte::$2 ] Uplift Scope [print_sword] 17.67: zp ZP_WORD:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] -Uplift Scope [print_char] 14: zp ZP_BYTE:24 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] +Uplift Scope [print_char] 14: zp ZP_BYTE:17 [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] Uplift Scope [mul16u_error] 0.57: zp ZP_WORD:211 [ mul16u_error::a#0 ] 0.4: zp ZP_WORD:213 [ mul16u_error::b#0 ] 0.31: zp ZP_DWORD:215 [ mul16u_error::ms#0 ] 0.25: zp ZP_DWORD:219 [ mul16u_error::mn#0 ] 0.21: zp ZP_DWORD:223 [ mul16u_error::mf#0 ] Uplift Scope [mul16s_error] 0.57: zp ZP_WORD:128 [ mul16s_error::a#0 ] 0.4: zp ZP_WORD:130 [ mul16s_error::b#0 ] 0.31: zp ZP_DWORD:132 [ mul16s_error::ms#0 ] 0.25: zp ZP_DWORD:136 [ mul16s_error::mn#0 ] 0.21: zp ZP_DWORD:140 [ mul16s_error::mf#0 ] Uplift Scope [print_ln] Uplift Scope [main] -Uplifting [muls16s] best 548919 combination zp ZP_DWORD:57 [ muls16s::m#5 muls16s::return#0 muls16s::m#2 muls16s::m#3 muls16s::m#1 ] zp ZP_WORD:55 [ muls16s::j#2 muls16s::j#1 ] zp ZP_WORD:61 [ muls16s::i#2 muls16s::i#1 ] zp ZP_DWORD:96 [ muls16s::return#2 ] zp ZP_WORD:94 [ muls16s::b#0 ] zp ZP_WORD:92 [ muls16s::a#0 ] -Uplifting [mul16u] best 542919 combination zp ZP_DWORD:47 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:51 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:45 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:43 [ mul16u::b#1 ] zp ZP_DWORD:195 [ mul16u::return#3 ] zp ZP_WORD:41 [ mul16u::b#0 ] zp ZP_DWORD:166 [ mul16u::return#2 ] -Uplifting [muls16u] best 542919 combination zp ZP_DWORD:72 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] zp ZP_WORD:70 [ muls16u::i#2 muls16u::i#1 ] zp ZP_DWORD:187 [ muls16u::return#2 ] zp ZP_WORD:185 [ muls16u::b#0 ] zp ZP_WORD:183 [ muls16u::a#0 ] -Uplifting [mul16u_compare] best 540819 combination zp ZP_WORD:64 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] reg byte x [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] reg byte y [ mul16u_compare::j#10 mul16u_compare::j#1 ] zp ZP_WORD:66 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] zp ZP_BYTE:63 [ mul16u_compare::i#12 mul16u_compare::i#1 ] zp ZP_DWORD:207 [ mul16u_compare::mf#0 ] zp ZP_DWORD:191 [ mul16u_compare::ms#0 ] zp ZP_DWORD:199 [ mul16u_compare::mn#0 ] -Uplifting [mul16s_compare] best 538719 combination zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ] zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] zp ZP_DWORD:124 [ mul16s_compare::mf#0 ] zp ZP_DWORD:100 [ mul16s_compare::ms#0 ] zp ZP_DWORD:112 [ mul16s_compare::mn#0 ] -Uplifting [mulf16u] best 538719 combination zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 ] zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] zp ZP_DWORD:203 [ mulf16u::return#3 ] zp ZP_DWORD:162 [ mulf16u::return#0 ] zp ZP_DWORD:146 [ mulf16u::return#2 ] -Uplifting [print_str] best 538719 combination zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] -Uplifting [mul16s] best 538719 combination zp ZP_DWORD:108 [ mul16s::return#2 ] zp ZP_DWORD:178 [ mul16s::return#0 ] zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp ZP_WORD:106 [ mul16s::b#0 ] zp ZP_WORD:104 [ mul16s::a#0 ] zp ZP_WORD:170 [ mul16s::$9 ] zp ZP_WORD:172 [ mul16s::$16 ] zp ZP_WORD:174 [ mul16s::$13 ] zp ZP_WORD:176 [ mul16s::$17 ] -Uplifting [mulf16s] best 538719 combination zp ZP_DWORD:120 [ mulf16s::return#2 ] zp ZP_DWORD:158 [ mulf16s::return#0 ] zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] zp ZP_WORD:118 [ mulf16s::b#0 ] zp ZP_WORD:116 [ mulf16s::a#0 ] zp ZP_WORD:150 [ mulf16s::$9 ] zp ZP_WORD:152 [ mulf16s::$16 ] zp ZP_WORD:154 [ mulf16s::$13 ] zp ZP_WORD:156 [ mulf16s::$17 ] -Uplifting [] best 538719 combination zp ZP_WORD:25 [ print_char_cursor#86 print_char_cursor#139 print_char_cursor#135 print_char_cursor#136 print_char_cursor#137 print_char_cursor#151 print_char_cursor#131 print_char_cursor#146 print_char_cursor#220 print_char_cursor#130 print_char_cursor#21 print_char_cursor#180 print_char_cursor#142 print_char_cursor#187 print_char_cursor#1 ] zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] -Uplifting [mulf_init] best 538469 combination zp ZP_WORD:82 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:81 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$7 ] reg byte a [ mulf_init::$10 ] reg byte a [ mulf_init::$11 ] zp ZP_WORD:85 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:77 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:84 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:87 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:89 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:79 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplifting [muls16s] best 548936 combination zp ZP_DWORD:57 [ muls16s::m#5 muls16s::return#0 muls16s::m#2 muls16s::m#3 muls16s::m#1 ] zp ZP_WORD:55 [ muls16s::j#2 muls16s::j#1 ] zp ZP_WORD:61 [ muls16s::i#2 muls16s::i#1 ] zp ZP_DWORD:96 [ muls16s::return#2 ] zp ZP_WORD:94 [ muls16s::b#0 ] zp ZP_WORD:92 [ muls16s::a#0 ] +Uplifting [mul16u] best 542936 combination zp ZP_DWORD:47 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:51 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:45 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:43 [ mul16u::b#1 ] zp ZP_DWORD:195 [ mul16u::return#3 ] zp ZP_WORD:41 [ mul16u::b#0 ] zp ZP_DWORD:166 [ mul16u::return#2 ] +Uplifting [muls16u] best 542936 combination zp ZP_DWORD:72 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] zp ZP_WORD:70 [ muls16u::i#2 muls16u::i#1 ] zp ZP_DWORD:187 [ muls16u::return#2 ] zp ZP_WORD:185 [ muls16u::b#0 ] zp ZP_WORD:183 [ muls16u::a#0 ] +Uplifting [mul16u_compare] best 540836 combination zp ZP_WORD:64 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] reg byte x [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] reg byte y [ mul16u_compare::j#10 mul16u_compare::j#1 ] zp ZP_WORD:66 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] zp ZP_BYTE:63 [ mul16u_compare::i#12 mul16u_compare::i#1 ] zp ZP_DWORD:207 [ mul16u_compare::mf#0 ] zp ZP_DWORD:191 [ mul16u_compare::ms#0 ] zp ZP_DWORD:199 [ mul16u_compare::mn#0 ] +Uplifting [mul16s_compare] best 538736 combination zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ] zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] zp ZP_DWORD:124 [ mul16s_compare::mf#0 ] zp ZP_DWORD:100 [ mul16s_compare::ms#0 ] zp ZP_DWORD:112 [ mul16s_compare::mn#0 ] +Uplifting [mulf16u] best 538736 combination zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 ] zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] zp ZP_DWORD:203 [ mulf16u::return#3 ] zp ZP_DWORD:162 [ mulf16u::return#0 ] zp ZP_DWORD:146 [ mulf16u::return#2 ] +Uplifting [print_str] best 538736 combination zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] +Uplifting [mul16s] best 538736 combination zp ZP_DWORD:108 [ mul16s::return#2 ] zp ZP_DWORD:178 [ mul16s::return#0 ] zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp ZP_WORD:106 [ mul16s::b#0 ] zp ZP_WORD:104 [ mul16s::a#0 ] zp ZP_WORD:170 [ mul16s::$9 ] zp ZP_WORD:172 [ mul16s::$16 ] zp ZP_WORD:174 [ mul16s::$13 ] zp ZP_WORD:176 [ mul16s::$17 ] +Uplifting [mulf16s] best 538736 combination zp ZP_DWORD:120 [ mulf16s::return#2 ] zp ZP_DWORD:158 [ mulf16s::return#0 ] zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] zp ZP_WORD:118 [ mulf16s::b#0 ] zp ZP_WORD:116 [ mulf16s::a#0 ] zp ZP_WORD:150 [ mulf16s::$9 ] zp ZP_WORD:152 [ mulf16s::$16 ] zp ZP_WORD:154 [ mulf16s::$13 ] zp ZP_WORD:156 [ mulf16s::$17 ] +Uplifting [] best 538736 combination zp ZP_WORD:24 [ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#222 print_char_cursor#132 print_char_cursor#22 print_char_cursor#183 print_char_cursor#145 print_char_cursor#190 print_char_cursor#1 ] zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] +Uplifting [mulf_init] best 538486 combination zp ZP_WORD:82 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:81 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$7 ] reg byte a [ mulf_init::$10 ] reg byte a [ mulf_init::$11 ] zp ZP_WORD:85 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:77 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:84 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:87 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:89 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:79 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [print_cls] best 538469 combination zp ZP_WORD:90 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_word] best 538469 combination zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] -Uplifting [print_sdword] best 538469 combination zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] -Uplifting [print_dword] best 538469 combination zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] -Uplifting [print_byte] best 538455 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_sword] best 538455 combination zp ZP_WORD:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] -Uplifting [print_char] best 538437 combination reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -Uplifting [mul16u_error] best 538437 combination zp ZP_WORD:211 [ mul16u_error::a#0 ] zp ZP_WORD:213 [ mul16u_error::b#0 ] zp ZP_DWORD:215 [ mul16u_error::ms#0 ] zp ZP_DWORD:219 [ mul16u_error::mn#0 ] zp ZP_DWORD:223 [ mul16u_error::mf#0 ] -Uplifting [mul16s_error] best 538437 combination zp ZP_WORD:128 [ mul16s_error::a#0 ] zp ZP_WORD:130 [ mul16s_error::b#0 ] zp ZP_DWORD:132 [ mul16s_error::ms#0 ] zp ZP_DWORD:136 [ mul16s_error::mn#0 ] zp ZP_DWORD:140 [ mul16s_error::mf#0 ] -Uplifting [print_ln] best 538437 combination -Uplifting [main] best 538437 combination +Uplifting [print_cls] best 538486 combination zp ZP_WORD:90 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_word] best 538486 combination zp ZP_WORD:22 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] +Uplifting [print_sdword] best 538486 combination zp ZP_DWORD:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 ] +Uplifting [print_dword] best 538486 combination zp ZP_DWORD:18 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] +Uplifting [print_byte] best 538472 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] +Uplifting [print_sword] best 538472 combination zp ZP_WORD:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] +Uplifting [print_char] best 538451 combination reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +Uplifting [mul16u_error] best 538451 combination zp ZP_WORD:211 [ mul16u_error::a#0 ] zp ZP_WORD:213 [ mul16u_error::b#0 ] zp ZP_DWORD:215 [ mul16u_error::ms#0 ] zp ZP_DWORD:219 [ mul16u_error::mn#0 ] zp ZP_DWORD:223 [ mul16u_error::mf#0 ] +Uplifting [mul16s_error] best 538451 combination zp ZP_WORD:128 [ mul16s_error::a#0 ] zp ZP_WORD:130 [ mul16s_error::b#0 ] zp ZP_DWORD:132 [ mul16s_error::ms#0 ] zp ZP_DWORD:136 [ mul16s_error::mn#0 ] zp ZP_DWORD:140 [ mul16s_error::mf#0 ] +Uplifting [print_ln] best 538451 combination +Uplifting [main] best 538451 combination Attempting to uplift remaining variables inzp ZP_BYTE:81 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Uplifting [mulf_init] best 538437 combination zp ZP_BYTE:81 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +Uplifting [mulf_init] best 538451 combination zp ZP_BYTE:81 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] -Uplifting [mul16s_compare] best 538437 combination zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] +Uplifting [mul16s_compare] best 538451 combination zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:63 [ mul16u_compare::i#12 mul16u_compare::i#1 ] -Uplifting [mul16u_compare] best 538437 combination zp ZP_BYTE:63 [ mul16u_compare::i#12 mul16u_compare::i#1 ] +Uplifting [mul16u_compare] best 538451 combination zp ZP_BYTE:63 [ mul16u_compare::i#12 mul16u_compare::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:84 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 538297 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 538311 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:89 [ mulf_init::dir#2 mulf_init::dir#3 ] -Uplifting [mulf_init] best 538297 combination zp ZP_BYTE:89 [ mulf_init::dir#2 mulf_init::dir#3 ] +Uplifting [mulf_init] best 538311 combination zp ZP_BYTE:89 [ mulf_init::dir#2 mulf_init::dir#3 ] Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] ] with [ zp ZP_WORD:92 [ muls16s::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 ] ] with [ zp ZP_WORD:104 [ mul16s::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 ] ] with [ zp ZP_WORD:116 [ mulf16s::a#0 ] ] - score: 1 @@ -7971,10 +8008,10 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ mul16s_com Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 ] ] with [ zp ZP_WORD:106 [ mul16s::b#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 ] ] with [ zp ZP_WORD:118 [ mulf16s::b#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 mulf16s::b#0 ] ] with [ zp ZP_WORD:130 [ mul16s_error::b#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] ] with [ zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] ] with [ zp ZP_DWORD:132 [ mul16s_error::ms#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] ] with [ zp ZP_WORD:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] ] with [ zp ZP_WORD:211 [ mul16u_error::a#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 ] ] with [ zp ZP_DWORD:18 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] ] with [ zp ZP_DWORD:132 [ mul16s_error::ms#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 ] ] with [ zp ZP_WORD:27 [ print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 ] ] with [ zp ZP_WORD:211 [ mul16u_error::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] ] with [ zp ZP_DWORD:146 [ mulf16u::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 ] ] with [ zp ZP_DWORD:158 [ mulf16s::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 ] ] with [ zp ZP_WORD:64 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] ] - score: 1 @@ -7994,9 +8031,9 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:174 [ mul16s:: Coalescing zero page register with common assignment [ zp ZP_DWORD:191 [ mul16u_compare::ms#0 ] ] with [ zp ZP_DWORD:215 [ mul16u_error::ms#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:199 [ mul16u_compare::mn#0 ] ] with [ zp ZP_DWORD:219 [ mul16u_error::mn#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:207 [ mul16u_compare::mf#0 ] ] with [ zp ZP_DWORD:223 [ mul16u_error::mf#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 ] ] with [ zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 mul16u_error::a#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 ] ] with [ zp ZP_DWORD:100 [ mul16s_compare::ms#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 ] ] with [ zp ZP_DWORD:191 [ mul16u_compare::ms#0 mul16u_error::ms#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 ] ] with [ zp ZP_WORD:22 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#0 print_sword::w#5 print_sword::w#0 print_sword::w#3 print_sword::w#1 print_sword::w#2 mul16u_error::a#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 ] ] with [ zp ZP_DWORD:100 [ mul16s_compare::ms#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 ] ] with [ zp ZP_DWORD:191 [ mul16u_compare::ms#0 mul16u_error::ms#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 ] ] with [ zp ZP_DWORD:120 [ mulf16s::return#2 mul16s_compare::mf#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 ] ] with [ zp ZP_DWORD:162 [ mulf16u::return#0 mulf16u::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] ] with [ zp ZP_WORD:183 [ muls16u::a#0 ] ] - score: 1 @@ -8005,16 +8042,16 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:35 [ mulf16u:: Coalescing zero page register with common assignment [ zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#1 muls16u::b#0 ] ] with [ zp ZP_WORD:213 [ mul16u_error::b#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 ] ] with [ zp ZP_DWORD:47 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 ] ] with [ zp ZP_DWORD:108 [ mul16s::return#2 mul16s_compare::mn#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 ] ] with [ zp ZP_DWORD:57 [ muls16s::m#5 muls16s::return#0 muls16s::m#2 muls16s::m#3 muls16s::m#1 muls16s::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 muls16s::m#5 muls16s::return#0 muls16s::m#2 muls16s::m#3 muls16s::m#1 muls16s::return#2 ] ] with [ zp ZP_DWORD:72 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 muls16u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 ] ] with [ zp ZP_DWORD:57 [ muls16s::m#5 muls16s::return#0 muls16s::m#2 muls16s::m#3 muls16s::m#1 muls16s::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 muls16s::m#5 muls16s::return#0 muls16s::m#2 muls16s::m#3 muls16s::m#1 muls16s::return#2 ] ] with [ zp ZP_DWORD:72 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 muls16u::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 ] ] with [ zp ZP_DWORD:140 [ mul16s_error::mf#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 mul16s_error::mf#0 ] ] with [ zp ZP_DWORD:207 [ mul16u_compare::mf#0 mul16u_error::mf#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 mul16s_compare::mn#0 ] ] with [ zp ZP_DWORD:136 [ mul16s_error::mn#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 mul16s_compare::mn#0 mul16s_error::mn#0 ] ] with [ zp ZP_DWORD:199 [ mul16u_compare::mn#0 mul16u_error::mn#0 ] ] - score: 1 Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] Allocated (was zp ZP_WORD:11) zp ZP_WORD:9 [ print_str::str#15 print_str::str#17 print_str::str#0 ] -Allocated (was zp ZP_DWORD:13) zp ZP_DWORD:11 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 muls16s::m#5 muls16s::return#0 muls16s::m#2 muls16s::m#3 muls16s::m#1 muls16s::return#2 muls16u::return#0 muls16u::m#3 muls16u::m#1 muls16u::return#2 ] -Allocated (was zp ZP_WORD:25) zp ZP_WORD:15 [ print_char_cursor#86 print_char_cursor#139 print_char_cursor#135 print_char_cursor#136 print_char_cursor#137 print_char_cursor#151 print_char_cursor#131 print_char_cursor#146 print_char_cursor#220 print_char_cursor#130 print_char_cursor#21 print_char_cursor#180 print_char_cursor#142 print_char_cursor#187 print_char_cursor#1 ] +Allocated (was zp ZP_DWORD:13) zp ZP_DWORD:11 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 muls16s::m#5 muls16s::return#0 muls16s::m#2 muls16s::m#3 muls16s::m#1 muls16s::return#2 muls16u::return#0 muls16u::m#3 muls16u::m#1 muls16u::return#2 ] +Allocated (was zp ZP_WORD:24) zp ZP_WORD:15 [ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#222 print_char_cursor#132 print_char_cursor#22 print_char_cursor#183 print_char_cursor#145 print_char_cursor#190 print_char_cursor#1 ] Allocated (was zp ZP_DWORD:29) zp ZP_DWORD:17 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 mul16s_error::mf#0 mul16u_compare::mf#0 mul16u_error::mf#0 ] Allocated (was zp ZP_WORD:33) zp ZP_WORD:21 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 muls16u::a#0 ] Allocated (was zp ZP_WORD:35) zp ZP_WORD:23 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#1 muls16u::b#0 mul16u_error::b#0 ] @@ -8070,7 +8107,7 @@ main: { lda #5 sta BGCOL // [5] call print_cls - // [305] phi from main to print_cls [phi:main->print_cls] + // [307] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls // [6] phi from main to main::@1 [phi:main->main::@1] @@ -8079,7 +8116,7 @@ main: { // main::@1 b1: // [7] call mulf_init - // [276] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + // [278] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] mulf_init_from_b1: jsr mulf_init // [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -8088,7 +8125,7 @@ main: { // main::@2 b2: // [9] call mul16u_compare - // [200] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] + // [202] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] mul16u_compare_from_b2: jsr mul16u_compare // [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] @@ -8113,7 +8150,7 @@ mul16s_compare: { .label mn = $19 .label mf = $11 .label i = 2 - // [13] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [13] (byte*~) print_char_cursor#222 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -8133,21 +8170,21 @@ mul16s_compare: { sta a lda #>-$7fff sta a+1 - // [14] phi (byte*) print_char_cursor#146 = (byte*~) print_char_cursor#220 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy + // [14] phi (byte*) print_char_cursor#149 = (byte*~) print_char_cursor#222 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy jmp b1 // [14] phi from mul16s_compare::@8 to mul16s_compare::@1 [phi:mul16s_compare::@8->mul16s_compare::@1] b1_from_b8: // [14] phi (byte) mul16s_compare::i#12 = (byte) mul16s_compare::i#1 [phi:mul16s_compare::@8->mul16s_compare::@1#0] -- register_copy // [14] phi (signed word) mul16s_compare::b#6 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@8->mul16s_compare::@1#1] -- register_copy // [14] phi (signed word) mul16s_compare::a#6 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@8->mul16s_compare::@1#2] -- register_copy - // [14] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#130 [phi:mul16s_compare::@8->mul16s_compare::@1#3] -- register_copy + // [14] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#132 [phi:mul16s_compare::@8->mul16s_compare::@1#3] -- register_copy jmp b1 // mul16s_compare::@1 b1: // [15] call print_str // [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str] print_str_from_b1: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#146 [phi:mul16s_compare::@1->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#149 [phi:mul16s_compare::@1->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from_b9: - // [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16s_compare::@9->print_ln#0] -- register_copy + // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16s_compare::@9->print_ln#0] -- register_copy // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@9->print_ln#1] -- register_copy jsr print_ln jmp b13 // mul16s_compare::@13 b13: - // [55] (byte*~) print_char_cursor#180 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [55] (byte*~) print_char_cursor#183 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -8334,7 +8371,7 @@ mul16s_compare: { // [56] call print_str // [64] phi from mul16s_compare::@13 to print_str [phi:mul16s_compare::@13->print_str] print_str_from_b13: - // [64] phi (byte*) print_char_cursor#151 = (byte*~) print_char_cursor#180 [phi:mul16s_compare::@13->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*~) print_char_cursor#183 [phi:mul16s_compare::@13->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str1 [phi:mul16s_compare::@13->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from_b14: - // [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16s_compare::@14->print_ln#0] -- register_copy + // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16s_compare::@14->print_ln#0] -- register_copy // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@14->print_ln#1] -- register_copy jsr print_ln jmp breturn @@ -8373,7 +8410,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - // [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#131) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + // [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -8396,7 +8433,7 @@ print_str: { // [65] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] b1_from_print_str: b1_from_b2: - // [65] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#151 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + // [65] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#154 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy // [65] phi (byte*) print_str::str#15 = (byte*) print_str::str#17 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 // print_str::@1 @@ -8413,12 +8450,12 @@ print_str: { rts // print_str::@2 b2: - // [68] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 + // [68] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - // [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#130 -- pbuz1=_inc_pbuz1 + // [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -8441,7 +8478,7 @@ mul16s_error: { // [72] call print_str // [64] phi from mul16s_error to print_str [phi:mul16s_error->print_str] print_str_from_mul16s_error: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#130 [phi:mul16s_error->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#132 [phi:mul16s_error->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str [phi:mul16s_error->print_str#1] -- pbuz1=pbuc1 lda #print_sword] + // [129] phi from mul16s_error::@1 to print_sword [phi:mul16s_error::@1->print_sword] print_sword_from_b1: - // [127] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:mul16s_error::@1->print_sword#0] -- register_copy + // [129] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:mul16s_error::@1->print_sword#0] -- register_copy jsr print_sword // [75] phi from mul16s_error::@1 to mul16s_error::@2 [phi:mul16s_error::@1->mul16s_error::@2] b2_from_b1: @@ -8465,7 +8502,7 @@ mul16s_error: { // [76] call print_str // [64] phi from mul16s_error::@2 to print_str [phi:mul16s_error::@2->print_str] print_str_from_b2: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@2->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@2->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16s_error::@2->print_str#1] -- pbuz1=pbuc1 lda #print_sword] + // [129] phi from mul16s_error::@3 to print_sword [phi:mul16s_error::@3->print_sword] print_sword_from_b3: - // [127] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:mul16s_error::@3->print_sword#0] -- register_copy + // [129] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:mul16s_error::@3->print_sword#0] -- register_copy jsr print_sword // [79] phi from mul16s_error::@3 to mul16s_error::@4 [phi:mul16s_error::@3->mul16s_error::@4] b4_from_b3: @@ -8493,7 +8530,7 @@ mul16s_error: { // [80] call print_str // [64] phi from mul16s_error::@4 to print_str [phi:mul16s_error::@4->print_str] print_str_from_b4: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@4->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@4->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16s_error::@4->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b6: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@6->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@6->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16s_error::@6->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b8: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@8->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@8->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16s_error::@8->print_str#1] -- pbuz1=pbuc1 lda #print_ln] print_ln_from_b10: - // [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#21 [phi:mul16s_error::@10->print_ln#0] -- register_copy + // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#22 [phi:mul16s_error::@10->print_ln#0] -- register_copy // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_error::@10->print_ln#1] -- register_copy jsr print_ln jmp breturn @@ -8596,25 +8633,56 @@ mul16s_error: { // print_sdword(signed dword zeropage($b) dw) print_sdword: { .label dw = $b - // [95] if((signed dword) print_sdword::dw#4>=(signed byte) 0) goto print_sdword::@1 -- vdsz1_ge_0_then_la1 + // [95] if((signed dword) print_sdword::dw#4<(signed byte) 0) goto print_sdword::@1 -- vdsz1_lt_0_then_la1 lda dw+3 - bpl b1_from_print_sdword - // [96] phi from print_sdword to print_sdword::@2 [phi:print_sdword->print_sdword::@2] - b2_from_print_sdword: - jmp b2 - // print_sdword::@2 - b2: - // [97] call print_char - // [123] phi from print_sdword::@2 to print_char [phi:print_sdword::@2->print_char] - print_char_from_b2: - // [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#130 [phi:print_sdword::@2->print_char#0] -- register_copy - // [123] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuaa=vbuc1 - lda #'-' - jsr print_char + bmi b1_from_print_sdword + // [96] phi from print_sdword to print_sdword::@3 [phi:print_sdword->print_sdword::@3] + b3_from_print_sdword: jmp b3 // print_sdword::@3 b3: - // [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 -- vdsz1=_neg_vdsz1 + // [97] call print_char + // [105] phi from print_sdword::@3 to print_char [phi:print_sdword::@3->print_char] + print_char_from_b3: + // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sdword::@3->print_char#0] -- register_copy + // [105] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sdword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + // [98] phi from print_sdword::@3 print_sdword::@4 to print_sdword::@2 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2] + b2_from_b3: + b2_from_b4: + // [98] phi (signed dword) print_sdword::dw#6 = (signed dword) print_sdword::dw#4 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2#0] -- register_copy + jmp b2 + // print_sdword::@2 + b2: + // [99] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#6 + // [100] call print_dword + // [109] phi from print_sdword::@2 to print_dword [phi:print_sdword::@2->print_dword] + print_dword_from_b2: + // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#22 [phi:print_sdword::@2->print_dword#0] -- register_copy + // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#0 [phi:print_sdword::@2->print_dword#1] -- register_copy + jsr print_dword + jmp breturn + // print_sdword::@return + breturn: + // [101] return + rts + // [102] phi from print_sdword to print_sdword::@1 [phi:print_sdword->print_sdword::@1] + b1_from_print_sdword: + jmp b1 + // print_sdword::@1 + b1: + // [103] call print_char + // [105] phi from print_sdword::@1 to print_char [phi:print_sdword::@1->print_char] + print_char_from_b1: + // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sdword::@1->print_char#0] -- register_copy + // [105] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sdword::@1->print_char#1] -- vbuaa=vbuc1 + lda #'-' + jsr print_char + jmp b4 + // print_sdword::@4 + b4: + // [104] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 -- vdsz1=_neg_vdsz1 sec lda dw eor #$ff @@ -8632,142 +8700,16 @@ print_sdword: { eor #$ff adc #0 sta dw+3 - // [99] phi from print_sdword print_sdword::@3 to print_sdword::@1 [phi:print_sdword/print_sdword::@3->print_sdword::@1] - b1_from_print_sdword: - b1_from_b3: - // [99] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#130 [phi:print_sdword/print_sdword::@3->print_sdword::@1#0] -- register_copy - // [99] phi (signed dword) print_sdword::dw#5 = (signed dword) print_sdword::dw#4 [phi:print_sdword/print_sdword::@3->print_sdword::@1#1] -- register_copy - jmp b1 - // print_sdword::@1 - b1: - // [100] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 - // [101] call print_dword - // [103] phi from print_sdword::@1 to print_dword [phi:print_sdword::@1->print_dword] - print_dword_from_b1: - // [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#137 [phi:print_sdword::@1->print_dword#0] -- register_copy - // [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#0 [phi:print_sdword::@1->print_dword#1] -- register_copy - jsr print_dword - jmp breturn - // print_sdword::@return - breturn: - // [102] return - rts -} - // print_dword -// Print a dword as HEX -// print_dword(dword zeropage($b) dw) -print_dword: { - .label dw = $b - // [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 -- vwuz1=_hi_vduz2 - lda dw+2 - sta print_word.w - lda dw+3 - sta print_word.w+1 - // [105] call print_word - // [109] phi from print_dword to print_word [phi:print_dword->print_word] - print_word_from_print_dword: - // [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#136 [phi:print_dword->print_word#0] -- register_copy - // [109] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy - jsr print_word - jmp b1 - // print_dword::@1 - b1: - // [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 -- vwuz1=_lo_vduz2 - lda dw - sta print_word.w - lda dw+1 - sta print_word.w+1 - // [107] call print_word - // [109] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] - print_word_from_b1: - // [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#21 [phi:print_dword::@1->print_word#0] -- register_copy - // [109] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy - jsr print_word - jmp breturn - // print_dword::@return - breturn: - // [108] return - rts -} - // print_word -// Print a word as HEX -// print_word(word zeropage(3) w) -print_word: { - .label w = 3 - // [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 - lda w+1 - tax - // [111] call print_byte - // [115] phi from print_word to print_byte [phi:print_word->print_byte] - print_byte_from_print_word: - // [115] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy - // [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy - jsr print_byte - jmp b1 - // print_word::@1 - b1: - // [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 -- vbuxx=_lo_vwuz1 - lda w - tax - // [113] call print_byte - // [115] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - print_byte_from_b1: - // [115] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#21 [phi:print_word::@1->print_byte#0] -- register_copy - // [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy - jsr print_byte - jmp breturn - // print_word::@return - breturn: - // [114] return - rts -} - // print_byte -// Print a byte as HEX -// print_byte(byte register(X) b) -print_byte: { - // [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 - txa - lsr - lsr - lsr - lsr - // [117] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa - tay - lda print_hextab,y - // [118] call print_char - // [123] phi from print_byte to print_char [phi:print_byte->print_char] - print_char_from_print_byte: - // [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#139 [phi:print_byte->print_char#0] -- register_copy - // [123] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy - jsr print_char - jmp b1 - // print_byte::@1 - b1: - // [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 - lda #$f - axs #0 - // [120] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx - lda print_hextab,x - // [121] call print_char - // [123] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - print_char_from_b1: - // [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#21 [phi:print_byte::@1->print_char#0] -- register_copy - // [123] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy - jsr print_char - jmp breturn - // print_byte::@return - breturn: - // [122] return - rts + jmp b2_from_b4 } // print_char // Print a single char // print_char(byte register(A) ch) print_char: { - // [124] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa + // [106] *((byte*) print_char_cursor#88) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - // [125] (byte*) print_char_cursor#21 ← ++ (byte*) print_char_cursor#86 -- pbuz1=_inc_pbuz1 + // [107] (byte*) print_char_cursor#22 ← ++ (byte*) print_char_cursor#88 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -8775,7 +8717,114 @@ print_char: { jmp breturn // print_char::@return breturn: - // [126] return + // [108] return + rts +} + // print_dword +// Print a dword as HEX +// print_dword(dword zeropage($b) dw) +print_dword: { + .label dw = $b + // [110] (word) print_word::w#1 ← > (dword) print_dword::dw#4 -- vwuz1=_hi_vduz2 + lda dw+2 + sta print_word.w + lda dw+3 + sta print_word.w+1 + // [111] call print_word + // [115] phi from print_dword to print_word [phi:print_dword->print_word] + print_word_from_print_dword: + // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#138 [phi:print_dword->print_word#0] -- register_copy + // [115] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy + jsr print_word + jmp b1 + // print_dword::@1 + b1: + // [112] (word) print_word::w#2 ← < (dword) print_dword::dw#4 -- vwuz1=_lo_vduz2 + lda dw + sta print_word.w + lda dw+1 + sta print_word.w+1 + // [113] call print_word + // [115] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + print_word_from_b1: + // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#22 [phi:print_dword::@1->print_word#0] -- register_copy + // [115] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy + jsr print_word + jmp breturn + // print_dword::@return + breturn: + // [114] return + rts +} + // print_word +// Print a word as HEX +// print_word(word zeropage(3) w) +print_word: { + .label w = 3 + // [116] (byte) print_byte::b#0 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 + lda w+1 + tax + // [117] call print_byte + // [121] phi from print_word to print_byte [phi:print_word->print_byte] + print_byte_from_print_word: + // [121] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#137 [phi:print_word->print_byte#0] -- register_copy + // [121] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + jsr print_byte + jmp b1 + // print_word::@1 + b1: + // [118] (byte) print_byte::b#1 ← < (word) print_word::w#5 -- vbuxx=_lo_vwuz1 + lda w + tax + // [119] call print_byte + // [121] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + print_byte_from_b1: + // [121] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#22 [phi:print_word::@1->print_byte#0] -- register_copy + // [121] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + jsr print_byte + jmp breturn + // print_word::@return + breturn: + // [120] return + rts +} + // print_byte +// Print a byte as HEX +// print_byte(byte register(X) b) +print_byte: { + // [122] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + txa + lsr + lsr + lsr + lsr + // [123] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + tay + lda print_hextab,y + // [124] call print_char + // [105] phi from print_byte to print_char [phi:print_byte->print_char] + print_char_from_print_byte: + // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#142 [phi:print_byte->print_char#0] -- register_copy + // [105] phi (byte) print_char::ch#6 = (byte) print_char::ch#4 [phi:print_byte->print_char#1] -- register_copy + jsr print_char + jmp b1 + // print_byte::@1 + b1: + // [125] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 + lda #$f + axs #0 + // [126] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + lda print_hextab,x + // [127] call print_char + // [105] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + print_char_from_b1: + // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#22 [phi:print_byte::@1->print_char#0] -- register_copy + // [105] phi (byte) print_char::ch#6 = (byte) print_char::ch#5 [phi:print_byte::@1->print_char#1] -- register_copy + jsr print_char + jmp breturn + // print_byte::@return + breturn: + // [128] return rts } // print_sword @@ -8783,56 +8832,56 @@ print_char: { // print_sword(signed word zeropage(3) w) print_sword: { .label w = 3 - // [128] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 + // [130] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 bmi b1_from_print_sword - // [129] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + // [131] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] b3_from_print_sword: jmp b3 // print_sword::@3 b3: - // [130] call print_char - // [123] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + // [132] call print_char + // [105] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] print_char_from_b3: - // [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#130 [phi:print_sword::@3->print_char#0] -- register_copy - // [123] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sword::@3->print_char#0] -- register_copy + // [105] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - // [131] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + // [133] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] b2_from_b3: b2_from_b4: - // [131] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + // [133] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy jmp b2 // print_sword::@2 b2: - // [132] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 - // [133] call print_word - // [109] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + // [134] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 + // [135] call print_word + // [115] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] print_word_from_b2: - // [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#21 [phi:print_sword::@2->print_word#0] -- register_copy - // [109] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#22 [phi:print_sword::@2->print_word#0] -- register_copy + // [115] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy jsr print_word jmp breturn // print_sword::@return breturn: - // [134] return + // [136] return rts - // [135] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + // [137] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] b1_from_print_sword: jmp b1 // print_sword::@1 b1: - // [136] call print_char - // [123] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + // [138] call print_char + // [105] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] print_char_from_b1: - // [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_char#0] -- register_copy - // [123] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 + // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sword::@1->print_char#0] -- register_copy + // [105] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b4 // print_sword::@4 b4: - // [137] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 + // [139] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -8855,39 +8904,39 @@ mulf16s: { .label return = $11 .label a = 3 .label b = 5 - // [138] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 + // [140] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 lda a sta mulf16u.a lda a+1 sta mulf16u.a+1 - // [139] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 + // [141] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 lda b sta mulf16u.b lda b+1 sta mulf16u.b+1 - // [140] call mulf16u - // [155] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] + // [142] call mulf16u + // [157] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] mulf16u_from_mulf16s: - // [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#0 [phi:mulf16s->mulf16u#0] -- register_copy - // [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#0 [phi:mulf16s->mulf16u#1] -- register_copy + // [157] phi (word) mulf16u::b#2 = (word) mulf16u::b#0 [phi:mulf16s->mulf16u#0] -- register_copy + // [157] phi (word) mulf16u::a#2 = (word) mulf16u::a#0 [phi:mulf16s->mulf16u#1] -- register_copy jsr mulf16u - // [141] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 + // [143] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 jmp b5 // mulf16s::@5 b5: - // [142] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 - // [143] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 + // [144] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 + // [145] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1_from_b5 jmp b3 // mulf16s::@3 b3: - // [144] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + // [146] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _9 lda m+3 sta _9+1 - // [145] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + // [147] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -8895,30 +8944,30 @@ mulf16s: { lda _16+1 sbc b+1 sta _16+1 - // [146] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 + // [148] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - // [147] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1] + // [149] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1] b1_from_b3: b1_from_b5: - // [147] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy + // [149] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy jmp b1 // mulf16s::@1 b1: - // [148] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 + // [150] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2_from_b1 jmp b4 // mulf16s::@4 b4: - // [149] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + // [151] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _13 lda m+3 sta _13+1 - // [150] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + // [152] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -8926,23 +8975,23 @@ mulf16s: { lda _17+1 sbc a+1 sta _17+1 - // [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 + // [153] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - // [152] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] + // [154] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] b2_from_b1: b2_from_b4: - // [152] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy + // [154] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy jmp b2 // mulf16s::@2 b2: - // [153] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 + // [155] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 jmp breturn // mulf16s::@return breturn: - // [154] return + // [156] return rts } // mulf16u @@ -8956,12 +9005,12 @@ mulf16u: { .label return = $11 .label a = $15 .label b = $17 - // [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 + // [158] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 lda a sta memA lda a+1 sta memA+1 - // [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 + // [159] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 lda b sta memB lda b+1 @@ -9059,7 +9108,7 @@ mulf16u: { bcc !+ inc memR+3 !: - // [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 + // [161] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 lda memR sta return lda memR+1 @@ -9071,7 +9120,7 @@ mulf16u: { jmp breturn // mulf16u::@return breturn: - // [160] return + // [162] return rts } // mul16s @@ -9087,21 +9136,21 @@ mul16s: { .label return = $19 .label a = 3 .label b = 5 - // [161] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + // [163] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - // [162] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 + // [164] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 lda b sta mul16u.b lda b+1 sta mul16u.b+1 - // [163] call mul16u - // [178] phi from mul16s to mul16u [phi:mul16s->mul16u] + // [165] call mul16u + // [180] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - // [178] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy - // [178] phi (dword) mul16u::mb#0 = (word) mul16u::b#0 [phi:mul16s->mul16u#1] -- vduz1=vwuz2 + // [180] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy + // [180] phi (dword) mul16u::mb#0 = (word) mul16u::b#0 [phi:mul16s->mul16u#1] -- vduz1=vwuz2 lda mul16u.b sta mul16u.mb lda mul16u.b+1 @@ -9110,23 +9159,23 @@ mul16s: { sta mul16u.mb+2 sta mul16u.mb+3 jsr mul16u - // [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + // [166] (dword) mul16u::return#2 ← (dword) mul16u::res#2 jmp b5 // mul16s::@5 b5: - // [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - // [166] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + // [167] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + // [168] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1_from_b5 jmp b3 // mul16s::@3 b3: - // [167] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + // [169] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _9 lda m+3 sta _9+1 - // [168] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + // [170] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -9134,30 +9183,30 @@ mul16s: { lda _16+1 sbc b+1 sta _16+1 - // [169] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + // [171] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - // [170] phi from mul16s::@3 mul16s::@5 to mul16s::@1 [phi:mul16s::@3/mul16s::@5->mul16s::@1] + // [172] phi from mul16s::@3 mul16s::@5 to mul16s::@1 [phi:mul16s::@3/mul16s::@5->mul16s::@1] b1_from_b3: b1_from_b5: - // [170] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@5->mul16s::@1#0] -- register_copy + // [172] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@5->mul16s::@1#0] -- register_copy jmp b1 // mul16s::@1 b1: - // [171] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 + // [173] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2_from_b1 jmp b4 // mul16s::@4 b4: - // [172] (word~) mul16s::$13 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 + // [174] (word~) mul16s::$13 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _13 lda m+3 sta _13+1 - // [173] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + // [175] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -9165,23 +9214,23 @@ mul16s: { lda _17+1 sbc a+1 sta _17+1 - // [174] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 + // [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - // [175] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] + // [177] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] b2_from_b1: b2_from_b4: - // [175] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy + // [177] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy jmp b2 // mul16s::@2 b2: - // [176] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 + // [178] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 jmp breturn // mul16s::@return breturn: - // [177] return + // [179] return rts } // mul16u @@ -9194,21 +9243,21 @@ mul16u: { .label b = $1d .label return = $19 .label b_1 = $17 - // [179] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + // [181] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - // [179] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - // [179] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + // [181] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + // [181] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res lda #0 sta res+1 sta res+2 sta res+3 - // [179] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + // [181] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 // mul16u::@1 b1: - // [180] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + // [182] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 @@ -9216,20 +9265,20 @@ mul16u: { jmp breturn // mul16u::@return breturn: - // [181] return + // [183] return rts // mul16u::@2 b2: - // [182] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 + // [184] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - // [183] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 + // [185] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 jmp b4 // mul16u::@4 b4: - // [184] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + // [186] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -9243,26 +9292,26 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - // [185] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + // [187] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] b3_from_b2: b3_from_b4: - // [185] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + // [187] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy jmp b3 // mul16u::@3 b3: - // [186] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + // [188] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr a+1 ror a - // [187] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 + // [189] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - // [179] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + // [181] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] b1_from_b3: - // [179] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - // [179] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - // [179] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + // [181] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + // [181] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + // [181] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp b1 } // muls16s @@ -9276,27 +9325,27 @@ muls16s: { .label i = $27 .label a = 3 .label b = 5 - // [188] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 -- vwsz1_lt_0_then_la1 + // [190] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 -- vwsz1_lt_0_then_la1 lda a+1 bmi b4_from_muls16s jmp b2 // muls16s::@2 b2: - // [189] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 -- vwsz1_le_0_then_la1 + // [191] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 -- vwsz1_le_0_then_la1 lda a+1 bmi b1_from_b2 bne !+ lda a beq b1_from_b2 !: - // [190] phi from muls16s::@2 to muls16s::@3 [phi:muls16s::@2->muls16s::@3] + // [192] phi from muls16s::@2 to muls16s::@3 [phi:muls16s::@2->muls16s::@3] b3_from_b2: - // [190] phi (signed word) muls16s::j#2 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#0] -- vwsz1=vbsc1 + // [192] phi (signed word) muls16s::j#2 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#0] -- vwsz1=vbsc1 lda #<0 sta j lda #>0 sta j+1 - // [190] phi (signed dword) muls16s::m#3 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#1] -- vdsz1=vbsc1 + // [192] phi (signed dword) muls16s::m#3 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#1] -- vdsz1=vbsc1 lda #0 sta m lda #0 @@ -9304,14 +9353,14 @@ muls16s: { sta m+2 sta m+3 jmp b3 - // [190] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] + // [192] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] b3_from_b3: - // [190] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy - // [190] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy + // [192] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy + // [192] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy jmp b3 // muls16s::@3 b3: - // [191] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 + // [193] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -9331,26 +9380,26 @@ muls16s: { lda m+3 adc $ff sta m+3 - // [192] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 + // [194] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 inc j bne !+ inc j+1 !: - // [193] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 + // [195] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 lda j+1 cmp a+1 bne b3_from_b3 lda j cmp a bne b3_from_b3 - // [194] phi from muls16s::@3 muls16s::@4 to muls16s::@1 [phi:muls16s::@3/muls16s::@4->muls16s::@1] + // [196] phi from muls16s::@3 muls16s::@4 to muls16s::@1 [phi:muls16s::@3/muls16s::@4->muls16s::@1] b1_from_b3: b1_from_b4: - // [194] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@4->muls16s::@1#0] -- register_copy + // [196] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@4->muls16s::@1#0] -- register_copy jmp b1 - // [194] phi from muls16s::@2 to muls16s::@1 [phi:muls16s::@2->muls16s::@1] + // [196] phi from muls16s::@2 to muls16s::@1 [phi:muls16s::@2->muls16s::@1] b1_from_b2: - // [194] phi (signed dword) muls16s::return#0 = (signed byte) 0 [phi:muls16s::@2->muls16s::@1#0] -- vdsz1=vbsc1 + // [196] phi (signed dword) muls16s::return#0 = (signed byte) 0 [phi:muls16s::@2->muls16s::@1#0] -- vdsz1=vbsc1 lda #0 sta return lda #0 @@ -9363,16 +9412,16 @@ muls16s: { jmp breturn // muls16s::@return breturn: - // [195] return + // [197] return rts - // [196] phi from muls16s to muls16s::@4 [phi:muls16s->muls16s::@4] + // [198] phi from muls16s to muls16s::@4 [phi:muls16s->muls16s::@4] b4_from_muls16s: - // [196] phi (signed word) muls16s::i#2 = (signed byte) 0 [phi:muls16s->muls16s::@4#0] -- vwsz1=vbsc1 + // [198] phi (signed word) muls16s::i#2 = (signed byte) 0 [phi:muls16s->muls16s::@4#0] -- vwsz1=vbsc1 lda #<0 sta i lda #>0 sta i+1 - // [196] phi (signed dword) muls16s::m#5 = (signed byte) 0 [phi:muls16s->muls16s::@4#1] -- vdsz1=vbsc1 + // [198] phi (signed dword) muls16s::m#5 = (signed byte) 0 [phi:muls16s->muls16s::@4#1] -- vdsz1=vbsc1 lda #0 sta m lda #0 @@ -9380,14 +9429,14 @@ muls16s: { sta m+2 sta m+3 jmp b4 - // [196] phi from muls16s::@4 to muls16s::@4 [phi:muls16s::@4->muls16s::@4] + // [198] phi from muls16s::@4 to muls16s::@4 [phi:muls16s::@4->muls16s::@4] b4_from_b4: - // [196] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@4->muls16s::@4#0] -- register_copy - // [196] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@4->muls16s::@4#1] -- register_copy + // [198] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@4->muls16s::@4#0] -- register_copy + // [198] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@4->muls16s::@4#1] -- register_copy jmp b4 // muls16s::@4 b4: - // [197] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 + // [199] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -9407,13 +9456,13 @@ muls16s: { lda m+3 sbc $ff sta m+3 - // [198] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 + // [200] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 lda i bne !+ dec i+1 !: dec i - // [199] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 -- vwsz1_neq_vwsz2_then_la1 + // [201] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 -- vwsz1_neq_vwsz2_then_la1 lda i+1 cmp a+1 bne b4_from_b4 @@ -9431,62 +9480,62 @@ mul16u_compare: { .label mn = $19 .label mf = $11 .label i = $29 - // [201] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] + // [203] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] b1_from_mul16u_compare: - // [201] phi (byte) mul16u_compare::i#12 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 + // [203] phi (byte) mul16u_compare::i#12 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta i - // [201] phi (word) mul16u_compare::b#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 + // [203] phi (word) mul16u_compare::b#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 lda #<0 sta b lda #>0 sta b+1 - // [201] phi (word) mul16u_compare::a#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 + // [203] phi (word) mul16u_compare::a#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 lda #<0 sta a lda #>0 sta a+1 - // [201] phi (byte*) print_char_cursor#142 = (byte*) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 + // [203] phi (byte*) print_char_cursor#145 = (byte*) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 jmp b1 - // [201] phi from mul16u_compare::@8 to mul16u_compare::@1 [phi:mul16u_compare::@8->mul16u_compare::@1] + // [203] phi from mul16u_compare::@8 to mul16u_compare::@1 [phi:mul16u_compare::@8->mul16u_compare::@1] b1_from_b8: - // [201] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@8->mul16u_compare::@1#0] -- register_copy - // [201] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@8->mul16u_compare::@1#1] -- register_copy - // [201] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@8->mul16u_compare::@1#2] -- register_copy - // [201] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#130 [phi:mul16u_compare::@8->mul16u_compare::@1#3] -- register_copy + // [203] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@8->mul16u_compare::@1#0] -- register_copy + // [203] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@8->mul16u_compare::@1#1] -- register_copy + // [203] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@8->mul16u_compare::@1#2] -- register_copy + // [203] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#132 [phi:mul16u_compare::@8->mul16u_compare::@1#3] -- register_copy jmp b1 // mul16u_compare::@1 b1: - // [202] call print_str + // [204] call print_str // [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] print_str_from_b1: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#142 [phi:mul16u_compare::@1->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#145 [phi:mul16u_compare::@1->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - // [203] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] + // [205] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] b2_from_b1: - // [203] phi (byte) mul16u_compare::j#10 = (byte) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuyy=vbuc1 + // [205] phi (byte) mul16u_compare::j#10 = (byte) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuyy=vbuc1 ldy #0 - // [203] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy - // [203] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy + // [205] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy + // [205] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy jmp b2 - // [203] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] + // [205] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] b2_from_b5: - // [203] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy - // [203] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy - // [203] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy + // [205] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy + // [205] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy + // [205] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy jmp b2 // mul16u_compare::@2 b2: - // [204] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b -- vwuz1=vwuz1_plus_vwuc1 + // [206] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b -- vwuz1=vwuz1_plus_vwuc1 clc lda a adc #<$d2b @@ -9494,7 +9543,7 @@ mul16u_compare: { lda a+1 adc #>$d2b sta a+1 - // [205] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd -- vwuz1=vwuz1_plus_vwuc1 + // [207] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd -- vwuz1=vwuz1_plus_vwuc1 clc lda b adc #<$ffd @@ -9502,26 +9551,26 @@ mul16u_compare: { lda b+1 adc #>$ffd sta b+1 - // [206] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 - // [207] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 - // [208] call muls16u + // [208] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 + // [209] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 + // [210] call muls16u jsr muls16u - // [209] (dword) muls16u::return#2 ← (dword) muls16u::return#0 + // [211] (dword) muls16u::return#2 ← (dword) muls16u::return#0 jmp b10 // mul16u_compare::@10 b10: - // [210] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 - // [211] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + // [212] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 + // [213] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - // [212] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 - // [213] call mul16u - // [178] phi from mul16u_compare::@10 to mul16u [phi:mul16u_compare::@10->mul16u] + // [214] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 + // [215] call mul16u + // [180] phi from mul16u_compare::@10 to mul16u [phi:mul16u_compare::@10->mul16u] mul16u_from_b10: - // [178] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@10->mul16u#0] -- register_copy - // [178] phi (dword) mul16u::mb#0 = (word) mul16u::b#1 [phi:mul16u_compare::@10->mul16u#1] -- vduz1=vwuz2 + // [180] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@10->mul16u#0] -- register_copy + // [180] phi (dword) mul16u::mb#0 = (word) mul16u::b#1 [phi:mul16u_compare::@10->mul16u#1] -- vduz1=vwuz2 lda mul16u.b_1 sta mul16u.mb lda mul16u.b_1+1 @@ -9530,25 +9579,25 @@ mul16u_compare: { sta mul16u.mb+2 sta mul16u.mb+3 jsr mul16u - // [214] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + // [216] (dword) mul16u::return#3 ← (dword) mul16u::res#2 jmp b11 // mul16u_compare::@11 b11: - // [215] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 - // [216] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 - // [217] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 - // [218] call mulf16u - // [155] phi from mul16u_compare::@11 to mulf16u [phi:mul16u_compare::@11->mulf16u] + // [217] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 + // [218] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 + // [219] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 + // [220] call mulf16u + // [157] phi from mul16u_compare::@11 to mulf16u [phi:mul16u_compare::@11->mulf16u] mulf16u_from_b11: - // [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@11->mulf16u#0] -- register_copy - // [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@11->mulf16u#1] -- register_copy + // [157] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@11->mulf16u#0] -- register_copy + // [157] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@11->mulf16u#1] -- register_copy jsr mulf16u - // [219] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 + // [221] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 jmp b12 // mul16u_compare::@12 b12: - // [220] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 - // [221] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 + // [222] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 + // [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 lda ms cmp mf bne !+ @@ -9562,24 +9611,24 @@ mul16u_compare: { cmp mf+3 beq b3_from_b12 !: - // [222] phi from mul16u_compare::@12 to mul16u_compare::@6 [phi:mul16u_compare::@12->mul16u_compare::@6] + // [224] phi from mul16u_compare::@12 to mul16u_compare::@6 [phi:mul16u_compare::@12->mul16u_compare::@6] b6_from_b12: jmp b6 // mul16u_compare::@6 b6: - // [223] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] + // [225] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] b3_from_b6: - // [223] phi (byte) mul16u_compare::ok#4 = (byte) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuxx=vbuc1 + // [225] phi (byte) mul16u_compare::ok#4 = (byte) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - // [223] phi from mul16u_compare::@12 to mul16u_compare::@3 [phi:mul16u_compare::@12->mul16u_compare::@3] + // [225] phi from mul16u_compare::@12 to mul16u_compare::@3 [phi:mul16u_compare::@12->mul16u_compare::@3] b3_from_b12: - // [223] phi (byte) mul16u_compare::ok#4 = (byte) 1 [phi:mul16u_compare::@12->mul16u_compare::@3#0] -- vbuxx=vbuc1 + // [225] phi (byte) mul16u_compare::ok#4 = (byte) 1 [phi:mul16u_compare::@12->mul16u_compare::@3#0] -- vbuxx=vbuc1 ldx #1 jmp b3 // mul16u_compare::@3 b3: - // [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 -- vduz1_eq_vduz2_then_la1 + // [226] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 -- vduz1_eq_vduz2_then_la1 lda ms cmp mn bne !+ @@ -9593,74 +9642,74 @@ mul16u_compare: { cmp mn+3 beq b15_from_b3 !: - // [226] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] + // [228] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] b4_from_b3: - // [226] phi (byte) mul16u_compare::ok#3 = (byte) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuxx=vbuc1 + // [228] phi (byte) mul16u_compare::ok#3 = (byte) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuxx=vbuc1 ldx #0 jmp b4 - // [225] phi from mul16u_compare::@3 to mul16u_compare::@15 [phi:mul16u_compare::@3->mul16u_compare::@15] + // [227] phi from mul16u_compare::@3 to mul16u_compare::@15 [phi:mul16u_compare::@3->mul16u_compare::@15] b15_from_b3: jmp b15 // mul16u_compare::@15 b15: - // [226] phi from mul16u_compare::@15 to mul16u_compare::@4 [phi:mul16u_compare::@15->mul16u_compare::@4] + // [228] phi from mul16u_compare::@15 to mul16u_compare::@4 [phi:mul16u_compare::@15->mul16u_compare::@4] b4_from_b15: - // [226] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@15->mul16u_compare::@4#0] -- register_copy + // [228] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@15->mul16u_compare::@4#0] -- register_copy jmp b4 // mul16u_compare::@4 b4: - // [227] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 -- vbuxx_neq_0_then_la1 + // [229] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 jmp b7 // mul16u_compare::@7 b7: - // [228] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 + // [230] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - // [229] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + // [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u_error.a lda a+1 sta mul16u_error.a+1 - // [230] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 - // [231] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 - // [232] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 - // [233] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 - // [234] call mul16u_error - // [246] phi from mul16u_compare::@7 to mul16u_error [phi:mul16u_compare::@7->mul16u_error] + // [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 + // [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 + // [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 + // [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 + // [236] call mul16u_error + // [248] phi from mul16u_compare::@7 to mul16u_error [phi:mul16u_compare::@7->mul16u_error] mul16u_error_from_b7: jsr mul16u_error jmp breturn // mul16u_compare::@return breturn: - // [235] return + // [237] return rts // mul16u_compare::@5 b5: - // [236] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy + // [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy iny - // [237] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 -- vbuyy_neq_vbuc1_then_la1 + // [239] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 -- vbuyy_neq_vbuc1_then_la1 cpy #$10 bne b2_from_b5 jmp b8 // mul16u_compare::@8 b8: - // [238] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 + // [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 inc i - // [239] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 + // [241] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$10 cmp i bne b1_from_b8 - // [240] phi from mul16u_compare::@8 to mul16u_compare::@9 [phi:mul16u_compare::@8->mul16u_compare::@9] + // [242] phi from mul16u_compare::@8 to mul16u_compare::@9 [phi:mul16u_compare::@8->mul16u_compare::@9] b9_from_b8: jmp b9 // mul16u_compare::@9 b9: - // [241] call print_ln + // [243] call print_ln // [59] phi from mul16u_compare::@9 to print_ln [phi:mul16u_compare::@9->print_ln] print_ln_from_b9: - // [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16u_compare::@9->print_ln#0] -- register_copy + // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16u_compare::@9->print_ln#0] -- register_copy // [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_compare::@9->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor @@ -9670,30 +9719,30 @@ mul16u_compare: { jmp b13 // mul16u_compare::@13 b13: - // [242] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [244] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - // [243] call print_str + // [245] call print_str // [64] phi from mul16u_compare::@13 to print_str [phi:mul16u_compare::@13->print_str] print_str_from_b13: - // [64] phi (byte*) print_char_cursor#151 = (byte*~) print_char_cursor#187 [phi:mul16u_compare::@13->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*~) print_char_cursor#190 [phi:mul16u_compare::@13->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@13->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - // [244] phi from mul16u_compare::@13 to mul16u_compare::@14 [phi:mul16u_compare::@13->mul16u_compare::@14] + // [246] phi from mul16u_compare::@13 to mul16u_compare::@14 [phi:mul16u_compare::@13->mul16u_compare::@14] b14_from_b13: jmp b14 // mul16u_compare::@14 b14: - // [245] call print_ln + // [247] call print_ln // [59] phi from mul16u_compare::@14 to print_ln [phi:mul16u_compare::@14->print_ln] print_ln_from_b14: - // [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16u_compare::@14->print_ln#0] -- register_copy + // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16u_compare::@14->print_ln#0] -- register_copy // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@14->print_ln#1] -- register_copy jsr print_ln jmp breturn @@ -9707,10 +9756,10 @@ mul16u_error: { .label ms = $b .label mn = $19 .label mf = $11 - // [247] call print_str + // [249] call print_str // [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] print_str_from_mul16u_error: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#130 [phi:mul16u_error->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#132 [phi:mul16u_error->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 lda #print_word] + // [250] (word) print_word::w#3 ← (word) mul16u_error::a#0 + // [251] call print_word + // [115] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] print_word_from_b1: - // [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:mul16u_error::@1->print_word#0] -- register_copy - // [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy + // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#132 [phi:mul16u_error::@1->print_word#0] -- register_copy + // [115] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy jsr print_word - // [250] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] + // [252] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] b2_from_b1: jmp b2 // mul16u_error::@2 b2: - // [251] call print_str + // [253] call print_str // [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] print_str_from_b2: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@2->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@2->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #print_word] + // [255] call print_word + // [115] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] print_word_from_b3: - // [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:mul16u_error::@3->print_word#0] -- register_copy - // [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy + // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#132 [phi:mul16u_error::@3->print_word#0] -- register_copy + // [115] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy jsr print_word - // [254] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] + // [256] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] b4_from_b3: jmp b4 // mul16u_error::@4 b4: - // [255] call print_str + // [257] call print_str // [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] print_str_from_b4: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@4->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@4->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #print_dword] + // [258] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 + // [259] call print_dword + // [109] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] print_dword_from_b5: - // [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#130 [phi:mul16u_error::@5->print_dword#0] -- register_copy - // [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy + // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#132 [phi:mul16u_error::@5->print_dword#0] -- register_copy + // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy jsr print_dword - // [258] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] + // [260] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] b6_from_b5: jmp b6 // mul16u_error::@6 b6: - // [259] call print_str + // [261] call print_str // [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] print_str_from_b6: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@6->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@6->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #print_dword] + // [263] call print_dword + // [109] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] print_dword_from_b7: - // [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#130 [phi:mul16u_error::@7->print_dword#0] -- register_copy - // [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy + // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#132 [phi:mul16u_error::@7->print_dword#0] -- register_copy + // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy jsr print_dword - // [262] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] + // [264] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] b8_from_b7: jmp b8 // mul16u_error::@8 b8: - // [263] call print_str + // [265] call print_str // [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] print_str_from_b8: - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@8->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@8->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #print_dword] + // [267] call print_dword + // [109] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] print_dword_from_b9: - // [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#130 [phi:mul16u_error::@9->print_dword#0] -- register_copy - // [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy + // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#132 [phi:mul16u_error::@9->print_dword#0] -- register_copy + // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy jsr print_dword - // [266] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] + // [268] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] b10_from_b9: jmp b10 // mul16u_error::@10 b10: - // [267] call print_ln + // [269] call print_ln // [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] print_ln_from_b10: - // [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#21 [phi:mul16u_error::@10->print_ln#0] -- register_copy + // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#22 [phi:mul16u_error::@10->print_ln#0] -- register_copy // [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor @@ -9865,7 +9914,7 @@ mul16u_error: { jmp breturn // mul16u_error::@return breturn: - // [268] return + // [270] return rts str: .text "multiply mismatch @" } @@ -9879,20 +9928,20 @@ muls16u: { .label i = $2a .label a = $15 .label b = $17 - // [269] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 + // [271] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 lda a bne !+ lda a+1 beq b1_from_muls16u !: - // [270] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] + // [272] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] b2_from_muls16u: - // [270] phi (word) muls16u::i#2 = (byte) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 + // [272] phi (word) muls16u::i#2 = (byte) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - // [270] phi (dword) muls16u::m#3 = (byte) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 + // [272] phi (dword) muls16u::m#3 = (byte) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 lda #0 sta m lda #0 @@ -9900,14 +9949,14 @@ muls16u: { sta m+2 sta m+3 jmp b2 - // [270] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] + // [272] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] b2_from_b2: - // [270] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy - // [270] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy + // [272] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy + // [272] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy jmp b2 // muls16u::@2 b2: - // [271] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 + // [273] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 lda m clc adc b @@ -9921,25 +9970,25 @@ muls16u: { lda m+3 adc #0 sta m+3 - // [272] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 + // [274] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - // [273] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 + // [275] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 lda i+1 cmp a+1 bne b2_from_b2 lda i cmp a bne b2_from_b2 - // [274] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] + // [276] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] b1_from_b2: - // [274] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy + // [276] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy jmp b1 - // [274] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] + // [276] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] b1_from_muls16u: - // [274] phi (dword) muls16u::return#0 = (byte) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 + // [276] phi (dword) muls16u::return#0 = (byte) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 lda #0 sta return lda #0 @@ -9952,7 +10001,7 @@ muls16u: { jmp breturn // muls16u::@return breturn: - // [275] return + // [277] return rts } // mulf_init @@ -9965,81 +10014,81 @@ mulf_init: { .label sqr2_hi = $35 .label sqr2_lo = $33 .label dir = $37 - // [277] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + // [279] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - // [277] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + // [279] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - // [277] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + // [279] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - // [277] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + // [279] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - // [277] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + // [279] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr lda #>0 sta sqr+1 - // [277] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 + // [279] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 ldx #0 jmp b1 - // [277] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + // [279] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - // [277] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - // [277] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - // [277] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - // [277] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - // [277] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + // [279] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + // [279] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + // [279] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + // [279] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + // [279] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 // mulf_init::@1 b1: - // [278] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + // [280] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - // [279] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + // [281] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - // [280] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + // [282] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2_from_b1 jmp b3 // mulf_init::@3 b3: - // [281] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + // [283] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - // [282] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + // [284] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - // [283] phi from mulf_init::@1 mulf_init::@3 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2] + // [285] phi from mulf_init::@1 mulf_init::@3 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2] b2_from_b1: b2_from_b3: - // [283] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#0] -- register_copy - // [283] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#1] -- register_copy + // [285] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#0] -- register_copy + // [285] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#1] -- register_copy jmp b2 // mulf_init::@2 b2: - // [284] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + // [286] (byte~) mulf_init::$10 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - // [285] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 -- _deref_pbuz1=vbuaa + // [287] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$10 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - // [286] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + // [288] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - // [287] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 -- _deref_pbuz1=vbuaa + // [289] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_hi),y - // [288] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + // [290] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - // [289] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + // [291] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -10047,89 +10096,89 @@ mulf_init: { bcc !+ inc sqr+1 !: - // [290] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + // [292] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - // [291] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + // [293] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #mulf_init::@4] + // [294] phi from mulf_init::@2 to mulf_init::@4 [phi:mulf_init::@2->mulf_init::@4] b4_from_b2: - // [292] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@2->mulf_init::@4#0] -- vbuz1=vbuc1 + // [294] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@2->mulf_init::@4#0] -- vbuz1=vbuc1 lda #$ff sta dir - // [292] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@4#1] -- pbuz1=pbuc1 + // [294] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@4#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - // [292] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@4#2] -- pbuz1=pbuc1 + // [294] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@4#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - // [292] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@2->mulf_init::@4#3] -- vbuxx=vbuc1 + // [294] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@2->mulf_init::@4#3] -- vbuxx=vbuc1 ldx #-1 jmp b4 - // [292] phi from mulf_init::@5 to mulf_init::@4 [phi:mulf_init::@5->mulf_init::@4] + // [294] phi from mulf_init::@5 to mulf_init::@4 [phi:mulf_init::@5->mulf_init::@4] b4_from_b5: - // [292] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@5->mulf_init::@4#0] -- register_copy - // [292] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@5->mulf_init::@4#1] -- register_copy - // [292] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@5->mulf_init::@4#2] -- register_copy - // [292] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@5->mulf_init::@4#3] -- register_copy + // [294] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@5->mulf_init::@4#0] -- register_copy + // [294] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@5->mulf_init::@4#1] -- register_copy + // [294] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@5->mulf_init::@4#2] -- register_copy + // [294] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@5->mulf_init::@4#3] -- register_copy jmp b4 // mulf_init::@4 b4: - // [293] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + // [295] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - // [294] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + // [296] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x ldy #0 sta (sqr2_hi),y - // [295] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + // [297] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - // [296] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + // [298] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - // [297] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 -- vbuxx_neq_0_then_la1 + // [299] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 -- vbuxx_neq_0_then_la1 cpx #0 bne b7_from_b4 - // [299] phi from mulf_init::@4 to mulf_init::@5 [phi:mulf_init::@4->mulf_init::@5] + // [301] phi from mulf_init::@4 to mulf_init::@5 [phi:mulf_init::@4->mulf_init::@5] b5_from_b4: - // [299] phi (byte) mulf_init::dir#3 = (byte) 1 [phi:mulf_init::@4->mulf_init::@5#0] -- vbuz1=vbuc1 + // [301] phi (byte) mulf_init::dir#3 = (byte) 1 [phi:mulf_init::@4->mulf_init::@5#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b5 - // [298] phi from mulf_init::@4 to mulf_init::@7 [phi:mulf_init::@4->mulf_init::@7] + // [300] phi from mulf_init::@4 to mulf_init::@7 [phi:mulf_init::@4->mulf_init::@7] b7_from_b4: jmp b7 // mulf_init::@7 b7: - // [299] phi from mulf_init::@7 to mulf_init::@5 [phi:mulf_init::@7->mulf_init::@5] + // [301] phi from mulf_init::@7 to mulf_init::@5 [phi:mulf_init::@7->mulf_init::@5] b5_from_b7: - // [299] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@7->mulf_init::@5#0] -- register_copy + // [301] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@7->mulf_init::@5#0] -- register_copy jmp b5 // mulf_init::@5 b5: - // [300] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + // [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - // [301] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 -- pbuz1_neq_pbuc1_then_la1 + // [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b4_from_b5 @@ -10139,47 +10188,47 @@ mulf_init: { jmp b6 // mulf_init::@6 b6: - // [302] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) -- _deref_pbuc1=_deref_pbuc2 + // [304] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) -- _deref_pbuc1=_deref_pbuc2 // Set the very last value g(511) = f(256) lda mulf_sqr1_lo+$100 sta mulf_sqr2_lo+$1ff - // [303] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) -- _deref_pbuc1=_deref_pbuc2 + // [305] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) -- _deref_pbuc1=_deref_pbuc2 lda mulf_sqr1_hi+$100 sta mulf_sqr2_hi+$1ff jmp breturn // mulf_init::@return breturn: - // [304] return + // [306] return rts } // print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $38 - // [306] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + // [308] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - // [306] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + // [308] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - // [306] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + // [308] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - // [306] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + // [308] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 // print_cls::@1 b1: - // [307] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + // [309] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - // [308] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + // [310] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - // [309] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + // [311] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -10189,7 +10238,7 @@ print_cls: { jmp breturn // print_cls::@return breturn: - // [310] return + // [312] return rts } // File Data @@ -10250,9 +10299,11 @@ Removing instruction jmp b8 Removing instruction jmp b9 Removing instruction jmp b10 Removing instruction jmp breturn -Removing instruction jmp b2 Removing instruction jmp b3 +Removing instruction jmp b2 +Removing instruction jmp breturn Removing instruction jmp b1 +Removing instruction jmp b4 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn @@ -10260,7 +10311,6 @@ Removing instruction jmp b1 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn -Removing instruction jmp breturn Removing instruction jmp b3 Removing instruction jmp b2 Removing instruction jmp breturn @@ -10357,6 +10407,7 @@ Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b2 with b1 Replacing label b1_from_print_sdword with b1 +Replacing label b2_from_b4 with b2 Replacing label b1_from_print_sword with b1 Replacing label b2_from_b4 with b2 Replacing label b1_from_b5 with b1 @@ -10417,11 +10468,13 @@ Removing instruction b8_from_b7: Removing instruction print_str_from_b8: Removing instruction b10_from_b9: Removing instruction print_ln_from_b10: -Removing instruction b2_from_print_sdword: -Removing instruction print_char_from_b2: +Removing instruction b3_from_print_sdword: +Removing instruction print_char_from_b3: +Removing instruction b2_from_b3: +Removing instruction b2_from_b4: +Removing instruction print_dword_from_b2: Removing instruction b1_from_print_sdword: -Removing instruction b1_from_b3: -Removing instruction print_dword_from_b1: +Removing instruction print_char_from_b1: Removing instruction b3_from_print_sword: Removing instruction print_char_from_b3: Removing instruction b2_from_b3: @@ -10518,9 +10571,10 @@ Removing instruction b9: Removing instruction print_sdword_from_b9: Removing instruction b10: Removing instruction breturn: -Removing instruction b2: Removing instruction b3: Removing instruction breturn: +Removing instruction b4: +Removing instruction breturn: Removing instruction print_word_from_print_dword: Removing instruction b1: Removing instruction print_word_from_b1: @@ -10533,7 +10587,6 @@ Removing instruction print_char_from_print_byte: Removing instruction b1: Removing instruction print_char_from_b1: Removing instruction breturn: -Removing instruction breturn: Removing instruction b3: Removing instruction breturn: Removing instruction b4: @@ -10636,8 +10689,8 @@ Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction b1: Succesful ASM optimization Pass5UnusedLabelElimination Fixing long branch [109] bne b1 to beq -Fixing long branch [834] bne b2 to beq -Fixing long branch [840] bne b1 to beq +Fixing long branch [838] bne b2 to beq +Fixing long branch [844] bne b1 to beq FINAL SYMBOL TABLE (label) @1 @@ -10976,25 +11029,24 @@ FINAL SYMBOL TABLE (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#3 reg byte a 4.0 (byte) print_char::ch#4 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 6.0 +(byte) print_char::ch#5 reg byte a 4.0 +(byte) print_char::ch#6 reg byte a 6.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:15 101.0 -(byte*) print_char_cursor#130 print_char_cursor zp ZP_WORD:15 3.2162162162162145 -(byte*) print_char_cursor#131 print_char_cursor zp ZP_WORD:15 5.75 -(byte*) print_char_cursor#135 print_char_cursor zp ZP_WORD:15 6.0 -(byte*) print_char_cursor#136 print_char_cursor zp ZP_WORD:15 5.0 -(byte*) print_char_cursor#137 print_char_cursor zp ZP_WORD:15 3.0 -(byte*) print_char_cursor#139 print_char_cursor zp ZP_WORD:15 2.0 -(byte*) print_char_cursor#142 print_char_cursor zp ZP_WORD:15 22.0 -(byte*) print_char_cursor#146 print_char_cursor zp ZP_WORD:15 24.0 -(byte*) print_char_cursor#151 print_char_cursor zp ZP_WORD:15 48.0 -(byte*~) print_char_cursor#180 print_char_cursor zp ZP_WORD:15 4.0 -(byte*~) print_char_cursor#187 print_char_cursor zp ZP_WORD:15 4.0 -(byte*) print_char_cursor#21 print_char_cursor zp ZP_WORD:15 0.6956521739130432 -(byte*~) print_char_cursor#220 print_char_cursor zp ZP_WORD:15 4.0 -(byte*) print_char_cursor#86 print_char_cursor zp ZP_WORD:15 7.0 +(byte*) print_char_cursor#132 print_char_cursor zp ZP_WORD:15 3.1874999999999996 +(byte*) print_char_cursor#133 print_char_cursor zp ZP_WORD:15 5.75 +(byte*) print_char_cursor#137 print_char_cursor zp ZP_WORD:15 6.0 +(byte*) print_char_cursor#138 print_char_cursor zp ZP_WORD:15 5.0 +(byte*) print_char_cursor#142 print_char_cursor zp ZP_WORD:15 2.0 +(byte*) print_char_cursor#145 print_char_cursor zp ZP_WORD:15 22.0 +(byte*) print_char_cursor#149 print_char_cursor zp ZP_WORD:15 24.0 +(byte*) print_char_cursor#154 print_char_cursor zp ZP_WORD:15 48.0 +(byte*~) print_char_cursor#183 print_char_cursor zp ZP_WORD:15 4.0 +(byte*~) print_char_cursor#190 print_char_cursor zp ZP_WORD:15 4.0 +(byte*) print_char_cursor#22 print_char_cursor zp ZP_WORD:15 0.653061224489796 +(byte*~) print_char_cursor#222 print_char_cursor zp ZP_WORD:15 4.0 +(byte*) print_char_cursor#88 print_char_cursor zp ZP_WORD:15 8.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -11024,14 +11076,15 @@ FINAL SYMBOL TABLE (label) print_sdword::@1 (label) print_sdword::@2 (label) print_sdword::@3 +(label) print_sdword::@4 (label) print_sdword::@return (signed dword) print_sdword::dw (signed dword) print_sdword::dw#0 dw zp ZP_DWORD:11 4.0 (signed dword) print_sdword::dw#1 dw zp ZP_DWORD:11 4.0 (signed dword) print_sdword::dw#2 dw zp ZP_DWORD:11 4.0 (signed dword) print_sdword::dw#3 dw zp ZP_DWORD:11 4.0 -(signed dword) print_sdword::dw#4 dw zp ZP_DWORD:11 3.0 -(signed dword) print_sdword::dw#5 dw zp ZP_DWORD:11 4.0 +(signed dword) print_sdword::dw#4 dw zp ZP_DWORD:11 1.9999999999999998 +(signed dword) print_sdword::dw#6 dw zp ZP_DWORD:11 4.0 (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 @@ -11075,10 +11128,10 @@ reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ] reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] zp ZP_WORD:7 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] zp ZP_WORD:9 [ print_str::str#15 print_str::str#17 print_str::str#0 ] -zp ZP_DWORD:11 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 muls16s::m#5 muls16s::return#0 muls16s::m#2 muls16s::m#3 muls16s::m#1 muls16s::return#2 muls16u::return#0 muls16u::m#3 muls16u::m#1 muls16u::return#2 ] +zp ZP_DWORD:11 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 muls16s::m#5 muls16s::return#0 muls16s::m#2 muls16s::m#3 muls16s::m#1 muls16s::return#2 muls16u::return#0 muls16u::m#3 muls16u::m#1 muls16u::return#2 ] +reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +zp ZP_WORD:15 [ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#222 print_char_cursor#132 print_char_cursor#22 print_char_cursor#183 print_char_cursor#145 print_char_cursor#190 print_char_cursor#1 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -zp ZP_WORD:15 [ print_char_cursor#86 print_char_cursor#139 print_char_cursor#135 print_char_cursor#136 print_char_cursor#137 print_char_cursor#151 print_char_cursor#131 print_char_cursor#146 print_char_cursor#220 print_char_cursor#130 print_char_cursor#21 print_char_cursor#180 print_char_cursor#142 print_char_cursor#187 print_char_cursor#1 ] zp ZP_DWORD:17 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 mul16s_error::mf#0 mul16u_compare::mf#0 mul16u_error::mf#0 ] zp ZP_WORD:21 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 muls16u::a#0 ] zp ZP_WORD:23 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#1 muls16u::b#0 mul16u_error::b#0 ] @@ -11115,7 +11168,7 @@ reg byte a [ mulf_init::$11 ] FINAL ASSEMBLER -Score: 440247 +Score: 440258 // File Comments // Test the fast multiplication library @@ -11141,19 +11194,19 @@ main: { sta BGCOL // print_cls() // [5] call print_cls - // [305] phi from main to print_cls [phi:main->print_cls] + // [307] phi from main to print_cls [phi:main->print_cls] jsr print_cls // [6] phi from main to main::@1 [phi:main->main::@1] // main::@1 // mulf_init() // [7] call mulf_init - // [276] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + // [278] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] jsr mulf_init // [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] // main::@2 // mul16u_compare() // [9] call mul16u_compare - // [200] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] + // [202] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] jsr mul16u_compare // [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] // main::@3 @@ -11174,7 +11227,7 @@ mul16s_compare: { .label mn = $19 .label mf = $11 .label i = 2 - // [13] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [13] (byte*~) print_char_cursor#222 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -11193,18 +11246,18 @@ mul16s_compare: { sta a lda #>-$7fff sta a+1 - // [14] phi (byte*) print_char_cursor#146 = (byte*~) print_char_cursor#220 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy + // [14] phi (byte*) print_char_cursor#149 = (byte*~) print_char_cursor#222 [phi:mul16s_compare->mul16s_compare::@1#3] -- register_copy // [14] phi from mul16s_compare::@8 to mul16s_compare::@1 [phi:mul16s_compare::@8->mul16s_compare::@1] // [14] phi (byte) mul16s_compare::i#12 = (byte) mul16s_compare::i#1 [phi:mul16s_compare::@8->mul16s_compare::@1#0] -- register_copy // [14] phi (signed word) mul16s_compare::b#6 = (signed word) mul16s_compare::b#1 [phi:mul16s_compare::@8->mul16s_compare::@1#1] -- register_copy // [14] phi (signed word) mul16s_compare::a#6 = (signed word) mul16s_compare::a#1 [phi:mul16s_compare::@8->mul16s_compare::@1#2] -- register_copy - // [14] phi (byte*) print_char_cursor#146 = (byte*) print_char_cursor#130 [phi:mul16s_compare::@8->mul16s_compare::@1#3] -- register_copy + // [14] phi (byte*) print_char_cursor#149 = (byte*) print_char_cursor#132 [phi:mul16s_compare::@8->mul16s_compare::@1#3] -- register_copy // mul16s_compare::@1 b1: // print_str(".") // [15] call print_str // [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str] - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#146 [phi:mul16s_compare::@1->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#149 [phi:mul16s_compare::@1->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #print_ln] - // [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16s_compare::@9->print_ln#0] -- register_copy + // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16s_compare::@9->print_ln#0] -- register_copy // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@9->print_ln#1] -- register_copy jsr print_ln // mul16s_compare::@13 - // [55] (byte*~) print_char_cursor#180 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [55] (byte*~) print_char_cursor#183 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -11375,7 +11428,7 @@ mul16s_compare: { // print_str("signed word multiply results match!") // [56] call print_str // [64] phi from mul16s_compare::@13 to print_str [phi:mul16s_compare::@13->print_str] - // [64] phi (byte*) print_char_cursor#151 = (byte*~) print_char_cursor#180 [phi:mul16s_compare::@13->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*~) print_char_cursor#183 [phi:mul16s_compare::@13->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str1 [phi:mul16s_compare::@13->print_str#1] -- pbuz1=pbuc1 lda #print_ln] - // [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16s_compare::@14->print_ln#0] -- register_copy + // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16s_compare::@14->print_ln#0] -- register_copy // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_compare::@14->print_ln#1] -- register_copy jsr print_ln rts @@ -11410,7 +11463,7 @@ print_ln: { inc print_line_cursor+1 !: // while (print_line_cursorprint_str::@1] - // [65] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#151 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + // [65] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#154 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy // [65] phi (byte*) print_str::str#15 = (byte*) print_str::str#17 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy // print_str::@1 b1: @@ -11447,12 +11500,12 @@ print_str: { // print_str::@2 b2: // *(print_char_cursor++) = *(str++) - // [68] *((byte*) print_char_cursor#130) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 + // [68] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#15) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y // *(print_char_cursor++) = *(str++); - // [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#130 -- pbuz1=_inc_pbuz1 + // [69] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#132 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 @@ -11475,7 +11528,7 @@ mul16s_error: { // print_str("signed word multiply mismatch ") // [72] call print_str // [64] phi from mul16s_error to print_str [phi:mul16s_error->print_str] - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#130 [phi:mul16s_error->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#132 [phi:mul16s_error->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str [phi:mul16s_error->print_str#1] -- pbuz1=pbuc1 lda #print_sword] - // [127] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:mul16s_error::@1->print_sword#0] -- register_copy + // [129] phi from mul16s_error::@1 to print_sword [phi:mul16s_error::@1->print_sword] + // [129] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#1 [phi:mul16s_error::@1->print_sword#0] -- register_copy jsr print_sword // [75] phi from mul16s_error::@1 to mul16s_error::@2 [phi:mul16s_error::@1->mul16s_error::@2] // mul16s_error::@2 // print_str("*") // [76] call print_str // [64] phi from mul16s_error::@2 to print_str [phi:mul16s_error::@2->print_str] - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@2->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@2->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16s_error::@2->print_str#1] -- pbuz1=pbuc1 lda #print_sword] - // [127] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:mul16s_error::@3->print_sword#0] -- register_copy + // [129] phi from mul16s_error::@3 to print_sword [phi:mul16s_error::@3->print_sword] + // [129] phi (signed word) print_sword::w#3 = (signed word) print_sword::w#2 [phi:mul16s_error::@3->print_sword#0] -- register_copy jsr print_sword // [79] phi from mul16s_error::@3 to mul16s_error::@4 [phi:mul16s_error::@3->mul16s_error::@4] // mul16s_error::@4 // print_str(" slow:") // [80] call print_str // [64] phi from mul16s_error::@4 to print_str [phi:mul16s_error::@4->print_str] - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@4->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@4->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16s_error::@4->print_str#1] -- pbuz1=pbuc1 lda #print_str] - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@6->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@6->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16s_error::@6->print_str#1] -- pbuz1=pbuc1 lda #print_str] - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16s_error::@8->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16s_error::@8->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16s_error::@8->print_str#1] -- pbuz1=pbuc1 lda #print_ln] - // [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#21 [phi:mul16s_error::@10->print_ln#0] -- register_copy + // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#22 [phi:mul16s_error::@10->print_ln#0] -- register_copy // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16s_error::@10->print_ln#1] -- register_copy jsr print_ln // mul16s_error::@return @@ -11605,21 +11658,46 @@ mul16s_error: { print_sdword: { .label dw = $b // if(dw<0) - // [95] if((signed dword) print_sdword::dw#4>=(signed byte) 0) goto print_sdword::@1 -- vdsz1_ge_0_then_la1 + // [95] if((signed dword) print_sdword::dw#4<(signed byte) 0) goto print_sdword::@1 -- vdsz1_lt_0_then_la1 lda dw+3 - bpl b1 - // [96] phi from print_sdword to print_sdword::@2 [phi:print_sdword->print_sdword::@2] - // print_sdword::@2 - // print_char('-') + bmi b1 + // [96] phi from print_sdword to print_sdword::@3 [phi:print_sdword->print_sdword::@3] + // print_sdword::@3 + // print_char(' ') // [97] call print_char - // [123] phi from print_sdword::@2 to print_char [phi:print_sdword::@2->print_char] - // [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#130 [phi:print_sdword::@2->print_char#0] -- register_copy - // [123] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sdword::@2->print_char#1] -- vbuaa=vbuc1 + // [105] phi from print_sdword::@3 to print_char [phi:print_sdword::@3->print_char] + // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sdword::@3->print_char#0] -- register_copy + // [105] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sdword::@3->print_char#1] -- vbuaa=vbuc1 + lda #' ' + jsr print_char + // [98] phi from print_sdword::@3 print_sdword::@4 to print_sdword::@2 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2] + // [98] phi (signed dword) print_sdword::dw#6 = (signed dword) print_sdword::dw#4 [phi:print_sdword::@3/print_sdword::@4->print_sdword::@2#0] -- register_copy + // print_sdword::@2 + b2: + // print_dword((dword)dw) + // [99] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#6 + // [100] call print_dword + // [109] phi from print_sdword::@2 to print_dword [phi:print_sdword::@2->print_dword] + // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#22 [phi:print_sdword::@2->print_dword#0] -- register_copy + // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#0 [phi:print_sdword::@2->print_dword#1] -- register_copy + jsr print_dword + // print_sdword::@return + // } + // [101] return + rts + // [102] phi from print_sdword to print_sdword::@1 [phi:print_sdword->print_sdword::@1] + // print_sdword::@1 + b1: + // print_char('-') + // [103] call print_char + // [105] phi from print_sdword::@1 to print_char [phi:print_sdword::@1->print_char] + // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sdword::@1->print_char#0] -- register_copy + // [105] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sdword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - // print_sdword::@3 + // print_sdword::@4 // dw = -dw - // [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 -- vdsz1=_neg_vdsz1 + // [104] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 -- vdsz1=_neg_vdsz1 sec lda dw eor #$ff @@ -11637,21 +11715,25 @@ print_sdword: { eor #$ff adc #0 sta dw+3 - // [99] phi from print_sdword print_sdword::@3 to print_sdword::@1 [phi:print_sdword/print_sdword::@3->print_sdword::@1] - // [99] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#130 [phi:print_sdword/print_sdword::@3->print_sdword::@1#0] -- register_copy - // [99] phi (signed dword) print_sdword::dw#5 = (signed dword) print_sdword::dw#4 [phi:print_sdword/print_sdword::@3->print_sdword::@1#1] -- register_copy - // print_sdword::@1 - b1: - // print_dword((dword)dw) - // [100] (dword) print_dword::dw#0 ← (dword)(signed dword) print_sdword::dw#5 - // [101] call print_dword - // [103] phi from print_sdword::@1 to print_dword [phi:print_sdword::@1->print_dword] - // [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#137 [phi:print_sdword::@1->print_dword#0] -- register_copy - // [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#0 [phi:print_sdword::@1->print_dword#1] -- register_copy - jsr print_dword - // print_sdword::@return + jmp b2 +} + // print_char +// Print a single char +// print_char(byte register(A) ch) +print_char: { + // *(print_char_cursor++) = ch + // [106] *((byte*) print_char_cursor#88) ← (byte) print_char::ch#6 -- _deref_pbuz1=vbuaa + ldy #0 + sta (print_char_cursor),y + // *(print_char_cursor++) = ch; + // [107] (byte*) print_char_cursor#22 ← ++ (byte*) print_char_cursor#88 -- pbuz1=_inc_pbuz1 + inc print_char_cursor + bne !+ + inc print_char_cursor+1 + !: + // print_char::@return // } - // [102] return + // [108] return rts } // print_dword @@ -11660,31 +11742,31 @@ print_sdword: { print_dword: { .label dw = $b // print_word(>dw) - // [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 -- vwuz1=_hi_vduz2 + // [110] (word) print_word::w#1 ← > (dword) print_dword::dw#4 -- vwuz1=_hi_vduz2 lda dw+2 sta print_word.w lda dw+3 sta print_word.w+1 - // [105] call print_word - // [109] phi from print_dword to print_word [phi:print_dword->print_word] - // [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#136 [phi:print_dword->print_word#0] -- register_copy - // [109] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy + // [111] call print_word + // [115] phi from print_dword to print_word [phi:print_dword->print_word] + // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#138 [phi:print_dword->print_word#0] -- register_copy + // [115] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:print_dword->print_word#1] -- register_copy jsr print_word // print_dword::@1 // print_word(print_word] - // [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#21 [phi:print_dword::@1->print_word#0] -- register_copy - // [109] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy + // [113] call print_word + // [115] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#22 [phi:print_dword::@1->print_word#0] -- register_copy + // [115] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word // print_dword::@return // } - // [108] return + // [114] return rts } // print_word @@ -11693,27 +11775,27 @@ print_dword: { print_word: { .label w = 3 // print_byte(>w) - // [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 + // [116] (byte) print_byte::b#0 ← > (word) print_word::w#5 -- vbuxx=_hi_vwuz1 lda w+1 tax - // [111] call print_byte - // [115] phi from print_word to print_byte [phi:print_word->print_byte] - // [115] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy - // [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + // [117] call print_byte + // [121] phi from print_word to print_byte [phi:print_word->print_byte] + // [121] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#137 [phi:print_word->print_byte#0] -- register_copy + // [121] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte // print_word::@1 // print_byte(print_byte] - // [115] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#21 [phi:print_word::@1->print_byte#0] -- register_copy - // [115] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + // [119] call print_byte + // [121] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + // [121] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#22 [phi:print_word::@1->print_byte#0] -- register_copy + // [121] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte // print_word::@return // } - // [114] return + // [120] return rts } // print_byte @@ -11721,56 +11803,37 @@ print_word: { // print_byte(byte register(X) b) print_byte: { // b>>4 - // [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 + // [122] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr // print_char(print_hextab[b>>4]) - // [117] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + // [123] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - // [118] call print_char - // [123] phi from print_byte to print_char [phi:print_byte->print_char] - // [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#139 [phi:print_byte->print_char#0] -- register_copy - // [123] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + // [124] call print_char + // [105] phi from print_byte to print_char [phi:print_byte->print_char] + // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#142 [phi:print_byte->print_char#0] -- register_copy + // [105] phi (byte) print_char::ch#6 = (byte) print_char::ch#4 [phi:print_byte->print_char#1] -- register_copy jsr print_char // print_byte::@1 // b&$f - // [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 + // [125] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1 lda #$f axs #0 // print_char(print_hextab[b&$f]) - // [120] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx + // [126] (byte) print_char::ch#5 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx lda print_hextab,x - // [121] call print_char - // [123] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - // [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#21 [phi:print_byte::@1->print_char#0] -- register_copy - // [123] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + // [127] call print_char + // [105] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#22 [phi:print_byte::@1->print_char#0] -- register_copy + // [105] phi (byte) print_char::ch#6 = (byte) print_char::ch#5 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char // print_byte::@return // } - // [122] return - rts -} - // print_char -// Print a single char -// print_char(byte register(A) ch) -print_char: { - // *(print_char_cursor++) = ch - // [124] *((byte*) print_char_cursor#86) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa - ldy #0 - sta (print_char_cursor),y - // *(print_char_cursor++) = ch; - // [125] (byte*) print_char_cursor#21 ← ++ (byte*) print_char_cursor#86 -- pbuz1=_inc_pbuz1 - inc print_char_cursor - bne !+ - inc print_char_cursor+1 - !: - // print_char::@return - // } - // [126] return + // [128] return rts } // print_sword @@ -11779,46 +11842,46 @@ print_char: { print_sword: { .label w = 3 // if(w<0) - // [128] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 + // [130] if((signed word) print_sword::w#3<(signed byte) 0) goto print_sword::@1 -- vwsz1_lt_0_then_la1 lda w+1 bmi b1 - // [129] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] + // [131] phi from print_sword to print_sword::@3 [phi:print_sword->print_sword::@3] // print_sword::@3 // print_char(' ') - // [130] call print_char - // [123] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] - // [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#130 [phi:print_sword::@3->print_char#0] -- register_copy - // [123] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 + // [132] call print_char + // [105] phi from print_sword::@3 to print_char [phi:print_sword::@3->print_char] + // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sword::@3->print_char#0] -- register_copy + // [105] phi (byte) print_char::ch#6 = (byte) ' ' [phi:print_sword::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - // [131] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] - // [131] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy + // [133] phi from print_sword::@3 print_sword::@4 to print_sword::@2 [phi:print_sword::@3/print_sword::@4->print_sword::@2] + // [133] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:print_sword::@3/print_sword::@4->print_sword::@2#0] -- register_copy // print_sword::@2 b2: // print_word((word)w) - // [132] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 - // [133] call print_word - // [109] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] - // [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#21 [phi:print_sword::@2->print_word#0] -- register_copy - // [109] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy + // [134] (word) print_word::w#0 ← (word)(signed word) print_sword::w#5 + // [135] call print_word + // [115] phi from print_sword::@2 to print_word [phi:print_sword::@2->print_word] + // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#22 [phi:print_sword::@2->print_word#0] -- register_copy + // [115] phi (word) print_word::w#5 = (word) print_word::w#0 [phi:print_sword::@2->print_word#1] -- register_copy jsr print_word // print_sword::@return // } - // [134] return + // [136] return rts - // [135] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] + // [137] phi from print_sword to print_sword::@1 [phi:print_sword->print_sword::@1] // print_sword::@1 b1: // print_char('-') - // [136] call print_char - // [123] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] - // [123] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_char#0] -- register_copy - // [123] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 + // [138] call print_char + // [105] phi from print_sword::@1 to print_char [phi:print_sword::@1->print_char] + // [105] phi (byte*) print_char_cursor#88 = (byte*) print_char_cursor#132 [phi:print_sword::@1->print_char#0] -- register_copy + // [105] phi (byte) print_char::ch#6 = (byte) '-' [phi:print_sword::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char // print_sword::@4 // w = -w - // [137] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 + // [139] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 -- vwsz1=_neg_vwsz1 sec lda #0 sbc w @@ -11842,39 +11905,39 @@ mulf16s: { .label a = 3 .label b = 5 // mulf16u((word)a, (word)b) - // [138] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 + // [140] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2 lda a sta mulf16u.a lda a+1 sta mulf16u.a+1 - // [139] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 + // [141] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2 lda b sta mulf16u.b lda b+1 sta mulf16u.b+1 - // [140] call mulf16u - // [155] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] - // [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#0 [phi:mulf16s->mulf16u#0] -- register_copy - // [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#0 [phi:mulf16s->mulf16u#1] -- register_copy + // [142] call mulf16u + // [157] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] + // [157] phi (word) mulf16u::b#2 = (word) mulf16u::b#0 [phi:mulf16s->mulf16u#0] -- register_copy + // [157] phi (word) mulf16u::a#2 = (word) mulf16u::a#0 [phi:mulf16s->mulf16u#1] -- register_copy jsr mulf16u // mulf16u((word)a, (word)b) - // [141] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 + // [143] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 // mulf16s::@5 // m = mulf16u((word)a, (word)b) - // [142] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 + // [144] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 // if(a<0) - // [143] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 + // [145] if((signed word) mulf16s::a#0>=(signed byte) 0) goto mulf16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1 // mulf16s::@3 // >m - // [144] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + // [146] (word~) mulf16s::$9 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _9 lda m+3 sta _9+1 // >m = (>m)-(word)b - // [145] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + // [147] (word~) mulf16s::$16 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -11882,28 +11945,28 @@ mulf16s: { lda _16+1 sbc b+1 sta _16+1 - // [146] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 + // [148] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - // [147] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1] - // [147] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy + // [149] phi from mulf16s::@3 mulf16s::@5 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1] + // [149] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@5->mulf16s::@1#0] -- register_copy // mulf16s::@1 b1: // if(b<0) - // [148] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 + // [150] if((signed word) mulf16s::b#0>=(signed byte) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2 // mulf16s::@4 // >m - // [149] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + // [151] (word~) mulf16s::$13 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _13 lda m+3 sta _13+1 // >m = (>m)-(word)a - // [150] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + // [152] (word~) mulf16s::$17 ← (word~) mulf16s::$13 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -11911,20 +11974,20 @@ mulf16s: { lda _17+1 sbc a+1 sta _17+1 - // [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 + // [153] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - // [152] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] - // [152] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy + // [154] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] + // [154] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy // mulf16s::@2 b2: // (signed dword)m - // [153] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 + // [155] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4 // mulf16s::@return // } - // [154] return + // [156] return rts } // mulf16u @@ -11939,13 +12002,13 @@ mulf16u: { .label a = $15 .label b = $17 // *memA = a - // [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 + // [158] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 lda a sta memA lda a+1 sta memA+1 // *memB = b - // [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 + // [159] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 lda b sta memB lda b+1 @@ -12045,7 +12108,7 @@ mulf16u: { inc memR+3 !: // return *memR; - // [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 + // [161] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 lda memR sta return lda memR+1 @@ -12056,7 +12119,7 @@ mulf16u: { sta return+3 // mulf16u::@return // } - // [160] return + // [162] return rts } // mul16s @@ -12073,20 +12136,20 @@ mul16s: { .label a = 3 .label b = 5 // mul16u((word)a, (word) b) - // [161] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + // [163] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - // [162] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 + // [164] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 lda b sta mul16u.b lda b+1 sta mul16u.b+1 - // [163] call mul16u - // [178] phi from mul16s to mul16u [phi:mul16s->mul16u] - // [178] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy - // [178] phi (dword) mul16u::mb#0 = (word) mul16u::b#0 [phi:mul16s->mul16u#1] -- vduz1=vwuz2 + // [165] call mul16u + // [180] phi from mul16s to mul16u [phi:mul16s->mul16u] + // [180] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy + // [180] phi (dword) mul16u::mb#0 = (word) mul16u::b#0 [phi:mul16s->mul16u#1] -- vduz1=vwuz2 lda mul16u.b sta mul16u.mb lda mul16u.b+1 @@ -12096,23 +12159,23 @@ mul16s: { sta mul16u.mb+3 jsr mul16u // mul16u((word)a, (word) b) - // [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + // [166] (dword) mul16u::return#2 ← (dword) mul16u::res#2 // mul16s::@5 // m = mul16u((word)a, (word) b) - // [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + // [167] (dword) mul16s::m#0 ← (dword) mul16u::return#2 // if(a<0) - // [166] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + // [168] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1 // mul16s::@3 // >m - // [167] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + // [169] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _9 lda m+3 sta _9+1 // >m = (>m)-(word)b - // [168] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + // [170] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -12120,28 +12183,28 @@ mul16s: { lda _16+1 sbc b+1 sta _16+1 - // [169] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + // [171] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - // [170] phi from mul16s::@3 mul16s::@5 to mul16s::@1 [phi:mul16s::@3/mul16s::@5->mul16s::@1] - // [170] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@5->mul16s::@1#0] -- register_copy + // [172] phi from mul16s::@3 mul16s::@5 to mul16s::@1 [phi:mul16s::@3/mul16s::@5->mul16s::@1] + // [172] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@5->mul16s::@1#0] -- register_copy // mul16s::@1 b1: // if(b<0) - // [171] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 + // [173] if((signed word) mul16s::b#0>=(signed byte) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2 // mul16s::@4 // >m - // [172] (word~) mul16s::$13 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 + // [174] (word~) mul16s::$13 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _13 lda m+3 sta _13+1 // >m = (>m)-(word)a - // [173] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + // [175] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -12149,20 +12212,20 @@ mul16s: { lda _17+1 sbc a+1 sta _17+1 - // [174] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 + // [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - // [175] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] - // [175] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy + // [177] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] + // [177] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy // mul16s::@2 b2: // (signed dword)m - // [176] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 + // [178] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 // mul16s::@return // } - // [177] return + // [179] return rts } // mul16u @@ -12175,40 +12238,40 @@ mul16u: { .label b = $1d .label return = $19 .label b_1 = $17 - // [179] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] - // [179] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - // [179] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + // [181] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + // [181] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + // [181] phi (dword) mul16u::res#2 = (byte) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res sta res+1 sta res+2 sta res+3 - // [179] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + // [181] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy // mul16u::@1 b1: // while(a!=0) - // [180] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + // [182] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 // mul16u::@return // } - // [181] return + // [183] return rts // mul16u::@2 b2: // a&1 - // [182] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 + // [184] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 // if( (a&1) != 0) - // [183] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 + // [185] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 // mul16u::@4 // res = res + mb - // [184] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + // [186] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -12222,24 +12285,24 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - // [185] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] - // [185] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + // [187] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + // [187] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy // mul16u::@3 b3: // a = a>>1 - // [186] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 + // [188] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1 lsr a+1 ror a // mb = mb<<1 - // [187] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 + // [189] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - // [179] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] - // [179] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - // [179] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - // [179] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + // [181] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + // [181] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + // [181] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + // [181] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp b1 } // muls16s @@ -12254,34 +12317,34 @@ muls16s: { .label a = 3 .label b = 5 // if(a<0) - // [188] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 -- vwsz1_lt_0_then_la1 + // [190] if((signed word) muls16s::a#0<(signed byte) 0) goto muls16s::@4 -- vwsz1_lt_0_then_la1 lda a+1 bmi b6 // muls16s::@2 // if (a>0) - // [189] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 -- vwsz1_le_0_then_la1 + // [191] if((signed word) muls16s::a#0<=(signed byte) 0) goto muls16s::@1 -- vwsz1_le_0_then_la1 bmi b5 bne !+ lda a beq b5 !: - // [190] phi from muls16s::@2 to muls16s::@3 [phi:muls16s::@2->muls16s::@3] - // [190] phi (signed word) muls16s::j#2 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#0] -- vwsz1=vbsc1 + // [192] phi from muls16s::@2 to muls16s::@3 [phi:muls16s::@2->muls16s::@3] + // [192] phi (signed word) muls16s::j#2 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#0] -- vwsz1=vbsc1 lda #<0 sta j sta j+1 - // [190] phi (signed dword) muls16s::m#3 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#1] -- vdsz1=vbsc1 + // [192] phi (signed dword) muls16s::m#3 = (signed byte) 0 [phi:muls16s::@2->muls16s::@3#1] -- vdsz1=vbsc1 sta m sta m+1 sta m+2 sta m+3 - // [190] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] - // [190] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy - // [190] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy + // [192] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] + // [192] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy + // [192] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy // muls16s::@3 b3: // m = m + b - // [191] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 + // [193] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -12302,24 +12365,24 @@ muls16s: { adc $ff sta m+3 // for(signed word j = 0; j!=a; j++) - // [192] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 + // [194] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 inc j bne !+ inc j+1 !: - // [193] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 + // [195] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 lda j+1 cmp a+1 bne b3 lda j cmp a bne b3 - // [194] phi from muls16s::@3 muls16s::@4 to muls16s::@1 [phi:muls16s::@3/muls16s::@4->muls16s::@1] - // [194] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@4->muls16s::@1#0] -- register_copy + // [196] phi from muls16s::@3 muls16s::@4 to muls16s::@1 [phi:muls16s::@3/muls16s::@4->muls16s::@1] + // [196] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@4->muls16s::@1#0] -- register_copy rts - // [194] phi from muls16s::@2 to muls16s::@1 [phi:muls16s::@2->muls16s::@1] + // [196] phi from muls16s::@2 to muls16s::@1 [phi:muls16s::@2->muls16s::@1] b5: - // [194] phi (signed dword) muls16s::return#0 = (signed byte) 0 [phi:muls16s::@2->muls16s::@1#0] -- vdsz1=vbsc1 + // [196] phi (signed dword) muls16s::return#0 = (signed byte) 0 [phi:muls16s::@2->muls16s::@1#0] -- vdsz1=vbsc1 lda #0 sta return sta return+1 @@ -12328,26 +12391,26 @@ muls16s: { // muls16s::@1 // muls16s::@return // } - // [195] return + // [197] return rts - // [196] phi from muls16s to muls16s::@4 [phi:muls16s->muls16s::@4] + // [198] phi from muls16s to muls16s::@4 [phi:muls16s->muls16s::@4] b6: - // [196] phi (signed word) muls16s::i#2 = (signed byte) 0 [phi:muls16s->muls16s::@4#0] -- vwsz1=vbsc1 + // [198] phi (signed word) muls16s::i#2 = (signed byte) 0 [phi:muls16s->muls16s::@4#0] -- vwsz1=vbsc1 lda #<0 sta i sta i+1 - // [196] phi (signed dword) muls16s::m#5 = (signed byte) 0 [phi:muls16s->muls16s::@4#1] -- vdsz1=vbsc1 + // [198] phi (signed dword) muls16s::m#5 = (signed byte) 0 [phi:muls16s->muls16s::@4#1] -- vdsz1=vbsc1 sta m sta m+1 sta m+2 sta m+3 - // [196] phi from muls16s::@4 to muls16s::@4 [phi:muls16s::@4->muls16s::@4] - // [196] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@4->muls16s::@4#0] -- register_copy - // [196] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@4->muls16s::@4#1] -- register_copy + // [198] phi from muls16s::@4 to muls16s::@4 [phi:muls16s::@4->muls16s::@4] + // [198] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@4->muls16s::@4#0] -- register_copy + // [198] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@4->muls16s::@4#1] -- register_copy // muls16s::@4 b4: // m = m - b - // [197] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 + // [199] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -12368,13 +12431,13 @@ muls16s: { sbc $ff sta m+3 // for(signed word i = 0; i!=a; i--) - // [198] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 + // [200] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 lda i bne !+ dec i+1 !: dec i - // [199] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 -- vwsz1_neq_vwsz2_then_la1 + // [201] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@4 -- vwsz1_neq_vwsz2_then_la1 lda i+1 cmp a+1 bne b4 @@ -12392,51 +12455,51 @@ mul16u_compare: { .label mn = $19 .label mf = $11 .label i = $29 - // [201] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] - // [201] phi (byte) mul16u_compare::i#12 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 + // [203] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] + // [203] phi (byte) mul16u_compare::i#12 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta i - // [201] phi (word) mul16u_compare::b#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 + // [203] phi (word) mul16u_compare::b#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 sta b sta b+1 - // [201] phi (word) mul16u_compare::a#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 + // [203] phi (word) mul16u_compare::a#6 = (byte) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 sta a sta a+1 - // [201] phi (byte*) print_char_cursor#142 = (byte*) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 + // [203] phi (byte*) print_char_cursor#145 = (byte*) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - // [201] phi from mul16u_compare::@8 to mul16u_compare::@1 [phi:mul16u_compare::@8->mul16u_compare::@1] - // [201] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@8->mul16u_compare::@1#0] -- register_copy - // [201] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@8->mul16u_compare::@1#1] -- register_copy - // [201] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@8->mul16u_compare::@1#2] -- register_copy - // [201] phi (byte*) print_char_cursor#142 = (byte*) print_char_cursor#130 [phi:mul16u_compare::@8->mul16u_compare::@1#3] -- register_copy + // [203] phi from mul16u_compare::@8 to mul16u_compare::@1 [phi:mul16u_compare::@8->mul16u_compare::@1] + // [203] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@8->mul16u_compare::@1#0] -- register_copy + // [203] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@8->mul16u_compare::@1#1] -- register_copy + // [203] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@8->mul16u_compare::@1#2] -- register_copy + // [203] phi (byte*) print_char_cursor#145 = (byte*) print_char_cursor#132 [phi:mul16u_compare::@8->mul16u_compare::@1#3] -- register_copy // mul16u_compare::@1 b1: // print_str(".") - // [202] call print_str + // [204] call print_str // [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#142 [phi:mul16u_compare::@1->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#145 [phi:mul16u_compare::@1->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - // [203] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] - // [203] phi (byte) mul16u_compare::j#10 = (byte) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuyy=vbuc1 + // [205] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] + // [205] phi (byte) mul16u_compare::j#10 = (byte) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuyy=vbuc1 ldy #0 - // [203] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy - // [203] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy - // [203] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] - // [203] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy - // [203] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy - // [203] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy + // [205] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy + // [205] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy + // [205] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] + // [205] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy + // [205] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy + // [205] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy // mul16u_compare::@2 b2: // a=a+3371 - // [204] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b -- vwuz1=vwuz1_plus_vwuc1 + // [206] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word) $d2b -- vwuz1=vwuz1_plus_vwuc1 clc lda a adc #<$d2b @@ -12445,7 +12508,7 @@ mul16u_compare: { adc #>$d2b sta a+1 // b=b+4093 - // [205] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd -- vwuz1=vwuz1_plus_vwuc1 + // [207] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word) $ffd -- vwuz1=vwuz1_plus_vwuc1 clc lda b adc #<$ffd @@ -12454,25 +12517,25 @@ mul16u_compare: { adc #>$ffd sta b+1 // muls16u(a, b) - // [206] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 - // [207] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 - // [208] call muls16u + // [208] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 + // [209] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 + // [210] call muls16u jsr muls16u - // [209] (dword) muls16u::return#2 ← (dword) muls16u::return#0 + // [211] (dword) muls16u::return#2 ← (dword) muls16u::return#0 // mul16u_compare::@10 // ms = muls16u(a, b) - // [210] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 + // [212] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 // mul16u(a,b) - // [211] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + // [213] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - // [212] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 - // [213] call mul16u - // [178] phi from mul16u_compare::@10 to mul16u [phi:mul16u_compare::@10->mul16u] - // [178] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@10->mul16u#0] -- register_copy - // [178] phi (dword) mul16u::mb#0 = (word) mul16u::b#1 [phi:mul16u_compare::@10->mul16u#1] -- vduz1=vwuz2 + // [214] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 + // [215] call mul16u + // [180] phi from mul16u_compare::@10 to mul16u [phi:mul16u_compare::@10->mul16u] + // [180] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@10->mul16u#0] -- register_copy + // [180] phi (dword) mul16u::mb#0 = (word) mul16u::b#1 [phi:mul16u_compare::@10->mul16u#1] -- vduz1=vwuz2 lda mul16u.b_1 sta mul16u.mb lda mul16u.b_1+1 @@ -12482,25 +12545,25 @@ mul16u_compare: { sta mul16u.mb+3 jsr mul16u // mul16u(a,b) - // [214] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + // [216] (dword) mul16u::return#3 ← (dword) mul16u::res#2 // mul16u_compare::@11 // mn = mul16u(a,b) - // [215] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 + // [217] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 // mulf16u(a,b) - // [216] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 - // [217] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 - // [218] call mulf16u - // [155] phi from mul16u_compare::@11 to mulf16u [phi:mul16u_compare::@11->mulf16u] - // [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@11->mulf16u#0] -- register_copy - // [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@11->mulf16u#1] -- register_copy + // [218] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 + // [219] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 + // [220] call mulf16u + // [157] phi from mul16u_compare::@11 to mulf16u [phi:mul16u_compare::@11->mulf16u] + // [157] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@11->mulf16u#0] -- register_copy + // [157] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@11->mulf16u#1] -- register_copy jsr mulf16u // mulf16u(a,b) - // [219] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 + // [221] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 // mul16u_compare::@12 // mf = mulf16u(a,b) - // [220] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 + // [222] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 // if(ms!=mf) - // [221] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 + // [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 lda ms cmp mf bne !+ @@ -12514,20 +12577,20 @@ mul16u_compare: { cmp mf+3 beq b6 !: - // [222] phi from mul16u_compare::@12 to mul16u_compare::@6 [phi:mul16u_compare::@12->mul16u_compare::@6] + // [224] phi from mul16u_compare::@12 to mul16u_compare::@6 [phi:mul16u_compare::@12->mul16u_compare::@6] // mul16u_compare::@6 - // [223] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] - // [223] phi (byte) mul16u_compare::ok#4 = (byte) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuxx=vbuc1 + // [225] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] + // [225] phi (byte) mul16u_compare::ok#4 = (byte) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - // [223] phi from mul16u_compare::@12 to mul16u_compare::@3 [phi:mul16u_compare::@12->mul16u_compare::@3] + // [225] phi from mul16u_compare::@12 to mul16u_compare::@3 [phi:mul16u_compare::@12->mul16u_compare::@3] b6: - // [223] phi (byte) mul16u_compare::ok#4 = (byte) 1 [phi:mul16u_compare::@12->mul16u_compare::@3#0] -- vbuxx=vbuc1 + // [225] phi (byte) mul16u_compare::ok#4 = (byte) 1 [phi:mul16u_compare::@12->mul16u_compare::@3#0] -- vbuxx=vbuc1 ldx #1 // mul16u_compare::@3 b3: // if(ms!=mn) - // [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 -- vduz1_eq_vduz2_then_la1 + // [226] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@15 -- vduz1_eq_vduz2_then_la1 lda ms cmp mn bne !+ @@ -12541,67 +12604,67 @@ mul16u_compare: { cmp mn+3 beq b4 !: - // [226] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] - // [226] phi (byte) mul16u_compare::ok#3 = (byte) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuxx=vbuc1 + // [228] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] + // [228] phi (byte) mul16u_compare::ok#3 = (byte) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuxx=vbuc1 ldx #0 - // [225] phi from mul16u_compare::@3 to mul16u_compare::@15 [phi:mul16u_compare::@3->mul16u_compare::@15] + // [227] phi from mul16u_compare::@3 to mul16u_compare::@15 [phi:mul16u_compare::@3->mul16u_compare::@15] // mul16u_compare::@15 - // [226] phi from mul16u_compare::@15 to mul16u_compare::@4 [phi:mul16u_compare::@15->mul16u_compare::@4] - // [226] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@15->mul16u_compare::@4#0] -- register_copy + // [228] phi from mul16u_compare::@15 to mul16u_compare::@4 [phi:mul16u_compare::@15->mul16u_compare::@4] + // [228] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@15->mul16u_compare::@4#0] -- register_copy // mul16u_compare::@4 b4: // if(ok==0) - // [227] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 -- vbuxx_neq_0_then_la1 + // [229] if((byte) mul16u_compare::ok#3!=(byte) 0) goto mul16u_compare::@5 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 // mul16u_compare::@7 // *BGCOL = 2 - // [228] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 + // [230] *((const byte*) BGCOL#0) ← (byte) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL // mul16u_error(a,b, ms, mn, mf) - // [229] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + // [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u_error.a lda a+1 sta mul16u_error.a+1 - // [230] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 - // [231] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 - // [232] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 - // [233] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 - // [234] call mul16u_error - // [246] phi from mul16u_compare::@7 to mul16u_error [phi:mul16u_compare::@7->mul16u_error] + // [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 + // [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 + // [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 + // [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 + // [236] call mul16u_error + // [248] phi from mul16u_compare::@7 to mul16u_error [phi:mul16u_compare::@7->mul16u_error] jsr mul16u_error // mul16u_compare::@return // } - // [235] return + // [237] return rts // mul16u_compare::@5 b5: // for(byte j: 0..15) - // [236] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy + // [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy iny - // [237] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 -- vbuyy_neq_vbuc1_then_la1 + // [239] if((byte) mul16u_compare::j#1!=(byte) $10) goto mul16u_compare::@2 -- vbuyy_neq_vbuc1_then_la1 cpy #$10 beq !b2+ jmp b2 !b2: // mul16u_compare::@8 // for(byte i: 0..15) - // [238] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 + // [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 inc i - // [239] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 + // [241] if((byte) mul16u_compare::i#1!=(byte) $10) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$10 cmp i beq !b1+ jmp b1 !b1: - // [240] phi from mul16u_compare::@8 to mul16u_compare::@9 [phi:mul16u_compare::@8->mul16u_compare::@9] + // [242] phi from mul16u_compare::@8 to mul16u_compare::@9 [phi:mul16u_compare::@8->mul16u_compare::@9] // mul16u_compare::@9 // print_ln() - // [241] call print_ln + // [243] call print_ln // [59] phi from mul16u_compare::@9 to print_ln [phi:mul16u_compare::@9->print_ln] - // [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16u_compare::@9->print_ln#0] -- register_copy + // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16u_compare::@9->print_ln#0] -- register_copy // [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_compare::@9->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor @@ -12609,27 +12672,27 @@ mul16u_compare: { sta print_line_cursor+1 jsr print_ln // mul16u_compare::@13 - // [242] (byte*~) print_char_cursor#187 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + // [244] (byte*~) print_char_cursor#190 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 // print_str("word multiply results match!") - // [243] call print_str + // [245] call print_str // [64] phi from mul16u_compare::@13 to print_str [phi:mul16u_compare::@13->print_str] - // [64] phi (byte*) print_char_cursor#151 = (byte*~) print_char_cursor#187 [phi:mul16u_compare::@13->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*~) print_char_cursor#190 [phi:mul16u_compare::@13->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@13->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - // [244] phi from mul16u_compare::@13 to mul16u_compare::@14 [phi:mul16u_compare::@13->mul16u_compare::@14] + // [246] phi from mul16u_compare::@13 to mul16u_compare::@14 [phi:mul16u_compare::@13->mul16u_compare::@14] // mul16u_compare::@14 // print_ln() - // [245] call print_ln + // [247] call print_ln // [59] phi from mul16u_compare::@14 to print_ln [phi:mul16u_compare::@14->print_ln] - // [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#130 [phi:mul16u_compare::@14->print_ln#0] -- register_copy + // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul16u_compare::@14->print_ln#0] -- register_copy // [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@14->print_ln#1] -- register_copy jsr print_ln rts @@ -12644,9 +12707,9 @@ mul16u_error: { .label mn = $19 .label mf = $11 // print_str("multiply mismatch ") - // [247] call print_str + // [249] call print_str // [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#130 [phi:mul16u_error->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#132 [phi:mul16u_error->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 lda #print_word] - // [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:mul16u_error::@1->print_word#0] -- register_copy - // [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy + // [250] (word) print_word::w#3 ← (word) mul16u_error::a#0 + // [251] call print_word + // [115] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] + // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#132 [phi:mul16u_error::@1->print_word#0] -- register_copy + // [115] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy jsr print_word - // [250] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] + // [252] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] // mul16u_error::@2 // print_str("*") - // [251] call print_str + // [253] call print_str // [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@2->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@2->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #print_word] - // [109] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:mul16u_error::@3->print_word#0] -- register_copy - // [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy + // [255] call print_word + // [115] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] + // [115] phi (byte*) print_char_cursor#137 = (byte*) print_char_cursor#132 [phi:mul16u_error::@3->print_word#0] -- register_copy + // [115] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy jsr print_word - // [254] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] + // [256] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] // mul16u_error::@4 // print_str(" slow:") - // [255] call print_str + // [257] call print_str // [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@4->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@4->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #print_dword] - // [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#130 [phi:mul16u_error::@5->print_dword#0] -- register_copy - // [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy + // [258] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 + // [259] call print_dword + // [109] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] + // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#132 [phi:mul16u_error::@5->print_dword#0] -- register_copy + // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy jsr print_dword - // [258] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] + // [260] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] // mul16u_error::@6 // print_str(" / normal:") - // [259] call print_str + // [261] call print_str // [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@6->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@6->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #print_dword] - // [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#130 [phi:mul16u_error::@7->print_dword#0] -- register_copy - // [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy + // [263] call print_dword + // [109] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] + // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#132 [phi:mul16u_error::@7->print_dword#0] -- register_copy + // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy jsr print_dword - // [262] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] + // [264] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] // mul16u_error::@8 // print_str(" / fast:") - // [263] call print_str + // [265] call print_str // [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] - // [64] phi (byte*) print_char_cursor#151 = (byte*) print_char_cursor#21 [phi:mul16u_error::@8->print_str#0] -- register_copy + // [64] phi (byte*) print_char_cursor#154 = (byte*) print_char_cursor#22 [phi:mul16u_error::@8->print_str#0] -- register_copy // [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #print_dword] - // [103] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#130 [phi:mul16u_error::@9->print_dword#0] -- register_copy - // [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy + // [267] call print_dword + // [109] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] + // [109] phi (byte*) print_char_cursor#138 = (byte*) print_char_cursor#132 [phi:mul16u_error::@9->print_dword#0] -- register_copy + // [109] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy jsr print_dword - // [266] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] + // [268] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] // mul16u_error::@10 // print_ln() - // [267] call print_ln + // [269] call print_ln // [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] - // [59] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#21 [phi:mul16u_error::@10->print_ln#0] -- register_copy + // [59] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#22 [phi:mul16u_error::@10->print_ln#0] -- register_copy // [59] phi (byte*) print_line_cursor#43 = (byte*) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor @@ -12775,7 +12838,7 @@ mul16u_error: { jsr print_ln // mul16u_error::@return // } - // [268] return + // [270] return rts str: .text "multiply mismatch @" } @@ -12790,29 +12853,29 @@ muls16u: { .label a = $15 .label b = $17 // if(a!=0) - // [269] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 + // [271] if((word) muls16u::a#0==(byte) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 lda a bne !+ lda a+1 beq b3 !: - // [270] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] - // [270] phi (word) muls16u::i#2 = (byte) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 + // [272] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] + // [272] phi (word) muls16u::i#2 = (byte) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 lda #<0 sta i sta i+1 - // [270] phi (dword) muls16u::m#3 = (byte) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 + // [272] phi (dword) muls16u::m#3 = (byte) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 sta m sta m+1 sta m+2 sta m+3 - // [270] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] - // [270] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy - // [270] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy + // [272] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] + // [272] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy + // [272] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy // muls16u::@2 b2: // m = m + b - // [271] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 + // [273] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 lda m clc adc b @@ -12827,24 +12890,24 @@ muls16u: { adc #0 sta m+3 // for(word i = 0; i!=a; i++) - // [272] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 + // [274] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - // [273] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 + // [275] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 lda i+1 cmp a+1 bne b2 lda i cmp a bne b2 - // [274] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] - // [274] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy + // [276] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] + // [276] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy rts - // [274] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] + // [276] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] b3: - // [274] phi (dword) muls16u::return#0 = (byte) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 + // [276] phi (dword) muls16u::return#0 = (byte) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 lda #0 sta return sta return+1 @@ -12853,7 +12916,7 @@ muls16u: { // muls16u::@1 // muls16u::@return // } - // [275] return + // [277] return rts } // mulf_init @@ -12866,81 +12929,81 @@ mulf_init: { .label sqr2_hi = $35 .label sqr2_lo = $33 .label dir = $37 - // [277] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] - // [277] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + // [279] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + // [279] phi (byte) mulf_init::x_2#3 = (byte) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - // [277] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + // [279] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[$200]) mulf_sqr1_hi#0+(byte) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - // [277] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + // [279] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[$200]) mulf_sqr1_lo#0+(byte) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - // [277] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + // [279] phi (word) mulf_init::sqr#4 = (byte) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr sta sqr+1 - // [277] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 + // [279] phi (byte) mulf_init::c#2 = (byte) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 tax - // [277] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] - // [277] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - // [277] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - // [277] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - // [277] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - // [277] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + // [279] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + // [279] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + // [279] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + // [279] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + // [279] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + // [279] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy // mulf_init::@1 b1: // if((++c&1)==0) - // [278] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + // [280] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx // ++c&1 - // [279] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 + // [281] (byte~) mulf_init::$7 ← (byte) mulf_init::c#1 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 // if((++c&1)==0) - // [280] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + // [282] if((byte~) mulf_init::$7!=(byte) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2 // mulf_init::@3 // x_2++; - // [281] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + // [283] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 // sqr++; - // [282] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + // [284] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - // [283] phi from mulf_init::@1 mulf_init::@3 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2] - // [283] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#0] -- register_copy - // [283] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#1] -- register_copy + // [285] phi from mulf_init::@1 mulf_init::@3 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2] + // [285] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#0] -- register_copy + // [285] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@3->mulf_init::@2#1] -- register_copy // mulf_init::@2 b2: // sqr - // [286] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + // [288] (byte~) mulf_init::$11 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 // *sqr1_hi++ = >sqr - // [287] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 -- _deref_pbuz1=vbuaa + // [289] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$11 -- _deref_pbuz1=vbuaa sta (sqr1_hi),y // *sqr1_hi++ = >sqr; - // [288] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + // [290] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: // sqr = sqr + x_2 - // [289] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + // [291] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -12949,83 +13012,83 @@ mulf_init: { inc sqr+1 !: // for(byte* sqr1_lo = mulf_sqr1_lo+1; sqr1_lo!=mulf_sqr1_lo+512; sqr1_lo++) - // [290] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + // [292] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - // [291] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + // [293] if((byte*) mulf_init::sqr1_lo#1!=(const byte[$200]) mulf_sqr1_lo#0+(word) $200) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1 lda sqr1_lo cmp #mulf_init::@4] - // [292] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@2->mulf_init::@4#0] -- vbuz1=vbuc1 + // [294] phi from mulf_init::@2 to mulf_init::@4 [phi:mulf_init::@2->mulf_init::@4] + // [294] phi (byte) mulf_init::dir#2 = (byte) $ff [phi:mulf_init::@2->mulf_init::@4#0] -- vbuz1=vbuc1 lda #$ff sta dir - // [292] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@4#1] -- pbuz1=pbuc1 + // [294] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[$200]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@4#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - // [292] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@4#2] -- pbuz1=pbuc1 + // [294] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[$200]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@4#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - // [292] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@2->mulf_init::@4#3] -- vbuxx=vbuc1 + // [294] phi (byte) mulf_init::x_255#2 = (byte) -1 [phi:mulf_init::@2->mulf_init::@4#3] -- vbuxx=vbuc1 ldx #-1 - // [292] phi from mulf_init::@5 to mulf_init::@4 [phi:mulf_init::@5->mulf_init::@4] - // [292] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@5->mulf_init::@4#0] -- register_copy - // [292] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@5->mulf_init::@4#1] -- register_copy - // [292] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@5->mulf_init::@4#2] -- register_copy - // [292] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@5->mulf_init::@4#3] -- register_copy + // [294] phi from mulf_init::@5 to mulf_init::@4 [phi:mulf_init::@5->mulf_init::@4] + // [294] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@5->mulf_init::@4#0] -- register_copy + // [294] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@5->mulf_init::@4#1] -- register_copy + // [294] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@5->mulf_init::@4#2] -- register_copy + // [294] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@5->mulf_init::@4#3] -- register_copy // mulf_init::@4 b4: // *sqr2_lo = mulf_sqr1_lo[x_255] - // [293] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + // [295] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[$200]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y // *sqr2_hi++ = mulf_sqr1_hi[x_255] - // [294] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + // [296] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[$200]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x sta (sqr2_hi),y // *sqr2_hi++ = mulf_sqr1_hi[x_255]; - // [295] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + // [297] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: // x_255 = x_255 + dir - // [296] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + // [298] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax // if(x_255==0) - // [297] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 -- vbuxx_neq_0_then_la1 + // [299] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@7 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 - // [299] phi from mulf_init::@4 to mulf_init::@5 [phi:mulf_init::@4->mulf_init::@5] - // [299] phi (byte) mulf_init::dir#3 = (byte) 1 [phi:mulf_init::@4->mulf_init::@5#0] -- vbuz1=vbuc1 + // [301] phi from mulf_init::@4 to mulf_init::@5 [phi:mulf_init::@4->mulf_init::@5] + // [301] phi (byte) mulf_init::dir#3 = (byte) 1 [phi:mulf_init::@4->mulf_init::@5#0] -- vbuz1=vbuc1 lda #1 sta dir - // [298] phi from mulf_init::@4 to mulf_init::@7 [phi:mulf_init::@4->mulf_init::@7] + // [300] phi from mulf_init::@4 to mulf_init::@7 [phi:mulf_init::@4->mulf_init::@7] // mulf_init::@7 - // [299] phi from mulf_init::@7 to mulf_init::@5 [phi:mulf_init::@7->mulf_init::@5] - // [299] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@7->mulf_init::@5#0] -- register_copy + // [301] phi from mulf_init::@7 to mulf_init::@5 [phi:mulf_init::@7->mulf_init::@5] + // [301] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@7->mulf_init::@5#0] -- register_copy // mulf_init::@5 b5: // for(byte* sqr2_lo = mulf_sqr2_lo; sqr2_lo!=mulf_sqr2_lo+511; sqr2_lo++) - // [300] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + // [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - // [301] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 -- pbuz1_neq_pbuc1_then_la1 + // [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) goto mulf_init::@4 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b4 @@ -13034,45 +13097,45 @@ mulf_init: { bne b4 // mulf_init::@6 // *(mulf_sqr2_lo+511) = *(mulf_sqr1_lo+256) - // [302] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) -- _deref_pbuc1=_deref_pbuc2 + // [304] *((const byte[$200]) mulf_sqr2_lo#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_lo#0+(word) $100) -- _deref_pbuc1=_deref_pbuc2 // Set the very last value g(511) = f(256) lda mulf_sqr1_lo+$100 sta mulf_sqr2_lo+$1ff // *(mulf_sqr2_hi+511) = *(mulf_sqr1_hi+256) - // [303] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) -- _deref_pbuc1=_deref_pbuc2 + // [305] *((const byte[$200]) mulf_sqr2_hi#0+(word) $1ff) ← *((const byte[$200]) mulf_sqr1_hi#0+(word) $100) -- _deref_pbuc1=_deref_pbuc2 lda mulf_sqr1_hi+$100 sta mulf_sqr2_hi+$1ff // mulf_init::@return // } - // [304] return + // [306] return rts } // print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $38 - // [306] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - // [306] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + // [308] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + // [308] phi (byte*) print_cls::sc#2 = (byte*) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - // [306] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - // [306] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + // [308] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + // [308] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy // print_cls::@1 b1: // *sc = ' ' - // [307] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + // [309] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y // for(byte* sc=print_screen; sc!=print_screen+1000; sc++) - // [308] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + // [310] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - // [309] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + // [311] if((byte*) print_cls::sc#1!=(byte*) 1024+(word) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 @@ -13081,7 +13144,7 @@ print_cls: { bne b1 // print_cls::@return // } - // [310] return + // [312] return rts } // File Data diff --git a/src/test/ref/test-multiply-16bit.sym b/src/test/ref/test-multiply-16bit.sym index 29c3573e2..5b8eaf1bd 100644 --- a/src/test/ref/test-multiply-16bit.sym +++ b/src/test/ref/test-multiply-16bit.sym @@ -334,25 +334,24 @@ (void()) print_char((byte) print_char::ch) (label) print_char::@return (byte) print_char::ch -(byte) print_char::ch#3 reg byte a 4.0 (byte) print_char::ch#4 reg byte a 4.0 -(byte) print_char::ch#5 reg byte a 6.0 +(byte) print_char::ch#5 reg byte a 4.0 +(byte) print_char::ch#6 reg byte a 6.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:15 101.0 -(byte*) print_char_cursor#130 print_char_cursor zp ZP_WORD:15 3.2162162162162145 -(byte*) print_char_cursor#131 print_char_cursor zp ZP_WORD:15 5.75 -(byte*) print_char_cursor#135 print_char_cursor zp ZP_WORD:15 6.0 -(byte*) print_char_cursor#136 print_char_cursor zp ZP_WORD:15 5.0 -(byte*) print_char_cursor#137 print_char_cursor zp ZP_WORD:15 3.0 -(byte*) print_char_cursor#139 print_char_cursor zp ZP_WORD:15 2.0 -(byte*) print_char_cursor#142 print_char_cursor zp ZP_WORD:15 22.0 -(byte*) print_char_cursor#146 print_char_cursor zp ZP_WORD:15 24.0 -(byte*) print_char_cursor#151 print_char_cursor zp ZP_WORD:15 48.0 -(byte*~) print_char_cursor#180 print_char_cursor zp ZP_WORD:15 4.0 -(byte*~) print_char_cursor#187 print_char_cursor zp ZP_WORD:15 4.0 -(byte*) print_char_cursor#21 print_char_cursor zp ZP_WORD:15 0.6956521739130432 -(byte*~) print_char_cursor#220 print_char_cursor zp ZP_WORD:15 4.0 -(byte*) print_char_cursor#86 print_char_cursor zp ZP_WORD:15 7.0 +(byte*) print_char_cursor#132 print_char_cursor zp ZP_WORD:15 3.1874999999999996 +(byte*) print_char_cursor#133 print_char_cursor zp ZP_WORD:15 5.75 +(byte*) print_char_cursor#137 print_char_cursor zp ZP_WORD:15 6.0 +(byte*) print_char_cursor#138 print_char_cursor zp ZP_WORD:15 5.0 +(byte*) print_char_cursor#142 print_char_cursor zp ZP_WORD:15 2.0 +(byte*) print_char_cursor#145 print_char_cursor zp ZP_WORD:15 22.0 +(byte*) print_char_cursor#149 print_char_cursor zp ZP_WORD:15 24.0 +(byte*) print_char_cursor#154 print_char_cursor zp ZP_WORD:15 48.0 +(byte*~) print_char_cursor#183 print_char_cursor zp ZP_WORD:15 4.0 +(byte*~) print_char_cursor#190 print_char_cursor zp ZP_WORD:15 4.0 +(byte*) print_char_cursor#22 print_char_cursor zp ZP_WORD:15 0.653061224489796 +(byte*~) print_char_cursor#222 print_char_cursor zp ZP_WORD:15 4.0 +(byte*) print_char_cursor#88 print_char_cursor zp ZP_WORD:15 8.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return @@ -382,14 +381,15 @@ (label) print_sdword::@1 (label) print_sdword::@2 (label) print_sdword::@3 +(label) print_sdword::@4 (label) print_sdword::@return (signed dword) print_sdword::dw (signed dword) print_sdword::dw#0 dw zp ZP_DWORD:11 4.0 (signed dword) print_sdword::dw#1 dw zp ZP_DWORD:11 4.0 (signed dword) print_sdword::dw#2 dw zp ZP_DWORD:11 4.0 (signed dword) print_sdword::dw#3 dw zp ZP_DWORD:11 4.0 -(signed dword) print_sdword::dw#4 dw zp ZP_DWORD:11 3.0 -(signed dword) print_sdword::dw#5 dw zp ZP_DWORD:11 4.0 +(signed dword) print_sdword::dw#4 dw zp ZP_DWORD:11 1.9999999999999998 +(signed dword) print_sdword::dw#6 dw zp ZP_DWORD:11 4.0 (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 @@ -433,10 +433,10 @@ reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ] reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] zp ZP_WORD:7 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] zp ZP_WORD:9 [ print_str::str#15 print_str::str#17 print_str::str#0 ] -zp ZP_DWORD:11 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 muls16s::m#5 muls16s::return#0 muls16s::m#2 muls16s::m#3 muls16s::m#1 muls16s::return#2 muls16u::return#0 muls16u::m#3 muls16u::m#1 muls16u::return#2 ] +zp ZP_DWORD:11 [ print_sdword::dw#6 print_sdword::dw#0 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 muls16s::m#5 muls16s::return#0 muls16s::m#2 muls16s::m#3 muls16s::m#1 muls16s::return#2 muls16u::return#0 muls16u::m#3 muls16u::m#1 muls16u::return#2 ] +reg byte a [ print_char::ch#6 print_char::ch#4 print_char::ch#5 ] +zp ZP_WORD:15 [ print_char_cursor#137 print_char_cursor#138 print_char_cursor#88 print_char_cursor#142 print_char_cursor#154 print_char_cursor#133 print_char_cursor#149 print_char_cursor#222 print_char_cursor#132 print_char_cursor#22 print_char_cursor#183 print_char_cursor#145 print_char_cursor#190 print_char_cursor#1 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -zp ZP_WORD:15 [ print_char_cursor#86 print_char_cursor#139 print_char_cursor#135 print_char_cursor#136 print_char_cursor#137 print_char_cursor#151 print_char_cursor#131 print_char_cursor#146 print_char_cursor#220 print_char_cursor#130 print_char_cursor#21 print_char_cursor#180 print_char_cursor#142 print_char_cursor#187 print_char_cursor#1 ] zp ZP_DWORD:17 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 mul16s_error::mf#0 mul16u_compare::mf#0 mul16u_error::mf#0 ] zp ZP_WORD:21 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#0 mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 muls16u::a#0 ] zp ZP_WORD:23 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#0 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#1 muls16u::b#0 mul16u_error::b#0 ] diff --git a/src/test/ref/word-array-2.asm b/src/test/ref/word-array-2.asm index deb208085..3a992de4b 100644 --- a/src/test/ref/word-array-2.asm +++ b/src/test/ref/word-array-2.asm @@ -21,15 +21,10 @@ main: { sta _2 lda #0 sta _2+1 - ldy #8 - cpy #0 - beq !e+ - !: - asl _3 - rol _3+1 - dey - bne !- - !e: + lda _3 + sta _3+1 + lda #0 + sta _3 txa clc adc _4 diff --git a/src/test/ref/word-array-2.log b/src/test/ref/word-array-2.log index 1f4bb09bf..91f737aa8 100644 --- a/src/test/ref/word-array-2.log +++ b/src/test/ref/word-array-2.log @@ -280,20 +280,11 @@ main: { sta _2 lda #0 sta _2+1 - // [8] (word~) main::$3 ← (word~) main::$2 << (byte) 8 -- vwuz1=vwuz2_rol_vbuc1 - ldy #8 + // [8] (word~) main::$3 ← (word~) main::$2 << (byte) 8 -- vwuz1=vwuz2_rol_8 lda _2 - sta _3 - lda _2+1 sta _3+1 - cpy #0 - beq !e+ - !: - asl _3 - rol _3+1 - dey - bne !- - !e: + lda #0 + sta _3 // [9] (word~) main::$4 ← (word~) main::$3 + (byte) main::i#2 -- vwuz1=vwuz2_plus_vbuz3 lda i clc @@ -351,16 +342,16 @@ REGISTER UPLIFT POTENTIAL REGISTERS Statement [6] (word~) main::$1 ← (word)(byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Statement [7] (word~) main::$2 ← (word)(byte) main::i#2 [ main::i#2 main::$1 main::$2 ] ( main:2 [ main::i#2 main::$1 main::$2 ] ) always clobbers reg byte a -Statement [8] (word~) main::$3 ← (word~) main::$2 << (byte) 8 [ main::i#2 main::$1 main::$3 ] ( main:2 [ main::i#2 main::$1 main::$3 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Statement [8] (word~) main::$3 ← (word~) main::$2 << (byte) 8 [ main::i#2 main::$1 main::$3 ] ( main:2 [ main::i#2 main::$1 main::$3 ] ) always clobbers reg byte a Statement [9] (word~) main::$4 ← (word~) main::$3 + (byte) main::i#2 [ main::i#2 main::$1 main::$4 ] ( main:2 [ main::i#2 main::$1 main::$4 ] ) always clobbers reg byte a Statement [10] (word~) main::$6 ← (word~) main::$1 << (byte) 1 [ main::i#2 main::$4 main::$6 ] ( main:2 [ main::i#2 main::$4 main::$6 ] ) always clobbers reg byte a Statement [11] (word*~) main::$9 ← (const word[$100]) words#0 + (word~) main::$6 [ main::i#2 main::$4 main::$9 ] ( main:2 [ main::i#2 main::$4 main::$9 ] ) always clobbers reg byte a Statement [12] *((word*~) main::$9) ← (word~) main::$4 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Statement [15] *((const word*) main::SCREEN#0) ← *((const word[$100]) words#0+(word) $ff*(const byte) SIZEOF_WORD) [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [6] (word~) main::$1 ← (word)(byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) always clobbers reg byte a Statement [7] (word~) main::$2 ← (word)(byte) main::i#2 [ main::i#2 main::$1 main::$2 ] ( main:2 [ main::i#2 main::$1 main::$2 ] ) always clobbers reg byte a -Statement [8] (word~) main::$3 ← (word~) main::$2 << (byte) 8 [ main::i#2 main::$1 main::$3 ] ( main:2 [ main::i#2 main::$1 main::$3 ] ) always clobbers reg byte a reg byte y +Statement [8] (word~) main::$3 ← (word~) main::$2 << (byte) 8 [ main::i#2 main::$1 main::$3 ] ( main:2 [ main::i#2 main::$1 main::$3 ] ) always clobbers reg byte a Statement [9] (word~) main::$4 ← (word~) main::$3 + (byte) main::i#2 [ main::i#2 main::$1 main::$4 ] ( main:2 [ main::i#2 main::$1 main::$4 ] ) always clobbers reg byte a Statement [10] (word~) main::$6 ← (word~) main::$1 << (byte) 1 [ main::i#2 main::$4 main::$6 ] ( main:2 [ main::i#2 main::$4 main::$6 ] ) always clobbers reg byte a Statement [11] (word*~) main::$9 ← (const word[$100]) words#0 + (word~) main::$6 [ main::i#2 main::$4 main::$9 ] ( main:2 [ main::i#2 main::$4 main::$9 ] ) always clobbers reg byte a @@ -378,8 +369,8 @@ REGISTER UPLIFT SCOPES Uplift Scope [main] 22: zp ZP_WORD:5 [ main::$2 ] 22: zp ZP_WORD:7 [ main::$3 ] 22: zp ZP_WORD:11 [ main::$6 ] 22: zp ZP_WORD:13 [ main::$9 ] 20.62: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 7.33: zp ZP_WORD:9 [ main::$4 ] 5.5: zp ZP_WORD:3 [ main::$1 ] Uplift Scope [] -Uplifting [main] best 1482 combination zp ZP_WORD:5 [ main::$2 ] zp ZP_WORD:7 [ main::$3 ] zp ZP_WORD:11 [ main::$6 ] zp ZP_WORD:13 [ main::$9 ] reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:9 [ main::$4 ] zp ZP_WORD:3 [ main::$1 ] -Uplifting [] best 1482 combination +Uplifting [main] best 1262 combination zp ZP_WORD:5 [ main::$2 ] zp ZP_WORD:7 [ main::$3 ] zp ZP_WORD:11 [ main::$6 ] zp ZP_WORD:13 [ main::$9 ] reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:9 [ main::$4 ] zp ZP_WORD:3 [ main::$1 ] +Uplifting [] best 1262 combination Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ main::$1 ] ] with [ zp ZP_WORD:11 [ main::$6 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ main::$2 ] ] with [ zp ZP_WORD:7 [ main::$3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ main::$1 main::$6 ] ] with [ zp ZP_WORD:13 [ main::$9 ] ] - score: 1 @@ -442,16 +433,11 @@ main: { sta _2 lda #0 sta _2+1 - // [8] (word~) main::$3 ← (word~) main::$2 << (byte) 8 -- vwuz1=vwuz1_rol_vbuc1 - ldy #8 - cpy #0 - beq !e+ - !: - asl _3 - rol _3+1 - dey - bne !- - !e: + // [8] (word~) main::$3 ← (word~) main::$2 << (byte) 8 -- vwuz1=vwuz1_rol_8 + lda _3 + sta _3+1 + lda #0 + sta _3 // [9] (word~) main::$4 ← (word~) main::$3 + (byte) main::i#2 -- vwuz1=vwuz1_plus_vbuxx txa clc @@ -556,7 +542,7 @@ zp ZP_WORD:4 [ main::$2 main::$3 main::$4 ] FINAL ASSEMBLER -Score: 1192 +Score: 1092 // File Comments // Tests a word-array with 128+ elements @@ -601,16 +587,11 @@ main: { lda #0 sta _2+1 // ((word)i)*0x100 - // [8] (word~) main::$3 ← (word~) main::$2 << (byte) 8 -- vwuz1=vwuz1_rol_vbuc1 - ldy #8 - cpy #0 - beq !e+ - !: - asl _3 - rol _3+1 - dey - bne !- - !e: + // [8] (word~) main::$3 ← (word~) main::$2 << (byte) 8 -- vwuz1=vwuz1_rol_8 + lda _3 + sta _3+1 + lda #0 + sta _3 // ((word)i)*0x100+i // [9] (word~) main::$4 ← (word~) main::$3 + (byte) main::i#2 -- vwuz1=vwuz1_plus_vbuxx txa